Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once dirname(dirname(__FILE__)) . "/base.php";
- require_once dirname(dirname(__FILE__)) . "/thirdparty/SourceQuery/bootstrap.php";
- use xPaw\SourceQuery\SourceQuery;
- $servers = array(
- "103.25.58.139" => array( // purgery sydney
- "27960",
- "27961",
- "27962",
- "27963",
- "27964",
- "27965",
- "27966",
- "27967",
- "27968",
- "27970",
- "27971",
- "27972",
- ),
- "119.252.27.101" => array( // purgery adelaide
- "27960",
- "27961",
- "27962",
- "27963",
- "27964",
- "27965",
- "27966",
- "27967",
- "27968",
- "27969",
- ),
- "45.114.116.189" => array( // cage
- "27960",
- "27961",
- "27962",
- "27963",
- "27964",
- ),
- "125.63.61.78" => array( // cage
- "27960",
- "27961",
- "27962",
- "27963",
- "27964",
- ),
- );
- function isTeamGame($info) {
- $team_gametypes = array(
- "Attack and Defend",
- "Capture the Flag",
- "Clan Arena",
- "Domination",
- "Freeze Tag",
- "Harvester",
- "One Flag CTF",
- "Red Rover",
- "Team Deathmatch",
- "Overload",
- );
- $free_gametypes = array(
- "Duel",
- "Free For All",
- "Race",
- );
- $gametype = $info["ModDesc"];
- if (in_array($gametype, $team_gametypes)) {
- return true;
- } elseif (in_array($gametype, $free_gametypes)) {
- return false;
- } else {
- return ("Error while determining team gametype: " . $gametype);
- }
- }
- function getGamestateNicely($rules) {
- if ($rules["g_gameState"] == "IN_PROGRESS") {
- return "In Progress";
- } elseif ($rules["g_gameState"] == "PRE_GAME") {
- return "Warm Up";
- } elseif ($rules["g_gameState"] == "COUNT_DOWN") {
- return "Count Down";
- } else {
- return $rules["g_gameState"];
- }
- }
- function colourNames($players) {
- foreach ($players as &$player) {
- $player["ColouredName"] = Functions::quakeColourConvert($player["Name"]);
- }
- return $players;
- }
- function filterData($info, $players, $rules) {
- return array(
- "ServerName" => trim($info["HostName"]),
- "ServerTags" => $info["GameTags"],
- "ServerTagsArray" => explode(",", $info["GameTags"]),
- "GameType" => $info["ModDesc"],
- "GameTypeID" => $rules["g_gametype"],
- "Map" => $info["Map"],
- "SteamID" => $info["SteamID"],
- "CurrentPlayers" => $info["Players"],
- "MaxPlayers" => $info["MaxPlayers"],
- "NumPlayers" => ($info["Players"] . "/" . $info["MaxPlayers"]),
- "PlayersInfo" => colourNames($players),
- "RedScore" => $rules["g_redScore"],
- "BlueScore" => $rules["g_blueScore"],
- "TeamScores" => ("<font color=\"red\">" . $rules["g_redScore"] . "</font><font color=\"black\">-</font><font color=\"blue\">" . $rules["g_blueScore"] . "</font>"),
- "TeamGame" => isTeamGame($info),
- "Fraglimit" => $rules["fraglimit"],
- "Capturelimit" => $rules["capturelimit"],
- "Timelimit" => $rules["timelimit"],
- "Roundlimit" => $rules["roundlimit"],
- "Scorelimit" => $rules["scorelimit"],
- "TeamSize" => $rules["teamsize"],
- "GameState" => $rules["g_gameState"],
- "GameStateHumanReadable" => getGamestateNicely($rules),
- );
- }
- function getServerData($ip, $port) {
- try {
- $query = new SourceQuery();
- $query->Connect($ip, $port, 1, SourceQuery::SOURCE);
- $getInfo = $query->GetInfo();
- $getPlayers = $query->GetPlayers();
- $getRules = $query->GetRules();
- $data = filterData($getInfo, $getPlayers, $getRules);
- return array_merge($data, array(
- "link" => ("steam://connect/" . $ip . ":" . $port),
- ));
- } catch (Exception $e) {
- return array(
- "Error" => $e->getMessage(),
- );
- } finally {
- $query->Disconnect();
- }
- }
- $serverData = array();
- foreach ($servers as $ip => $ports) {
- foreach ($ports as $port) {
- $data = getServerData($ip, $port);
- if (!isset($data["Error"])) {
- array_push($serverData, $data);
- }
- }
- }
- /*
- $serverModals = array();
- foreach ($serverData as $server) {
- array_push($serverModals, array(
- ""
- ));
- }
- */
- $rend->setTemplateVariable("serverdata", $serverData);
- //$GLOBALS["rendererVars"]["servermodals"] = $serverModals;
Add Comment
Please, Sign In to add comment