PHP Code:
function onActionServerSide() {
temp.npc = findNPC("DB_Guilds");
switch (params[0]) {
case "setguild": {
if (!(temp.npc.guildExists(params[1]))) {
player.chat = "That guild doesn't exist!";
return;
}
if (!(temp.npc.isGuildMember(params[1], player.account))) {
player.chat = "I'm not a member of that guild!";
return;
}
player.guild = params[1];
break;
}
case "tryrecruit": {
if (hasGuildRight(player.guild, player.account, "add")) {
triggerclient("gui", name, "tryrecruit");
} else {
triggerclient("gui", name, "msg", "You don't have rights!");
}
break;
}
case "changerights": {
temp.pl = params[1];
temp.rights = params[2];
temp.ownrights = DB_Guilds.getGuildData(player.guild, "rights_" @ player.account);
if (!(hasGuildRight(player.guild, player.account, "editrights"))) {
triggerclient("gui", name, "msg", "You don't have rights!");
return;
}
if (pl == player.account) {
triggerclient("gui", name, "msg", "You can't edit your own rights!");
return;
}
for (r : temp.rights) {
if (!(r in ownrights)) {
if ("all" in temp.ownrights || temp.ownrights == "all") continue;
temp.failed = true;
}
}
if (failed == true) {
triggerclient("gui", name, "msg", "You tried to give rights you don't have access to yourself!");
return;
}
DB_Guilds.editGuildData(player.guild, "rights_" @ temp.pl, temp.rights, 1);
triggerclient("gui", name, "msg", "Success!");
break;
}
case "tryrename": {
temp.leader = DB_Guilds.getGuildData(player.guild, "leader");
if (temp.leader != player.account) {
triggerclient("gui", name, "msg", "Only the leader can do this!");
return;
}
temp.lines.loadlines("storage/guilds/settings/renamemessage.txt");
for (l : lines) {
temp.msg @= l @ "\n";
}
triggerclient("gui", name, "tryrename", temp.msg);
break;
}
case "kickplayer": {
temp.pl = params[1];
temp.rights = getGuildRights(player.guild, player.account);
temp.leader = DB_Guilds.getGuildData(player.guild, "leader");
if (temp.pl == temp.leader) {
triggerclient("gui", name, "msg", "You can't kick the leader!");
return;
}
if (hasGuildRight(player.guild, player.account, "kick")) {
DB_Guilds.kickGuildMember(player.guild, pl);
player.triggerclient("gui", name, "reloadguild");
} else {
triggerclient("gui", name, "msg", "You don't have rights!");
}
break;
}
case "loadguild": {
if (temp.npc.guildExists(player.guild) != true) {
return;
}
temp.data = temp.npc.getGuildDataFull(player.guild);
temp.members = temp.npc.getGuildData(player.guild, "members").tokenize(",");
for (member : temp.members) {
temp.memberdata.add({
member,
getPlayerData(member, "nick"),
getPlayerData(member, "head"),
temp.npc.getGuildData(player.guild, "rights_" @ member).tokenize(","),
temp.npc.getGuildData(player.guild, "rank_" @ member)
});
}
temp.avRights.loadlines("storage/guilds/settings/rights.txt");
temp.leader = temp.npc.getGuildData(player.guild, "leader");
triggerclient("gui", name, "loadguild", temp.data, temp.memberdata, temp.avRights, leader);
break;
}
case "getrights": {
temp.allrights.loadlines("storage/guilds/settings/rights.txt");
temp.playerrights = DB_Guilds.getGuildData(player.guild, "rights_" @ params[1]).tokenize(",");
temp.ownrights = DB_Guilds.getGuildData(player.guild, "rights_" @ player.account).tokenize(",");
triggerclient("gui", name, "getrights", allrights, playerrights, params[1], ownrights);
break;
}
}
}
function getGuildRights(g, p) {
temp.rights = findnpc("DB_Guilds").getGuildData(g, "rights_" @ p);
return temp.rights;
}
function hasGuildRight(g, p, r) {
temp.rights = getGuildRights(g, p).tokenize(",");
if (r in temp.rights || "all" in temp.rights || temp.rights == "all") {
return true;
} else {
return false;
}
}
It's not the best coding in the world, admittedly, but it shows you what you need to be shown. As for the online & offline player property gathering, it's pretty straight forward.