koishi-plugin-ggcevo-game 0.3.7 → 0.3.9

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.d.ts CHANGED
@@ -89,6 +89,7 @@ export interface exchange {
89
89
  userId: string;
90
90
  handle: string;
91
91
  item: string;
92
+ type: string;
92
93
  date: Date;
93
94
  }
94
95
  export interface adminbenefit {
package/lib/index.js CHANGED
@@ -46,9 +46,7 @@ function apply(ctx, config) {
46
46
  description: "text",
47
47
  effect: "json"
48
48
  }, {
49
- primary: "id",
50
- autoInc: true,
51
- unique: ["name"]
49
+ primary: "name"
52
50
  });
53
51
  ctx.model.extend("ggcevo_backpack", {
54
52
  handle: "string",
@@ -146,6 +144,7 @@ function apply(ctx, config) {
146
144
  // 句柄
147
145
  item: "string",
148
146
  // 兑换物品
147
+ type: "string",
149
148
  date: "timestamp"
150
149
  }, {
151
150
  // 额外配置
@@ -166,13 +165,13 @@ function apply(ctx, config) {
166
165
  });
167
166
  async function initDefaultItems() {
168
167
  const defaultItems = [
169
- { name: "咕咕币", type: "consumable", description: "用于进行抽奖" },
170
- { name: "兑换券", type: "material", description: "用于兑换赞助物品,输入 兑换图 查看详情" },
171
- { name: "扭蛋币", type: "consumable", description: "用于进行宠物扭蛋" },
172
- { name: "t3级宠物扭蛋", type: "material", description: "用于兑换t3系列宠物" },
173
- { name: "t2级宠物扭蛋", type: "material", description: "用于兑换t2系列宠物" },
174
- { name: "t1级宠物扭蛋", type: "material", description: "用于兑换t1系列宠物" },
175
- { name: "t0级宠物扭蛋", type: "material", description: "用于兑换t0系列宠物" }
168
+ { id: 1, name: "咕咕币", type: "consumable", description: "用于进行抽奖" },
169
+ { id: 2, name: "兑换券", type: "material", description: "用于兑换赞助物品,输入 兑换图 查看详情" },
170
+ { id: 3, name: "扭蛋币", type: "consumable", description: "用于进行宠物扭蛋" },
171
+ { id: 4, name: "t3级宠物扭蛋", type: "material", description: "用于兑换t3系列宠物" },
172
+ { id: 5, name: "t2级宠物扭蛋", type: "material", description: "用于兑换t2系列宠物" },
173
+ { id: 6, name: "t1级宠物扭蛋", type: "material", description: "用于兑换t1系列宠物" },
174
+ { id: 7, name: "t0级宠物扭蛋", type: "material", description: "用于兑换t0系列宠物" }
176
175
  ];
177
176
  await ctx.database.upsert("ggcevo_items", defaultItems, ["name"]);
178
177
  }
@@ -913,27 +912,27 @@ ID:${activity.id}
913
912
  ].join("\n");
914
913
  });
915
914
  const itemConfig = {
916
- "拾荒者": { quality: "t3", cost: 3 },
917
- "劳工": { quality: "t3", cost: 3 },
918
- "老兵": { quality: "t2", cost: 4 },
919
- "合成人": { quality: "t2", cost: 4 },
920
- "阿斯塔特": { quality: "t1", cost: 5 },
921
- "皇家指挥官": { quality: "t1", cost: 5 },
922
- "个性开场白": { quality: "t1", cost: 5, quantity: 5 },
923
- "史蒂夫": { quality: "t0", cost: 6, quantity: 1 },
924
- "ep4": { quality: "t0", cost: 6, quantity: 3 },
925
- "小狗": { quality: "t3", cost: 3, quantity: 5 },
926
- "小猫": { quality: "t3", cost: 3, quantity: 5 },
927
- "小黄鸭": { quality: "t3", cost: 3, quantity: 5 },
928
- "萌萌熊": { quality: "t2", cost: 4, quantity: 3 },
929
- "荆棘蜥蜴": { quality: "t2", cost: 4, quantity: 3 },
930
- "爆笑小狗": { quality: "t1", cost: 5, quantity: 2 },
931
- "熔岩蟹": { quality: "t1", cost: 5, quantity: 2 },
932
- "远古蝗虫": { quality: "t1", cost: 5, quantity: 2 },
933
- "绿毛虫": { quality: "t0", cost: 6, quantity: 1 },
934
- "妙蛙种子": { quality: "t0", cost: 6, quantity: 1 },
935
- "皮卡丘": { quality: "t0", cost: 6, quantity: 1 },
936
- "哆啦A梦": { quality: "t0", cost: 6, quantity: 1 }
915
+ "拾荒者": { quality: "t3", type: "皮肤", cost: 3 },
916
+ "劳工": { quality: "t3", type: "皮肤", cost: 3 },
917
+ "老兵": { quality: "t2", type: "皮肤", cost: 4 },
918
+ "合成人": { quality: "t2", type: "皮肤", cost: 4 },
919
+ "阿斯塔特": { quality: "t1", type: "皮肤", cost: 5 },
920
+ "皇家指挥官": { quality: "t1", type: "皮肤", cost: 5 },
921
+ "个性开场白": { quality: "t1", type: "“入场特效", cost: 5, quantity: 5 },
922
+ "史蒂夫": { quality: "t0", type: "皮肤", cost: 6, quantity: 1 },
923
+ "ep4": { quality: "t0", type: "物品", cost: 6, quantity: 3 },
924
+ "小狗": { quality: "t3", type: "宠物", cost: 3, quantity: 5 },
925
+ "小猫": { quality: "t3", type: "宠物", cost: 3, quantity: 5 },
926
+ "小黄鸭": { quality: "t3", type: "宠物", cost: 3, quantity: 5 },
927
+ "萌萌熊": { quality: "t2", type: "宠物", cost: 4, quantity: 3 },
928
+ "荆棘蜥蜴": { quality: "t2", type: "宠物", cost: 4, quantity: 3 },
929
+ "爆笑小狗": { quality: "t1", type: "宠物", cost: 5, quantity: 2 },
930
+ "熔岩蟹": { quality: "t1", type: "宠物", cost: 5, quantity: 2 },
931
+ "远古蝗虫": { quality: "t1", type: "宠物", cost: 5, quantity: 2 },
932
+ "绿毛虫": { quality: "t0", type: "宠物", cost: 6, quantity: 1 },
933
+ "妙蛙种子": { quality: "t0", type: "宠物", cost: 6, quantity: 1 },
934
+ "皮卡丘": { quality: "t0", type: "宠物", cost: 6, quantity: 1 },
935
+ "哆啦A梦": { quality: "t0", type: "宠物", cost: 6, quantity: 1 }
937
936
  };
