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