From 18df4f587c3e6782da7c83ee27db78482b674c34 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 09 十二月 2025 10:13:54 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(生效卡牌逻辑修改: 主阵容中的优先生效;生效中的卡牌无法遣散;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py | 79 +++++++++++++++++++++++++--------------
1 files changed, 50 insertions(+), 29 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 1c9827d..c97c796 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
@@ -38,8 +38,8 @@
GameWorld.DebugAnswer(curPlayer, "武将升星: Hero s 背包位置 升x星")
GameWorld.DebugAnswer(curPlayer, "武将突破: Hero b 背包位置 设置等级")
GameWorld.DebugAnswer(curPlayer, "武将觉醒: Hero a 背包位置 设置等级")
- GameWorld.DebugAnswer(curPlayer, "武将图鉴: Hero t 武将ID 图鉴星级 图鉴突破等级")
- GameWorld.DebugAnswer(curPlayer, "重置图鉴: Hero t 0")
+ #GameWorld.DebugAnswer(curPlayer, "武将图鉴: Hero t 武将ID 图鉴星级 图鉴突破等级")
+ GameWorld.DebugAnswer(curPlayer, "重置图鉴: Hero t 0 [重置阵容推荐]")
GameWorld.DebugAnswer(curPlayer, "重置重生: Hero r")
GameWorld.DebugAnswer(curPlayer, "武将皮肤: Hero sk 武将ID 皮肤索引 是否解锁")
GameWorld.DebugAnswer(curPlayer, "清空武将: ClearPack 35")
@@ -78,6 +78,7 @@
heroIDList = [value2]
if value2 == 0:
+ recommendReset = msgList[2] if len(msgList) > 2 else 0
syncHeroIDList = []
for heroID in heroIDList:
if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroBook % heroID):
@@ -85,17 +86,29 @@
syncHeroIDList.append(heroID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HeroBook % heroID, 0)
GameWorld.DebugAnswer(curPlayer, "重置图鉴OK!")
- else:
- heroID = value2
- syncHeroIDList = [heroID]
- bookStarLV = msgList[2] if len(msgList) > 2 else 0
- bookBreakLV = msgList[3] if len(msgList) > 3 else 0
- if (bookStarLV or bookStarLV) and not PlayerHero.GetHeroBookInitState(curPlayer, heroID):
- PlayerHero.SetHeroBookInitState(curPlayer, heroID, 1)
- PlayerHero.SetHeroBookStarLV(curPlayer, heroID, bookStarLV)
- PlayerHero.SetHeroBookBreakLV(curPlayer, heroID, bookBreakLV)
- GameWorld.DebugAnswer(curPlayer, "设置武将(%s)图鉴星级(%s),突破(%s)" % (heroID, bookStarLV, bookBreakLV))
-
+ if recommendReset:
+ syncIDList = []
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetLineupRecommendCount()):
+ ipyData = ipyDataMgr.GetLineupRecommendByIndex(index)
+ recommendID = ipyData.GetRecommendID()
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroRecommend % recommendID):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HeroRecommend % recommendID, 0)
+ syncIDList.append(recommendID)
+ PlayerHero.Sync_LineupRecommendInfo(curPlayer, syncIDList)
+ GameWorld.DebugAnswer(curPlayer, "重置推荐OK!")
+
+ #else:
+ # heroID = value2
+ # syncHeroIDList = [heroID]
+ # bookStarLV = msgList[2] if len(msgList) > 2 else 0
+ # bookBreakLV = msgList[3] if len(msgList) > 3 else 0
+ # if (bookStarLV or bookStarLV) and not PlayerHero.GetHeroBookInitState(curPlayer, heroID):
+ # PlayerHero.SetHeroBookInitState(curPlayer, heroID, 1)
+ # PlayerHero.SetHeroBookStarLV(curPlayer, heroID, bookStarLV)
+ # PlayerHero.SetHeroBookBreakLV(curPlayer, heroID, bookBreakLV)
+ # GameWorld.DebugAnswer(curPlayer, "设置武将(%s)图鉴星级(%s),突破(%s)" % (heroID, bookStarLV, bookBreakLV))
+
PlayerHero.Sync_HeroInfo(curPlayer, syncHeroIDList)
return
@@ -119,23 +132,27 @@
GameWorld.DebugAnswer(curPlayer, "不存在武将: itemIndex=%s" % itemIndex)
return
+ heroID = heroItem.GetItemTypeID()
+ heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)
+ if not heroIpyData:
+ return
+ quality = heroIpyData.GetQuality()
+
if value == 0:
PlayerHero.InitHeroItem(heroItem.GetItem())
heroItem.Sync_Item()
GameWorld.DebugAnswer(curPlayer, "重置武将: itemIndex=%s" % (itemIndex))
- return
-
+
# 等级
- if value == "l":
+ elif value == "l":
heroLV = msgList[2] if len(msgList) > 2 else 1
LVMax = PlayerHero.GetHeroLVMax(heroItem)
heroLV = min(LVMax, heroLV)
heroItem.SetUserAttr(ShareDefine.Def_IudetHeroLV, heroLV)
GameWorld.DebugAnswer(curPlayer, "设置武将等级: %s,itemIndex=%s" % (heroLV, itemIndex))
- return
-
+
# 星级
- if value == "s":
+ elif value == "s":
addStar = msgList[2] if len(msgList) > 2 else 1
curStar = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroStar)
starMax = PlayerHero.GetHeroStarMax(heroItem)
@@ -145,22 +162,26 @@
updStar = min(curStar + addStar, starMax)
PlayerHero.DoHeroUpdStar(curPlayer, heroItem, updStar)
GameWorld.DebugAnswer(curPlayer, "更新武将星级: %s,itemIndex=%s" % (updStar, itemIndex))
- return
-
+
# 突破
- if value == "b":
+ elif value == "b":
breakLV = msgList[2] if len(msgList) > 2 else 0
+ if not IpyGameDataPY.GetIpyGameData("HeroQualityBreak", quality, breakLV):
+ GameWorld.DebugAnswer(curPlayer, "突破等级不存在:%s 品质:%s" % (breakLV, quality))
+ return
PlayerHero.SetHeroBreakLV(curPlayer, heroItem, breakLV)
GameWorld.DebugAnswer(curPlayer, "设置武将突破: %s,itemIndex=%s" % (breakLV, itemIndex))
- return
-
+
# 觉醒
- if value == "a":
+ elif value == "a":
awakeLV = msgList[2] if len(msgList) > 2 else 0
+ if not IpyGameDataPY.GetIpyGameData("HeroQualityAwake", quality, awakeLV):
+ GameWorld.DebugAnswer(curPlayer, "觉醒等级不存在:%s 品质:%s" % (awakeLV, quality))
+ return
PlayerHero.SetHeroAwakeLV(heroItem, awakeLV)
GameWorld.DebugAnswer(curPlayer, "设置武将觉醒: %s,itemIndex=%s" % (awakeLV, itemIndex))
- return
-
+
+ PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # GM修改
return
def __oneKeyLineup(curPlayer, msgList):
@@ -238,7 +259,7 @@
for syncItem in syncItemDict.values():
syncItem.Sync_Item()
- lineup = PlayerOnline.GetOnlinePlayer(curPlayer).GetLineup(lineupID)
+ lineup = PlayerOnline.GetOnlinePlayer(curPlayer).GetLineup(lineupID, False)
lineup.UpdLineup(heroItemDict, shapeType)
GameWorld.DebugAnswer(curPlayer, "阵容(%s)上阵OK: %s" % (lineupID, heroItemDict))
return
@@ -344,7 +365,7 @@
singleItem.SetUserAttr(ShareDefine.Def_IudetHeroSkin, skinIndex)
heroItem.Sync_Item()
- PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate([itemIndex])
+ PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # GM修改阵容
GameWorld.DebugAnswer(curPlayer, "设置阵容武将OK")
return
--
Gitblit v1.8.0