From 4263dbe6adb69acd0c6814f647d9cbdbc6a61e00 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 13 六月 2024 16:13:56 +0800 Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(集字活动、垃圾分类活动支持掉落活动物品; 终身卡免费领取快速挂机收益;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py | 63 +++++++++++++++++++++++++++++++ 1 files changed, 63 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py index 29cca2d..2056fe4 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py @@ -76,6 +76,7 @@ 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) @@ -196,6 +197,68 @@ 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 -- Gitblit v1.8.0