From fbe9c6468d6e290562ef6ae0028f7829e1dda91d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 28 四月 2024 12:15:45 +0800 Subject: [PATCH] 10033 【后端】仙树升级系统及砍树产出规则(增加使用仙树升级减时道具,支持自动购买;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py index 064e51e..9cdf7b6 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py @@ -293,6 +293,59 @@ SyncTreeInfo(curPlayer) return +#// B2 24 使用仙树升级减时物品 #tagCMUseTreeLVUPTimeItem +# +#struct tagCMUseTreeLVUPTimeItem +#{ +# tagHead Head; +# DWORD UseCount; // 使用个数 +# BYTE IsAutoBuy; // 不足个数是否自动购买 +#}; +def OnUseTreeLVUPTimeItem(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + useCount = clientData.UseCount + isAutoBuy = clientData.IsAutoBuy + + playerID = curPlayer.GetPlayerID() + lvupState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLVUPState) + LVUPRemainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLVUPRemainTime) + if not lvupState or not LVUPRemainTime: + GameWorld.DebugLog("仙树非升级中或剩余时间为0,不需要减少时间! lvupState=%s,LVUPRemainTime=%s" + % (lvupState, LVUPRemainTime), playerID) + return + + costItemID, reduceSeconds = IpyGameDataPY.GetFuncEvalCfg("TreeLVUP", 2) + GameWorld.DebugLog("使用仙树升级减时物品! costItemID=%s,reduceSeconds=%s,useCount=%s" % (costItemID, reduceSeconds, useCount), playerID) + if not costItemID or not useCount: + return + + costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, useCount) + lackCnt = useCount - bindCnt - unBindCnt + if lackCnt > 0 and not isAutoBuy: + GameWorld.DebugLog("消耗道具不足! costItemID=%s,useCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s" + % (costItemID, useCount, bindCnt, unBindCnt, lackCnt), playerID) + return + + delCnt = useCount + if lackCnt > 0: + moneyType = IPY_GameWorld.TYPE_Price_Gold_Money + lackCost = ItemCommon.GetAutoBuyItemNeedGold({costItemID:lackCnt}) + if lackCost <= 0: + return + GameWorld.DebugLog("自动购买道具: lackCnt=%s,moneyType=%s,lackCost=%s" % (lackCnt, moneyType, lackCost), playerID) + infoDict = {ChConfig.Def_Cost_Reason_SonKey:costItemID} + if not PlayerControl.PayMoney(curPlayer, moneyType, lackCost, ChConfig.Def_Cost_BuyStoreItem, infoDict): + return + delCnt -= lackCnt + + # 扣除消耗 + if delCnt: + ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, "TreeLVUPTimeItem") + + reduceTime = reduceSeconds * useCount + ReduceTreeLVUPTime(curPlayer, reduceTime) + return + def RefreshTreeLVUPTime(curPlayer): ## 刷新仙树升级剩余时间 lvupState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLVUPState) -- Gitblit v1.8.0