ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -90,16 +90,36 @@
import PlayerHero
import PlayerTree
import PlayerLLMJ
import DBDataMgr
import datetime
import time
## 原GameServer通知的
def GameServer_OnDay(index, tick): return
def GameServer_OnHour(index, tick): return
def GameServer_OnWeek(index, tick): return
def GameServer_OnMonth(index, tick): return
def GameServer_OnYear(index, tick): return
def DoLogic_CrossCenterOnDay(centerEventValue):
    '''收到跨服中心同步的onday事件,注意这里本服的触发跨服中心onday事件
    事件由跨服中心统一管理,跨服中心onday后,会广播同步给所有服务器,包含其他跨服服务器及游戏服
    由于是由跨服中心统一调度的,所以其他服务器可以各自处理各自跨服功能本服的跨服onday逻辑
    【注】常规处理可以无视功能所在跨服与游戏服的onday触发先后顺序,各自处理各自的逻辑即可
    如功能所在跨服管理功能的公共跨服数据onday,游戏服管理玩家自身的onday
    如果个别功能需要先处理公共数据再处理玩家自身数据的,则由功能自己管理,公共数据处理完毕后再同步给对应的游戏服
    '''
    GameWorld.Log("CrossCenterOnDay -> centerEventValue=%s" % centerEventValue)
    PlayerFamily.FamilyCrossCenterOnDay()
    # 其他跨服功能
    # 游戏服额外处理玩家
    if GameWorld.IsMainServer():
        playerManager = GameWorld.GetPlayerManager()
        for i in xrange(playerManager.OnlineCount()):
            curPlayer = playerManager.OnlineAt(i)
            if not GameWorld.IsNormalPlayer(curPlayer):
                continue
            PlayerOnCrossCenterEvent(curPlayer, centerEventValue)
    PlayerBillboard.OnDay(centerEventValue)
    return
def DoLogic_OnDay(tick):
    GameWorld.Log("MapServer -> OnDay!")
@@ -123,9 +143,14 @@
        PlayerOnDay(curPlayer)
        
    PlayerMail.OnDayEx()
    PlayerControl.RemoveTimeoutLeaveServerPlayerInfo(tick)
    PlayerBillboard.OnDay()
    PlayerViewCache.OnDay()
    return
def DoLogic_CrossCenterOnHour(centerEventValue):
    GameWorld.Log("CrossCenterOnHour -> centerEventValue=%s" % centerEventValue)
    PlayerFamily.FamilyCrossCenterOnHour()
    return
def DoLogic_OnHour(tick):
@@ -221,6 +246,45 @@
    return
#--------------------------------------------------------
def PlayerOnCrossCenterEvent(curPlayer, centerEventValue=0):
    ## 跨服中心过天
    if not centerEventValue:
        centerEventValue = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_CrossCenterEvent)
    playerEventValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnCrossEvent)
    if not playerEventValue:
        playerEventValue = centerEventValue
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnCrossEvent, centerEventValue)
    if playerEventValue == centerEventValue:
        return
    centerEventTime = GameWorld.ChangeStrToDatetime("%s:%02d:%02d" % centerEventValue, ChConfig.TYPE_Time_Format_YmdHMS)
    playerEventTime = GameWorld.ChangeStrToDatetime("%s:%02d:%02d" % playerEventValue, ChConfig.TYPE_Time_Format_YmdHMS)
    center_Day = centerEventTime.day
    center_Month = centerEventTime.month
    center_Year = centerEventTime.year
    player_Day = playerEventTime.day
    player_Month = playerEventTime.month
    player_Year = playerEventTime.year
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnCrossEvent, centerEventValue)
    if (center_Day != player_Day or center_Month != player_Month or center_Year != player_Year):
        PlayerCrossCenterOnDay(curPlayer, centerEventValue)
    return
def PlayerCrossCenterOnDay(curPlayer, centerEventValue):
    playerID = curPlayer.GetPlayerID()
    GameWorld.Log("PlayerCrossCenterOnDay! centerEventValue=%s" % (centerEventValue), playerID)
    PlayerFamily.PlayerCrossCenterOnDay(curPlayer)
    GameWorld.Log("PlayerOnDayCross OK!", playerID)
    return
def PlayerOnDay(curPlayer):
    #记录玩家字典值,待初始化后执行
    if not curPlayer.GetGameServerInitOK():
@@ -239,7 +303,6 @@
    ChPlayer.Sync_OpenServerDay(curPlayer)
    
    __DoPlayerOnDay(curPlayer, ShareDefine.Def_OnEventType)
    __DoPlayerOnDay(curPlayer, ShareDefine.Def_OnEventTypeEx)
    
    GameWorld.Log("PlayerOnDay OK!", playerID)
    return
