#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package Player.PlayerCustomAward
|
#
|
# @todo:×Ô¶¨Òå½±Àø
|
# @author hxp
|
# @date 2023-09-22
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ×Ô¶¨Òå½±Àø
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2023-09-22 13:30"""
|
#-------------------------------------------------------------------------------
|
|
import GameWorld
|
import NetPackCommon
|
import ChPyNetSendPack
|
import IpyGameDataPY
|
import ItemCommon
|
import ChConfig
|
|
def OnPlayerLogin(curPlayer):
|
Sync_CustomAwardInfo(curPlayer)
|
return
|
|
def SetCustomAwardCanGet(curPlayer, awardID, canGet=1):
|
ipyData = IpyGameDataPY.GetIpyGameData("CustomAward", awardID)
|
if not ipyData:
|
return
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_CustomAwardCanGet, awardID, canGet)
|
Sync_CustomAwardInfo(curPlayer, awardID)
|
return
|
|
## ÁìÈ¡×Ô¶¨Òå½±Àø
|
def OnGetCustomAward(curPlayer, awardID):
|
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_CustomAwardCanGet, awardID):
|
GameWorld.Log("¸Ã×Ô¶¨Òå½±Àøµ±Ç°²»¿ÉÁìÈ¡, awardID=%s" % awardID, curPlayer.GetPlayerID())
|
return
|
if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_CustomAwardGetState, awardID):
|
GameWorld.Log("¸Ã×Ô¶¨Òå½±ÀøÒѾÁìÈ¡¹ý, awardID=%s" % awardID, curPlayer.GetPlayerID())
|
return
|
ipyData = IpyGameDataPY.GetIpyGameData("CustomAward", awardID)
|
if not ipyData:
|
return
|
awardItemList = ipyData.GetAwardItemList()
|
|
if not ItemCommon.GiveAwardItem(curPlayer, awardItemList):
|
return
|
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_CustomAwardGetState, awardID, 1)
|
GameWorld.Log("ÁìÈ¡×Ô¶¨Òå½±Àø, awardID=%s" % awardID, curPlayer.GetPlayerID())
|
Sync_CustomAwardInfo(curPlayer, awardID)
|
return
|
|
## ֪ͨ×Ô¶¨Òå½±Àø¼Ç¼
|
def Sync_CustomAwardInfo(curPlayer, awardID=None, force=False):
|
if awardID == None:
|
awardIDList = []
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in range(ipyDataMgr.GetCustomAwardCount()):
|
ipyData = ipyDataMgr.GetCustomAwardByIndex(index)
|
awardIDList.append(ipyData.GetAwardID())
|
else:
|
awardIDList = [awardID]
|
|
keyNumList = []
|
for aID in awardIDList:
|
keyNum = GameWorld.GetDictKeyNumByBit(aID)
|
if keyNum not in keyNumList:
|
keyNumList.append(keyNum)
|
|
if not keyNumList:
|
return
|
|
recordStateList = []
|
for keyNum in keyNumList:
|
canGet = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CustomAwardCanGet % keyNum)
|
getState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CustomAwardGetState % keyNum)
|
if not canGet and not getState and not force:
|
continue
|
awardState = ChPyNetSendPack.tagMCCustomAwardState()
|
awardState.KeyNum = keyNum
|
awardState.CanGetState = canGet
|
awardState.GetState = getState
|
recordStateList.append(awardState)
|
|
if not recordStateList:
|
return
|
|
clientPack = ChPyNetSendPack.tagMCCustomAwardInfo()
|
clientPack.Clear()
|
clientPack.RecordStateList = recordStateList
|
clientPack.RecordStateCnt = len(clientPack.RecordStateList)
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|