From 06eec1e27d26532824a710bba2483b0c7f39c27e Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期六, 22 十二月 2018 18:03:50 +0800 Subject: [PATCH] 5372 【后端】【1.4】聚魂副本开发(npc速度通知) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 16 +++++++- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py | 62 +++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py index a85e9db..a0526b3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChNetSendPack.py @@ -758,3 +758,65 @@ m_NAtagPlayerReborn=tagPlayerReborn() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerReborn.Cmd,m_NAtagPlayerReborn.SubCmd))] = m_NAtagPlayerReborn + +#04 18 周围对象刷新#tagObjInfoRefresh + +class tagObjInfoRefresh(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ObjID", c_int), + ("ObjType", c_ubyte), + ("RefreshType", c_ubyte), + ("Value", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0x04 + self.SubCmd = 0x18 + 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 = 0x04 + self.SubCmd = 0x18 + self.ObjID = 0 + self.ObjType = 0 + self.RefreshType = 0 + self.Value = 0 + return + + def GetLength(self): + return sizeof(tagObjInfoRefresh) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''//04 18 周围对象刷新//tagObjInfoRefresh: + Cmd:%s, + SubCmd:%s, + ObjID:%d, + ObjType:%d, + RefreshType:%d, + Value:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ObjID, + self.ObjType, + self.RefreshType, + self.Value + ) + return DumpString + + +m_NAtagObjInfoRefresh=tagObjInfoRefresh() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoRefresh.Cmd,m_NAtagObjInfoRefresh.SubCmd))] = m_NAtagObjInfoRefresh diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index 0853eaa..7599b01 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -24,7 +24,7 @@ import SkillShell import BuffSkill import BaseAttack -import PlayerTruck +import ChNetSendPack import SkillCommon import AttackCommon import ItemControler @@ -3791,9 +3791,11 @@ curNPC.SetDict(ChConfig.Def_NPC_Dict_SpeedPer, 0) return speed = int(curNPC.GetSpeed() * (ShareDefine.Def_MaxRateValue) / max(100.0, float(ShareDefine.Def_MaxRateValue + speedPer))) - curNPC.SetSpeed(speed) curNPC.SetDict(ChConfig.Def_NPC_Dict_SpeedPer, speedPer) + if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_GatherSoul: + #目前只在聚魂副本里通知 + NPCSpeedChangeNotify(curNPC, speed) return @@ -6080,3 +6082,13 @@ GameWorld.DebugLog("通知GameServer地图Boss分流信息: mapID=%s,lineID=%s,shuntPlayerDict=%s" % (mapID, lineID, shuntPlayerDict), lineID) return +def NPCSpeedChangeNotify(curNPC, speed): + ##通知NPC速度 + sendPack = ChNetSendPack.tagObjInfoRefresh() + sendPack.Clear() + sendPack.ObjID = curNPC.GetID() + sendPack.ObjType = curNPC.GetGameObjType() + sendPack.RefreshType = IPY_GameWorld.CDBPlayerRefresh_Speed + sendPack.Value = speed + curNPC.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength()) + return -- Gitblit v1.8.0