diff --git a/engine/XML/stages.xml b/engine/XML/stages.xml new file mode 100644 index 0000000..beb1e51 --- /dev/null +++ b/engine/XML/stages.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/engine/function/general.php b/engine/function/general.php index 90baa8d..1cc9754 100644 --- a/engine/function/general.php +++ b/engine/function/general.php @@ -40,23 +40,6 @@ function data_dump($print = false, $var = false, $title = false) { echo '
'; } -function getConfigLua() { - $filename = config('server_path') . '/config.lua'; - if (!file_exists($filename)) { - return; - } - $contents = file_get_contents($filename); - $array = explode("\n", $contents); - $output = []; - foreach ($array as $arr) { - if (strpos($arr, '--') !== 0) { - $output[] = $arr; - } - } - $ini = implode("\n", $output); - return parse_ini_string($ini); -} - function accountAccess($accountId, $TFS) { $accountId = (int)$accountId; $access = 0; diff --git a/serverinfo.php b/serverinfo.php index aee45ec..78423ee 100644 --- a/serverinfo.php +++ b/serverinfo.php @@ -1,70 +1,346 @@ - + 0) + $duration['hour'] = ($duration['day'] - (int)$duration['day']) * 24; + if (isset($duration['hour'])) { + if (($duration['hour'] - (int)$duration['hour']) > 0) + $duration['minute'] = ($duration['hour'] - (int)$duration['hour']) * 60; + if (isset($duration['minute'])) { + if (($duration['minute'] - (int)$duration['minute']) > 0) + $duration['second'] = ($duration['minute'] - (int)$duration['minute']) * 60; + } + } + $tmp = array(); + foreach ($duration as $type => $value) { + if ($value >= 1) { + $pluralType = ((int)$value === 1) ? $type : $type . 's'; + if ($type !== 'second') $tmp[] = (int)$value . " $pluralType"; + else $tmp[] = $value . " $pluralType"; + } + } + return implode(', ', $tmp); +} +function toYesNo($bool) { + return ($bool) ? 'Yes' : 'No'; +} +// Loading stage list +$cache = new Cache('engine/cache/stages'); +if (user_logged_in() && is_admin($user_data)) { + if (isset($_GET['loadStages'])) { + echo "

Logged in as admin, loading engine/XML/stages.xml file and updating cache.

"; + // STAGES XML TO PHP ARRAY + $stagesXML = simplexml_load_file("engine/XML/stages.xml"); + if ($stagesXML !== false) { + $stagesData = array(); + // Load config ( stages enabled or disabled) + 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"; + } + // Populate XML assoc array + $stagesData['stages'][] = $rowData; + } + $cache->setContent($stagesData); + $cache->save(); + } + } else { + $stagesData = $cache->load(); + ?> +
+ +
+ load(); +} +// End loading stage list + +// Loading config.lua +$cache = new Cache('engine/cache/luaconfig'); +if (user_logged_in() && is_admin($user_data)) { + if (isset($_POST['loadConfig']) && isset($_POST['configData'])) { + // This will be the populated array with filtered relevant data + $luaConfig = array(); + // Explode the string into string array by newline + $rawLua = explode("\n", $_POST['configData']); + // Clean up the array + $length = count($rawLua); + for ($i = 0; $i < $length; $i++) { + // We only care about lines that have the = symbol + if (strpos($rawLua[$i], '=') !== false) { + // Look for inline Lua comments and remove them + $comment = strpos($rawLua[$i], '--'); + if ($comment !== false) + $rawLua[$i] = substr($rawLua[$i], 0, $comment); + $rawLua[$i] = trim($rawLua[$i]); // Remove uneccesary whitespace + // If for some reason the line is empty, ignore it. (Could be a "=" symbol inside an inline Lua comment that we sliced away) + if (!empty($rawLua[$i])) { + // Built a relevant data array + $data = explode('=', $rawLua[$i]); + // 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' + ); + 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] . ');'); + } else { + // Type cast: string, just remove the quote we earlier used to determine if it was a string. + $data[1] = str_replace('"', '', $data[1]); + } + } + // Add the results + $luaConfig[$data[0]] = $data[1]; + } // End whitelisted row + } // End not empty row + } // Line has \= symbol + } // for loop + $cache->setContent($luaConfig); + $cache->save(); + } else { + $luaConfig = $cache->load(); + ?> +
+
+
+
+ +
+ load(); +} +// End loading config.lua + +$stages = false; + +// Render HTML +?>

Server Information

-Here you will find all basic information about '.$config['site_title'].''; ?> -Here you will find all basic information about

-// Check if PATH is correct -$lua_path = getConfigLua(); -if ($lua_path && is_array($lua_path)) { - if (!file_exists($config['server_path'].'/data/XML/stages.xml')) { - echo 'Couldn\'t locate stages.xml'; - return; - } + +

Server rates

+ + + + + + + + + + + + + + + +
Minium levelMaximun levelMultiplier
x
+ - $stages_path = simplexml_load_file($config['server_path'].'/data/XML/stages.xml'); - echo '

Server rates

'; - if ($stages_path->config['enabled'] != 0) { - // Stages are beeing used - echo " - "; + +
Minium levelMaximun levelMultiplier
+ + + + + + + + + + + + + + + + + + +
Experience rateSkills rateMagic rateLoot rate
- foreach ($stages_path->children()->stage as $stages) { +

Miscellaneous information

+ + + + + + + + + + + + + + + + + + +
Connection information
Client
IP
Port
- if($stages['maxlevel'] === NULL) { - echo '
'.$stages['minlevel'].'
Infinite
x'.$stages['multiplier'].'
'; - } else { - echo '
'.$stages['minlevel'].'
'.$stages['maxlevel'].'
x'.$stages['multiplier'].'
'; - } - } - echo ''; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - } else { - // Not using stages - echo "
PvP information
World type
Hotkey aimbot
Protection level
Kills to red skull
Kills to black skull
Remove rune charges
Time to decrease frags
Experience by killing players
- - -
Experience rate
x".$lua_path['rateExp']."
"; - } - echo " - - -
Skills rateMagic rateLoot rate
x".$lua_path['rateSkill']."
x".$lua_path['rateMagic']."
x".$lua_path['rateLoot']."
"; + + + Experience gain kill treshhold: + % of your level + + - // General info - $information = array( - 'World type' => $lua_path['worldType'], - 'Protection level' => $lua_path['protectionLevel'], - 'Kills to red skull' => $lua_path['killsToRedSkull'], - 'Kills to black skull' => $lua_path['killsToBlackSkull'], - 'Remove ammo' => $lua_path['removeAmmoWhenUsingDistanceWeapon'], - 'Remove runes' => $lua_path['removeChargesFromRunes'], - 'Time to decrease frags' => $lua_path['timeToDecreaseFrags'], - 'House rent period' => $lua_path['houseRentPeriod'], - 'AFK Kickout minutes' => $lua_path['kickIdlePlayerAfterMinutes'], - 'Location' => $lua_path['location'], - 'Owner name' => $lua_path['ownerName'] - ); + + White skull duration + + + + Protection zone lock (non lethal attack) + + + + Stair jump exhaust + + + + - echo "

Server general information

'; - -} else { - echo '

Cannot find the file config.lua

'; -} - -include 'layout/overall/footer.php'; ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Other information
Free premium
House rent period
House SQM price gp
AFK kickout
One player online per account
Max players online server limit 0) ? $luaConfig['maxPlayers'] : 'Unlimited'; ?>
Allow outfit change
Stamina system
Premium to add items to market
Market offer duration
+ +

The server administrator has yet to import server information to this page.

+ \ No newline at end of file