4856 子 【开发】【1.3】许愿池红点优化,极品标识修改
| | |
| | | BYTE IsBind; //是否绑定
|
| | | DWORD Weight; //权重
|
| | | DWORD Mark; //排序用标识
|
| | | BYTE Rare; //珍稀值
|
| | | };
|
| | |
|
| | | //功能预告表
|
| | |
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ("Mark", c_int), # 排序标识
|
| | | ("Rare", c_ubyte), # 珍稀值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | self.Mark = 0
|
| | | self.Rare = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d,
|
| | | Mark:%d
|
| | | Mark:%d,
|
| | | Rare:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind,
|
| | | self.Mark
|
| | | self.Mark,
|
| | | self.Rare
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ("Mark", c_int), # 排序标识
|
| | | ("Rare", c_ubyte), # 珍稀值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | self.Mark = 0
|
| | | self.Rare = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d,
|
| | | Mark:%d
|
| | | Mark:%d,
|
| | | Rare:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind,
|
| | | self.Mark
|
| | | self.Mark,
|
| | | self.Rare
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | | ("BYTE", "IsBind", 0),
|
| | | ("DWORD", "Weight", 0),
|
| | | ("DWORD", "Mark", 0),
|
| | | ("BYTE", "Rare", 0),
|
| | | ),
|
| | |
|
| | | "FunctionForecast":(
|
| | |
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | self.Weight = 0
|
| | | self.Mark = 0 |
| | | self.Mark = 0
|
| | | self.Rare = 0 |
| | | return |
| | | |
| | | def GetTemplateID(self): return self.TemplateID # 模板ID
|
| | |
| | | def GetItemCnt(self): return self.ItemCnt # 物品数量
|
| | | def GetIsBind(self): return self.IsBind # 是否绑定
|
| | | def GetWeight(self): return self.Weight # 权重
|
| | | def GetMark(self): return self.Mark # 排序用标识 |
| | | def GetMark(self): return self.Mark # 排序用标识
|
| | | def GetRare(self): return self.Rare # 珍稀值 |
| | | |
| | | # 功能预告表 |
| | | class IPY_FunctionForecast(): |
| | |
| | | import time
|
| | |
|
| | | g_randomWellDict = {}
|
| | | g_specialMarkDict = {}
|
| | |
|
| | |
|
| | | (
|
| | | WellType_Select, #可选库
|
| | |
| | | def __CheckPlayerWishingWellAction(curPlayer):
|
| | | ## 检查玩家许愿池活动数据信息
|
| | | global g_randomWellDict
|
| | | global g_specialMarkDict
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
|
| | | actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
|
| | |
| | | #每天开始随机一次免费盘
|
| | | if state:
|
| | | g_randomWellDict = {}
|
| | | g_specialMarkDict = {}
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellRefreshCnt, 0)
|
| | | __DoActWishingRefresh(curPlayer, 1, True)
|
| | |
|
| | |
| | | def __InitWishRateList():
|
| | | ## 初始许愿池随机库
|
| | | global g_randomWellDict
|
| | | global g_specialMarkDict
|
| | | actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
|
| | | state = actWishingWellInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actWishingWellInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | |
| | | isBind = ipyData.GetIsBind()
|
| | | weight = ipyData.GetWeight()
|
| | | mark = ipyData.GetMark()
|
| | | rare = ipyData.GetRare()
|
| | | weightDict[isFree] = weightDict.get(isFree, 0) + weight
|
| | | if isFree not in g_randomWellDict:
|
| | | g_randomWellDict[isFree] = []
|
| | | g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark]])
|
| | | g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark, rare]])
|
| | |
|
| | | groupID, rowID = mark / 100, mark % 100
|
| | | if rowID > g_specialMarkDict.get(groupID, 0) % 100:
|
| | | g_specialMarkDict[groupID] = mark
|
| | | GameWorld.DebugLog(' 初始许愿池随机库 g_randomWellDict=%s, g_specialMarkDict=%s' % (g_randomWellDict, g_specialMarkDict))
|
| | | |
| | | GameWorld.DebugLog(' 初始许愿池随机库 g_randomWellDict=%s' % (g_randomWellDict))
|
| | | return
|
| | |
|
| | |
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellFreeTime, int(time.time()))
|
| | |
|
| | | for i, info in enumerate(randomResultList):
|
| | | itemID, itemCnt, isBind, mark = info
|
| | | isSpecial = 1 if mark in g_specialMarkDict.values() else 0
|
| | | itemID, itemCnt, isBind, mark, rare = info
|
| | | isSpecial = rare
|
| | | __SetItemData(curPlayer, WellType_Select, i, itemID, itemCnt, isBind, isSpecial)
|
| | | GameWorld.DebugLog(' 许愿池活动刷新 isFree=%s, randomResultList=%s' % (isFree, randomResultList), playerID)
|
| | | return
|
| | |
| | | actInfo.WellItemInfo = []
|
| | | randomItemList = __GetRandomRateList(0)
|
| | | for itemInfo in randomItemList:
|
| | | itemID, itemCnt, isBind, mark = itemInfo[1]
|
| | | itemID, itemCnt, isBind, mark, rare = itemInfo[1]
|
| | | wellItemInfo = ChPyNetSendPack.tagMCWishingWellItem()
|
| | | wellItemInfo.ItemID = itemID
|
| | | wellItemInfo.ItemCnt = itemCnt
|
| | | wellItemInfo.IsBind = isBind
|
| | | wellItemInfo.Mark = mark
|
| | | wellItemInfo.Rare = rare
|
| | | actInfo.WellItemInfo.append(wellItemInfo)
|
| | | actInfo.Count = len(actInfo.WellItemInfo)
|
| | | NetPackCommon.SendFakePack(curPlayer, actInfo)
|