| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageTaskValue % (actNum, taskID), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageTaskFinishCount % (actNum, taskID), 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageEnvironmentValue % actNum, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageGJSeconds % actNum, 0)
|
| | |
|
| | | # 清除垃圾背包物品、重置环保值
|
| | | ItemControler.ClearPack(curPlayer, ShareDefine.rptGarbage)
|
| | |
| | | Sync_GarbageTaskInfo(curPlayer, actNum, taskID)
|
| | | return giveItemList
|
| | |
|
| | | def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
|
| | | ## 获取挂机收益
|
| | | |
| | | dropItemCountDict = {}
|
| | | guajiAwardSet = IpyGameDataPY.GetFuncEvalCfg("GarbageSorting", 3) # 挂机收益设置 x秒|x次执行数值4
|
| | | if not guajiAwardSet:
|
| | | return dropItemCountDict
|
| | | doSeconds, doCount = guajiAwardSet
|
| | | |
| | | dropRateList = IpyGameDataPY.GetFuncEvalCfg("GarbageSorting", 4) # 挂机收益概率饼图 [[概率, [物品ID,个数,是否拍品]], ...]
|
| | | |
| | | for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GarbageSorting, {}).values():
|
| | | actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
|
| | | |
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | continue
|
| | | |
| | | if not isQuick:
|
| | | unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GarbageGJSeconds % (actNum))
|
| | | awardSeconds += unSeconds
|
| | | |
| | | canDoCount = awardSeconds / doSeconds
|
| | | killCount = canDoCount * doCount
|
| | | |
| | | updUnSeconds = awardSeconds % doSeconds
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GarbageGJSeconds % (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, dropItemInfo = rateInfo
|
| | | curRate = rate - preRate
|
| | | if not curRate:
|
| | | break
|
| | | preRate = rate
|
| | | if not dropItemInfo:
|
| | | continue
|
| | | totalRate = curRate * killCount # 总概率
|
| | | dropCount = totalRate / maxRate # 可掉落数
|
| | | rateEx = totalRate % maxRate # 剩余概率
|
| | | if GameWorld.CanHappen(rateEx, maxRate):
|
| | | dropCount += 1
|
| | | if not dropCount:
|
| | | continue
|
| | | dropItemID, itemCount, _ = dropItemInfo
|
| | | dropItemCount = itemCount * dropCount
|
| | | |
| | | dropItemCountDict[dropItemID] = dropItemCountDict.get(dropItemID, 0) + dropItemCount
|
| | | GameWorld.DebugLog(" 挂机垃圾分类产出: actNum=%s,dropItemID=%s,dropCount=%s,dropItemCount=%s,curRate=%s,totalRate=%s" |
| | | % (actNum, dropItemID, dropCount, dropItemCount, curRate, totalRate))
|
| | | |
| | | return dropItemCountDict
|
| | |
|
| | | #// AA 14 垃圾分类活动分类垃圾 #tagCMActGarbageSorting
|
| | | #
|
| | | #struct tagCMActGarbageSorting
|