From 22bb99e929439653669b8b2e14325dcc865c7fe3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 17 十月 2025 16:05:08 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(快速加入公会失败提示)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py |  109 +++++++++++++++++++++---------------------------------
 1 files changed, 42 insertions(+), 67 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
index d8a8afd..d8418b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Gubao.py
@@ -6,35 +6,25 @@
 #
 # @todo:古宝
 # @author hxp
-# @date 2023-01-5
+# @date 2025-10-11
 # @version 1.0
 #
 # 详细描述: 古宝
 #
 #-------------------------------------------------------------------------------
-#"""Version = 2023-01-5 15:30"""
+#"""Version = 2025-10-11 21:00"""
 #-------------------------------------------------------------------------------
 
 import GameWorld
 import IpyGameDataPY
+import ItemControler
 import PlayerGubao
-import PlayerControl
-import ChConfig
 
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param msgList 参数列表
-#  @return None
-#  @remarks 函数详细说明.
 def OnExec(curPlayer, msgList):
     
     if not msgList:
         GameWorld.DebugAnswer(curPlayer, "重置古宝: Gubao 0")
-        GameWorld.DebugAnswer(curPlayer, "设置古宝: Gubao 古宝ID 等级 星级")
-        GameWorld.DebugAnswer(curPlayer, "设置效果: Gubao e 古宝ID 效果类型  进度值")
+        GameWorld.DebugAnswer(curPlayer, "设置古宝: Gubao 古宝ID [等级 星级 层级]")
         GameWorld.DebugAnswer(curPlayer, "设置碎片: Gubao p 古宝ID 数量")
         return
     
@@ -46,21 +36,18 @@
             for index in range(ipyDataMgr.GetGubaoCount()):
                 ipyData = ipyDataMgr.GetGubaoByIndex(index)
                 gubaoID = ipyData.GetGubaoID()
-                if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID):
-                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, 0)
-                    if gubaoID not in gubaoIDList:
-                        gubaoIDList.append(gubaoID)
-                _, star = PlayerGubao.GetGubaoLVInfo(curPlayer, gubaoID)
-                if not star:
+                itemID = ipyData.GetUnlockItemID()
+                if ItemControler.GetItemCountByID(curPlayer, itemID):
+                    ItemControler.SetItemCountByID(curPlayer, itemID, 0) # 重置
+                if not PlayerGubao.IsGubaoActivated(curPlayer, gubaoID):
                     continue
                 if gubaoID not in gubaoIDList:
                     gubaoIDList.append(gubaoID)
-                PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, 0, 0)
-                for effType in PlayerGubao.NeedGubaoItemEffValueTypeList:
-                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
-                    
-            PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, force=True)
+                PlayerGubao.SetGubaoInfo(curPlayer, gubaoID, 0, 0, 0)
             GameWorld.DebugAnswer(curPlayer, "重置古宝OK")
+        else:
+            return
+        
     elif value1 == "p":
         gubaoID = msgList[1] if len(msgList) > 1 else 0
         pieceCount = msgList[2] if len(msgList) > 2 else 0
@@ -68,49 +55,37 @@
         if not ipyData:
             GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
             return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, pieceCount)
-        GameWorld.DebugAnswer(curPlayer, "设置碎片数量: ID:%s,数量:%s" % (gubaoID, pieceCount))
-        PlayerGubao.Sync_GubaoPieceInfo(curPlayer, [gubaoID])
-        return
-    elif len(msgList) == 3:
-        gubaoID, lv, star = msgList
-        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
-        if not ipyData:
-            GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
-            return
-        starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
-        if not starIpyData:
-            GameWorld.DebugAnswer(curPlayer, "不存在该古宝星级!gubaoID=%s,star=%s" % (gubaoID, star))
-            return
-        gubaoType = ipyData.GetGubaoType()
-        quality = ipyData.GetGubaoQuality()
-        lvIpyData = IpyGameDataPY.GetIpyGameData("GubaoLV", gubaoType, quality, lv)
-        if not lvIpyData:
-            GameWorld.DebugAnswer(curPlayer, "不存在该古宝品质等级!gubaoID=%s,gubaoType=%s,quality=%s,lv=%s" % (gubaoID, gubaoType, quality, lv))
-            return
-        GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,等级(%s),星(%s)" % (gubaoID, lv, star))
-        PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, lv, star)
-        gubaoIDList.append(gubaoID)
-    elif value1 == "e":
-        if len(msgList) != 4:
-            return
-        _, gubaoID, effType, effValue = msgList
-        if effType not in PlayerGubao.NeedGubaoItemEffValueTypeList:
-            GameWorld.DebugAnswer(curPlayer, "古宝效果值类型仅包含:%s" % str(PlayerGubao.NeedGubaoItemEffValueTypeList))
-            return
-        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
-        if not ipyData:
-            GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
-            return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), effValue)
-        PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
-        GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,效果类型(%s),值(%s)" % (gubaoID, effType, effValue))
-    else:
+        itemID = ipyData.GetUnlockItemID()
+        ItemControler.SetItemCountByID(curPlayer, itemID, pieceCount)
+        GameWorld.DebugAnswer(curPlayer, "设置古宝(%s)碎片ID:%s,数量:%s" % (gubaoID, itemID, pieceCount))
         return
     
+    else:
+        gubaoID = value1
+        lv = msgList[1] if len(msgList) > 1 else 1
+        star = msgList[2] if len(msgList) > 2 else 0
+        layer = msgList[3] if len(msgList) > 3 else 0
+        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
+        if not ipyData:
+            GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
+            return
+        quality = ipyData.GetGubaoQuality()
+        layer = min(layer, ipyData.GetSpecEffLayerMax())
+        
+        starIpyDataList = IpyGameDataPY.GetIpyGameDataList("GubaoStar", quality)
+        if starIpyDataList:
+            lastStarIpyData = starIpyDataList[-1]
+            star = min(star, lastStarIpyData.GetGubaoStar())
+            
+        lvIpyDataList = IpyGameDataPY.GetIpyGameDataList("GubaoLV", quality)
+        if lvIpyDataList:
+            lastLVIpyData = lvIpyDataList[-1]
+            lv = min(lv, lastLVIpyData.GetLessEqualLV())
+            
+        GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,级(%s),星(%s),层(%s)" % (gubaoID, lv, star, layer))
+        PlayerGubao.SetGubaoInfo(curPlayer, gubaoID, lv, star, layer)
+        gubaoIDList.append(gubaoID)
+        
     PlayerGubao.RefreshGubaoAttr(curPlayer)
-    PlayerGubao.Sync_GubaoInfo(curPlayer, gubaoIDList)
-    PlayerGubao.Sync_GubaoPieceInfo(curPlayer, gubaoIDList)    
+    PlayerGubao.Sync_GubaoInfo(curPlayer, gubaoIDList) 
     return
-
-

--
Gitblit v1.8.0