hxp
2025-10-21 ec19547ca0985de3f1c4045411ee6c171204e535
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MainLevel.py
@@ -18,25 +18,66 @@
import GameWorld
import PlayerControl
import IpyGameDataPY
import GameLogic_MainLevel
import IPY_GameWorld
import ClearPack
import ChConfig
def OnExec(curPlayer, gmList):
    
    if not gmList:
        GameWorld.DebugAnswer(curPlayer, "重置主线: MainLevel 0")
        GameWorld.DebugAnswer(curPlayer, "设置主线: MainLevel 章节 关卡 波")
        GameWorld.DebugAnswer(curPlayer, "设置主线: MainLevel 章节 关卡 波 [是否同波]")
        GameWorld.DebugAnswer(curPlayer, "测试击杀: MainLevel k 消耗战锤数")
        GameWorld.DebugAnswer(curPlayer, "重置掉落: MainLevel d 0 [是否清掉落背包]")
        GameWorld.DebugAnswer(curPlayer, "重置战利: MainLevel b 0")
        GameWorld.DebugAnswer(curPlayer, "设置战利: MainLevel b 战利品ID 已掉落个数")
        return
    
    value = gmList[0]
    
    if value == "k":
        useXiantao = gmList[1] if len(gmList) > 1 else 1
        GameLogic_MainLevel.GMTestKill(curPlayer, useXiantao)
        return
    if value == "d":
        unXiantao = gmList[1] if len(gmList) > 1 else 1
        if unXiantao == 0:
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntExp, 0)
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, 0)
            GameLogic_MainLevel.ResetBootyDropToday(curPlayer)
            clearDropPack = gmList[2] if len(gmList) > 2 else 0
            if clearDropPack:
                ClearPack.__DoLogic_Clear_Pack(curPlayer, IPY_GameWorld.rptIdentify)
            GameWorld.DebugAnswer(curPlayer, "重置未结算战锤掉落OK!")
            return
        return
    if value == "b":
        itemID = gmList[1] if len(gmList) > 1 else 1
        dropTotal = gmList[2] if len(gmList) > 2 else 1
        if not itemID:
            GameLogic_MainLevel.ResetBootyDropToday(curPlayer)
            return
        bootyItemIDList = GameLogic_MainLevel.GetBootyItemIDList()
        if itemID not in bootyItemIDList:
            GameWorld.DebugAnswer(curPlayer, "战利品ID(%s) not in %s" % (itemID, bootyItemIDList))
            return
        GameLogic_MainLevel.SetBootyDropToday(curPlayer, itemID, dropTotal)
        GameWorld.DebugAnswer(curPlayer, "设置战利品(%s)今日掉落: %s" % (itemID, dropTotal))
        return
    if value <= 0:
        nowValue = PlayerControl.SetMainLevelNowInfo(curPlayer, 1, 1, 1)
        passValue = PlayerControl.SetMainLevelPassInfo(curPlayer, 0, 0, 0)
        passValue = PlayerControl.SetMainLevelPassInfo(curPlayer, 1, 1, 0)
        GameWorld.DebugAnswer(curPlayer, "重置主线:now=%s,pass=%s" % (nowValue, passValue))
        return
    
    chapterID = value
    levelNum = gmList[1] if len(gmList) > 1 else 1
    wave = gmList[2] if len(gmList) > 2 else 1
    isSameWave = gmList[3] if len(gmList) > 3 else 0
    
    levelIpyData = IpyGameDataPY.GetIpyGameData("MainLevel", chapterID, levelNum)
    if not levelIpyData:
@@ -51,6 +92,6 @@
        wave = waveMax
        
    nowValue = PlayerControl.SetMainLevelNowInfo(curPlayer, chapterID, levelNum, wave)
    passValue = PlayerControl.SetMainLevelPassInfo(curPlayer, chapterID, levelNum, wave)
    passValue = PlayerControl.SetMainLevelPassInfo(curPlayer, chapterID, levelNum, wave if isSameWave else max(0, wave - 1))
    GameWorld.DebugAnswer(curPlayer, "设置主线:章关=%s-%s,波=%s,%s,%s" % (chapterID, levelNum, wave, nowValue, passValue))
    return