#!/usr/bin/python # -*- coding: GBK -*- # # ##@package PlayerWorldAverageLv.py # # @todo:ÊÀ½çµÈ¼¶ # # @author zhangxi # @date 2012-07-09 # @version 1.2 # @note: # @change: "2013-03-13 17:00" wdb ɾ³ý·â°ü # @change: "2014-08-18 12:30" hxp »Ö¸´ÊÀ½çµÈ¼¶ # #------------------------------------------------------------------------------ #"""Version = 2014-08-18 12:30""" #------------------------------------------------------------------------------ import GameWorld import ShareDefine import ChPyNetSendPack import NetPackCommon import PlayerControl import GameFuncComm import IpyGameDataPY import math #----------------------------------------------------------------------------- def OnLogin(curPlayer): ## µÇ¼ÊÀ½çµÈ¼¶´¦Àí if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_WorldLV): return __CheckAverageLvBuff(curPlayer) # ͬ²½ Sync_WorldAverageLv(curPlayer) return def UpdatePlayerWorldAverageLv(curPlayer): ## ÊÀ½çµÈ¼¶±ä¸ü¸üРif not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_WorldLV): return # ÊÀ½çµÈ¼¶,¾­Ñé±¶ÂÊ,ÄÜ·ñÁì½± Sync_WorldAverageLv(curPlayer) # ¾­Ñé±¶Âʸıä PlayerControl.Sync_ExpRateChange(curPlayer) __CheckAverageLvBuff(curPlayer) return def __CheckAverageLvBuff(curPlayer): ## ¼ì²éÊÀ½çµÈ¼¶buff #=========================================================================== # tick = GameWorld.GetGameWorld().GetTick() # worldLv = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) # expRate = GetWorldAverageLvExpRate(curPlayer) # GameWorld.DebugLog("UpdatePlayerWorldAverageLv...worldLv=%s,expRate=%s" % (worldLv, expRate)) # if expRate > 0: # GameWorld.DebugLog(" AddBuffNoRefreshState...") # addSkill = GameWorld.GetGameData().GetSkillBySkillID(ChConfig.Def_SkillID_WorldAverageLvBuff) # buffType = SkillCommon.GetBuffType(addSkill) # BuffSkill.AddBuffNoRefreshState(curPlayer, buffType, addSkill, tick, 0, curPlayer) # else: # GameWorld.DebugLog(" DelBuffBySkillID...") # BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_SkillID_WorldAverageLvBuff, tick, False) #=========================================================================== return def GetWorldAverageLvExpRate(curPlayer): ## »ñÈ¡ÊÀ½çµÈ¼¶µÄ¾­Ñé±¶ÂÊ worldLv = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) if not worldLv: return 0 #µÈ¼¶ÏÞÖÆ if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_WorldLV): return 0 playerLv = curPlayer.GetLV() #²ÎÊý worldExpRateFormula = IpyGameDataPY.GetFuncCompileCfg('WorldLvExpRate') expRate = eval(worldExpRateFormula) expRate = int(expRate) return expRate def Sync_WorldAverageLv(curPlayer): ## ֪ͨÊÀ½çµÈ¼¶ gameWorld = GameWorld.GetGameWorld() worldAverageLv = ChPyNetSendPack.tagPyMCWorldAverageLv() worldAverageLv.Clear() worldAverageLv.WorldLv = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) worldAverageLv.ExpRate = GetWorldAverageLvExpRate(curPlayer) NetPackCommon.SendFakePack(curPlayer, worldAverageLv) return