mirror of
https://bitbucket.org/seefoe/dsrc.git
synced 2026-07-31 01:15:55 -04:00
2396 lines
60 KiB
Plaintext
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;
|
|
}
|