| #!/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  | 
|   |