#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#---------------------------------------------------------------------
|
#
|
#---------------------------------------------------------------------
|
##@package PlayerEventCounter
|
# @todo: Íæ¼ÒʼþÏìÓ¦Æ÷
|
#
|
# @author: panwei
|
# @date 2010-04-28
|
# @version 2.6
|
#
|
# @note: ´¦ÀíÿÖÜ, ÿÈÕ, ÿÔÂʼþ´¦Àí
|
#
|
#---------------------------------------------------------------------
|
#"""Version = 2017-05-12 18:00"""
|
#---------------------------------------------------------------------
|
import ReadChConfig
|
import ChConfig
|
import GameWorld
|
import EventShell
|
import FBLogic
|
import IPY_GameWorld
|
import ChPlayer
|
import GameLogInfo
|
import GameServerRefresh
|
import ShareDefine
|
import PlayerGameWallow
|
import Operate_PlayerBuyZhenQi
|
import PlayerSignDay
|
import PlayerCoin
|
import PlayerControl
|
import PlayerWorldAverageLv
|
import PlayerFamily
|
import PlayerFamilyZhenfa
|
import PlayerOnlinePrize
|
import NPCCustomRefresh
|
import PlayerLoginDayAward
|
import NPCCommon
|
import FunctionNPCCommon
|
import PlayerGoldGift
|
import PlayerActivity
|
import PlayerBindJadeWheel
|
import FBCommon
|
import PlayerSuccess
|
import PlayerFreeGoods
|
import PlayerMagicWeapon
|
import ChItem
|
import PlayerGoldInvest
|
import PlayerNewGuyCard
|
import PlayerCrossRealmPK
|
import PlayerCrossChampionship
|
import PlayerCrossBattlefield
|
import PlayerPet
|
import BossHurtMng
|
import PlayerRecover
|
import GameLogic_FamilyParty
|
import PlayerFamilyRedPacket
|
import GameLogic_FamilyInvade
|
import GameLogic_ElderBattlefield
|
import GameLogic_AllFamilyBoss
|
import GameLogic_HorsePetBoss
|
import GameLogic_FamilyWar
|
import OpenServerCampaign
|
import PlayerCostRebate
|
import CrossActCTGBillboard
|
import CrossActAllRecharge
|
import PlayerActCollectWords
|
import PlayerActTotalRecharge
|
import PlayerActGarbageSorting
|
import PlayerActXianXiaMJ
|
import PlayerActGubao
|
import PlayerActHorsePetTrain
|
import PlayerActLianqi
|
import PlayerActGodGift
|
import PlayerActFamilyGCZ
|
import PlayerActFamilyCTGAssist
|
import PlayerActRechargeRebateGold
|
import PlayerActManyDayRecharge
|
import PlayerActSingleRecharge
|
import PlayerActRechargePrize
|
import PlayerActGrowupBuy
|
import PlayerActTurntable
|
import PlayerActBossTrial
|
import PlayerActBuyOne
|
import PlayerSpringSale
|
import PlayerBossReborn
|
import PlayerWeekParty
|
import PlayerFeastWeekParty
|
import PlayerFeastTravel
|
import PlayerFeastLogin
|
import PlayerFeastWish
|
import PlayerActTask
|
import PlayerActYunshi
|
import PlayerActLunhuidian
|
import PlayerActBuyCountGift
|
import PlayerActLoginNew
|
import PlayerActLogin
|
import PlayerFlashGiftbag
|
import PlayerDailyGiftbag
|
import PlayerFairyCeremony
|
import PlayerNewFairyCeremony
|
import PlayerActHorsePetFeast
|
import PlayerFeastRedPacket
|
import PlayerCrossYaomoBoss
|
import PlayerLuckyCloudBuy
|
import PlayerLuckyTreasure
|
import PlayerAuctionHouse
|
import PlayerTongTianLing
|
import PlayerRefineStove
|
import PlayerFlashSale
|
import PlayerWishingWell
|
import PlayerFairyDomain
|
import CrossPlayerData
|
import PlayerTreasure
|
import PlayerZhanling
|
import PlayerVip
|
import PlayerLove
|
import PlayerDiceEx
|
import IpyGameDataPY
|
import FamilyRobBoss
|
import FBHelpBattle
|
import QuestManager
|
import PlayerAssist
|
import PlayerArena
|
import PyGameData
|
import PlayerGuaji
|
import PlayerXiangong
|
import PlayerFuncTeam
|
import PlayerMineArea
|
import PlayerBillboard
|
import PlayerViewCache
|
import PlayerMail
|
|
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_OnDay(tick):
|
GameWorld.Log("MapServer -> OnDay!")
|
playerManager = GameWorld.GetPlayerManager()
|
#´¦ÀíËùÓÐÍæ¼ÒÐżþµÄondayʼþ, °Ñ´æÔÚʱ¼ä+1
|
playerManager.ProcessAllPlayerMailOnDay()
|
#Çå¿ÕÿÈÕÈռǼǼÐÅÏ¢
|
GameLogInfo.ClearGameLogInfo()
|
|
#¸±±¾OnDayʼþÏìÓ¦
|
FBLogic.OnDay(tick)
|
|
#ɾ³ýËùÓеÄÈÎÎñ·¢²¼
|
missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager()
|
missionPubManager.Clear()
|
#ÏÉÃË
|
PlayerFamily.FamilyOnDay()
|
|
for i in xrange(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(i)
|
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
|
PlayerOnDay(curPlayer)
|
|
PlayerMail.OnDayEx()
|
PlayerControl.RemoveTimeoutLeaveServerPlayerInfo(tick)
|
PlayerBillboard.OnDay()
|
PlayerViewCache.OnDay()
|
return
|
|
def DoLogic_OnHour(tick):
|
GameWorld.Log("MapServer -> OnHour!")
|
|
#¸±±¾OnHourʼþ
|
FBLogic.OnHour(time, tick)
|
|
#ReadCaptchaImage.ReSetCaptcha()
|
|
playerManager = GameWorld.GetPlayerManager()
|
for i in xrange(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(i)
|
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
|
PlayerOnHour(curPlayer)
|
|
return
|
|
def DoLogic_OnWeek(tick):
|
GameWorld.Log("MapServer -> OnWeek!")
|
|
playerManager = GameWorld.GetPlayerManager()
|
for i in xrange(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(i)
|
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
|
PlayerOnWeek(curPlayer)
|
|
#¸±±¾OnWeekʼþÏìÓ¦
|
FBLogic.OnWeek(tick)
|
return
|
|
def DoLogic_OnMonth(tick):
|
GameWorld.Log("MapServer -> OnMonth!")
|
|
playerManager = GameWorld.GetPlayerManager()
|
for i in xrange(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(i)
|
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
|
PlayerOnMonth(curPlayer)
|
|
return
|
|
def DoLogic_OnYear(tick):
|
GameWorld.Log("MapServer -> OnYear")
|
|
playerManager = GameWorld.GetPlayerManager()
|
for i in range(0, playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(i)
|
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
|
PlayerOnYear(curPlayer)
|
|
return
|
#---------------------------------------------------------------------
|
## ͬ²½ÊÀ½ç·þÎñÆ÷ʱ¼ä
|
# @param time µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def SetMapServerTimeFromGameServer(time):
|
#GameWorld.Log('--------------%s'%time)
|
GameWorld.GetGameWorld().SetGameServerEventTime(time)
|
return
|
#---------------------------------------------------------------------
|
## ÊÀ½ç·þÎñÆ÷³õʼ»¯³É¹¦(·â°ü²ÎÊý)
|
# @param index Íæ¼ÒË÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def GameServer_InitOK(index, tick):
|
# curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
# try:
|
# #֪ͨBServer×Ô¼ºOKÁË
|
# curPlayer.SendToBServerServerInitOK()
|
# ChPlayer.OnAllServerInitOK(curPlayer, tick)
|
# except:
|
# curPlayer.Kick(IPY_GameWorld.disWaitForPlayerLoinError)
|
# import traceback
|
# GameWorld.RaiseException("Íæ¼ÒÉÏÏßÂß¼´íÎó\r\n%s" % traceback.format_exc())
|
return
|
|
#--------------------------------------------------------
|
def PlayerOnDay(curPlayer):
|
#¼ÇÂ¼Íæ¼Ò×ÖµäÖµ,´ý³õʼ»¯ºóÖ´ÐÐ
|
if not curPlayer.GetGameServerInitOK():
|
GameServerRefresh.Set_PlayerGameServerInitOK_OnDay(curPlayer , 1)
|
return
|
|
ondayValue = __Get_Can_OnDay(curPlayer)
|
if not ondayValue:
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, ondayValue)
|
playerID = curPlayer.GetPlayerID()
|
GameWorld.Log("PlayerOnDay! ondayValue=%s" % (ondayValue), playerID)
|
|
__DoPlayerOnDay(curPlayer, ShareDefine.Def_OnEventType)
|
__DoPlayerOnDay(curPlayer, ShareDefine.Def_OnEventTypeEx)
|
|
GameWorld.Log("PlayerOnDay OK!", playerID)
|
return
|
|
def __DoPlayerOnDay(curPlayer, onEventType):
|
|
if GameWorld.IsCrossServer():
|
return
|
|
# ³£¹æ¹ýÌì
|
if onEventType == ShareDefine.Def_OnEventType:
|
|
#¿ª·þ»î¶¯
|
OpenServerCampaign.OnOpenServerCampaignDay(curPlayer)
|
|
#Çå¿ÕÿÈÕʼþ½±Àø
|
curPlayer.SetDayProcessGameEventCount(0)
|
|
#ÖØÖóèÎïÿÌìµÄѵÁ·´ÎÊý
|
PlayerPet.DoLogic_PetInfo_OnDay(curPlayer)
|
|
PlayerGameWallow.RevertHealthGame_OnDay(curPlayer)
|
|
PlayerOnlinePrize.ResetPrizeInfoOnDay(curPlayer)
|
|
|
#OnDayʱÇå³ýÿÈÕÇ©µ½µÄÐÅÏ¢
|
PlayerSignDay.SignDayOnDay(curPlayer)
|
# ÀۼƵǽÀñ°üµÇ½´ÎÊýË¢ÐÂ
|
PlayerLoginDayAward.NotePlayerLoginDayCnt(curPlayer)
|
|
#------------------------------------------------------------------------------
|
|
PlayerVip.VipOnDay(curPlayer)
|
|
PlayerCoin.OnDay(curPlayer)
|
|
#³É¾Í
|
PlayerSuccess.SuccOnDay(curPlayer)
|
|
# ÐÂÊÖ¿¨
|
PlayerNewGuyCard.NewGuyCardOnday(curPlayer)
|
|
#Ͷ×Ê
|
PlayerGoldInvest.OnDay(curPlayer)
|
#Õ½Áî
|
PlayerZhanling.OnDay(curPlayer)
|
#Ѱ±¦
|
PlayerTreasure.OnDay(curPlayer)
|
#·¨±¦
|
PlayerMagicWeapon.OnDay(curPlayer)
|
PlayerGoldGift.OnDay(curPlayer)
|
#Á¶µ¤
|
PlayerRefineStove.OnDay(curPlayer)
|
#°óÓñתÅÌ
|
PlayerBindJadeWheel.OnDay(curPlayer)
|
#תÅÌ
|
PlayerActTurntable.PlayerOnDay(curPlayer)
|
#ÇéÔµ
|
PlayerLove.DoPlayerOnDay(curPlayer)
|
#Ïɹ¬
|
PlayerXiangong.PlayerOnDay(curPlayer)
|
PlayerControl.PayCoinOnDay(curPlayer)
|
#Íæ·¨Ç°Õ°½±Àø
|
gameNoticeAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GameNoticeAwardState)
|
if gameNoticeAwardState:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GameNoticeAwardState, 0)
|
ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_GameNotice, 0)
|
#ÿÈÕ·ÖÏí½±ÀøÖØÖÃ
|
shareGameAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShareGameAwardState)
|
if shareGameAwardState:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ShareGameAwardState, 0)
|
ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_ShareGame, 0)
|
#¿ª·þÿÈÕ½±Àø
|
awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OpenSererDailyAward)
|
if awardState:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OpenSererDailyAward, 0)
|
ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_OpenServerDailyAward, 0)
|
#¿ª·þÿÈÕ½±Àø
|
awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeDayAward)
|
if awardState:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeDayAward, 0)
|
ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_RechargeDayAward, 0)
|
# ÌØÊâʱ¼äµãXµã¹ýÌì
|
elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
# ×ÊÔ´ÕÒ»Ø
|
PlayerRecover.RecoverOnDay(curPlayer)
|
#´¥·¢Ã¿ÈÕÈÎÎñÖØÖýű¾
|
EventShell.EventResponse_OnDay(curPlayer)
|
#¹ºÂò´ÎÊýÇå¿Õ
|
Operate_PlayerBuyZhenQi.PlayerOnDay(curPlayer)
|
|
#ÎÒҪ̫¼«¹ýÌì
|
PlayerDiceEx.OnDay(curPlayer)
|
# ÊÀ½çboss
|
BossHurtMng.OnDay(curPlayer)
|
# ÏÉÃ˹ýÌì
|
PlayerFamily.PlayerOnDay(curPlayer)
|
# ÖØÖÃÎïÆ·Ã¿ÈÕʹÓôÎÊý
|
ChItem.ResetItemUseCntToday(curPlayer)
|
# ¼«Æ·°×ÄÃ
|
PlayerFreeGoods.OnDay(curPlayer)
|
#²É¼¯´ÎÊýÖØÖÃ
|
NPCCommon.PlayerOnDay(curPlayer)
|
#¸±±¾ÖúÕ½
|
FBHelpBattle.DoPlayerOnDay(curPlayer)
|
#¿ç·þ¾º¼¼³¡
|
PlayerCrossRealmPK.DoPlayerOnDay(curPlayer)
|
#¿ç·þÅÅλ
|
PlayerCrossChampionship.DoPlayerOnDay(curPlayer)
|
#¿ç·þÕ½³¡
|
PlayerCrossBattlefield.DoPlayerOnDay(curPlayer)
|
#çÎç¿ÏÉÓò
|
PlayerFairyDomain.OnDay(curPlayer)
|
#ÏÉÃËÑç»á
|
GameLogic_FamilyParty.OnDayFamilyPartyPlayer(curPlayer)
|
#¾º¼¼³¡
|
PlayerArena.OnDayEx(curPlayer)
|
#ÐÖú
|
PlayerAssist.DoPlayerOnDay(curPlayer)
|
#¸£µØ
|
PlayerMineArea.PlayerOnDay(curPlayer)
|
#¹Ò»ú
|
PlayerGuaji.PlayerOnDay(curPlayer)
|
#ÌØÊâʱ¼äµã¹ýÌìµÄ£¬Ò»°ãÊÇÓÎÏ·¹¦ÄÜ£¬´ËʱÁ¢¼´Í¬²½Ò»´Î¿ç·þÍæ¼ÒÊý¾Ý
|
CrossPlayerData.SendMergePlayerDataNow(curPlayer)
|
|
# ÒÔÏÂΪ֧³ÖÁ½ÖÖÖØÖÃģʽÇл»ÅäÖõÄ
|
FBCommon.FBOnDay(curPlayer, onEventType)
|
|
#ÈÕ³£»î¶¯OnDay
|
PlayerActivity.OnDay(curPlayer, onEventType)
|
|
# É̵êÎïÆ·¹ºÂò¶Ò»»OnDay
|
FunctionNPCCommon.ShopItemOnDay(curPlayer, onEventType)
|
|
# ÏÉÃ˺ì°üOnDay
|
PlayerFamilyRedPacket.RedPacketOnDay(curPlayer, onEventType)
|
#ÐíÔ¸³Ø
|
PlayerWishingWell.OnDay(curPlayer)
|
#ͨÌìÁî
|
PlayerTongTianLing.OnDay(curPlayer, onEventType)
|
#bossƾ֤
|
PlayerActBossTrial.PlayerOnDay(curPlayer, onEventType)
|
#ÈÎÎñ»î¶¯
|
PlayerActTask.OnDay(curPlayer)
|
#µÇ¼»î¶¯
|
PlayerActLoginNew.OnDay(curPlayer)
|
#¹ºÂò´ÎÊýÀñ°ü
|
PlayerActBuyCountGift.OnDay(curPlayer, onEventType)
|
return
|
|
#---------------------------------------------------------------------
|
## °Ñµ±Ç°ÕâÒ»ÖܵÄÔÚÏßʱ¼äËãµ½ÉÏÒ»ÖÜÈ¥
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def CalcWeekOnlineTime(curPlayer):
|
#°Ñµ±Ç°ÕâÒ»ÖܵÄÔÚÏßʱ¼äËãµ½ÉÏÒ»ÖÜÈ¥
|
curPlayer.SetLastWeekOnlineTime(curPlayer.GetWeekOnlineTime())
|
#±¾ÖÜÔÚÏßʱ¼äÇå0
|
curPlayer.SetWeekOnlineTime(0)
|
return
|
|
#---------------------------------------------------------------------
|
## ÖØÖÃÍæ¼ÒÿÖÜÐèÒªÖØÖõÄÊý¾Ý
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def ResetPlayerWeekData(curPlayer):
|
#ÿÖÜÇå¿ÕÐÒÔËÖµ
|
#curPlayer.SetLuckValue(0)
|
return
|
|
#---------------------------------------------------------------------
|
## ÉèÖüÒ×åµÄ»îÔ¾¶È
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def CalcFamilyActiveValue(curPlayer):
|
#LastWeekFamilyActiveValue ¸Ä³É¼Ç¼ÀúÊ·×ܹ±Ï×¶È
|
#curPlayer.SetLastWeekFamilyActiveValue(curPlayer.GetFamilyActiveValue())
|
curPlayer.SetFamilyActiveValue(0)
|
return
|
#---------------------------------------------------------------------
|
## ´¥·¢Íæ¼ÒÿÖÜÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def PlayerOnWeek(curPlayer):
|
#¼ÇÂ¼Íæ¼Ò×ÖµäÖµ,´ý³õʼ»¯ºóÖ´ÐÐ
|
if not curPlayer.GetGameServerInitOK():
|
GameServerRefresh.Set_PlayerGameServerInitOK_OnWeek(curPlayer , 1)
|
return
|
|
onWeekValue = __Get_Can_OnWeek(curPlayer)
|
if not onWeekValue:
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, onWeekValue)
|
playerID = curPlayer.GetPlayerID()
|
GameWorld.Log("PlayerOnWeek! onWeekValue=%s" % (onWeekValue), playerID)
|
|
__DoPlayerOnWeek(curPlayer, ShareDefine.Def_OnEventType)
|
__DoPlayerOnWeek(curPlayer, ShareDefine.Def_OnEventTypeEx)
|
|
GameWorld.Log("PlayerOnWeek OK!", playerID)
|
return
|
|
def __DoPlayerOnWeek(curPlayer, onEventType):
|
|
if GameWorld.IsCrossServer():
|
return
|
|
if onEventType == ShareDefine.Def_OnEventType:
|
#¼Ç¼ÉÏÖܹ¤×ÊÏà¹ØÁ÷Ïò
|
lastWeekOnlineTime = curPlayer.GetLastWeekOnlineTime()
|
lastWeekFamilyValue = curPlayer.GetLastWeekFamilyActiveValue()
|
|
#ÐèÒªÔÚÒ»Öܵ½À´µÄʱºòÖØÖÃÍæ¼ÒÊý¾ÝµÄ²Ù×÷¶¼¿ÉÒԷŵ½º¯ÊýÀïÃæ
|
ResetPlayerWeekData(curPlayer)
|
|
PlayerCoin.OnWeek(curPlayer)
|
|
#¼ÆËãÕâÒ»ÖܵÄÔÚÏßʱ¼ä
|
CalcWeekOnlineTime(curPlayer)
|
|
#¼ÆËãÕâÒ»ÖܵļÒ×åµÄ»îÔ¾¶È
|
CalcFamilyActiveValue(curPlayer)
|
#³É¾ÍOnweek
|
PlayerSuccess.OnWeek(curPlayer)
|
|
# ÿÖÜÌáÊ¾Íæ¼ÒÌáʾvipµÈ¼¶¼ÓÈë¹ó±ö¾ãÀÖ²¿
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HasVIPClubNote, 0)
|
|
elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
#´¥·¢Ã¿ÖÜÈÎÎñÖØÖýű¾
|
EventShell.EventResponse_OnWeek(curPlayer)
|
#¾º¼¼³¡
|
PlayerArena.OnWeekEx(curPlayer)
|
PlayerFamily.OnWeekEx(curPlayer)
|
PlayerCrossBattlefield.DoPlayerOnWeek(curPlayer)
|
|
# ÒÔÏÂΪ֧³ÖÁ½ÖÖÖØÖÃģʽÇл»ÅäÖõÄ
|
FBCommon.FBOnWeek(curPlayer, onEventType)
|
|
#ÈÕ³£»î¶¯OnWeek
|
PlayerActivity.OnWeek(curPlayer, onEventType)
|
|
# É̵êÎïÆ·¹ºÂò¶Ò»»OnDay
|
FunctionNPCCommon.ShopItemOnWeek(curPlayer, onEventType)
|
return
|
|
#---------------------------------------------------------------------
|
## ´¥·¢Íæ¼ÒÿÔÂÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def PlayerOnMonth(curPlayer):
|
#¼ÇÂ¼Íæ¼Ò×ÖµäÖµ,´ý³õʼ»¯ºóÖ´ÐÐ
|
if not curPlayer.GetGameServerInitOK():
|
GameServerRefresh.Set_PlayerGameServerInitOK_OnMonth(curPlayer , 1)
|
return
|
|
onMonthValue = __Get_Can_OnMonth(curPlayer)
|
if not onMonthValue:
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, onMonthValue)
|
playerID = curPlayer.GetPlayerID()
|
GameWorld.Log("PlayerOnMonth! onMonthValue=%s" % (onMonthValue), playerID)
|
|
__DoPlayerOnMonth(curPlayer, ShareDefine.Def_OnEventType)
|
__DoPlayerOnMonth(curPlayer, ShareDefine.Def_OnEventTypeEx)
|
|
GameWorld.Log("PlayerOnMonth OK!", playerID)
|
return
|
|
def __DoPlayerOnMonth(curPlayer, onEventType):
|
|
if GameWorld.IsCrossServer():
|
return
|
|
if onEventType == ShareDefine.Def_OnEventType:
|
PlayerCoin.OnMonth(curPlayer)
|
#Ç©µ½
|
#PlayerSignDay.SignDayOnMonth(curPlayer)
|
|
elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
pass
|
#OnMonthEx
|
|
# É̵êÎïÆ·¹ºÂò¶Ò»»OnMonth
|
FunctionNPCCommon.ShopItemOnMonth(curPlayer, onEventType)
|
return
|
|
#---------------------------------------------------------------------
|
## ´¥·¢Íæ¼ÒÿÄêÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def PlayerOnYear(curPlayer):
|
#¼ÇÂ¼Íæ¼Ò×ÖµäÖµ,´ý³õʼ»¯ºóÖ´ÐÐ
|
if not curPlayer.GetGameServerInitOK():
|
GameServerRefresh.Set_PlayerGameServerInitOK_OnYear(curPlayer , 1)
|
return
|
|
curPlayerID = curPlayer.GetPlayerID()
|
|
if not __Get_Can_OnYear(curPlayer):
|
#GameWorld.Log("Cancel_PlayerOnYear!" , curPlayerID)
|
return
|
|
GameWorld.Log("PlayerOnYear!" , curPlayerID)
|
|
#¼Ç¼
|
curDateTime = GameWorld.GetCurrentTime()
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnYear, curDateTime.year)
|
#-------------------------------------------------
|
return
|
#---------------------------------------------------------------------
|
## ´¥·¢Íæ¼ÒÿСʱÏìÓ¦(²ÎÊý -> µ±Ç°Íæ¼Ò)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def PlayerOnHour(curPlayer):
|
#¼ÇÂ¼Íæ¼Ò×ÖµäÖµ,´ý³õʼ»¯ºóÖ´ÐÐ
|
if not curPlayer.GetGameServerInitOK():
|
GameServerRefresh.Set_PlayerGameServerInitOK_OnHour(curPlayer , 1)
|
return
|
|
curPlayerID = curPlayer.GetPlayerID()
|
|
if not __Get_Can_OnHour(curPlayer):
|
#GameWorld.Log("Cancel_PlayerOnHour!" , curPlayerID)
|
return
|
|
GameWorld.Log("PlayerOnHour!" , curPlayerID)
|
|
tick = GameWorld.GetGameWorld().GetTick()
|
#PlayerVip.CalcVIPTimeByTick(curPlayer, tick)
|
|
#¼Ç¼
|
curDateTime = GameWorld.GetCurrentTime()
|
curHour = curDateTime.hour
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, curHour)
|
#---------------------------------------
|
#ÿÌì1µãÉêÇë²éѯ
|
if curHour == 1:
|
#´ÓÊý¾Ý¿âÖвéѯµ±Ç°ÅÅÐаñµÈ¼¶
|
curPlayer.DataServer_GetBillboardLV()
|
|
|
#´¥·¢Ã¿Ð¡Ê±ÈÎÎñÖØÖýű¾
|
EventShell.EventResponse_OnHour(curPlayer)
|
#çÎç¿ÏÉÓò
|
PlayerFairyDomain.OnHour(curPlayer)
|
return
|
|
#---------------------------------------------------------------------
|
#===============================================================================
|
# //01 09 ËùÓеØÍ¼·þÎñÆ÷³õʼ»¯³É¹¦#tagMOnAllMapServerInitOK
|
# tagMOnAllMapServerInitOK * GettagMOnAllMapServerInitOK();
|
#
|
# class IPY_MOnAllMapServerInitOK
|
# {
|
# public:
|
# //µ±Ç°Ê±¼ä
|
# char * GetTime();
|
# };
|
#===============================================================================
|
## GameServer֪ͨMapServerËùÓеØÍ¼·þÎñÆ÷³õʼ»¯³É¹¦
|
# @param index µØÍ¼Ë÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks µ±Ò»¸öµØÍ¼·þÎñÆ÷ÖØÆô»òÕßËùÓзþÎñÆ÷¿ªÆô³É¹¦Ê±µ÷ÓÃ
|
def GameServer_OnAllMapServerInitOK(index , tick):
|
pack = IPY_GameWorld.IPY_MOnAllMapServerInitOK()
|
#ͬ²½ÊÀ½ç·þÎñÆ÷ʱ¼ä
|
SetMapServerTimeFromGameServer(pack.GetTime())
|
#¿ª·þ¼ì²éÖØÉúµãÐÅÏ¢
|
__DoLogic_OpenMapCheckRebornPoint()
|
#¿ª·þ¼ì²éÈÎÎñÊý
|
__DoLogic_OpenMapCheckMissionCount()
|
#×¢²á¼¶Áª¼ÆÊ±Æ÷
|
#GameWorldProcess.RegLvTimer(tick)
|
return
|
|
#---------------------------------------------------------------------
|
##¼ì²éÈÎÎñÊýÁ¿
|
# @param ÎÞ
|
# @return None
|
# @remarks ¿ª·þÑéÖ¤ÈÎÎñÊý
|
def __DoLogic_OpenMapCheckMissionCount():
|
#½öÔÚDebug°æ±¾ÑéÖ¤
|
if not GameWorld.GetGameWorld().GetDebugLevel():
|
return
|
|
#»ñÈ¡ÈÎÎñ×ܱí
|
allMissionDict = ReadChConfig.GetEvalChConfig('MissionAcceptMapID')
|
#»ñÈ¡ÈÎÎñÊýÁ¿ÏÞÖÆ±í
|
missionCntList = ReadChConfig.GetEvalChConfig('MissionMaxCount')
|
#[×ÜÊý, È«ÇøÈ«·þÈÎÎñÊý]
|
totalAcceptMissionCnt, allMapAcceptMissionCnt = missionCntList
|
|
#µ±Ç°ÈÎÎñ×ÜÊý
|
allMissionCnt = len(allMissionDict)
|
|
#---ÑéÖ¤ÈÎÎñÊý---
|
if allMissionCnt > totalAcceptMissionCnt:
|
GameWorld.ErrLog('ÈÎÎñ×ÜÊý³¬±ê, maxCnt = %s, curCnt = %s'%(totalAcceptMissionCnt, allMissionCnt))
|
raise BaseException('ÈÎÎñ×ÜÊý³¬±ê, maxCnt = %s, curCnt = %s'%(totalAcceptMissionCnt, allMissionCnt))
|
return
|
|
#---ÑéÖ¤È«ÇøÈ«·þÈÎÎñÊý---
|
allMapMissionCnt = 0
|
|
for value in allMissionDict.values():
|
if -1 not in value:
|
continue
|
|
allMapMissionCnt += 1
|
|
if allMapMissionCnt > allMapAcceptMissionCnt:
|
GameWorld.ErrLog('È«ÇøÈ«·þÈÎÎñ×ÜÊý³¬±ê, maxCnt = %s, curCnt = %s'%(allMapAcceptMissionCnt, allMapMissionCnt))
|
raise BaseException('È«ÇøÈ«·þÈÎÎñ×ÜÊý³¬±ê, maxCnt = %s, curCnt = %s'%(allMapAcceptMissionCnt, allMapMissionCnt))
|
return
|
|
GameWorld.Log('ÑéÖ¤ÈÎÎñÊýÍê±Ï, cnt = %s, maxCnt = %s, allMapCnt = %s, maxAllMapCnt = %s'%(allMissionCnt, totalAcceptMissionCnt, allMapMissionCnt, allMapAcceptMissionCnt))
|
return
|
#---------------------------------------------------------------------
|
## ¼ì²éÖØÉúµãÐÅÏ¢
|
# @param ÎÞ
|
# @return None
|
# @remarks ¿ª·þÑéÖ¤ÖØÉúµãÐÅÏ¢
|
def __DoLogic_OpenMapCheckRebornPoint():
|
#½öÔÚDebug°æ±¾ÑéÖ¤
|
if not GameWorld.GetGameWorld().IsTrueDebug():
|
return
|
|
gameData = GameWorld.GetGameData()
|
br_Count = gameData.GetBornRefreshCount()
|
mapManager = GameWorld.GetMap()
|
mapID = mapManager.GetMapID()
|
|
for index in range(0, br_Count):
|
br_Point = gameData.GetBornRefreshByIndex(index)
|
br_PointPosX = br_Point.GetPosX()
|
br_PointPosY = br_Point.GetPosY()
|
br_Round = br_Point.GetRound()
|
|
for checkPosX in range(br_PointPosX - br_Round, br_PointPosX + br_Round + 1):
|
for checkPosY in range(br_PointPosY - br_Round, br_PointPosY + br_Round + 1):
|
#¼ì²éͨ¹ý
|
if mapManager.IsValidPos(checkPosX, checkPosY):
|
continue
|
|
GameWorld.ErrLog('µØÍ¼ID = %s ÖØÉúµã×ø±ê²»ºÏ·¨, index = %s, br_PointPosX = %s, br_PointPosY = %s, br_Round = %s, checkPosX = %s, checkPosY = %s '%(mapID, index, br_PointPosX, br_PointPosY, br_Round, checkPosX, checkPosY))
|
raise BaseException('µØÍ¼ID = %s ÖØÉúµã×ø±ê²»ºÏ·¨, index = %s, br_PointPosX = %s, br_PointPosY = %s, br_Round = %s, checkPosX = %s, checkPosY = %s '%(mapID, index, br_PointPosX, br_PointPosY, br_Round, checkPosX, checkPosY))
|
|
GameWorld.Log('ÑéÖ¤ÖØÉúµãÍê±Ï, mapID = %s, cnt = %s'%(mapID, br_Count))
|
return
|
#---------------------------------------------------------------------
|
|
def GMDateTime(curPlayer, eventName):
|
if eventName == 'GMOnHour':
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
|
return
|
|
if eventName == 'GMOnDay':
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
|
return
|
|
if eventName == 'GMOnWeek':
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
|
return
|
|
if eventName == 'GMOnMonth':
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonthEx, 0)
|
return
|
|
if eventName == 'GMOnYear':
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnYear, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonthEx, 0)
|
return
|
|
return
|
|
## ¸üÐÂÍæ¼ÒÔÚÏßʱ¼ä(²ÎÊý -> µ±Ç°Íæ¼Ò)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def UpdatePlayerLoginTime(curPlayer):
|
lastLoginTimeStr = curPlayer.GetLogoffTime()
|
lastLoginTimeStr = lastLoginTimeStr.strip()
|
curTimeStr = GameWorld.GetCurrentDataTimeStr()
|
|
if lastLoginTimeStr == "" or lastLoginTimeStr == '0':
|
curPlayer.SetLogoffTime(curTimeStr)
|
|
#OnHourʼþ
|
if __Get_Can_OnHour(curPlayer):
|
PlayerOnHour(curPlayer)
|
|
#OnDayʼþ
|
if __Get_Can_OnDay(curPlayer):
|
PlayerOnDay(curPlayer)
|
|
#OnDayExʼþ
|
#if __Get_Can_OnDayEx(curPlayer):
|
# PlayerOnDayEx(curPlayer)
|
|
#OnWeekʼþ
|
if __Get_Can_OnWeek(curPlayer):
|
PlayerOnWeek(curPlayer)
|
|
#OnWeekExʼþ
|
#if __Get_Can_OnWeekEx(curPlayer):
|
# PlayerOnWeekEx(curPlayer)
|
|
#OnMonthʼþ
|
if __Get_Can_OnMonth(curPlayer):
|
PlayerOnMonth(curPlayer)
|
|
#OnMonthExʼþ
|
#if __Get_Can_OnMonthEx(curPlayer):
|
# PlayerOnMonthEx(curPlayer)
|
|
#OnYearʼþ
|
if __Get_Can_OnYear(curPlayer):
|
PlayerOnYear(curPlayer)
|
return
|
|
|
## ¼ì²éÍæ¼ÒÊÇ·ñ¿ÉÒÔOnHour
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curMission µ±Ç°ÈÎÎñ
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __Get_Can_OnHour(curPlayer):
|
#»ñȡϵͳÊý¾Ý
|
curDateTime = GameWorld.GetCurrentTime()
|
dateTime_Hour = curDateTime.hour
|
dateTime_Day = curDateTime.day
|
dateTime_Month = curDateTime.month
|
dateTime_Year = curDateTime.year
|
#»ñÈ¡Íæ¼ÒÊý¾Ý
|
player_Hour = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnHour)
|
player_Day = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnDay)
|
player_Month = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnMonth)
|
player_Year = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnYear)
|
|
return (dateTime_Hour != player_Hour or dateTime_Day != player_Day or dateTime_Month != player_Month or dateTime_Year != player_Year)
|
|
|
## ¼ì²éÍæ¼ÒÊÇ·ñ¿ÉÒÔOnDay
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curMission µ±Ç°ÈÎÎñ
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __Get_Can_OnDay(curPlayer):
|
#»ñȡϵͳÊý¾Ý
|
curDateTime = GameWorld.GetCurrentTime()
|
dateTime_Day = curDateTime.day
|
dateTime_Month = curDateTime.month
|
dateTime_Year = curDateTime.year
|
#»ñÈ¡Íæ¼ÒÊý¾Ý
|
player_Day = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnDay)
|
player_Month = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnMonth)
|
player_Year = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnYear)
|
|
if (dateTime_Day != player_Day or dateTime_Month != player_Month or dateTime_Year != player_Year):
|
return dateTime_Day
|
return 0
|
|
## ¼ì²éÍæ¼ÒÊÇ·ñ¿ÉÒÔOnWeek
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curMission µ±Ç°ÈÎÎñ
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __Get_Can_OnWeek(curPlayer):
|
#»ñȡϵͳÊý¾Ý
|
curDateTime = GameWorld.GetCurrentTime()
|
dateTime_Week = datetime.datetime.isocalendar(curDateTime)[1]
|
#»ñÈ¡Íæ¼ÒÊý¾Ý
|
player_Week = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnWeek)
|
#²»¿¼ÂǸôÄêÇé¿ö£¬Èç2009,12,31ÈÕÏÂÏß->2010,12,31ÈÕÉÏÏß(²»´¥·¢OnWeek)
|
if (dateTime_Week != player_Week):
|
return dateTime_Week
|
return 0
|
|
## ¼ì²éÍæ¼ÒÊÇ·ñ¿ÉÒÔOnMonth
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curMission µ±Ç°ÈÎÎñ
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __Get_Can_OnMonth(curPlayer):
|
#»ñȡϵͳÊý¾Ý
|
curDateTime = GameWorld.GetCurrentTime()
|
dateTime_Month = curDateTime.month
|
dateTime_Year = curDateTime.year
|
#»ñÈ¡Íæ¼ÒÊý¾Ý
|
player_Month = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnMonth)
|
player_Year = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnYear)
|
if (dateTime_Month != player_Month or dateTime_Year != player_Year):
|
return dateTime_Month
|
return 0
|
|
## ¼ì²éÍæ¼ÒÊÇ·ñ¿ÉÒÔOnYear
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curMission µ±Ç°ÈÎÎñ
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __Get_Can_OnYear(curPlayer):
|
#»ñȡϵͳÊý¾Ý
|
curDateTime = GameWorld.GetCurrentTime()
|
dateTime_Year = curDateTime.year
|
#»ñÈ¡Íæ¼ÒÊý¾Ý
|
player_Year = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnYear)
|
|
return (dateTime_Year != player_Year)
|
#---------------------------------------------------------------------
|
#===============================================================================
|
# //////////////////////////////////////////////////////////////
|
# //01 12 ʱ¼äͬ²½#tagMOnTimeSync
|
# tagMOnTimeSync * GettagMOnTimeSync();
|
#
|
# class IPY_MOnTimeSync
|
# {
|
# public:
|
#
|
# char * GetTime();
|
# };
|
#===============================================================================
|
## ͬ²½ÊÀ½ç·þÎñÆ÷ʱ¼ä 01 12 ʱ¼äͬ²½
|
# @param index Íæ¼ÒË÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def GameServer_OnTimeSync(index , tick):
|
pack = IPY_GameWorld.IPY_MOnTimeSync()
|
SetMapServerTimeFromGameServer(pack.GetTime())
|
return
|
#---------------------------------------------------------------------
|
#===============================================================================
|
# //01 13 GameServer¹ã²¥#tagMBroadcastMsg
|
#
|
# struct tagMBroadcastMsg
|
# {
|
# tagHead Head;
|
# WORD MsgLen;
|
# char Msg[MsgLen]; //size = MsgLen
|
# };
|
#===============================================================================
|
## 01 13 GameServer¹ã²¥
|
# @param index Íæ¼ÒË÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def GameServer_BroadcastMsg(index, tick):
|
pack = IPY_GameWorld.IPY_MBroadcastMsg()
|
msg = pack.GetMsg()
|
|
if not msg.startswith(ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn[:-3]):
|
GameWorld.Log('GameServer_BroadcastMsg msg = %s'%(msg))
|
#---½ÓÊÕÊÀ½ç·þÎñÆ÷·¢À´µÄÏûÏ¢---
|
|
#ÓÑÇéÌáʾ: '+'·Ö¸ôkey ºÍValue, ÓÃÓÚMapServerµÄ SetGameWorldDictµÄ²ÎÊý
|
msgList = msg.split(ShareDefine.Def_Notify_Separator)
|
|
if len(msgList) == 2:
|
key = msgList[0]
|
msgValue = msgList[1]
|
|
if key == ShareDefine.Def_Notify_WorldKey_CommMapLinePlayerCount:
|
PyGameData.g_commMapLinePlayerCountDict = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_BossShuntPlayer:
|
PyGameData.g_bossShuntPlayerInfo = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_BossShuntLineState:
|
PyGameData.g_bossShuntLineState = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FamilyKillHorsePetRobBossCnt:
|
PyGameData.g_familyKillHorsePetRobBossCntDict = eval(msgValue)
|
FamilyRobBoss.OnFamilyKillHorsePetRobBossCntChange(tick)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FBEnterTimeLimiitMapID:
|
PyGameData.FBEnterTimeLimiitMapID = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FBOpenRecord:
|
PyGameData.FBOpenTimeRecord = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_VSFamilyInfo:
|
PyGameData.VSFamilyInfo = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FamilyPartyInfo:
|
if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_FamilyParty:
|
PyGameData.g_familyPartyInfo = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FamilyPartyAddFamilyActivity:
|
mapID, familyID, addFamilyActivity = eval(msgValue)
|
if GameWorld.GetMap().GetMapID() == mapID:
|
GameLogic_FamilyParty.DoAddFamilyMemberFamilyActivity(familyID, addFamilyActivity)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FamilyZhenfaInfo:
|
PlayerFamilyZhenfa.GameServer_FamilyZhenfa(eval(msgValue))
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_AssistBoss:
|
assistData = eval(msgValue)
|
if GameWorld.GetMap().GetMapID() == assistData[0]:
|
PlayerAssist.GameServer_AssistBossMsg(assistData[1:])
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_AddFamilyAuctionItem:
|
mapID, familyAuctionItemDict = eval(msgValue)
|
if GameWorld.GetMap().GetMapID() == mapID:
|
PlayerAuctionHouse.DoAddFamilyAuctionItem(familyAuctionItemDict)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_AddSystemAuctionItem:
|
mapID, sysAuctionItemList = eval(msgValue)
|
if GameWorld.GetMap().GetMapID() == mapID:
|
PlayerAuctionHouse.DoAddSystemAuctionItem(sysAuctionItemList)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_FairyDomainLimit:
|
isAdd, limitList = eval(msgValue)
|
if isAdd:
|
PyGameData.g_fairyDomainLimit += limitList
|
else:
|
PyGameData.g_fairyDomainLimit = limitList
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_CoupleInfo:
|
syncCoupleInfo = eval(msgValue)
|
for playerID, coupleInfo in syncCoupleInfo.items():
|
PlayerControl.SetCoupleInfo(playerID, coupleInfo)
|
return
|
|
if key.startswith(ShareDefine.Def_Notify_WorldKey_OperationActionInfo[:-2]):
|
keyHead = ShareDefine.Def_Notify_WorldKey_OperationActionInfo[:-2]
|
actionName = key[len(keyHead):]
|
actInfo = eval(msgValue)
|
actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
|
if actionName in ShareDefine.MultiActNumOperationActNameList:
|
if not actNum:
|
GameWorld.ErrLog('MultiActNumOperation can not found actNum. actionName=%s,msg = %s' % (actionName, msg))
|
return
|
if actionName not in PyGameData.g_operationActionDict:
|
PyGameData.g_operationActionDict[actionName] = {}
|
PyGameData.g_operationActionDict[actionName][actNum] = actInfo
|
else:
|
PyGameData.g_operationActionDict[actionName] = actInfo
|
|
if actionName == ShareDefine.OperationActionName_ExpRate:
|
PlayerControl.RefreshOperationAction_ExpRate()
|
|
elif actionName == ShareDefine.OperationActionName_CostRebate:
|
PlayerCostRebate.RefreshCostRebateActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_TotalRecharge:
|
PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_GarbageSorting:
|
PlayerActGarbageSorting.RefreshGarbageSortingActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_XianXiaMJ:
|
PlayerActXianXiaMJ.RefreshXianXiaMJActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_Gubao:
|
PlayerActGubao.RefreshGubaoActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_HorsePetTrain:
|
PlayerActHorsePetTrain.RefreshHorsePetTrainActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_GodGift:
|
PlayerActGodGift.RefreshGodGiftActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_ManyDayRecharge:
|
PlayerActManyDayRecharge.RefreshManyDayRechargeActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_SingleRecharge:
|
PlayerActSingleRecharge.RefreshSingleRechargeActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_Turntable:
|
PlayerActTurntable.RefreshTurntableActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_SpringSale:
|
PlayerSpringSale.RefreshSpringSaleActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_BossReborn:
|
PlayerBossReborn.RefreshOperationAction_BossReborn()
|
|
elif actionName == ShareDefine.OperationActionName_BossTrial:
|
PlayerActBossTrial.RefreshBossTrialActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_HorsePetFeast:
|
PlayerActHorsePetFeast.RefreshOperationAction_HorsePetFeast(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_FlashGiftbag:
|
PlayerFlashGiftbag.RefreshFlashGiftbagActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_DailyGiftbag:
|
PlayerDailyGiftbag.RefreshDailyGiftbagActionInfo()
|
|
elif actionName == ShareDefine.OperationActionName_BuyOne:
|
PlayerActBuyOne.RefreshBuyOneActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_FamilyCTGAssist:
|
PlayerActFamilyCTGAssist.RefreshFamilyCTGAssistActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_FairyCeremony:
|
PlayerFairyCeremony.RefreshOperationAction_FairyCeremony()
|
|
elif actionName == ShareDefine.OperationActionName_NewFairyCeremony:
|
PlayerNewFairyCeremony.RefreshOperationAction_NewFairyCeremony()
|
|
elif actionName == ShareDefine.OperationActionName_FlashSale:
|
PlayerFlashSale.RefreshflashSaleActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_WishingWell:
|
PlayerWishingWell.RefreshWishingWellAction()
|
|
elif actionName == ShareDefine.OperationActionName_CollectWords:
|
PlayerActCollectWords.RefreshActCollectWordsInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_WeekParty:
|
PlayerWeekParty.RefreshOperationAction_WeekParty()
|
|
elif actionName == ShareDefine.OperationActionName_BuyCountGift:
|
PlayerActBuyCountGift.RefreshBuyCountGiftActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_ActTask:
|
PlayerActTask.RefreshActTaskActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_Yunshi:
|
PlayerActYunshi.RefreshActYunshiActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_Lunhuidian:
|
PlayerActLunhuidian.RefreshActLunhuidianActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_LoginAward:
|
PlayerActLogin.RefreshOperationAction_LoginAward()
|
|
elif actionName == ShareDefine.OperationActionName_ActLoginNew:
|
PlayerActLoginNew.RefreshActLoginActionInfo(actNum)
|
|
elif actionName == ShareDefine.OperationActionName_FeastLogin:
|
PlayerFeastLogin.RefreshFeastLoginActionInfo()
|
|
elif actionName == ShareDefine.OperationActionName_FeastWish:
|
PlayerFeastWish.RefreshFeastWishActionInfo()
|
|
elif actionName == ShareDefine.OperationActionName_FeastTravel:
|
PlayerFeastTravel.RefreshFeastTravelActionInfo()
|
|
elif actionName == ShareDefine.OperationActionName_FeastWeekParty:
|
PlayerFeastWeekParty.RefreshOperationAction_FeastWeekParty()
|
|
elif actionName == ShareDefine.OperationActionName_FeastRedPacket:
|
PlayerFeastRedPacket.RefreshOperationAction_FeastRedPacket()
|
|
elif actionName == ShareDefine.OperationActionName_LuckyTreasure:
|
PlayerLuckyTreasure.RefreshLuckyTreasureAction()
|
|
elif actionName == ShareDefine.OperationActionName_RechargePrize:
|
PlayerActRechargePrize.RefreshRechargePrizeActionInfo()
|
|
elif actionName == ShareDefine.OperationActionName_GrowupBuy:
|
PlayerActGrowupBuy.RefreshGrowupBuyActionInfo()
|
|
elif actionName == ShareDefine.OperationActionName_RechargeRebateGold:
|
PlayerActRechargeRebateGold.RefreshRechargeRebateGoldActionInfo()
|
|
return
|
|
if key.startswith(ShareDefine.Def_Notify_WorldKey_CrossActInfo[:-2]):
|
keyHead = ShareDefine.Def_Notify_WorldKey_CrossActInfo[:-2]
|
actionName = key[len(keyHead):]
|
if actionName not in PyGameData.g_crossActInfoDict:
|
PyGameData.g_crossActInfoDict[actionName] = {}
|
actInfoDict = PyGameData.g_crossActInfoDict[actionName]
|
actInfoDict.update(eval(msgValue))
|
|
if GameWorld.IsCrossServer():
|
#GameWorld.DebugLog("¿ç·þ·þÎñÆ÷µØÍ¼£¬²»´¦Àí")
|
return
|
|
if actionName == ShareDefine.CrossActName_CTGBillboard:
|
CrossActCTGBillboard.RefreshCrossActCTGBillboardInfo()
|
|
elif actionName == ShareDefine.CrossActName_AllRecharge:
|
CrossActAllRecharge.RefreshCrossActAllRechargeInfo()
|
|
elif actionName == ShareDefine.CrossActName_BossTrial:
|
PlayerActBossTrial.RefreshCrossActBossTrialInfo()
|
|
elif actionName == ShareDefine.CrossActName_XianXiaMJ:
|
PlayerActXianXiaMJ.RefreshCrossActXianXiaMJInfo()
|
|
elif actionName == ShareDefine.CrossActName_Gubao:
|
PlayerActGubao.RefreshCrossActGubaoInfo()
|
|
elif actionName == ShareDefine.CrossActName_HorsePetTrain:
|
PlayerActHorsePetTrain.RefreshCrossActHorsePetTrainInfo()
|
|
elif actionName == ShareDefine.CrossActName_Lianqi:
|
PlayerActLianqi.RefreshCrossActLianqiInfo()
|
|
elif actionName == ShareDefine.CrossActName_FamilyGCZ:
|
PlayerActFamilyGCZ.RefreshActFamilyGCZInfo()
|
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_CrossZoneName:
|
PyGameData.g_crossZoneName = msgValue
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_CrossServerTime:
|
PyGameData.g_crossServerTimeInfo = eval(msgValue)
|
playerManager = GameWorld.GetPlayerManager()
|
for index in xrange(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(index)
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
ChPlayer.Sync_PyServerDataTimeToClient(curPlayer)
|
return
|
|
# ÐÒÔËÔÆ¹º
|
if key == ShareDefine.Def_Notify_WorldKey_LuckyCloudBuyInfo:
|
PyGameData.g_luckyCloudBuyInfo = eval(msgValue)
|
PlayerLuckyCloudBuy.OnLuckyCloudBuyChange()
|
return
|
|
# ¹¦ÄܶÓÎé
|
if key == ShareDefine.Def_Notify_WorldKey_FuncTeamMemIDInfo:
|
PlayerFuncTeam.OnFuncTeamMemIDRefresh(eval(msgValue))
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_CrossBattlefieldCallTeamInfo:
|
PyGameData.g_crossBattlefieldCallTeamInfo = eval(msgValue)
|
return
|
|
if key == ShareDefine.Def_Notify_WorldKey_CrossBattlefieldSysCallBuyInfo:
|
PyGameData.g_crossBattlefieldSysCallBuyList = eval(msgValue)
|
return
|
|
if msgValue.isdigit():
|
value = int(msgValue)
|
else:
|
GameWorld.ErrLog("GameServer_BroadcastMsg unKnowMsg: %s = %s" % (key, msgValue))
|
return
|
|
#ÌØÊâ´¦Àí
|
elif msg == 'ReloadConfig':
|
key = ShareDefine.Def_Notify_WorldKey_ReloadConfig
|
value = 1
|
|
else:
|
GameWorld.ErrLog('GameServer_BroadcastMsg unKnowMsg, msg = %s'%(msg))
|
return
|
|
gameWorldMgr = GameWorld.GetGameWorld()
|
|
#ÌØÊâÖ´ÐÐÂß¼--warning:ÕâÀï´¦ÀíµÄÂß¼»¹Ã»´ækey, Çø·ÖºÃ
|
if key == ShareDefine.Def_Notify_WorldKey_ReloadConfig:
|
__DoLogic_OtherReloadDict(gameWorldMgr, value)
|
|
#===============================================================================================
|
# #ÖØ¶Á½Å±¾
|
# elif key == ShareDefine.Def_Notify_WorldKey_MapServerScriptReloadVersion:
|
# ReloadModule.DoMapServerScriptReload(value, tick)
|
#===============================================================================================
|
|
# ¿ç·þPK
|
elif key == ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID:
|
PlayerCrossRealmPK.OnCrossRealmPKSeasonChange(value)
|
|
# ÊØÎÀÈË»Ê
|
elif key == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyInvade:
|
if gameWorldMgr.GetGameWorldDictByKey(key) != value:
|
GameLogic_FamilyInvade.OnFamilyInvadeStateChange(value, tick)
|
# ÉϹÅÕ½³¡
|
elif key == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_ElderBattlefield:
|
if gameWorldMgr.GetGameWorldDictByKey(key) != value:
|
GameLogic_ElderBattlefield.OnElderBattlefieldStateChange(value, tick)
|
# ¶àÏÉÃËBOSS
|
elif key in [ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyBoss1]:
|
if gameWorldMgr.GetGameWorldDictByKey(key) != value:
|
GameLogic_AllFamilyBoss.OnAllFamilyBossStateChange(value, tick)
|
# Æï³èBOSS
|
elif key == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_HorsePetBoss:
|
if gameWorldMgr.GetGameWorldDictByKey(key) != value:
|
GameLogic_HorsePetBoss.OnHorsePetBossStateChange(value, tick)
|
|
# ¿ç·þÑýħboss
|
elif key == ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.CrossDailyActionID_YaomoBoss:
|
if gameWorldMgr.GetGameWorldDictByKey(key) != value:
|
PlayerCrossYaomoBoss.OnYaomoBossStateChange(value, tick)
|
|
# ÊÀ½çµÈ¼¶
|
elif key == ShareDefine.Def_Notify_WorldKey_WorldAverageLv:
|
if value and gameWorldMgr.GetGameWorldDictByKey(key) != value:
|
gameWorldMgr.SetGameWorldDict(key, value) # ÊÀ½çµÈ¼¶ÏȸüÐÂÔÙ´¦Àí
|
playerManager = GameWorld.GetPlayerManager()
|
for index in xrange(playerManager.GetPlayerCount()):
|
curPlayer = playerManager.GetPlayerByIndex(index)
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
continue
|
PlayerWorldAverageLv.UpdatePlayerWorldAverageLv(curPlayer)
|
|
#ͨÓÃÉèÖÃ
|
befValue = gameWorldMgr.GetGameWorldDictByKey(key)
|
gameWorldMgr.SetGameWorldDict(key, value)
|
|
#-------ÔÚÉèÖÃÁË×ÖµäÖµÒÔºó´¦Àí---------------------------------
|
# Ë¢ÐÂÊÀ½çboss
|
if key.startswith('GameWorldBossReborn_'):
|
NPCCustomRefresh.ProcessAllNPCRefresh(tick)
|
|
# ÍõÕßÏÉÃË
|
elif key == ShareDefine.Def_Notify_WorldKey_ChampionFamilyID:
|
GameLogic_FamilyWar.OnChampionFamilyIDChange()
|
|
# ÏÉÃËÑç»á
|
elif key == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty:
|
if befValue != value:
|
GameLogic_FamilyParty.OnFamilyPartyStateChange(value, tick)
|
|
#===============================================================================
|
# ---ÐÞ¸ÄΪÉÏÊöµÄ ͳһ×ֵ䴦Àí
|
# if msg == ChConfig.Def_Notify_Key_PurTalk:
|
# #¼àÊÓÍæ¼ÒÁÄÌì
|
# gameWorld.SetGameWorldDict(ChConfig.Def_MapKey_LogInDBPlayerTalk , 1)
|
#
|
# elif msg == ChConfig.Def_Notify_Key_UnPurTalk:
|
# #½â³ý¼àÊÓÍæ¼ÒÁÄÌì
|
# gameWorld.SetGameWorldDict(ChConfig.Def_MapKey_LogInDBPlayerTalk , 0)
|
#
|
# elif msg == 'ReloadConfig':
|
# #ÖØ¶Á²ß»®ÅäÖñí
|
# gameWorld.SetGameWorldDict(ChConfig.Def_ReloadConfig , 1)
|
#
|
# elif msg.find('ActionAccept') != -1:
|
# #֪ͨ¿ªÆô»î¶¯
|
# ActionStateAccept(msg, tick)
|
#===============================================================================
|
return
|
|
##ÖØ¶Á¸÷ÖÖÅäÖÃ×Öµä¸ü¸Ä״̬
|
# @param gameWorldMgr ÊÀ½ç¹ÜÀíÆ÷
|
# @param value ×ÖµäÖµ
|
# @return None
|
def __DoLogic_OtherReloadDict(gameWorldMgr, value):
|
#texͼÐÎÑéÖ¤ÂëÖØ¶Á
|
gameWorldMgr.SetGameWorldDict(ShareDefine.Def_Notify_WorldKey_ReloadTexCaptcha, value)
|
|
#jpegͼÐÎÑéÖ¤ÂëÖØ¶Á
|
gameWorldMgr.SetGameWorldDict(ShareDefine.Def_Notify_WorldKey_ReloadJpegCaptcha, value)
|
|
IpyGameDataPY.IPYData.IpyDataClear()
|
|
#ÈÎÎñÖØ¶Á£¬Ðè·ÅÔÚÅäÖÃÖØ¶ÁºóÃæ£¬ÔÝʱĬÈϹرգ¬½öÓÐÐèÒªÖØ¶ÁÈÎÎñʱ¿ªÆôÅäÖÃ
|
if IpyGameDataPY.GetFuncCfg("ReloadQuests", 1):
|
tick = GameWorld.GetGameWorld().GetTick()
|
QuestManager.ReloadQuests(tick)
|
EventShell.DoReloadRefresh()
|
return
|
|
#===============================================================================
|
# ## ֪ͨ¿ªÆô»î¶¯
|
# # @param msg »î¶¯ÐÅÏ¢
|
# # @param tick µ±Ç°Ê±¼ä
|
# # @return None
|
# # @remarks º¯ÊýÏêϸ˵Ã÷.
|
# def ActionStateAccept(msg, tick):
|
# msg = eval(msg.replace('ActionAccept', ''))
|
# GameWorld.GetGameWorld().SetGameWorldDict(msg[:-1] , int(msg[-1]))
|
# return
|
#===============================================================================
|
#---------------------------------------------------------------------
|
|
## C++·â°ü´¥·¢Æ÷£¬³õʼ»¯·þÎñÆ÷°æ±¾ºÅ
|
# @param index Íæ¼ÒË÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnServerVersionSetting(index , tick):
|
FBLogic.OnInit(tick)
|
return
|
#---------------------------------------------------------------------
|
|
|