From 37829aec657fcd93c61e9a652ed53af390c1a2d1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 21 六月 2024 11:10:45 +0800 Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(增加直接获得挂机收益物品效果ID266; 修改境界加挂机时长配置key为字符串;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py | 41 +++++++++++++++++++++++++++-------------- 1 files changed, 27 insertions(+), 14 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py index 1535efe..366d49c 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py @@ -96,7 +96,7 @@ if awardSeconds <= 0: return - addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, False) + addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, True) updAwardSeconds = curAwardSeconds + awardSeconds PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiAwardSeconds, updAwardSeconds) @@ -153,11 +153,11 @@ curRealmLV = curPlayer.GetOfficialRank() realmAddHours = 0 realmAddHoursDict = IpyGameDataPY.GetFuncEvalCfg("GuajiTime", 3, {}) - realmLVList = realmAddHoursDict.keys() + realmLVList = [int(k) for k in realmAddHoursDict.keys()] realmLVList.sort() for realmLV in realmLVList: if curRealmLV >= realmLV: - realmAddHours = realmAddHoursDict[realmLV] + realmAddHours = realmAddHoursDict[str(realmLV)] else: break @@ -191,7 +191,7 @@ return awardSeconds, exp, moneyDict, itemDict -def CalcGuajiAward(curPlayer, awardSeconds, isQuick): +def CalcGuajiAward(curPlayer, awardSeconds, useUnsecond): ## 计算挂机收益,只计算收益,不做结算,结算逻辑由外层决定 playerID = curPlayer.GetPlayerID() @@ -199,8 +199,8 @@ lvIpyData = PlayerControl.GetPlayerLVIpyData(reLV) reExp = lvIpyData.GetReExp() if lvIpyData else 0 worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) - GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,isQuick=%s,reLV=%s,reExp=%s,worldLV=%s" - % (awardSeconds, isQuick, reLV, reExp, worldLV), playerID) + GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,useUnsecond=%s,reLV=%s,reExp=%s,worldLV=%s" + % (awardSeconds, useUnsecond, reLV, reExp, worldLV), playerID) # 经验 expRate = GetGuajiExpRate(curPlayer) @@ -222,7 +222,7 @@ perMoneyTimeFromulaDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 3, {}) # 每x秒获得1个货币公式 {货币类型:"x秒公式", ...} for moneyType, formula in perMoneyTimeFromulaDict.items(): moneyAwardSeconds = awardSeconds - if not isQuick: + if useUnsecond: moneyAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType) oneMoneyNeedSeconds = int(eval(FormulaControl.GetCompileFormula("GuajiMoney_%s" % moneyType, formula))) moneyValue = moneyAwardSeconds / oneMoneyNeedSeconds @@ -230,7 +230,7 @@ GameWorld.DebugLog(" 每X秒货币: moneyType=%s,oneMoneyNeedSeconds=%s,moneyValue=%s,moneyAwardSeconds=%s" % (moneyType, oneMoneyNeedSeconds, moneyValue, moneyAwardSeconds), playerID) - if not isQuick: + if useUnsecond: unSeconds = moneyAwardSeconds % oneMoneyNeedSeconds PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType, unSeconds) GameWorld.DebugLog(" moneyType=%s,unSeconds=%s" % (moneyType, unSeconds), playerID) @@ -239,13 +239,13 @@ giveItemSecondsSet = IpyGameDataPY.GetFuncCfg("GuajiAward", 4) # 每x秒获得一次随机物品机会 lvItemRateDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 5, {}) itemAwardSeconds = awardSeconds - if not isQuick: + if useUnsecond: itemAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemUnSeconds) itemAwardTimes = itemAwardSeconds / giveItemSecondsSet # 给物品次数 GameWorld.DebugLog(" 给物品次数: %s, itemAwardSeconds=%s,giveItemSecondsSet=%s" % (itemAwardTimes, itemAwardSeconds, giveItemSecondsSet), playerID) - if not isQuick: + if useUnsecond: unSeconds = itemAwardSeconds % giveItemSecondsSet PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemUnSeconds, unSeconds) GameWorld.DebugLog(" 给物品未处理秒数=%s" % unSeconds, playerID) @@ -298,12 +298,12 @@ itemDict[itemID] = itemDict.get(itemID, 0) + itemCount # 集字掉落 - dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick) + dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond) for itemID, dropCount in dropWordsCountDict.items(): itemDict[itemID] = itemDict.get(itemID, 0) + dropCount # 垃圾回收 - giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick) + giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond) for itemID, dropCount in giveGarbageItemList.items(): itemDict[itemID] = itemDict.get(itemID, 0) + dropCount @@ -347,7 +347,7 @@ return awardSeconds = IpyGameDataPY.GetFuncCfg("GuajiQuick", 1) * 3600 - exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, True) + exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False) quickCountToday += 1 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiQuickCount, quickCountToday) @@ -371,7 +371,20 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemCount % num, 0) Sync_GuajiAward(curPlayer) - GameWorld.DebugLog(" 挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID) + __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict) + return + +def GiveGuajiAward(curPlayer, awardSeconds): + ## 直接给挂机收益 + GameWorld.DebugLog("直接给挂机收益: awardSeconds=%s" % awardSeconds, curPlayer.GetPlayerID()) + exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False) + __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict) + return + +def __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict): + ## 实际给挂机收益,仅做发放收益 + playerID = curPlayer.GetPlayerID() + GameWorld.DebugLog("给挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID) playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.AddExp(exp, ShareDefine.Def_ViewExpType_Guaji) -- Gitblit v1.8.0