Files
dsrc/sku.0/sys.server/compiled/game/script/terminal/ballot_box.script
T

725 lines
24 KiB
Plaintext

/* Title: ballot_box.script
* Description: script for ballot box terminals
*/
//------------------------------------------------
// 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;
}