From 6b76741f4ea905c4de5997c40b0476bd63fa37b8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 一月 2024 16:27:29 +0800
Subject: [PATCH] 10019 【砍树】回合战斗(增加伤血统计、奖励结算及通知;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                 |   90 ++++++++++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py               |   61 ++++++++++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py    |    3 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                      |   90 ++++++++++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                        |    2 
 6 files changed, 184 insertions(+), 64 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 60c8c3e..7b29094 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -47689,72 +47689,106 @@
 # B4 20 回合制战斗状态 #tagMCTurnFightState
 
 class  tagMCTurnFightState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    # 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
-                  ("FuncLineID", c_ushort),    
-                  ("PlayerID", c_int),    # 对应玩家ID,可为0,某些功能可能有用,如竞技场
-                  ("State", c_ubyte),    # 0-开始;1-战斗中;2-胜利;3-失败;4-结束
-                  ("TurnNum", c_ubyte),    # 当前轮次
-                  ("TurnMax", c_ubyte),    # 最大轮次
-                  ]
+    Head = tagHead()
+    MapID = 0    #(DWORD MapID)// 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
+    FuncLineID = 0    #(WORD FuncLineID)
+    PlayerID = 0    #(DWORD PlayerID)// 对应玩家ID,可为0,某些功能可能有用,如竞技场
+    State = 0    #(BYTE State)// 0-开始;1-战斗中;2-胜利;3-失败;4-结束
+    TurnNum = 0    #(BYTE TurnNum)// 当前轮次
+    TurnMax = 0    #(BYTE TurnMax)// 最大轮次
+    Len = 0    #(WORD Len)
+    Msg = ""    #(String Msg)//size = Len
+    data = None
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xB4
-        self.SubCmd = 0x20
+        self.Head.Cmd = 0xB4
+        self.Head.SubCmd = 0x20
         return
 
-    def ReadData(self, stringData, _pos=0, _len=0):
+    def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TurnNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TurnMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+        return _pos
 
     def Clear(self):
-        self.Cmd = 0xB4
-        self.SubCmd = 0x20
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB4
+        self.Head.SubCmd = 0x20
         self.MapID = 0
         self.FuncLineID = 0
         self.PlayerID = 0
         self.State = 0
         self.TurnNum = 0
         self.TurnMax = 0
+        self.Len = 0
+        self.Msg = ""
         return
 
     def GetLength(self):
-        return sizeof(tagMCTurnFightState)
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 2
+        length += 4
+        length += 1
+        length += 1
+        length += 1
+        length += 2
+        length += len(self.Msg)
+
+        return length
 
     def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteWORD(data, self.FuncLineID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.State)
+        data = CommFunc.WriteBYTE(data, self.TurnNum)
+        data = CommFunc.WriteBYTE(data, self.TurnMax)
+        data = CommFunc.WriteWORD(data, self.Len)
+        data = CommFunc.WriteString(data, self.Len, self.Msg)
+        return data
 
     def OutputString(self):
-        DumpString = '''// B4 20 回合制战斗状态 //tagMCTurnFightState:
-                                Cmd:%s,
-                                SubCmd:%s,
+        DumpString = '''
+                                Head:%s,
                                 MapID:%d,
                                 FuncLineID:%d,
                                 PlayerID:%d,
                                 State:%d,
                                 TurnNum:%d,
-                                TurnMax:%d
+                                TurnMax:%d,
+                                Len:%d,
+                                Msg:%s
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
+                                self.Head.OutputString(),
                                 self.MapID,
                                 self.FuncLineID,
                                 self.PlayerID,
                                 self.State,
                                 self.TurnNum,
-                                self.TurnMax
+                                self.TurnMax,
+                                self.Len,
+                                self.Msg
                                 )
         return DumpString
 
 
 m_NAtagMCTurnFightState=tagMCTurnFightState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Cmd,m_NAtagMCTurnFightState.SubCmd))] = m_NAtagMCTurnFightState
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Head.Cmd,m_NAtagMCTurnFightState.Head.SubCmd))] = m_NAtagMCTurnFightState
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index 5e7d9ce..4397612 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -2459,6 +2459,8 @@
             atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtNPCObjID, defObj.GetID())
         else:
             defObj.SetDict(ChConfig.Def_PlayerKey_LastAttackerObjID, atkObj.GetID())
