#!/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
|
#---------------------------------------------------------------------
|
|
#---------------------------------------------------------------------
|
## ´¦ÀíÍæ¼ÒÿСʱÏìÓ¦
|
# @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)
|
|
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()
|
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()
|
|
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
|
|
|
|