hxp
2025-06-09 6c3f6335c70859ded94a1ad8d218acb0ac34239c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
include_once '/Common/CommFunc.php';
include_once '/Common/Logging.php';
include_once "/db/DBOper.php";
include_once "/Common/ServerOPS.php";
 
header("Content-type: text/html; charset=utf-8");
 
// 请求最近登录
\Logging\CreateLogging("center.region_player.php");
// ?game=xbqy&channel=test&branch=1&player=yn1233
// \Logging\LogInfo("_GET: " . print_r($_GET, true));
 
$game = $_GET["game"];
$channel = $_GET["channel"];
$branch = intval($_GET["branch"]);
$player = $_GET["player"];
$lang = $_GET["lang"]; // 标题语言,默认中文     "zh_CN" => "中文",  "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;
}