+            
+    TurnAttack.AddTurnObjHurtValue(atkObj, defObj, resultHurtType.HurtType, resultHurtType.RealHurtHP, curSkill)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index ad2a386..1cdcb8c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -32,6 +32,8 @@
 import PetControl
 import SkillShell
 import BuffSkill
+import FBCommon
+import ItemControler
 
 (
 FightState_Start,
@@ -52,7 +54,8 @@
         objName = "%s[%s]" % (objName, mirrorPlayerID)
     faction = GameObj.GetFaction(gameObj)
     fightPlaceNum = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_FightPetPlaceNum)
-    return "%s%s %s" % ("A" if faction == 1 else "B", fightPlaceNum, objName)
+    curID = gameObj.GetNPCID() if gameObj.GetGameObjType() == IPY_GameWorld.gotNPC else ""
+    return "%s%s %s%s" % ("A" if faction == 1 else "B", fightPlaceNum, objName, curID)
 
 #// B4 10 回合制战斗 #tagCMTurnFight
 #
@@ -94,7 +97,8 @@
 def DoTrunFight(curPlayer, mapID, funcLineID, tagPlayerID, tick):
     playerID = curPlayer.GetPlayerID()
     posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY()
-    GameWorld.DebugLog("===== 执行回合制战斗: mapID=%s,funcLineID=%s,tagPlayerID=%s" % (mapID, funcLineID, tagPlayerID), playerID)
+    GameWorld.DebugLog("===== 执行回合制战斗: mapID=%s,funcLineID=%s,playerID=%s,tagPlayerID=%s" % (mapID, funcLineID, playerID, tagPlayerID))
+    ipyData = None
     tagObj = None
     if tagPlayerID:
         npcID = ChConfig.Def_NPCID_PVP
@@ -205,16 +209,42 @@
             break
                 
     GameWorld.DebugLog("--- 战斗结束处理 ---")
-    overState = FightState_Win if isWin else FightState_Fail
-    SyncTurnFightState(curPlayer, mapID, funcLineID, tagPlayerID, overState, turnNum, turnMax)
+    # 统计总伤害
+    factionTotalHurtDict = {}
+    for gameObj in fightObjList:
+        if not gameObj:
+            continue
+        faction = GameObj.GetFaction(gameObj)
+        objName = GetObjName(gameObj)
+        objID = gameObj.GetID()
+        totalHurtEx = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnTotalHurtEx) * ChConfig.Def_PerPointValue
+        totalHurt = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnTotalHurt) + totalHurtEx
+        factionTotalHurtDict[faction] = factionTotalHurtDict.get(faction, 0) + totalHurt
+        GameWorld.DebugLog("%s objID=%s,faction=%s, 总输出: %s" % (objName, objID, faction, totalHurt))
+    for faction, totalHurt in factionTotalHurtDict.items():
+        GameWorld.DebugLog("faction=%s, 阵营总输出: %s" % (faction, totalHurt))
+        
+    GameWorld.DebugLog("玩家剩余血量: %s / %s" % (GameObj.GetHP(curPlayer), GameObj.GetMaxHP(curPlayer)))
+    GameWorld.DebugLog("对方剩余血量: %s / %s" % (GameObj.GetHP(tagObj), GameObj.GetMaxHP(tagObj)))
     
     # 结算奖励...待扩展
+    awardItemList = []
+    if isWin and ipyData:
+        # 山寨测试先默认都是首次奖励,正式后需删除
+        awardItemList = ipyData.GetAwardItemListFirst()
+        
+    GameWorld.DebugLog("奖励物品: %s" % awardItemList)
+    ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["TurnFight", False, {"mapID":mapID, "funcLineID":funcLineID}])
+    
+    overMsg = {"itemInfo":FBCommon.GetJsonItemList(awardItemList), "totalHurt":factionTotalHurtDict.get(1, 0)}
+    overState = FightState_Win if isWin else FightState_Fail
+    SyncTurnFightState(curPlayer, mapID, funcLineID, tagPlayerID, overState, turnNum, turnMax, str(overMsg))
     
     for gameObj in fightObjList:
         TurnFightObjOverReset(gameObj, tick)
         
-    GameWorld.DebugLog("===== 回合制战斗结束: mapID=%s,funcLineID=%s,tagPlayerID=%s,isWin=%s,overState=%s" 
-                       % (mapID, funcLineID, tagPlayerID, isWin, overState), playerID)
+    GameWorld.DebugLog("===== 回合制战斗结束: mapID=%s,funcLineID=%s,playerID=%s,tagPlayerID=%s,isWin=%s,overState=%s" 
+                       % (mapID, funcLineID, playerID, tagPlayerID, isWin, overState))
     return
 
 def CheckIswin(curPlayer, tagObj):
