From 1c4fc8c9115f81e106fa09d9a6dc44e8c1ef5d97 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 28 十月 2025 18:22:35 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(孟获技能;增加效果7005-必命中;)
---
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