#!/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 FBLogic import IPY_GameWorld import ChPlayer 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 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 PlayerTongTianLing import PlayerRefineStove import PlayerFlashSale import PlayerWishingWell import PlayerFairyDomain import CrossPlayerData import PlayerTreasure import PlayerZhanling import PlayerVip import PlayerLove import IpyGameDataPY import FamilyRobBoss import FBHelpBattle import PlayerAssist import PlayerArena import PyGameData import PlayerGuaji import PlayerXiangong 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() #¸±±¾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) #תÅÌ 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) #¹ºÂò´ÎÊýÇå¿Õ Operate_PlayerBuyZhenQi.PlayerOnDay(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: #¾º¼¼³¡ 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() #çÎç¿ÏÉÓò 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_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_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() 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 #---------------------------------------------------------------------