@@ -364,6 +394,8 @@
     isMainRole = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightMainRole)
     gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnFightID, playerID)
     gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnRebornCount, 0)
+    gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnTotalHurt, 0)
+    gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnTotalHurtEx, 0)
     SetTimeline(gameObj, 1, 0)
     GameObj.SetFaction(gameObj, faction)
     GameObj.SetHPFull(gameObj)
@@ -524,7 +556,7 @@
             if curBuff.GetCalcStartTick() > timeLine:
                 # 回合制中产生的buff是以timeline作为CalcStartTick的,所以超过timeline的可视为非回合制buff
                 continue
-            GameWorld.DebugLog("    删除回合制buff: buffSkillID=%s" % buffSkillID, objID)
+            GameWorld.DebugLog("    删除回合制buff: objID=%s,buffSkillID=%s" % (objID, buffSkillID))
             ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
             BuffSkill.DoBuffDisApper(gameObj, curBuff, tick)
             buffState.DeleteBuffByIndex(i)
@@ -551,6 +583,17 @@
     NPCCommon.SetDeadEx(gameObj)
     return
 
+def AddTurnObjHurtValue(curObj, tagObj, hurtType, hurtValue, curSkill=None):
+    if not curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline):
+        return
+    skillID = curSkill.GetSkillID() if curSkill else 0
+    totalHurtEx = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnTotalHurtEx) * ChConfig.Def_PerPointValue
+    totalHurt = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnTotalHurt) + totalHurtEx + hurtValue
+    curObj.SetDict(ChConfig.Def_Obj_Dict_TurnTotalHurt, totalHurt % ChConfig.Def_PerPointValue)
+    curObj.SetDict(ChConfig.Def_Obj_Dict_TurnTotalHurtEx, totalHurt / ChConfig.Def_PerPointValue)
+    GameWorld.DebugLog("        伤血: curTD=%s,tagID=%s,skillID=%s,hurtType=%s,hurtValue=%s,totalHurt=%s" 
+                       % (curObj.GetID(), tagObj.GetID(), skillID, hurtType, hurtValue, totalHurt))
+    return
 
 def DoAttack(curObj, tagObj, tick):
     curID = curObj.GetID()
@@ -780,7 +823,7 @@
             GameWorld.DebugLog("        %s 攻击失败: curID=%s,tagID=%s,atkOK=%s" % (objName, playerID, tagObjID, atkOK))
     return useSkillResult
 
-def SyncTurnFightState(curPlayer, mapID, funcLineID, tagPlayerID, state, turnNum=0, turnMax=0):
+def SyncTurnFightState(curPlayer, mapID, funcLineID, tagPlayerID, state, turnNum=0, turnMax=0, msg=""):
     clientPack = ChPyNetSendPack.tagMCTurnFightState()
     clientPack.Clear()
     clientPack.MapID = mapID
@@ -789,6 +832,8 @@
     clientPack.State = state
     clientPack.TurnNum = turnNum
     clientPack.TurnMax = turnMax
+    clientPack.Msg = msg
+    clientPack.Len = len(clientPack.Msg)    
     NetPackCommon.SendFakePack(curPlayer, clientPack)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index fd4728f..5f2ab02 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3074,6 +3074,8 @@
 Def_Obj_Dict_TurnComboNum = 'TurnComboNum' # 本回合已累计连击次数
 Def_Obj_Dict_TurnAtkBackNum = 'TurnAtkBackNum' # 本回合已累计反击次数
 Def_Obj_Dict_TurnBattleType = 'TurnBattleType' # 本次攻击战斗类型:TurnBattleType_xxx
+Def_Obj_Dict_TurnTotalHurt = 'TurnTotalHurt' # 本回合制战斗总伤害,求余亿部分
+Def_Obj_Dict_TurnTotalHurtEx = 'TurnTotalHurtEx' # 本回合制战斗总伤害,整除亿部分
 Def_Obj_Dict_FightPetPlaceNum = 'FightPetPlaceNum' # 出战灵宠上阵位置,1~n
 Def_Obj_Dict_FightPetQuality = 'FightPetQuality' # 出战灵宠品质
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 60c8c3e..7b29094 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -47689,72 +47689,106 @@
 # B4 20 回合制战斗状态 #tagMCTurnFightState
 
 class  tagMCTurnFightState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    # 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
-                  ("FuncLineID", c_ushort),    
-                  ("PlayerID", c_int),    # 对应玩家ID,可为0,某些功能可能有用,如竞技场
-                  ("State", c_ubyte),    # 0-开始;1-战斗中;2-胜利;3-失败;4-结束
-                  ("TurnNum", c_ubyte),    # 当前轮次
-                  ("TurnMax", c_ubyte),    # 最大轮次
-                  ]
+    Head = tagHead()
+    MapID = 0    #(DWORD MapID)// 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
+    FuncLineID = 0    #(WORD FuncLineID)
+    PlayerID = 0    #(DWORD PlayerID)// 对应玩家ID,可为0,某些功能可能有用,如竞技场
+    State = 0    #(BYTE State)// 0-开始;1-战斗中;2-胜利;3-失败;4-结束
+    TurnNum = 0    #(BYTE TurnNum)// 当前轮次
+    TurnMax = 0    #(BYTE TurnMax)// 最大轮次
+    Len = 0    #(WORD Len)
+    Msg = ""    #(String Msg)//size = Len
+    data = None
 
     def __init__(self):
         self.Clear()
-        self.Cmd = 0xB4
-        self.SubCmd = 0x20
+        self.Head.Cmd = 0xB4
+        self.Head.SubCmd = 0x20
         return
 
-    def ReadData(self, stringData, _pos=0, _len=0):
+    def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TurnNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TurnMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+        return _pos
 
     def Clear(self):
-        self.Cmd = 0xB4
-        self.SubCmd = 0x20
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB4
+        self.Head.SubCmd = 0x20
         self.MapID = 0
         self.FuncLineID = 0
         self.PlayerID = 0
         self.State = 0
         self.TurnNum = 0
         self.TurnMax = 0
+        self.Len = 0
+        self.Msg = ""
         return
 
     def GetLength(self):
-        return sizeof(tagMCTurnFightState)
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 2
+        length += 4
+        length += 1
+        length += 1
+        length += 1
+        length += 2
+        length += len(self.Msg)
+
+        return length
 
     def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.MapID)
+        data = CommFunc.WriteWORD(data, self.FuncLineID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.State)
+        data = CommFunc.WriteBYTE(data, self.TurnNum)
+        data = CommFunc.WriteBYTE(data, self.TurnMax)
+        data = CommFunc.WriteWORD(data, self.Len)
+        data = CommFunc.WriteString(data, self.Len, self.Msg)
+        return data
 
     def OutputString(self):
-        DumpString = '''// B4 20 回合制战斗状态 //tagMCTurnFightState:
-                                Cmd:%s,
-                                SubCmd:%s,
+        DumpString = '''
+                                Head:%s,
                                 MapID:%d,
                                 FuncLineID:%d,
                                 PlayerID:%d,
                                 State:%d,
                                 TurnNum:%d,
-                                TurnMax:%d
+                                TurnMax:%d,
+                                Len:%d,
+                                Msg:%s
                                 '''\
                                 %(
-                                self.Cmd,
-                                self.SubCmd,
+                                self.Head.OutputString(),
                                 self.MapID,
                                 self.FuncLineID,
                                 self.PlayerID,
                                 self.State,
                                 self.TurnNum,
-                                self.TurnMax
+                                self.TurnMax,
+                                self.Len,
+                                self.Msg
                                 )
         return DumpString
 
 
 m_NAtagMCTurnFightState=tagMCTurnFightState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Cmd,m_NAtagMCTurnFightState.SubCmd))] = m_NAtagMCTurnFightState
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Head.Cmd,m_NAtagMCTurnFightState.Head.SubCmd))] = m_NAtagMCTurnFightState
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index f3d9239..d000762 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -34,6 +34,7 @@
 import GameObj
 import PassiveBuffEffMng
 import IpyGameDataPY
+import TurnAttack
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -1408,6 +1409,8 @@
         elif curObjType == IPY_GameWorld.gotNPC:
             AttackCommon.NPCAddObjInHurtList(attackerOwner, curObj, curObjHP_BeforeAttack, lostValue)
             
+    TurnAttack.AddTurnObjHurtValue(buffOwner, curObj, hurtType, lostValue, curSkill)
+    
     #统一调用攻击结束动作
     if isDoAttackResult:
         BaseAttack.DoLogic_AttackResult(buffOwner, curObj, None, tick)

--
Gitblit v1.8.0