Files
dsrc/sku.0/sys.server/compiled/game/script/player/player_guild.script
T

2396 lines
60 KiB
Plaintext

/**
*
* Title: player_guild.script
* Description: required script functionality for PAs
*/
/***** 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;
}