hasExpired()) {
$guilds = mysql_select_multi("
SELECT
`id`,
`name`,
`creationdata`,
`motd`,
( SELECT
COUNT('guild_id')
FROM `guild_membership`
WHERE `guild_id`=`id`
) AS `total`
FROM `guilds`
ORDER BY `name`;
");
// Add level data info to guilds
if ($guilds !== false)
for ($i = 0; $i < count($guilds); $i++)
$guilds[$i]['level'] = get_guild_level_data($guilds[$i]['id']);
$cache->setContent($guilds);
$cache->save();
} else {
$guilds = $cache->load();
}
return $guilds;
}
function get_guild_position($rid) {
$rid = (int)$rid;
$data = mysql_select_single("SELECT `level` FROM `guild_ranks` WHERE `id`={$rid};");
return ($data !== false) ? $data['level'] : false;
}
// Check guild logo
function logo_exists($guild) {
$guild = sanitize($guild);
echo (file_exists('engine/guildimg/'.$guild.'.gif')) ? 'engine/guildimg/'.$guild.'.gif' : 'engine/guildimg/default@logo.gif';
}
// Remove cid invitation from guild (gid)
function guild_remove_invitation($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
mysql_delete("
DELETE FROM `guild_invites`
WHERE `player_id`='{$cid}'
AND `guild_id`='{$gid}'
;");
}
function update_player_guildnick_10($cid, $nick) {
$cid = (int)$cid;
$nick = sanitize($nick);
mysql_update("UPDATE `guild_membership` SET `nick`='{$nick}' WHERE `player_id`={$cid}");
}
function guild_player_join($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
// Find rank id for regular member in this guild
$guildrank = mysql_select_single("
SELECT `id`
FROM `guild_ranks`
WHERE `guild_id`='{$gid}'
AND `level`='1' LIMIT 1;
");
if ($guildrank !== false) {
$rid = $guildrank['id'];
// Remove invite
mysql_delete("DELETE FROM `guild_invites` WHERE `player_id`='{$cid}';");
// Add to guild
mysql_insert("
INSERT INTO `guild_membership` (`player_id`, `guild_id`, `rank_id`, `nick`)
VALUES ('{$cid}', '{$gid}', '{$rid}', '')
;");
// Return success
return true;
}
return false;
}
function guild_player_leave_10($cid) {
$cid = (int)$cid;
mysql_delete("DELETE FROM `guild_membership` WHERE `player_id`='{$cid}' LIMIT 1;");
}
function update_player_guild_position_10($cid, $rid) {
$cid = (int)$cid;
$rid = (int)$rid;
mysql_update("UPDATE `guild_membership` SET `rank_id`='{$rid}' WHERE `player_id`={$cid}");
}
function guild_invite_player($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
mysql_insert("INSERT INTO `guild_invites` (`player_id`, `guild_id`) VALUES ('{$cid}', '{$gid}')");
}
function guild_remove_invites($gid) {
$gid = (int)$gid;
mysql_delete("DELETE FROM `guild_invites` WHERE `guild_id`='{$gid}';");
}
function guild_delete($gid) {
$gid = (int)$gid;
mysql_delete("DELETE FROM `guilds` WHERE `id`='{$gid}';");
}
// Get guild data, using guild id.
function get_guild_rank_data($gid) {
$gid = (int)$gid;
return mysql_select_multi("SELECT `id`, `guild_id`, `name`, `level` FROM `guild_ranks` WHERE `guild_id`='{$gid}' ORDER BY `id` DESC LIMIT 0, 30");
}
// Changes leadership of a guild to player_id
function guild_new_leader($new_leader, $gid) {
$new_leader = (int)$new_leader;
$gid = (int)$gid;
mysql_update("UPDATE `guilds` SET `ownerid`='{$new_leader}' WHERE `id`={$gid}");
}
// Change guild leader (parameters: cid, new and old leader).
function guild_change_leader($nCid, $oCid) {
$nCid = (int)$nCid;
$oCid = (int)$oCid;
$gid = guild_leader_gid($oCid);
$ranks = get_guild_rank_data($gid);
$leader_rid = 0;
$vice_rid = 0;
// Get rank id for leader and vice leader.
foreach ($ranks as $rank) {
if ($rank['level'] == 3) $leader_rid = $rank['id'];
if ($rank['level'] == 2) $vice_rid = $rank['id'];
}
$status = ($leader_rid > 0 && $vice_rid > 0) ? true : false;
if ($status) {
// Update players and set their new rank id
mysql_update("UPDATE `guild_membership` SET `rank_id`='{$leader_rid}' WHERE `player_id`={$nCid} LIMIT 1;");
mysql_update("UPDATE `guild_membership` SET `rank_id`='{$vice_rid}' WHERE `player_id`={$oCid} LIMIT 1;");
// Update guilds set new ownerid
guild_new_leader($nCid, $gid);
}
return $status;
}
// Creates a guild, where cid is the owner of the guild, and name is the name of guild.
function create_guild($cid, $name) {
$cid = (int)$cid;
$name = trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", sanitize($name))));
$time = time();
// Create the guild
mysql_insert("INSERT INTO `guilds` (`name`, `ownerid`, `creationdata`, `motd`) VALUES ('{$name}', '{$cid}', '{$time}', '');");
// Get guild id
$gid = get_guild_id($name);
// Get rank id for guild leader
$data = mysql_select_single("SELECT `id` FROM `guild_ranks` WHERE `guild_id`='{$gid}' AND `level`='3' LIMIT 1;");
$rid = ($data !== false) ? $data['id'] : false;
// Give player rank id for leader of his guild
mysql_insert("INSERT INTO `guild_membership` (`player_id`, `guild_id`, `rank_id`, `nick`) VALUES ('{$cid}', '{$gid}', '{$rid}', '');");
}
// Returns total members in a guild (integer)
function count_guild_members($gid) {
$gid = (int)$gid;
$data = mysql_select_single("SELECT COUNT('guild_id') AS `total` FROM `guild_membership` WHERE `guild_id`='{$gid}';");
return ($data !== false) ? $data['total'] : false;
}
// Guildwar functions
function guild_war_invitation($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
$gname = get_guild_name($cid);
$ename = get_guild_name($gid);
$time = time();
mysql_insert("
INSERT INTO `guild_wars` (`guild1`, `guild2`, `name1`, `name2`, `status`, `started`, `ended`)
VALUES ('{$cid}', '{$gid}', '{$gname}', '{$ename}', '0', '{$time}', '0')
;");
}
function accept_war_invitation($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
mysql_update("UPDATE `guild_wars` SET `status` = 1 WHERE `guild1` = '{$cid}' AND `guild2` = '{$gid}' AND `status` = 0;");
}
function reject_war_invitation($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
$time = time();
mysql_update("UPDATE `guild_wars` SET `status` = 2, `ended` = '{$time}' WHERE `guild1` = '{$cid}' AND `guild2` = '{$gid}';");
}
function cancel_war_invitation($cid, $gid) {
$cid = (int)$cid;
$gid = (int)$gid;
$time = time();
mysql_update("UPDATE `guild_wars` SET `status` = 3, `ended` = '{$time}' WHERE `guild2` = '{$cid}' AND `guild1` = '{$gid}';");
}
include 'layout/overall/header.php';
if (user_logged_in() === true) {
// fetch data
$char_count = user_character_list_count($session_user_id);
$char_array = user_character_list($user_data['id']);
$characters = array();
$charactersId = array();
$charactersRank = array();
if ($char_array !== false) {
foreach ($char_array as $value) {
$characters[] = $value['name'];
$charactersId[] = $value['id'];
$charactersRank[] = $value['rank_id'];
}
}
} else {
$char_count = 0;
}
// Display the guild list
if (empty($_GET['name'])) {
//data_dump($guild, false, "guild data");
$guilds = guild_list($config['ServerEngine']);
if (isset($guilds) && !empty($guilds) && $guilds !== false) {
//data_dump($guilds, false, "Guilds");
?>
Logo |
Description |
Guild data |
= 1) {
$url = url("guilds.php?name=". $guild['name']);
?>
|
0) echo ' '.$guild['motd']; ?>
|
|
'. getClock($guild['creationdata'], true) .'';
}
}
?>
Guild list is empty.';?>
= $config['create_guild_level']) {
// If character is offline
if ($char_data['online'] == 0) {
// If character is premium
if ($config['guild_require_premium'] == false || $user_data['premdays'] > 0) {
if (get_character_guild_rank($user_id) < 1) {
if (preg_match("/^[a-zA-Z_ ]+$/", $_POST['guild_name'])) {
// Only allow normal symbols as guild name
if (strlen($_POST['guild_name']) < 31) {
$guildname = sanitize($_POST['guild_name']);
$gid = get_guild_id($guildname);
if ($gid === false) {
create_guild($user_id, $guildname);
// Re-cache the guild list
$guilds = guild_list($config['ServerEngine']);
header('Location: success.php');
exit();
} else echo 'A guild with that name already exist.';
} else echo 'Guild name is to long. It can has to be 30 or less characters long.';
} else echo 'Guild name may only contain a-z, A-Z and spaces.';
} else echo 'You are already in a guild.';
} else echo 'You need a premium account to create a guild.';
} else echo 'Your character must be offline to create a guild.';
} else echo $name .' is level '. $char_data['level'] .'. But you need level '. $config['create_guild_level'] .'+ to create your own guild!';
}
}
// end
?>
$highest_access) $highest_access = $access;
}
}
}
}
}
// Display the specific guild page
?>
".sanitize($_GET['error'])."
";
if ($config['use_guild_logos']): ?>
Rank: |
Name: |
Level: |
Vocation: |
Status: |
';
echo '' . ($rankName !== $player['rank_name'] ? $player['rank_name'] : '') . ' | ';
$rankName = $player['rank_name'];
echo ''. $player['name'] .'';
if (!empty($player['guildnick'])) {
echo ' ('. $player['guildnick'] .')';
}
echo ' | ';
echo ''. $player['level'] .' | ';
echo ''. $config['vocations'][$player['vocation']]['name'] .' | ';
if ($chardata['online'] == 1) echo ' Online | ';
else echo ' Offline | ';
echo '';
}
?>
0): ?>
Invited characters
Name: |
Remove:';
}
// Shuffle through visitor characters
for ($i = 0; $i < $char_count; $i++) {
$exist = false;
// Shuffle through invited character, see if they match your character.
if ($inv_data !== false) foreach ($inv_data as $inv) {
if ($charactersId[$i] == $inv['player_id']) {
$exist = true;
}
}
if ($exist) echo 'Join Guild: | Reject Invitation: | ';
}
?>
';
echo ''. $inv['name'] .' | ';
// Remove invitation
if ($highest_access == 2 || $highest_access == 3) {
?> ';
}
?>
Join guild request sent from wrong account.';
include 'layout/overall/footer.php';
exit();
}
// Join a guild
if ($inv_data !== false) foreach ($inv_data as $inv) {
if ((int)$inv['player_id'] == $joining_player_id) {
$chardata['online'] = (user_is_online_10($joining_player_id)) ? 1 : 0;
if ($chardata['online'] == 0) {
// Ensure player is not already a member of another guild
if (get_character_guild_rank($joining_player_id) === false) {
if (guild_player_join($joining_player_id, (int)$gid)) {
header('Location: guilds.php?name='. $_GET['name']);
exit();
} else echo 'Failed to find guild position representing member.';
} else {
$already_guild = get_player_guild_data($joining_player_id);
$already_guild_name = get_guild_name($already_guild['guild_id']);
echo "You are already {$already_guild['rank_name']} of another guild: {$already_guild_name}.
You need to leave that guild first before you can join another one.";
}
} else echo 'Character must be offline before joining guild.';
}
}
}
// leave guild
if (!empty($_POST['leave_guild'])) {
$name = sanitize($_POST['leave_guild']);
$cidd = user_character_id($name);
$leave_account = (int)user_character_account_id($name);
if ($leave_account !== $session_user_id) {
echo 'Leave guild request sent from wrong account.';
include 'layout/overall/footer.php';
exit();
}
// If character is offline
$chardata['online'] = (user_is_online_10($cidd)) ? 1 : 0;
if ($chardata['online'] == 0) {
guild_player_leave_10($cidd);
header('Location: guilds.php?name='. $_GET['name']);
exit();
} else echo 'Character must be offline first!';
}
// vice leader (and guild leader) actions
if ($highest_access >= 2) {
// Vice-leaders and leaders
// Change Guild Nick
if (!empty($_POST['player_guildnick'])) {
if ($config['guild_allow_nicknames']) {
$p_cid = user_character_id($_POST['player_guildnick']);
$p_guild = get_player_guild_data($p_cid);
if (preg_match("/^[a-zA-Z_ ]+$/", $_POST['guildnick']) || empty($_POST['guildnick'])) {
// Only allow normal symbols as guild nick
$p_nick = sanitize($_POST['guildnick']);
if ($p_guild['guild_id'] == $gid) {
$chardata['online'] = (user_is_online_10($p_cid)) ? 1 : 0;
if ($chardata['online'] == 0) {
update_player_guildnick_10($p_cid, $p_nick);
header('Location: guilds.php?name='. $_GET['name']);
exit();
} else echo 'Character not offline.';
}
} else echo 'Character guild nick may only contain a-z, A-Z and spaces.';
} else echo 'Change guild nickname feature has been disabled.';
}
// Invite character to guild
if (!empty($_POST['invite'])) {
if (user_character_exist($_POST['invite'])) {
// Make sure they are not in another guild
$charid = user_character_id($_POST['invite']);
$membership = mysql_select_single("SELECT `rank_id` FROM `guild_membership` WHERE `player_id`='{$charid}' LIMIT 1;");
if (!$membership) {
$status = false;
if ($inv_data !== false) {
foreach ($inv_data as $inv) {
if ($inv['player_id'] == user_character_id($_POST['invite'])) $status = true;
}
}
foreach ($players as $player) {
if ($player['name'] == $_POST['invite']) $status = true;
}
if ($status == false) {
guild_invite_player($charid, $gid);
header('Location: guilds.php?name='. $_GET['name']);
exit();
} else echo 'That character is already invited(or a member) on this guild.';
} else echo 'That character is already in a guild.';
} else echo 'That character name does not exist.';
}
// Guild Message (motd)
if (!empty($_POST['motd'])) {
$motd = sanitize($_POST['motd']);
mysql_update("UPDATE `guilds` SET `motd`='{$motd}' WHERE `id`='{$gid}' LIMIT 1;");
header('Location: guilds.php?name='. $_GET['name']);
exit();
}
// Remove guild member
if (!empty($_POST['remove_member'])) {
$name = sanitize($_POST['remove_member']);
$cid = user_character_id($name);
$p_guild = get_player_guild_data($cid);
if ($p_guild['guild_id'] == $gid) {
guild_remove_member_10($cid);
header('Location: guilds.php?name='. $_GET['name']);
exit();
}
}
// Create forum guild board
if (!empty($_POST['forumGuildId'])) {
if ($config['forum']['guildboard'] === true) {
$forumExist = mysql_select_single("SELECT `id` FROM `znote_forum` WHERE `guild_id`='{$gid}' LIMIT 1;");
if ($forumExist === false) {
// Insert data
mysql_insert("
INSERT INTO `znote_forum`
(`name`, `access`, `closed`, `hidden`, `guild_id`)
VALUES ('Guild','1','0','0','{$gid}')
;");
echo 'Guild board has been created.
';
} else echo 'Guild board already exist.
';
} else {
echo 'Error: Guild board system is disabled.
';
}
}
// Guildwar actions
if ($config['guildwar_enabled'] === true) {
// Invite another guild to war
if (!empty($_POST['warinvite'])) {
$targetGuild = get_guild_id($_POST['warinvite']);
if ($targetGuild) {
$status = false;
$war_invite = mysql_select_single("SELECT `id` FROM `guilds` WHERE `id` = '$gid';");
if ($war_invite !== false) {
foreach ($war_invite as $inv) {
if ($inv['id'] == $targetGuild) $status = true;
}
}
$check_guild = get_guild_name($gid);
foreach ($check_guild as $guild) {
if ($guild['name'] == $_POST['warinvite']) $status = true;
}
if ((int)$gid === (int)$targetGuild) $status = true;
$wars = mysql_select_multi("
SELECT
`id`, `guild1`, `guild2`, `status`
FROM `guild_wars`
WHERE (`guild1` = '$gid' OR `guild1` = '$targetGuild')
AND (`guild2` = '$gid' OR `guild2` = '$targetGuild')
AND `status` IN (0, 1)
;");
if ($status == false && $wars == false) {
guild_war_invitation($gid, $targetGuild);
$limit = (empty($_POST['limit'])) ? 100 : (int)$_POST['limit'];
mysql_insert("INSERT INTO `znote_guild_wars` (`limit`) VALUES ('$limit');");
header('Location: guilds.php?name='. $_GET['name']);
exit();
} else echo 'This guild has already been invited to war(or you\'re trying to invite your own).';
} else echo 'That guild name does not exist.';
}
if (!empty($_POST['cancel_war_invite'])) {
cancel_war_invitation($_POST['cancel_war_invite'], $gid);
header('Location: guilds.php?name='. $_GET['name']);
exit();
}
if (!empty($_POST['reject_war_invite'])) {
reject_war_invitation($_POST['reject_war_invite'], $gid);
header('Location: guilds.php?name='. $_GET['name']);
exit();
}
if (!empty($_POST['accept_war_invite'])) {
accept_war_invitation($_POST['accept_war_invite'], $gid);
header('Location: guilds.php?name='. $_GET['name']);
exit();
}
}
$members = count_guild_members($gid);
$ranks = get_guild_rank_data($gid);
// Form to create guild board
if ($config['forum']['guildboard'] === true && $config['forum']['enabled'] === true) {
$forumExist = mysql_select_single("SELECT `id` FROM `znote_forum` WHERE `guild_id`='$gid' LIMIT 1;");
if ($forumExist === false) {
?>
';
}
}
?>
1): ?>
Character not offline.';
}
}
// Disband guild
if (!empty($_POST['disband'])) {
//$gidd = (int)$_POST['disband'];
$members = get_guild_players($gid);
$online = false;
// First figure out if anyone are online.
foreach ($members as $member) {
$chardata['online'] = (user_is_online_10(user_character_id($member['name']))) ? 1 : 0;
if ($chardata['online'] == 1) {
$online = true;
}
}
if (!$online) {
// Then remove guild rank from every player.
foreach ($members as $member)
guild_player_leave_10(user_character_id($member['name']));
// Remove all guild invitations to this guild
if ($inv_count > 0)
guild_remove_invites($gid);
// Then remove the guild itself.
guild_delete($gid);
header('Location: success.php');
exit();
} else echo 'All members must be offline to disband the guild.';
}
// Change guild leader
if (!empty($_POST['new_leader'])) {
$new_leader = (int)$_POST['new_leader'];
$old_leader = guild_leader($gid);
$online = false;
$newData['online'] = (user_is_online_10($new_leader)) ? 1 : 0;
$oldData['online'] = (user_is_online_10($old_leader)) ? 1 : 0;
if ($newData['online'] == 1 || $oldData['online'] == 1) $online = true;
if ($online == false) {
if (guild_change_leader($new_leader, $old_leader)) {
header('Location: guilds.php?name='. $_GET['name']);
exit();
} else echo 'Something went wrong when attempting to change leadership.';
} else echo 'The new and old leader must be offline to change leadership.';
}
// Change guild ranks
if (!empty($_POST['change_ranks'])) {
//$c_gid = (int)$_POST['change_ranks'];
$c_ranks = get_guild_rank_data($gid);
$rank_data = array();
$rank_ids = array();
// Feed new rank data
foreach ($c_ranks as $rank) {
$tmp = 'rank_name!'. $rank['level'];
if (!empty($_POST[$tmp])) {
$rank_data[$rank['level']] = sanitize($_POST[$tmp]);
$rank_ids[$rank['level']] = $rank['id'];
}
}
// Change guild rank name.
foreach ($rank_data as $level => $name) {
$rid = (int)$rank_ids[$level];
$name = sanitize($name);
mysql_update("UPDATE `guild_ranks` SET `name`='{$name}' WHERE `id`={$rid}");
}
header('Location: guilds.php?name='. $_GET['name']);
exit();
}
?>
1): ?>
Guild War Management:
War overview:
Attacker: |
Defender: |
status: |
started: |
|
|
|
|
- Visit Guild Board