From fbca1b876ba02e469b3ea0188e3856ecb9b015c3 Mon Sep 17 00:00:00 2001 From: Znote Date: Thu, 16 Feb 2017 06:53:21 +0100 Subject: [PATCH] serverinfo.php TFS 0.3/4 support. --- serverinfo.php | 175 +++++++++++++++++++++++++++++++------------------ 1 file changed, 112 insertions(+), 63 deletions(-) diff --git a/serverinfo.php b/serverinfo.php index 78423ee..907242a 100644 --- a/serverinfo.php +++ b/serverinfo.php @@ -35,19 +35,34 @@ if (user_logged_in() && is_admin($user_data)) { if ($stagesXML !== false) { $stagesData = array(); // Load config ( stages enabled or disabled) - foreach ($stagesXML->config->attributes() as $name => $value) { - $stagesData["$name"] = "$value"; - } + if ($config['TFSVersion'] == 'TFS_10') + foreach ($stagesXML->config->attributes() as $name => $value) + $stagesData["$name"] = "$value"; // Load stage levels // Each stage XML object - foreach ($stagesXML->stage as $stage) { - $rowData = array(); - // Each attribute name and values on current stage object - foreach ($stage->attributes() as $name => $value) { - $rowData["$name"] = "$value"; + if ($config['TFSVersion'] == 'TFS_10') { + foreach ($stagesXML->stage as $stage) { + $rowData = array(); + // Each attribute name and values on current stage object + foreach ($stage->attributes() as $name => $value) { + $rowData["$name"] = "$value"; + } + // Populate XML assoc array + $stagesData['stages'][] = $rowData; + } + } else { + // TFS 0.3/4 + foreach ($stagesXML->world as $world) { + foreach ($world->stage as $stage) { + $rowData = array(); + // Each attribute name and values on current stage object + foreach ($stage->attributes() as $name => $value) { + $rowData["$name"] = "$value"; + } + // Populate XML assoc array + $stagesData['stages'][] = $rowData; + } } - // Populate XML assoc array - $stagesData['stages'][] = $rowData; } $cache->setContent($stagesData); $cache->save(); @@ -70,6 +85,54 @@ if (user_logged_in() && is_admin($user_data)) { $cache = new Cache('engine/cache/luaconfig'); if (user_logged_in() && is_admin($user_data)) { if (isset($_POST['loadConfig']) && isset($_POST['configData'])) { + // Whitelist for values we are interested in + $whitelist = array( // Etc 'maxPlayers' + 'worldType', + 'hotkeyAimbotEnabled', + 'protectionLevel', + 'killsToRedSkull', + 'killsToBlackSkull', + 'pzLocked', + 'removeChargesFromRunes', + 'timeToDecreaseFrags', + 'whiteSkullTime', + 'stairJumpExhaustion', + 'experienceByKillingPlayers', + 'expFromPlayersLevelRange', + 'loginProtocolPort', + 'maxPlayers', + 'motd', + 'onePlayerOnlinePerAccount', + 'deathLosePercent', + 'housePriceEachSQM', + 'houseRentPeriod', + 'marketOfferDuration', + 'premiumToCreateMarketOffer', + 'maxMarketOffersAtATimePerPlayer', + 'allowChangeOutfit', + 'freePremium', + 'kickIdlePlayerAfterMinutes', + 'rateExp', + 'rateSkill', + 'rateLoot', + 'rateMagic', + 'rateSpawn', + 'staminaSystem', + 'experienceStages' + ); + // TFS 0.3/4 compatibility, convert config value names to TFS 1.0 values + $tfs03to10 = array( + // TFS 0.3/4 TFS 1.0 + 'rateExperience' => 'rateExp', + 'loginPort' => 'loginProtocolPort', + 'rateExperienceFromPlayers' => 'experienceByKillingPlayers', + 'dailyFragsToRedSkull' => 'killsToRedSkull', + 'dailyFragsToBlackSkull' => 'killsToBlackSkull', + 'removeRuneCharges' => 'removeChargesFromRunes', + 'stairhopDelay' => 'stairJumpExhaustion', + 'housePriceEachSquare' => 'housePriceEachSQM', + 'idleKickTime' => 'kickIdlePlayerAfterMinutes', + ); // This will be the populated array with filtered relevant data $luaConfig = array(); // Explode the string into string array by newline @@ -91,48 +154,26 @@ if (user_logged_in() && is_admin($user_data)) { // Remove uneccesary whitespace $data[0] = trim($data[0]); $data[1] = trim($data[1]); - // Whitelist for values we are interested in - $whitelist = array( // Etc 'maxPlayers' - 'worldType', - 'hotkeyAimbotEnabled', - 'protectionLevel', - 'killsToRedSkull', - 'killsToBlackSkull', - 'pzLocked', - 'removeChargesFromRunes', - 'timeToDecreaseFrags', - 'whiteSkullTime', - 'stairJumpExhaustion', - 'experienceByKillingPlayers', - 'expFromPlayersLevelRange', - 'loginProtocolPort', - 'maxPlayers', - 'motd', - 'onePlayerOnlinePerAccount', - 'deathLosePercent', - 'housePriceEachSQM', - 'houseRentPeriod', - 'marketOfferDuration', - 'premiumToCreateMarketOffer', - 'maxMarketOffersAtATimePerPlayer', - 'allowChangeOutfit', - 'freePremium', - 'kickIdlePlayerAfterMinutes', - 'rateExp', - 'rateSkill', - 'rateLoot', - 'rateMagic', - 'rateSpawn', - 'staminaSystem' - ); + // TFS 0.3/4 compatibility + if (isset($tfs03to10[$data[0]])) { + $data[0] = $tfs03to10[$data[0]]; + if (isset($tfs03to10[$data[1]])) { + $data[1] = $tfs03to10[$data[1]]; + } + } if (in_array($data[0], $whitelist)) { // Type cast: boolean if (in_array(strtolower($data[1]), array('true', 'false'))) { $data[1] = (strtolower($data[1]) === 'true') ? true : false; } else { - // Type cast: integer if (strpos($data[1], '"') === false) { - $data[1] = eval('return (' . $data[1] . ');'); + if (!in_array($data[1], array_keys($luaConfig))) { + // Type cast: integer + $data[1] = eval('return (' . $data[1] . ');'); + } else { + // Type cast: Load value from another key + $data[1] = (isset($luaConfig[$data[1]])) ? $luaConfig[$data[1]] : null; + } } else { // Type cast: string, just remove the quote we earlier used to determine if it was a string. $data[1] = str_replace('"', '', $data[1]); @@ -170,7 +211,7 @@ $stages = false;

Server Information

Here you will find all basic information about

- +

Server rates

@@ -262,10 +303,12 @@ $stages = false; - - - - + + + + + + @@ -326,18 +369,24 @@ $stages = false; - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
Remove rune charges
Time to decrease frags
Time to decrease frags
Experience by killing players Allow outfit change
Stamina system
Premium to add items to market
Market offer duration
Stamina system
Premium to add items to market
Market offer duration