From 9b1eca8955321ce7ba8a8151f7c5c169da5fbff6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 06 八月 2025 15:25:29 +0800
Subject: [PATCH] 80 【常规】背包-服务端(去除使用物品多余验证;同步使用物品封包;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py | 73 +++++++++++++++++++++++++++---------
1 files changed, 55 insertions(+), 18 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index 6139b88..2284597 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -419,7 +419,7 @@
starMax = InitStarUpper + addStarUpper
return starMax
-def DoHeroUpdStar(curPlayer, heroItem, updStar):
+def DoHeroUpdStar(curPlayer, heroItem, updStar, isSync=True):
## 执行武将星级更新
curStar = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroStar)
addStar = updStar - curStar
@@ -427,7 +427,8 @@
item.SetUserAttr(ShareDefine.Def_IudetHeroStar, updStar)
if addStar > 0:
__DoHeroStarTalentUp(item, addStar)
- heroItem.Sync_Item()
+ if isSync:
+ heroItem.Sync_Item()
itemIndex = heroItem.GetItemPlaceIndex()
PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate([itemIndex])
@@ -575,9 +576,12 @@
PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate([itemIndex])
return
-def SetHeroBreakLV(heroItem, breakLV):
+def SetHeroBreakLV(heroItem, breakLV, isSync=True):
## 设置武将突破等级
- heroItem.SetUserAttr(ShareDefine.Def_IudetHeroBreakLV, breakLV)
+ item = heroItem.GetItem()
+ item.SetUserAttr(ShareDefine.Def_IudetHeroBreakLV, breakLV)
+ if isSync:
+ heroItem.Sync_Item()
return
#// B2 33 武将觉醒 #tagCSHeroAwake
@@ -633,12 +637,13 @@
PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate([itemIndex])
return
-def SetHeroAwakeLV(heroItem, awakeLV):
+def SetHeroAwakeLV(heroItem, awakeLV, isSync=True):
## 设置武将觉醒等级
item = heroItem.GetItem()
item.SetUserAttr(ShareDefine.Def_IudetHeroAwakeLV, awakeLV)
unlockTalentSlotByAwake(item)
- heroItem.Sync_Item()
+ if isSync:
+ heroItem.Sync_Item()
return
def unlockTalentSlotByAwake(singleItem):
@@ -712,9 +717,13 @@
#};
def OnHeroAwakeSelectTalent(index, clientData, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
itemIndex = clientData.ItemIndex
selectIndex = clientData.SelectIndex
+ doSelectAwakeTalent(curPlayer, itemIndex, selectIndex)
+ return
+
+def doSelectAwakeTalent(curPlayer, itemIndex, selectIndex, isSync=True):
+ playerID = curPlayer.GetPlayerID()
heroItem = GetHeroItem(curPlayer, itemIndex)
if not heroItem:
return
@@ -757,10 +766,11 @@
for index, talentID in enumerate(idList):
singleItem.AddUserAttr(ShareDefine.Def_IudetHeroTalentID, talentID)
singleItem.AddUserAttr(ShareDefine.Def_IudetHeroTalentIDLV, lvList[index])
-
+
unlockTalentSlotByAwake(singleItem)
- heroItem.Sync_Item()
+ if isSync:
+ heroItem.Sync_Item()
PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate([itemIndex])
return
@@ -1210,15 +1220,6 @@
PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_HeroBook, heroBookAttrDict)
return
-def RefreshLineupHeroAttr(curPlayer):
- ## 刷新阵容武将属性
-
- # 计算阵容总战力 = 角色总战力为主阵容战力,需同步计算不同阵容战力
- return
-
-def CaclHeroCardAttr():
- return
-
def Sync_HeroInfo(curPlayer, heroIDList=None):
if heroIDList != None:
syncHeroIDList = heroIDList
@@ -1256,3 +1257,39 @@
clientPack.HeroCnt = len(clientPack.HeroInfoList)
NetPackCommon.SendFakePack(curPlayer, clientPack)
return
+
+def Sync_Lineup(curPlayer, lineupID=None):
+ if lineupID:
+ syncIDList = [lineupID]
+ else:
+ syncIDList = ShareDefine.LineupList
+
+ lineupList = []
+ olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
+ for lineupID in syncIDList:
+ lineup = olPlayer.GetLineup(lineupID)
+ if not lineup:
+ continue
+
+ posNumItemIndexDict = {v:k for k, v in lineup.heroItemDict.items()}
+ heroItemIndexList = [] # 所在武将背包索引+1列表 [站位1物品索引+1, 站位2, ...],站位无武将时为0
+ for posNum in range(1, 1 + ShareDefine.LineupObjMax):
+ if posNum in posNumItemIndexDict:
+ heroItemIndexList.append(posNumItemIndexDict[posNum] + 1)
+ else:
+ heroItemIndexList.append(0)
+ packLineup = ChPyNetSendPack.tagSCLineup()
+ packLineup.LineupID = lineup.lineupID
+ packLineup.ShapeType = lineup.shapeType
+ packLineup.HeroItemIndexList = heroItemIndexList
+ packLineup.HeroCnt = len(packLineup.HeroItemIndexList)
+ lineupList.append(packLineup)
+
+ if not lineupList:
+ return
+
+ clientPack = ChPyNetSendPack.tagSCLineupInfo()
+ clientPack.LineupList = lineupList
+ clientPack.LineupCnt = len(clientPack.LineupList)
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
--
Gitblit v1.8.0