/** * Copyright (c)2000-2002 Sony Online Entertainment Inc. * All Rights Reserved * * Title: player_guild.script * Description: required script functionality for PAs * @author $Author:$ * @version $Revision:$ */ /***** INCLUDES ********************************************************/ include library.utils; include library.guild; include library.sui; include library.prose; include library.player_structure; include java.util.StringTokenizer; const string_id SID_GUILDREMOVE_NOT_IN_GUILD = new string_id("base_player", "guildremove_not_in_guild"); const string_id SID_GUILDSTATUS_NOT_PLAYER = new string_id("base_player", "guildstatus_not_player"); const string_id SID_GUILDSTATUS_NOT_IN_GUILD = new string_id("base_player", "guildstatus_not_in_guild"); const string_id SID_GUILDSTATUS_PLAYER_NOT_FOUND = new string_id("base_player", "guildstatus_player_not_found"); const string_id SID_GUILDSTATUS_LEADER = new string_id("base_player", "guildstatus_leader"); const string_id SID_GUILDSTATUS_LEADER_TITLE = new string_id("base_player", "guildstatus_leader_title"); const string_id SID_GUILDSTATUS_MEMBER = new string_id("base_player", "guildstatus_member"); const string_id SID_GUILDSTATUS_MEMBER_TITLE = new string_id("base_player", "guildstatus_member_title"); const string_id SID_GUILD_NO_PERMISSION = new string_id("guild", "guild_no_permission_operation"); const string_id SID_GUILD_MEMBER_LOGIN = new string_id("spam", "guild_member_login"); const string_id SID_GUILD_MEMBER_LOGOFF = new string_id("spam", "guild_member_logoff"); const string_id SID_GUILD_NOTIFICATION_ON = new string_id("spam", "guild_notification_on"); const string_id SID_GUILD_NOTIFICATION_OFF = new string_id("spam", "guild_notification_off"); const string_id SID_GUILD_NOTIFY_TOO_SOON = new string_id("spam", "guild_notify_too_soon"); trigger OnLogin() { // This scriptvar keeps the login notification from being spammed every time a player loads into a zone. if(utils.hasScriptVar(self, "guild.loginNotified")) { return SCRIPT_CONTINUE; } utils.setScriptVar(self, "guild.loginNotified", true); dictionary params = new dictionary(); params.put("login", true); messageTo(self, "handleStatusUpdate", params, 1, false); return SCRIPT_CONTINUE; } trigger OnLogout() { utils.removeScriptVar(self, "guild.loginNotified"); dictionary params = new dictionary(); params.put("login", false); messageTo(self, "handleStatusUpdate", params, 1, false); return SCRIPT_CONTINUE; } /***** GUILD CMDS *************************************************/ commandHandler cmdGuildNotify() { int guildId = getGuildId(self); if(guildId <= 0) { return SCRIPT_CONTINUE; } int lastGuildNotify = utils.getIntScriptVar(self, "guild.lastGuildNotify"); // We do not want the player to try to do a macro on this command repeatedly. This could cause data errors with the guild. if(getGameTime() - lastGuildNotify < 10) { sendSystemMessage(self, SID_GUILD_NOTIFY_TOO_SOON); return SCRIPT_CONTINUE; } utils.setScriptVar(self, "guild.lastGuildNotify", getGameTime()); dictionary dict = new dictionary(); dict.put("onlineStatus", guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_ONLINE_STATUS)); dict.put("guildId", guildId); guild.togglePersonalPermission(guildId, self, getName(self), guild.GUILD_PERMISSION_ONLINE_STATUS); messageTo(self, "toggleGuildNotifyMessage", dict, 1, false); return SCRIPT_CONTINUE; } messageHandler toggleGuildNotifyMessage() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; boolean onlineStatus = params.getBoolean("onlineStatus"); int guildId = params.getInt("guildId"); if(onlineStatus == guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_ONLINE_STATUS)) { messageTo(self, "toggleGuildNotifyMessage", params, 1, false); return SCRIPT_CONTINUE; } if(guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_ONLINE_STATUS)) { sendSystemMessage(self, SID_GUILD_NOTIFICATION_ON); } else { sendSystemMessage(self, SID_GUILD_NOTIFICATION_OFF); } return SCRIPT_CONTINUE; } commandHandler cmdGuildremove() { int guildId = getGuildId(self); // If you have the permissions to kick someone out before an election can finish making a new guildmaster, then don't let them kick the person out. if(guild.hasElectionEnded(self)) { guild.stopElection(self); return SCRIPT_CONTINUE; } StringTokenizer st = new java.util.StringTokenizer(params); int tokens = st.countTokens(); string name = ""; if(st.hasMoreTokens()) name = st.nextToken(); if(guildId != 0) { if(name != null && name.length() > 0) { target = guild.findMemberIdByName(guildId, name, false, true); } if(!isIdValid(target)) { sendSystemMessage(self, SID_GUILDSTATUS_PLAYER_NOT_FOUND); return SCRIPT_CONTINUE; } if(target == self) guild.leave(self); else guild.kick(guildId, self, name); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildstatus() { obj_id intendedTarget = getIntendedTarget(self); obj_id lookAtTarget = getLookAtTarget(self); if(isIdValid(lookAtTarget)) { target = lookAtTarget; } else { target = intendedTarget; } if (!isIdValid(target)) return SCRIPT_CONTINUE; else { if (!isPlayer(target)) sendSystemMessage(self, SID_GUILDSTATUS_NOT_PLAYER); else { prose_package pp = new prose_package(); pp.actor.set(getName(target)); int guildId = getGuildId(target); if (guildId == 0) pp.stringId = SID_GUILDSTATUS_NOT_IN_GUILD; else { string title = guildGetMemberTitle(guildId, target); pp.target.set(guildGetName(guildId)); pp.other.set(title); if (guildGetLeader(guildId) == target) { if (title.length() != 0) pp.stringId = SID_GUILDSTATUS_LEADER_TITLE; else pp.stringId = SID_GUILDSTATUS_LEADER; } else { if (title.length() != 0) pp.stringId = SID_GUILDSTATUS_MEMBER_TITLE; else pp.stringId = SID_GUILDSTATUS_MEMBER; } } sendSystemMessageProse(self, pp); } } return SCRIPT_CONTINUE; } commandHandler cmdGuildShow() { int guildId = getGuildId(self); if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } if(guildId != 0) { if(guild.hasElectionEnded(self)) { guild.stopElection(self); } guild.showGuildMembers(self, self, 0, -1, "", ""); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildShowAlpha() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if(guildId != 0) { if(guild.hasElectionEnded(self)) { guild.stopElection(self); } guild.showGuildMembers(self, self, 0, -1, "", ""); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildShowTitle() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if (guildId != 0) { if(guild.hasElectionEnded(self)) { guild.stopElection(self); return SCRIPT_CONTINUE; } guild.showGuildMembers(self, self, 0, -1, "", ""); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildShowPermission() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if (guildId != 0) { if(guild.hasElectionEnded(self)) { guild.stopElection(self); return SCRIPT_CONTINUE; } guild.showPermissionList(self, guildId); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildShowName() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if (guildId != 0) { if(guild.hasElectionEnded(self)) { guild.stopElection(self); return SCRIPT_CONTINUE; } guild.showGuildMembers(self, self, 0, -1, "", ""); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildInfo() { int guildId = getGuildId(self); if (guildId != 0) { if(guild.hasElectionEnded(self)) { guild.stopElection(self); return SCRIPT_CONTINUE; } guild.showGuildInfo(self); } else sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } commandHandler cmdGuildSponsor() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if(guildId == 0) { sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } if(guild.hasElectionEnded(self)) { guild.stopElection(self); } if(guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_SPONSOR)) { int pid = sui.inputbox( self, self, guild.STR_GUILD_SPONSOR_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_SPONSOR_TITLE, sui.INPUT_NORMAL, null, "onGuildSponsorResponse"); guild.setWindowPid(self, pid); } else sendSystemMessage(self, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } commandHandler cmdGuildChangeName() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if(guildId == 0) { sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } if(guild.hasElectionEnded(self)) { guild.stopElection(self); sendSystemMessage(self, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } if(guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_NAMECHANGE)) { int pid = sui.inputbox( self, self, guild.STR_GUILD_NAMECHANGE_NAME_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_NAMECHANGE_NAME_TITLE, sui.INPUT_NORMAL, null, "onGuildNamechangeNameResponse"); guild.setWindowPid(self, pid); } else sendSystemMessage(self, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } commandHandler cmdGuildDisband() { if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } int guildId = getGuildId(self); if(guildId == 0) { sendSystemMessage(self, SID_GUILDREMOVE_NOT_IN_GUILD); return SCRIPT_CONTINUE; } if(guild.hasElectionEnded(self)) { guild.stopElection(self); sendSystemMessage(self, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } if(guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_DISBAND)) { int pid = sui.msgbox( self, self, guild.STR_GUILD_DISBAND_PROMPT, sui.YES_NO, guild.STR_GUILD_DISBAND_TITLE, sui.MSG_NORMAL, "onGuildDisbandResponse"); guild.setWindowPid(self, pid); } else sendSystemMessage(self, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } /*********** Message Handlers *******************************/ messageHandler startGuildSponsorSui() { if(params == null || params.isEmpty()) { return SCRIPT_CONTINUE; } if(guild.hasWindowPid(self)) { int pid = guild.getWindowPid(self); forceCloseSUIPage(pid); guild.removeWindowPid(self); } obj_id sender = params.getObjId("sender"); if (getGuildId(self) != 0) { dictionary dict = new dictionary(); dict.put("proseSID", guild.SID_GUILD_SPONSOR_ALREADY_IN_GUILD); string name = getFirstName(self); dict.put("player", name); messageTo(sender, "onGuildSponsorVerifyResponseProse", dict, 0, false); return SCRIPT_CONTINUE; } obj_id targetPlayerObj = getPlayerObject(self); if (isIdValid(sender) && !isIgnoring(targetPlayerObj, getPlayerName(sender))) { utils.setScriptVar(self, "guildSponsor.sponsor", sender); utils.setScriptVar(self, "guildSponsor.guildId", params.getInt("guildId")); int pid = sui.msgbox( self, self, params.getString("prompt"), sui.YES_NO, params.getString("title"), sui.MSG_NORMAL, "guildSponsorSuiDone"); guild.setWindowPid(self, pid); } return SCRIPT_CONTINUE; } messageHandler guildSponsorSuiDone() { obj_id target = self; obj_id player = utils.getObjIdScriptVar(self, "guildSponsor.sponsor"); if(!guild.hasWindowPid(self)) return SCRIPT_CONTINUE; int guildId = utils.getIntScriptVar(self,"guildSponsor.guildId"); int bp = sui.getIntButtonPressed(params); if(!isIdValid(player)) return SCRIPT_CONTINUE; string name = getFirstName(target); dictionary dict = new dictionary(); dict.put("player", name); dict.put("bpOk", (bp == sui.BP_OK)); if ( bp == sui.BP_OK) { messageTo(player, "onGuildSponsorVerifyResponseProse", dict, 0, false); guild.sponsor(guildId, player, name); } else { messageTo(player, "onGuildSponsorVerifyResponseProse", dict, 0, false); } utils.removeScriptVarTree(self, "guildSponsor"); guild.removeWindowPid(self); return SCRIPT_CONTINUE; } messageHandler onGuildSponsorVerifyResponseProse() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; string target = params.getString("player"); string title = params.getString("title"); if(target == null || target.equals("")) return SCRIPT_CONTINUE; boolean bpOk = params.getBoolean("bpOk"); string_id proseSID = params.getStringId("proseSID"); int guildId = params.getInt("guildId"); prose_package pp = new prose_package(); if(proseSID != null) { pp.stringId = proseSID; } pp.actor.set(target); if(guildId != 0) { pp.target.set(guildGetName(guildId)); } if(title != null && !title.equals("")) pp.target.set(title); if(bpOk) { pp.stringId = guild.SID_GUILD_SPONSOR_ACCEPT; } else { if(proseSID == null) { pp.stringId = guild.SID_GUILD_SPONSOR_DECLINE; } } sendSystemMessageProse(self, pp); return SCRIPT_CONTINUE; } messageHandler onGuildSponsorVerifyResponse() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id target = params.getObjId("player"); obj_id player = params.getObjId("sponsor"); string_id stringMessage = params.getStringId("stringMessage"); sendSystemMessage(player, stringMessage); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildPermissionsResponse() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; string target = ""; int guildId = 0; string [] permissions = utils.getStringArrayScriptVar(self, "guild.permissionsParams"); int lastInterface = utils.getIntScriptVar(player, "guild.lastInterface"); if(utils.hasScriptVar(player, "name")) { target = utils.getStringScriptVar(self, "name"); utils.removeScriptVar(self, "name"); } if(utils.hasScriptVar(player, "guildId")) { guildId = utils.getIntScriptVar(self, "guildId"); utils.removeScriptVar(self, "guildId"); } if(permissions != null && permissions.length > 0) { utils.removeScriptVar(self, "guild.permissionsParams"); } obj_id memberId = guild.findMemberIdByName(guildId, target, false, true); int bp = sui.getIntButtonPressed(params); int row = sui.getListboxSelectedRow(params); if(bp == sui.BP_OK) { if(row >= 0 && row <= 10 && guildGetLeader(guildId) == player) { if(row == 0) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_MAIL); else if(row == 1) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_SPONSOR); else if(row == 2) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_TITLE); else if(row == 3) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_ACCEPT); else if(row == 4) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_KICK); else if(row == 5) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_WAR); else if(row == 6) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_NAMECHANGE); else if(row == 7) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_DISBAND); else if(row == 8) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_RANK); else if(row == 9) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_WAR_EXCLUSION); else if(row == 10) guild.togglePermission(guildId, player, target, guild.GUILD_PERMISSION_WAR_INCLUSION); guild.selectPermissions(self, player, target, guildId); return SCRIPT_CONTINUE; } else { if(row == 0) guild.togglePersonalPermission(guildId, player, target, guild.GUILD_PERMISSION_WAR_EXCLUSION); } } else if(bp == sui.BP_REVERT) { if(lastInterface == guild.INTERFACE_GUILD_PERMISSION_LIST) { guild.showPermissionSummary(self, player); } else { guild.showGuildMembers(self, self, 0, -1, "", ""); } } else guild.removeWindowPid(player); return SCRIPT_CONTINUE; } messageHandler selectPermissionsMessage() { obj_id player = params.getObjId("player"); String name = params.getString("name"); int guildId = params.getInt("guildId"); //int guildId = getGuildId(player); // build permission list, and mark each as whether the target has them obj_id target = guild.findMemberIdByName(guildId, name, false, true); //setMenuContextString(self, player, "guildPermissionsTarget", name); obj_id leader = guildGetLeader(guildId); string[] perms = null; if(leader == player || isGod(player)) { perms = new string[11]; if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_MAIL)) perms[0] = "+ " + localize(guild.SID_GUILD_PERMISSION_MAIL); else perms[0] = "- " + localize(guild.SID_GUILD_PERMISSION_MAIL); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_SPONSOR)) perms[1] = "+ " + localize(guild.SID_GUILD_PERMISSION_SPONSOR); else perms[1] = "- " + localize(guild.SID_GUILD_PERMISSION_SPONSOR); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_TITLE)) perms[2] = "+ " + localize(guild.SID_GUILD_PERMISSION_TITLE); else perms[2] = "- " + localize(guild.SID_GUILD_PERMISSION_TITLE); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_ACCEPT)) perms[3] = "+ " + localize(guild.SID_GUILD_PERMISSION_ACCEPT); else perms[3] = "- " + localize(guild.SID_GUILD_PERMISSION_ACCEPT); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_KICK)) perms[4] = "+ " + localize(guild.SID_GUILD_PERMISSION_KICK); else perms[4] = "- " + localize(guild.SID_GUILD_PERMISSION_KICK); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_WAR)) perms[5] = "+ " + localize(guild.SID_GUILD_PERMISSION_WAR); else perms[5] = "- " + localize(guild.SID_GUILD_PERMISSION_WAR); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_NAMECHANGE)) perms[6] = "+ " + localize(guild.SID_GUILD_PERMISSION_NAMECHANGE); else perms[6] = "- " + localize(guild.SID_GUILD_PERMISSION_NAMECHANGE); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_DISBAND)) perms[7] = "+ " + localize(guild.SID_GUILD_PERMISSION_DISBAND); else perms[7] = "- " + localize(guild.SID_GUILD_PERMISSION_DISBAND); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_RANK)) perms[8] = "+ " + localize(guild.SID_GUILD_PERMISSION_RANK); else perms[8] = "- " + localize(guild.SID_GUILD_PERMISSION_RANK); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_WAR_EXCLUSION)) perms[9] = "+ " + localize(guild.SID_GUILD_PERMISSION_WAR_EXCLUDE); else perms[9] = "- " + localize(guild.SID_GUILD_PERMISSION_WAR_EXCLUDE); if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_WAR_INCLUSION)) perms[10] = "+ " + localize(guild.SID_GUILD_PERMISSION_WAR_INCLUDE); else perms[10] = "- " + localize(guild.SID_GUILD_PERMISSION_WAR_INCLUDE); } else // Non guild masters get the war options. { if(player == target) { perms = new string[1]; if (guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_WAR_EXCLUSION)) perms[0] = "+ " + localize(guild.SID_GUILD_PERMISSION_WAR_EXCLUDE); else perms[0] = "- " + localize(guild.SID_GUILD_PERMISSION_WAR_EXCLUDE); } else { guild.showGuildMembers(self, self, 0, -1, "", ""); } } dictionary dict = new dictionary(); dict.put("player", player); dict.put("perms", perms); dict.put("name", name); dict.put("guildId", guildId); messageTo(self, "permissionsChangeSuiHandler", dict, 0, false); return SCRIPT_CONTINUE; } messageHandler onGuildMembersResponse() { obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) { return SCRIPT_CONTINUE; } int guildId = getGuildId(player); obj_id [] memberIds = utils.getObjIdArrayScriptVar(self, "guild.memberIds"); if(memberIds == null || memberIds.length < 1) { //debugSpeakMsg(player, "onGuildMembersResponse failed. memberIds null"); return SCRIPT_CONTINUE; } int index = sui.getTableLogicalIndex(params); if(index < 0 || index > memberIds.length) { //debugSpeakMsg(player, "onGuildMembersResponse failed. index bad"); return SCRIPT_CONTINUE; } utils.removeScriptVarTree(self, "guildShow"); int bp = sui.getIntButtonPressed(params); if(bp == sui.BP_OK) { // debugSpeakMsg(player, "onGuildMembersResponse onClosedOk"); string name = guildGetMemberName(guildId, memberIds[index]); utils.setScriptVar(self, "guildMemberName", name); utils.setScriptVar(self, "guildId", guildId); string[] entries = guild.getAvailableMemberOptions(self, player); obj_id target = guild.findMemberIdByName(guildId, name, false, true); if((entries == null || entries.length <= 0) && player != target) { guild.removeWindowPid(player); utils.removeScriptVar(player, "guildMemberName"); utils.removeScriptVar(player, "guildId"); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } else { if((entries == null || entries.length <= 0) && player == target) { guild.selectPermissions(self, player, name, guildId); return SCRIPT_CONTINUE; } } int pid = sui.listbox( self, player, guild.buildFakeLocalizedProse(guild.STR_GUILD_MEMBER_OPTIONS_PROMPT, name, ""), sui.OK_CANCEL_REFRESH, guild.STR_GUILD_MEMBER_OPTIONS_TITLE, entries, "onGuildMemberOptionsResponse", false, true); sui.listboxUseOtherButton(pid, guild.STR_SUI_BACK_BUTTON); utils.setScriptVar(player, "guild.lastInterface", guild.INTERFACE_GUILD_ROSTER); sui.showSUIPage(pid); guild.setWindowPid(player, pid); } else { utils.removeScriptVarTree(self, "guildShow"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildMemberOptionsResponse() { obj_id player = params.getObjId("player"); int guildId = utils.getIntScriptVar(self, "guildId"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; if (sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getListboxSelectedRow(params); string name = utils.getStringScriptVar(self, "guildMemberName"); //string name = getMenuContextString(self, player, "guildMemberName"); string[] entries = guild.getAvailableMemberOptions(self, player); if(entries == null || entries.length <= 0) { guild.removeWindowPid(player); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } if (row >= 0 && row < entries.length) { if (entries[row] == guild.STR_GUILD_TITLE) { guild.chooseTitle(self, player, name); return SCRIPT_CONTINUE; } else if (entries[row] == guild.STR_GUILD_KICK) { guild.confirmKick(self, player, name); return SCRIPT_CONTINUE; } else if (entries[row] == guild.STR_GUILD_PERMISSIONS) { guild.selectPermissions(self, player, name, guildId); return SCRIPT_CONTINUE; } else if(entries[row] == guild.STR_GUILD_RANK) { guild.selectRank(self, player, name, guildId); return SCRIPT_CONTINUE; } else if(entries[row] == guild.STR_GUILD_WAR_EXCLUDE_TOGGLE) { obj_id target = guild.findMemberIdByName(guildId, name, false, true); if(!isIdValid(target)) { return SCRIPT_CONTINUE; } params.put("warExclusion", guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_WAR_EXCLUSION)); params.put("player", player); params.put("guildMemberName", name); params.put("guildId", guildId); params.put("counter", 0); messageTo(self, "delayWarExcludeConsistencyCheck", params, 1, false); guild.toggleWarExclusion(player, guildId, name); } else if(entries[row] == guild.STR_GUILD_WAR_INCLUDE_TOGGLE) { obj_id target = guild.findMemberIdByName(guildId, name, false, true); if(!isIdValid(target)) { return SCRIPT_CONTINUE; } params.put("warInclusion", guild.hasGuildPermission(guildId, target, guild.GUILD_PERMISSION_WAR_INCLUSION)); params.put("player", player); params.put("guildMemberName", name); params.put("guildId", guildId); params.put("counter", 0); messageTo(self, "delayWarIncludeConsistencyCheck", params, 1, false); guild.toggleWarInclusion(player, guildId, name); } } } else if(sui.getIntButtonPressed(params) == sui.BP_REVERT) { guild.showGuildMembers(self, self, 0, -1, "", ""); } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } messageHandler delayWarExcludeConsistencyCheck() { obj_id player = params.getObjId("player"); string name = params.getString("guildMemberName"); int guildId = params.getInt("guildId"); int counter = params.getInt("counter"); boolean warExclusion = params.getBoolean("warExclusion"); if(!isIdValid(player) || name == null || name.length() < 1 || guildId == 0) { return SCRIPT_CONTINUE; } obj_id memberId = guild.findMemberIdByName(guildId, name, false, true); if(!isIdValid(memberId)) { return SCRIPT_CONTINUE; } if(guild.hasGuildPermission(guildId, memberId, guild.GUILD_PERMISSION_WAR_EXCLUSION) == warExclusion && counter < 10) { counter++; params.put("counter", counter); messageTo(self, "delayWarExcludeConsistencyCheck", params, 1, false); return SCRIPT_CONTINUE; } guild.showGuildMembers(self, self, 0, -1, "", ""); return SCRIPT_CONTINUE; } messageHandler delayWarIncludeConsistencyCheck() { obj_id player = params.getObjId("player"); string name = params.getString("guildMemberName"); int guildId = params.getInt("guildId"); int counter = params.getInt("counter"); boolean warInclusion = params.getBoolean("warInclusion"); if(!isIdValid(player) || name == null || name.length() < 1 || guildId == 0) { return SCRIPT_CONTINUE; } obj_id memberId = guild.findMemberIdByName(guildId, name, false, true); if(!isIdValid(memberId)) { return SCRIPT_CONTINUE; } if(guild.hasGuildPermission(guildId, memberId, guild.GUILD_PERMISSION_WAR_INCLUSION) == warInclusion && counter < 10) { counter++; params.put("counter", counter); messageTo(self, "delayWarIncludeConsistencyCheck", params, 1, false); return SCRIPT_CONTINUE; } guild.showGuildMembers(self, self, 0, -1, "", ""); return SCRIPT_CONTINUE; } messageHandler onGuildRankSummaryResponse() { obj_id player = params.getObjId("player"); int guildId = utils.getIntScriptVar(self, "guildId"); if(!guild.hasWindowPid(self)) { return SCRIPT_CONTINUE; } if(sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getTableLogicalIndex(params); string[] entries = utils.getStringArrayScriptVar(self, "guild.allRanks"); if(entries == null || entries.length <= 0) { guild.removeWindowPid(player); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } int rankSelected = 0; boolean rankRemoved = true; int [] ranksPreferred = getIntArrayObjVar(player, "guild.ranksPreferred"); resizeable int [] newRanksPreferred = new int[0]; int foundIndex = -1; if(row >= 0 && row < entries.length) { // Are there already some ranks preferred to show on the rank list? if(ranksPreferred != null && ranksPreferred.length > 0) { boolean found = false; // Search through those ranks and if it's found, then do not add it to the new list. for(int i = 0, j = ranksPreferred.length; i < j; i++) { if(ranksPreferred[i] == row) { found = true; continue; } utils.addElement(newRanksPreferred, ranksPreferred[i]); } // The rank selected was not found, so add it to the list. if(!found) { utils.addElement(newRanksPreferred, row); } } else // This is the first preference to add. { utils.addElement(newRanksPreferred, row); } if(newRanksPreferred == null || newRanksPreferred.length < 1) { removeObjVar(player, "guild.ranksPreferred"); } else { java.util.Collections.sort(newRanksPreferred); setObjVar(player, "guild.ranksPreferred", newRanksPreferred); } guild.showRankSummary(self, player); } else { guild.showRankList(self, player); } } else if(sui.getIntButtonPressed(params) == sui.BP_REVERT) { guild.showGuildMembers(self, self, 0, -1, "", ""); } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); utils.removeScriptVar(self, "guild.allRanks"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } messageHandler onGuildRankListResponse() { obj_id player = params.getObjId("player"); int guildId = utils.getIntScriptVar(self, "guildId"); obj_id [] members = utils.getObjIdArrayScriptVar(player, "guild.memberIds"); if(!guild.hasWindowPid(self)) { return SCRIPT_CONTINUE; } if(sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getTableLogicalIndex(params); if(members == null || members.length <= 0) { guild.removeWindowPid(player); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } if(row >= 0 && row < members.length) { string name = guildGetMemberName(guildId, members[row]); utils.setScriptVar(player, "guild.lastInterface", guild.INTERFACE_GUILD_RANK_LIST); if(guild.hasGuildPermission(guildId, player, guild.GUILD_PERMISSION_RANK)) { guild.selectRank(self, player, name, guildId); } else { guild.showRankList(self, player); } } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); utils.removeScriptVar(self, "guild.memberIds"); guild.removeWindowPid(player); } } else if(sui.getIntButtonPressed(params) == sui.BP_REVERT) { guild.showGuildMembers(self, self, 0, -1, "", ""); } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); utils.removeScriptVar(self, "guild.memberIds"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } messageHandler onRankOptionsResponse() { obj_id player = params.getObjId("player"); string name = utils.getStringScriptVar(self, "guildMemberName"); int guildId = utils.getIntScriptVar(self, "guildId"); if(!guild.hasWindowPid(self)) return SCRIPT_CONTINUE; int lastInterface = utils.getIntScriptVar(player, "guild.lastInterface"); if(sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getListboxSelectedRow(params); string[] entries = utils.getStringArrayScriptVar(self, "guild.allRanks"); if(entries == null || entries.length <= 0) { guild.removeWindowPid(player); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } obj_id memberId = guild.findMemberIdByName(guildId, name, false, true); int rankSelected = 0; boolean rankRemoved = true; if(row >= 0 && row < entries.length && guild.hasGuildPermission(guildId, player, guild.GUILD_PERMISSION_RANK)) { if(guildHasMemberRank(guildId, memberId, entries[row])) { guildRemoveMemberRank(guildId, memberId, entries[row]); rankSelected = row; } else { guildAddMemberRank(guildId, memberId, entries[row]); rankSelected = row; rankRemoved = false; } params.put("player", player); params.put("guildMemberName", name); params.put("guildId", guildId); params.put("rankList", entries); params.put("rankSelected", rankSelected); params.put("rankRemoved", rankRemoved); params.put("counter", 0); messageTo(self, "delayRankConsistencyCheck", params, 1, false); } else { if(lastInterface == guild.INTERFACE_GUILD_RANK_LIST) { guild.showRankList(self, player); } else { guild.showGuildMembers(self, self, 0, -1, "", ""); } } } else if(sui.getIntButtonPressed(params) == sui.BP_REVERT) { if(lastInterface == guild.INTERFACE_GUILD_RANK_LIST) { guild.showRankList(self, player); } else { guild.showGuildMembers(self, self, 0, -1, "", ""); } } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); utils.removeScriptVar(self, "guild.allRanks"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } messageHandler delayRankConsistencyCheck() { obj_id player = params.getObjId("player"); string name = params.getString("guildMemberName"); int guildId = params.getInt("guildId"); int rankSelected = params.getInt("rankSelected"); boolean rankRemoved = params.getBoolean("rankRemoved"); string [] entries = params.getStringArray("rankList"); int counter = params.getInt("counter"); if(!isIdValid(player) || name == null || name.length() < 1 || guildId == 0) { return SCRIPT_CONTINUE; } obj_id memberId = guild.findMemberIdByName(guildId, name, false, true); if(!isIdValid(memberId)) { return SCRIPT_CONTINUE; } if((rankRemoved && guildHasMemberRank(guildId, memberId, entries[rankSelected])) || (!rankRemoved && !guildHasMemberRank(guildId, memberId, entries[rankSelected])) && counter < 10) { counter++; params.put("counter", counter); messageTo(self, "delayRankConsistencyCheck", params, 1, false); return SCRIPT_CONTINUE; } guild.selectRank(self, player, name, guildId); return SCRIPT_CONTINUE; } messageHandler selectRankMessage() { obj_id player = params.getObjId("player"); string name = params.getString("guildMemberName"); int guildId = params.getInt("guildId"); string[] rankDisplay = params.getStringArray("rankDisplay"); if(guild.hasWindowPid(player)) { int pid = guild.getWindowPid(player); forceCloseSUIPage(pid); guild.removeWindowPid(player); } utils.setScriptVar(self, "guildMemberName", name); utils.setScriptVar(self, "guildId", guildId); int pid = sui.listbox( self, player, guild.buildFakeLocalizedProse(guild.STR_GUILD_MEMBER_RANK_PROMPT, name, ""), sui.OK_CANCEL_REFRESH, guild.STR_GUILD_MEMBER_RANK_TITLE, rankDisplay, "onRankOptionsResponse", false, false); sui.listboxUseOtherButton(pid, guild.STR_SUI_BACK_BUTTON); sui.showSUIPage(pid); guild.setWindowPid(player, pid); return SCRIPT_CONTINUE; } messageHandler onGuildPermissionListResponse() { obj_id player = params.getObjId("player"); int guildId = utils.getIntScriptVar(self, "guildId"); obj_id [] members = utils.getObjIdArrayScriptVar(player, "guild.memberIds"); if(!guild.hasWindowPid(self)) { return SCRIPT_CONTINUE; } if(sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getTableLogicalIndex(params); if(members == null || members.length <= 0) { guild.removeWindowPid(player); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } if(row >= 0 && row < members.length) { string name = guildGetMemberName(guildId, members[row]); obj_id memberId = guild.findMemberIdByName(guildId, name, false, true); obj_id leader = guildGetLeader(guildId); utils.setScriptVar(player, "guild.lastInterface", guild.INTERFACE_GUILD_PERMISSION_LIST); if(player == leader || memberId == player) { guild.selectPermissions(self, player, name, guildId); } else { guild.showPermissionSummary(self, player); } } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); utils.removeScriptVar(self, "guild.memberIds"); guild.removeWindowPid(player); } } else if(sui.getIntButtonPressed(params) == sui.BP_REVERT) { guild.showPermissionSummary(self, player); } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); utils.removeScriptVar(self, "guild.memberIds"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } messageHandler onGuildVotingResponse() { obj_id player = params.getObjId("player"); int guildId = utils.getIntScriptVar(self, "guildId"); if(!guild.hasWindowPid(self) || guildId == 0) { return SCRIPT_CONTINUE; } if(sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getTableLogicalIndex(params); obj_id[] candidates = utils.getObjIdArrayScriptVar(self, "guild.candidates"); if(candidates == null || candidates.length <= 0) { guild.removeWindowPid(player); sendSystemMessage(player, SID_GUILD_NO_PERMISSION); return SCRIPT_CONTINUE; } if(row >= 0 && row < candidates.length) { string memberName = guildGetMemberName(guildId, candidates[row]); if(memberName != null) { guild.allegiance(self, memberName); params.put("player", player); params.put("guildId", guildId); params.put("memberVotedFor", memberName); params.put("counter", 0); messageTo(self, "votingConsistencyCheck", params, 1, false); } } } else { utils.removeScriptVar(self, "guildMemberName"); utils.removeScriptVar(self, "guildId"); guild.removeWindowPid(player); } return SCRIPT_CONTINUE; } messageHandler votingConsistencyCheck() { obj_id player = params.getObjId("player"); int guildId = params.getInt("guildId"); string memberVotedFor = params.getString("memberVotedFor"); int counter = params.getInt("counter"); if(!isIdValid(player) || memberVotedFor == null || memberVotedFor.length() < 1 || guildId == 0) { return SCRIPT_CONTINUE; } obj_id memberId = guild.findMemberIdByName(guildId, memberVotedFor, false, true); if(memberId != guildGetMemberAllegiance(guildId, player) && counter < 10) { counter++; params.put("counter", counter); messageTo(self, "votingConsistencyCheck", params, 1, false); return SCRIPT_CONTINUE; } guild.showStandings(player, player); return SCRIPT_CONTINUE; } messageHandler permissionsChangeSuiHandler() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); string[] perms = params.getStringArray("perms"); string name = params.getString("name"); int guildId = params.getInt("guildId"); utils.setScriptVar(self, "name", name); utils.setScriptVar(self, "guildId", guildId); utils.setScriptVar(self, "guild.permissionsParams", perms); int pid = sui.listbox( self, player, guild.buildFakeLocalizedProse(guild.STR_GUILD_PERMISSIONS_PROMPT, "\\#00FF00" + name + "\\#DFDFDF", ""), sui.OK_CANCEL_REFRESH, "\\#00FF00" + name + "\\#DFDFDF " + localize(guild.SID_GUILD_PERMISSIONS_TITLE), perms, "onGuildPermissionsResponse", false, true); sui.listboxUseOtherButton(pid, guild.STR_SUI_BACK_BUTTON); sui.showSUIPage(pid); guild.setWindowPid(player, pid); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildKickResponse() { obj_id player = params.getObjId("player"); string name = ""; if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; if(utils.hasScriptVar(player, "guildKickName")) { name = utils.getStringScriptVar(self, "guildKickName"); utils.removeScriptVar(self, "guildKickName"); } int guildId = getGuildId(player); if (sui.getIntButtonPressed(params) == sui.BP_OK) { guild.kick(guildId, player, name); } guild.removeWindowPid(player); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildTitleResponse() { obj_id player = params.getObjId("player"); string name = guild.getMenuContextString(self, player, "guildTitlePlayerName"); guild.removeMenuContextVar(self, player, "guildTitlePlayerName"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; int guildId = getGuildId(player); if (sui.getIntButtonPressed(params) == sui.BP_OK) { string newTitle = sui.getInputBoxText(params); guild.title(guildId, player, name, newTitle); } else guild.removeWindowPid(player); int pid = sui.listbox( self, player, guild.buildFakeLocalizedProse(guild.STR_GUILD_MEMBER_OPTIONS_PROMPT, name, ""), sui.OK_CANCEL_REFRESH, guild.STR_GUILD_MEMBER_OPTIONS_TITLE, guild.getAvailableMemberOptions(self, player), "onGuildMemberOptionsResponse", false, true); sui.listboxUseOtherButton(pid, guild.STR_SUI_BACK_BUTTON); sui.showSUIPage(pid); guild.setWindowPid(player, pid); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildMembersFilter() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; int btn = sui.getIntButtonPressed(params); int idx = sui.getListboxSelectedRow(params); if(idx < 0) { guild.removeWindowPid(self); return SCRIPT_CONTINUE; } int guildId = getGuildId(player); if (btn == sui.BP_OK) { switch(idx) { case 0: //alphabetical guild.showGuildMembers(player, player, 0, -1, "", ""); break; case 1: //permissions guild.showPermissionList(player, guildId); break; case 2: //title guild.showTitleList(player, guildId); break; case 3: //by inputing name int pid =sui.inputbox( player, player, guild.STR_GUILD_MEMBERS_NAME_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_MEMBERS_TITLE, sui.INPUT_NORMAL, null, "onGuildMemberNameResponse"); guild.setWindowPid(player, pid); break; } } else guild.removeWindowPid(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildMembersPermissionsResponse() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); int btn = sui.getIntButtonPressed(params); int idx = sui.getListboxSelectedRow(params); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; int guildId = utils.getIntScriptVar(player, "guildShow.guildId"); if (btn == sui.BP_OK) { if(idx < 0) { guild.removeWindowPid(player); return SCRIPT_CONTINUE; } switch(idx) { case 0: //mail //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_MAIL"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_MAIL, "", ""); break; case 1: //sponsor //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_SPONSOR"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_SPONSOR, "", ""); break; case 2: //title //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_TITLE"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_TITLE, "", ""); break; case 3: //accept //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_ACCEPT"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_ACCEPT, "", ""); break; case 4: //kick //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_KICK"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_KICK, "", ""); break; case 5: //war //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_WAR"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_WAR, "", ""); break; case 6: //name change //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_NAMECHANGE"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_NAMECHANGE, "", ""); break; case 7: //disband //LOG("GUILD", "onGuildMembersPermissionsResponse::GUILD_PERMISSION_DISBAND"); guild.showGuildMembers(player, player, 0, guild.GUILD_PERMISSION_DISBAND, "", ""); break; case 8: guild.showGuildMembers(player, player, 0, 0, "", ""); } } else if(btn == sui.BP_REVERT) { int pid = sui.listbox(self, self, guild.STR_GUILD_MEMBERS_FILTER_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_MEMBERS_TITLE, guild.MEMBER_FILTER_LIST, "onGuildMembersFilter", true, true); guild.setWindowPid(player, pid); } else guild.removeWindowPid(player); return SCRIPT_CONTINUE; } messageHandler onGuildMembersTitlesResponse() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; int btn = sui.getIntButtonPressed(params); int idx = sui.getListboxSelectedRow(params); int guildId = utils.getIntScriptVar(player, "guildShow.guildId"); string[] myList = guild.getGuildTitles(guildId); if(myList == null) { return SCRIPT_CONTINUE; } if (btn == sui.BP_OK) { if(idx < 0) { guild.removeWindowPid(player); return SCRIPT_CONTINUE; } guild.showGuildMembers(player, player, 0, -1, myList[idx], ""); } else if(btn == sui.BP_REVERT) { int pid = sui.listbox(self, self, guild.STR_GUILD_MEMBERS_FILTER_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_MEMBERS_TITLE, guild.MEMBER_FILTER_LIST, "onGuildMembersFilter", true, true); guild.setWindowPid(player, pid); } return SCRIPT_CONTINUE; } messageHandler onGuildMemberNameResponse() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; if (sui.getIntButtonPressed(params) == sui.BP_OK) { string name = sui.getInputBoxText(params); guild.showGuildMembers(player, player, 0, -1, "", name); } else guild.removeWindowPid(player); return SCRIPT_CONTINUE; } messageHandler onGuildEnemiesResponse() { obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; //int[] enemyIds = guild.getMenuContextIntArray(self, player, "guildEnemyIds"); int[] enemyIds = utils.getIntArrayScriptVar( player, "guildEnemyIds"); utils.removeScriptVar(player, "guildEnemyIds"); //guild.removeMenuContextVar(self, player, "guildEnemyIds"); if (sui.getIntButtonPressed(params) == sui.BP_OK) { int guildId = getGuildId(player); if (guild.hasGuildPermission(guildId, player, guild.GUILD_PERMISSION_WAR)) { int row = sui.getListboxSelectedRow(params); if (row == 0) { // war int pid = sui.inputbox( self, player, guild.STR_GUILD_WAR_ENEMY_NAME_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_WAR_ENEMY_NAME_TITLE, sui.INPUT_NORMAL, null, "onGuildWarEnemyNameResponse"); guild.setWindowPid(player, pid); } else { // listed guild - index is row-1, and is the index into enemyIds. // This may be either a guild we have declared war on, or a guild that // has declared war on us. We may be declaring war or declaring peace, // since we are toggling our own status. if (row > 0 && row <= enemyIds.length) { int enemyId = enemyIds[row-1]; if (guild.hasDeclaredWarAgainst(guildId, enemyId)) guild.peace(guildId, player, enemyId); else guild.war(guildId, player, enemyId); guild.showGuildEnemies(player); } } } } else guild.removeWindowPid(player); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildWarEnemyNameResponse() { obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; if (sui.getIntButtonPressed(params) == sui.BP_OK) { int guildId = getGuildId(player); string enemyName = sui.getInputBoxText(params); guild.war(guildId, player, enemyName); } guild.removeWindowPid(player); guild.showGuildEnemies(player); return SCRIPT_CONTINUE; } messageHandler showGuildEnemiesMessage() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if(guild.hasWindowPid(player)) { int pid = guild.getWindowPid(player); forceCloseSUIPage(pid); guild.removeWindowPid(player); } int guildId = getGuildId(player); int[] enemyIds = guild.getEnemyIds(guildId); utils.setScriptVar(player, "guildEnemyIds", enemyIds); //guild.setMenuContextIntArray(player, player, "guildEnemyIds", enemyIds); string[] enemies = guild.getEnemyNamesAndAbbrevs(guildId); int numEnemies = 0; if (enemies != null) numEnemies = enemies.length; boolean warPerms = guild.hasGuildPermission(guildId, player, guild.GUILD_PERMISSION_WAR); int numOptions = numEnemies; if (warPerms) ++numOptions; string[] options = new string[numOptions]; int index = 0; if (warPerms) options[index++] = guild.STR_GUILD_ADD_ENEMY; for (int i = 0; i < numEnemies; ++i) { options[index++] = enemies[i]; } string prompt = "Your guild currently has " + guildGetCountMembersGuildWarPvPEnabled(guildId) + " members who are enabled for guild war PvP.\n\n"; prompt += localize(guild.GUILD_ENEMIES_PROMPT); int pid = sui.listbox( player, player, prompt, sui.OK_CANCEL, guild.STR_GUILD_ENEMIES_TITLE, options, "onGuildEnemiesResponse", true, false); guild.setWindowPid(player, pid); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler showGuildSponsoredMessage() { obj_id player = params.getObjId("player"); if(guild.hasWindowPid(player)) { int pid = guild.getWindowPid(player); forceCloseSUIPage(pid); guild.removeWindowPid(player); } int guildId = getGuildId(player); string [] sponsoredNames = guild.getMemberNames(guildId, true, false); int pid = sui.listbox( player, player, guild.STR_GUILD_SPONSORED_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_SPONSORED_TITLE, sponsoredNames, "onGuildSponsoredResponse", true, false); utils.setScriptVar(player, "guild.sponsoredNames", sponsoredNames); guild.setWindowPid(player, pid); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildSponsoredResponse() { obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) { utils.removeScriptVar(player, "guild.sponsoredNames"); return SCRIPT_CONTINUE; } int guildId = getGuildId(player); string [] sponsoredNames = utils.getStringArrayScriptVar(player, "guild.sponsoredNames"); utils.removeScriptVar(player, "guild.sponsoredNames"); if(sponsoredNames == null || sponsoredNames.length < 1) { return SCRIPT_CONTINUE; } if(sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getListboxSelectedRow(params); if(row >= 0 && row < sponsoredNames.length) { string[] entries = new string[2]; entries[0] = guild.STR_GUILD_ACCEPT; entries[1] = guild.STR_GUILD_DECLINE; string name = sponsoredNames[row]; guild.setMenuContextString(self, player, "guildSponsoredName", name); int pid = sui.listbox( player, player, guild.buildFakeLocalizedProse(guild.STR_GUILD_SPONSORED_OPTIONS_PROMPT, name, ""), sui.OK_CANCEL, guild.STR_GUILD_SPONSORED_OPTIONS_TITLE, entries, "onGuildSponsoredOptionsResponse"); guild.setWindowPid(player, pid); } else guild.removeWindowPid(player); } else guild.removeWindowPid(player); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildSponsoredOptionsResponse() { obj_id player = params.getObjId("player"); if(!guild.hasWindowPid(player)) return SCRIPT_CONTINUE; string name = guild.getMenuContextString(self, player, "guildSponsoredName"); guild.removeMenuContextVar(self, player, "guildSponsoredName"); if (name == null || !isIdValid(player)) return SCRIPT_CONTINUE; if (sui.getIntButtonPressed(params) == sui.BP_OK) { int row = sui.getListboxSelectedRow(params); if (row >= 0 && row <= 1) { int guildId = getGuildId(player); if (row == 0) // accept guild.accept(guildId, player, name); else if (row == 1) // decline guild.kick(guildId, player, name); guild.removeWindowPid(player); guild.showGuildSponsored(player); } else guild.removeWindowPid(player); } else guild.removeWindowPid(player); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildNamechangeNameResponse() { if(!guild.hasWindowPid(self)) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if (sui.getIntButtonPressed(params) == sui.BP_OK) { string newGuildName = sui.getInputBoxText(params); guild.setMenuContextString(player, player, "guildNamechangeName", newGuildName); int pid = sui.inputbox( player, player, guild.STR_GUILD_NAMECHANGE_ABBREV_PROMPT, sui.OK_CANCEL, guild.STR_GUILD_NAMECHANGE_ABBREV_TITLE, sui.INPUT_NORMAL, null, "onGuildNamechangeAbbrevResponse"); guild.setWindowPid(self, pid); } else guild.removeWindowPid(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildNamechangeAbbrevResponse() { if(!guild.hasWindowPid(self)) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); string newGuildName = guild.getMenuContextString(self, player, "guildNamechangeName"); guild.removeMenuContextVar(player, player, "guildNamechangeName"); if (sui.getIntButtonPressed(params) == sui.BP_OK) { int guildId = getGuildId(player); string newGuildAbbrev = sui.getInputBoxText(params); guild.nameChange(guildId, player, newGuildName, newGuildAbbrev); } guild.removeWindowPid(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildSponsorResponse() { if(!guild.hasWindowPid(self)) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); if (sui.getIntButtonPressed(params) == sui.BP_OK) { string sponsorName = sui.getInputBoxText(params); obj_id target = utils.getNearbyPlayerByName(player, sponsorName); if(!isIdValid(target)) { target = getPlayerIdFromFirstName(sponsorName); } if (isIdValid(target)) { int guildId = getGuildId(player); dictionary d = new dictionary(); d.put("sender", player); d.put("guildId", guildId); d.put("prompt", guild.buildFakeLocalizedProse(guild.STR_GUILD_SPONSOR_VERIFY_PROMPT, getName(player), guildGetName(guildId))); d.put("title", guild.STR_GUILD_SPONSOR_VERIFY_TITLE); messageTo(target, "startGuildSponsorSui", d, 0, false); } else { prose_package pp = new prose_package(); pp.actor.set(sponsorName); pp.stringId = guild.SID_GUILD_SPONSOR_NOT_FOUND; sendSystemMessageProse(player, pp); } } guild.removeWindowPid(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onGuildDisbandResponse() { if(!guild.hasWindowPid(self)) return SCRIPT_CONTINUE; obj_id player = params.getObjId("player"); int guildId = getGuildId(player); if (sui.getIntButtonPressed(params) == sui.BP_OK) { guild.disband(guildId, player); } guild.removeWindowPid(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onMasterGuildWarTableDictionaryResponse() { guild.closedMasterGuildWarTableDictionary(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler onInactiveGuildWarTableDictionaryResponse() { guild.closedInactiveGuildWarTableDictionary(self); return SCRIPT_CONTINUE; } // ---------------------------------------------------------------------- messageHandler handleStatusUpdate() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; boolean login = params.getBoolean("login"); int guildId = getGuildId(self); if(guildId > 0) { guild.statusNotification(guildId, self, login); } return SCRIPT_CONTINUE; } messageHandler handleStatusNotification() { if(params == null || params.isEmpty()) return SCRIPT_CONTINUE; int guildId = params.getInt("guildId"); obj_id player = params.getObjId("player"); // Who logged on/off boolean login = params.getBoolean("login"); if(guildId <= 0 || !isIdValid(self) || !isIdValid(player) || player == self) { return SCRIPT_CONTINUE; } if(!guild.hasGuildPermission(guildId, self, guild.GUILD_PERMISSION_ONLINE_STATUS)) { return SCRIPT_CONTINUE; } string name = guildGetMemberName(guildId, player); prose_package pp = new prose_package (); pp.target.set(guildGetMemberName(guildId, player)); if(login) { pp.stringId = SID_GUILD_MEMBER_LOGIN; //playClientEffectObj(self, "sound/wep_landmine_on.snd", self, ""); obj_id[] clients = {self}; playClientEffectObj(clients, "sound/wep_landmine_on.snd", self, ""); } else // logged off { pp.stringId = SID_GUILD_MEMBER_LOGOFF; //playClientEffectObj(self, "sound/wep_landmine_off.snd", self, ""); obj_id[] clients = {self}; playClientEffectObj(clients, "sound/wep_landmine_off.snd", self, ""); } sendSystemMessageProse(self, pp); return SCRIPT_CONTINUE; } messageHandler handleGuildGcwRegionDefenderChoice() { const int bp = sui.getIntButtonPressed(params); if (bp != sui.BP_OK) return SCRIPT_CONTINUE; String[] gcwDefenderRegions = getGcwDefenderRegions(); if ((gcwDefenderRegions == null) || (gcwDefenderRegions.length <= 0)) return SCRIPT_CONTINUE; int rowSelected = sui.getTableSelectedRow(params); if ((rowSelected < 0) || (rowSelected >= gcwDefenderRegions.length)) return SCRIPT_CONTINUE; rowSelected = sui.getTableLogicalIndex(params); if ((rowSelected < 0) || (rowSelected >= gcwDefenderRegions.length)) return SCRIPT_CONTINUE; const int guildId = getGuildId(self); if (guildId <= 0) return SCRIPT_CONTINUE; const obj_id guildLeader = guildGetLeader(guildId); if (!isIdValid(guildLeader)) return SCRIPT_CONTINUE; if ((guildLeader != self) && !isGod(self)) return SCRIPT_CONTINUE; const int factionId = guildGetCurrentFaction(guildId); if (factionId == 0) return SCRIPT_CONTINUE; if (guildGetCountMembersOnly(guildId) < utils.stringToInt(getConfigSetting("GameServer", "gcwGuildMinMembersForGcwRegionDefender"))) return SCRIPT_CONTINUE; String selectedGcwDefenderRegion = gcwDefenderRegions[rowSelected]; const int indexSeparator = selectedGcwDefenderRegion.indexOf(":"); if ((indexSeparator < 0) || ((indexSeparator + 1) >= selectedGcwDefenderRegion.length())) return SCRIPT_CONTINUE; selectedGcwDefenderRegion = selectedGcwDefenderRegion.substring(indexSeparator + 1); const String gcwCurrentDefenderRegion = guildGetCurrentGcwDefenderRegion(guildId); if ((gcwCurrentDefenderRegion != null) && (gcwCurrentDefenderRegion.length() > 0)) return SCRIPT_CONTINUE; // has the guild previously defended a region? const String gcwPreviousDefenderRegion = guildGetPreviousGcwDefenderRegion(guildId); const int timeLeftPreviousGcwDefenderRegion = guildGetTimeLeftPreviousGcwDefenderRegion(guildId); if ((gcwPreviousDefenderRegion != null) && (gcwPreviousDefenderRegion.length() > 0) && (timeLeftPreviousGcwDefenderRegion > 0)) { // Must wait 1 day to switch to defending a different region const int cooldown = timeLeftPreviousGcwDefenderRegion + (isGod(self) ? 10 : 86400) - getCalendarTime(); if ((cooldown > 0) && !selectedGcwDefenderRegion.equals(gcwPreviousDefenderRegion)) { string cooldownStr = "" + cooldown + "s"; int[] convertedTime = player_structure.convertSecondsTime(cooldown); if ((convertedTime != null) && (convertedTime.length == 4)) { if (convertedTime[0] > 0) { cooldownStr = "" + convertedTime[0] + "d:" + convertedTime[1] + "h:" + convertedTime[2] + "m:" + convertedTime[3] + "s"; } else if (convertedTime[1] > 0) { cooldownStr = "" + convertedTime[1] + "h:" + convertedTime[2] + "m:" + convertedTime[3] + "s"; } else if (convertedTime[2] > 0) { cooldownStr = "" + convertedTime[2] + "m:" + convertedTime[3] + "s"; } else if (convertedTime[3] > 0) { cooldownStr = "" + convertedTime[3] + "s"; } else { cooldownStr = "" + cooldown + "s"; } } sendSystemMessage(self, "You must wait " + cooldownStr + " before you can defend a different GCW region. You can immediately defend the GCW region you most recently defended (" + localize(new string_id("gcw_regions", gcwPreviousDefenderRegion)) + ").", ""); return SCRIPT_CONTINUE; } } sendSystemMessage(self, "Setting the guild's GCW defender region to " + localize(new string_id("gcw_regions", selectedGcwDefenderRegion)) + ". This may take a few seconds. You will receive mail confirmation once the change has been completed.", ""); guildSetGcwDefenderRegion(guildId, selectedGcwDefenderRegion); return SCRIPT_CONTINUE; }