hxp
2024-09-18 458f8ad37f944f5a4334dc9e522e6640e4aa2def
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -98,6 +98,7 @@
import IpyGameDataPY
import PlayerFamilyParty
import PlayerFamilyZhenfa
import PlayerFamilyEmblem
import GameWorldFamilyWar
import GameWorldArena
import CrossLuckyCloudBuy
@@ -113,6 +114,9 @@
import CrossBillboard
import CrossChampionship
import GameWorldMineArea
import PlayerFuncTeam
import GameWorship
import os
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -186,6 +190,8 @@
    PlayerLove.DoOnDay()
    # 云购
    CrossLuckyCloudBuy.DoOnDay()
    # 膜拜
    GameWorship.DoOnDay()
    return
def OnDayEx(tick):
@@ -370,6 +376,8 @@
    DisposeGameActivePlayer(tick)
    #处理游戏世界中的时间事件
    DisposeGameWorldEvenByTime(tick)
    #榜单
    CrossBillboard.OnMinuteProcess()
    GameWorldActionControl.Dispose_OperationActionState()
    GameWorldActionControl.Dispose_DailyActionState()
    GameWorldActionControl.Dispose_FBStateTime()
@@ -394,6 +402,7 @@
    if curMinute % 5 == 0:
        PlayerFamily.UpdFamilyTotalFightPower()
        PlayerFamilyRedPacket.CheckDelRedpacketData()
        PlayerFamilyEmblem.CheckExpireEmblem()
        
    return
@@ -416,6 +425,13 @@
    return
def OnReloadConfig():
    if GameWorld.IsCrossServer():
        # 跨服重读时重推跨服相关数据
        tick = GameWorld.GetGameWorld().GetTick()
        CrossRealmMsg.Sync_CrossServerInitDataToClientServer(tick, serverGroupID=0) # 这里设置为0,广播所有子服务器组
        return
    return
#---------------------------------------------------------------------
@@ -1273,6 +1289,8 @@
    GameWorld.GetGameWorld().GetDBGoldOrderFormMgr().Sort()
    #排序排行榜
    PlayerBillboard.SortServerBillboard()
    #功能队伍
    PlayerFuncTeam.OnGameServerInitOK()
    #仙盟
    PlayerFamily.OnGameServerInitOK()
    GameWorldActionControl.Dispose_FBStateTime()
@@ -1300,6 +1318,7 @@
    CrossChampionship.OnServerStart()
    #跨服战场
    CrossBattlefield.OnServerStart()
    GameWorship.OnServerStart()
    #红包
    PlayerFamilyRedPacket.OnServerStart()
    #云购
@@ -1441,6 +1460,7 @@
    if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit):
        GameWorld.Log("AllMapServerInitOK时GameServer还未启动好!")
        return
    __CheckAllMapInitOK()
    #通知所有地图服务器初始化成功, 同步时间
    GameWorld.GetGameWorld().Notify_AllMapServerInitOK(GameWorld.GetCurrentDataTimeStr())
    
@@ -1485,6 +1505,9 @@
    GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerDay, lastMixServerDay)
    lastMixServerWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerWorldLV)
    GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerWorldLV, lastMixServerWorldLV)
    # 功能队伍
    PlayerFuncTeam.OnMapServerInitOK()
    
    # 通知战盟相关活动开启状态
    fadState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState)
@@ -1534,6 +1557,41 @@
    GameWorld.GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl)
    return
def __CheckAllMapInitOK():
    ## 检查所有地图是否启动成功
    rootPath = ChConfig.GetServerRootPath()
    mapIDTxtPath = os.path.join(rootPath, "ZoneServerGroup\map1_8G\MapServer\MapServerData\Map\MapID.txt")
    if not os.path.isfile(mapIDTxtPath):
        GameWorld.ErrLog("MapID.txt不存在: %s" % mapIDTxtPath)
        return
    fileObj = open(mapIDTxtPath, 'rb')
    content = fileObj.read()
    fileObj.close()
    mapInfoDict = {}
    mapInfoList = content.split('\r\n')
    for info in mapInfoList:
        mapInfo = info.split('\t')
        if len(mapInfo) < 3:
            continue
        mapInfoDict[GameWorld.ToIntDef(mapInfo[1])] = mapInfo[2]
    gameMapManager = GameWorld.GetGameWorld().GetGameMapManager()
    for i in range(0, gameMapManager.GetCount()):
        curMap = gameMapManager.GetAt(i)
        mapID = curMap.GetID()
        state = curMap.GetState()
        if mapID in mapInfoDict and state == IPY_GameServer.mssRunning:
            mapInfoDict.pop(mapID)
    if not mapInfoDict:
        #GameWorld.Log("都启动成功了")
        return
    # 汇报没有启动启动成功的地图ID信息
    errorMapIDList = mapInfoDict.keys()
    GameWorld.SendGameError("AllMapInitError", "未启动成功地图:%s" % (str(errorMapIDList)))
    return
## 服务器合服首次启动数据加载处理
#  @param None
#  @return None