938
937
  ctx.command("ggcevo/兑换", "兑换物品").action(async ({ session }) => {
939
938
  try {
@@ -960,34 +959,57 @@ ${items.join("、")}
960
959
  if (!name2) return "输入超时,请重新输入指令。";
961
960
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
962
961
  const configname = itemConfig[name2];
963
- if (!configname) return `无效的物品名称,请重新输入指令。`;
962
+ if (!configname) return "无效的物品名称,请重新输入";
964
963
  const userRecords = await ctx.database.get("ggcevo_exchange", { handle, item: name2 });
965
964
  if (userRecords.length > 0) return "您已经兑换过该物品";
966
965
  if (configname.quantity !== void 0) {
967
966
  const globalRecords = await ctx.database.get("ggcevo_exchange", { item: name2 });
968
- if (globalRecords.length >= configname.quantity) return "该物品已经被兑换尽了";
967
+ if (globalRecords.length >= configname.quantity) return "该物品已兑尽";
968
+ }
969
+ const qualityMap = { "t3": 4, "t2": 5, "t1": 6, "t0": 7 };
970
+ const petItems = new Set(
971
+ // 动态生成宠物集合
972
+ Object.entries(itemConfig).filter(([_, config2]) => config2.type === "宠物").map(([name3]) => name3)
973
+ );
974
+ let cost = configname.cost;
975
+ let itemId = 2;
976
+ let couponName = "兑奖券";
977
+ if (petItems.has(name2)) {
978
+ const [specialCoupon] = await ctx.database.get("ggcevo_backpack", {
979
+ handle,
980
+ itemId: qualityMap[configname.quality]
981
+ });
982
+ if (specialCoupon?.quantity >= 1) {
983
+ itemId = qualityMap[configname.quality];
984
+ cost = 1;
985
+ couponName = `${configname.quality}级宠物扭蛋`;
986
+ }
969
987
  }
970
- const [coupon] = await ctx.database.get("ggcevo_backpack", { handle, itemId: 2 });
971
- if (!coupon || coupon.quantity < configname.cost) {
972
- return `兑换需要 ${configname.cost} 张兑奖券,当前持有:${coupon?.quantity || 0}`;
988
+ const [coupon] = await ctx.database.get("ggcevo_backpack", { handle, itemId });
989
+ if (!coupon || coupon.quantity < cost) {
990
+ const requireMsg = petItems.has(name2) ? `需要 1 个${configname.quality}级扭蛋 或 ${configname.cost}个兑奖券` : `需要 ${configname.cost}个兑奖券`;
991
+ return `${requireMsg}
992
+ 当前持有:${coupon?.quantity || 0}个${couponName}`;
973
993
  }
974
994
  await ctx.database.withTransaction(async () => {
975
995
  await ctx.database.set(
976
996
  "ggcevo_backpack",
977
- { handle, itemId: 2 },
978
- { quantity: coupon.quantity - configname.cost }
997
+ { handle, itemId },
998
+ { quantity: coupon.quantity - cost }
979
999
  );
980
1000
  await ctx.database.create("ggcevo_exchange", {
981
1001
  userId: session.userId,
982
1002
  handle,
983
1003
  item: name2,
1004
+ type: configname.type,
1005
+ // 从配置中获取类型
984
1006
  date: /* @__PURE__ */ new Date()
985
1007
  });
986
1008
  });
987
- return `兑换成功!消耗 ${configname.cost} 张兑奖券获得【${name2}】(游戏物品发放请联系管理员)`;
1009
+ return `兑换成功!消耗 ${cost} 个${couponName}获得【${name2}】`;
988
1010
  } catch (error) {
989
1011
  console.error("兑换失败:", error);
990
- return `兑换失败`;
1012
+ return "兑换失败";
991
1013
  }
992
1014
  });
993
1015
  ctx.command("ggcevo/兑换记录").action(async ({ session }) => {
@@ -1008,7 +1030,7 @@ ${items.join("、")}
1008
1030
  second: "2-digit",
1009
1031
  hour12: false
1010
1032
  });
1011
- return `物品: ${e.item} | 时间: ${cnTime}`;
1033
+ return `${e.type}: ${e.item} | 时间: ${cnTime}`;
1012
1034
  }).join("\n");
1013
1035
  return `${handle} 的兑换记录:
1014
1036
  ${output}`;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-ggcevo-game",
3
3
  "description": "星际争霸2游戏大厅地图咕咕虫-evo小游戏",
4
- "version": "0.3.7",
4
+ "version": "0.3.9",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [