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