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