ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py
@@ -17,10 +17,12 @@
import ChConfig
import GameWorld
import ChPyNetPack
import ChPyNetSendPack
import NetPackCommon
import TurnAttack
import BattleObj
import TurnBuff
FactionList = [1, 2]
@@ -31,8 +33,10 @@
#  @remarks 函数详细说明.
def OnExec(curPlayer, msgList):
    if not msgList:
        GameWorld.DebugAnswer(curPlayer, "发起战斗: TurnFight mapID [lineID 玩家ID]")
        GameWorld.DebugAnswer(curPlayer, "设置属性: TurnFight a 属性ID 值 [阵营 位置] ")
        GameWorld.DebugAnswer(curPlayer, "击杀目标: TurnFight k 阵营 [位置 ...] ")
        GameWorld.DebugAnswer(curPlayer, "添加buff: TurnFight b 阵营  位置 buff技能ID")
        GameWorld.DebugAnswer(curPlayer, "输出明细: TurnFight p [阵营 位置] ")
        GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
        GameWorld.DebugAnswer(curPlayer, "位置: 1~6号位")
@@ -44,20 +48,39 @@
        __doSetAttr(curPlayer, msgList)
    elif value == "k":
        __doKillObj(curPlayer, msgList)
    elif value == "b":
        __doAddBuff(curPlayer, msgList)
    elif value == "p":
        __printInfo(curPlayer, msgList)
    elif value > 0 and value != ChConfig.Def_FBMapID_Main:
        __reqTurnFight(curPlayer, msgList)
    return
def __reqTurnFight(curPlayer, msgList):
    mapID = msgList[0]
    funcLineID = msgList[1] if len(msgList) > 1 else 0
    tagPlayerID = msgList[2] if len(msgList) > 2 else 0
    clientData = ChPyNetPack.tagCMTurnFight()
    clientData.MapID = mapID
    clientData.FuncLineID = funcLineID
    clientData.TagType = 0 if not tagPlayerID else 1
    clientData.TagID = tagPlayerID
    index = curPlayer.GetIndex()
    tick = GameWorld.GetGameWorld().GetTick()
    TurnAttack.OnTurnFight(index, clientData, tick)
    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
    attrValue = msgList[2] if len(msgList) > 2 else 1
    faction = msgList[3] if len(msgList) > 3 else 0
    pNum = msgList[4] if len(msgList) > 4 else 0
    
    if faction not in FactionList:
        GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
    factionList = [faction] if faction else FactionList
    if attrID not in ChConfig.AttrIDList:
        GameWorld.DebugAnswer(curPlayer, "不存在该属性ID:%s" % (attrID))
        return
    
    mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer)
@@ -65,34 +88,35 @@
    if not turnFight.isInFight():
        GameWorld.DebugAnswer(curPlayer, "主线非战斗中")
        return
    batFaction = turnFight.getBatFaction(faction)
    batLineup = batFaction.getBatlineup(1)
    objID = batLineup.posObjIDDict.get(posNum)
    batObj = None
    GameWorld.DebugAnswer(curPlayer, "----- 设置属性 -----")
    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))
    for faction in factionList:
        if faction not in FactionList:
            GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
            continue
        batFaction = turnFight.getBatFaction(faction)
        batLineup = batFaction.getBatlineup(1)
        posNumList = [pNum] if pNum else batLineup.posObjIDDict.keys()
        for posNum in posNumList:
            objID = batLineup.posObjIDDict.get(posNum)
            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
            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):
@@ -118,10 +142,10 @@
            continue
        batObj = batObjMgr.getBatObj(objID)
        if not batObj:
            GameWorld.DebugAnswer(curPlayer, "不存在该战斗对象:阵营:%s,位置:%s" % (faction, posNum))
            GameWorld.DebugAnswer(curPlayer, "对象不存在:阵营:%s,位置:%s" % (faction, posNum))
            continue
        if not batObj.IsAlive():
            GameWorld.DebugAnswer(curPlayer, "该对象已被击杀:阵营:%s,位置:%s" % (faction, posNum))
            GameWorld.DebugAnswer(curPlayer, "对象已阵亡:阵营:%s,位置:%s" % (faction, posNum))
            continue
        GameWorld.DebugAnswer(curPlayer, "击杀: %s" % TurnAttack.GetObjName(batObj))
        TurnAttack.SetObjKilled(turnFight, batObj)
@@ -132,6 +156,38 @@
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return
def __doAddBuff(curPlayer, msgList):
    faction = msgList[1] if len(msgList) > 1 else 2
    posNum = msgList[2] if len(msgList) > 2 else 1
    skillID = msgList[3] if len(msgList) > 3 else 0
    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
    batObjMgr = BattleObj.GetBatObjMgr()
    batFaction = turnFight.getBatFaction(faction)
    batLineup = batFaction.getBatlineup(1)
    objID = batLineup.posObjIDDict.get(posNum)
    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
    addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID)
    if addBuff:
        GameWorld.DebugAnswer(curPlayer, "添加buff成功! buffID=%s" % addBuff.GetBuffID())
    else:
        GameWorld.DebugAnswer(curPlayer, "添加buff失败")
    return
def __printInfo(curPlayer, msgList):
    ## 输出信息
    faction = msgList[1] if len(msgList) > 1 else 0