コード例 #1
0
 /**
  * @return string
  *
  * {"hostname":"<span style='color: #00ff00'>WWW.KNIGHTofSORROW.TK (Antics)<\/span>","password":"******","patch":"1.0","mods":"None","map":"Food Wall Restaurant","gametype":"Barricaded Suspects","players_current":"4","players_max":"12","statsenabled":"No","swatwon":"1","suspectswon":"2","round":"4","numrounds":"5","suspectsscore":"20","swatscore":"55","timeleft":"483","nextmap":"MP-ABomb","players":[{"name":"Hi_all","score":"15","ping":"84","ip":"...","team":"1","kills":"-","tkills":"-","deaths":"-","arrests":"3","arrested":"4","vipe":"-","vipkv":"-","vipki":"-","vipa":"-","vipua":"-","bombsd":"-","rdobjective":"-","sgobjective":"-","sge":"-","sgk":"-","countryCode":"MA","countryName":"Morocco"},{"name":"\u00abRick\u00bb","score":"5","ping":"176","ip":"...","team":"0","kills":"-","tkills":"-","deaths":"-","arrests":"-","arrested":"-","vipe":"-","vipkv":"-","vipki":"-","vipa":"-","vipua":"-","bombsd":"-","rdobjective":"-","sgobjective":"-","sge":"-","sgk":"-","countryCode":"MX","countryName":"Mexico"},{"name":"-","score":"-","ping":"-","ip":"...","team":"-","kills":"-","tkills":"-","deaths":"-","arrests":"-","arrested":"-","vipe":"-","vipkv":"-","vipki":"-","vipa":"-","vipua":"-","bombsd":"-","rdobjective":"-","sgobjective":"-","sge":"-","sgk":"-","countryCode":"_unknown","countryName":"Unknown Territory"},{"name":"-","score":"-","ping":"-","ip":"...","team":"-","kills":"-","tkills":"-","deaths":"-","arrests":"-","arrested":"-","vipe":"-","vipkv":"-","vipki":"-","vipa":"-","vipua":"-","bombsd":"-","rdobjective":"-","sgobjective":"-","sge":"-","sgk":"-","countryCode":"_unknown","countryName":"Unknown Territory"}]}
  */
 public function getServerQueryv3()
 {
     $data = new Swat4Server('127.0.0.1', 10485);
     $data->query();
     $chats = Chat::orderBy('created_at', 'DESC')->limit(25)->get();
     $chatList = "";
     foreach ($chats as $chat) {
         $chatList = $chatList . $chat->message . "<br>";
     }
     $sv = [];
     $sv['isOnline'] = $data->option['hostname'] != "...server is reloading or offline";
     $sv['title'] = $data->option['map'];
     $sv['numPlayers'] = $data->option['players_current'];
     $sv['maxPlayers'] = $data->option['players_max'];
     $sv['swatWon'] = $data->option['swatwon'];
     $sv['susWon'] = $data->option['suspectswon'];
     $sv['roundNumber'] = $data->option['round'];
     $sv['numRounds'] = $data->option['numrounds'];
     $sv['scoreSuspects'] = $data->option['suspectsscore'];
     $sv['scoreSwat'] = $data->option['swatscore'];
     $sv['roundTime'] = $data->option['timeleft'];
     $sv['nextMap'] = $data->option['nextmap'];
     $sv['created'] = \Carbon\Carbon::now()->timestamp;
     $sv['chatContent'] = $chatList;
     if ($data->option['players_current'] <= 0) {
         $playerTableData = "<div class='no-player-online'>There are no players online.</div>";
     } else {
         $playerTableData = "<table class='table table-striped table-hover no-margin' id='ls-player-table'>";
         $playerTableData .= "<thead><tr><th class='col-xs-1'>Flag</th><th class='col-xs-7'>Name</th><th class='col-xs-2'>Score</th><th class='text-right col-xs-2'>Ping</th></tr></thead><tbody id='ls-player-table-body'></tbody>";
         foreach ($data->option['players'] as $player) {
             $IP = explode(":", $player['ip'])[0];
             $geoip = \App::make('geoip');
             $playerCountryCode = "_unknown";
             $playerCountryName = "Unknown Territory";
             try {
                 if ($player_geoip = $geoip->city($IP)) {
                     $playerCountryName = $player_geoip->country->name;
                     $playerCountryCode = $player_geoip->country->isoCode;
                 }
             } catch (\Exception $e) {
                 switch ($e) {
                     case $e instanceof \InvalidArgumentException:
                         $playerCountryCode = "_unknown";
                         $playerCountryName = "Unknown Territory";
                         break;
                     case $e instanceof \GeoIp2\Exception\AddressNotFoundException:
                         $playerCountryCode = "_unknown";
                         $playerCountryName = "Unknown Territory";
                         break;
                     default:
                         $playerCountryCode = "_unknown";
                         $playerCountryName = "Unknown Territory";
                         break;
                 }
             }
             $playerTableData .= "<tr class=''><td><img src='/images/flags/20_shiny/{$playerCountryCode}.png' title='{$playerCountryName}' class='tooltipster' alt='{$playerCountryCode}'></td>";
             $playerNameStripped = str_replace('(VIEW)', '', $player['name']);
             $playerNameStripped = str_replace('(SPEC)', '', $playerNameStripped);
             $playerNameStripped = htmlspecialchars_decode(html_entity_decode(html_entity_decode($playerNameStripped)));
             $showRadioIfAdmin = "";
             $IPorNull = "";
             if (\Auth::check() && \Auth::user()->isAdmin()) {
                 //$showRadioIfAdmin = "<input class='pull-left' type='radio' name='selected_player' value='$playerNameStripped'> &nbsp;";
                 $showRadioIfAdmin = $showRadioIfAdmin . "<a style='color:purple' class='fancybox livepfancy fancybox.ajax' href='./liveplayeraction?player={$playerNameStripped}' title='{$player['name']}'><i class='fa fa-cog'></i></a> &nbsp;";
                 $IPorNull = $IP;
             }
             if ($playerTotal = Player::findOrFailByNameWithNull($playerNameStripped)) {
                 $playerTableData .= "<td>{$showRadioIfAdmin}<b><a title='{$IPorNull}' class='tooltipster team-{$player['team']}' href='" . route('player-detail', $playerNameStripped) . "'>" . $player['name'] . "</b></a></td>";
             } else {
                 $playerTableData .= "<td>{$showRadioIfAdmin}<span title='{$IPorNull}' class='tooltipster team-{$player['team']}'>" . $player['name'] . "</span></td>";
             }
             $playerTableData .= "<td class='text-bold'>{$player['score']}</td>";
             $playerTableData .= "<td class='text-right text-bold'>{$player['ping']}</td>";
         }
     }
     $sv['onlinePlayersContent'] = htmlspecialchars_decode(html_entity_decode($playerTableData));
     $data = json_encode($sv);
     return $data;
 }