From c280ced8be799a899efc78b21cc807d435ab6609 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 10 二月 2026 19:34:03 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(退出公会时间根据当前是否互通取对应的本服或跨服时间;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py |  178 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 115 insertions(+), 63 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py
index 1b854b5..c062c76 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py
@@ -36,11 +36,13 @@
         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, "添加buff: TurnFight b 阵营  位置 buff归属阵营 位置 技能ID [ID ...]")
         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-怒")
+        GameWorld.DebugAnswer(curPlayer, "测试战斗: TurnFight f 是否满技能 [武将ID ...]")
+        GameWorld.DebugAnswer(curPlayer, "测试战斗: TurnFight fp [playerID]")
         return
     
     value = msgList[0]
@@ -52,6 +54,11 @@
         __doAddBuff(curPlayer, msgList)
     elif value == "p":
         __printInfo(curPlayer, msgList)
+    elif value == "f":
+        __doFightTest(curPlayer, msgList)
+    elif value == "fp":
+        costTime = TurnAttack.GMTestPVP(curPlayer, msgList[1] if len(msgList) > 1 else 0)
+        GameWorld.DebugAnswer(curPlayer, "GMTestPVP: %s" % costTime)
     elif value > 0 and value != ChConfig.Def_FBMapID_Main:
         __reqTurnFight(curPlayer, msgList)
     return
@@ -67,18 +74,21 @@
     clientData.TagID = tagPlayerID
     index = curPlayer.GetIndex()
     tick = GameWorld.GetGameWorld().GetTick()
-    TurnAttack.OnTurnFight(index, clientData, tick)
+    if not TurnAttack.OnTurnFight(index, clientData, tick):
+        GameWorld.DebugAnswer(curPlayer, "请求失败,详见服务器日志!")
     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)
@@ -86,34 +96,36 @@
     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)
+        posObjIDDict = batLineup.getPosObjIDDict()
+        posNumList = [pNum] if pNum else posObjIDDict.keys()
+        for posNum in posNumList:
+            objID = 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):
@@ -133,16 +145,17 @@
     batObjMgr = BattleObj.GetBatObjMgr()
     batFaction = turnFight.getBatFaction(faction)
     batLineup = batFaction.getBatlineup(1)
+    posObjIDDict = batLineup.getPosObjIDDict()
     for posNum in posNumList:
-        objID = batLineup.posObjIDDict.get(posNum)
+        objID = posObjIDDict.get(posNum)
         if not objID:
             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)
@@ -156,7 +169,9 @@
 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
+    ownerFaction = msgList[3] if len(msgList) > 3 else faction
+    ownerPosNum = msgList[4] if len(msgList) > 4 else posNum
+    skillIDList = msgList[5:]
     if faction not in FactionList:
         GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
         return
@@ -169,20 +184,32 @@
     batObjMgr = BattleObj.GetBatObjMgr()
     batFaction = turnFight.getBatFaction(faction)
     batLineup = batFaction.getBatlineup(1)
-    objID = batLineup.posObjIDDict.get(posNum)
+    objID = batLineup.getPosObjIDDict().get(posNum)
     batObj = batObjMgr.getBatObj(objID)
     if not batObj:
-        GameWorld.DebugAnswer(curPlayer, "不存在该战斗对象:阵营:%s,位置:%s" % (faction, posNum))
+        GameWorld.DebugAnswer(curPlayer, "对象不存在:阵营:%s,位置:%s" % (faction, posNum))
         return
     if not batObj.IsAlive():
-        GameWorld.DebugAnswer(curPlayer, "该对象已被击杀:阵营:%s,位置:%s" % (faction, posNum))
+        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失败")
+    ownerFaction = turnFight.getBatFaction(ownerFaction)
+    ownerLineup = ownerFaction.getBatlineup(1)
+    ownerID = ownerLineup.getPosObjIDDict().get(ownerPosNum)
+    buffOwner = batObjMgr.getBatObj(ownerID)
+    if not buffOwner:
+        GameWorld.DebugAnswer(curPlayer, "对象不存在:阵营:%s,位置:%s" % (ownerFaction, ownerPosNum))
+        return
+    if not buffOwner.IsAlive():
+        GameWorld.DebugAnswer(curPlayer, "对象已阵亡:阵营:%s,位置:%s" % (ownerFaction, ownerPosNum))
+        return
+    
+    for skillID in skillIDList:
+        addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner)
+        if addBuff:
+            GameWorld.DebugAnswer(curPlayer, "添加buff成功!skillID=%s,buffID=%s" % (skillID, addBuff.GetBuffID()))    
+        else:
+            GameWorld.DebugAnswer(curPlayer, "添加buff失败!skillID=%s" % (skillID))
     return
 
 def __printInfo(curPlayer, msgList):
@@ -205,28 +232,53 @@
         GameWorld.DebugAnswer(curPlayer, "---------- 【阵营%s】 ----------" % faction)
         batFaction = turnFight.getBatFaction(faction)
         batLineup = batFaction.getBatlineup(1)
+        mgObj = batLineup.getMinggeObj()
+        if mgObj:
+            objName = "命格 ID:%s" % mgObj.GetID()
+            __printObj(curPlayer, mgObj, objName)
+            
+        posObjIDDict = batLineup.getPosObjIDDict()
         for posNum in posNumList:
-            objID = batLineup.posObjIDDict.get(posNum)
+            objID = 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()]
-                                         ))
-                
+            __printObj(curPlayer, batObj, objName)
+            
     return
 
+def __printObj(curPlayer, batObj, objName):
+    GameWorld.DebugAnswer(curPlayer, "--- %s%s" % (objName, "" if batObj.IsAlive() else " [被击杀]"))
+    GameWorld.DebugAnswer(curPlayer, "HP:%s/%s" % (batObj.GetHP(), batObj.GetMaxHP()))
+    GameWorld.DebugAnswer(curPlayer, "攻:%s,防:%s,怒:%s" % (batObj.GetAtk(), batObj.GetDef(), batObj.GetXP()))
+    attrStr = ""
+    attrDict = batObj.GetBatAttrDict()
+    attrIDList = attrDict.keys()
+    attrIDList.sort()
+    for attrID in attrIDList:
+        attrValue = attrDict[attrID]
+        if attrValue:
+            attrStr += "%s=%s;" % (attrID, attrValue)
+    GameWorld.DebugAnswer(curPlayer, "属性:%s" % attrStr)
+    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)
+        buffName = GameWorld.CodeToGbk(buff.GetSkillData().GetSkillName())
+        GameWorld.DebugAnswer(curPlayer, "ID:%s,%s(%s),回合:%s,层:%s,V:%s,来源:%s,光环:%s" 
+                              % (buff.GetBuffID(), buffName, buff.GetSkillID(), buff.GetRemainTime(), buff.GetLayer(), 
+                                 [buff.GetValue1(), buff.GetValue2(), buff.GetValue3()], buff.GetOwnerID(), buff.GetHaloObjIDList()
+                                 ))
+    return
+
+def __doFightTest(curPlayer, msgList):
+    ## 测试战斗: TurnFight f 是否满技能 [位置1武将ID ...]
+    isAllSkill = msgList[1] if len(msgList) > 1 else 1
+    heroIDList = msgList[2:]
+    TurnAttack.GMTestFight(curPlayer, heroIDList, isAllSkill)
+    return
 

--
Gitblit v1.8.0