| | |
| | | import PlayerTeam
|
| | | import GameMap
|
| | | import NPCRealmRefresh
|
| | | import IpyGameDataPY
|
| | | #---------------------------------------------------------------------
|
| | | ## 副本开启
|
| | | # @param gameWorld IPY_GameWorld
|
| | |
| | | __ProcessRouteServer(gameWorld, tick)
|
| | |
|
| | | #每分钟触发
|
| | | __RefreshOnMinute(tick)
|
| | | curTime = GameWorld.GetCurrentTime()
|
| | | __OnMapMinute(curTime, tick)
|
| | | __RefreshOnMinute(curTime, tick)
|
| | | #五分钟触发
|
| | | __RefreshOnFiveMinute(tick)
|
| | | #定时检测关闭超时文件
|
| | |
| | | ## 按分钟刷新
|
| | | # @param tick
|
| | | # @return None
|
| | | def __RefreshOnMinute(tick):
|
| | | def __RefreshOnMinute(curTime, tick):
|
| | | gameWorld = GameWorld.GetGameWorld()
|
| | | lastTick = gameWorld.GetTickByType(ChConfig.TYPE_Map_Tick_ProcessMinute)
|
| | | tickInterval = ChConfig.TYPE_Map_Tick_Time[ChConfig.TYPE_Map_Tick_ProcessMinute]
|
| | | if tick - lastTick < tickInterval:
|
| | | return
|
| | | gameWorld.SetTickByType(ChConfig.TYPE_Map_Tick_ProcessMinute, tick)
|
| | | |
| | | curTime = GameWorld.GetCurrentTime()
|
| | | |
| | | __OnMapMinute(curTime, tick)
|
| | |
|
| | | playerManager = GameWorld.GetMapCopyPlayerManager()
|
| | | for index in xrange(playerManager.GetPlayerCount()):
|
| | |
| | | return
|
| | | PyGameData.g_mapLastProcess_Minute = curMinute
|
| | | PlayerTeam.OnCheckTeamPlayerDisconnectTimeout(tick)
|
| | | |
| | | __CheckIpyDataRecycle(curTime)
|
| | | return
|
| | |
|
| | | def __CheckIpyDataRecycle(timeNow):
|
| | | ## 检查IpyData数据回收
|
| | | playerCount = GameWorld.GetPlayerManager().OnlineCount()
|
| | | if playerCount:
|
| | | PyGameData.g_ipyDataRecycleCheckTime = 0
|
| | | #GameWorld.DebugLog("地图还有玩家在线! playerCount=%s" % playerCount)
|
| | | return
|
| | | |
| | | curTime = GameWorld.ChangeDatetimeToNum(timeNow)
|
| | | if not PyGameData.g_ipyDataRecycleCheckTime:
|
| | | PyGameData.g_ipyDataRecycleCheckTime = curTime
|
| | | #GameWorld.DebugLog("地图没有玩家在线")
|
| | | return
|
| | | |
| | | if PyGameData.g_ipyDataRecycleCheckTime == 1:
|
| | | # 已经回收了
|
| | | #GameWorld.DebugLog("本次已经回收过了")
|
| | | return
|
| | | |
| | | if curTime - PyGameData.g_ipyDataRecycleCheckTime < 24 * 3600:
|
| | | #GameWorld.DebugLog("还未到达回收时间, passSeconds=%s" % (curTime - PyGameData.g_ipyDataRecycleCheckTime))
|
| | | return
|
| | | PyGameData.g_ipyDataRecycleCheckTime = 1 |
| | | IpyGameDataPY.IPYData.Recycle()
|
| | | return
|
| | |
|
| | | ## 整半小时触发 <00和30分钟时触发>
|
| | | # @param curPlayer
|