| | |
| | | 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!")
|
| | |
| | | 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):
|
| | |
| | | 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():
|
| | |
| | | ChPlayer.Sync_OpenServerDay(curPlayer)
|
| | |
|
| | | __DoPlayerOnDay(curPlayer, ShareDefine.Def_OnEventType)
|
| | | __DoPlayerOnDay(curPlayer, ShareDefine.Def_OnEventTypeEx)
|
| | |
|
| | | GameWorld.Log("PlayerOnDay OK!", playerID)
|
| | | return
|
| | |
| | | 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)
|
| | | #许愿池
|
| | |
| | | elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
| | | #竞技场
|
| | | PlayerArena.OnWeekEx(curPlayer)
|
| | | PlayerFamily.OnWeekEx(curPlayer)
|
| | |
|
| | | # 以下为支持两种重置模式切换配置的
|
| | | FBCommon.FBOnWeek(curPlayer, onEventType)
|
| | |
| | | #OnYear事件
|
| | | if __Get_Can_OnYear(curPlayer):
|
| | | PlayerOnYear(curPlayer)
|
| | | |
| | | # 跨服事件检查
|
| | | PlayerOnCrossCenterEvent(curPlayer)
|
| | | return
|
| | |
|
| | |
|