|
|
|
|
@ -18,6 +18,7 @@ import { BattleRuntime } from '../battle/runtime/BattleRuntime'; |
|
|
|
|
import { DailyShopDataManager } from '../manager/DailyShopDataManager'; |
|
|
|
|
import { HeadIconManager } from '../manager/HeadIconManager'; |
|
|
|
|
import { DailyShopKind } from '../manager/DailyShopTypes'; |
|
|
|
|
import { BattleBuffCarryStore } from '../manager/battleBuff/BattleBuffCarryStore'; |
|
|
|
|
import { EmolumentDataManager } from '../manager/EmolumentDataManager'; |
|
|
|
|
import { RankBoardManager } from '../manager/RankBoardManager'; |
|
|
|
|
import { RankDataManager } from '../manager/RankDataManager'; |
|
|
|
|
@ -153,11 +154,21 @@ export class GM extends Component { |
|
|
|
|
lb2.string = `参数:${gg.data.getItemNum(ItemNumType.diamond)}`; |
|
|
|
|
break; |
|
|
|
|
case '设置关卡解锁': |
|
|
|
|
lb2.string = `参数:${gg.data.doc.rankId}`; |
|
|
|
|
lb2.string = `参数:${RankDataManager.getPlayerRankId()}`; |
|
|
|
|
break; |
|
|
|
|
case '设置星数': |
|
|
|
|
lb2.string = `参数:${RankDataManager.getPlayerRankStars()}`; |
|
|
|
|
break; |
|
|
|
|
case '设置段位和星级': { |
|
|
|
|
const rid = RankDataManager.getPlayerRankId(); |
|
|
|
|
const intra = RankDataManager.getIntraTierStars(); |
|
|
|
|
const row = RankDataManager.getRankConfig(rid); |
|
|
|
|
const name = row?.name?.trim() ?? ''; |
|
|
|
|
lb2.string = name |
|
|
|
|
? `参数:${rid} ${intra}(${name})` |
|
|
|
|
: `参数:${rid} ${intra}`; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置玩家局内血量': { |
|
|
|
|
const runtime = gg.battle.match; |
|
|
|
|
const inBattleHp = runtime instanceof BattleRuntime ? runtime.WallMaxHp : 0; |
|
|
|
|
@ -195,20 +206,11 @@ export class GM extends Component { |
|
|
|
|
lb2.string = this._formatFixedLevelParam(id); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置主动BUFF': { |
|
|
|
|
const slotId = DailyShopDataManager.getActiveSlotIds()[0] ?? 0; |
|
|
|
|
const parsed = slotId > 0 ? DailyShopDataManager.getParsed(slotId) : null; |
|
|
|
|
lb2.string = parsed |
|
|
|
|
? `参数:${parsed.id}(${parsed.name})` |
|
|
|
|
: (slotId > 0 ? `参数:${slotId}` : '参数:空'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置被动BUFF': { |
|
|
|
|
const slotId = DailyShopDataManager.getPassiveSlotIds()[0] ?? 0; |
|
|
|
|
const parsed = slotId > 0 ? DailyShopDataManager.getParsed(slotId) : null; |
|
|
|
|
lb2.string = parsed |
|
|
|
|
? `参数:${parsed.id}(${parsed.name})` |
|
|
|
|
: (slotId > 0 ? `参数:${slotId}` : '参数:空'); |
|
|
|
|
const first = BattleBuffCarryStore.getPassives(0)[0]; |
|
|
|
|
lb2.string = first |
|
|
|
|
? `参数:${first.id}(${first.name})` |
|
|
|
|
: '参数:空'; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -242,30 +244,15 @@ export class GM extends Component { |
|
|
|
|
|
|
|
|
|
colors = ["#21F018", "#05DBF8", "#EF9EFF", "#FFFF00", "#FFE09E", "#E8FF9E", "#47CA14", "#3CDCF1", "#E0FF00", "#20FA80"]; |
|
|
|
|
quickBtns = [ |
|
|
|
|
'清除副本次数难度全开', |
|
|
|
|
'今日首次登录(每日重置)', |
|
|
|
|
'复制存档', |
|
|
|
|
'一键获取所有武器', |
|
|
|
|
'一键添加所有宝石', |
|
|
|
|
'设置武器等级', |
|
|
|
|
'设置武器和技能', |
|
|
|
|
'清除指定背包文字', |
|
|
|
|
'快速胜利1怪', |
|
|
|
|
'关闭快速胜利', |
|
|
|
|
'关闭广告', |
|
|
|
|
'显示广告', |
|
|
|
|
'重置每日商店or抽奖', |
|
|
|
|
'重置每日商店BUFF', |
|
|
|
|
'打开每日商店无限次数', |
|
|
|
|
'关闭每日商店无限次数', |
|
|
|
|
'清除AI主动BUFF', |
|
|
|
|
'清除AI被动BUFF', |
|
|
|
|
'清除固定地图', |
|
|
|
|
'测试七十二变→妙手神偷', |
|
|
|
|
'关闭七十二变固定', |
|
|
|
|
'设置排行星级&胜场', |
|
|
|
|
'打开内购', |
|
|
|
|
'关闭内购', |
|
|
|
|
'开启己方营地不掉血', |
|
|
|
|
'关闭己方营地不掉血', |
|
|
|
|
'开启敌方营地不掉血', |
|
|
|
|
@ -273,22 +260,15 @@ export class GM extends Component { |
|
|
|
|
]; |
|
|
|
|
paramBtns = [ |
|
|
|
|
'设置道具数量|道具ID 数量(空格分隔)', |
|
|
|
|
'设置武器数量|武器ID 数量(空格分隔)', |
|
|
|
|
'设置主动BUFF|主动buffID(只设置第一个)', |
|
|
|
|
'设置被动BUFF|被动buffID(只设置第一个)', |
|
|
|
|
'设置金钱|金币数量', |
|
|
|
|
'设置体力|体力数量', |
|
|
|
|
'设置钻石|钻石数量', |
|
|
|
|
'设置关卡解锁|段位id', |
|
|
|
|
'设置星数|总星数(最低1)', |
|
|
|
|
'设置玩家局内血量|城墙血量(下局生效,局内同步)', |
|
|
|
|
'设置玩家等级|主角等级', |
|
|
|
|
'设置玩家存档|JSON存档字符串', |
|
|
|
|
'设置通关怪物数量|击杀N怪后通关,0关闭', |
|
|
|
|
'指定背包文字|weapon2Id或名称,逗号分隔', |
|
|
|
|
'设置AI主动BUFF|Battlebuff.id,逗号分隔(下局生效)', |
|
|
|
|
'设置AI被动BUFF|Battlebuff.id,逗号分隔(下局生效)', |
|
|
|
|
'固定地图|Level.id(关卡表),0关闭', |
|
|
|
|
'设置被动BUFF|被动buffID(只设置第一个)', |
|
|
|
|
'设置AI被动BUFF|Battlebuff.id,逗号分隔(下局生效)', |
|
|
|
|
'设置段位和星级|段位id 星级(1~5)', |
|
|
|
|
'设置通关怪物数量|击杀N怪后通关,0关闭', |
|
|
|
|
'设置玩家存档|JSON存档字符串', |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
onQuickBtnClick(event: EventTouch) { |
|
|
|
|
@ -419,27 +399,6 @@ export class GM extends Component { |
|
|
|
|
gg.ui.showToast('已恢复地图随机'); |
|
|
|
|
GM.show(); |
|
|
|
|
break; |
|
|
|
|
case '测试七十二变→妙手神偷': { |
|
|
|
|
gg.game.gmRandomActiveFixBuffId = 16; |
|
|
|
|
const result = DailyShopDataManager.gmSetFirstCarrySlot(DailyShopKind.Active, '20'); |
|
|
|
|
if (result.wrongKind) { |
|
|
|
|
gg.ui.showToast('七十二变(id=20) 非主动 buff,请检查配表'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (!result.ok) { |
|
|
|
|
gg.ui.showToast('写入七十二变失败,请检查 Battlebuff 表'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
gg.data.saveToServer(); |
|
|
|
|
gg.ui.showToast('已开启:七十二变 CD 结束固定→妙手神偷(id=16)'); |
|
|
|
|
GM.show(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '关闭七十二变固定': |
|
|
|
|
gg.game.gmRandomActiveFixBuffId = null; |
|
|
|
|
gg.ui.showToast('已关闭七十二变固定 roll,恢复随机'); |
|
|
|
|
GM.show(); |
|
|
|
|
break; |
|
|
|
|
case '设置排行星级&胜场': |
|
|
|
|
this._gmSetRankStarsAndDailyWins(); |
|
|
|
|
GM.show(); |
|
|
|
|
@ -494,40 +453,19 @@ export class GM extends Component { |
|
|
|
|
gg.ui.showToast(`武器 ${equipId} 已设为 ${gg.equip.getHaveEquipCount(equipId)}`); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置主动BUFF': { |
|
|
|
|
const result = DailyShopDataManager.gmSetFirstCarrySlot(DailyShopKind.Active, this.eb_prama.string); |
|
|
|
|
if (result.wrongKind) { |
|
|
|
|
gg.ui.showToast('该 id 为被动 buff,不能写入主动第1槽'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (!result.ok) { |
|
|
|
|
gg.ui.showToast('请填主动 Battlebuff.id(type=1) 或名称'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
needSaveServer = true; |
|
|
|
|
if (result.parsed) { |
|
|
|
|
gg.ui.showToast(`主动第1槽 → ${result.parsed.id}(${result.parsed.name})`); |
|
|
|
|
} else { |
|
|
|
|
gg.ui.showToast('已清空主动第1槽'); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置被动BUFF': { |
|
|
|
|
const result = DailyShopDataManager.gmSetFirstCarrySlot(DailyShopKind.Passive, this.eb_prama.string); |
|
|
|
|
if (result.wrongKind) { |
|
|
|
|
gg.ui.showToast('该 id 为主动 buff,不能写入被动第1槽'); |
|
|
|
|
const raw = this.eb_prama.string.trim(); |
|
|
|
|
if (raw === '' || raw === '0') { |
|
|
|
|
gg.ui.showToast('请填被动 Battlebuff.id'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
const result = DailyShopDataManager.gmSetFirstCarrySlot(DailyShopKind.Passive, raw); |
|
|
|
|
if (!result.ok) { |
|
|
|
|
gg.ui.showToast('请填被动 Battlebuff.id(type=2) 或名称'); |
|
|
|
|
gg.ui.showToast(result.message ?? '写入失败'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
needSaveServer = true; |
|
|
|
|
if (result.parsed) { |
|
|
|
|
gg.ui.showToast(`被动第1槽 → ${result.parsed.id}(${result.parsed.name})`); |
|
|
|
|
} else { |
|
|
|
|
gg.ui.showToast('已清空被动第1槽'); |
|
|
|
|
} |
|
|
|
|
gg.ui.showToast(`被动 buff 已写入 ${Math.floor(Number(raw) || 0)}`); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置金钱': { |
|
|
|
|
@ -557,9 +495,16 @@ export class GM extends Component { |
|
|
|
|
gg.ui.showToast('请输入有效段位 id'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
gg.data.doc.rankId = rankId; |
|
|
|
|
const total = RankDataManager.applyGmRankAndStar(rankId, 1); |
|
|
|
|
if (!(total > 0)) { |
|
|
|
|
gg.ui.showToast('段位 id 无效'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
HeadIconManager.onRankStarsChanged(); |
|
|
|
|
needSaveServer = true; |
|
|
|
|
gg.ui.showToast(`段位已设为 ${gg.data.doc.rankId}`); |
|
|
|
|
void RankBoardManager.syncSelfScore(); |
|
|
|
|
GEvent.Ins.emit(GEvent.UpdateRankStars); |
|
|
|
|
gg.ui.showToast(`段位已设为 ${rankId}(总星 ${total})`); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置星数': { |
|
|
|
|
@ -569,6 +514,8 @@ export class GM extends Component { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
gg.data.doc.rankStars = stars; |
|
|
|
|
const tier = RankDataManager.resolveTierByStars(stars); |
|
|
|
|
if (tier?.id) gg.data.doc.rankId = tier.id; |
|
|
|
|
HeadIconManager.onRankStarsChanged(); |
|
|
|
|
needSaveServer = true; |
|
|
|
|
void RankBoardManager.syncSelfScore(); |
|
|
|
|
@ -576,6 +523,39 @@ export class GM extends Component { |
|
|
|
|
gg.ui.showToast(`星数已设为 ${gg.data.doc.rankStars}`); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置段位和星级': { |
|
|
|
|
const parts = this.eb_prama.string.trim().split(/\s+/); |
|
|
|
|
const rankId = Math.floor(Number(parts[0])); |
|
|
|
|
const intra = Math.floor(Number(parts[1])); |
|
|
|
|
if (!Number.isFinite(rankId) || !Number.isFinite(intra) || parts.length < 2) { |
|
|
|
|
gg.ui.showToast('格式:段位id 星级(1~5)'); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
const total = RankDataManager.applyGmRankAndStar(rankId, intra); |
|
|
|
|
if (!(total > 0)) { |
|
|
|
|
const row = RankDataManager.getRankConfig(rankId); |
|
|
|
|
if (!row?.level || row.level.length < 2) { |
|
|
|
|
gg.ui.showToast('段位 id 无效'); |
|
|
|
|
} else { |
|
|
|
|
const min = Math.floor(Number(row.level[0]) || 1); |
|
|
|
|
const max = Math.floor(Number(row.level[1]) || 0); |
|
|
|
|
const span = max === -1 ? 5 : Math.max(1, max - min + 1); |
|
|
|
|
gg.ui.showToast(`星级须为 1~${span}`); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
HeadIconManager.onRankStarsChanged(); |
|
|
|
|
needSaveServer = true; |
|
|
|
|
void RankBoardManager.syncSelfScore(); |
|
|
|
|
GEvent.Ins.emit(GEvent.UpdateRankStars); |
|
|
|
|
const name = RankDataManager.getRankConfig(rankId)?.name?.trim() ?? ''; |
|
|
|
|
gg.ui.showToast( |
|
|
|
|
name |
|
|
|
|
? `段位 ${rankId}(${name}) 星级 ${intra}(总星 ${total})` |
|
|
|
|
: `段位 ${rankId} 星级 ${intra}(总星 ${total})`, |
|
|
|
|
); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
case '设置玩家局内血量': { |
|
|
|
|
const hp = this._readParamInt(); |
|
|
|
|
if (hp === null || hp <= 0) { |
|
|
|
|
@ -781,11 +761,11 @@ export class GM extends Component { |
|
|
|
|
【参数按钮】(先在输入框填参数再点按钮) |
|
|
|
|
· 设置道具数量:道具ID 数量(空格分隔) |
|
|
|
|
· 设置武器数量:武器ID 数量(空格分隔,写入成品库存) |
|
|
|
|
· 设置主动BUFF:Battlebuff.id(type=1),只写携带第1槽(有则替换;0/空=清空) |
|
|
|
|
· 设置被动BUFF:Battlebuff.id(type=2),只写携带第1槽(有则替换;0/空=清空) |
|
|
|
|
· 设置被动BUFF:Battlebuff.id,写入本局 CarryStore 被动列表 |
|
|
|
|
· 设置金钱 / 体力 / 钻石:单个数字 |
|
|
|
|
· 设置关卡解锁:章节 id |
|
|
|
|
· 设置星数:总星数(>=1) |
|
|
|
|
· 设置关卡解锁:段位 id(落到该段最低星,同步总星) |
|
|
|
|
· 设置星数:总星数(>=1),并反推段位 |
|
|
|
|
· 设置段位和星级:段位id 星级(空格分隔,星级 1~5) |
|
|
|
|
· 设置玩家局内血量:城墙最大血量 |
|
|
|
|
· 设置玩家等级:主角总等级 |
|
|
|
|
· 设置玩家存档:粘贴 JSON 存档 |
|
|
|
|
|