From e61476330284d8d31a5f623bcb85ab2bdcedd6df Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 31 十月 2025 19:28:34 +0800
Subject: [PATCH] 297 【常规】坊市系统-服务端(将魂商店刷新重置购买次数)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Hero.py | 48 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 42 insertions(+), 6 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 95f6e59..009e7cd 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
@@ -39,7 +39,8 @@
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 0 [重置阵容推荐]")
+ GameWorld.DebugAnswer(curPlayer, "重置重生: Hero r")
GameWorld.DebugAnswer(curPlayer, "武将皮肤: Hero sk 武将ID 皮肤索引 是否解锁")
GameWorld.DebugAnswer(curPlayer, "清空武将: ClearPack 35")
GameWorld.DebugAnswer(curPlayer, "新增武将: MakeItemCount 英雄ID [个数]")
@@ -70,11 +71,14 @@
ipyDataMgr = IpyGameDataPY.IPY_Data()
for index in range(ipyDataMgr.GetHeroCount()):
ipyData = ipyDataMgr.GetHeroByIndex(index)
+ if not ipyData.GetPlayerCanUse():
+ continue
heroIDList.append(ipyData.GetHeroID())
else:
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):
@@ -82,6 +86,18 @@
syncHeroIDList.append(heroID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HeroBook % heroID, 0)
GameWorld.DebugAnswer(curPlayer, "重置图鉴OK!")
+ 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]
@@ -94,6 +110,12 @@
GameWorld.DebugAnswer(curPlayer, "设置武将(%s)图鉴星级(%s),突破(%s)" % (heroID, bookStarLV, bookBreakLV))
PlayerHero.Sync_HeroInfo(curPlayer, syncHeroIDList)
+ return
+
+ # 重生
+ if value == "r":
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HeroAwakeRebirthCnt, 0)
+ PlayerHero.Sync_PlayerHeroInfo(curPlayer)
return
# 皮肤
@@ -109,6 +131,12 @@
if not heroItem:
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())
@@ -141,13 +169,19 @@
# 突破
if value == "b":
breakLV = msgList[2] if len(msgList) > 2 else 0
- PlayerHero.SetHeroBreakLV(heroItem, breakLV)
+ 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":
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
@@ -157,8 +191,10 @@
def __oneKeyLineup(curPlayer, msgList):
## 阵容上阵: Hero f 阵容ID [武将ID ...]
lineupID = msgList[1] if len(msgList) > 1 else 0
- heroIDList = list(set(msgList[2:])) # 去重,单阵容武将ID不能重复
-
+ heroIDList = []
+ for heroID in msgList[2:]: # 去重,单阵容武将ID不能重复
+ if heroID not in heroIDList:
+ heroIDList.append(heroID)
if lineupID not in ShareDefine.LineupList:
GameWorld.DebugAnswer(curPlayer, "不存在该阵容: %s" % lineupID)
return
@@ -227,7 +263,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
@@ -305,7 +341,7 @@
if not IpyGameDataPY.GetIpyGameDataNotLog("HeroQualityBreak", quality, bLV):
break
breakLV = bLV
- PlayerHero.SetHeroBreakLV(heroItem, breakLV, False)
+ PlayerHero.SetHeroBreakLV(curPlayer, heroItem, breakLV, False)
# 星级
starMax = PlayerHero.GetHeroStarMax(heroItem)
--
Gitblit v1.8.0