#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package PlayerLVAward
|
#
|
# @todo: ¼ÇÂ¼Íæ¼ÒµÄµÈ¼¶½±ÀøÐÅÏ¢£¬¶þ½øÖÆÎ»±êʾ£¬Ä¿Ç°ÓÃÁËÒ»¸ö×Öµä
|
# @author xdh
|
# @date 2018-03-07 13:50
|
# ¼òҪ˵Ã÷:
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö:
|
#
|
"""Version = 2018-03-07 13:50"""
|
#------------------------------------------------------------------------------
|
import GameWorld
|
import IPY_GameWorld
|
import ItemControler
|
import ChConfig
|
import ChPyNetSendPack
|
import NetPackCommon
|
import ItemCommon
|
import PlayerControl
|
import IpyGameDataPY
|
import DataRecordPack
|
|
|
|
|
## ÁìÈ¡Íæ¼ÒµÈ¼¶½±Àø
|
# @param getLV£ºÁìÈ¡µÄµÈ¼¶
|
# @return None
|
def GetPlayerLVAward(curPlayer, awardID):
|
ipyData = IpyGameDataPY.GetIpyGameData('LVAward', awardID)
|
if not ipyData:
|
return
|
|
getLV = ipyData.GetLV()
|
# ¼ì²é¿É·ñÁìÈ¡
|
|
# Íæ¼ÒµÈ¼¶Ð¡ÓÚÁìÈ¡µÈ¼¶
|
if curPlayer.GetLV() < getLV:
|
GameWorld.ErrLog("GetLVAward error£ºgetLV=%s greater than heroLV=%s" % (getLV, curPlayer.GetLV()))
|
return
|
awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardGetRecord, 0,
|
ChConfig.Def_PDictType_LVAward)
|
vipAwardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardVIPGetRecord, 0,
|
ChConfig.Def_PDictType_LVAward)
|
awardMark = pow(2, awardID - 1)
|
if awardInfo & awardMark and vipAwardInfo & awardMark:
|
#ÒÑÁìÈ¡
|
GameWorld.DebugLog("ÁìÈ¡Íæ¼ÒµÈ¼¶½±ÀøÒÑÁìÈ¡½±Àø£¡awardID=%s,getLV=%s" % (awardID, getLV))
|
return
|
itemList = []
|
if not awardInfo & awardMark:
|
#·Çvip½±Àø
|
job = curPlayer.GetJob()
|
awardDict = ipyData.GetReward()
|
if str(job) not in awardDict:
|
return
|
itemList += awardDict[str(job)]
|
hasVIPAward = False #ÊÇ·ñÓÐVIP½±Àø
|
if not vipAwardInfo & awardMark:
|
if curPlayer.GetVIPLv() >= ipyData.GetVIPLimit():
|
itemList += ipyData.GetVIPAward()
|
hasVIPAward = True
|
if not itemList:
|
return
|
# ¼ì²é±³°ü
|
needSpace = len(itemList)
|
packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
if needSpace > packSpace:
|
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
return
|
|
serverLimitCnt = ipyData.GetLimitCnt()
|
if serverLimitCnt > 0:
|
if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LvAwardQueryState) == 1:
|
#ÒѾÔÚ²éѯÖÐ, ²»Öظ´²éѯ
|
GameWorld.DebugLog("ÒѾÔÚ²éѯÖÐ, ²»Öظ´²éѯ awardID=%s" % awardID)
|
return
|
cmdStr = '%s' % ([awardID, serverLimitCnt, getLV])
|
GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0,
|
"GetPlayerLVAward", cmdStr, len(cmdStr))
|
#ÉèÖÃ״̬²éѯÖÐ
|
curPlayer.SetDict(ChConfig.Def_PlayerKey_LvAwardQueryState, 1)
|
return
|
|
# ¸øÎïÆ·
|
GiveLVAward(curPlayer, awardID, itemList, hasVIPAward)
|
return
|
|
def GiveLVAward(curPlayer, awardID, itemList=[], hasVIPAward=False):
|
if not itemList:
|
ipyData = IpyGameDataPY.GetIpyGameData('LVAward', awardID)
|
job = curPlayer.GetJob()
|
awardDict = ipyData.GetReward()
|
itemList = awardDict[str(job)]
|
|
# ¸øÎïÆ·
|
for itemID, itemCount in itemList:
|
ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
|
|
# ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç
|
awardMark = pow(2, awardID - 1)
|
awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardGetRecord, 0,
|
ChConfig.Def_PDictType_LVAward)
|
vipAwardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardVIPGetRecord, 0,
|
ChConfig.Def_PDictType_LVAward)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LVAwardGetRecord, awardInfo | awardMark, ChConfig.Def_PDictType_LVAward)
|
if hasVIPAward:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LVAwardVIPGetRecord, vipAwardInfo | awardMark, ChConfig.Def_PDictType_LVAward)
|
# ֪ͨ¿Í»§¶Ë
|
Sync_LVAwardGetRecordInfo(curPlayer)
|
|
# ¼Ç¼Áìȡʼþ
|
DataRecordPack.DR_LVAward(curPlayer, awardID)
|
return
|
|
## ֪ͨµÈ¼¶½±ÀøÁìÈ¡¼Ç¼ÐÅÏ¢
|
# @param None
|
# @return None
|
def Sync_LVAwardGetRecordInfo(curPlayer):
|
sendPack = ChPyNetSendPack.tagMCPlayerLVAwardGetRecord()
|
sendPack.Clear()
|
sendPack.LVAwardGetRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardGetRecord, 0,
|
ChConfig.Def_PDictType_LVAward)
|
sendPack.VIPAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardVIPGetRecord, 0,
|
ChConfig.Def_PDictType_LVAward)
|
NetPackCommon.SendFakePack(curPlayer, sendPack)
|
return
|
|