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.
Files changed (2) hide show
  1. package/lib/index.js +34 -11
  2. 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>延迟</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 === "在线" ? `${server.latency}ms` : "-"}</td>
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
- latency: 0,
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
- latency: 0,
420
- status: "离线"
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;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-cs2-server-query",
3
3
  "description": "自用,不推荐下载",
4
- "version": "1.6.0",
4
+ "version": "1.8.0",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [