hxp
2018-08-30 103b3e459dccf87e3985911a36882d07b8f63efa
Add: 增加仙盟召集功能;
Fix:修复击杀进度同步错误问题;
5个文件已修改
146 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/PyNetPack.ini 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/PyNetPack.ini
@@ -319,7 +319,7 @@
Writer = xdh
Releaser = xdh
RegType = 0
RegisterPackCount = 2
RegisterPackCount = 3
PacketCMD_1=0xA9
PacketSubCMD_1=0x03
@@ -329,6 +329,10 @@
PacketSubCMD_2=0x04
PacketCallFunc_2=OnQueryAllFamilyBossHurt
PacketCMD_3=0xAC
PacketSubCMD_3=0x05
PacketCallFunc_3=OnCallupFamilyMemberToBoss
[PlayerXMZZ]
ScriptName = Player\PlayerXMZZ.py
Writer = xdh
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -1359,6 +1359,58 @@
#------------------------------------------------------
# AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
class  tagCGCallupFamilyMemberToBoss(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAC
        self.SubCmd = 0x05
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAC
        self.SubCmd = 0x05
        self.NPCID = 0
        return
    def GetLength(self):
        return sizeof(tagCGCallupFamilyMemberToBoss)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss:
                                Cmd:%s,
                                SubCmd:%s,
                                NPCID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.NPCID
                                )
        return DumpString
m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss
#------------------------------------------------------
# AC 02 仙魔之争战斗结束 #tagCGXMZZOver
class  tagCGXMZZOver(Structure):
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
@@ -45,6 +45,7 @@
import PyGameData
import PlayerGeTui
import time
import IPY_GameServer
@@ -178,7 +179,7 @@
        Sync_BossInfo(None, [bossID])
        
    # 仙盟归属boss的重置
    if bossID in PyGameData.g_familyOwnerBossInfo:
    if isAlive and bossID in PyGameData.g_familyOwnerBossInfo:
        PyGameData.g_familyOwnerBossInfo.pop(bossID)
    return
@@ -1050,6 +1051,7 @@
        return
    
    PyGameData.g_familyOwnerBossInfo.update(msgInfo)
    #GameWorld.DebugLog("    PyGameData.g_familyOwnerBossInfo=%s" % PyGameData.g_familyOwnerBossInfo)
    return
#// AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt
@@ -1079,3 +1081,27 @@
    NetPackCommon.SendFakePack(curPlayer, hurtPack)
    return
#// AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
#
#struct    tagCGCallupFamilyMemberToBoss
#{
#    tagHead        Head;
#    DWORD        NPCID;
#};
def OnCallupFamilyMemberToBoss(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    playerID = curPlayer.GetPlayerID()
    npcID = clientData.NPCID
    curFamily = curPlayer.GetFamily()
    if curFamily == None:
        return
    curMember = curFamily.FindMember(playerID)
    if curMember == None:
        return
    if curMember.GetFamilyLV() == IPY_GameServer.fmlMember:
        GameWorld.DebugLog("普通成员无法召集!", playerID)
        return
    PlayerControl.FamilyNotify(curFamily.GetID(), "FairyGrabBossHelp", [npcID])
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -1359,6 +1359,58 @@
#------------------------------------------------------
# AC 05 召集仙盟成员打boss #tagCGCallupFamilyMemberToBoss
class  tagCGCallupFamilyMemberToBoss(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAC
        self.SubCmd = 0x05
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAC
        self.SubCmd = 0x05
        self.NPCID = 0
        return
    def GetLength(self):
        return sizeof(tagCGCallupFamilyMemberToBoss)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AC 05 召集仙盟成员打boss //tagCGCallupFamilyMemberToBoss:
                                Cmd:%s,
                                SubCmd:%s,
                                NPCID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.NPCID
                                )
        return DumpString
m_NAtagCGCallupFamilyMemberToBoss=tagCGCallupFamilyMemberToBoss()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCallupFamilyMemberToBoss.Cmd,m_NAtagCGCallupFamilyMemberToBoss.SubCmd))] = m_NAtagCGCallupFamilyMemberToBoss
#------------------------------------------------------
# AC 02 仙魔之争战斗结束 #tagCGXMZZOver
class  tagCGXMZZOver(Structure):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py
@@ -244,9 +244,11 @@
    npcFamilyHisHurtDict = hurtMgr.familyHisHurtDict.get(key, {})
    npcFamilyPlayerIDDict = hurtMgr.familyPlayerIDDict.get(key, {})
    
    ownerFamilyName = ""
    if ownerFamilyID in npcFamilyHisHurtDict:
        ownerFamilyHisHurt = npcFamilyHisHurtDict[ownerFamilyID]
        PlayerControl.WorldNotify(0, "FairyGrabBossDead", [ownerFamilyHisHurt.name, bossID])
        ownerFamilyName = ownerFamilyHisHurt.name
        PlayerControl.WorldNotify(0, "FairyGrabBossDead", [ownerFamilyName, bossID])
        
    # 击杀结算前强制排序历史玩家伤血
    npcHisHurtPlayerList = npcPlayerHisHurtDict.values()
@@ -304,6 +306,10 @@
            if curPlayer:
                NetPackCommon.SendFakePack(curPlayer, hurtPack)
                
    # 击杀时主动同步进度
    syncMsg = str({bossID:[0, maxHP, ownerFamilyID, ownerFamilyName]})
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "FamilyOwnerBossInfo", syncMsg, len(syncMsg))
    # 伤血在NPCCommon统一清
    return