koishi-plugin-cs2-server-query 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +34 -11
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -114,7 +114,18 @@ function apply(ctx, config) {
|
|
|
114
114
|
savePushRecords();
|
|
115
115
|
}
|
|
116
116
|
__name(updatePushRecord, "updatePushRecord");
|
|
117
|
+
function checkAndAddMapTranslation(mapName, mapTranslations2) {
|
|
118
|
+
if (!mapTranslations2[mapName]) {
|
|
119
|
+
mapTranslations2[mapName] = {
|
|
120
|
+
translation: "未翻译",
|
|
121
|
+
difficulty: "未知"
|
|
122
|
+
};
|
|
123
|
+
saveMapTranslations();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
__name(checkAndAddMapTranslation, "checkAndAddMapTranslation");
|
|
117
127
|
const difficultyColors = {
|
|
128
|
+
"未知": "#4F4F4F",
|
|
118
129
|
"简单": "#33cc00",
|
|
119
130
|
"普通": "#ffcc00",
|
|
120
131
|
"困难": "#cc6600",
|
|
@@ -129,6 +140,7 @@ function apply(ctx, config) {
|
|
|
129
140
|
const page = await browser.newPage();
|
|
130
141
|
const totalPlayers = group.servers.reduce((sum, server) => sum + (server.status === "在线" ? server.players : 0), 0);
|
|
131
142
|
const totalMaxPlayers = group.servers.reduce((sum, server) => sum + (server.status === "在线" ? server.maxPlayers : 0), 0);
|
|
143
|
+
const onlineServers = group.servers.filter((server) => server.status === "在线").length;
|
|
132
144
|
const baseHeight = 150;
|
|
133
145
|
const rowHeight = 50;
|
|
134
146
|
const totalHeight = baseHeight + rowHeight * group.servers.length;
|
|
@@ -198,19 +210,25 @@ function apply(ctx, config) {
|
|
|
198
210
|
margin-left: 5px;
|
|
199
211
|
font-weight: bold; /* 字体加粗 */
|
|
200
212
|
}
|
|
213
|
+
.server-index {
|
|
214
|
+
background-color: #C6A300; /* 服务器编号背景颜色 */
|
|
215
|
+
padding: 5px;
|
|
216
|
+
border-radius: 4px;
|
|
217
|
+
color: white;
|
|
218
|
+
}
|
|
201
219
|
</style>
|
|
202
220
|
</head>
|
|
203
221
|
<body>
|
|
204
222
|
<div class="overlay">
|
|
205
223
|
<h2>${group.name} - 服务器列表</h2>
|
|
206
|
-
<p class="total-players">总玩家数: ${totalPlayers}/${totalMaxPlayers}</p>
|
|
224
|
+
<p class="total-players">总玩家数: ${totalPlayers}/${totalMaxPlayers} | 在线服务器: ${onlineServers}/${group.servers.length}</p> <!-- 显示在线服务器数量 -->
|
|
207
225
|
<table>
|
|
208
226
|
<tr>
|
|
209
227
|
<th>编号</th>
|
|
210
228
|
<th>服务器名称</th>
|
|
211
229
|
<th>地图</th>
|
|
212
230
|
<th>玩家</th>
|
|
213
|
-
<th
|
|
231
|
+
<th>地图存在时间</th>
|
|
214
232
|
<th>状态</th>
|
|
215
233
|
<th>IP 地址</th>
|
|
216
234
|
</tr>
|
|
@@ -218,9 +236,10 @@ function apply(ctx, config) {
|
|
|
218
236
|
const translation = mapTranslations2[server.map];
|
|
219
237
|
const difficulty = translation?.difficulty;
|
|
220
238
|
const difficultyColor = difficulty ? difficultyColors[difficulty] : "#000000";
|
|
239
|
+
const mapDuration = server.status === "在线" ? Math.floor((Date.now() - server.mapChangeTime) / 6e4) : 0;
|
|
221
240
|
return `
|
|
222
241
|
<tr>
|
|
223
|
-
<td>${index + 1}</td>
|
|
242
|
+
<td><span class="server-index">${index + 1}</span></td> <!-- 服务器编号背景颜色 -->
|
|
224
243
|
<td>${server.name}</td>
|
|
225
244
|
<td>
|
|
226
245
|
<span class="map-name">${server.map}</span>
|
|
@@ -228,7 +247,7 @@ function apply(ctx, config) {
|
|
|
228
247
|
${difficulty ? `<span class="difficulty" style="background-color: ${difficultyColor};">${difficulty}</span>` : ""}
|
|
229
248
|
</td>
|
|
230
249
|
<td>${server.status === "在线" ? `${server.players}/${server.maxPlayers}` : "-"}</td>
|
|
231
|
-
<td>${server.status === "在线" ? `${
|
|
250
|
+
<td>${server.status === "在线" ? `${mapDuration}分钟` : "-"}</td>
|
|
232
251
|
<td class="status-${server.status === "在线" ? "online" : "offline"}">${server.status}</td>
|
|
233
252
|
<td><code>${server.ip}</code></td>
|
|
234
253
|
</tr>
|
|
@@ -328,7 +347,6 @@ function apply(ctx, config) {
|
|
|
328
347
|
server.map = info.map;
|
|
329
348
|
server.players = info.players;
|
|
330
349
|
server.maxPlayers = info.maxPlayers;
|
|
331
|
-
server.latency = 0;
|
|
332
350
|
server.status = "在线";
|
|
333
351
|
} catch (err) {
|
|
334
352
|
server.status = "离线";
|
|
@@ -351,6 +369,9 @@ function apply(ctx, config) {
|
|
|
351
369
|
for (const server of group.servers) {
|
|
352
370
|
try {
|
|
353
371
|
const info = await (0, import_steam_server_query.queryGameServerInfo)(server.ip);
|
|
372
|
+
if (server.map !== info.map) {
|
|
373
|
+
server.mapChangeTime = Date.now();
|
|
374
|
+
}
|
|
354
375
|
server.name = info.name || server.name;
|
|
355
376
|
server.map = info.map;
|
|
356
377
|
server.players = info.players;
|
|
@@ -402,9 +423,10 @@ connect ${server.ip}`;
|
|
|
402
423
|
map: info.map,
|
|
403
424
|
players: info.players,
|
|
404
425
|
maxPlayers: info.maxPlayers,
|
|
405
|
-
|
|
406
|
-
status: "在线"
|
|
426
|
+
status: "在线",
|
|
407
427
|
// 默认状态为在线
|
|
428
|
+
mapChangeTime: Date.now()
|
|
429
|
+
// 初始化地图更换时间
|
|
408
430
|
});
|
|
409
431
|
saveData();
|
|
410
432
|
return `服务器 "${serverName}" (${ip}) 已成功添加到社区 "${groupName}" 中。`;
|
|
@@ -416,8 +438,9 @@ connect ${server.ip}`;
|
|
|
416
438
|
map: "未知",
|
|
417
439
|
players: 0,
|
|
418
440
|
maxPlayers: 0,
|
|
419
|
-
|
|
420
|
-
|
|
441
|
+
status: "离线",
|
|
442
|
+
mapChangeTime: Date.now()
|
|
443
|
+
// 初始化地图更换时间
|
|
421
444
|
});
|
|
422
445
|
saveData();
|
|
423
446
|
return `服务器 "${serverName}" (${ip}) 已添加到社区 "${groupName}" 中,但当前状态为离线。`;
|
|
@@ -437,7 +460,6 @@ connect ${server.ip}`;
|
|
|
437
460
|
server.map = info.map;
|
|
438
461
|
server.players = info.players;
|
|
439
462
|
server.maxPlayers = info.maxPlayers;
|
|
440
|
-
server.latency = 0;
|
|
441
463
|
server.status = "在线";
|
|
442
464
|
saveData();
|
|
443
465
|
return `服务器 ${serverIndex} 的IP地址已从 ${oldIP} 替换为 ${newIP},并成功更新服务器信息。`;
|
|
@@ -447,7 +469,6 @@ connect ${server.ip}`;
|
|
|
447
469
|
server.map = "未知";
|
|
448
470
|
server.players = 0;
|
|
449
471
|
server.maxPlayers = 0;
|
|
450
|
-
server.latency = 0;
|
|
451
472
|
server.status = "离线";
|
|
452
473
|
saveData();
|
|
453
474
|
return `服务器 ${serverIndex} 的IP地址已从 ${oldIP} 替换为 ${newIP},但当前状态为离线。`;
|
|
@@ -728,7 +749,9 @@ ${subscriptionList}`;
|
|
|
728
749
|
const info = await (0, import_steam_server_query.queryGameServerInfo)(server.ip);
|
|
729
750
|
const newMap = info.map;
|
|
730
751
|
if (server.map !== newMap) {
|
|
752
|
+
server.mapChangeTime = Date.now();
|
|
731
753
|
server.map = newMap;
|
|
754
|
+
checkAndAddMapTranslation(newMap, mapTranslations);
|
|
732
755
|
const relevantSubscriptions = subscriptions.filter((sub) => sub.groupName === group.name);
|
|
733
756
|
for (const sub of relevantSubscriptions) {
|
|
734
757
|
const mapNameToCompare = sub.mapName;
|