"中文", "vi_VN" => "越南" // \Logging\LogInfo("_GET:" . print_r($_GET, true)); $gameName = \CommFunc\GetGameName(); if ($game != $gameName || !$channel || $branch <= 0 || !$player) { echo "{}"; \Logging\LogError("param error!" . print_r($_GET, true)); exit; } if (!$lang) { \CommFunc\GetConfig("ServerInfo", "ServerDefaultLang", $lang);; // 默认语言 } $playerServers = array(); // 最近服 - 直接取该账号的所有服角色 $find = array("Channel" => $channel, "AccountID" => $player); if (\DBOper\FindOne("GameRoles", $find, $findData) && isset($findData)) { foreach ($findData as $field => $value) { $serverID = \CommFunc\GetServerIDBySid($field); if ($serverID <= 0) { continue; } if (!array_key_exists("PlayerName", $value)) { continue; } $playerServers[$serverID] = array( "region_id" => $serverID, "roleid" => $value["PlayerName"], "level" => $value["LV"], "job" => ($channel == "qkbt52") ? $value["Job"] . "" : $value["Job"], "last_login_time" => isset($value["LoginTime"]) ? $value["LoginTime"] : "", ); } } $whiteList = \ServerOPS\GetWhiteList(); $white = in_array($player, $whiteList) ? 1 : 0; $player_group_list = array(); // 最近服所有信息 $gametest_group_list = array(); // 内部服所有信息 // 有最近服 或 白名单账号 才取服务器信息 if (count($playerServers) > 0 || $white == 1) { \DBOper\Find("GameServers", array("Channel" => $channel), $serverList); foreach ($serverList as $serverInfo) { $ServerID = $serverInfo["ServerID"]; $Statue = $serverInfo["Statue"]; // 非最近服 或 内部服白名单 则不需要该服务器信息 if ( !(array_key_exists($ServerID, $playerServers) || ($Statue == \ServerOPS\ServerStatue::InternalOpen && $white == 1) ) ) { continue; } $serverJson = array( "login_port" => $serverInfo["LoginPort"], "region_domain" => $serverInfo["RegionDomain"], "name" => $serverInfo["ServerName"], "running_status" => $serverInfo["RunningStatus"], "game_port" => $serverInfo["GamePort"], "is_recommend" => $serverInfo["Recommend"], "region_flag" => $serverInfo["ServerID"], "statue" => $serverInfo["Statue"], "start_date" => $serverInfo["StartDate"], ); if (array_key_exists($ServerID, $playerServers)) { array_push($player_group_list, array_merge($playerServers[$ServerID], $serverJson)); } if ($Statue == \ServerOPS\ServerStatue::InternalOpen && $white == 1) { array_push($gametest_group_list, $serverJson); } } } $ret = array( "white" => $white, "player" => array( "group_title" => get_server_group_title("recently", $lang), "group_size" => count($player_group_list), "group_list" => $player_group_list, ), ); if ($white == 1) { $ret["gametest"] = array( "group_title" => get_server_group_title("test", $lang), "group_size" => count($gametest_group_list), "group_list" => $gametest_group_list, ); } echo \CommFunc\MyJson_encode($ret); exit; function get_server_group_title($group, $lang) { // 兼容旧lang参数值 if ($lang == "zh_CN") { $lang = "cn"; } elseif ($lang == "vi_VN") { $lang = "vi"; } \CommFunc\GetConfig("ServerInfo", "Server_" . $group, $groupTitles); $groupTitleArray = json_decode($groupTitles, true); if (isset($groupTitleArray) && array_key_exists($lang, $groupTitleArray)) { return $groupTitleArray[$lang]; } return $group; }