#!/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 CrossFamilyFlagwar import CrossChampionship import CrossYaomoBoss import GameWorldMineArea #--------------------------------------------------------------------- #--------------------------------------------------------------------- ## ´¦ÀíÍæ¼ÒÿСʱÏìÓ¦ # @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): #ÏÉÃË PlayerFamily.FamilyOnDayEx(tick) #¶É½ÙOnDay PlayerDuJie.OnDayEx() #¸±±¾ÖúÕ½ PlayerFBHelpBattle.HelpBattleOnDay() #Íæ¼Ò»º´æ PlayerViewCache.DoOnDayEx() #çÎç¿OnDay PlayerFairyDomain.OnDayEx() #¾º¼¼³¡ GameWorldArena.OnDayEx() #¿ç·þÕ½³¡ CrossBattlefield.DoOnDayEx() #¿ç·þÅÅλ CrossChampionship.DoOnDayEx() #¸£µØ GameWorldMineArea.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() # Öð¹Íò½ç CrossFamilyFlagwar.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