#!/usr/bin/python # -*- coding: GBK -*- # # ##@package GameWorldAverageLv.py # # @todo:ÊÀ½çµÈ¼¶ # # @author zhangxi # @date 2012-07-06 # @version 1.5 # @note: # @change: "2012-07-09 15:40" zhangxi ÐÞ¸ÄÅäÖñí¶ÁÈ¡ # @change: "2012-07-17 14:30" zhangxi ÐÞ¸ÄÅÅÐаñΪ¿ÕʱµÄÅÐ¶Ï # @change: "2012-07-19 19:30" zhangxi ÐÞ¸´µÚ9Ìì²Å¿ªÆô # @change: "2012-12-03 10:00" wdb ¿ç·þ·þÎñÆ÷¹¦ÄÜÏÞÖÆ # @change: "2015-02-02 12:00" hxp ÊÀ½çµÈ¼¶¼ÆËãȡֵÐÞ¸Ä(µÈ¼¶°ñ´æÖµ±ä¸ü) #------------------------------------------------------------------------------------------------------------ """Version = 2015-02-02 12:00""" #------------------------------------------------------------------------------ import GameWorld import ShareDefine import PlayerDBGSEvent import ChConfig import IpyGameDataPY #------------------------------------------------------------------------------ ## ¿ªÆôÊÀ½çµÈ¼¶ # @param None: # @return: None def OpenWorldAverageLv(): if not __IsWorldAverageLv(): return beforeLv = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) #ÉèÖÃÊÀ½çµÈ¼¶ worldAverageLv = __GetWorldAverageLv(beforeLv) if worldAverageLv != beforeLv: PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, worldAverageLv) #֪ͨµØÍ¼·þÎñÆ÷µ±Ç°ÊÀ½çµÈ¼¶ if GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) != worldAverageLv: GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, worldAverageLv) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, worldAverageLv) GameWorld.Log("WorldAverageLv Change:beforeLv = %s, curLv = %s"%(beforeLv, worldAverageLv)) return ## ÊÇ·ñ¿ªÆôÊÀ½çµÈ¼¶ # @param None: # @return: def __IsWorldAverageLv(): # ¿ç·þ·þÎñÆ÷¹¦ÄÜÏÞÖÆ if GameWorld.IsCrossServer(): return return True ## »ñÈ¡ÊÀ½çµÈ¼¶ # @param None: # @return: def __GetWorldAverageLv(beforeLv): worldLV = 0 initOpenServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime) if initOpenServerTime <= 0: return beforeLv diffSecond = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_WorldLVExtraTime) #¶îÍâʱ¼ä²ÎÊý initOpenServerTime = GameWorld.ChangeTimeNumToDatetime(initOpenServerTime, ChConfig.TYPE_Time_Format) openServerSecond = max(0, GameWorld.GetPastSeconds(str(initOpenServerTime)) + diffSecond) maxCnt = IpyGameDataPY.IPY_Data().GetWorldLVCount() for i in xrange(max(0, beforeLv-1), maxCnt): curIpyData = IpyGameDataPY.IPY_Data().GetWorldLVByIndex(i) if i == maxCnt - 1: worldLV = curIpyData.GetWorldLV() else: nextIpyData = IpyGameDataPY.IPY_Data().GetWorldLVByIndex(i+1) if curIpyData.GetOpenServerSecond() <= openServerSecond < nextIpyData.GetOpenServerSecond(): worldLV = curIpyData.GetWorldLV() break if openServerSecond < curIpyData.GetOpenServerSecond(): #·Àֹʱ¼äÍù»Øµ÷µÄÇé¿ö£¬µ¼ÖÂÊÀ½çµÈ¼¶Òì³£ worldLV = beforeLv break return worldLV