From 42e777349b6f1a57284419fec3e5eb7d62a6dc5c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 04 一月 2026 17:19:36 +0800
Subject: [PATCH] 283 【配套功能】查看他人-服务端(武将物品增加Data记录;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 93 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 80 insertions(+), 13 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
index 48a75d3..4f7096c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -20,6 +20,10 @@
import ShareDefine
import IpyGameDataPY
import PlayerOnline
+import PlayerControl
+import DataRecordPack
+import ItemControler
+import ItemCommon
def RefreshRoleEquipAttr(curPlayer):
## 刷新主公装备属性
@@ -65,6 +69,82 @@
PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_MainEquip, mainEquipAttrDict)
return
+def FixRoleEquipHP(curPlayer, fixVersion):
+ ## 修正玩家装备生命数值: 策划调整了生命占比,同步修改了生命战力,故需修正线上玩家装备生命,防止战力下降
+
+ playerID = curPlayer.GetPlayerID()
+ fightPowerBef = PlayerControl.GetFightPower(curPlayer)
+ GameWorld.Log("修正玩家装备生命数值! fixVersion=%s,fightPowerBef=%s" % (fixVersion, fightPowerBef), playerID)
+
+ # 需要修正身上、掉落背包
+ for packType in [IPY_GameWorld.rptEquip, IPY_GameWorld.rptIdentify]:
+ equipPack = curPlayer.GetItemManager().GetPack(packType)
+ for index in range(equipPack.GetCount()):
+ curEquip = equipPack.GetAt(index)
+ if not curEquip or curEquip.IsEmpty():
+ continue
+ if not ItemCommon.GetIsMainEquip(curEquip):
+ #GameWorld.DebugLog("非主线装备: itemIndex=%s" % itemIndex, playerID)
+ continue
+ itemID = curEquip.GetItemTypeID()
+
+ # 直接重新生成一件装备进行替换生命属性即可
+ tempItem = ItemControler.GetOutPutItemObj(itemID, curPlayer=curPlayer)
+ if not tempItem:
+ continue
+ tempEquipMaxHP = 0
+ baseAttrIDCnt = tempItem.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrID)
+ baseAttrValueCnt = tempItem.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrValue)
+ for i in xrange(min(baseAttrIDCnt, baseAttrValueCnt)):
+ attrID = tempItem.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrID, i)
+ attrValue = tempItem.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrValue, i)
+ if attrID == ChConfig.AttrID_MaxHP:
+ tempEquipMaxHP = attrValue
+ break
+ tempItem.Clear() # 不需要了,直接 Clear
+ if tempEquipMaxHP <= 0:
+ continue
+
+ curEquipMaxHP = 0
+ baseIDList, baseValueList = [], []
+ baseAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrID)
+ baseAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrValue)
+ for i in xrange(min(baseAttrIDCnt, baseAttrValueCnt)):
+ attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrID, i)
+ attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrValue, i)
+ if attrID == ChConfig.AttrID_MaxHP:
+ curEquipMaxHP = attrValue
+ attrValue = tempEquipMaxHP
+ baseIDList.append(attrID)
+ baseValueList.append(attrValue)
+
+ if curEquipMaxHP >= tempEquipMaxHP:
+ GameWorld.Log(" packType=%s,index=%s,curEquipMaxHP=%s >= %s, 不处理! " % (packType, index, curEquipMaxHP, tempEquipMaxHP), playerID)
+ continue
+
+ userDataBef = curEquip.GetUserData()
+ singleItem = curEquip.GetItem()
+ singleItem.ClearUserAttr(ShareDefine.Def_IudetBaseAttrID)
+ singleItem.ClearUserAttr(ShareDefine.Def_IudetBaseAttrValue)
+ for i, attrID in enumerate(baseIDList):
+ singleItem.AddUserAttr(ShareDefine.Def_IudetBaseAttrID, attrID)
+ singleItem.AddUserAttr(ShareDefine.Def_IudetBaseAttrValue, baseValueList[i])
+
+ curEquip.Sync_Item()
+ userDataAft = curEquip.GetUserData()
+
+ GameWorld.Log(" packType=%s,index=%s,curEquipMaxHP=%s to %s,userDataBef=%s,userDataAft=%s"
+ % (packType, index, curEquipMaxHP, tempEquipMaxHP, userDataBef, userDataAft), playerID)
+ fixDict = {"fixVersion":fixVersion, "packType":packType, "index":index, "itemID":itemID, "userDataBef":userDataBef, "userDataAft":userDataAft}
+ DataRecordPack.DR_FixVersion(curPlayer, "EquipHP", fixDict)
+
+ RefreshRoleEquipAttr(curPlayer)
+ PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr(refreshForce=True)
+
+ fightPowerAft = PlayerControl.GetFightPower(curPlayer)
+ DataRecordPack.DR_FixVersion(curPlayer, "EquipHP", {"fixVersion":fixVersion, "fightPowerBef":fightPowerBef, "fightPowerAft":fightPowerAft})
+ return
+
#// A3 18 灵器突破 #tagCMLingQiEquipBreak
#
#struct tagCMLingQiEquipBreak
@@ -107,19 +187,6 @@
# BYTE Star; // 星数
#};
def OnEquipPartSuiteActivate(index, clientData, tick):
- return
-
-def ChangeEquipfacadeByHorsePetSkin(curPlayer, skinType, skinIndex):
- ##骑宠觉醒外观变更 灵宠外观索引*10000000+坐骑外观索引*1000000+灵根特效表key * 1000+第几套*10+是否有套装
- oldEquipShowSwitch = curPlayer.GetEquipShowSwitch()
- if skinType == 1:
- updEquipShowSwitch = GameWorld.ChangeDataByDigitPlace(oldEquipShowSwitch, 7, skinIndex)
- else:
- updEquipShowSwitch = GameWorld.ChangeDataByDigitPlace(oldEquipShowSwitch, 8, skinIndex)
-
- if oldEquipShowSwitch == updEquipShowSwitch:
- return
- curPlayer.SetEquipShowSwitch(updEquipShowSwitch)
return
def GetPlayerMaxEquipClassLV(curPlayer):
--
Gitblit v1.8.0