From 63009c74cf80c83a15192322267fc9b30b320797 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 四月 2024 17:11:40 +0800
Subject: [PATCH] 10033 【后端】仙树升级系统及砍树产出规则(增加指定累计砍树次数可产出定制物品;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 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 dabf9c8..064e51e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py
@@ -100,6 +100,9 @@
         return
     GameWorld.DebugLog("    colorRateList=%s,totalRate=%s" % (colorRateList, totalRate), playerID)
     
+    cutCountAppointEquipDict = IpyGameDataPY.GetFuncEvalCfg("CutTree", 4)
+    appointCutTreeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AppointCutTreeCount)
+    GameWorld.DebugLog("    appointCutTreeCount=%s" % (appointCutTreeCount), playerID)
     classLV, isSuit = 1, None # 默认1阶,不限制是否套装
     placeList = ChConfig.EquipPlace_Base + ChConfig.EquipPlace_Special
     jobList = [curPlayer.GetJob()]
@@ -111,16 +114,25 @@
         equipIDList = NPCCommon.__GetEquipIDList(0, classLV, itemColor, isSuit, placeList, jobList, findType="CutTree")
         if not equipIDList:
             continue
-        randEquipID = random.choice(equipIDList)
-        GameWorld.DebugLog("    随机装备ID: %s, itemColor=%s,%s" % (randEquipID, itemColor, equipIDList), playerID)
-        randEquipIDList.append(randEquipID)
+        appointCutTreeCount += 1
+        if appointCutTreeCount in cutCountAppointEquipDict:
+            randEquipID, appointID = cutCountAppointEquipDict[appointCutTreeCount]
+            GameWorld.DebugLog("    定制装备ID: %s, appointID=%s,appointCutTreeCount=%s" % (randEquipID, appointID, appointCutTreeCount), playerID)
+        else:
+            appointID = 0
+            randEquipID = random.choice(equipIDList)
+            GameWorld.DebugLog("    随机装备ID: %s, itemColor=%s,%s" % (randEquipID, itemColor, equipIDList), playerID)
+        randEquipIDList.append([randEquipID, appointID])
         
     GameWorld.DebugLog("    预产出装备: randEquipIDList=%s" % randEquipIDList, playerID)
     
     giveItemListEx = []
     giveEquipIDList = []
-    for equipItemID in randEquipIDList:
-        curItem = ItemControler.GetOutPutItemObj(equipItemID, 1, False, curPlayer=curPlayer)
+    for equipItemID, appointID in randEquipIDList:
+        setAttrDict = {}
+        if appointID:
+            setAttrDict[ShareDefine.Def_CItemKey_AppointID] = appointID
+        curItem = ItemControler.GetOutPutItemObj(equipItemID, 1, False, curPlayer=curPlayer, setAttrDict=setAttrDict)
         if curItem == None:
             continue
         if not ItemControler.DoLogic_PutItemInPack(curPlayer, curItem, packIndexList=[IPY_GameWorld.rptIdentify]):
@@ -153,6 +165,15 @@
         PlayerControl.PlayerControl(curPlayer).AddExp(addExp)  
         
     #GameWorld.DebugLog("OnAddCutTreeCnt: addCount=%s,addExp=%s" % (addCount, addExp), curPlayer.GetPlayerID())
+    
+    cutCountAppointEquipDict = IpyGameDataPY.GetFuncEvalCfg("CutTree", 4)
+    appointCountMax = max(cutCountAppointEquipDict) if cutCountAppointEquipDict else 0
+    appointCutTreeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AppointCutTreeCount)
+    updAppointCutTreeCount = min(appointCutTreeCount + addCount, appointCountMax)
+    if updAppointCutTreeCount != appointCutTreeCount:
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AppointCutTreeCount, updAppointCutTreeCount)
+        GameWorld.DebugLog("更新定制砍树次数: updAppointCutTreeCount=%s" % (updAppointCutTreeCount), curPlayer.GetPlayerID())
+        
     PlayerPrestigeSys.AddRealmLVUpCutTreeCnt(curPlayer, addCount)
     PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_CutTree, addCount)
     return

--
Gitblit v1.8.0