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/PlayerActGarbageSorting.py | 4 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py | 41 +++++++++++++-------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py | 27 +++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py | 4 +-
6 files changed, 60 insertions(+), 18 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index cc1d717..4d3c340 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -506,6 +506,7 @@
Def_Effect_VIPLVCard = 256 #VIP等级直升卡 直接升到VIPx级,只加经验,享受VIP特权 效果值A: vip等级 效果值B: 领取是否默认直接使用
Def_Effect_AddArenaBattleCount = 257 #增加竞技场挑战次数,A值为增加次数
Def_Effect_ItemGiveMoney = 264 #通用给货币道具,A值数量,B值货币类型
+Def_Effect_GuajiAward = 266 #直接给挂机收益,A值分钟
Def_Effect_GubaoPiece = 270 #古宝碎片效果ID, A值-古宝ID
#----以下未使用或代码依然存在的---
Def_Effect_ItemGiveGongXun = 1920 #使用道具给予功勋
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index 7dcd1a6..462b2b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -721,6 +721,7 @@
ChConfig.Def_Effect_AddDienstgrad:"Item_AddDienstgrad", #道具获得称号
ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
ChConfig.Def_Effect_TJGAddTime:"Item_TJGAddTime", #增加脱机挂时间
+ ChConfig.Def_Effect_GuajiAward:"Item_GuajiAward", #直接给挂机收益
ChConfig.Def_Effect_CleanGuilt:"Item_CleanGuilt", # 洗红名
ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券
ChConfig.Def_Effect_AddVIPExp:"Item_AddVIPExp", # 增加VIP经验
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
new file mode 100644
index 0000000..0826f7e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package UseItem.Item_GuajiAward
+#
+# @todo:直接给挂机收益
+# @author hxp
+# @date 2024-06-21
+# @version 1.0
+#
+# 详细描述: 直接给挂机收益
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2024-06-21 11:00"""
+#-------------------------------------------------------------------------------
+
+import PlayerGuaji
+import ItemCommon
+
+def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
+ awardSeconds = curRoleItem.GetEffectByIndex(0).GetEffectValue(0) * useCnt * 60
+ if awardSeconds <= 0:
+ return
+ PlayerGuaji.GiveGuajiAward(curPlayer, awardSeconds)
+ ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, "GuajiAward")
+ return True, useCnt
\ No newline at end of file
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 1ee80cc..4f614bd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
@@ -213,7 +213,7 @@
return dropItemCountDict
-def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
+def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond):
## 获取挂机收益
dropItemCountDict = {}
@@ -237,7 +237,7 @@
continue
doSeconds, doCount = guajiAwardSet
- if not isQuick:
+ if useUnsecond:
unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum))
awardSeconds += unSeconds
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 2056fe4..8173340 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
@@ -197,7 +197,7 @@
Sync_GarbageTaskInfo(curPlayer, actNum, taskID)
return giveItemList
-def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
+def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond):
## 获取挂机收益
dropItemCountDict = {}
@@ -214,7 +214,7 @@
if not actInfo.get(ShareDefine.ActKey_State):
continue
- if not isQuick:
+ if useUnsecond:
unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GarbageGJSeconds % (actNum))
awardSeconds += unSeconds
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