From 68dd06e06c1a4a155884c31403da1155be6f10e8 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期四, 18 四月 2019 17:11:31 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 64 +++++++++++++++++++++---------- 1 files changed, 43 insertions(+), 21 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 0aff318..a0ece2e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py @@ -83,12 +83,8 @@ import GameWorldAverageLv import PlayerDBOper import PlayerGeTui -#import PlayerManorWar import GameWorldBoss -#import GameWorldActionTeHui -#import HighLadder import PlayerCompensation -#import GameWorldShopItem import ReadChConfig import EventReport #import ReloadModule @@ -100,6 +96,7 @@ import IpyGameDataPY import PlayerFamilyParty import GameWorldFamilyWar +import AuctionHouse import PlayerXMZZ import PlayerTeam import PyGameData @@ -119,8 +116,6 @@ GameWorld.Log("GameServer -> OnHour!") PlayerEventCounter.DoLogic_GameServer_OnHour(tick) GameWorld.GetGameWorld().OnHour(curTimeStr) - #每小时更新天梯 - #HighLadder.OnHour() #设置存取数据库Key __SetWorldKey_SavePlayer(curTimeStr) #每小时清空宝物掉落 @@ -138,8 +133,6 @@ # @remarks 函数详细说明. def OnDay(curTimeStr, tick): GameWorld.Log("GameServer -> OnDay!") - #天梯竞技场,放在排行榜更新之前处理 - #HighLadder.OnDay() #排行榜拷贝昨日榜单 PlayerBillboard.CopyBillboardOnDay() #开服活动,放在排行榜拷贝昨日榜更新后处理 @@ -287,6 +280,8 @@ def __Func_HighPrecisionProcess(tick): if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit): return + curTime = int(time.time()) + #仙盟宴会答题定时器 PlayerFamilyParty.FamilyParty_Process(tick) # 帮主弹劾时钟调用 @@ -304,6 +299,9 @@ #操作Python表 PlayerDBOper.PyDBProccess(tick) + + #拍卖行 + AuctionHouse.OnAuctionItemTimeProcess(curTime, tick) #每整分钟处理一次 curDateTime = datetime.datetime.today() @@ -399,8 +397,6 @@ Dispose_DataBase_GMShell(tick) ##处理重开服务器后, 活动继续开启逻辑根据天数 #GameWorldActionControl.Dispose_Action_GoOn_ByDay(tick) - #定时神秘商店刷新 - #GameWorldShopItem.Dispose_ShopItemRefresh(tick) #定时向RouteServer发送消息 Dispose_SendMsg_RouteServer(tick) @@ -1239,7 +1235,6 @@ CrossRealmPK.OnGameServerInitOK() #世界boss被杀次数重置 #GameWorldBoss.CheckResetBossKilledCntOnServerInit() - #GameWorldActionTeHui.OnGameServerInitOK() # 特惠活动初始化 __Func_HighPrecisionProcess(tick) # 主动触发一次高精度的调用,确保服务器启动后一些功能活动等的数据会被加载 @@ -1404,14 +1399,6 @@ # 仙盟联赛 GameWorldFamilyWar.OnMapServerInitOK() - # 领地争夺战 - #PlayerManorWar.OnMapServerInitOK() - - # 特惠活动 - #GameWorldActionTeHui.OnMapServerInitOK() - - # 商店信息 - #GameWorldShopItem.OnMapServerInitOK() # 跨服服务器状态 isCrossServerOpen = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen) @@ -1426,6 +1413,10 @@ SendMapCommMapLinePlayerCount(True) # 同步一次普通地图线路人数信息 #随机假仙盟 PlayerFamily.RandomFakeFamily() + + # 记录服务器是否正常开启完毕 + getUrl = ReadChConfig.GetPyMongoConfig("EventReport", "OpenStateUrl") + "?Type=MapInit&MapCount=%s"%GameWorld.GetGameWorld().GetGameMapManager().GetCount() + GameWorld.GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl) return ## 服务器合服首次启动数据加载处理 @@ -1456,6 +1447,12 @@ # 仙盟联赛重置 GameWorldFamilyWar.DoFamilyWarReset() + # 重置所有仙盟联赛评级 + familyManager = GameWorld.GetFamilyManager() + for i in xrange(familyManager.GetCount()): + family = familyManager.GetAt(i) + PlayerFamily.SetFamilyWarRank(family, 0) + PlayerFamily.DoFamilySort() # 设置合服首次启动加载成功 PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServerInitOK, 1) @@ -1826,14 +1823,27 @@ gameMapManager = GameWorld.GetGameWorld().GetGameMapManager() curMap = gameMapManager.Find(mapServerPack.GetRouteServerIndex(), mapServerPack.GetMapID()) - if curMap == None: return + if mapServerPack.GetState() not in [0,1,2,3] and curMap.GetState() != mapServerPack.GetState(): + # 记录服务器是否正常开启完毕, 避免重复发送 + GameWorld.DebugLog("MapServer_RunningStateRefresh--_%s"%([mapServerPack.GetState(), curMap.GetState(), mapServerPack.GetMapID(), curMap.GetID()])) + SendGameError("MapError") + curMap.SetState(mapServerPack.GetState()) curMap.SetRefreshTick(tick) + return + +def SendGameError(state): + getUrl = ReadChConfig.GetPyMongoConfig("EventReport", "OpenStateUrl") + groupID = ReadChConfig.GetPyMongoConfig("platform", "GroupID") + userDBName = ReadChConfig.GetPyMongoConfig("connect", "USER_DB_NAME") + getUrl = getUrl + "?Type=%s&groupID=%s&userDBName=%s"%(state, groupID, userDBName) + GameWorld.GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl) + ## 刷新地图服务器状态, 如果1分钟没有状态回报, 刷新为消失状态 # @param tick 当前时间 # @return None @@ -1845,6 +1855,7 @@ gameMapManager = GameWorld.GetGameWorld().GetGameMapManager() + isSendMapClose = False for i in range(0, gameMapManager.GetCount()): curMap = gameMapManager.GetAt(i) @@ -1855,8 +1866,12 @@ if tick - curMap.GetRefreshTick() < ChConfig.Def_Tick_MapServer_MssNone: #间隔未到 continue - + curMap.SetState(IPY_GameServer.mssNone) + if not isSendMapClose: + # 避免多地图发送过多邮件, 如关服的时候 + SendGameError("MapDisconnect") # 状态报告 + isSendMapClose = True return #--------------------------------------------------------------------- @@ -1908,3 +1923,10 @@ GameWorld.Log("通知C++关服!") GameWorld.GetGameWorld().OnServerClose() + +def ChangeGameServerState(state): + # 只接收大于等于mssPyError + GameWorld.DebugLog("ChangeGameServerState:%s"%state) + SendGameError("GameServerError") + + \ No newline at end of file -- Gitblit v1.8.0