From 2af64e0aa0a6d8c4aea5fed79986adfa364a1ace Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 25 十二月 2018 19:38:10 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(Add: C1 03 跨服PK玩家历史赛季信息 #tagMCCrossRealmPKPlayerHisSeasonInfo)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 85 +++++++++++++++++++++++++++++++-----------
1 files changed, 62 insertions(+), 23 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index b280963..4e9df57 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -86,7 +86,6 @@
#import MergeBroadcast
#import GameWorldMixServerCampaign
#import GameWorldMergeKing
-#import GameWorldMergePK
#import PlayerManorWar
import GameWorldBoss
#import GameWorldActionTeHui
@@ -96,8 +95,10 @@
import ReadChConfig
import EventReport
#import ReloadModule
-import MergeChildMsg
+import CrossRealmMsg
+import CrossRealmPK
#import MergePlayer
+import PlayerFBHelpBattle
import PlayerFamilyRedPacket
import IpyGameDataPY
import PlayerFamilyParty
@@ -105,6 +106,7 @@
import PlayerXMZZ
import PlayerTeam
import PyGameData
+import ChPlayer
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -128,6 +130,8 @@
#__ClearTreasureDropCount()
#记录当前时间
GameLogInfo.Set_Server_Hour()
+
+ PlayerFamily.FamilyOnHour()
return
## 触发每日事件(参数 -> 当前时间)
@@ -161,14 +165,18 @@
# GameDataRecord.OnDayResetRecord()
# 仙盟红包
PlayerFamilyRedPacket.DoOnDay()
-
+ # 玩家等级记录更新
+ ChPlayer.UpdataPlayerLVInfo()
# 通知开服天数
#openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
#GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
#清理过期补偿
PlayerCompensation.ClearUpTimeOutCompensation()
+ PlayerGeTui.ClearFMTGeTuiLimit()
import PlayerBourse
PlayerBourse.OverTimeItemsDeal()
+ # 仙盟联赛
+ GameWorldFamilyWar.DoOnDay()
return
def OnDayEx(tick):
@@ -290,7 +298,7 @@
#跨服广播
#MergeBroadcast.OnBroadcastProccee(tick)
#跨服PK匹配
- #GameWorldMergePK.OnPKMatchProcess(tick)
+ CrossRealmPK.OnPKMatchProcess(tick)
#跨服王者争霸
#GameWorldMergeKing.OnMergeKingProcess(tick)
@@ -351,7 +359,8 @@
GameWorldAverageLv.OpenWorldAverageLv()
#倒计时离队处理
PlayerTeam.DoCountdownLeaveTeamLogic(tick)
-
+ #副本助战
+ PlayerFBHelpBattle.OnMinuteProcess()
#每5分钟触发一次仙盟总战力更新
if curMinute % 5 == 0:
PlayerFamily.UpdFamilyTotalFightPower()
@@ -575,7 +584,7 @@
tjgOnlineCnt += 1
continue
- platform = GameWorld.GetPlayerPlatform(player.GetAccID())
+ platform = GameWorld.GetPlayerPlatform(player)
platformOLDict[platform] = platformOLDict.get(platform, 0) + 1 # 累计平台在线人数
# mapID = player.GetMapID()
@@ -1202,9 +1211,16 @@
# @remarks 先请求排行榜信息,然后SetTickTypeCount,设置需要保存的时间种类
def InitGameWorld(tick):
#标记GameWorld初始化完成
- GameWorld.GetGameWorld().SetDict(ChConfig.Def_WorldKey_IsGameWorldInit, 1)
+ GameWorld.GetGameWorld().SetDict(ChConfig.Def_WorldKey_IsGameWorldInit, int(time.time()))
#初始化游戏时钟
GameWorld.GetGameWorld().SetTickTypeCount(ChConfig.TYPE_Tick_Count)
+ #初始话开服时间、星期几
+ initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
+ openServerWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
+ if initOpenServerTime <= 0 or openServerWeekday <= 0:
+ #记录首次开发时间(现实时间戳)
+ PlayerDBGSEvent.SetInitOpenServerTime(initOpenServerTime if initOpenServerTime else int(time.time()))
+
#初始化家族数量
GameWorld.GetFamilyManager().SetFamilyUpperLimitCount(ChConfig.Def_Family_MaxCnt)
#排序元宝交易平台
@@ -1222,28 +1238,26 @@
#事件汇报初始化
EventReport.InitDllAppID()
- initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey( PlayerDBGSEvent.Def_InitOpenServerTime)
- if initOpenServerTime <= 0:
- #记录首次开发时间(现实时间戳)
- PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime , int(time.time()))
#ReloadModule.RefreshModuleFileCMTime(True)
#合服首次启动加载处理
__DoMixServerInit()
#仙魔之争
PlayerXMZZ.OnGameServerInitOK()
+ #加载活跃玩家等级信息
+ ChPlayer.LoadPlayerLVData()
+ #加载助战信息
+ PlayerFBHelpBattle.OnServerStart()
#世界boss被杀次数重置
#GameWorldBoss.CheckResetBossKilledCntOnServerInit()
#GameWorldActionTeHui.OnGameServerInitOK() # 特惠活动初始化
#子服启动成功告知跨服主服
- #===========================================================================
- # serverGroupID = GameWorld.GetServerGroupID()
- # if GameWorld.IsMergeOpen() and not GameWorld.IsMergeServer():
- # GameWorld.Log("通知跨服主服务器启动成功, 可接收最新跨服活动状态及数据...")
- # dataMsg = {"Platform":GameWorld.GetPlatform(), "ServerID":GameWorld.GetServerSID(), "ServerGroupID":serverGroupID}
- # MergeChildMsg.SendMergerChildToCenterStringData(ChConfig.Def_ClientServerInitOK, dataMsg)
- #
- # GameWorld.Log("服务器启动成功: ServerGroupID=%s" % serverGroupID)
- #===========================================================================
+ serverGroupID = GameWorld.GetServerGroupID()
+ if GameWorld.IsCrossRealmOpen() and not GameWorld.IsCrossServer():
+ GameWorld.Log("通知跨服主服务器启动成功, 可接收最新跨服活动状态及数据...")
+ dataMsg = {"ServerGroupID":serverGroupID}
+ CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ServerInitOK, dataMsg)
+
+ GameWorld.Log("服务器启动成功: ServerGroupID=%s" % serverGroupID)
return
def DoCheckNewServerOpen(tick):
@@ -1315,10 +1329,15 @@
PyGameData.g_sortBOSSRefreshList = [] # boss刷新信息记录缓存重置, 不重置会导致通知前端的boss信息为空
- AllMapServerInitOK(tick)
+ PlayerDBGSEvent.SetInitOpenServerTime(setOpenServerTime)
- PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime, setOpenServerTime)
+ ReadChConfig.ReloadConfig()
+
+ AllMapServerInitOK(tick)
return
+
+## 服务器开服时是星期几
+def GetOpenServerWeekday(): return PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
## 所有地图服务器初始化成功后(封包注册)
# @param tick 当前时间
@@ -1358,6 +1377,8 @@
# 通知开服天数
openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
+ openServerWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
+ GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_OpenServerWeekday, openServerWeekday)
# 合服状态
isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_IsMixServer, isMixServer)
@@ -1374,6 +1395,9 @@
# 通知战盟相关活动开启状态
fadState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState, fadState)
+ # 通知开启服务器时间
+ initGameWorldTime = GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit)
+ GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_InitGameWorldTime, initGameWorldTime)
# 通知世界boss奖励信息
GameWorldBoss.OnMapServerInitOK()
@@ -1658,7 +1682,8 @@
def SendAllMapGlobalDropInfo():
# 同步所有地图所有全服掉落控制信息
- globalDropCDDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD") # {物品ID:分钟, ...}
+ globalDropCDDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD", 1) # {物品ID:分钟, ...}
+ globalKilledCountDropDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD", 2) # 全服击杀次数必掉
globalDropRateDict = IpyGameDataPY.GetFuncEvalCfg("NPCGlobalDropRate") # {物品ID:[[npcID列表], "概率公式"], ...}
for itemID in globalDropCDDict.keys():
@@ -1671,6 +1696,10 @@
killedCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(key)
GameWorld.SendMapServerMsgEx(key, killedCnt)
+ for npcID in globalKilledCountDropDict.keys():
+ key = ShareDefine.Def_Notify_WorldKey_NPCKilledCount % npcID
+ killedCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(key)
+ GameWorld.SendMapServerMsgEx(key, killedCnt)
return
def UpdGlobalDropCD(msgList):
@@ -1685,6 +1714,14 @@
## 更新全局击杀次数换算掉落概率的物品所累计的击杀次数
itemID, updKilledCnt = msgList
key = ShareDefine.Def_Notify_WorldKey_DropNPCKilledCnt % itemID
+ PlayerDBGSEvent.SetDBGSTrig_ByKey(key, updKilledCnt)
+ GameWorld.SendMapServerMsgEx(key, updKilledCnt)
+ return
+
+def UpdGlobalKillCount(msgList):
+ ## 更新全局击杀次数
+ npcID, updKilledCnt = msgList
+ key = ShareDefine.Def_Notify_WorldKey_NPCKilledCount % npcID
PlayerDBGSEvent.SetDBGSTrig_ByKey(key, updKilledCnt)
GameWorld.SendMapServerMsgEx(key, updKilledCnt)
return
@@ -1866,6 +1903,8 @@
# @return None
def BeforeClose(tick):
PlayerTeam.OnServerClose(tick)
+ ChPlayer.SavePlayerLVData()
+ PlayerFBHelpBattle.OnServerClose()
GameWorld.Log("通知C++关服!")
GameWorld.GetGameWorld().OnServerClose()
--
Gitblit v1.8.0