#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package PlayerEventCounter # ʼþÏìÓ¦ # # @author eggxp # @date 2010-3-31 # @version 1.7 # # @change: "2013-03-13 17:00" wdb ɾ³ý·â°ü # @change: "2013-12-06 15:00" hxp »Ö¸´Í¨Öª¿ª·þÌìÊý·â°ü # @change: "2013-12-16 20:40" hxp ÆÁ±ÎÖÜË«±¶¾­Ñ鼯Ëã # @change: "2014-04-26 19:30" hxp Ôö¼ÓÁìµØÕ½ # @change: "2014-05-07 14:00" hxp »Ö¸´¹úÍõÕ½ # @change: "2014-12-01 12:30" hxp ºÏ·þÌìÊý¸üм°Í¬²½ # @change: "2014-12-03 14:30" hxp ºÏ·þ»î¶¯¹ýÌì #--------------------------------------------------------------------- #"""Version = 2014-12-03 14:30""" #--------------------------------------------------------------------- import GameWorld import datetime import PlayerFamily import PlayerDBGSEvent import PlayerViewCache import PlayerFBHelpBattle import PlayerFairyDomain import ChPyNetSendPack import GameWorldArena import NetPackCommon import PlayerDuJie import PlayerCharm import CrossBattlefield import CrossChampionship import CrossYaomoBoss #--------------------------------------------------------------------- #--------------------------------------------------------------------- ## ´¦ÀíÍæ¼ÒÿСʱÏìÓ¦ # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoLogic_GameServer_OnHour(tick): #´¦ÀíÕâ¸öСʱ·¢³öµÄÓʼþ #GameWorld.GetMailManager().ProcessAllMail() PlayerFairyDomain.OnHour() return ## ´¦ÀíÍæ¼ÒÿÈÕÏìÓ¦ # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoLogic_GameServer_OnDay(tick): #É趨·þÎñÆ÷µ±Ç°Ììʼþ PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_ServerDay) #É趨ºÏ·þÌì isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) if isMixServer: PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_MixServerDay) #÷ÈÁ¦ PlayerCharm.DoOnDay() #¼Ò×å¸üРPlayerFamily.FamilyOnDay(tick) #¿ç·þÅÅλ CrossChampionship.DoOnDay() #¿ç·þÑýħboss CrossYaomoBoss.DoOnDay() playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue PlayerOnDay(curPlayer) #ɾ³ýËùÓеÄÈÎÎñ·¢²¼ missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager() missionPubManager.Clear() return def DoLogic_GameServer_OnDayEx(tick): #¶É½ÙOnDay PlayerDuJie.OnDayEx() #¸±±¾ÖúÕ½ PlayerFBHelpBattle.HelpBattleOnDay() #Íæ¼Ò»º´æ PlayerViewCache.DoOnDayEx() #çÎç¿OnDay PlayerFairyDomain.OnDayEx() #¾º¼¼³¡ GameWorldArena.OnDayEx() #¿ç·þÕ½³¡ CrossBattlefield.DoOnDayEx() #¿ç·þÅÅλ CrossChampionship.DoOnDayEx() playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue PlayerOnDayEx(curPlayer) return ## ´¦ÀíÍæ¼ÒÿÖÜÏìÓ¦ # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoLogic_GameServer_OnWeek(tick): #É趨·þÎñÆ÷µ±Ç°ÖÜʼþ PlayerDBGSEvent.SetDBGSTrig_ServerTime(PlayerDBGSEvent.Def_ServerWeek) #÷ÈÁ¦ PlayerCharm.DoOnWeek() #¼Ò×å¸üРPlayerFamily.FamilyOnWeek(tick) playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue PlayerOnWeek(curPlayer) return def DoLogic_GameServer_OnWeekEx(tick): # ¾º¼¼³¡ GameWorldArena.OnWeekEx() # ¿ç·þÕ½³¡ CrossBattlefield.DoOnWeekEx() playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue PlayerOnWeekEx(curPlayer) return ## ´¦ÀíÍæ¼ÒÿÔÂÏìÓ¦ # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoLogic_GameServer_OnMonth(tick): playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue PlayerOnMonth(curPlayer) return def DoLogic_GameServer_OnMonthEx(tick): playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or not curPlayer.GetInitOK(): continue PlayerOnMonthEx(curPlayer) return ## ´¦ÀíÍæ¼ÒÿÄêÏìÓ¦ # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoLogic_GameServer_OnYear(tick): playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if curPlayer == None or curPlayer.GetID() == 0: continue PlayerOnYear(curPlayer) return #-------------------------------------------------------- ## ´¥·¢Íæ¼ÒÿÈÕÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò) # @param curPlayer µ±Ç°Íæ¼Ò # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def PlayerOnDay(curPlayer): if GameWorld.IsCrossServer(): return #֪ͨ¿ª·þÌìÊý Sync_OpenServerDay(curPlayer) GameWorld.Log("PlayerOnDay!", curPlayer.GetPlayerID()) return def PlayerOnDayEx(curPlayer): GameWorld.Log("PlayerOnDayEx!", curPlayer.GetPlayerID()) return ## ´¥·¢Íæ¼ÒÿÖÜÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò) # @param curPlayer µ±Ç°Íæ¼Ò # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def PlayerOnWeek(curPlayer): GameWorld.Log("PlayerOnWeek!", curPlayer.GetPlayerID()) #¼Ò×åÿÖÜÏìÓ¦ PlayerFamily.OnWeek(curPlayer) return def PlayerOnWeekEx(curPlayer): GameWorld.Log("PlayerOnWeekEx!", curPlayer.GetPlayerID()) return ## ´¥·¢Íæ¼ÒÿÔÂÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò) # @param curPlayer µ±Ç°Íæ¼Ò # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def PlayerOnMonth(curPlayer): GameWorld.Log("PlayerOnMonth!", curPlayer.GetPlayerID()) return def PlayerOnMonthEx(curPlayer): GameWorld.Log("PlayerOnMonthEx!", curPlayer.GetPlayerID()) return ## ´¥·¢Íæ¼ÒÿÄêÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò) # @param curPlayer µ±Ç°Íæ¼Ò # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def PlayerOnYear(curPlayer): GameWorld.Log("PlayerOnYear!", curPlayer.GetPlayerID()) return ## ¸üÐÂÍæ¼ÒÔÚÏßʱ¼ä(²ÎÊý -> µ±Ç°Íæ¼Ò) # @param curPlayer µ±Ç°Íæ¼Ò # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def UpdatePlayerLoginTime(curPlayer): lastLoginTimeStr = curPlayer.GetLogoffTime() lastLoginTimeStr = lastLoginTimeStr.strip() if lastLoginTimeStr == "" or lastLoginTimeStr == '0': #Íæ¼Ò³õ´ÎÉÏÏß, ´¥·¢ËùÓÐʼþ PlayerOnDay(curPlayer) PlayerOnWeek(curPlayer) PlayerOnMonth(curPlayer) PlayerOnYear(curPlayer) return lastLoginTime = GameWorld.GetDateTimeByStr(lastLoginTimeStr) #»ñÈ¡Êý¾Ý curDateTime = datetime.datetime.today() dateTime_Day = curDateTime.day dateTime_Week = datetime.datetime.isocalendar(curDateTime)[1] dateTime_Month = curDateTime.month dateTime_Year = curDateTime.year #ÉϴεǽÊý¾Ý player_Day = lastLoginTime.day player_Week = datetime.datetime.isocalendar(lastLoginTime)[1] player_Month = lastLoginTime.month player_Year = lastLoginTime.year #----------------------------------------------------------------------------------- #OnDayʼþ if dateTime_Day != player_Day or dateTime_Month != player_Month or dateTime_Year != player_Year: PlayerOnDay(curPlayer) #OnWeekʼþ #²»¿¼ÂǸôÄêÇé¿ö£¬Èç2009,12,31ÈÕÏÂÏß->2010,12,31ÈÕÉÏÏß(²»´¥·¢OnWeek) if dateTime_Week != player_Week : PlayerOnWeek(curPlayer) #OnMonthʼþ if dateTime_Month != player_Month or dateTime_Year != player_Year: PlayerOnMonth(curPlayer) #OnYearʼþ if dateTime_Year != player_Year: PlayerOnYear(curPlayer) return #-------------------------------------------------------- ## ֪ͨ¿ª·þÌìÊý # @param curPlayer: Íæ¼ÒʵÀý # @return: None def Sync_OpenServerDay(curPlayer): # ·þÎñÆ÷ʱ¼ä serverTime = GameWorld.GetServerTime() if not serverTime: return openDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) packData = ChPyNetSendPack.tagOpenServerDay() packData.Clear() packData.Day = openDay packData.IsMixServer = isMixServer packData.MixDay = mixServerDay packData.OpenWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday) packData.NowYear = serverTime.year packData.NowMonth = serverTime.month packData.NowDay = serverTime.day packData.NowHour = serverTime.hour packData.NowMinute = serverTime.minute packData.NowSecond = serverTime.second packData.NowMicSecond = serverTime.microsecond packData.WeekOfYear = GameWorld.GetWeekOfYear() NetPackCommon.SendFakePack(curPlayer, packData) return