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