From 1ea73e1885835466265ce788d93556b7030ee0e8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 30 十二月 2018 18:42:00 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(GM工具增加子服服务器维护,文字翻译版) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py | 149 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 104 insertions(+), 45 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py index 84656ef..549d5d7 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py @@ -46,20 +46,16 @@ import ShareDefine import GameDataRecord import GameWorldShopItem -import PlayerMergeRegister import PlayerCompensation import PlayerFB import UpdatePlayerName import PlayerFamilyBoss import PlayerManorWar import GameWorldBoss -import MergeBroadcast import GameWorldFamilyWar -import GameWorldMergeKing -import GameWorldMergePK #import PlayerFamilyTech -import MergeChildMsg import PlayerFamilyRedPacket +import PlayerFBHelpBattle import PlayerFamilyStore import PlayerFamilySWRH import GameWorldProcess @@ -72,6 +68,10 @@ import PyDataManager import PyGameData import PlayerTalk +import PlayerStore +import CrossRealmPlayer +import CrossRealmMsg +import CrossRealmPK import time import datetime @@ -256,6 +256,10 @@ elif queryType == ChConfig.queryType_NPCInfo: __QueryMapNPCInfo(curPlayer, queryCallName, sendCMD) return + # 查询地图NPC数量 + elif queryType == ChConfig.queryType_NPCCnt: + __QueryMapNPCCntInfo(curPlayer, queryCallName, sendCMD) + return else: GameWorld.ErrLog('unKnow queryType = %s' % (queryType)) @@ -290,6 +294,26 @@ queryCallName, sendCMD, len(sendCMD), curPlayer.GetRouteServerIndex()) return +## 查询目标地图NPC数量 +# @param curPlayer: 请求玩家 +# @param queryCallName: 请求回调名 +# @param sendCMD: 请求的命令 根据请求类型和请求命令来决定最终操作 +# @return None +def __QueryMapNPCCntInfo(curPlayer, queryCallName, sendCMD): + playerManager = GameWorld.GetPlayerManager() + try: + mapInfo = eval(sendCMD) + except BaseException: + GameWorld.ErrLog("__QueryMapNPCCntInfo() sendCMD=%s error" % sendCMD) + return + + if not mapInfo: + return + + tagMapID = mapInfo[0] + playerManager.MapServer_QueryPlayer(curPlayer.GetPlayerID(), ChConfig.queryType_NPCCnt, 0, tagMapID, + queryCallName, sendCMD, len(sendCMD), curPlayer.GetRouteServerIndex()) + return ## 获得家族属性(等级,人数)获得自己所在家族的属性 # @param curPlayer 请求的玩家 @@ -389,23 +413,25 @@ callName = pack.GetCallName() resultName = pack.GetResultName() #[queryid, 人气值, 物品ID] - if callName == 'SendMail': - title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver = eval(resultName) + if callName == "SendMail": + title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail = eval(resultName) limitTime = str(GameWorld.GetDatetimeByDiffDays(getDays)) limitTime = limitTime.split(".")[0] - PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver) + PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver, detail=detail) return - if callName == 'SendMailBatch': + if callName == "SendMailBatch": PlayerCompensation.SendPersonalItemMailBatch(eval(resultName)) return - if callName == 'SendMergerChildMsg': - operType, dataMsg = eval(resultName) - MergeChildMsg.SendMergerChildToCenterStringData(operType, dataMsg) - # 如果是恢复跨服PK连胜的,先记录恢复的玩家ID, 等待成功后同步最新结果给玩家 - if operType == ChConfig.Def_RecoverMergePKWin: - GameWorldMergePK.Add_RecoverMergePKWinPlayer(srcPlayerID) + if callName == "SendMsgToCrossServer": + msgType, dataMsg = eval(resultName) + CrossRealmMsg.SendMsgToCrossServer(msgType, dataMsg) + return + + if callName == "SendMsgToClientServer": + msgType, dataMsg, serverGroupIDList = eval(resultName) + CrossRealmMsg.SendMsgToClientServer(msgType, dataMsg, serverGroupIDList) return if callName == 'MergeWorldNotify': @@ -501,33 +527,35 @@ GameDataRecord.ChangeCoinCnt(eval(resultName)) return - #跨服广播子服 - if callName == 'SendBroadcastMergeClient': - operType, mapID, dataDict, isRepeat = eval(resultName) - MergeBroadcast.SendBroadcastMerge(operType, mapID, dataDict, isRepeat) - return - - #跨服赛报名获得新账号 - if callName == 'MergeRegister': - PlayerMergeRegister.MergeWarRegisterNewAcc(srcPlayerID, eval(resultName), tick) - return - - #跨服王者争霸 - if callName == 'MergeKingFB': - GameWorldMergeKing.MapServer_MergeKingFB(eval(resultName)) + #跨服匹配PK战斗结算 + if callName == "CrossPKOver": + CrossRealmPK.MapServer_CrossPKOver(eval(resultName), tick) return - #跨服匹配PK - if callName == 'MergePKOver': - GameWorldMergePK.MapServer_MergePKOver(eval(resultName)) + #跨服匹配房间开启 + if callName == "CrossPKRoomOpen": + CrossRealmPK.MapServer_CrossPKRoomOpen(eval(resultName), tick) return #跨服匹配PK取消匹配 - if callName == 'MergePKCancel': + if callName == "CrossRealmPKCancel": curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) if not curPlayer: return - GameWorldMergePK.SendCancelMergePKMatch(curPlayer, resultName) + CrossRealmPK.SendCancelCrossRealmPKMatch(curPlayer, resultName) + return + + #跨服PK请求玩家当前排名 + if callName == "CrossPKSeasonOrder": + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) + if not curPlayer: + return + CrossRealmPK.MapServer_QueryCrossPKSeasonOrder(curPlayer, eval(resultName)) + return + + #跨服注册结果 + if callName == "CrossRealmReg": + CrossRealmPlayer.OnCrossRealmRegOK(srcPlayerID, eval(resultName), tick) return #py喇叭聊天 @@ -594,7 +622,17 @@ # 世界boss状态 if callName =="GameWorldBossState": - GameWorldBoss.DoGameWorldBossOnReborn(eval(resultName), tick) + GameWorldBoss.OnGameWorldBossStateChange(eval(resultName), tick) + return + + # 仙盟归属boss信息同步 + if callName =="FamilyOwnerBossInfo": + GameWorldBoss.MapServer_FamilyOwnerBossInfo(eval(resultName)) + return + + # 骑宠争夺伤血玩家同步 + if callName =="HorsePetRobBossHurtPlayer": + GameWorldBoss.MapServer_HorsePetRobBossHurtPlayer(eval(resultName)) return # 全局掉落CD @@ -604,6 +642,10 @@ # 全局击杀数换算掉落概率 if callName =="GlobalDropRate": GameWorldProcess.UpdGlobalDropRate(eval(resultName)) + return + # 全局击杀数统计 + if callName =="GlobalKillCount": + GameWorldProcess.UpdGlobalKillCount(eval(resultName)) return # 自定义商店全服限购次数清空 @@ -727,11 +769,26 @@ if callName =="AddBossRebornPoint": GameWorldBoss.AddBossRebornPoint(eval(resultName)) return - + #通知神兽副本NPC刷新时间 + if callName =="DogzNPCTime": + PyGameData.g_dogzNPCRefreshTimeDict = eval(resultName) + GameWorldBoss.Sync_DogzNPCRefreshTime() + return #---return分割线----------------------------------------------------------------- #---有可能return----------------------------------------------------------------- + #商城全服购买限制 + if callName == "GetStoreServerBuyCnt": + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) + if not curPlayer: + return + ret = PlayerStore.DoStoreServerBuyQueryResult(curPlayer, eval(resultName)) + if ret == None: + resultName = '' + else: + resultName = '%s' % ret + #玩家等级奖励 if callName == "GetPlayerLVAward": curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) @@ -774,21 +831,23 @@ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) resultName = '%s' % GameWorldOpenServerCampaign.CanGiveCampaignAward(curPlayer, eval(resultName)) - # 跨服PK奖励 - if callName == 'MergePKAward': - curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) - resultName = '%s' % GameWorldMergePK.MapServer_QueryMergePKAward(curPlayer, eval(resultName)) - - # 跨服王者争霸 - if callName == 'MergeKing': - curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) - resultName = '%s' % GameWorldMergeKing.MapServer_MergeKingQuery(curPlayer, eval(resultName)) # 玩家自身战盟科技等级提升, 改为地图直接处理, 暂屏蔽 # if callName == 'PlayerFamilyTechLVUP': # curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) # resultName = '%s' % PlayerFamilyTech.OnQuery_PlayerFamilyTechLVUP(curPlayer, eval(resultName)) + + # 副本助战 + if callName =="FBHelpBattle": + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) + if not curPlayer: + return + ret = PlayerFBHelpBattle.MapServer_FBHelpBattle(curPlayer, eval(resultName)) + if ret == None: + return + resultName = '%s' % ret + # 战盟仓库 if callName == "FamilyStore": curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID) -- Gitblit v1.8.0