koishi-plugin-xxck-1 0.3.4 → 0.3.5
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 +100 -1
- package/lib/locales/zh-CN/index.d.ts +3 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -44,7 +44,7 @@ var zh_CN_default = {
|
|
|
44
44
|
"command.wwc.help.upgrade": "升格:兑换店铺卡片 | 指令:WWC升格 [卡片编号...] | 说明:消耗热带扰动,重复卡片自动升级",
|
|
45
45
|
"command.wwc.help.exchange": "兑换:水汽换普通抽数 | 指令:WWC兑换 [次数] | 说明:100水汽=1抽,每日上限80抽,单次1-40",
|
|
46
46
|
"command.wwc.help.collection": "收藏:查看卡片收藏进度 | 指令:WWC收藏(全部分类);WWC收藏1 / WWC收藏2 / WWC收藏3 为拆分版(分类正则可在插件配置项 collectionPart1Pattern / collectionPart2Pattern 中定义,收藏3 = 两者都不匹配的类别)| 说明:含普通+限定卡",
|
|
47
|
-
"command.wwc.help.ranking": "
|
|
47
|
+
"command.wwc.help.ranking": "排名:查看全服排行 | 指令:WWC排名1(按收藏数);WWC排名2(按7/6星战力分:7星0级20分每级+15,普通6星0级5分每级+3,限时6星0级8分每级+6)| 说明:显示前20名+自身排名",
|
|
48
48
|
"command.wwc.help.eventStatus": "限时状态:查看开放的限时卡池 | 指令:WWC限时状态 | 说明:显示期数/名称/星级/开放时间",
|
|
49
49
|
"command.wwc.help.eventDraw": "限时抽卡:参与限时卡池 | 指令:WWC限时抽卡 [期数] [次数] | 说明:1-20连,消耗限时抽数,无期限数匹配唯一开放池",
|
|
50
50
|
"command.wwc.help.eventExchange": "限时兑换:水汽换限时抽数 | 指令:WWC限时兑换 [期数] [次数] | 说明:6星300水汽/抽,7星450水汽/抽,单次1-40",
|
|
@@ -154,6 +154,9 @@ var zh_CN_default = {
|
|
|
154
154
|
"image.ranking.header.player": "玩家",
|
|
155
155
|
"image.ranking.header.count": "收藏数量",
|
|
156
156
|
"image.ranking.mine": "你的排名:第{rank}名 | 收藏卡片:{count}张",
|
|
157
|
+
"image.ranking2.title": "WWC全服7/6星战力排行榜(前20名)",
|
|
158
|
+
"image.ranking2.header.score": "综合得分",
|
|
159
|
+
"image.ranking2.mine": "你的排名:第{rank}名 | 综合得分:{score}分",
|
|
157
160
|
// ==============================================
|
|
158
161
|
// 6. 系统日志/通知(主人私信)
|
|
159
162
|
// ==============================================
|
|
@@ -1429,6 +1432,97 @@ async function _do_ranking(ctx, session) {
|
|
|
1429
1432
|
}
|
|
1430
1433
|
}
|
|
1431
1434
|
__name(_do_ranking, "_do_ranking");
|
|
1435
|
+
async function _do_ranking2(ctx, session) {
|
|
1436
|
+
ctx.logger.info("WWC排名2 开始执行");
|
|
1437
|
+
try {
|
|
1438
|
+
const qq = await getUnifiedQQ(ctx, session);
|
|
1439
|
+
const user = await ctx.database.get("gacha_user", { qq });
|
|
1440
|
+
if (!user.length) {
|
|
1441
|
+
await session.send(build_msg(session, session.text("error.common.notRegister")));
|
|
1442
|
+
return;
|
|
1443
|
+
}
|
|
1444
|
+
const show_name = user[0].status === 1 ? user[0].nickname : qq;
|
|
1445
|
+
const [normalPoolCards, eventPoolCards] = await Promise.all([
|
|
1446
|
+
ctx.database.get("gacha_card_pool", {}, { fields: ["card_id", "card_star"] }),
|
|
1447
|
+
ctx.database.get("gacha_event_pool", {}, { fields: ["card_id", "card_star"] })
|
|
1448
|
+
]);
|
|
1449
|
+
const poolInfo = /* @__PURE__ */ new Map();
|
|
1450
|
+
normalPoolCards.forEach((c) => {
|
|
1451
|
+
if (!poolInfo.has(c.card_id)) poolInfo.set(c.card_id, { star: c.card_star, isLimit: false });
|
|
1452
|
+
});
|
|
1453
|
+
eventPoolCards.forEach((c) => {
|
|
1454
|
+
if (!poolInfo.has(c.card_id)) poolInfo.set(c.card_id, { star: c.card_star, isLimit: true });
|
|
1455
|
+
});
|
|
1456
|
+
const all_users = await ctx.database.get("gacha_user", {});
|
|
1457
|
+
const ranking_data = [];
|
|
1458
|
+
for (const u of all_users) {
|
|
1459
|
+
try {
|
|
1460
|
+
const cards = await ctx.database.get("gacha_user_card", { qq: u.qq }, { fields: ["card_id", "card_level"] });
|
|
1461
|
+
const levelMap = /* @__PURE__ */ new Map();
|
|
1462
|
+
cards.forEach((c) => {
|
|
1463
|
+
const lv = c.card_level || 0;
|
|
1464
|
+
const prev = levelMap.get(c.card_id);
|
|
1465
|
+
if (prev === void 0 || lv > prev) levelMap.set(c.card_id, lv);
|
|
1466
|
+
});
|
|
1467
|
+
let totalScore = 0;
|
|
1468
|
+
levelMap.forEach((lv, cid) => {
|
|
1469
|
+
const info = poolInfo.get(cid);
|
|
1470
|
+
if (!info) return;
|
|
1471
|
+
if (info.star >= 7) totalScore += 20 + 15 * lv;
|
|
1472
|
+
else if (info.star === 6) totalScore += info.isLimit ? 8 + 6 * lv : 5 + 3 * lv;
|
|
1473
|
+
});
|
|
1474
|
+
ranking_data.push({
|
|
1475
|
+
qq: u.qq,
|
|
1476
|
+
show_name: u.status === 1 ? u.nickname : u.qq,
|
|
1477
|
+
total_score: totalScore
|
|
1478
|
+
});
|
|
1479
|
+
} catch (e) {
|
|
1480
|
+
continue;
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
ranking_data.sort((a, b) => b.total_score - a.total_score);
|
|
1484
|
+
const ranking_list = [];
|
|
1485
|
+
let user_rank = 0;
|
|
1486
|
+
let user_score = 0;
|
|
1487
|
+
ranking_data.forEach((item, idx) => {
|
|
1488
|
+
const rank = idx + 1;
|
|
1489
|
+
if (item.qq === qq) {
|
|
1490
|
+
user_rank = rank;
|
|
1491
|
+
user_score = item.total_score;
|
|
1492
|
+
}
|
|
1493
|
+
if (rank <= 20) {
|
|
1494
|
+
ranking_list.push([rank, item.show_name, item.total_score]);
|
|
1495
|
+
}
|
|
1496
|
+
});
|
|
1497
|
+
const titleText = session.text("image.ranking2.title");
|
|
1498
|
+
const headerRankText = session.text("image.ranking.header.rank");
|
|
1499
|
+
const headerPlayerText = session.text("image.ranking.header.player");
|
|
1500
|
+
const headerCountText = session.text("image.ranking2.header.score");
|
|
1501
|
+
const mineText = session.text("image.ranking2.mine", { rank: user_rank, score: user_score });
|
|
1502
|
+
const img_base64 = await _ranking_draw_image(
|
|
1503
|
+
ctx,
|
|
1504
|
+
ranking_list,
|
|
1505
|
+
user_rank,
|
|
1506
|
+
user_score,
|
|
1507
|
+
show_name,
|
|
1508
|
+
titleText,
|
|
1509
|
+
headerRankText,
|
|
1510
|
+
headerPlayerText,
|
|
1511
|
+
headerCountText,
|
|
1512
|
+
mineText
|
|
1513
|
+
);
|
|
1514
|
+
if (img_base64) {
|
|
1515
|
+
await session.send(img_base64);
|
|
1516
|
+
ctx.logger.info("WWC排名2 图片发送成功");
|
|
1517
|
+
} else {
|
|
1518
|
+
await session.send(build_msg(session, session.text("error.common.imageGenerate")));
|
|
1519
|
+
}
|
|
1520
|
+
} catch (e) {
|
|
1521
|
+
ctx.logger.error("WWC排名2 报错:", e);
|
|
1522
|
+
await session.send(build_msg(session, session.text("error.ranking.fail")));
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
__name(_do_ranking2, "_do_ranking2");
|
|
1432
1526
|
async function _do_switch(ctx, session, type, action, masterQQ) {
|
|
1433
1527
|
const userQQ = await getUnifiedQQ(ctx, session);
|
|
1434
1528
|
if (userQQ !== masterQQ) {
|
|
@@ -2090,6 +2184,11 @@ async function apply(ctx, config) {
|
|
|
2090
2184
|
const session = argv.session;
|
|
2091
2185
|
await _do_ranking(ctx, session);
|
|
2092
2186
|
});
|
|
2187
|
+
ctx.command("WWC排名2", "查看全服7/6星战力评分排行(7星0级20分每级+15,普通6星0级5分每级+3,限时6星0级8分每级+6),显示前20名+自身排名").alias("wwc排名2").alias("WWC排行2").action(async (argv) => {
|
|
2188
|
+
if (!argv.session) return;
|
|
2189
|
+
const session = argv.session;
|
|
2190
|
+
await _do_ranking2(ctx, session);
|
|
2191
|
+
});
|
|
2093
2192
|
ctx.command("WWC开启", "开启本群WWC功能,仅主人可用").alias("wwc开启").action(async (argv) => {
|
|
2094
2193
|
if (!argv.session) return;
|
|
2095
2194
|
const session = argv.session;
|
|
@@ -105,6 +105,9 @@ declare const _default: {
|
|
|
105
105
|
"image.ranking.header.player": string;
|
|
106
106
|
"image.ranking.header.count": string;
|
|
107
107
|
"image.ranking.mine": string;
|
|
108
|
+
"image.ranking2.title": string;
|
|
109
|
+
"image.ranking2.header.score": string;
|
|
110
|
+
"image.ranking2.mine": string;
|
|
108
111
|
"sys.notify.register": string;
|
|
109
112
|
"sys.notify.sign": string;
|
|
110
113
|
"sys.notify.draw": string;
|