#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.TurnFight # # @todo:»ØºÏÕ½¶· # @author hxp # @date 2025-09-25 # @version 1.0 # # ÏêϸÃèÊö: »ØºÏÕ½¶· # #------------------------------------------------------------------------------- #"""Version = 2025-09-25 17:30""" #------------------------------------------------------------------------------- import ChConfig import GameWorld import ChPyNetSendPack import NetPackCommon import TurnAttack import BattleObj FactionList = [1, 2] ## GMÃüÁîÖ´ÐÐÈë¿Ú # @param curPlayer µ±Ç°Íæ¼Ò # @param msgList ²ÎÊýÁбí # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(curPlayer, msgList): if not msgList: GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÊôÐÔ: TurnFight a ÊôÐÔID Öµ [ÕóÓª λÖÃ] ") GameWorld.DebugAnswer(curPlayer, "»÷ɱĿ±ê: TurnFight k ÕóÓª [λÖà ...] ") GameWorld.DebugAnswer(curPlayer, "Êä³öÃ÷ϸ: TurnFight p [ÕóÓª λÖÃ] ") GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß") GameWorld.DebugAnswer(curPlayer, "λÖ㺠1~6ºÅλ") GameWorld.DebugAnswer(curPlayer, "ÊôÐÔID: 6-¹¥,7-·À,8-HPMax,9-HP,12-Å­") return value = msgList[0] if value == "a": __doSetAttr(curPlayer, msgList) elif value == "k": __doKillObj(curPlayer, msgList) elif value == "p": __printInfo(curPlayer, msgList) return def __doSetAttr(curPlayer, msgList): ## ÉèÖÃÊôÐÔ attrID = msgList[1] if len(msgList) > 1 else 1 attrValue = msgList[2] if len(msgList) > 2 else 1 faction = msgList[3] if len(msgList) > 3 else 1 posNum = msgList[4] if len(msgList) > 4 else 1 if faction not in FactionList: GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß") return mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer) turnFight = mainFightMgr.turnFight if not turnFight.isInFight(): GameWorld.DebugAnswer(curPlayer, "Ö÷Ïß·ÇÕ½¶·ÖÐ") return batFaction = turnFight.getBatFaction(faction) batLineup = batFaction.getBatlineup(1) objID = batLineup.posObjIDDict.get(posNum) batObj = None batObjMgr = BattleObj.GetBatObjMgr() if objID: batObj = batObjMgr.getBatObj(objID) if not batObj: GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸ÃÕ½¶·¶ÔÏó:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum)) return if not batObj.IsAlive(): GameWorld.DebugAnswer(curPlayer, "¸Ã¶ÔÏóÒѱ»»÷ɱ:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum)) return if attrID not in ChConfig.AttrIDList: GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸ÃÊôÐÔID:%s" % (attrID)) return objName = TurnAttack.GetObjName(batObj) GameWorld.DebugAnswer(curPlayer, "%s" % (objName)) batObj.GMSetBatAttr(attrID, attrValue) if attrID == ChConfig.AttrID_HP: GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÉúÃü:%s/%s" % (batObj.GetHP(), batObj.GetMaxHP())) elif attrID == ChConfig.AttrID_XP: GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÅ­Æø:%s" % (batObj.GetXP())) else: GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÊôÐÔID:%s,V=%s" % (attrID, attrValue)) return def __doKillObj(curPlayer, msgList): faction = msgList[1] if len(msgList) > 1 else 2 posNumList = msgList[2:] if faction not in FactionList: GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß") return mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer) turnFight = mainFightMgr.turnFight if not turnFight.isInFight(): GameWorld.DebugAnswer(curPlayer, "Ö÷Ïß·ÇÕ½¶·ÖÐ") return clientPack = ChPyNetSendPack.tagSCTurnFightReportSign() clientPack.Sign = 0 batObjMgr = BattleObj.GetBatObjMgr() batFaction = turnFight.getBatFaction(faction) batLineup = batFaction.getBatlineup(1) for posNum in posNumList: objID = batLineup.posObjIDDict.get(posNum) if not objID: continue batObj = batObjMgr.getBatObj(objID) if not batObj: GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸ÃÕ½¶·¶ÔÏó:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum)) continue if not batObj.IsAlive(): GameWorld.DebugAnswer(curPlayer, "¸Ã¶ÔÏóÒѱ»»÷ɱ:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum)) continue GameWorld.DebugAnswer(curPlayer, "»÷ɱ: %s" % TurnAttack.GetObjName(batObj)) TurnAttack.SetObjKilled(turnFight, batObj) turnFight.checkOverByKilled() clientPack.Sign = 1 NetPackCommon.SendFakePack(curPlayer, clientPack) return def __printInfo(curPlayer, msgList): ## Êä³öÐÅÏ¢ faction = msgList[1] if len(msgList) > 1 else 0 posNum = msgList[2] if len(msgList) > 2 else 0 factionList = [faction] if faction else FactionList posNumList = [posNum] if posNum else range(1, 1 + 6) mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer) turnFight = mainFightMgr.turnFight if not turnFight.isInFight(): GameWorld.DebugAnswer(curPlayer, "Ö÷Ïß·ÇÕ½¶·ÖÐ") return batObjMgr = BattleObj.GetBatObjMgr() for faction in factionList: if faction not in FactionList: GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß") continue GameWorld.DebugAnswer(curPlayer, "---------- ¡¾ÕóÓª%s¡¿ ----------" % faction) batFaction = turnFight.getBatFaction(faction) batLineup = batFaction.getBatlineup(1) for posNum in posNumList: objID = batLineup.posObjIDDict.get(posNum) if not objID: continue batObj = batObjMgr.getBatObj(objID) objName = TurnAttack.GetObjName(batObj) GameWorld.DebugAnswer(curPlayer, "--- %s%s" % (objName, "" if batObj.IsAlive() else " [±»»÷ɱ]")) GameWorld.DebugAnswer(curPlayer, "HP:%s/%s, Atk:%s, Def:%s" % (batObj.GetHP(), batObj.GetMaxHP(), batObj.GetAtk(), batObj.GetDef())) attrDict = batObj.GetBatAttrDict() GameWorld.DebugAnswer(curPlayer, "ÊôÐÔ:%s" % attrDict) skillMgr = batObj.GetSkillManager() skillIDList = skillMgr.GetSkillIDList() GameWorld.DebugAnswer(curPlayer, "¼¼ÄÜ: %s,%s" % (len(skillIDList), skillIDList)) buffMgr = batObj.GetBuffManager() GameWorld.DebugAnswer(curPlayer, "Buff: %s" % buffMgr.GetBuffCount()) for index in range(buffMgr.GetBuffCount()): buff = buffMgr.GetBuffByIndex(index) GameWorld.DebugAnswer(curPlayer, "ID:%s,SkillID:%s,»ØºÏ:%s,²ã:%s,V:%s" % (buff.GetBuffID(), buff.GetSkillID(), buff.GetRemainTime(), buff.GetLayer(), [buff.GetValue1(), buff.GetValue2(), buff.GetValue3()] )) return