| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsExchangeCount % (actNum, exchangeNum), 0)
|
| | |
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsID % actNum, actID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsGJSeconds % actNum, 0)
|
| | | GameWorld.DebugLog("集字活动重置! actNum=%s,cfgID=%s,templateID=%s,actID=%s" % (actNum, cfgID, templateID, actID), playerID)
|
| | |
|
| | | if state:
|
| | |
| | |
|
| | | return dropItemCountDict
|
| | |
|
| | | def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
|
| | | ## 获取挂机收益
|
| | | |
| | | dropItemCountDict = {}
|
| | | for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_CollectWords, {}).values():
|
| | | actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
|
| | | |
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | continue
|
| | | |
| | | cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActCollectWords", cfgID)
|
| | | if not ipyData:
|
| | | continue
|
| | | |
| | | dropRateList = ipyData.GetDropItemRateList()
|
| | | if not dropRateList:
|
| | | continue
|
| | | |
| | | guajiAwardSet = ipyData.GetGuajiAwardSet() # x秒x次
|
| | | if not guajiAwardSet:
|
| | | continue
|
| | | doSeconds, doCount = guajiAwardSet
|
| | | |
| | | if not isQuick:
|
| | | unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum))
|
| | | awardSeconds += unSeconds
|
| | | |
| | | canDoCount = awardSeconds / doSeconds
|
| | | killCount = canDoCount * doCount
|
| | | |
| | | updUnSeconds = awardSeconds % doSeconds
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum), updUnSeconds)
|
| | | GameWorld.DebugLog(" 挂机集字活动: actNum=%s,awardSeconds=%s,canDoCount=%s,killCount=%s,unSeconds=%s,updUnSeconds=%s" |
| | | % (actNum, awardSeconds, canDoCount, killCount, unSeconds, updUnSeconds))
|
| | | else:
|
| | | canDoCount = awardSeconds / doSeconds
|
| | | killCount = canDoCount * doCount
|
| | | GameWorld.DebugLog(" 挂机集字活动: actNum=%s,awardSeconds=%s,canDoCount=%s,killCount=%s" |
| | | % (actNum, awardSeconds, canDoCount, killCount))
|
| | | if killCount <= 0:
|
| | | continue
|
| | | |
| | | preRate = 0
|
| | | maxRate = dropRateList[-1][0]
|
| | | for rateInfo in dropRateList:
|
| | | rate, dropItemID = rateInfo
|
| | | curRate = rate - preRate
|
| | | if not curRate:
|
| | | break
|
| | | preRate = rate
|
| | | if not dropItemID:
|
| | | continue
|
| | | totalRate = curRate * killCount # 总概率
|
| | | dropCount = totalRate / maxRate # 可掉落数
|
| | | rateEx = totalRate % maxRate # 剩余概率
|
| | | if GameWorld.CanHappen(rateEx, maxRate):
|
| | | dropCount += 1
|
| | | if not dropCount:
|
| | | continue
|
| | | |
| | | dropItemCountDict[dropItemID] = dropItemCountDict.get(dropItemID, 0) + dropCount
|
| | | GameWorld.DebugLog(" 挂机集字活动掉字: actNum=%s,dropItemID=%s,dropCount=%s,curRate=%s,totalRate=%s" |
| | | % (actNum, dropItemID, dropCount, curRate, totalRate))
|
| | | |
| | | return dropItemCountDict
|
| | |
|
| | | #// AA 09 集字活动兑换 #tagCMActCollectWordsExchange
|
| | | #
|
| | | #struct tagCMActCollectWordsExchange
|