/** * Copyright (c)2000-2002 Sony Online Entertainment Inc. * All Rights Reserved * * Title: ballot_box.script * Description: script for ballot box terminals * @author $Author: Matthew Kwid$ * @version $Revision:$ */ //------------------------------------------------ // Includes //------------------------------------------------ include library.sui; include library.utils; include library.player_structure; include library.xp; //------------------------------------------------ // Constants //------------------------------------------------ const int BALLOT_TEXT_MAX_LENGTH = 120; const int BALLOT_TITLE_MAX_LENGTH = 32; const int BALLOT_ITEM_MAX_LENGTH = 64; const int BALLOT_ITEM_MAX_COUNT = 16; const string_id SID_CONFIGURE_BALLOT = new string_id("sui", "ballot_box_config"); const string_id SID_ADD_OPTION = new string_id("sui", "ballot_box_add_option"); const string_id SID_VIEW_RESULTS = new string_id("sui", "ballot_box_view_results"); const string_id SID_VOTE = new string_id("sui", "ballot_box_vote"); const string_id SID_VOTE_LOGGED_MSG = new string_id("sui", "ballot_box_vote_logged"); const string_id SID_EDIT_BALLOT_TITLE = new string_id("sui", "ballot_box_edit_title"); const string_id SID_EDIT_BALLOT_TEXT = new string_id("sui", "ballot_box_edit_text"); const string_id SID_START_VOTE = new string_id("sui", "ballot_box_start_vote"); const string_id SID_STOP_VOTE = new string_id("sui", "ballot_box_stop_vote"); const string_id SID_MUST_STOP_VOTE_MSG = new string_id("sui", "ballot_box_must_stop"); const string_id SID_START_VOTE_MSG = new string_id("sui", "ballot_box_start_msg"); const string_id SID_STOP_VOTE_MSG = new string_id("sui", "ballot_box_stop_msg"); const string_id SID_VIEW_BALLOT = new string_id("sui", "ballot_box_view_ballot"); const string_id SID_CLEAR_LOG = new string_id("sui", "ballot_box_clear_log"); const string_id SID_TEXT_TOO_LARGE = new string_id("sui", "ballot_text_too_large"); const string_id SID_TITLE_TOO_LARGE = new string_id("sui", "ballot_title_too_large"); const string_id SID_ITEM_TOO_LARGE = new string_id("sui", "ballot_item_too_large"); const string_id SID_ITEMS_TOO_MANY = new string_id("sui", "ballot_items_too_many"); const string_id SID_SECRET = new string_id("sui", "ballot_box_secret"); const string_id SID_PUBLIC = new string_id("sui", "ballot_box_public"); const string_id SID_EDIT_BALLOT = new string_id("sui", "ballot_box_edit"); const string_id SID_REMOVE_OPTION = new string_id("sui", "ballot_box_remove_option"); const string_id SID_SECRET_CONFIRM = new string_id("sui", "ballot_box_secret_confirm"); const string_id SID_PUBLIC_CONFIRM = new string_id("sui", "ballot_box_public_confirm"); const string_id SID_SAMPLE_ONE = new string_id("sui", "ballot_box_sample_one"); const string_id SID_SAMPLE_TWO = new string_id("sui", "ballot_box_sample_two"); const string_id SID_CLEAR_MSG = new string_id("sui", "ballot_box_clear_msg"); const string_id SID_CONFIG_BALLOT_TEXT = new string_id("sui", "ballot_box_config_text"); const string_id SID_CONFIG_BALLOT_TITLE = new string_id("sui", "ballot_box_config_title"); const string_id SID_CONFIG_ADD_ITEM = new string_id("sui", "ballot_box_config_add_item"); const string_id SID_RESULTS_TITLE = new string_id("sui", "ballot_box_results_title"); const string_id SID_DEFAULT_BALLOT_TITLE = new string_id("sui", "ballot_box_sample_title"); const string_id SID_DEFAULT_BALLOT_TEXT = new string_id("sui", "ballot_box_sample_text"); const string_id SID_REMOVE_ITEM_TEXT = new string_id("sui", "ballot_box_remove_option_text"); const string_id SID_DEFAULT_BALLOT_RESULTS = new string_id("sui", "ballot_box_default_results"); const string_id SID_OPEN_STATE_TEXT = new string_id("sui", "ballot_box_open_text"); const string_id SID_CLOSED_STATE_TEXT = new string_id("sui", "ballot_box_closed_text"); const string[] DEFAULT_BALLOT_OPTIONS = {"Sample Option One", "Sample Option Two"}; const obj_id[] DEFAULT_PARTICIPANTS = new obj_id[0]; const int[] DEFAULT_VOTE_TALLY = new int[0]; const string_id SID_CHAT_BAND_TEXT = new string_id("sui", "ballot_box_band"); const string_id SID_CHAT_TITLE = new string_id("sui", "ballot_box_chat_title"); const string[] EDIT_OPTIONS = {"@sui:ballot_box_edit_title","@sui:ballot_box_edit_text","@sui:ballot_box_add_option", "@sui:ballot_box_remove_option","@sui:ballot_box_start_vote","@sui:ballot_box_secret"}; const string VAR_BALLOT_TEXT = "var_ballot_text"; const string VAR_BALLOT_TITLE = "var_ballot_title"; const string VAR_BALLOT_STATE_TEXT = "var_ballot_state"; const string VAR_BALLOT_RESULTS = "var_ballot_results"; const string VAR_BALLOT_OPTIONS = "var_ballot_options"; const string VAR_EDIT_OPTIONS = "var_edit_options"; const string VAR_PARTICIPANTS = "var_ballot_participants"; const string VAR_VOTE_TALLY = "var_vote_tally"; const string VAR_TOTAL_VOTES = "var_total_votes"; const string VAR_LOG_COUNT = "var_ballot_log_count"; const string VAR_BALLOT_BOX_OWNER = "var_ballot_box_owner"; const string VAR_IS_SECRET_MSG = "var_secret_msg"; //------------------------------------------------ // OnInitialize //------------------------------------------------ trigger OnInitialize() { setObjVar( self, "ballot_box_id", getCurrentSceneName() ); setObjVar( self, VAR_BALLOT_TEXT, getString(SID_DEFAULT_BALLOT_TEXT) ); setObjVar( self, VAR_BALLOT_TITLE, getString(SID_DEFAULT_BALLOT_TITLE) ); setObjVar( self, VAR_BALLOT_STATE_TEXT, getString(SID_CLOSED_STATE_TEXT) ); setObjVar( self, VAR_BALLOT_RESULTS, getString(SID_DEFAULT_BALLOT_RESULTS) ); // setObjVar( self, VAR_PARTICIPANTS, DEFAULT_PARTICIPANTS ); // setObjVar( self, VAR_VOTE_TALLY, DEFAULT_VOTE_TALLY ); setObjVar( self, VAR_TOTAL_VOTES, 0 ); setObjVar( self, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS ); setObjVar( self, VAR_EDIT_OPTIONS, EDIT_OPTIONS ); setObjVar( self, VAR_IS_SECRET_MSG, false ); return SCRIPT_CONTINUE; } //------------------------------------------------ // OnObjectMenuRequest //------------------------------------------------ trigger OnObjectMenuRequest( obj_id player, menu_info mi ) { string stateStr = getStringObjVar( self, VAR_BALLOT_STATE_TEXT ); obj_id structure = getTopMostContainer( self ); if ( structure != null && player_structure.isAdmin( structure, player ) ) { int menu = mi.addRootMenu( menu_info_types.CREATE_BALLOT, SID_CONFIGURE_BALLOT ); if ( stateStr.equals(getString(SID_OPEN_STATE_TEXT)) ) mi.addSubMenu( menu, menu_info_types.DICE_COUNT_FOUR, SID_STOP_VOTE ); else { setObjVar( self, VAR_BALLOT_BOX_OWNER, player ); mi.addSubMenu( menu, menu_info_types.DICE_EIGHT_FACE, SID_CLEAR_LOG ); mi.addSubMenu( menu, menu_info_types.DICE_FIVE_FACE, SID_EDIT_BALLOT ); mi.addSubMenu( menu, menu_info_types.DICE_FOUR_FACE, SID_VIEW_BALLOT ); mi.addSubMenu( menu, menu_info_types.DICE_COUNT_THREE, SID_START_VOTE ); } } obj_id[] participants = getObjIdArrayObjVar( self, VAR_PARTICIPANTS ); if ( !utils.isObjIdInArray(participants, player) && stateStr.equals(getString(SID_OPEN_STATE_TEXT)) ) { mi.addRootMenu( menu_info_types.VOTE, SID_VOTE ); mi.addRootMenu( menu_info_types.DICE_THREE_FACE, SID_VIEW_BALLOT ); } else if( stateStr.equals(getString(SID_OPEN_STATE_TEXT)) ) mi.addRootMenu( menu_info_types.DICE_THREE_FACE, SID_VIEW_BALLOT ); else mi.addRootMenu( menu_info_types.DICE_TWO_FACE, SID_VIEW_RESULTS ); return SCRIPT_CONTINUE; } //------------------------------------------------ // OnObjectMenuSelect //------------------------------------------------ trigger OnObjectMenuSelect( obj_id player, int item ) { if ( item == menu_info_types.DICE_THREE_FACE ) viewBallot( player, self ); else if( item == menu_info_types.DICE_COUNT_FOUR ) stopVote( player, self ); else if( item == menu_info_types.DICE_FOUR_FACE ) ownerViewBallot( player, self ); else if ( item == menu_info_types.DICE_FIVE_FACE ) editBallot( player, self ); else if( item == menu_info_types.DICE_EIGHT_FACE ) removeLogResults( player, self, true ); else if( item == menu_info_types.DICE_COUNT_THREE ) startVote( player, self ); else if( item == menu_info_types.VOTE ) vote( player, self ); else if( item == menu_info_types.ITEM_USE || item == menu_info_types.DICE_TWO_FACE ) viewResults( player, self ); return SCRIPT_CONTINUE; } //------------------------------------------------ // editBallot //------------------------------------------------ void editBallot( obj_id player, obj_id terminal ) { if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) ) { sendSystemMessage( player, SID_MUST_STOP_VOTE_MSG ); return; } string ballot_text = getBallotViewData( terminal ); string[] options = getStringArrayObjVar( terminal, VAR_EDIT_OPTIONS ); sui.listbox( terminal, player, ballot_text, sui.OK_CANCEL, getString(SID_EDIT_BALLOT), options, "configureBallot", true, true ); } //------------------------------------------------ // makeResultsSecret //------------------------------------------------ void makeResultsSecret( obj_id owner, obj_id terminal ) { setObjVar( terminal, VAR_IS_SECRET_MSG, true ); sendSystemMessage( owner, SID_SECRET_CONFIRM ); string[] options = getStringArrayObjVar( terminal, VAR_EDIT_OPTIONS ); if(options != null && options.length > 0) { options[5] = getString( SID_PUBLIC ); setObjVar( terminal, VAR_EDIT_OPTIONS, options ); } editBallot( owner, terminal ); } //------------------------------------------------ // makeResultsPublic //------------------------------------------------ void makeResultsPublic( obj_id owner, obj_id terminal ) { setObjVar( terminal, VAR_IS_SECRET_MSG, false ); sendSystemMessage( owner, SID_PUBLIC_CONFIRM ); string[] options = getStringArrayObjVar( terminal, VAR_EDIT_OPTIONS ); if(options != null && options.length > 0) { options[5] = getString( SID_SECRET ); setObjVar( terminal, VAR_EDIT_OPTIONS, options ); } editBallot( owner, terminal ); } //------------------------------------------------ // removeSelectionItem //------------------------------------------------ void removeSelectionItem( obj_id owner, obj_id terminal ) { string title = getStringObjVar( terminal, VAR_BALLOT_TITLE ); string text = getString( SID_REMOVE_ITEM_TEXT ); string[] options = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); sui.listbox( terminal, owner, text, sui.OK_CANCEL, title, options, "removeItem" ); } //------------------------------------------------ // addSelectionItem //------------------------------------------------ void addSelectionItem( obj_id owner, obj_id terminal ) { if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) ) { sendSystemMessage( owner, SID_MUST_STOP_VOTE_MSG ); return; } string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); if ( items == null ) { string[] options = new string[0]; setObjVar( terminal, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS ); } string ballot_text = getString( SID_CONFIG_ADD_ITEM ); int pid = sui.inputbox( terminal, owner, ballot_text, sui.OK_CANCEL, getString(SID_ADD_OPTION), sui.INPUT_NORMAL, null, "addItem" ); } //------------------------------------------------ // ownerViewBallot //------------------------------------------------ void ownerViewBallot( obj_id owner, obj_id terminal ) { string title = getStringObjVar( terminal, VAR_BALLOT_TITLE ); string text = getStringObjVar( terminal, VAR_BALLOT_TEXT ); string[] options = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); sui.listbox( terminal, owner, text, sui.OK_ONLY, title, options, "no_handler" ); return; } //------------------------------------------------ // viewBallot //------------------------------------------------ void viewBallot( obj_id owner, obj_id terminal ) { string ballotData = getBallotViewData( terminal ); sui.msgbox( terminal, owner, ballotData, sui.OK_ONLY, getString(SID_VIEW_BALLOT), "noHandlerNeeded" ); return; } //------------------------------------------------ // getBallotViewData //------------------------------------------------ string getBallotViewData( obj_id terminal ) { string title = getStringObjVar( terminal, VAR_BALLOT_TITLE ); string issue = getStringObjVar( terminal, VAR_BALLOT_TEXT ); string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); string resultSet = new string(); resultSet += "Title: " + getStringObjVar(terminal, VAR_BALLOT_TITLE) + "\n"; resultSet += "Issue: " + issue + "\n\n"; resultSet += "Options: " + "\n"; if ( items != null ) { for ( int i=0; i < items.length; ++i ) { int count = i + 1; resultSet += count + ". " + items[i] + "\n"; } } return resultSet; } //------------------------------------------------ // editBallotTitle //------------------------------------------------ void editBallotTitle( obj_id owner, obj_id terminal ) { if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) ) { sendSystemMessage( owner, SID_MUST_STOP_VOTE_MSG ); return; } string ballot_text = getString( SID_CONFIG_BALLOT_TITLE ); int pid = sui.inputbox( terminal, owner, ballot_text, sui.OK_CANCEL, getString(SID_EDIT_BALLOT_TITLE), sui.INPUT_NORMAL, null, "editTitle" ); } //------------------------------------------------ // editBallotText //------------------------------------------------ void editBallotText( obj_id owner, obj_id terminal ) { if ( getStringObjVar(terminal, VAR_BALLOT_STATE_TEXT).equals(getString(SID_OPEN_STATE_TEXT)) ) { sendSystemMessage( owner, SID_MUST_STOP_VOTE_MSG ); return; } string ballot_text = getString( SID_CONFIG_BALLOT_TEXT ); int pid = sui.inputbox( terminal, owner, ballot_text, sui.OK_CANCEL, getString(SID_EDIT_BALLOT_TEXT), sui.INPUT_NORMAL, null, "editText" ); } //------------------------------------------------ // startVote //------------------------------------------------ void startVote( obj_id player, obj_id terminal ) { setObjVar( terminal, VAR_BALLOT_STATE_TEXT, getString(SID_OPEN_STATE_TEXT) ); setObjVar( terminal, VAR_TOTAL_VOTES, 0 ); sendSystemMessage( player, SID_START_VOTE_MSG ); string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); int[] voteCounts = new int[items.length]; for ( int i=0; i < items.length; ++i ) voteCounts[i] = 0; if(voteCounts.length > 0) { setObjVar( terminal, VAR_VOTE_TALLY, voteCounts ); } } //------------------------------------------------ // stopVote //------------------------------------------------ void stopVote( obj_id player, obj_id terminal ) { setObjVar( terminal, VAR_BALLOT_STATE_TEXT, getString(SID_CLOSED_STATE_TEXT) ); sendSystemMessage( player, SID_STOP_VOTE_MSG ); logResults( player, terminal ); } //------------------------------------------------ // logResults //------------------------------------------------ void logResults( obj_id player, obj_id terminal ) { removeLogResults( player, terminal, false ); string issue = getStringObjVar( terminal, VAR_BALLOT_TEXT ); string[] items = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); int[] votes = getIntArrayObjVar( terminal, VAR_VOTE_TALLY ); string resultSet = getStringObjVar( terminal, VAR_BALLOT_RESULTS ); if ( resultSet.equals(getString(SID_DEFAULT_BALLOT_RESULTS)) ) resultSet = new string(); resultSet += "Title: " + getStringObjVar(terminal, VAR_BALLOT_TITLE) + "\n"; resultSet += "Issue: " + issue + "\n\n"; resultSet += "Options: " + "\n"; int totalVotes = getIntObjVar( terminal, VAR_TOTAL_VOTES ); float percentValue = 0.0f; for ( int i=0; i < items.length; ++i ) { if ( totalVotes != 0 ) { if ( votes[i] == totalVotes ) percentValue = 100; else percentValue = (float)100 * ((float)votes[i] / (float)totalVotes); } int count = i + 1; if ( votes[i] == 1 ) resultSet += count + ". " + items[i] + "\n" + votes[i] + " vote = " + percentValue + "%\n\n"; else resultSet += count + ". " + items[i] + "\n" + votes[i] + " votes = " + percentValue + "%\n\n"; } resultSet += "\n\n"; setObjVar( terminal, VAR_BALLOT_RESULTS, resultSet ); dictionary params = new dictionary(); params.put( "owner", player ); messageTo( terminal, "sendPersistantResultsMessage", params, 0, true ); setObjVar( terminal, VAR_BALLOT_TEXT, getString(SID_DEFAULT_BALLOT_TEXT) ); setObjVar( terminal, VAR_BALLOT_TITLE, getString(SID_DEFAULT_BALLOT_TITLE) ); setObjVar( terminal, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS ); setObjVar( terminal, VAR_PARTICIPANTS, DEFAULT_PARTICIPANTS ); setObjVar( terminal, VAR_IS_SECRET_MSG, false ); } //------------------------------------------------ // removeLogResults //------------------------------------------------ void removeLogResults( obj_id owner, obj_id terminal, boolean displayMessage ) { setObjVar( terminal, VAR_BALLOT_RESULTS, getString(SID_DEFAULT_BALLOT_RESULTS) ); if ( displayMessage ) sendSystemMessage( owner, SID_CLEAR_MSG ); } //------------------------------------------------ // vote //------------------------------------------------ void vote( obj_id player, obj_id terminal ) { xp.grantCraftingXpChance( terminal, player, 40 ); string title = getStringObjVar( terminal, VAR_BALLOT_TITLE ); string text = getStringObjVar( terminal, VAR_BALLOT_TEXT ); string[] options = getStringArrayObjVar( terminal, VAR_BALLOT_OPTIONS ); sui.listbox( terminal, player, text, sui.OK_CANCEL, title, options, "voteTracker" ); } //------------------------------------------------ // viewResults //------------------------------------------------ void viewResults( obj_id player, obj_id terminal ) { string resultData = new string( "error with data" ); if ( !getBooleanObjVar(terminal, VAR_IS_SECRET_MSG) ) resultData = getStringObjVar( terminal, VAR_BALLOT_RESULTS ); else resultData = getString( SID_DEFAULT_BALLOT_RESULTS ); sui.msgbox( terminal, player, resultData, sui.OK_ONLY, getString(SID_RESULTS_TITLE), "noHandlerNeeded" ); } //------------------------------------------------ // configureBallot //------------------------------------------------ messageHandler configureBallot() { if ( params == null ) return SCRIPT_CONTINUE; string button = sui.getButtonPressed( params ); if ( !button.equals(sui.OK) ) return SCRIPT_CONTINUE; obj_id player = sui.getPlayerId( params ); int item = sui.getListboxSelectedRow( params ); string buttonPressed = sui.getButtonPressed( params ); string[] selectionOptions = getStringArrayObjVar( self, VAR_EDIT_OPTIONS ); int optionCount = selectionOptions.length; if ( item == 0 ) editBallotTitle( player, self ); else if( item == 1 ) editBallotText( player, self ); else if( item == 2 ) addSelectionItem( player, self ); else if( item == 3 ) removeSelectionItem( player, self ); else if( item == 4 ) startVote( player, self ); else if( item == 5 ) makeResultsSecret( player, self ); else if( item == 6 ) makeResultsPublic( player, self ); return SCRIPT_CONTINUE; } //------------------------------------------------ // editText //------------------------------------------------ messageHandler editText() { if ( params == null ) return SCRIPT_CONTINUE; string ballotText = sui.getInputBoxText( params ); string buttonPressed = sui.getButtonPressed( params ); if ( ballotText.length() > BALLOT_TEXT_MAX_LENGTH ) { obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER ); sendSystemMessage( owner, SID_TEXT_TOO_LARGE ); return SCRIPT_CONTINUE; } if ( ballotText != null && ballotText.length() != 0 && buttonPressed.equals(sui.OK) ) setObjVar( self, VAR_BALLOT_TEXT, ballotText ); obj_id player = sui.getPlayerId( params ); editBallot( player, self ); return SCRIPT_CONTINUE; } //------------------------------------------------ // editTitle //------------------------------------------------ messageHandler editTitle() { if ( params == null ) return SCRIPT_CONTINUE; string ballotTitle = sui.getInputBoxText( params ); string buttonPressed = sui.getButtonPressed( params ); if( ballotTitle.length() > BALLOT_TITLE_MAX_LENGTH ) { obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER ); sendSystemMessage( owner, SID_TITLE_TOO_LARGE ); return SCRIPT_CONTINUE; } if ( ballotTitle != null && ballotTitle.length() != 0 && buttonPressed.equals(sui.OK) ) setObjVar( self, VAR_BALLOT_TITLE, ballotTitle ); obj_id player = sui.getPlayerId( params ); editBallot( player, self ); return SCRIPT_CONTINUE; } //------------------------------------------------ // voteTracker //------------------------------------------------ messageHandler voteTracker() { if ( params == null ) return SCRIPT_CONTINUE; int listItem = sui.getListboxSelectedRow( params ); if ( listItem == -1 ) return SCRIPT_CONTINUE; string button = sui.getButtonPressed( params ); if ( !button.equals(sui.OK) ) return SCRIPT_CONTINUE; int[] voteCounts = getIntArrayObjVar( self, VAR_VOTE_TALLY ); int value = voteCounts[listItem]; voteCounts[listItem] = ++value; if(voteCounts.length > 0) { setObjVar( self, VAR_VOTE_TALLY, voteCounts ); } resizeable obj_id[] participants = getResizeableObjIdArrayObjVar( self, VAR_PARTICIPANTS ); participants = utils.addElement( participants, sui.getPlayerId(params) ); if(participants.length > 0) { setObjVar( self, VAR_PARTICIPANTS, participants ); } int voteCount = getIntObjVar( self, VAR_TOTAL_VOTES ); setObjVar( self, VAR_TOTAL_VOTES, ++voteCount ); obj_id player = sui.getPlayerId( params ); sendSystemMessage( player, SID_VOTE_LOGGED_MSG ); return SCRIPT_CONTINUE; } //------------------------------------------------ // addItem //------------------------------------------------ messageHandler addItem() { if ( params == null ) return SCRIPT_CONTINUE; string itemToAdd = sui.getInputBoxText( params ); string buttonPressed = sui.getButtonPressed( params ); if ( itemToAdd.length() > BALLOT_ITEM_MAX_LENGTH ) { obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER ); sendSystemMessage( owner, SID_ITEM_TOO_LARGE ); return SCRIPT_CONTINUE; } if ( itemToAdd != null && itemToAdd.length() != 0 && buttonPressed.equals(sui.OK) ) { resizeable string[] options = getResizeableStringArrayObjVar( self, VAR_BALLOT_OPTIONS ); if(options[0].equals(getString(SID_SAMPLE_ONE))) { options.clear(); } if ( options.length > BALLOT_ITEM_MAX_COUNT ) { obj_id owner = getObjIdObjVar( self, VAR_BALLOT_BOX_OWNER ); sendSystemMessage( owner, SID_ITEMS_TOO_MANY ); obj_id player = sui.getPlayerId( params ); editBallot( player, self ); return SCRIPT_CONTINUE; } options = utils.addElement( options, itemToAdd ); if(options.length > 0) { setObjVar( self, VAR_BALLOT_OPTIONS, options ); } else { setObjVar(self, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS); } } obj_id player = sui.getPlayerId( params ); editBallot( player, self ); return SCRIPT_CONTINUE; } //------------------------------------------------ // sendPersistantResultsMessage //------------------------------------------------ messageHandler sendPersistantResultsMessage() { string resultSet = getStringObjVar( self, VAR_BALLOT_RESULTS ); if ( !getBooleanObjVar(self, VAR_IS_SECRET_MSG) ) { obj_id[] participants = getObjIdArrayObjVar( self, VAR_PARTICIPANTS ); for ( int i=0; i < participants.length; ++i ) chatSendPersistentMessage( participants[i], "@" + SID_CHAT_TITLE.toString (), resultSet, null ); } else { obj_id owner = params.getObjId( "owner" ); chatSendPersistentMessage( owner, "@" + SID_CHAT_TITLE.toString (), resultSet, null ); } return SCRIPT_CONTINUE; } //------------------------------------------------ // removeItem //------------------------------------------------ messageHandler removeItem() { int listItem = sui.getListboxSelectedRow( params ); obj_id player = sui.getPlayerId( params ); if ( listItem == -1 ) { editBallot( player, self ); return SCRIPT_CONTINUE; } resizeable string[] items = getResizeableStringArrayObjVar( self, VAR_BALLOT_OPTIONS ); items = utils.removeElementAt( items, listItem ); if ( items.length == 0 ) setObjVar( self, VAR_BALLOT_OPTIONS, DEFAULT_BALLOT_OPTIONS ); else setObjVar( self, VAR_BALLOT_OPTIONS, items ); editBallot( player, self ); return SCRIPT_CONTINUE; }