hxp
3 天以前 71685e76b8f23242fd3e5ec2a1c934579efafb96
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py
@@ -17,15 +17,19 @@
import DBDataMgr
import GameWorld
import PyMongoMain
import PlayerFamily
import IpyGameDataPY
import IPY_GameWorld
import DataRecordPack
import PlayerEventCounter
import PlayerViewCache
import PlayerControl
import NetPackCommon
import PlayerOnline
import ShareDefine
import PyGameData
import ItemCommon
import BattleObj
import ChPlayer
import ObjPool
@@ -69,7 +73,7 @@
#调用该函数时,C++已经设置好区服,如果改变区服需重启
def StartDB(tick):
    #初始化数据库, 恢复备档(按区服记录), 加载静态表
    from PyMongoDB import PyMongoMain
    #from PyMongoDB import PyMongoMain
    PyMongoMain.StartDB()
    InitGameWorld(tick)
    return
@@ -81,7 +85,9 @@
    serverID = GameWorld.GetGameWorld().GetServerID()
    GameWorld.Log("服务器启动初始化InitGameWorld: serverID=%s" % serverID)
    DBDataMgr.OnServerStart() # 优先加载公共数据
    ItemCommon.InitPyItem()
    LoadDBPlayer()
    PlayerViewCache.LoadRobot()
    PyGameData.g_initGameTime = int(time.time()) # 放到加载数据之后
    
    #初始话开服时间、星期几
@@ -256,6 +262,8 @@
        CheckCloseMapOK()
        return
    
    PyMongoMain.GetUserCtrlDB().onSecondProcess()
    OnMinute(tick)
    
    # 其他逻辑
@@ -292,18 +300,40 @@
    DBDataMgr.OnMinute(curTime)
    DoLogic_GameWorldEvenByTime(tick)
    
    #每5分钟
    if curMinute % 5 == 0:
        OnMinute_5(curTime, tick)
    #其他功能逻辑
    #GameWorldActionControl.Dispose_OperationActionState()
    #GameWorldActionControl.Dispose_DailyActionState()
    #GameWorldActionControl.Dispose_FBStateTime()
    PlayerControl.OnMinute(curTime)
    PlayerFamily.OnMinute()
    PlayerOnline.OnMinute()
    BattleObj.OnMinute()
    ObjPool.OnMinute()
    ObjPool.OnMinute(curTime)
    
    __CheckIpyDataRecycle(curTime)
    return
    
def OnMinute_5(curTime, tick):
    ## 每5分钟
    DisposeGameActivePlayer(curTime, tick)
    return
def DisposeGameActivePlayer(curTime, tick):
    curMinute = curTime.minute
    gameWorld = GameWorld.GetGameWorld()
    noteData = gameWorld.GetGameWorldDictByKey("OnlineCntM")
    if noteData == curMinute:
        # 同一分钟只处理1次
        return
    gameWorld.SetGameWorldDict("OnlineCntM", curMinute)
    activePlayerCount = GameWorld.GetPlayerManager().OnlineCount()
    DataRecordPack.DR_OnLinePlayerCount(activePlayerCount) # 总在线
    return
def DoLogic_GameWorldEvenByTime(tick):
    #-----------服务器当前时间
    curTime = datetime.datetime.today()