10371 【越南】【英文】【BT】【砍树】所有寻宝类型都加上每日寻宝次数上限
| | |
| | | BYTE PackType; //放入背包
|
| | | BYTE CheckPack; //是否检查背包
|
| | | BYTE IsActType; //是否活动寻宝
|
| | | DWORD DailyMaxCount; //每日最大次数
|
| | | BYTE DailyFreeCount; //每日免费次数
|
| | | list TreasureCountList; //抽奖次数列表
|
| | | char RecycleItemMail; //重置回收道具邮件,如果有配置回收邮件key,则重置时会回收多余的寻宝道具
|
| | |
| | | TreasureType = 0 #(BYTE TreasureType)//寻宝类型
|
| | | LuckValue = 0 #(WORD LuckValue)//当前幸运值
|
| | | TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
|
| | | TreasureCountToday = 0 #(DWORD TreasureCountToday)//今日已寻宝总次数
|
| | | FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
|
| | | TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
|
| | | GridLimitCnt = 0 #(BYTE GridLimitCnt)
|
| | |
| | | self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.TreasureType = 0
|
| | | self.LuckValue = 0
|
| | | self.TreasureCount = 0
|
| | | self.TreasureCountToday = 0
|
| | | self.FreeCountToday = 0
|
| | | self.TreasureCntAward = 0
|
| | | self.GridLimitCnt = 0
|
| | |
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.TreasureType)
|
| | | data = CommFunc.WriteWORD(data, self.LuckValue)
|
| | | data = CommFunc.WriteDWORD(data, self.TreasureCount)
|
| | | data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
|
| | | data = CommFunc.WriteWORD(data, self.FreeCountToday)
|
| | | data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
|
| | | data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
|
| | |
| | | TreasureType:%d,
|
| | | LuckValue:%d,
|
| | | TreasureCount:%d,
|
| | | TreasureCountToday:%d,
|
| | | FreeCountToday:%d,
|
| | | TreasureCntAward:%d,
|
| | | GridLimitCnt:%d,
|
| | |
| | | self.TreasureType,
|
| | | self.LuckValue,
|
| | | self.TreasureCount,
|
| | | self.TreasureCountToday,
|
| | | self.FreeCountToday,
|
| | | self.TreasureCntAward,
|
| | | self.GridLimitCnt,
|
| | |
| | |
|
| | | Def_PDict_TreasureFreeCount = "TreasureFreeCount_%s" # 寻宝今日已使用免费次数, 参数(寻宝类型)
|
| | | Def_PDict_TreasureCount = "TreasureCount_%s" # 寻宝次数, 参数(寻宝类型)
|
| | | Def_PDict_TreasureCountToday = "TreasureCountToday_%s" # 今日寻宝次数, 参数(寻宝类型)
|
| | | Def_PDict_TreasureLuck = "TreasureLuck_%s" # 寻宝当前幸运值, 参数(寻宝类型)
|
| | | Def_PDict_TreasureCntAward = "TreasureCntAward_%s" # 累计寻宝次数对应物品奖励领奖状态, 参数(寻宝类型)
|
| | | Def_PDict_TreasureGridCnt = "TreasureGridCnt_%s_%s" # 格子对应累计产出次数, 参数(寻宝类型, 格子编号)
|
| | |
| | | TreasureType = 0 #(BYTE TreasureType)//寻宝类型
|
| | | LuckValue = 0 #(WORD LuckValue)//当前幸运值
|
| | | TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
|
| | | TreasureCountToday = 0 #(DWORD TreasureCountToday)//今日已寻宝总次数
|
| | | FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
|
| | | TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
|
| | | GridLimitCnt = 0 #(BYTE GridLimitCnt)
|
| | |
| | | self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.TreasureType = 0
|
| | | self.LuckValue = 0
|
| | | self.TreasureCount = 0
|
| | | self.TreasureCountToday = 0
|
| | | self.FreeCountToday = 0
|
| | | self.TreasureCntAward = 0
|
| | | self.GridLimitCnt = 0
|
| | |
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.TreasureType)
|
| | | data = CommFunc.WriteWORD(data, self.LuckValue)
|
| | | data = CommFunc.WriteDWORD(data, self.TreasureCount)
|
| | | data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
|
| | | data = CommFunc.WriteWORD(data, self.FreeCountToday)
|
| | | data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
|
| | | data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
|
| | |
| | | TreasureType:%d,
|
| | | LuckValue:%d,
|
| | | TreasureCount:%d,
|
| | | TreasureCountToday:%d,
|
| | | FreeCountToday:%d,
|
| | | TreasureCntAward:%d,
|
| | | GridLimitCnt:%d,
|
| | |
| | | self.TreasureType,
|
| | | self.LuckValue,
|
| | | self.TreasureCount,
|
| | | self.TreasureCountToday,
|
| | | self.FreeCountToday,
|
| | | self.TreasureCntAward,
|
| | | self.GridLimitCnt,
|
| | |
| | | def OnExec(curPlayer, paramList):
|
| | | if not paramList:
|
| | | GameWorld.DebugAnswer(curPlayer, "重置寻宝:SetXunbao 0 [指定类型]")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置幸运:SetXunbao 寻宝类型 幸运值 已寻宝次数")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置幸运:SetXunbao l 类型 幸运")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置次数:SetXunbao c 类型 今日次数 [累计次数]")
|
| | | return
|
| | |
|
| | | if not paramList[0]:
|
| | | value = paramList[0]
|
| | | syncTypeList = []
|
| | | if not value:
|
| | | ClearPack.OnExec(curPlayer, [ShareDefine.rptTreasure])
|
| | | ClearPack.OnExec(curPlayer, [ShareDefine.rptRune])
|
| | |
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "重置寻宝OK!%s" % treasureTypeList)
|
| | | return
|
| | |
|
| | | else:
|
| | | treasureType = paramList[0]
|
| | | luck = paramList[1] if len(paramList) > 1 else None
|
| | | treasureCount = paramList[2] if len(paramList) > 2 else None
|
| | | if luck != None:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), luck)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,幸运=%s" % (treasureType, luck))
|
| | | elif value == "l":
|
| | | treasureType = paramList[1] if len(paramList) > 1 else None
|
| | | luck = paramList[2] if len(paramList) > 2 else 0
|
| | | if not IpyGameDataPY.GetIpyGameData("TreasureSet", treasureType):
|
| | | GameWorld.DebugAnswer(curPlayer, "寻宝类型不存在!%s" % treasureType)
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), luck)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,幸运=%s" % (treasureType, luck))
|
| | | syncTypeList = [treasureType]
|
| | | |
| | | elif value == "c":
|
| | | treasureType = paramList[1] if len(paramList) > 1 else None
|
| | | treasureCountToday = paramList[2] if len(paramList) > 2 else None
|
| | | treasureCount = paramList[3] if len(paramList) > 3 else None
|
| | | if not IpyGameDataPY.GetIpyGameData("TreasureSet", treasureType):
|
| | | GameWorld.DebugAnswer(curPlayer, "寻宝类型不存在!%s" % treasureType)
|
| | | return
|
| | | if treasureCountToday != None:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), treasureCountToday)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,今日次数=%s" % (treasureType, treasureCountToday))
|
| | | if treasureCount != None:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), treasureCount)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,次数=%s" % (treasureType, treasureCount))
|
| | | PlayerTreasure.Sync_TreasureInfo(curPlayer)
|
| | | return True
|
| | | GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,累计次数=%s" % (treasureType, treasureCount))
|
| | | syncTypeList = [treasureType]
|
| | | |
| | | PlayerTreasure.Sync_TreasureInfo(curPlayer, syncTypeList)
|
| | | return
|
| | |
|
| | |
| | | ("BYTE", "PackType", 0),
|
| | | ("BYTE", "CheckPack", 0),
|
| | | ("BYTE", "IsActType", 0),
|
| | | ("DWORD", "DailyMaxCount", 0),
|
| | | ("BYTE", "DailyFreeCount", 0),
|
| | | ("list", "TreasureCountList", 0),
|
| | | ("char", "RecycleItemMail", 0),
|
| | |
| | | def GetPackType(self): return self.attrTuple[1] # 放入背包 BYTE
|
| | | def GetCheckPack(self): return self.attrTuple[2] # 是否检查背包 BYTE
|
| | | def GetIsActType(self): return self.attrTuple[3] # 是否活动寻宝 BYTE
|
| | | def GetDailyFreeCount(self): return self.attrTuple[4] # 每日免费次数 BYTE
|
| | | def GetTreasureCountList(self): return self.attrTuple[5] # 抽奖次数列表 list
|
| | | def GetRecycleItemMail(self): return self.attrTuple[6] # 重置回收道具邮件,如果有配置回收邮件key,则重置时会回收多余的寻宝道具 char
|
| | | def GetCostItemID(self): return self.attrTuple[7] # 消耗道具ID DWORD
|
| | | def GetCostItemCountList(self): return self.attrTuple[8] # 消耗个数列表 list
|
| | | def GetCostMoneyType(self): return self.attrTuple[9] # 消耗货币类型 BYTE
|
| | | def GetCostMoneyList(self): return self.attrTuple[10] # 消耗货币列表 list
|
| | | def GetEnsureCount(self): return self.attrTuple[11] # 每x次必出 WORD
|
| | | def GetOnceLucky(self): return self.attrTuple[12] # 单次幸运值 BYTE
|
| | | def GetFullLucky(self): return self.attrTuple[13] # 满幸运值 WORD
|
| | | def GetLuckyRateFormat(self): return self.attrTuple[14] # 幸运格子概率公式 char
|
| | | def GetLuckyGridNum(self): return self.attrTuple[15] # 幸运格子编号 BYTE
|
| | | def GetGridNumMaxLimitInfo(self): return self.attrTuple[16] # 格子最大产出次数限制,{"格子":最大可产出次数, ...} dict
|
| | | def GetNotifyGridNumList(self): return self.attrTuple[17] # 需要额外广播的格子 list
|
| | | def GetNotifyKey(self): return self.attrTuple[18] # 广播key char
|
| | | def GetAwardMoneyType(self): return self.attrTuple[19] # 额外奖励货币类型 BYTE
|
| | | def GetAwardMoneyValue(self): return self.attrTuple[20] # 单次奖励货币数 WORD |
| | | def GetDailyMaxCount(self): return self.attrTuple[4] # 每日最大次数 DWORD
|
| | | def GetDailyFreeCount(self): return self.attrTuple[5] # 每日免费次数 BYTE
|
| | | def GetTreasureCountList(self): return self.attrTuple[6] # 抽奖次数列表 list
|
| | | def GetRecycleItemMail(self): return self.attrTuple[7] # 重置回收道具邮件,如果有配置回收邮件key,则重置时会回收多余的寻宝道具 char
|
| | | def GetCostItemID(self): return self.attrTuple[8] # 消耗道具ID DWORD
|
| | | def GetCostItemCountList(self): return self.attrTuple[9] # 消耗个数列表 list
|
| | | def GetCostMoneyType(self): return self.attrTuple[10] # 消耗货币类型 BYTE
|
| | | def GetCostMoneyList(self): return self.attrTuple[11] # 消耗货币列表 list
|
| | | def GetEnsureCount(self): return self.attrTuple[12] # 每x次必出 WORD
|
| | | def GetOnceLucky(self): return self.attrTuple[13] # 单次幸运值 BYTE
|
| | | def GetFullLucky(self): return self.attrTuple[14] # 满幸运值 WORD
|
| | | def GetLuckyRateFormat(self): return self.attrTuple[15] # 幸运格子概率公式 char
|
| | | def GetLuckyGridNum(self): return self.attrTuple[16] # 幸运格子编号 BYTE
|
| | | def GetGridNumMaxLimitInfo(self): return self.attrTuple[17] # 格子最大产出次数限制,{"格子":最大可产出次数, ...} dict
|
| | | def GetNotifyGridNumList(self): return self.attrTuple[18] # 需要额外广播的格子 list
|
| | | def GetNotifyKey(self): return self.attrTuple[19] # 广播key char
|
| | | def GetAwardMoneyType(self): return self.attrTuple[20] # 额外奖励货币类型 BYTE
|
| | | def GetAwardMoneyValue(self): return self.attrTuple[21] # 单次奖励货币数 WORD |
| | | |
| | | # 寻宝产出库表 |
| | | class IPY_TreasureHouse(): |
| | |
| | | for i in xrange(ipyDataMgr.GetTreasureSetCount()):
|
| | | ipyData = ipyDataMgr.GetTreasureSetByIndex(i)
|
| | | treasureType = ipyData.GetTreasureType()
|
| | | if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (treasureType)):
|
| | | if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCountToday % (treasureType)) and \
|
| | | not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (treasureType)):
|
| | | continue
|
| | | syncTypeList.append(treasureType)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), 0)
|
| | | if syncTypeList:
|
| | | Sync_TreasureInfo(curPlayer, syncTypeList)
|
| | |
| | | ItemControler.RecycleItem(curPlayer, costItemID, recycleItemMail)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCntAward % (treasureType), 0)
|
| | |
|
| | |
| | | treasureCount = treasureCountList[treasureIndex]
|
| | | if not treasureCount:
|
| | | GameWorld.DebugLog("没有寻宝次数配置!", playerID)
|
| | | return
|
| | | dailyMaxCount = setIpyData.GetDailyMaxCount()
|
| | | curTreasureCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCountToday % (treasureType)) # 今日已寻宝次数
|
| | | updTreasureCountToday = curTreasureCountToday + treasureCount
|
| | | if dailyMaxCount and updTreasureCountToday > dailyMaxCount:
|
| | | GameWorld.DebugLog("寻宝后将超过每日最大次数,无法寻宝! treasureCount(%s) + curTreasureCountToday(%s) = %s > %s" |
| | | % (treasureCount, curTreasureCountToday, updTreasureCountToday, dailyMaxCount), playerID)
|
| | | return
|
| | |
|
| | | packType = setIpyData.GetPackType()
|
| | |
| | | GameWorld.DebugLog("扣除货币,costGoldType=%s,costGold=%s" % (costGoldType, costGold), playerID)
|
| | |
|
| | | # 加数据
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), updTreasureCountToday)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
|
| | | for luckyGridNum in luckyGridNumList:
|
| | | if luckyGridNum in getGridResult:
|
| | |
| | | if mailItemList:
|
| | | PlayerControl.SendMailByKey("HappyXBUnEnough", [playerID], mailItemList)
|
| | |
|
| | | GameWorld.DebugLog("寻宝成功: treasureType=%s,updTreasureCount=%s,updLuck=%s,addScoreType=%s,addScore=%s,gridNumCountInfo=%s" |
| | | % (treasureType, updTreasureCount, updLuck, addScoreType, addScore, gridNumCountInfo), playerID)
|
| | | GameWorld.DebugLog("寻宝成功: treasureType=%s,updTreasureCount=%s(%s),updLuck=%s,addScoreType=%s,addScore=%s,gridNumCountInfo=%s" |
| | | % (treasureType, updTreasureCount, updTreasureCountToday, updLuck, addScoreType, addScore, gridNumCountInfo), playerID)
|
| | | GameWorld.DebugLog(" treasureResult=%s" % (treasureResult), playerID)
|
| | | GameWorld.DebugLog(" mailItemList=%s" % (mailItemList), playerID)
|
| | |
|
| | |
| | | tTypeInfo.TreasureType = tType
|
| | | tTypeInfo.LuckValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureLuck % (tType))
|
| | | tTypeInfo.TreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (tType))
|
| | | tTypeInfo.TreasureCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCountToday % (tType))
|
| | | tTypeInfo.FreeCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (tType))
|
| | | tTypeInfo.TreasureCntAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCntAward % (tType))
|
| | | for gridNumStr in gridNumMaxLimitInfo.keys():
|