From ac075f45d61d73dcdd7188824b3ac87bd8695669 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 29 十二月 2018 05:39:24 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(修复后退出的玩家会收到两次退出时间同步bug)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py | 117 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 72 insertions(+), 45 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
index bcf2381..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
@@ -413,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':
@@ -525,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喇叭聊天
@@ -618,12 +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
@@ -633,6 +642,10 @@
# 全局击杀数换算掉落概率
if callName =="GlobalDropRate":
GameWorldProcess.UpdGlobalDropRate(eval(resultName))
+ return
+ # 全局击杀数统计
+ if callName =="GlobalKillCount":
+ GameWorldProcess.UpdGlobalKillCount(eval(resultName))
return
# 自定义商店全服限购次数清空
@@ -758,12 +771,24 @@
return
#通知神兽副本NPC刷新时间
if callName =="DogzNPCTime":
- GameWorldBoss.Sync_DogzNPCRefreshTime(eval(resultName))
+ 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)
@@ -806,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