@@ -250,60 +313,60 @@
        return
    
    # 常规过天
    if onEventType == ShareDefine.Def_OnEventType:
        GameFuncComm.DoFuncOpenLogic(curPlayer)
        #清空每日事件奖励
        curPlayer.SetDayProcessGameEventCount(0)
        #OnDay时清除每日签到的信息
        PlayerSignDay.SignDayOnDay(curPlayer)
        # 累计登陆礼包登陆次数刷新
        PlayerLoginDayAward.NotePlayerLoginDayCnt(curPlayer)
        #------------------------------------------------------------------------------
        PlayerCoin.OnDay(curPlayer)
        PlayerTree.PlayerOnDay(curPlayer)
        #投资
        PlayerGoldInvest.OnDay(curPlayer)
        #战令
        PlayerZhanling.OnDay(curPlayer)
        #寻宝
        PlayerTreasure.OnDay(curPlayer)
        PlayerGoldGift.OnDay(curPlayer)
        #转盘
        PlayerActTurntable.PlayerOnDay(curPlayer)
        #情缘
        PlayerLove.DoPlayerOnDay(curPlayer)
        #仙宫
        PlayerXiangong.PlayerOnDay(curPlayer)
        PlayerControl.PlayerOnDay(curPlayer)
        ChPlayer.PlayerOnDay(curPlayer)
        PlayerActivity.OnDay(curPlayer)
        PlayerLLMJ.PlayerOnDay(curPlayer)
        FunctionNPCCommon.ShopItemOnDay(curPlayer)
        OpenServerActivity.PlayerOnDay(curPlayer)
    #if onEventType == ShareDefine.Def_OnEventType:
    GameFuncComm.DoFuncOpenLogic(curPlayer)
    #清空每日事件奖励
    curPlayer.SetDayProcessGameEventCount(0)
    #OnDay时清除每日签到的信息
    PlayerSignDay.SignDayOnDay(curPlayer)
    # 累计登陆礼包登陆次数刷新
    PlayerLoginDayAward.NotePlayerLoginDayCnt(curPlayer)
    #------------------------------------------------------------------------------
    PlayerCoin.OnDay(curPlayer)
    PlayerTree.PlayerOnDay(curPlayer)
    #投资
    PlayerGoldInvest.OnDay(curPlayer)
    #战令
    PlayerZhanling.OnDay(curPlayer)
    #寻宝
    PlayerTreasure.OnDay(curPlayer)
    PlayerGoldGift.OnDay(curPlayer)
    #转盘
    PlayerActTurntable.PlayerOnDay(curPlayer)
    #情缘
    PlayerLove.DoPlayerOnDay(curPlayer)
    #仙宫
    PlayerXiangong.PlayerOnDay(curPlayer)
    PlayerControl.PlayerOnDay(curPlayer)
    ChPlayer.PlayerOnDay(curPlayer)
    PlayerActivity.OnDay(curPlayer)
    PlayerLLMJ.PlayerOnDay(curPlayer)
    FunctionNPCCommon.ShopItemOnDay(curPlayer)
    OpenServerActivity.PlayerOnDay(curPlayer)
    # 特殊时间点X点过天
    elif onEventType == ShareDefine.Def_OnEventTypeEx:
        PlayerHero.PlayerOnDay(curPlayer)
        # 仙盟过天
        PlayerFamily.PlayerOnDay(curPlayer)
        # 重置物品每日使用次数
        ChItem.ResetItemUseCntToday(curPlayer)
        # 极品白拿
        PlayerFreeGoods.OnDay(curPlayer)
        #采集次数重置
        NPCCommon.PlayerOnDay(curPlayer)
        #跨服竞技场
        PlayerCrossRealmPK.DoPlayerOnDay(curPlayer)
        #跨服排位
        PlayerCrossChampionship.DoPlayerOnDay(curPlayer)
        #竞技场
        PlayerArena.OnDayEx(curPlayer)
        #特殊时间点过天的,一般是游戏功能,此时立即同步一次跨服玩家数据
        CrossPlayerData.SendMergePlayerDataNow(curPlayer)
    #elif onEventType == ShareDefine.Def_OnEventTypeEx:
    PlayerHero.PlayerOnDay(curPlayer)
    # 仙盟过天
    PlayerFamily.PlayerOnDay(curPlayer)
    # 重置物品每日使用次数
    ChItem.ResetItemUseCntToday(curPlayer)
    # 极品白拿
    PlayerFreeGoods.OnDay(curPlayer)
    #采集次数重置
    NPCCommon.PlayerOnDay(curPlayer)
    #跨服竞技场
    PlayerCrossRealmPK.DoPlayerOnDay(curPlayer)
    #跨服排位
    PlayerCrossChampionship.DoPlayerOnDay(curPlayer)
    #竞技场
    PlayerArena.OnDayEx(curPlayer)
    #特殊时间点过天的,一般是游戏功能,此时立即同步一次跨服玩家数据
    CrossPlayerData.SendMergePlayerDataNow(curPlayer)
    # 以下为支持两种重置模式切换配置的
    FBCommon.FBOnDay(curPlayer, onEventType)
    #许愿池
@@ -402,7 +465,6 @@
    elif onEventType == ShareDefine.Def_OnEventTypeEx:
        #竞技场
        PlayerArena.OnWeekEx(curPlayer)
        PlayerFamily.OnWeekEx(curPlayer)
        
    # 以下为支持两种重置模式切换配置的
    FBCommon.FBOnWeek(curPlayer, onEventType)
@@ -692,6 +754,9 @@
    #OnYear事件
    if __Get_Can_OnYear(curPlayer):
        PlayerOnYear(curPlayer)
    # 跨服事件检查
    PlayerOnCrossCenterEvent(curPlayer)
    return