From de44f98f2a8a2b0c12d3482162f1e30e796d7b94 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 08 一月 2026 16:27:02 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(优化伤害计算公式参数输出;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py |   47 ++++++++++++++++++++++++++---------------------
 1 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
index 40a8692..9f66fe3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py
@@ -249,10 +249,10 @@
 
 def __oneKeyMax(curPlayer, msgList):
     ## 一键满级: Hero max [指定等级 星级 突破 觉醒]
-    setLV = msgList[2] if len(msgList) > 2 else None
-    setStar = msgList[3] if len(msgList) > 3 else None
-    setBreakLV = msgList[4] if len(msgList) > 4 else None
-    setAwakeLV = msgList[5] if len(msgList) > 5 else None
+    setLV = msgList[1] if len(msgList) > 1 else None
+    setStar = msgList[2] if len(msgList) > 2 else None
+    setBreakLV = msgList[3] if len(msgList) > 3 else None
+    setAwakeLV = msgList[4] if len(msgList) > 4 else None
     
     heroIDList = []
     ipyDataMgr = IpyGameDataPY.IPY_Data()
@@ -410,18 +410,22 @@
         return
     singleItem = heroItem.GetItem()
     
+    # 重置
+    PlayerHero.InitHeroItem(singleItem)
+    
     # 天赋        
+    awakeLVMax = 0
+    for aLV in range(1, 100):
+        if not IpyGameDataPY.GetIpyGameDataNotLog("HeroQualityAwake", quality, aLV):
+            break
+        awakeLVMax = aLV
     if setAwakeLV != None:
-        awakeLV = setAwakeLV
+        awakeLV = min(setAwakeLV, awakeLVMax)
         if not IpyGameDataPY.GetIpyGameData("HeroQualityAwake", quality, awakeLV):
-            GameWorld.DebugAnswer(curPlayer, "觉醒等级不存在:%s 品质:%s" % (awakeLV, quality))
-            return
+            #GameWorld.DebugAnswer(curPlayer, "觉醒等级不存在:%s 品质:%s" % (awakeLV, quality))
+            awakeLV = 0
     else:
-        awakeLV = 0
-        for aLV in range(1, 100):
-            if not IpyGameDataPY.GetIpyGameDataNotLog("HeroQualityAwake", quality, aLV):
-                break
-            awakeLV = aLV
+        awakeLV = awakeLVMax
     PlayerHero.SetHeroAwakeLV(heroItem, awakeLV, False)
     
     doCnt = 0
@@ -434,17 +438,18 @@
         awakeRandCnt = singleItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentIDAwakeRand)
         
     # 突破
+    breakLVMax = 0
+    for bLV in range(1, 100):
+        if not IpyGameDataPY.GetIpyGameDataNotLog("HeroQualityBreak", quality, bLV):
+            break
+        breakLVMax = bLV
     if setBreakLV != None:
-        breakLV = setBreakLV
+        breakLV = min(setBreakLV, breakLVMax)
         if not IpyGameDataPY.GetIpyGameData("HeroQualityBreak", quality, breakLV):
-            GameWorld.DebugAnswer(curPlayer, "突破等级不存在:%s 品质:%s" % (breakLV, quality))
-            return
+            #GameWorld.DebugAnswer(curPlayer, "突破等级不存在:%s 品质:%s" % (breakLV, quality))
+            breakLV = 0
     else:
-        breakLV = 0
-        for bLV in range(1, 100):
-            if not IpyGameDataPY.GetIpyGameDataNotLog("HeroQualityBreak", quality, bLV):
-                break
-            breakLV = bLV
+        breakLV = breakLVMax
     PlayerHero.SetHeroBreakLV(curPlayer, heroItem, breakLV, False)
     
     # 星级
@@ -458,7 +463,7 @@
     # 等级
     lvMax = PlayerHero.GetHeroLVMax(heroItem)
     if setLV != None:
-        updHeroLV = min(setLV, lvMax)
+        updHeroLV = max(1, min(setLV, lvMax))
     else:
         updHeroLV = lvMax
     singleItem.SetUserAttr(ShareDefine.Def_IudetHeroLV, updHeroLV)

--
Gitblit v1.8.0