5722 【后端】【1.5】跨服BOSS开发(修改C1 06 跨服NPC对话 #tagCMCrossNPCTalk)
| | |
| | | DWORD _NPCID; //ID
|
| | | BYTE PrepareTime; //采集耗时,秒
|
| | | list LostHPPer; //采集掉血,[每X秒,掉血百分比]
|
| | | BYTE CollectCount; //每日可采集次数,0限制
|
| | | BYTE MaxCollectCount; //每日可采集次数,0限制
|
| | | char CollectCountLimitNotify; //无采集次数采集提示
|
| | | list CollectAward; //采集奖励物品, [物品ID,个数,是否绑定]
|
| | | };
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_ushort), |
| | | ("ObjID", c_int), |
| | | ("NPCID", c_int),
|
| | | ("PosX", c_ushort),
|
| | | ("PosY", c_ushort),
|
| | |
| | | MapServer_CrossSetPlayerAttrValue(msgData)
|
| | |
|
| | | # 需要发送到地图服务器处理的
|
| | | elif msgType in [ShareDefine.ClientServerMsg_Reborn]:
|
| | | elif msgType in [ShareDefine.ClientServerMsg_Reborn, ShareDefine.ClientServerMsg_CollectNPC]:
|
| | | MapServer_CrossServerReceiveMsg(msgType, msgData, serverGroupID)
|
| | |
|
| | | else:
|
| | |
| | | PlayerQuery.CrossServerMsg_NPCInfoRet(msgData, tick)
|
| | |
|
| | | # 需要发送到地图服务器处理的
|
| | | elif msgType in [ShareDefine.CrossServerMsg_RebornRet]:
|
| | | elif msgType in [ShareDefine.CrossServerMsg_RebornRet, ShareDefine.CrossServerMsg_CollectNPCOK]:
|
| | | MapServer_ClientServerReceiveMsg(msgType, msgData)
|
| | |
|
| | | elif msgType == ShareDefine.CrossServerMsg_CrossServerState:
|
| | |
| | | CrossServerMsg_DropGoodItem = "DropGoodItem" # 掉落好物品
|
| | | CrossServerMsg_RebornRet = "RebornRet" # 复活结果
|
| | | CrossServerMsg_NPCInfoRet = "NPCInfoRet" # 跨服地图NPC信息
|
| | | CrossServerMsg_CollectNPCOK = "CollectNPCOK" # 采集NPC完成
|
| | |
|
| | | # 子服发送跨服信息定义
|
| | | ClientServerMsg_ServerInitOK = "ServerInitOK" # 子服启动成功
|
| | |
| | | ClientServerMsg_Reborn = "Reborn" # 复活
|
| | | ClientServerMsg_QueryNPCInfo = "QueryNPCInfo" # 查询跨服地图NPC信息
|
| | | ClientServerMsg_SetPlayerAttrValue = "SetPlayerAttrValue" # 玩家属性数值更新
|
| | | ClientServerMsg_CollectNPC = "CollectNPC" # 采集NPC
|
| | |
|
| | | #角色改名结果
|
| | | (
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_ushort), |
| | | ("ObjID", c_int), |
| | | ("NPCID", c_int),
|
| | | ("PosX", c_ushort),
|
| | | ("PosY", c_ushort),
|
| | |
| | | ## 发送信息到跨服服务器
|
| | | msgList = str([msgType, dataMsg])
|
| | | GetPlayerManager().GameServer_QueryPlayerResult(srcPlayerID, queryType, queryID, "SendMsgToCrossServer", msgList, len(msgList))
|
| | | DebugLog("发送跨服信息: %s, %s" % (msgType, dataMsg))
|
| | | return
|
| | |
|
| | | def SendMsgToClientServer(msgType, dataMsg, serverGroupIDList, srcPlayerID=0, queryType=0, queryID=0):
|
| | | ## 发送信息到子服
|
| | | msgList = str([msgType, dataMsg, serverGroupIDList])
|
| | | GetPlayerManager().GameServer_QueryPlayerResult(srcPlayerID, queryType, queryID, "SendMsgToClientServer", msgList, len(msgList))
|
| | | DebugLog("发送子服信息: %s, %s, serverGroupIDList=%s" % (msgType, dataMsg, serverGroupIDList))
|
| | | return
|
| | |
|
| | | ## 根据排行获取名次对应值
|
| | |
| | | ("DWORD", "NPCID", 1),
|
| | | ("BYTE", "PrepareTime", 0),
|
| | | ("list", "LostHPPer", 0),
|
| | | ("BYTE", "CollectCount", 0),
|
| | | ("BYTE", "MaxCollectCount", 0),
|
| | | ("char", "CollectCountLimitNotify", 0),
|
| | | ("list", "CollectAward", 0),
|
| | | ),
|
| | |
| | | self.NPCID = 0
|
| | | self.PrepareTime = 0
|
| | | self.LostHPPer = []
|
| | | self.CollectCount = 0
|
| | | self.MaxCollectCount = 0
|
| | | self.CollectCountLimitNotify = ""
|
| | | self.CollectAward = [] |
| | | return |
| | |
| | | def GetNPCID(self): return self.NPCID # ID
|
| | | def GetPrepareTime(self): return self.PrepareTime # 采集耗时,秒
|
| | | def GetLostHPPer(self): return self.LostHPPer # 采集掉血,[每X秒,掉血百分比]
|
| | | def GetCollectCount(self): return self.CollectCount # 每日可采集次数,0限制
|
| | | def GetMaxCollectCount(self): return self.MaxCollectCount # 每日可采集次数,0限制
|
| | | def GetCollectCountLimitNotify(self): return self.CollectCountLimitNotify # 无采集次数采集提示
|
| | | def GetCollectAward(self): return self.CollectAward # 采集奖励物品, [物品ID,个数,是否绑定] |
| | | |
| | |
| | | CrossServerMsg_DropGoodItem = "DropGoodItem" # 掉落好物品
|
| | | CrossServerMsg_RebornRet = "RebornRet" # 复活结果
|
| | | CrossServerMsg_NPCInfoRet = "NPCInfoRet" # 跨服地图NPC信息
|
| | | CrossServerMsg_CollectNPCOK = "CollectNPCOK" # 采集NPC完成
|
| | |
|
| | | # 子服发送跨服信息定义
|
| | | ClientServerMsg_ServerInitOK = "ServerInitOK" # 子服启动成功
|
| | |
| | | ClientServerMsg_Reborn = "Reborn" # 复活
|
| | | ClientServerMsg_QueryNPCInfo = "QueryNPCInfo" # 查询跨服地图NPC信息
|
| | | ClientServerMsg_SetPlayerAttrValue = "SetPlayerAttrValue" # 玩家属性数值更新
|
| | | ClientServerMsg_CollectNPC = "CollectNPC" # 采集NPC
|
| | |
|
| | | #角色改名结果
|
| | | (
|