From deea5eeaab09b29bd74c5dc5ccee1f2386a79038 Mon Sep 17 00:00:00 2001 From: Stefan Brannfjell Date: Mon, 9 Sep 2013 03:46:07 +0200 Subject: [PATCH] Normal guild functionality (Create, invite, leave, kick, promote, change, view) should work on TFS 1.0. --- engine/function/users.php | 165 +++++++++++++++++++++----------------- guilds.php | 56 ++++++++----- 2 files changed, 128 insertions(+), 93 deletions(-) diff --git a/engine/function/users.php b/engine/function/users.php index bddeab5..e37fff4 100644 --- a/engine/function/users.php +++ b/engine/function/users.php @@ -273,7 +273,11 @@ function shop_account_gender_tickets($accid) { // function guild_remove_member($cid) { $cid = (int)$cid; - mysql_query("UPDATE `players` SET `rank_id`='0' WHERE `id`=$cid") or die(mysql_error()); + mysql_update("UPDATE `players` SET `rank_id`='0' WHERE `id`=$cid"); +} +function guild_remove_member_10($cid) { + $cid = (int)$cid; + mysql_update("DELETE FROM `guild_membership` WHERE `player_id`='$cid' LIMIT 1;"); } // Change guild rank name. @@ -290,7 +294,6 @@ function guild_change_leader($nCid, $oCid) { $oCid = (int)$oCid; $gid = guild_leader_gid($oCid); $ranks = get_guild_rank_data($gid); - $leader_rid = 0; $vice_rid = 0; @@ -306,9 +309,15 @@ function guild_change_leader($nCid, $oCid) { // Verify that we found the rank ids for vice leader and leader. if ($status) { + // Update players and set their new rank id - mysql_query("UPDATE `players` SET `rank_id`='$leader_rid' WHERE `id`=$nCid") or die(mysql_error()); - mysql_query("UPDATE `players` SET `rank_id`='$vice_rid' WHERE `id`=$oCid") or die(mysql_error()); + if (config('TFSVersion') !== 'TFS_10') { + mysql_update("UPDATE `players` SET `rank_id`='$leader_rid' WHERE `id`=$nCid LIMIT 1;"); + mysql_update("UPDATE `players` SET `rank_id`='$vice_rid' WHERE `id`=$oCid LIMIT 1;"); + } else { + 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); @@ -353,36 +362,50 @@ function guild_delete($gid) { // Player leave guild function guild_player_leave($cid) { $cid = (int)$cid; - mysql_query("UPDATE `players` SET `rank_id`='0' WHERE `id`=$cid"); + mysql_update("UPDATE `players` SET `rank_id`='0' WHERE `id`=$cid LIMIT 1;"); +} +function guild_player_leave_10($cid) { + $cid = (int)$cid; + mysql_delete("DELETE FROM `guild_membership` WHERE `player_id`='$cid' LIMIT 1;"); } // Player join guild function guild_player_join($cid, $gid) { - // Get rank data - $ranks = get_guild_rank_data($gid); - - // Locate rank id for regular member position in this guild - $rid = false; - foreach ($ranks as $rank) { - if ($rank['level'] == 1) $rid = $rank['id']; - } - - // Sanitize cid $cid = (int)$cid; - + $gid = (int)$gid; // Create a status we can return depending on results. $status = false; - - // Add to guild if rank id was found: - if ($rid != false) { - // Remove the invite: - guild_remove_invitation($cid, $gid); - - // Add to guild: - mysql_query("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid") or die(mysql_error()); - $status = true; + + if (config('TFSVersion') !== 'TFS_10') { + // Get rank data + $ranks = get_guild_rank_data($gid); + // Locate rank id for regular member position in this guild + $rid = false; + foreach ($ranks as $rank) { + if ($rank['level'] == 1) $rid = $rank['id']; + } + // Add to guild if rank id was found: + if ($rid != false) { + // Remove the invite: + guild_remove_invitation($cid, $gid); + // Add to guild: + mysql_update("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid"); + $status = true; + } + + } else { + // 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 + guild_remove_invitation($cid, $gid); + // 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; } - return $status; } @@ -390,7 +413,7 @@ function guild_player_join($cid, $gid) { function guild_remove_invitation($cid, $gid) { $cid = (int)$cid; $gid = (int)$gid; - mysql_query("DELETE FROM `guild_invites` WHERE `player_id`='$cid' AND `guild_id`='$gid';"); + mysql_delete("DELETE FROM `guild_invites` WHERE `player_id`='$cid' AND `guild_id`='$gid';"); } // Invite character to guild @@ -403,19 +426,19 @@ function guild_invite_player($cid, $gid) { // Gets a list of invited players to a particular guild. function guild_invite_list($gid) { $gid = (int)$gid; - $query = mysql_query("SELECT `player_id`, `guild_id` FROM `guild_invites` WHERE `guild_id`='$gid'"); - $array = array(); - while($row = mysql_fetch_assoc($query)) { - $array[] = $row; - } - return !empty($array) ? $array : false; + return mysql_select_multi("SELECT `player_id`, `guild_id` FROM `guild_invites` WHERE `guild_id`='$gid';"); } // Update player's guild position function update_player_guild_position($cid, $rid) { $cid = (int)$cid; $rid = (int)$rid; - mysql_query("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid") or die(mysql_error()); + mysql_update("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid"); +} +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"); } // Get guild data, using guild id. @@ -436,33 +459,37 @@ function create_guild($cid, $name) { $time = time(); // Create the guild - mysql_query("INSERT INTO `guilds` (`name`, `ownerid`, `creationdata`, `motd`) VALUES ('$name', '$cid', '$time', 'The guild has been created!')") or die(mysql_error()); - echo '
Created guild.'; + mysql_insert("INSERT INTO `guilds` (`name`, `ownerid`, `creationdata`, `motd`) VALUES ('$name', '$cid', '$time', 'The guild has been created!');"); + // Get guild id $gid = get_guild_id($name); - echo '
Gotten guild id: '. $gid; // Get rank id for guild leader - $rid = mysql_result(mysql_query("SELECT `id` FROM `guild_ranks` WHERE `guild_id`='$gid' AND `level`='3';"), 0, 'id'); - echo '
Gotten rank id: '. $rid; - + $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_query("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid") or die(mysql_error()); - echo '
Player uodated'; + if (config('TFSVersion') !== 'TFS_10') mysql_update("UPDATE `players` SET `rank_id`='$rid' WHERE `id`='$cid' LIMIT 1;"); + else mysql_insert("INSERT INTO `guild_membership` (`player_id`, `guild_id`, `rank_id`, `nick`) VALUES ('$cid', '$gid', '$rid', '');"); } // Search player table on cid for his rank_id, returns rank_id function get_character_guild_rank($cid) { $cid = (int)$cid; - $rid = mysql_result(mysql_query("SELECT `rank_id` FROM `players` WHERE `id`='$cid';"), 0, 'rank_id'); - if ($rid > 0) return $rid; - else return false; + if (config('TFSVersion') !== 'TFS_10') { + $rid = mysql_result(mysql_query("SELECT `rank_id` FROM `players` WHERE `id`='$cid';"), 0, 'rank_id'); + return ($rid > 0) ? $rid : false; + } else { + $data = mysql_select_single("SELECT `rank_id` FROM `guild_membership` WHERE `player_id`='$cid' LIMIT 1;"); + return ($data !== false) ? $data['rank_id'] : false; + } } // Get a player guild rank, using his rank_id function get_player_guild_rank($rank_id) { $rank_id = (int)$rank_id; - return mysql_result(mysql_query("SELECT `name` FROM `guild_ranks` WHERE `id`=$rank_id;"), 0, 'name'); + $data = mysql_select_single("SELECT `name` FROM `guild_ranks` WHERE `id`=$rank_id LIMIT 1;"); + return ($data !== false) ? $data['name'] : false; } // Get a player guild position ID, using his rank_id @@ -474,17 +501,15 @@ function get_guild_position($rid) { // Get a players rank_id, guild_id, rank_level(ID), rank_name(string), using cid(player id) function get_player_guild_data($cid) { $cid = (int)$cid; - $rid = mysql_result(mysql_query("SELECT `rank_id` FROM `players` WHERE `id`='$cid';"), 0, 'rank_id'); - $gid = mysql_result(mysql_query("SELECT `guild_id` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'guild_id'); - $rl = mysql_result(mysql_query("SELECT `level` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'level'); - $rn = mysql_result(mysql_query("SELECT `name` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'name'); - $data = array( - 'rank_id' => $rid, - 'guild_id' => $gid, - 'rank_level' => $rl, - 'rank_name' => $rn, - ); - return $data; + if (config('TFSVersion') !== 'TFS_10') $playerdata = mysql_select_single("SELECT `rank_id` FROM `players` WHERE `id`='$cid' LIMIT 1;"); + else $playerdata = mysql_select_single("SELECT `rank_id` FROM `guild_membership` WHERE `player_id`='$cid' LIMIT 1;"); + if ($playerdata !== false) { + $rankdata = mysql_select_single("SELECT `guild_id`, `level` AS `rank_level`, `name` AS `rank_name` FROM `guild_ranks` WHERE `id`='". $playerdata['rank_id'] ."' LIMIT 1;"); + if ($rankdata !== false) { + $rankdata['rank_id'] = $playerdata['rank_id']; + return $rankdata; + } else return false; + } else return false; } // Returns guild name of guild id @@ -506,30 +531,26 @@ function get_guild_id($name) { // Get complete list of guilds function get_guilds_list() { - $query = mysql_query("SELECT `id`, `name`, `creationdata` FROM `guilds` ORDER BY `name`;"); - $array = array(); - while($row = mysql_fetch_assoc($query)) { - $array[] = $row; - } - return !empty($array) ? $array : false; + return mysql_select_multi("SELECT `id`, `name`, `creationdata` FROM `guilds` ORDER BY `name`;"); } // Get array of player data related to a guild. function get_guild_players($gid) { $gid = (int)$gid; // Sanitizing the parameter id - $query = mysql_query("SELECT p.rank_id, p.name, p.level, p.vocation FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id =$gid"); - $array = array(); - while ($row = mysql_fetch_assoc($query)) { - $array[] = $row; - } - - return !empty($array) ? $array : false; + if (config('TFSVersion') !== 'TFS_10') return mysql_select_multi("SELECT p.rank_id, p.name, p.level, p.vocation FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id ='$gid';"); + else return mysql_select_multi("SELECT p.id, p.name, p.level, p.vocation, gm.rank_id FROM players AS p LEFT JOIN guild_membership AS gm ON gm.player_id = p.id WHERE gm.guild_id = '$gid';"); } // Returns total members in a guild (integer) function count_guild_members($gid) { $gid = (int)$gid; - return mysql_result(mysql_query("SELECT COUNT(p.id) AS total FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id =$gid"), 0, 'total'); + if (config('TFSVersion') !== 'TFS_10') { + $data = mysql_select_single("SELECT COUNT(p.id) AS total FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id =$gid"); + return ($data !== false) ? $data['total'] : false; + } else { + $data = mysql_select_single("SELECT COUNT('guild_id') AS `total` FROM `guild_membership` WHERE `guild_id`='$gid';"); + return ($data !== false) ? $data['total'] : false; + } } // @@ -840,8 +861,6 @@ function user_character_list($account_id) { } $characters[$i]['online'] = online_id_to_name($characters[$i]['online']); // 0 to "offline", 1 to "ONLINE". - // deprecated, znote_players now has hide_char - //$array[$i][6] = hide_char_to_name($array[$i][6]); // 0 to "visible", 1 to "hidden". } } diff --git a/guilds.php b/guilds.php index d81df65..5585794 100644 --- a/guilds.php +++ b/guilds.php @@ -56,7 +56,11 @@ if (user_logged_in() === true) { //code here $name = sanitize($_POST['selected_char']); $user_id = user_character_id($name); - $char_data = user_character_data($user_id, 'level', 'online'); + if ($config['TFSVersion'] !== 'TFS_10') $char_data = user_character_data($user_id, 'level', 'online'); + else { + $char_data = user_character_data($user_id, 'level'); + $char_data['online'] = (user_is_online_10($user_id)) ? 1 : 0; + } // If character level is high enough if ($char_data['level'] >= $config['create_guild_level']) { @@ -148,7 +152,8 @@ if (user_logged_in() === true) { $rid = $player['rank_id']; for ($i = 0; $i < $char_count; $i++) { - $data = user_character_data(user_character_id($characters[$i]), 'rank_id'); + if ($config['TFSVersion'] !== 'TFS_10') $data = user_character_data(user_character_id($characters[$i]), 'rank_id'); + else $data = mysql_select_single("SELECT `rank_id` FROM `guild_membership` WHERE `player_id`='". user_character_id($characters[$i]) ."' LIMIT 1;"); if ($data['rank_id'] == $rid) { $access = get_guild_position($data['rank_id']); if ($access == 2 || $access == 3) { //If player got access level vice leader or leader @@ -173,7 +178,8 @@ if (user_logged_in() === true) { '; echo ''. get_player_guild_rank($player['rank_id']) .''; echo ''. $player['name'] .''; @@ -199,7 +205,7 @@ if (user_logged_in() === true) { for ($i = 0; $i < $char_count; $i++) { $exist = false; // Shuffle through invited character, see if they match your character. - foreach ($inv_data as $inv) { + if ($inv_data !== false) foreach ($inv_data as $inv) { if (user_character_id($characters[$i]) == $inv['player_id']) { $exist = true; } @@ -210,7 +216,7 @@ if (user_logged_in() === true) { '; echo ''. $uninv['name'] .''; @@ -276,7 +282,8 @@ if (user_logged_in() === true) { // foreach ($inv_data as $inv) { if ($inv['player_id'] == $_POST['joinguild']) { - $chardata = user_character_data($_POST['joinguild'], 'online'); + if ($config['TFSVersion'] !== 'TFS_10') $chardata = user_character_data($_POST['joinguild'], 'online'); + else $chardata['online'] = (user_is_online_10($_POST['joinguild'])) ? 1 : 0; if ($chardata['online'] == 0) { if (guild_player_join($_POST['joinguild'], $gid)) { header('Location: guilds.php?name='. $_GET['name']); @@ -291,9 +298,11 @@ if (user_logged_in() === true) { $name = sanitize($_POST['leave_guild']); $cidd = user_character_id($name); // If character is offline - $chardata = user_character_data($cidd, 'online'); + if ($config['TFSVersion'] !== 'TFS_10') $chardata = user_character_data($cidd, 'online'); + else $chardata['online'] = (user_is_online_10($cidd)) ? 1 : 0; if ($chardata['online'] == 0) { - guild_player_leave($cidd); + if ($config['TFSVersion'] !== 'TFS_10') guild_player_leave($cidd); + else guild_player_leave_10($cidd); header('Location: guilds.php?name='. $_GET['name']); exit(); } else echo 'Character must be offline first!'; @@ -311,9 +320,11 @@ if ($highest_access >= 2) { if ($p_guild['guild_id'] == $gid) { // Do the magic. - $chardata = user_character_data($p_cid, 'online'); + if ($config['TFSVersion'] !== 'TFS_10') $chardata = user_character_data($p_cid, 'online'); + else $chardata['online'] = (user_is_online_10($p_cid)) ? 1 : 0; if ($chardata['online'] == 0) { - update_player_guild_position($p_cid, $p_rid); + if ($config['TFSVersion'] !== 'TFS_10') update_player_guild_position($p_cid, $p_rid); + else update_player_guild_position_10($p_cid, $p_rid); header('Location: guilds.php?name='. $_GET['name']); exit(); } else echo 'Character not offline.'; @@ -349,7 +360,8 @@ if ($highest_access >= 2) { // First figure out if anyone are online. foreach ($members as $member) { - $chardata = user_character_data(user_character_id($member['name']), 'online'); + if ($config['TFSVersion'] !== 'TFS_10') $chardata = user_character_data(user_character_id($member['name']), 'online'); + else $chardata['online'] = (user_is_online_10(user_character_id($member['name']))) ? 1 : 0; if ($chardata['online'] == 1) { $online = true; } @@ -357,10 +369,8 @@ if ($highest_access >= 2) { if (!$online) { // Then remove guild rank from every player. - foreach ($members as $member) { - //$chardata = user_character_data(user_character_id($member['name']), 'online'); - guild_player_leave(user_character_id($member['name'])); - } + if ($config['TFSVersion'] !== 'TFS_10') foreach ($members as $member) guild_player_leave(user_character_id($member['name'])); + else 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($gidd); @@ -377,8 +387,13 @@ if ($highest_access >= 2) { $old_leader = guild_leader($gid); $online = false; - $newData = user_character_data($new_leader, 'online'); - $oldData = user_character_data($old_leader, 'online'); + if ($config['TFSVersion'] !== 'TFS_10') { + $newData = user_character_data($new_leader, 'online'); + $oldData = user_character_data($old_leader, 'online'); + } else { + $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) { @@ -416,7 +431,8 @@ if ($highest_access >= 2) { $name = sanitize($_POST['remove_member']); $cid = user_character_id($name); - guild_remove_member($cid); + if ($config['TFSVersion'] !== 'TFS_10') guild_remove_member($cid); + else guild_remove_member_10($cid); header('Location: guilds.php?name='. $_GET['name']); exit(); } @@ -570,7 +586,7 @@ if ($highest_access >= 2) { $pl_data = get_player_guild_data(user_character_id($player['name'])); if ($pl_data['rank_level'] != 3) { echo ''; - } + } } ?> @@ -585,7 +601,7 @@ if ($highest_access >= 2) { ?>