10263 【越南】【英文】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(快速战斗后退出副本优化buff通知)
3个文件已修改
78 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
@@ -168,6 +168,7 @@
        PlayerControl.SetPlayerSightLevel(curPlayer, self.battleID) # 视野层级默认为战场ID,每场战斗的玩家独立视野
        PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default * 3)
        GameObj.SetHPFull(curPlayer) # 回满血
        PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer))
        SkillCommon.ResetAllSkillCD(curPlayer) # 重置技能CD
        return
    
@@ -234,7 +235,8 @@
        return
    ownerPlayerID = battle.playerID
    isSysbg = battle.isSysbg
    GameWorld.DebugLog("清除镜像战斗: battleID=%s,ownerPlayerID=%s,isSysbg=%s" % (isSysbg, ownerPlayerID, isSysbg), battleID)
    isQuick = battle.isQuick
    GameWorld.DebugLog("清除镜像战斗: battleID=%s,ownerPlayerID=%s,isSysbg=%s,isQuick=%s" % (isSysbg, ownerPlayerID, isSysbg, isQuick), battleID)
    playerMgr = GameWorld.GetPlayerManager()
    tick = GameWorld.GetGameWorld().GetTick()
    
@@ -256,7 +258,12 @@
        curPlayer.SetFaction(info.get("Faction", 0))
        PlayerControl.SetPlayerSightLevel(curPlayer, info.get("SightLevel", 0))
        PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default)
        if not isQuick:
            continue
        GameObj.SetHPFull(curPlayer) # 回满血
        PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer))
        SkillCommon.ResetAllSkillCD(curPlayer) # 重置技能CD
        curPlayer.SetAttackTick(tick)
        ChPlayer.__Sync_ClientBuff(curPlayer)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py
@@ -440,6 +440,64 @@
m_NAtagUseSkillPos=tagUseSkillPos()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseSkillPos.Head.Cmd,m_NAtagUseSkillPos.Head.SubCmd))] = m_NAtagUseSkillPos
#06 12 根据类型清空对象的buff#tagClearObjBuff
class  tagClearObjBuff(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ObjType", c_ubyte),
                  ("ObjID", c_int),
                  ("BuffType", c_ubyte),    #buff类型
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0x06
        self.SubCmd = 0x12
        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 = 0x06
        self.SubCmd = 0x12
        self.ObjType = 0
        self.ObjID = 0
        self.BuffType = 0
        return
    def GetLength(self):
        return sizeof(tagClearObjBuff)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//06 12 根据类型清空对象的buff//tagClearObjBuff:
                                Cmd:%s,
                                SubCmd:%s,
                                ObjType:%d,
                                ObjID:%d,
                                BuffType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ObjType,
                                self.ObjID,
                                self.BuffType
                                )
        return DumpString
m_NAtagClearObjBuff=tagClearObjBuff()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagClearObjBuff.Cmd,m_NAtagClearObjBuff.SubCmd))] = m_NAtagClearObjBuff
#06 05 对象增加Buf#tagObjAddBuff
class  tagObjAddBuff(Structure):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -1265,12 +1265,23 @@
#@return 返回值无意义
#@remarks 通知玩家buff信息
def __Sync_ClientBuff(curPlayer):
    __SyncClearBuff(curPlayer)
    curPlayer.GetBuffState().Sync_Buff()
    curPlayer.GetDeBuffState().Sync_Buff()
    curPlayer.GetAura().Sync_Buff()
    curPlayer.GetIncBuff().Sync_Buff()
    curPlayer.GetProcessBuffState().Sync_Buff()
    curPlayer.GetProcessDeBuffState().Sync_Buff()
    return
def __SyncClearBuff(curPlayer):
    clientPack = ChNetSendPack.tagClearObjBuff()
    clientPack.Clear()
    clientPack.ObjType = curPlayer.GetGameObjType()
    clientPack.ObjID = curPlayer.GetID()
    clientPack.BuffType = 99 # 99代表清所有
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return
#---------------------------------------------------------------------
##上线时通知离线时间(离线挂机功能)