#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package Player.PlayerActSign
|
#
|
# @todo:ͨÓõĻµÇ¼ǩµ½
|
# @author hxp
|
# @date 2026-02-26
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ͨÓõĻµÇ¼ǩµ½
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2026-02-26 16:00"""
|
#-------------------------------------------------------------------------------
|
|
import ShareDefine
|
import PlayerControl
|
import IpyGameDataPY
|
import ChPyNetSendPack
|
import ItemControler
|
import NetPackCommon
|
import GameWorld
|
import ChConfig
|
|
def ResetActSign(curPlayer, actName, actNum):
|
if actName not in ShareDefine.OperationActTypeDict:
|
return
|
actType = ShareDefine.OperationActTypeDict[actName]
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActSignAward % (actType, actNum), 0)
|
GameWorld.DebugLog("ÖØÖûǩµ½: %s,actType=%s,actNum=%s" % (actName, actType, actNum), curPlayer.GetPlayerID())
|
Sync_ActSignPlayerInfo(curPlayer, actName, actNum)
|
return
|
|
def OnGetActSignAward(curPlayer, dataEx, dataExStr):
|
## ÁìÈ¡»î¶¯Ç©µ½½±Àø
|
actType = GameWorld.ToIntDef(dataExStr)
|
actNum = dataEx
|
|
playerID = curPlayer.GetPlayerID()
|
actName = ""
|
for aName, aType in ShareDefine.OperationActTypeDict.items():
|
if aType == actType:
|
actName = aName
|
break
|
|
actInfo = GameWorld.GetActInfo(actName, actNum)
|
if not actInfo or not actInfo.get(ShareDefine.ActKey_State):
|
GameWorld.DebugLog("»î¶¯Ç©µ½·Ç»î¶¯ÖÐ: actType=%s,actNum=%s,actName=%s" % (actType, actNum, actName), playerID)
|
return
|
cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
|
dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex)
|
ipyData = IpyGameDataPY.GetIpyGameData(actName, cfgID)
|
if not ipyData:
|
return
|
if not hasattr(ipyData, "GetSignTempID"):
|
GameWorld.DebugLog("»î¶¯ÎÞÇ©µ½: actType=%s,actNum=%s,actName=%s" % (actType, actNum, actName), playerID)
|
return
|
signTempID = ipyData.GetSignTempID()
|
signIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActSignAward", signTempID)
|
if not signIpyDataList:
|
return
|
|
awardItemList = []
|
updAwardRecord = awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActSignAward % (actType, actNum))
|
for dayIpyData in signIpyDataList:
|
dayNum = dayIpyData.GetDayNum()
|
if (dayIndex + 1) < dayNum:
|
break
|
if awardRecord & pow(2, dayNum):
|
#GameWorld.DebugLog("¸Ã»î¶¯Ç©µ½ÌìÒÑÁìÈ¡! dayNum=%s" % dayNum)
|
continue
|
awardItemList += dayIpyData.GetSignAwardItemList()
|
updAwardRecord |= pow(2, dayNum)
|
|
if not awardItemList:
|
GameWorld.DebugLog("ûÓпÉÁìÈ¡µÄ»î¶¯Ç©µ½½±Àø! actType=%s,actNum=%s,actName=%s,dayIndex=%s,awardRecord=%s"
|
% (actType, actNum, actName, dayIndex, awardRecord), playerID)
|
return
|
|
GameWorld.DebugLog("ÁìÈ¡»î¶¯Ç©µ½½±Àø£¡ actType=%s,actNum=%s,actName=%s,dayIndex=%s,awardRecord=%s,updAwardRecord=%s,%s"
|
% (actType, actNum, actName, dayIndex, awardRecord, updAwardRecord, awardItemList), playerID)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActSignAward % (actType, actNum), updAwardRecord)
|
Sync_ActSignPlayerInfo(curPlayer, actName, actNum)
|
ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["ActSign", False, {}])
|
return
|
|
def Sync_ActSignPlayerInfo(curPlayer, actName, actNum):
|
if actName not in ShareDefine.OperationActTypeDict:
|
return
|
actType = ShareDefine.OperationActTypeDict[actName]
|
clientPack = ChPyNetSendPack.tagSCActSignPlayerInfo()
|
clientPack.ActType = actType
|
clientPack.ActNum = actNum
|
clientPack.SignAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActSignAward % (actType, actNum))
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|