From 0f297a5b66b91751d8342624db871efeca7ed94e Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 02 三月 2019 10:20:48 +0800
Subject: [PATCH] 6307 【后端】【2.0】多套装备开发单(穿脱、升星)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py | 85 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 410 ++++++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 84 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 108 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py | 31 -
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 84 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py | 20
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 108 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 22
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 67 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 3
PySysDB/PySysDBPY.h | 25
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 4
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 48
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStar.py | 57 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py | 8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 31
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 51
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py | 24
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTJG.py | 103 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py | 163 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 14
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 26
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 74 +-
31 files changed, 1,241 insertions(+), 439 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 96dbfbe..fb54306 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1758,4 +1758,29 @@
{
list LVRange; //等级范围
DWORD GoodsID; //商城表ID
+};
+
+//装备位背包索引映射表
+
+struct tagEquipPlaceIndexMap
+{
+ DWORD GridIndex; //背包格子索引
+ DWORD _ClassLV; //阶级(物品表LV字段)
+ DWORD _EquipPlace; //装备位(物品表EquipPlace字段)
+};
+
+//装备升星表
+
+struct tagEquipStarUp
+{
+ BYTE _ClassLV; //阶级
+ BYTE _EquipPlace; //装备位
+ BYTE _Star; //星数
+ list CostEquipPlace; //可用装备部位
+ list CostEquipColor; //可用装备品质
+ BYTE CostEquipCnt; //装备数量
+ BYTE SuitTotalRate; //全套装加成概率(非套50%)
+ dict CostItemDict; //特殊材料
+ dict StarAttrInfo; //星级属性
+ dict BaseAttrInfo; //基础属性增加
};
\ No newline at end of file
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 7cb615e..8696fe3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -9469,6 +9469,90 @@
#------------------------------------------------------
+# A5 C5 装备部位升星 #tagCMEquipPartStarUp
+
+class tagCMEquipPartStarUp(Structure):
+ Head = tagHead()
+ EquipPackIndex = 0 #(WORD EquipPackIndex)// 部位格子索引
+ CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
+ CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
+ CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CostEquipIndex.append(value)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CostEquipID.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ self.EquipPackIndex = 0
+ self.CostEquipCnt = 0
+ self.CostEquipIndex = list()
+ self.CostEquipID = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 2 * self.CostEquipCnt
+ length += 4 * self.CostEquipCnt
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.EquipPackIndex)
+ data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipPackIndex:%d,
+ CostEquipCnt:%d,
+ CostEquipIndex:%s,
+ CostEquipID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipPackIndex,
+ self.CostEquipCnt,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
# A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
class tagCMExchangeMasterEXP(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 0110c0b..f1d2171 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -13782,6 +13782,114 @@
#------------------------------------------------------
+# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
+
+class tagMCEquipPartStar(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EquipPackIndex", c_ushort),
+ ("Star", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.EquipPackIndex = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCEquipPartStar)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
+ EquipPackIndex:%d,
+ Star:%d
+ '''\
+ %(
+ self.EquipPackIndex,
+ self.Star
+ )
+ return DumpString
+
+
+class tagMCEquipPartStarInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCEquipPartStar> InfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB1
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCEquipPartStar()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB1
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
+
+
+#------------------------------------------------------
# A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
class tagMCEquipPartSuiteLV(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 5e81214..770c3d6 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -306,7 +306,7 @@
Def_mitProduceResult, # 生产采集结果回应
Def_mitPetEquipMerge, # 宠物装备合成回应
Def_mitEquipInherit, # 装备继承
- Def_mitEquipPlus, # 装备加强
+ Def_mitEquipStarUp, # 装备升星
Def_mitEquipMayaPlus, # 装备玛雅加强
Def_mitEquipAddAttr, # 装备追加
Def_mitEquipSlotting, # 装备打孔
@@ -1732,32 +1732,34 @@
# 手游不使用C++定义 enum RoleEquipType
# 装备位定义
RoleEquipType = (
- retWeapon, #1 主手
- retWeapon2, #2 副手
- retHat, #3 帽子
- retClothes, #4 衣服
- retBelt, #5 腰带
- retTrousers, #6 裤子
- retShoes, #7 鞋子
- retNeck, #8 项链
- retFairyCan, #9 仙器
- retFairyCan2, #10 仙器
- retWing, #11 翅膀
- retGuard, #12 守护
- retBaldric1, #13 佩饰
- retBaldric2, #14 佩饰
- retBaldric3, #15 佩饰
- retBaldric4, #16 佩饰
- retBaldric5, #17 佩饰
- retBaldric6, #18 佩饰
- retHorse, #19 坐骑
- retWeaponSkin, #20 时装武器
- retClothesSkin, #21 时装衣服
- retWeapon2Skin, #22 时装副手
+ retWeapon, #1 主手
+ retWeapon2, #2 副手
+ retHat, #3 帽子
+ retClothes, #4 衣服
+ retBelt, #5 腰带
+ retTrousers, #6 裤子
+ retShoes, #7 鞋子
+ retGlove, #8 手套
+ retNeck, #9 项链
+ retFairyCan, #10 仙器1
+ retFairyCan2, #11 仙器2
+ retJade, #12 玉佩
+ retWing, #13 翅膀
+ retGuard1, #14 守护1
+ retGuard2, #15 守护2
+ retPeerlessWeapon, #16 绝世武器
+ retPeerlessWeapon2, #17 绝世副手
+ retXXX18, #18 暂无
+ retHorse, #19 坐骑
+ retWeaponSkin, #20 时装武器
+ retClothesSkin, #21 时装衣服
+ retWeapon2Skin, #22 时装副手
retMax,
) = range(1, 24)
+
+
# 神兽装备位定义
DogzEquipPlace = (
dogzetHorn, # 神兽兽角
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index ebed292..36c4ee6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -1450,4 +1450,16 @@
PacketCMD_1=0xAA
PacketSubCMD_1=0x08
-PacketCallFunc_1=OnStartLuckyTreasure
\ No newline at end of file
+PacketCallFunc_1=OnStartLuckyTreasure
+
+;公共部位星数
+[Operate_EquipStar]
+ScriptName = Event\EventSrc\Operate_EquipStar.py
+Writer = xdh
+Releaser = xdh
+RegType = 0
+RegisterPackCount = 1
+
+PacketCMD_1=0xA5
+PacketSubCMD_1=0xC5
+PacketCallFunc_1=OnEquipPartStarUp
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 3fcf716..f768f64 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -340,17 +340,16 @@
Def_ItemType_retBelt = 105 #5 腰带
Def_ItemType_retTrousers = 106 #6 裤子
Def_ItemType_retShoes = 107 #7 鞋子
-Def_ItemType_retNeck = 108 #8 项链
-Def_ItemType_retFairyCan = 109 #9 仙器
-Def_ItemType_retFairyCan2 = 110 #10 仙器
-Def_ItemType_retWing = 111 #11 翅膀
-Def_ItemType_retGuard = 112 #12 守护
-Def_ItemType_retBaldric1 = 113 #13 佩饰
-Def_ItemType_retBaldric2 = 114 #14 佩饰
-Def_ItemType_retBaldric3 = 115 #15 佩饰
-Def_ItemType_retBaldric4 = 116 #16 佩饰
-Def_ItemType_retBaldric5 = 117 #17 佩饰
-Def_ItemType_retBaldric6 = 118 #18 佩饰
+Def_ItemType_retGlove = 108 #8 手套
+Def_ItemType_retNeck = 109 #9 项链
+Def_ItemType_retFairyCan = 110 #10 仙器1
+Def_ItemType_retFairyCan2 = 111 #11 仙器2
+Def_ItemType_retJade = 112 #12 玉佩
+Def_ItemType_retWing = 113 #13 翅膀
+Def_ItemType_retGuard1 = 114 #14 守护1
+Def_ItemType_retGuard2 = 115 #15 守护2
+Def_ItemType_retPeerlessWeapon = 116 #16 绝世武器
+Def_ItemType_retPeerlessWeapon2 = 117 #17 绝世副手
Def_ItemType_DogzEquipHorn = 119 # 神兽兽角
Def_ItemType_DogzEquipEye = 120 # 神兽魔眼
@@ -405,16 +404,11 @@
ShareDefine.retTrousers:[Def_ItemType_retTrousers],
ShareDefine.retShoes:[Def_ItemType_retShoes],
ShareDefine.retNeck:[Def_ItemType_retNeck],
- ShareDefine.retFairyCan:[Def_ItemType_retFairyCan, Def_ItemType_retFairyCan2],
- ShareDefine.retFairyCan2:[Def_ItemType_retFairyCan, Def_ItemType_retFairyCan2],
+ ShareDefine.retFairyCan:[Def_ItemType_retFairyCan],
+ ShareDefine.retFairyCan2:[Def_ItemType_retFairyCan2],
ShareDefine.retWing:[Def_ItemType_retWing],
- ShareDefine.retGuard:[Def_ItemType_retGuard],
- ShareDefine.retBaldric1:[Def_ItemType_retBaldric1],
- ShareDefine.retBaldric2:[Def_ItemType_retBaldric2],
- ShareDefine.retBaldric3:[Def_ItemType_retBaldric3],
- ShareDefine.retBaldric4:[Def_ItemType_retBaldric4],
- ShareDefine.retBaldric5:[Def_ItemType_retBaldric5],
- ShareDefine.retBaldric6:[Def_ItemType_retBaldric6],
+ ShareDefine.retGuard1:[Def_ItemType_retGuard1],
+ ShareDefine.retGuard2:[Def_ItemType_retGuard2],
}
#---------------------------------------------------------------------
#写死的物品效果ID都放这边------请按数值顺序存放
@@ -2408,9 +2402,11 @@
ShareDefine.retBelt, #5 腰带
ShareDefine.retTrousers, #6 裤子
ShareDefine.retShoes, #7 鞋子
- ShareDefine.retNeck, #8 项链
- ShareDefine.retFairyCan, #9 仙器
- ShareDefine.retFairyCan2, #10 仙器
+ ShareDefine.retGlove, #8 手套
+ ShareDefine.retNeck, #9 项链
+ ShareDefine.retFairyCan, #10 仙器1
+ ShareDefine.retFairyCan2, #11 仙器2
+ ShareDefine.retJade, #12 玉佩
],
}
@@ -2435,8 +2431,7 @@
]
# 需要广播外观的装备部位
-Def_SyncEquipStateByIndex = [
-
+Def_SyncEquipStateByIndex = [
ShareDefine.retWeapon, #1 主手
ShareDefine.retWeapon2, #2 副手
ShareDefine.retHat, #3 帽子
@@ -2444,14 +2439,23 @@
ShareDefine.retBelt, #5 腰带
ShareDefine.retTrousers, #6 裤子
ShareDefine.retShoes, #7 鞋子
- ShareDefine.retNeck, #8 项链
- ShareDefine.retFairyCan, #9 仙器
- ShareDefine.retFairyCan2, #10 仙器
+ ShareDefine.retGlove, #8 手套
ShareDefine.retWing, #11 翅膀
- ShareDefine.retGuard, #12 守护
+ ShareDefine.retGuard1, #14 守护1
+ ShareDefine.retGuard2, #15 守护2
ShareDefine.retHorse, #19 坐骑
]
-
+#套装装备部位列表
+Def_SuitEquipPlaceList = [
+ ShareDefine.retWeapon, #1 主手
+ ShareDefine.retWeapon2, #2 副手
+ ShareDefine.retHat, #3 帽子
+ ShareDefine.retClothes, #4 衣服
+ ShareDefine.retBelt, #5 腰带
+ ShareDefine.retTrousers, #6 裤子
+ ShareDefine.retShoes, #7 鞋子
+ ShareDefine.retGlove, #8 手套
+ ]
#---------------------------------------------------------------------
#特殊物品光环,永久存在
Def_SuperBuffList = [
@@ -3612,7 +3616,7 @@
Def_PDict_RunTaskNextMissionID = "RunTaskNextMissionID_%s" # 跑环本轮结束下个任务ID 参数任务类型
# 宝石
-Def_PDict_EquipPartStarLV = "EPStarLV_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
+Def_PDict_EquipPartPlusLV = "EPPlusLV_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
Def_PDict_EquipActiveStarLV = "EquipActiveStarLV" #装备已激活总强化等级
Def_PDict_EquipPartProficiency = "EPProf_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
Def_PDict_EquipActiveStars = "EquipActiveStars" #装备已激活总强化星级
@@ -4007,6 +4011,10 @@
#神兽
Def_PDict_DogzFightState = "DogzFightState_%s" # 神兽助战状态,参数为key编号,按神兽ID二进制位存储
Def_PDict_DogzBuyHelpbattleCount = "DogzBuyHelpbattleCount" # 额外购买的神兽助战位
+
+#装备部位星数
+Def_PDict_EquipPartStar = "EQPartStar_%s" #装备部位星数 参数 装备背包格子索引
+
#-------------------------------------------------------------------------------
#可以从07 41封包购买的背包类型,和对应字典{背包类型:[字典key, 默认格子数]}
@@ -4919,7 +4927,8 @@
ItemDel_GatherSoul, # 聚魂分解
ItemDel_CoatDecompose, # 时装分解
ItemDel_ZhuXianDecompose, # 诛仙装备分解
-) = range(2000, 2000 + 38)
+ItemDel_EquipStarUp, # 装备升星
+) = range(2000, 2000 + 39)
# 物品扣除类型对应信息 {类型:eventName, ...}
ItemDelTypeDict = {
@@ -4961,6 +4970,7 @@
ItemDel_GatherSoul:"GatherSoul",
ItemDel_CoatDecompose:"CoatDecompose",
ItemDel_ZhuXianDecompose:"ZhuXianDecompose",
+ ItemDel_EquipStarUp:"EquipStarUp",
}
##==================================================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 7cb615e..8696fe3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -9469,6 +9469,90 @@
#------------------------------------------------------
+# A5 C5 装备部位升星 #tagCMEquipPartStarUp
+
+class tagCMEquipPartStarUp(Structure):
+ Head = tagHead()
+ EquipPackIndex = 0 #(WORD EquipPackIndex)// 部位格子索引
+ CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
+ CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
+ CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CostEquipIndex.append(value)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CostEquipID.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ self.EquipPackIndex = 0
+ self.CostEquipCnt = 0
+ self.CostEquipIndex = list()
+ self.CostEquipID = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 2 * self.CostEquipCnt
+ length += 4 * self.CostEquipCnt
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.EquipPackIndex)
+ data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipPackIndex:%d,
+ CostEquipCnt:%d,
+ CostEquipIndex:%s,
+ CostEquipID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipPackIndex,
+ self.CostEquipCnt,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
# A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
class tagCMExchangeMasterEXP(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 0110c0b..f1d2171 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -13782,6 +13782,114 @@
#------------------------------------------------------
+# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
+
+class tagMCEquipPartStar(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EquipPackIndex", c_ushort),
+ ("Star", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.EquipPackIndex = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCEquipPartStar)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
+ EquipPackIndex:%d,
+ Star:%d
+ '''\
+ %(
+ self.EquipPackIndex,
+ self.Star
+ )
+ return DumpString
+
+
+class tagMCEquipPartStarInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCEquipPartStar> InfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB1
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCEquipPartStar()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB1
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
+
+
+#------------------------------------------------------
# A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
class tagMCEquipPartSuiteLV(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index 23e2b08..f66d612 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -1898,9 +1898,9 @@
RunQuestEvent(curPlayer, "trialexange", costItemID, Def_RunQuestType_Normal)
return
-def EventRespons_EquipByPlace(curPlayer, equipplace):
+def EventRespons_EquipByPlace(curPlayer, itemClassLV, equipplace):
#穿戴某部位装备(非时效)
- RunQuestEvent(curPlayer, "equipbyplace", equipplace, Def_RunQuestType_Normal)
+ RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal)
return
def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
index f9a9290..11a1732 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
@@ -6,12 +6,12 @@
#
##@package Event.EventSrc.Operate_EquipPlus
#
-# @todo:部位星级公共模式强化
+# @todo:部位强化公共模式强化
# @author hxp
# @date 2015-12-15
# @version 1.2
#
-# 详细描述: 部位星级公共模式强化
+# 详细描述: 部位强化公共模式强化
#
# @change: "2016-06-30 21:30" hxp 强化达人开服活动
# @change: "2016-10-08 18:00" hxp 自动购买物品价格统一取商城物品价格
@@ -74,8 +74,8 @@
GameWorld.DebugLog("OnEquipMayaPlus() equip is empty")
return
- maxStarLV = ItemCommon.GetItemMaxStarLV(curEquip)
- curPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
+ maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
+ curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
if curPartStarLV >= maxStarLV:
GameWorld.Log("OnEquipMayaPlus:curPartStarLV(%s) >= maxStarLV(%s)" % (curPartStarLV, maxStarLV), playerID)
return
@@ -83,7 +83,7 @@
# 强化处理
result = DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index)
- updPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
+ updPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
#GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartStarLV, updPartStarLV), playerID)
if result == ChConfig.Def_ComposeState_None:
return
@@ -97,7 +97,7 @@
#===========================================================================
- # 星级变更时处理
+ # 强化变更时处理
if curPartStarLV != updPartStarLV:
DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
# 增加强化成就
@@ -117,7 +117,7 @@
if findType == -1:
return result
- curPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
+ curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartStarLV)
if not ipyData:
return
@@ -136,7 +136,7 @@
curExp = curExp - totalExp
ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp)
- ChEquip.NotifyEquipPartStarLV(curPlayer, packType, index)
+ ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, index)
# 支付金币
PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False)
@@ -150,12 +150,12 @@
# @param packType: 背包类型
# @param curEquip: 当前装备
# @param succeedRate: 成功率
-# @param failStarLV: 失败时的星级数
+# @param failStarLV: 失败时的强化数
# @return
def __EquipMayaPlusChange(curPlayer, packType, curEquip, index):
- curPlusLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, index)
+ curPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
updPlusLV = curPlusLV + 1
- ChEquip.SetEquipPartStarLV(curPlayer, packType, index, curEquip, updPlusLV)
+ ChEquip.SetEquipPartPlusLV(curPlayer, packType, index, curEquip, updPlusLV)
broadCastLVList = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelBroadCast", 1)
#GameWorld.DebugLog("PlusLVChange index=%s,updPlusLV=%s,broadCastLVList=%s" % (index, updPlusLV, broadCastLVList))
@@ -192,7 +192,7 @@
# minPlusLV = GetMaxEquipPartStarLV()
# equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(packType, [])
# for i in equipPartIndexList:
-# partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, i)
+# partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i)
# if partStarLV < minPlusLV:
# minPlusLV = partStarLV
# return minPlusLV
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
new file mode 100644
index 0000000..03e9d0e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
@@ -0,0 +1,163 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+#
+##@package Event.EventSrc.Operate_EquipStar
+#
+# @todo:公共部位星数
+# @author xdh
+# @date 2019-3-1
+# @version 1.0
+#
+# 详细描述: 公共部位星数
+#
+#
+#---------------------------------------------------------------------
+#"""Version = 2019-3-1 18:00"""
+#---------------------------------------------------------------------
+import ItemCommon
+import ShareDefine
+import PlayerControl
+import IPY_GameWorld
+import DataRecordPack
+import IpyGameDataPY
+import GameWorld
+import ChConfig
+import ChEquip
+#-------------------------------------------------------------------------------------------
+
+
+#===============================================================================
+#// A5 C5 装备部位升星 #tagCMEquipPartStarUp
+#struct tagCMEquipPartStarUp
+#{
+# tagHead Head;
+# WORD EquipPackIndex; // 部位格子索引
+# BYTE CostEquipCnt; // 装备个数
+# WORD CostEquipIndex[CostEquipCnt]; // 装备索引
+# DWORD CostEquipID[CostEquipCnt]; // 装备物品ID
+#};
+#===============================================================================
+## 部位升星
+# @param playerIndex: 玩家
+# @param clientData: 封包
+# @param tick: 当前时间
+# @return None
+def OnEquipPartStarUp(playerIndex, clientData, tick):
+ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
+ playerID = curPlayer.GetPlayerID()
+
+ equipPackIndex = clientData.EquipPackIndex
+ packType = IPY_GameWorld.rptEquip
+
+ if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
+ return
+ ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':equipPackIndex})
+ if not ipyData:
+ return
+ classLV = ipyData.GetClassLV()
+ equipPlace = ipyData.GetEquipPlace()
+ placeList = ChConfig.Pack_EquipPart_CanPlusStar[packType]
+ if equipPlace not in placeList:
+ GameWorld.Log(" equipPlace %s not in ChConfig.Pack_EquipPart_CanPlusStar" % equipPlace, playerID)
+ return
+
+ # 当前装备等级是否到达最高等级
+ curPack = curPlayer.GetItemManager().GetPack(packType)
+ curEquip = curPack.GetAt(equipPackIndex)
+ if not curEquip or curEquip.IsEmpty():
+ GameWorld.DebugLog("OnEquipPartStarUp() equip is empty")
+ return
+
+ maxStar = ItemCommon.GetItemMaxStar(curEquip)
+ curPartStar = ChEquip.GetEquipPartStar(curPlayer, equipPackIndex)
+ if curPartStar >= maxStar:
+ GameWorld.Log("OnEquipPartStarUp:curPartStar(%s) >= maxStar(%s)" % (curPartStar, maxStar), playerID)
+ return
+
+ # 升星处理
+ result = DoLogic_EquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, clientData)
+
+ updPartStar = ChEquip.GetEquipPartStar(curPlayer, equipPackIndex)
+ GameWorld.DebugLog(" 装备升星 equipPackIndex=%s result=%s,curPartStar=%s,updPartStar=%s" % (equipPackIndex, result, curPartStar, updPartStar), playerID)
+ if result == ChConfig.Def_ComposeState_Sucess:
+ # 星级变更时处理
+ #刷新属性
+ ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV)
+ playControl = PlayerControl.PlayerControl(curPlayer)
+ playControl.RefreshPlayerAttrState()
+
+ if updPartStar in IpyGameDataPY.GetFuncEvalCfg('EquipPartStarNotify'):
+ PlayerControl.WorldNotify(0, "StarLevelUp", [curPlayer.GetPlayerName(), curEquip.GetItemTypeID(), updPartStar])
+ #EventShell.EventRespons_EquipPlus(curPlayer)
+ return
+
+
+## 开始装备升星
+# @param index 为装备位
+# @return
+def DoLogic_EquipStarUp(curPlayer, classLV, equipPlace, curPartStar, equipPackIndex, clientData):
+ result = ChConfig.Def_ComposeState_None
+ nextStar = curPartStar + 1
+ ipyData = IpyGameDataPY.GetIpyGameData("EquipStarUp", classLV, equipPlace, nextStar)
+ if not ipyData:
+ return result
+
+ costEquipCnt = ipyData.GetCostEquipCnt()
+ if clientData.CostEquipCnt < costEquipCnt:
+ GameWorld.DebugLog(' 开始装备升星,装备材料不足 %s' % costEquipCnt)
+ return result
+ costEquipPlaceList = ipyData.GetCostEquipPlace()
+ costEquipColorList = ipyData.GetCostEquipColor()
+ suitTotalRate = ipyData.GetSuitTotalRate()
+ singleSuitRate = float(suitTotalRate) / costEquipCnt
+ curRate = 0 #成功概率
+ delEquipIndexList = []
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ for i, index in enumerate(clientData.CostEquipIndex):
+ costEquip = itemPack.GetAt(index)
+ if not costEquip or costEquip.IsEmpty():
+ return result
+ equipID = costEquip.GetItemTypeID()
+ if equipID != clientData.CostEquipID[i]:
+ GameWorld.ErrLog(' 装备升星 客户端发的物品索引与实际物品ID不对应 index=%s,eatItemID=%s,wantEatItemID=%s' % (index, equipID, clientData.CostEquipID[i]))
+ return result
+ if costEquip.GetItemColor() not in costEquipColorList:
+ return result
+ if costEquip.GetEquipPlace() not in costEquipPlaceList:
+ return result
+ delEquipIndexList.append(index)
+ isSuite = costEquip.GetSuiteID()
+ addRate = singleSuitRate if isSuite else singleSuitRate / 2
+ curRate += addRate
+ if curRate <= 0:
+ GameWorld.Log('装备升星异常 概率为0!!equipPackIndex=%s'%equipPackIndex)
+ return result
+ #判断普通物品材料
+ costItemDict = ipyData.GetCostItemDict()
+ if costItemDict:
+ delItemDict = {}
+ for itemID, itemCnt in costItemDict.items():
+ hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemID, itemPack, itemCnt)
+ if not hasEnough:
+ return result
+ delItemDict[tuple(indexList)] = itemCnt
+ for itemIndexList, delCnt in delItemDict.items():
+ ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipStarUp)
+ #扣装备
+ ItemCommon.ReduceItem(curPlayer, itemPack, delEquipIndexList, len(delEquipIndexList), True, ChConfig.ItemDel_EquipStarUp)
+ isOK = GameWorld.CanHappen(curRate, 100)
+ if isOK:
+ ChEquip.SetEquipPartStar(curPlayer, equipPackIndex, nextStar)
+ ChEquip.NotifyEquipPartStar(curPlayer, equipPackIndex)
+ result = ChConfig.Def_ComposeState_Sucess
+ else:
+ result = ChConfig.Def_ComposeState_Fail
+ curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitEquipStarUp, result)
+ drDict = {"PlayerID":curPlayer.GetPlayerID(), "AccID":curPlayer.GetAccID(), "classLV":classLV, "equipPlace":equipPlace, "IsSuccess":isOK,
+ "curRate":curRate, "nextStar":nextStar}
+ DataRecordPack.SendEventPack("EquipStarUp", drDict, curPlayer)
+ return result
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
index b9bd568..45952d1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
@@ -32,7 +32,7 @@
import ShareDefine
import EquipZhuXian
-
+g_stoneCanPlaceList = [] #可镶嵌的位置
def OnLogin(curPlayer):
###登录发包同步客户端宝石信息
@@ -41,23 +41,30 @@
def GetAllStoneEquipIndexList():
###得到所有可镶嵌宝石装备位列表
-
+ global g_stoneCanPlaceList
+ if g_stoneCanPlaceList:
+ return g_stoneCanPlaceList
#获得宝石类型数量
GemTypeCount = IpyGameDataPY.GetFuncCfg("GemTypeCount")
#获得所有可镶嵌宝石装备位
- stoneCanPlaceList = []
+ g_stoneCanPlaceList = []
for stoneTypeIndex in xrange(1, GemTypeCount + 1):
#循环宝石类型对应的装备位
placeList = IpyGameDataPY.GetFuncEvalCfg("GemType%s" % stoneTypeIndex, 1)
for place in placeList:
- if place not in stoneCanPlaceList:
- stoneCanPlaceList.append(place)
- return stoneCanPlaceList
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'EquipPlace':place}, True)
+ if not ipyDataList:
+ continue
+ for ipyData in ipyDataList:
+ gridIndex = ipyData.GetGridIndex()
+ if gridIndex not in g_stoneCanPlaceList:
+ g_stoneCanPlaceList.append(gridIndex)
+ return g_stoneCanPlaceList
def GetAllEquipPlaceHoleIndex():
### 得到装备位所有孔位
- gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1)
- maxEquipHoleCnt = len(gemOpenClassLVList) # 最大装备阶级开放孔数
+ gemOpenNeedStarList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1)
+ maxEquipHoleCnt = len(gemOpenNeedStarList) # 最大装备阶级开放孔数
gemOpenVipList = IpyGameDataPY.GetFuncEvalCfg("GemOpenVip", 1)
maxHoleVipCnt = len(gemOpenVipList)# 最大Vip开放孔数
@@ -94,14 +101,14 @@
def GetPackTypeByEquipPlace(equipPlace):
##目前支持镶嵌普通装备、诛仙装备
- if equipPlace in ShareDefine.ZhuXianEquipPlace:
- equipPackType = ShareDefine.rptZhuXianEquip
- stonePackType = ShareDefine.rptZhuXianItem
- placeIndex = EquipZhuXian.GetZhuXianEquipIndexByPlace(equipPlace)
- else:
- equipPackType = IPY_GameWorld.rptEquip
- stonePackType = IPY_GameWorld.rptItem
- placeIndex = equipPlace
+# if equipPlace in ShareDefine.ZhuXianEquipPlace:
+# equipPackType = ShareDefine.rptZhuXianEquip
+# stonePackType = ShareDefine.rptZhuXianItem
+# placeIndex = EquipZhuXian.GetZhuXianEquipIndexByPlace(equipPlace)
+# else:
+ equipPackType = IPY_GameWorld.rptEquip
+ stonePackType = IPY_GameWorld.rptItem
+ placeIndex = equipPlace
return equipPackType, stonePackType, placeIndex
#//A3 04 宝石镶嵌或替换 #tagCMEquipEnchase
@@ -157,8 +164,8 @@
% (stoneItemID, stoneEffType, stoneCanPlaceList, equipPlace), playerID)
return
- equipClassLV = ItemCommon.GetItemClassLV(curEquip)
- if not __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex, equipPackType):
+ equipStar = ChEquip.GetEquipPartStar(curEquip)
+ if not __CheckStoneHoleCanUse(curPlayer, equipStar, holeIndex, equipPackType):
return
# 扣除宝石
@@ -382,7 +389,7 @@
DoStoneSuccess(curPlayer)
return
-def __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex, equipPackType):
+def __CheckStoneHoleCanUse(curPlayer, equipStar, holeIndex, equipPackType):
##验证孔合法性
holeIndexList = GetAllEquipPlaceHoleIndex()
@@ -391,19 +398,17 @@
return False
openCommHoleCnt = 0 # 已经开放装备常规孔数
- if equipPackType == ShareDefine.rptZhuXianEquip:
- gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 2)
- else:
- gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1)
- for holeCnt, openClassLV in enumerate(gemOpenClassLVList, 1):
- if equipClassLV >= openClassLV:
+
+ gemOpenNeedStarList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1)
+ for holeCnt, openStar in enumerate(gemOpenNeedStarList, 1):
+ if equipStar >= openStar:
openCommHoleCnt = holeCnt
# VIP孔
if holeIndex >= ChConfig.Def_Stone_VipHole:
if openCommHoleCnt <= 0:
- GameWorld.Log("装备未开启任何普通宝石孔,无法开启VIP孔位! equipClassLV=%s,openCommHoleCnt=%s" % (equipClassLV, openCommHoleCnt))
+ GameWorld.Log("装备未开启任何普通宝石孔,无法开启VIP孔位! equipStar=%s,openCommHoleCnt=%s" % (equipStar, openCommHoleCnt))
return False
gemOpenVipList = IpyGameDataPY.GetFuncEvalCfg("GemOpenVip", 1)
@@ -425,8 +430,8 @@
# 常规孔
elif holeIndex >= openCommHoleCnt:
- GameWorld.Log("该装备宝石孔为开放!equipClassLV=%s,holeIndex=%s,openCommHoleCnt=%s"
- % (equipClassLV, holeIndex, openCommHoleCnt), curPlayer.GetPlayerID())
+ GameWorld.Log("该装备宝石孔为开放!equipStar=%s,holeIndex=%s,openCommHoleCnt=%s"
+ % (equipStar, holeIndex, openCommHoleCnt), curPlayer.GetPlayerID())
return False
return True
@@ -471,22 +476,22 @@
return
-def DoMoveEquipStone(curPlayer, equipPlace):
+def DoMoveEquipStone(curPlayer, equipPackIndex):
###替换装备时宝石转移
- equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPlace)
+ equipPackType, stonePackType, placeIndex = GetPackTypeByEquipPlace(equipPackIndex)
equipPack = curPlayer.GetItemManager().GetPack(equipPackType)
curEquip = equipPack.GetAt(placeIndex)
if not ItemCommon.CheckItemCanUse(curEquip):
return
- #获得装备阶级孔信息
- gemOpenClassLVList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1)
- maxEquipHoleCnt = len(gemOpenClassLVList) # 最大装备阶级开放孔数
+ #获得装备星级孔信息
+ gemOpenNeedStarList = IpyGameDataPY.GetFuncEvalCfg("GemOpen", 1)
+ maxEquipHoleCnt = len(gemOpenNeedStarList) # 最大装备星级开放孔数
openEquipHoleCnt = 0 # 已经开放孔数
- equipClassLV = ItemCommon.GetItemClassLV(curEquip)
- for holeCnt, openClassLV in enumerate(gemOpenClassLVList, 1):
- if equipClassLV >= openClassLV:
+ partStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackIndex, curEquip)
+ for holeCnt, openStar in enumerate(gemOpenNeedStarList, 1):
+ if partStar >= openStar:
openEquipHoleCnt = holeCnt
#需要拆卸宝石的孔列表
@@ -496,10 +501,10 @@
for holeIndex in xrange(maxEquipHoleCnt):
if holeIndex < openEquipHoleCnt:
continue
- curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPlace, holeIndex)[0]
+ curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0]
if curGemID == 0:
continue
- pickoffHoleList.append([equipPlace, holeIndex])
+ pickoffHoleList.append([equipPackIndex, holeIndex])
#没有开启普通装备孔,需摘除VIP孔
if not openEquipHoleCnt:
@@ -508,10 +513,10 @@
maxVipHoleCnt = len(gemOpenVipList)# 最大VIP开放孔数
#判断VIP等级孔信息
for holeIndex in xrange(ChConfig.Def_Stone_VipHole, ChConfig.Def_Stone_VipHole + maxVipHoleCnt):
- curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPlace, holeIndex)[0]
+ curGemID = GetEquipIndexStoneIDAndIsBand(curPlayer, equipPackIndex, holeIndex)[0]
if curGemID == 0:
continue
- pickoffHoleList.append([equipPlace, holeIndex])
+ pickoffHoleList.append([equipPackIndex, holeIndex])
# 脱装备的外层刷属性, 这里不刷
__DoSysPickoffEquipStone(curPlayer, equipPackType, stonePackType, pickoffHoleList, "EquipChange", False)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index 9db6d33..1cc2a94 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -2534,7 +2534,7 @@
totalPlusLV = 0
for packType, equipPartIndexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
for i in equipPartIndexList:
- partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, packType, i)
+ partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i)
totalPlusLV += partStarLV
@@ -2545,7 +2545,7 @@
# equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(IPY_GameWorld.rptEquip, [])
# for i in equipPartIndexList:
# #统计全身强化等级
-# partStarLV = ChEquip.GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, i)
+# partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, i)
# if partStarLV >= star:
# partCnt +=1
#GameWorld.Log('star=%s,conditionValue=%s,partCnt=%s,%s'%(star,conditionValue,partCnt,QuestRunnerValue.GetEval(conditionType, partCnt, conditionValue)))
@@ -2900,15 +2900,15 @@
if equipIndex == 0:
GameWorld.ErrLog("任务赠送装备位置错误 equipIndex=-1")
return
-
- if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipIndex):
+ equipPackIndex = ItemCommon.GetEquipPackIndex(curSingleItem)
+ if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipPackIndex):
#物品已存在直接给背包
if not itemControl.PutInItem(IPY_GameWorld.rptItem, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]):
GameWorld.Log('###任务 = %s给予物品异常, %s, %s' % (missionID, itemID, itemCount), curPlayer.GetPlayerID())
curSingleItem.Clear()
return
else:
- ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem, equipIndex, 0)
+ ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem,equipPackIndex, 0)
#ObtainRes01 <n>获得</n><Info Type="Item" Name="Name" ID="{%S1%}"/><n>×</n><n>{%S2%}!</n>
elif not itemControl.PutInItem(packIndex, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]):
@@ -6116,11 +6116,11 @@
# @return 返回值无意义
# @remarks <Set_Equiptotalstar key="" />
def DoType_Set_Equiptotalstar(curPlayer, curMission, curActionNode):
- key = curActionNode.GetAttribute("key")
- questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
- if questID != 0:
- curMission = curPlayer.FindMission(questID)
- curMission.SetProperty(key, ChEquip.GetTotalEquipStars(curPlayer))
+# key = curActionNode.GetAttribute("key")
+# questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
+# if questID != 0:
+# curMission = curPlayer.FindMission(questID)
+# curMission.SetProperty(key, ChEquip.GetTotalEquipStars(curPlayer))
return
#---------------------------------------------------------------------
##DoType_调度器
@@ -7267,7 +7267,7 @@
# @return None <Equiptotalstar value="cnt"/>
def ConditionType_Equiptotalstar(curPlayer, curMission, curActionNode):
totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
- return ChEquip.GetTotalEquipStars(curPlayer) >= totalcnt
+ return #ChEquip.GetTotalEquipStars(curPlayer) >= totalcnt
##激活法宝,确认与成就逻辑后使用
# @param None
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStarLV.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
similarity index 87%
rename from ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStarLV.py
rename to ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
index 246ef8f..bde1d0f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStarLV.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
@@ -4,14 +4,14 @@
#
#-------------------------------------------------------------------------------
#
-##@package GM.Commands.SetEquipPartStarLV
+##@package GM.Commands.SetEquipPartPlusLV
#
-# @todo:设置装备部位公共星级
+# @todo:设置装备部位公共强化等级
# @author hxp
# @date 2015-12-15
# @version 1.0
#
-# 详细描述: 设置装备部位公共星级
+# 详细描述: 设置装备部位公共强化等级
#
#---------------------------------------------------------------------
"""Version = 2015-12-15 17:00"""
@@ -41,11 +41,11 @@
for i in indexList:
curPack = curPlayer.GetItemManager().GetPack(pType)
curEquip = curPack.GetAt(i)
- ChEquip.SetEquipPartStarLV(curPlayer, pType, i, curEquip, setStarLV)
+ ChEquip.SetEquipPartPlusLV(curPlayer, pType, i, curEquip, setStarLV)
ChEquip.SetEquipPartProficiency(curPlayer, pType, i, 0)
Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, pType)
- ChEquip.NotifyEquipPartStarLV(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "设置所有部位星级为: %s" % setStarLV)
+ ChEquip.NotifyEquipPartPlusLV(curPlayer)
+ GameWorld.DebugAnswer(curPlayer, "设置所有部位强化等级为: %s" % setStarLV)
return
if len(cmdList) != 3:
@@ -64,9 +64,9 @@
curPack = curPlayer.GetItemManager().GetPack(packType)
curEquip = curPack.GetAt(index)
- maxStarLV = ItemCommon.GetItemMaxStarLV(curEquip)
+ maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
starLV = min(starLV, maxStarLV)
- ChEquip.SetEquipPartStarLV(curPlayer, packType, index, curEquip, starLV)
+ ChEquip.SetEquipPartPlusLV(curPlayer, packType, index, curEquip, starLV)
ChEquip.SetEquipPartProficiency(curPlayer, packType, index, 0)
Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
return
@@ -100,7 +100,7 @@
#===============================================================================
#===========================================================================
- # GameWorld.DebugAnswer(curPlayer, "SetEquipPartStarLV 参数[packType, index, starLV]")
+ # GameWorld.DebugAnswer(curPlayer, "SetEquipPartPlusLV 参数[packType, index, starLV]")
# for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
# GameWorld.DebugAnswer(curPlayer, " packType=%s(%s)时" % (pType, packTypeStrDict.get(pType, "")))
# indexStr = "index="
@@ -108,7 +108,7 @@
# indexStr += "%s(%s)," % (i, indexStrDict.get("%s_%s" % (pType, i), ""))
# GameWorld.DebugAnswer(curPlayer, " %s" % indexStr)
#
- # GameWorld.DebugAnswer(curPlayer, " SetEquipPartStarLV 星级 可重置所有部位为对应的星级")
+ # GameWorld.DebugAnswer(curPlayer, " SetEquipPartPlusLV 强化等级 可重置所有部位为对应的强化等级")
# GameWorld.DebugAnswer(curPlayer, "------------------------------")
#===========================================================================
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStar.py
new file mode 100644
index 0000000..b44de0e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStar.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.SetEquipPartStar
+#
+# @todo:设置装备部位公共星数
+# @author xdh
+# @date 2019-3-2
+# @version 1.0
+#
+# 详细描述: 设置装备部位公共星数
+#
+#---------------------------------------------------------------------
+import IpyGameDataPY
+"""Version = 2019-3-2 17:00"""
+#---------------------------------------------------------------------
+import PlayerControl
+import ChEquip
+import GameWorld
+
+#---------------------------------------------------------------------
+#逻辑实现
+## GM命令执行入口
+# @param curPlayer 当前玩家
+# @param cmdList 参数列表 [classlv, equipPlace, starLV]
+# @return None
+# @remarks 函数详细说明.
+def OnExec(curPlayer, cmdList):
+ if not cmdList:
+ __GMHelpAnswer(curPlayer)
+ return
+
+ if len(cmdList) != 3:
+ return
+ classlv, equipPlace, starLV = cmdList
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, equipPlace)
+ if not ipyData:
+ __GMHelpAnswer(curPlayer)
+ return
+ equipPackIndex = ipyData.GetGridIndex()
+ ChEquip.SetEquipPartStar(curPlayer, equipPackIndex, starLV)
+ ChEquip.NotifyEquipPartStar(curPlayer, equipPackIndex)
+ ChEquip.RefreshPlayerEquipAttribute(curPlayer, classlv)
+ playControl = PlayerControl.PlayerControl(curPlayer)
+ playControl.RefreshPlayerAttrState()
+ return
+
+
+def __GMHelpAnswer(curPlayer, errorMsg="参数列表 [classlv, equipPlace, starLV]"):
+ if errorMsg:
+ GameWorld.DebugAnswer(curPlayer, "%s" % errorMsg)
+
+
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index fb00bb8..dcbe4b3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1372,6 +1372,25 @@
("list", "LVRange", 0),
("DWORD", "GoodsID", 0),
),
+
+ "EquipPlaceIndexMap":(
+ ("DWORD", "GridIndex", 0),
+ ("DWORD", "ClassLV", 1),
+ ("DWORD", "EquipPlace", 1),
+ ),
+
+ "EquipStarUp":(
+ ("BYTE", "ClassLV", 1),
+ ("BYTE", "EquipPlace", 1),
+ ("BYTE", "Star", 1),
+ ("list", "CostEquipPlace", 0),
+ ("list", "CostEquipColor", 0),
+ ("BYTE", "CostEquipCnt", 0),
+ ("BYTE", "SuitTotalRate", 0),
+ ("dict", "CostItemDict", 0),
+ ("dict", "StarAttrInfo", 0),
+ ("dict", "BaseAttrInfo", 0),
+ ),
}
@@ -4190,6 +4209,46 @@
def GetLVRange(self): return self.LVRange # 等级范围
def GetGoodsID(self): return self.GoodsID # 商城表ID
+
+# 装备位背包索引映射表
+class IPY_EquipPlaceIndexMap():
+
+ def __init__(self):
+ self.GridIndex = 0
+ self.ClassLV = 0
+ self.EquipPlace = 0
+ return
+
+ def GetGridIndex(self): return self.GridIndex # 背包格子索引
+ def GetClassLV(self): return self.ClassLV # 阶级(物品表LV字段)
+ def GetEquipPlace(self): return self.EquipPlace # 装备位(物品表EquipPlace字段)
+
+# 装备升星表
+class IPY_EquipStarUp():
+
+ def __init__(self):
+ self.ClassLV = 0
+ self.EquipPlace = 0
+ self.Star = 0
+ self.CostEquipPlace = []
+ self.CostEquipColor = []
+ self.CostEquipCnt = 0
+ self.SuitTotalRate = 0
+ self.CostItemDict = {}
+ self.StarAttrInfo = {}
+ self.BaseAttrInfo = {}
+ return
+
+ def GetClassLV(self): return self.ClassLV # 阶级
+ def GetEquipPlace(self): return self.EquipPlace # 装备位
+ def GetStar(self): return self.Star # 星数
+ def GetCostEquipPlace(self): return self.CostEquipPlace # 可用装备部位
+ def GetCostEquipColor(self): return self.CostEquipColor # 可用装备品质
+ def GetCostEquipCnt(self): return self.CostEquipCnt # 装备数量
+ def GetSuitTotalRate(self): return self.SuitTotalRate # 全套装加成概率(非套50%)
+ def GetCostItemDict(self): return self.CostItemDict # 特殊材料
+ def GetStarAttrInfo(self): return self.StarAttrInfo # 星级属性
+ def GetBaseAttrInfo(self): return self.BaseAttrInfo # 基础属性增加
def Log(msg, playerID=0, par=0):
@@ -4483,6 +4542,10 @@
self.ipyLuckyTreasureTemplateLen = len(self.ipyLuckyTreasureTemplateCache)
self.ipyMysteryShopCache = self.__LoadFileData("MysteryShop", IPY_MysteryShop)
self.ipyMysteryShopLen = len(self.ipyMysteryShopCache)
+ self.ipyEquipPlaceIndexMapCache = self.__LoadFileData("EquipPlaceIndexMap", IPY_EquipPlaceIndexMap)
+ self.ipyEquipPlaceIndexMapLen = len(self.ipyEquipPlaceIndexMapCache)
+ self.ipyEquipStarUpCache = self.__LoadFileData("EquipStarUp", IPY_EquipStarUp)
+ self.ipyEquipStarUpLen = len(self.ipyEquipStarUpCache)
Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
Log("IPY_DataMgr InitOK!")
return
@@ -4917,6 +4980,10 @@
def GetLuckyTreasureTemplateByIndex(self, index): return self.ipyLuckyTreasureTemplateCache[index]
def GetMysteryShopCount(self): return self.ipyMysteryShopLen
def GetMysteryShopByIndex(self, index): return self.ipyMysteryShopCache[index]
+ def GetEquipPlaceIndexMapCount(self): return self.ipyEquipPlaceIndexMapLen
+ def GetEquipPlaceIndexMapByIndex(self, index): return self.ipyEquipPlaceIndexMapCache[index]
+ def GetEquipStarUpCount(self): return self.ipyEquipStarUpLen
+ def GetEquipStarUpByIndex(self, index): return self.ipyEquipStarUpCache[index]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData
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 d0b6f3d..3fdec12 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -41,6 +41,7 @@
import FormulaControl
#---------------------------------------------------------------------
+
##检查玩家是否可以换装
# @param curPlayer 玩家实例
# @return 返回值, 是否通过检查
@@ -54,14 +55,17 @@
return True
+
## 执行玩家换装逻辑
# @param curPlayer 当前玩家
# @param curItem 物品实例
-# @param packEquipIndex 装备部位
+# @param equipPackIndex 装备背包索引
# @param tick 当前时间
# @return 布尔值
# @remarks 执行玩家换装逻辑
-def DoPlayerEquipItem(curPlayer, curItem, packEquipIndex, tick):
+def DoPlayerEquipItem(curPlayer, curItem, equipPackIndex, tick):
+ if equipPackIndex < 0:
+ return False
playerItemControl = ItemControler.PlayerItemControler(curPlayer)
#---验证是否可以换这件装备---
@@ -76,11 +80,15 @@
changeItemEquipPlace = curItem.GetEquipPlace()
if changeItemEquipPlace not in ShareDefine.RoleEquipType:
return False
-
+
+ if ItemCommon.GetEquipPackIndex(curItem) != equipPackIndex:
+ #检查装备位置和填表是否一致
+ return False
+
#--设置穿上物品星级--
#===========================================================================
# if changeItemEquipPlace in ChConfig.Type_Equip_CanTake:
- # equipPartStar = GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, changeItemEquipPlace)
+ # equipPartStar = GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, changeItemEquipPlace)
# if equipPartStar != curItem.GetItemStarLV():
# curItem.SetItemStarLV(equipPartStar)
#===========================================================================
@@ -89,33 +97,34 @@
#---开始换装逻辑---
#记录换装物品信息
+ itemClassLV = ItemCommon.GetItemClassLV(curItem)
changeItemID = curItem.GetItemTypeID()
- changeItemStarLV = 0#curItem.GetItemStarLV()
- changeItemStoneCnt = 0#curItem.GetUseStoneCount()
- changeItemHoleCnt = 0#curItem.GetCanPlaceStoneCount()
+ changeItemStarLV = 0 #curItem.GetItemStarLV()
+ changeItemStoneCnt = 0 #curItem.GetUseStoneCount()
+ changeItemHoleCnt = 0 #curItem.GetCanPlaceStoneCount()
changeItemUseData = curItem.GetUserData()
itemQuality = curItem.GetItemQuality()
endureReduceType = curItem.GetEndureReduceType()
#changeItemIsHorse = (curItem.GetType() == ChConfig.Def_Item_Type_Horse)
#执行换装动作
- equipPlace = playerItemControl.EquipItem(curItem, packEquipIndex)
+ equipPlace = playerItemControl.EquipItem(curItem, equipPackIndex)
if equipPlace == -1:
return False
equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- curEquip = equipPack.GetAt(equipPlace)
- SetEquipItemSuiteLVInfo(curPlayer, packEquipIndex, curEquip)
+ curEquip = equipPack.GetAt(equipPackIndex)
+ #SetEquipItemSuiteLVInfo(curPlayer, packEquipIndex, curEquip)
if curEquip.GetUserAttr(ShareDefine.Def_IudetCreateTime) == 0:
curEquip.SetUserAttr(ShareDefine.Def_IudetCreateTime, int(time.time()))
#---换装成功---
- if equipPlace in ChConfig.Def_SyncEquipStateByIndex:
+ if equipPackIndex in PlayerControl.GetFaceEquipIndexList(curPlayer):
#通知客户端交换物品
- curPlayer.ChangeEquip(changeItemID, equipPlace, changeItemStarLV, changeItemHoleCnt, changeItemStoneCnt, changeItemUseData)
+ curPlayer.ChangeEquip(changeItemID, equipPackIndex, changeItemStarLV, changeItemHoleCnt, changeItemStoneCnt, changeItemUseData)
if not endureReduceType:
- EventShell.EventRespons_EquipByPlace(curPlayer, equipPlace)
+ EventShell.EventRespons_EquipByPlace(curPlayer, itemClassLV, equipPlace)
#记录橙装、红装
#===========================================================================
# if itemQuality in [ChConfig.Def_Quality_Orange, ChConfig.Def_Quality_Red]:
@@ -133,12 +142,13 @@
if changeItemEquipPlace == ShareDefine.retWing:
PlayerWing.CalcWingAttr(curPlayer)
else:
- RefreshPlayerEquipAttribute(curPlayer)
+ RefreshPlayerEquipAttribute(curPlayer, itemClassLV)
#刷新所有属性
playControl = PlayerControl.PlayerControl(curPlayer)
playControl.RefreshPlayerAttrState()
return True
+
def SetEquipItemSuiteLVInfo(curPlayer, equipIndex, curItem):
# 设置部位套装信息
@@ -168,24 +178,21 @@
for suiteLV in suiteLVList:
curItem.AddUserAttr(ShareDefine.Def_IudetPartSuiteLV, suiteLV)
return
+
## 刷新装备对人物属性的改变
# @param self 类实例
# @return 返回值无意义
# @remarks 刷新装备对人物属性的改变
-def RefreshPlayerEquipAttribute(curPlayer, isRefreshEquipBuff=True):
- GameWorld.DebugLog("Start RefreshPlayerEquipAttribute!!!")
+def RefreshPlayerEquipAttribute(curPlayer, classlv=0):
+ GameWorld.DebugLog("Start RefreshPlayerEquipAttribute classlv=%s!!!" % classlv)
+ classlvList = range(1, IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') + 1) if classlv == 0 else [classlv]
+ for rclasslv in classlvList:
+ __CalcEquips_Effect(curPlayer, rclasslv)
- __CalcEquips_Effect(curPlayer)
-
- #CalcAllEquipAllPlusLVAttr(curPlayer)
-
- CalcAllEquipStarsAttr(curPlayer)
-
#if isRefreshEquipBuff:
# __RefreshPlayerAllEquipBuff(curPlayer)
return
-
## 刷新所有装备对人物属性的改变
# @param self 类实例
@@ -258,6 +265,7 @@
# return
#===============================================================================
+
#===============================================================================
# #//07 03 人物装备物品#tagCEquipItem
# //角色装备类型
@@ -274,6 +282,7 @@
GameWorld.GetPsycoFunc(__Func_PlayerEquipItem)(index, tick)
return
+
## 人物装备物品
# @param index 背包索引
# @param tick 当前时间
@@ -285,7 +294,7 @@
#物品在物品背包的索引
packItemIndex = sendPack.GetItemIndex()
#角色装备部位
- packEquipIndex = sendPack.GetRoleEquipType()
+ equipPackIndex = sendPack.GetRoleEquipType()
#检查玩家状态是否可以换装
if not CheckPlayerCanEquipItem(curPlayer):
@@ -303,14 +312,14 @@
#---获取封包需要装备的物品---
rolePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
curItem = rolePack.GetAt(packItemIndex)
-
#---执行玩家换装逻辑---
- if DoPlayerEquipItem(curPlayer, curItem, packEquipIndex, tick):
+ if DoPlayerEquipItem(curPlayer, curItem, equipPackIndex, tick):
return
#换装失败通知客户端信息
curPlayer.Notify_ItemPutFail(IPY_GameWorld.rptItem, packItemIndex, IPY_GameWorld.rptEquip, 0)
return
+
#---------------------------------------------------------------------
## 一键换装(封包)
@@ -331,6 +340,7 @@
GameWorld.GetPsycoFunc(__Func_PlayerUnEquip)(index, tick)
return
+
#---------------------------------------------------------------------
## 玩家卸下装备(封包参数)
# @param index 玩家索引
@@ -344,7 +354,7 @@
if not CheckPlayerCanEquipItem(curPlayer):
return
- equipIndex = sendPack.GetEquipIndex()
+ equipPackIndex = sendPack.GetEquipIndex()
#如果卸下的是马匹,需要判定如果马匹装备背包有物品,不让放下
#===========================================================================
@@ -357,7 +367,7 @@
#===========================================================================
playerItemControl = ItemControler.PlayerItemControler(curPlayer)
- result = playerItemControl.UnEquipItem(equipIndex, sendPack.GetPackIndex())
+ result = playerItemControl.UnEquipItem(equipPackIndex, sendPack.GetPackIndex())
if not result:
#卸下装备失败
@@ -368,11 +378,11 @@
##特殊装备 , 不需要冲刷属性
if equipPlace in ChConfig.EquipItemNoRefreshState:
- curPlayer.Sync_UnEquipItem(equipID, equipPlace)
+ curPlayer.Sync_UnEquipItem(equipID, equipPackIndex)
return
#先刷装备BUFF 再计算属性
- if equipIndex == ShareDefine.retWing:
+ if equipPlace == ShareDefine.retWing:
PlayerWing.CalcWingAttr(curPlayer)
else:
RefreshPlayerEquipAttribute(curPlayer)
@@ -382,7 +392,7 @@
playControl.RefreshPlayerAttrState()
if equipPlace in ChConfig.Def_SyncEquipStateByIndex:
- curPlayer.Sync_UnEquipItem(equipID, equipPlace)
+ curPlayer.Sync_UnEquipItem(equipID, equipPackIndex)
return
@@ -403,7 +413,6 @@
IPY_GameWorld.oalUseItem
):
return
-
#检查使用物品的玩家属性
if not ChItem.CheckUseItemSelf_Player(curPlayer):
@@ -433,38 +442,38 @@
## 计算装备对基本属性的改变
+# @param classlv
# @return None
-def __CalcEquips_Effect(curPlayer):
- baseEquipAttrDict = {}
- baseEquipAttr_Weapon = [{} for _ in range(4)] # 武器基础, 物品表装备基础效果属性
- baseEquipAttr_Armor = [{} for _ in range(4)] # 防具基础, 物品表装备基础效果属性
- baseEquipAttr_Relics = [{} for _ in range(4)] # 圣器基础, 物品表装备基础效果属性
+def __CalcEquips_Effect(curPlayer, classlv):
+# baseEquipAttrDict = {}
+# baseEquipAttr_Weapon = [{} for _ in range(4)] # 武器基础, 物品表装备基础效果属性
+# baseEquipAttr_Armor = [{} for _ in range(4)] # 防具基础, 物品表装备基础效果属性
+# baseEquipAttr_Relics = [{} for _ in range(4)] # 圣器基础, 物品表装备基础效果属性
- allAttrListEquip = [{} for _ in range(4)] # 装备其他
- allAttrListPlusBase = [{} for _ in range(4)] # 基础强化属性
- allAttrListStone = [{} for _ in range(4)] # 宝石属性
- allAttrListSuit = [{} for _ in range(4)] # 套装属性
- allAttrListWash = [{} for _ in range(4)] # 洗练属性
- allAttrListOutOfPrintEquip = [{} for _ in range(4)] # 绝版装备属性 需在等级变化独立计算
+
+ allAttrListStar = [{} for _ in range(4)] # 星数属性
+ #allAttrListEquip = [{} for _ in range(4)] # 装备其他
+ #allAttrListPlusBase = [{} for _ in range(4)] # 基础强化属性
+ allAttrListStone = [{} for _ in range(4)] # 宝石属性
+ #allAttrListSuit = [{} for _ in range(4)] # 套装属性
+ #allAttrListWash = [{} for _ in range(4)] # 洗练属性
+ #allAttrListOutOfPrintEquip = [{} for _ in range(4)] # 绝版装备属性 需在等级变化独立计算
packType = IPY_GameWorld.rptEquip
playerEquip = curPlayer.GetItemManager().GetPack(packType)
equipPartStarIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(packType, [])
- maxSuiteType = IpyGameDataPY.GetFuncCfg('EquipSuitColorStar', 2) #最大套装类型
- equipPlaceList = [] # 有穿戴装备的装备位列表
- suitCntDict = {} #套装数量字典
- legendAttrDict = {} #所有传奇属性
- equipScoreTotal = 0 #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
+ #maxSuiteType = IpyGameDataPY.GetFuncCfg('EquipSuitColorStar', 2) #最大套装类型
+ #equipPlaceList = [] # 有穿戴装备的装备位列表
+ #suitCntDict = {} #套装数量字典
+ #legendAttrDict = {} #所有传奇属性
+ equipScoreTotal = 0 #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
#玩家当前可装备的装备类型
- for equipIndex in xrange(playerEquip.GetCount()):
- if equipIndex not in ShareDefine.RoleEquipType :
+ for equipPlace in equipPartStarIndexList:
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, equipPlace)
+ if not ipyData:
continue
-
- # 翅膀属性在翅膀功能单独刷新
- if equipIndex in ChConfig.EquipItemNoRefreshState or equipIndex == ShareDefine.retWing:
- continue
-
+ equipIndex = ipyData.GetGridIndex()
curEquip = playerEquip.GetAt(equipIndex)
if curEquip.IsEmpty():
continue
@@ -473,78 +482,76 @@
# 过期
continue
- equipPlaceList.append(equipIndex)
+ #equipPlaceList.append(equipIndex)
equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
#基础属性效果
- for i in range(0, curEquip.GetEffectCount()):
+ for i in xrange(curEquip.GetEffectCount()):
curEffect = curEquip.GetEffectByIndex(i)
if not curEffect:
break
-
effectID = curEffect.GetEffectID()
if effectID == 0:
#最后一个
break
-
effectValue = curEffect.GetEffectValue(0)
if not effectValue:
continue
+# if equipIndex in ChConfig.BaseEquipPlace_Weapon:
+# PlayerControl.CalcAttrDict_Type(effectID, effectValue, baseEquipAttr_Weapon)
+# elif equipIndex in ChConfig.BaseEquipPlace_Armor:
+# PlayerControl.CalcAttrDict_Type(effectID, effectValue, baseEquipAttr_Armor)
+# elif equipIndex in ChConfig.BaseEquipPlace_Relics:
+# PlayerControl.CalcAttrDict_Type(effectID, effectValue, baseEquipAttr_Relics)
+# #其他非基础部位的
+# else:
+# PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListEquip)
+# baseEquipAttrDict[effectID] = baseEquipAttrDict.get(effectID, 0) + effectValue
- #添加物品效果的属性值
-# if equipIndex == ShareDefine.retWing:
-# PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListWing)
- if equipIndex in ChConfig.BaseEquipPlace_Weapon:
- PlayerControl.CalcAttrDict_Type(effectID, effectValue, baseEquipAttr_Weapon)
- elif equipIndex in ChConfig.BaseEquipPlace_Armor:
- PlayerControl.CalcAttrDict_Type(effectID, effectValue, baseEquipAttr_Armor)
- elif equipIndex in ChConfig.BaseEquipPlace_Relics:
- PlayerControl.CalcAttrDict_Type(effectID, effectValue, baseEquipAttr_Relics)
- #其他非基础部位的
- else:
- PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListEquip)
- baseEquipAttrDict[effectID] = baseEquipAttrDict.get(effectID, 0) + effectValue
-
- groupType = GetEquipPartSuiteGroupType(curPlayer, equipIndex)
- for suiteType in range(1, maxSuiteType+1):
- suitelv = GetEquipPartSuiteLV(curPlayer, equipIndex, suiteType)
- if suitelv:
- maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
- suiteLV = min(suitelv, maxSuiteLV)
- if suiteLV:
- suiteKey = '%s_%s_%s'%(groupType,suiteType,suitelv)
- suitCntDict[suiteKey] = suitCntDict.get(suiteKey, 0) + 1
+# groupType = GetEquipPartSuiteGroupType(curPlayer, equipIndex)
+# for suiteType in range(1, maxSuiteType + 1):
+# suitelv = GetEquipPartSuiteLV(curPlayer, equipIndex, suiteType)
+# if suitelv:
+# maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
+# suiteLV = min(suitelv, maxSuiteLV)
+# if suiteLV:
+# suiteKey = '%s_%s_%s' % (groupType, suiteType, suitelv)
+# suitCntDict[suiteKey] = suitCntDict.get(suiteKey, 0) + 1
+ #星数属性
+ equipPartStar = GetEquipPartStarByRank(curPlayer, equipIndex, curEquip) #生效的星数
+ CalcEquipStarAttr(curPlayer, classlv, equipPlace, equipPartStar, allAttrListStar)
#计算装备宝石加成
CalcEquipStone_Effect(curPlayer, equipIndex, allAttrListStone)
#物品强化属性,佩饰强化不同要区分
- if equipIndex in equipPartStarIndexList:
- equipPartStarLV = GetEquipPartStarLVByRank(curPlayer, packType, equipIndex, curEquip)
- CalcAttr_ItemPlus(curPlayer, curEquip, allAttrListPlusBase, equipPartStarLV)
+# if equipIndex in equipPartStarIndexList:
+# equipPartStarLV = GetEquipPartPlusLVByRank(curPlayer, packType, equipIndex, curEquip)
+# CalcAttr_ItemPlus(curPlayer, curEquip, allAttrListPlusBase, equipPartStarLV)
#传奇属性
- CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict)
+ #CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict)
#绝世属性
- CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
+ #CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
#洗练属性
- Operate_EquipWash.CalcAttr_EquipWash(curPlayer, equipIndex, allAttrListWash)
+ #Operate_EquipWash.CalcAttr_EquipWash(curPlayer, equipIndex, allAttrListWash)
#洗练套装属性
- Operate_EquipWash.CalcAttr_EquipWashSpec(curPlayer, equipPlaceList, allAttrListWash)
+ #Operate_EquipWash.CalcAttr_EquipWashSpec(curPlayer, equipPlaceList, allAttrListWash)
#套装属性
- CalcEquipSuiteAttr(curPlayer, suitCntDict, allAttrListSuit)
+ #CalcEquipSuiteAttr(curPlayer, suitCntDict, allAttrListSuit)
#GameWorld.DebugLog("所有传奇属性: %s" % legendAttrDict)
#保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBaseWeapon, baseEquipAttr_Weapon)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBaseArmor, baseEquipAttr_Armor)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBaseRelics, baseEquipAttr_Relics)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Equip, allAttrListEquip)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PlusBase, allAttrListPlusBase)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allAttrListStone)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Suit, allAttrListSuit)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allAttrListWash)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
+ #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allAttrListStone)
+ #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allAttrListStar)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBaseWeapon, baseEquipAttr_Weapon)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBaseArmor, baseEquipAttr_Armor)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBaseRelics, baseEquipAttr_Relics)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Equip, allAttrListEquip)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PlusBase, allAttrListPlusBase)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Suit, allAttrListSuit)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allAttrListWash)
+# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
#计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
@@ -574,6 +581,7 @@
#legendAttrDict[attrID] = legendAttrDict.get(attrID, 0) + value
return
+
# 装备绝版属性,随等级变化需在升级再处理
def CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip):
@@ -605,7 +613,7 @@
## 计算装备对基本属性的改变
# @return None
def CalcEquips_OutOfPrint(curPlayer):
- allAttrListOutOfPrintEquip = [{} for _ in range(4)] # 绝版装备属性 需在等级变化独立计算
+ allAttrListOutOfPrintEquip = [{} for _ in range(4)] # 绝版装备属性 需在等级变化独立计算
packType = IPY_GameWorld.rptEquip
playerEquip = curPlayer.GetItemManager().GetPack(packType)
@@ -630,10 +638,10 @@
#绝世属性
CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
-
#保存计算值
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
return
+
## 计算装备强化后的属性
# @param curPlayer 当前玩家
@@ -649,7 +657,7 @@
ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", plusType, equipPartStarLV)
if not ipyData:
return
- attrTypeList, attrValueList = ipyData.GetAttrType(), ipyData.GetAttrValue()
+ attrTypeList, attrValueList = ipyData.GetAttrType(), ipyData.GetAttrValue()
for i, attrID in enumerate(attrTypeList):
PlayerControl.CalcAttrDict_Type(attrID, attrValueList[i], allAttrList)
return
@@ -664,7 +672,7 @@
notifyType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrActivatyNotify)
isAll, addAttrList = ReadChConfig.GetEvalChConfig('EquipQualityAddAttr')
for confInfo in addAttrList:
- confQuality = confInfo[1] # 配置品质标识 1-卓越,2-套装
+ confQuality = confInfo[1] # 配置品质标识 1-卓越,2-套装
cnt = 0
if confQuality == 1:
cnt = qualityEquipCnt
@@ -672,7 +680,7 @@
cnt = suiteEquipCnt
confCnt = confInfo[0]
- if cnt >= confCnt: # 如果件数满足
+ if cnt >= confCnt: # 如果件数满足
EquipAddBuff(curPlayer, confInfo[2])
if confQuality == 2 and confCnt > notifySuiteCnt and notifyType == \
@@ -687,11 +695,12 @@
lastSuiteCntRecord = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrActivatyRecordSuiteCnt)
if notifySuiteCnt > 0 and notifySuiteCnt > lastSuiteCntRecord:
- PlayerControl.NotifyCode(curPlayer, "GeRen_hgg_917284", [curPlayer.GetPlayerName(),
+ PlayerControl.NotifyCode(curPlayer, "GeRen_hgg_917284", [curPlayer.GetPlayerName(),
notifySuiteCnt])
curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyRecordSuiteCnt, suiteCntRecord)
#GameWorld.DebugLog("套装件数 上次记录=%s,更新记录=%s" % (lastSuiteCntRecord, suiteCntRecord))
return
+
## 添加装备全身强化等级对应属性
# @param curPlayer 当前玩家
@@ -717,44 +726,27 @@
return attrDict
-## 添加装备全身星数对应属性
-def CalcAllEquipStarsAttr(curPlayer):
- allAttrList = [{} for i in range(4)]
- totalStars = GetTotalEquipStars(curPlayer)
- activeStars = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipActiveStars)
- totalStars = min(totalStars, activeStars)
- if totalStars:
- ipyData = IpyGameDataPY.InterpolationSearch("RoleEquipStars", "StarsNeed", totalStars)
- if ipyData:
- attrTypeList = ipyData.GetAttrType()
- attrValueList = ipyData.GetAttrValue()
-
- for i, attrID in enumerate(attrTypeList):
- PlayerControl.CalcAttrDict_Type(attrID, attrValueList[i], allAttrList)
- #GameWorld.DebugLog("装备全身星数属性: totalStars=%s,allAttrList=%s" % (totalStars, allAttrList), curPlayer.GetPlayerID())
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipAllStars, allAttrList)
- return
## 装备套装属性计算
# @param curPlayer 当前玩家
# @return None
def CalcEquipSuiteAttr(curPlayer, suitCntDict, allAttrListEquip):
- Def_EquipSuitMaxCount = 3 #套装最大阶段
+ Def_EquipSuitMaxCount = 3 #套装最大阶段
myjob = curPlayer.GetJob()
name = curPlayer.GetName()
for suiteKey, cnt in suitCntDict.items():
- groupType,suiteType,suiteLV = suiteKey.split('_')
+ groupType, suiteType, suiteLV = suiteKey.split('_')
suiteLV = int(suiteLV)
- job = 0 if groupType == ChConfig.EquipGroupType_Relics else myjob #仙器组合默认职业0
+ job = 0 if groupType == ChConfig.EquipGroupType_Relics else myjob #仙器组合默认职业0
ipyData = IpyGameDataPY.GetIpyGameData('EquipSuitAttr', int(groupType), int(suiteType), int(suiteLV), job)
if not ipyData:
continue
- for i in range(1, Def_EquipSuitMaxCount+1):
- countKeyName = 'GetCount%d'%i
- attrTypeKeyName = 'GetAttrType%d'%i
- attrValueKeyName = 'GetAttrValue%d'%i
+ for i in range(1, Def_EquipSuitMaxCount + 1):
+ countKeyName = 'GetCount%d' % i
+ attrTypeKeyName = 'GetAttrType%d' % i
+ attrValueKeyName = 'GetAttrValue%d' % i
needCnt = getattr(ipyData, countKeyName)()
if cnt >= needCnt:
attrTypeList = getattr(ipyData, attrTypeKeyName)()
@@ -764,11 +756,11 @@
PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListEquip)
#套装激活提示(只提示1次)
- paramList= [name, cnt, suiteLV, groupType, suiteType]
+ paramList = [name, cnt, suiteLV, groupType, suiteType]
notifyRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteNotify % (groupType, suiteType, cnt))
if not notifyRecord & pow(2, suiteLV):
if groupType == ChConfig.EquipGroupType_Armor:
- if cnt >=5:
+ if cnt >= 5:
PlayerControl.WorldNotify(0, 'EquipSuit5', paramList)
notifyRecord |= pow(2, suiteLV)
else:
@@ -778,12 +770,14 @@
return
+
##全身橙色装备数量触发相关(包含橙色品质以上的装备数量)
def OnOrangeQualityCntChange(curPlayer, orangeQualityCnt):
notifyType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrActivatyNotify)
if notifyType == ChConfig.Def_AttrActivatyNotify_Equip:
EventShell.EventRespons_OrangeQualityCnt(curPlayer, orangeQualityCnt)
return
+
## 1算装备触发的技能 (全身)
# @param curPlayer 当前玩家
@@ -794,6 +788,7 @@
SkillShell.RefreshSkillBuffByEquip(curPlayer, curEquip)
return
+
## 计算装备镶嵌宝石附加效果->基本属性 (宝石)
# @param curPlayer 当前玩家
# @param curEquip 当前装备
@@ -802,7 +797,7 @@
def CalcEquipStone_Effect(curPlayer, equipIndex, allAttrList):
gameData = GameWorld.GetGameData()
- effIndexList = [1, 2, 3, 4] # 第一个效果值是类型等级效果值,非属性效果值
+ effIndexList = [1, 2, 3, 4] # 第一个效果值是类型等级效果值,非属性效果值
gemLVList = []
for holeIndex in Operate_EquipStone.GetAllEquipPlaceHoleIndex():
@@ -823,6 +818,19 @@
gemLVList.append(gemLV)
return gemLVList
+def CalcEquipStarAttr(curPlayer, classlv, equipPlace, equipPartStar, allAttrListStar):
+ ## 计算装备星数属性
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipStarUp', classlv, equipPlace, equipPartStar)
+ if not ipyData:
+ return
+ starAttrDict = ipyData.GetStarAttrInfo()
+ for attrID, attrValue in starAttrDict.items():
+ PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
+ baseAttrDict = ipyData.GetBaseAttrInfo()
+ for attrID, attrValue in baseAttrDict.items():
+ PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
+ return
+
#---------------------------------------------------------------------
## 装备添加Buff
# @param curPlayer 当前玩家
@@ -837,19 +845,20 @@
if value > 0:
curBuff.SetValue(value)
return
+
+
#---------------------------------------------------------------------
#===============================================================================
# #//03 2F 请求装备显隐#tagRequestEquipShowHide
# //装备显示开关
-# int GetEquipShowSwitch();
+# int GetEquipShowSwitch(); 第几套*10+是否有套装
#===============================================================================
-##请求装备显隐.
+##请求装备显隐. (设置显示哪套装备外观)
# @param index 玩家索引
# @param tick 时间戳
# @return 返回值无意义
# @remarks 客户端封包响应 //03 2F 请求装备显隐#tagRequestEquipShowHide
def RequestEquipShowHide(index, tick):
-
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
#---检查刷新间隔--
@@ -861,14 +870,43 @@
return
sendPack = IPY_GameWorld.IPY_CRequestEquipShowHide()
- #此功能无需验证
- curPlayer.SetEquipShowSwitch(sendPack.GetEquipShowSwitch())
+ updEquipShowSwitch = sendPack.GetEquipShowSwitch()
+ oldEquipShowSwitch = curPlayer.GetEquipShowSwitch()
+ if updEquipShowSwitch == oldEquipShowSwitch:
+ return
+
+ #通知外观装备
+ updFaceEquipIndex = 0
+ equipIndexList = []
+ for equipPlace in [ShareDefine.retWeapon, ShareDefine.retWeapon2, ShareDefine.retClothes]:
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', 1, equipPlace)
+ if not ipyData:
+ continue
+ gridIndex = ipyData.GetGridIndex()
+ updFaceEquipIndex = updFaceEquipIndex * 1000 + gridIndex
+ equipIndexList.append(gridIndex)
+ PlayerControl.SetFaceEquipIndex(curPlayer, updFaceEquipIndex)
+ equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+ for equipPackIndex in equipIndexList:
+ curEquip = equipPack.GetAt(equipPackIndex)
+ if not ItemCommon.CheckItemCanUse(curEquip):
+ continue
+ changeItemID = curEquip.GetItemTypeID()
+ changeItemStarLV = 0 #curItem.GetItemStarLV()
+ changeItemStoneCnt = 0 #curItem.GetUseStoneCount()
+ changeItemHoleCnt = 0 #curItem.GetCanPlaceStoneCount()
+ changeItemUseData = curEquip.GetUserData()
+ curPlayer.ChangeEquip(changeItemID, equipPackIndex, changeItemStarLV, changeItemHoleCnt, changeItemStoneCnt, changeItemUseData)
+
+ curPlayer.SetEquipShowSwitch(updEquipShowSwitch)
curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_RequestEquipShowHide, tick)
return
+
## 获取公共部位强化熟练度
def GetEquipPartProficiency(curPlayer, packType, index):
return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartProficiency % (packType, index))
+
## 设置公共部位强化熟练度
def SetEquipPartProficiency(curPlayer, packType, index, value):
@@ -876,22 +914,22 @@
## 获取公共部位强化星级, 因装备的最高可强化星级影响,用于算当前装备属性使用, 不影响全身星级
-def GetEquipPartStarLVByRank(curPlayer, packType, index, curEquip):
- maxStarLV = ItemCommon.GetItemMaxStarLV(curEquip)
- return min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartStarLV % (packType, index)), maxStarLV)
+def GetEquipPartPlusLVByRank(curPlayer, packType, index, curEquip):
+ maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
+ return min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusLV % (packType, index)), maxStarLV)
## 获取公共部位强化星级
-def GetEquipPartStarLV(curPlayer, packType, index):
- return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartStarLV % (packType, index))
+def GetEquipPartPlusLV(curPlayer, packType, index):
+ return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusLV % (packType, index))
## 设置公共部位强化星级
-def SetEquipPartStarLV(curPlayer, packType, index, curEquip, starLV):
- if GetEquipPartStarLV(curPlayer, packType, index) == starLV:
+def SetEquipPartPlusLV(curPlayer, packType, index, curEquip, starLV):
+ if GetEquipPartPlusLV(curPlayer, packType, index) == starLV:
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartStarLV % (packType, index), starLV)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartPlusLV % (packType, index), starLV)
#===========================================================================
# if curEquip and not curEquip.IsEmpty():
# curEquip.SetItemStarLV(starLV)
@@ -899,8 +937,9 @@
return
-## 通知公共部位强化星级
-def NotifyEquipPartStarLV(curPlayer, packType=None, index=None):
+
+## 通知公共部位强化等级
+def NotifyEquipPartPlusLV(curPlayer, packType=None, index=None):
ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartStarLVInfo()
ePartStarLVPack.Clear()
ePartStarLVPack.InfoList = []
@@ -919,7 +958,7 @@
ePartStarLV.Clear()
ePartStarLV.PackType = pType
ePartStarLV.EquipIndex = i
- ePartStarLV.EquipPartStarLV = GetEquipPartStarLV(curPlayer, pType, i)
+ ePartStarLV.EquipPartStarLV = GetEquipPartPlusLV(curPlayer, pType, i)
ePartStarLV.Proficiency = GetEquipPartProficiency(curPlayer, pType, i)
ePartStarLVPack.InfoList.append(ePartStarLV)
@@ -939,20 +978,10 @@
if not curEquip or curEquip.IsEmpty():
continue
- partStarLV = GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, i)
+ partStarLV = GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, i)
totalPlusLV += partStarLV
return totalPlusLV
-## 全身装备星数
-def GetTotalEquipStars(curPlayer):
- totalEquipStars = 0
- equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- for i in ChConfig.BaseEquipPlaceList:
- curEquip = equipPack.GetAt(i)
- if not curEquip or curEquip.IsEmpty():
- continue
- totalEquipStars += curEquip.GetItemQuality()
- return totalEquipStars
# 获取装备的强化类型
def GetEquipPlusType(curEquip):
@@ -964,6 +993,7 @@
return plusTypeDict.get(equipPlace, -1)
+
def SetEquipPartSuiteLV(curPlayer, index, suiteType, suiteLV):
#设置公共部位套装等级
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartSuiteLV % (index, suiteType), suiteLV)
@@ -971,9 +1001,11 @@
SetEquipItemSuiteLVInfo(curPlayer, index, equipPack.GetAt(index))
return
+
def GetEquipPartSuiteLV(curPlayer, index, suiteType):
#获取公共部位套装等级
return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteLV % (index, suiteType))
+
def GetEquipPartSuiteGroupType(curPlayer, equipIndex):
#获取公共部位套装组合类型
@@ -984,6 +1016,7 @@
findGroupType = int(groupType)
break
return findGroupType
+
# 获取满套装化的最低阶数,如5件套,4件5级,1件3级,则返回3
def GetEquipSuitsLVByType(curPlayer, suitType, groupType):
@@ -1027,11 +1060,12 @@
NetPackCommon.SendFakePack(curPlayer, ePartSuitePack)
return
+
def GetSuiteInfoByPlace(curPlayer, equipPlace, curEquip=None):
- suiteInfo = {} #{套装类型:等级}
+ suiteInfo = {} #{套装类型:等级}
groupType = GetEquipPartSuiteGroupType(curPlayer, equipPlace)
maxSuiteType = IpyGameDataPY.GetFuncCfg('EquipSuitColorStar', 2)
- for suiteType in range(1, maxSuiteType+1):
+ for suiteType in range(1, maxSuiteType + 1):
suiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suiteType)
if suiteLV:
if curEquip:
@@ -1040,13 +1074,14 @@
suiteInfo[suiteType] = suiteLV
return suiteInfo
+
def GetEquipPartSuiteLVList(curPlayer, equipPlace, curEquip=None):
## 部位套装等级列表
groupType = GetEquipPartSuiteGroupType(curPlayer, equipPlace)
suiteLVList = []
maxSuiteType = IpyGameDataPY.GetFuncCfg('EquipSuitColorStar', 2)
- for suiteType in xrange(1, maxSuiteType+1):
+ for suiteType in xrange(1, maxSuiteType + 1):
suiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suiteType)
if curEquip and suiteLV:
maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
@@ -1054,6 +1089,52 @@
suiteLVList.append(suiteLV)
return suiteLVList
+
+
+def SetEquipPartStar(curPlayer, equipPackindex, star):
+ #设置公共部位星数
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartStar % equipPackindex, star)
+ return
+
+
+def GetEquipPartStar(curPlayer, equipPackindex):
+ #获取公共部位星数
+ return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartStar % equipPackindex)
+
+
+## 获取公共部位生效的星数, 因装备的最高可到星数影响,用于算当前装备属性使用, 不影响全身星级
+def GetEquipPartStarByRank(curPlayer, equipPackindex, curEquip):
+ maxStarLV = ItemCommon.GetItemMaxStar(curEquip)
+ return min(GetEquipPartStar(curPlayer, equipPackindex), maxStarLV)
+
+
+## 通知公共部位星数
+def NotifyEquipPartStar(curPlayer, index=None):
+ ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartStarInfo()
+ ePartStarLVPack.Clear()
+ ePartStarLVPack.InfoList = []
+ syncIndexList = []
+ if index == None:
+ equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv')
+ for equipPlace in ChConfig.Pack_EquipPart_CanPlusStar.get(IPY_GameWorld.rptEquip, []):
+ for classlv in xrange(equipMaxClasslv):
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, equipPlace)
+ if not ipyData:
+ continue
+ syncIndexList.append(ipyData.GetGridIndex())
+ else:
+ syncIndexList = [index]
+
+ for index in syncIndexList:
+ ePartStarLV = ChPyNetSendPack.tagMCEquipPartStar()
+ ePartStarLV.Clear()
+ ePartStarLV.EquipPackIndex = index
+ ePartStarLV.Star = GetEquipPartStar(curPlayer, index)
+ ePartStarLVPack.InfoList.append(ePartStarLV)
+
+ ePartStarLVPack.Count = len(ePartStarLVPack.InfoList)
+ NetPackCommon.SendFakePack(curPlayer, ePartStarLVPack)
+ return
#// A5 03 全身属性激活 #tagCMActiveAllEquipAttr
@@ -1077,7 +1158,7 @@
return
curCnt = curPlayer.NomalDictGetProperty(key)
if activeCnt <= curCnt:
- GameWorld.Log(' 全身属性激活 该数量已激活过! activeType=%s,activeCnt=%s,curCnt=%s'%(activeType, activeCnt, curCnt))
+ GameWorld.Log(' 全身属性激活 该数量已激活过! activeType=%s,activeCnt=%s,curCnt=%s' % (activeType, activeCnt, curCnt))
return
PlayerControl.NomalDictSetProperty(curPlayer, key, activeCnt)
@@ -1093,12 +1174,13 @@
playControl.RefreshPlayerAttrState()
return
+
def SyncAllEquipAttrActiveInfo(curPlayer, activeType=-1):
## 通知全身属性激活数量
packData = ChPyNetSendPack.tagMCAllEquipAttrActiveInfo()
packData.ActiveInfo = []
for aType in [0, 1]:
- if activeType !=-1 and activeType != aType:
+ if activeType != -1 and activeType != aType:
continue
if aType == 0:
key = ChConfig.Def_PDict_EquipActiveStarLV
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
index 2f6a274..2967a4b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -190,6 +190,7 @@
def CalcZhuXianAttr(curPlayer):
+ return
## 刷新诛仙属性
playerID = curPlayer.GetPlayerID()
PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index 43935f9..c1b58b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -820,14 +820,14 @@
## 交换装备
# @param curItem 当前物品
- # @param equipPlace 装备位置
+ # @param equipPackIndex 装备背包格子
# @return True or False
# @remarks 函数详细说明.
- def SwitchEquip(self, curItem, equipPlace):
+ def SwitchEquip(self, curItem, equipPackIndex):
curPlayer = self.__Player
equipPack = self.__PlayerEquip
- curEquip = equipPack.GetAt(equipPlace)
+ curEquip = equipPack.GetAt(equipPackIndex)
#GameWorld.Log("装备位置%d"%equipPlace)
if curEquip.IsEmpty():
@@ -866,21 +866,17 @@
## 装备当前物品
# @param curItem 当前物品
- # @param packEquipIndex 客户端发来装备位置(IPY_GameWorld.retMax 代表服务器自动装备)
+ # @param equipPackIndex 客户端发来装备位置(IPY_GameWorld.retMax 代表服务器自动装备)
# @return 替换的位置 -1表示替换失败
- def EquipItem(self, curItem, packEquipIndex):
+ def EquipItem(self, curItem, equipPackIndex):
if not self.PlayerCanEquipItem(curItem, True):
return -1
equipPlace = curItem.GetEquipPlace()
- if packEquipIndex != equipPlace:
- #仙器有两个位置,其他装备检查装备位置和填表是否一致
- if equipPlace not in ChConfig.Def_FairyCanList and packEquipIndex not in ChConfig.Def_FairyCanList:
- return -1
-
+
curPlayer = self.__Player
equipPack = self.__PlayerEquip
- equipItem = equipPack.GetAt(packEquipIndex)
+ equipItem = equipPack.GetAt(equipPackIndex)
desItemID, desUserData = [0, ''] if equipItem.IsEmpty() else [equipItem.GetItemTypeID(), equipItem.GetUserData()]
srcItemID, srcUserData = curItem.GetItemTypeID(), curItem.GetUserData()
# 装备绑定处理 在 DoLogic_ItemBindType函数有处理,此处注释掉
@@ -889,20 +885,20 @@
#--其他装备物品---
#itemColor = curItem.GetItemColor()
- result = self.SwitchEquip(curItem, packEquipIndex)
+ result = self.SwitchEquip(curItem, equipPackIndex)
if result:
#穿戴某阶某品质的装备成就
PlayerSuccess.DoEquipSuccessLogic(curPlayer)
#换装宝石处理
- Operate_EquipStone.DoMoveEquipStone(curPlayer, packEquipIndex)
+ Operate_EquipStone.DoMoveEquipStone(curPlayer, equipPackIndex)
#套装降级处理
- Operate_EquipSuitCompose.CheckEquipSuitReduce(curPlayer, packEquipIndex)
+ #Operate_EquipSuitCompose.CheckEquipSuitReduce(curPlayer, packEquipIndex)
EventShell.EventRespons_EquipStar(curPlayer)
dataDict = {'dotype':'EquipItem', 'desItemID':desItemID, 'desUserData':desUserData,'srcItemID':srcItemID,'srcUserData':srcUserData}
DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
self.RefreshStartEquipCount()
- return packEquipIndex if result else -1
+ return equipPlace if result else -1
## 替换可以叠加物品逻辑
@@ -961,6 +957,7 @@
equipID = curEquip.GetItemTypeID()
userData = curEquip.GetUserData()
+ equipPlace = curEquip.GetEquipPlace()
#该物品锁定不执行==============================================
if curEquip.GetIsLocked():
PlayerControl.NotifyCode(curPlayer, "RescannotEquip")
@@ -996,7 +993,7 @@
return
self.RefreshStartEquipCount()
#套装降级处理
- Operate_EquipSuitCompose.CheckEquipSuitReduce(curPlayer, equipIndex)
+ #Operate_EquipSuitCompose.CheckEquipSuitReduce(curPlayer, equipIndex)
EventShell.EventRespons_EquipStar(curPlayer)
dataDict = {'dotype':'UnEquipItem', 'equipID':equipID, 'userData':userData}
DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
@@ -1011,7 +1008,7 @@
#
# destItemPlace.PutIn(curEquip)
#===============================================================================
- return equipID, equipIndex
+ return equipID, equipPlace
#是否能放入物品(第几个物品栏, 物品序号, 放入的物品, 放入物品ID, 物品是否绑定)
#===============================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 31ad3a8..fc54d99 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -823,7 +823,7 @@
notifyList[5] = place
suiteInfo = PlayerViewCacheTube.__GetEquipPartSuiteInfo(curPlayer)
notifyList[6] = "" if not suiteInfo else json.dumps(suiteInfo, ensure_ascii=False)
- notifyList[7] = ChEquip.GetEquipPartStarLV(curPlayer, IPY_GameWorld.rptEquip, place)
+ notifyList[7] = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, place)
# 单部位洗练信息
washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % place) + 1
@@ -1919,14 +1919,14 @@
ItemControler.Sync_VPackItem_Clear(curPlayer, packIndex, placeList)
return
-## 获取物品最高强化星级
+## 获取物品最高强化等级
# @param itemType: 物品类型
# @return 最大星级,0为不可强化
-def GetItemMaxStarLV(curItem):
+def GetItemMaxPlusLV(curItem):
equipPlace = curItem.GetEquipPlace()
plusMaxTypeDict = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelLimit", 1)
if not plusMaxTypeDict:
- GameWorld.ErrLog("GetItemMaxStarLV没有强化类型映射表")
+ GameWorld.ErrLog("GetItemMaxPlusLV没有强化类型映射表")
return 0
if equipPlace not in plusMaxTypeDict:
@@ -1946,6 +1946,17 @@
return ipyData.GetLevelMax()
+## 获取物品最高星数
+# @param itemType: 物品类型
+# @return 最大星级,0为不可强化
+def GetItemMaxStar(curItem):
+ itemColor = curItem.GetItemColor()
+ maxStarDict = IpyGameDataPY.GetFuncEvalCfg('EquipPartStar', 1)
+ if str(itemColor) not in maxStarDict:
+ return 0
+ classLV = GetItemClassLV(curItem)
+ return maxStarDict[str(itemColor)].get(str(classLV), 0)
+
## 获取物品阶级
def GetItemClassLV(curItem):
return curItem.GetLV()
@@ -1962,6 +1973,13 @@
def SetEquipGearScore(curItem, value):
return curItem.SetGearScore(value)
+def GetEquipPackIndex(curItem):
+ ## 根据物品获取对应的可装备背包位置
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', GetItemClassLV(curItem), curItem.GetEquipPlace())
+ if not ipyData:
+ return -1
+ return ipyData.GetGridIndex()
+
## 每日可使用次数
def GetCanUseCountDaily(curItem): return curItem.GetMaxAddSkillCnt()
## 每周可使用次数, 预留,暂不实现
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index d7b8b48..9313db0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -539,7 +539,8 @@
SyncPKModel(curPlayer)
#通用强化星级信息
- ChEquip.NotifyEquipPartStarLV(curPlayer)
+ ChEquip.NotifyEquipPartPlusLV(curPlayer)
+ ChEquip.NotifyEquipPartStar(curPlayer)
Operate_EquipWash.OnEquipWashLogin(curPlayer)
#通知套装信息
ChEquip.NotifyEquipPartSuiteLV(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 91184a0..0d2f74e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -5756,7 +5756,6 @@
# 通知GsmeServer;
# SendGameServerRefreshState(int inputType, int inputValue)
-# SetExAttr15 ~ 18 对应神兵类型等级,场景特效用
# 禁言 通知gameServer
def SetGMForbidenTalk(curPlayer, value):
@@ -5828,6 +5827,12 @@
GameWorld.DebugLog("更新玩家所属服务器组ID: serverGroupID=%s" % serverGroupID)
return
+##影响外观的3部位索引记录 123456789 123:武器格子索引 456:副手 789:衣服
+def GetFaceEquipIndexList(curPlayer):
+ attr15 = curPlayer.GetExAttr15()
+ return [attr15%1000, attr15/1000%1000, attr15/1000000]
+def SetFaceEquipIndex(curPlayer, value): return curPlayer.SetExAttr15(value, True, True)
+
##获得玩家威望值
def GetPrestige(curPlayer): return 0
def SetPrestige(curPlayer, value): return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
index 25a6bb7..05c26ff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
@@ -53,41 +53,12 @@
return
Sync_GodWeaponLVInfo(curPlayer)
- #老号相关神兵场景特效等级同步支持
- if curPlayer.GetExAttr15() == 0:
- playerID = curPlayer.GetPlayerID()
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- maxType = ipyDataMgr.GetGodWeaponByIndex(ipyDataMgr.GetGodWeaponCount()-1).GetType()
- for setWeaponType in xrange(1, maxType + 1):
- setLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % setWeaponType)
- if not setLV:
- continue
- SetGodWeaponLV(curPlayer, setWeaponType, setLV)
-
- giveSkillList = []
- for attrLV in xrange(1, setLV + 1):
- godWeaponData = IpyGameDataPY.GetIpyGameData('GodWeapon', setWeaponType, attrLV)
- if godWeaponData:
- giveSkillID = GodWeaponLVUP(curPlayer, godWeaponData, attrLV)
- if giveSkillID:
- giveSkillList.append(giveSkillID)
- GameWorld.Log("老号设置神兵场景等级: setWeaponType=%s,setLV=%s, giveSkillList=%s" % (setWeaponType, setLV, giveSkillList), playerID)
-
return
def SetGodWeaponLV(curPlayer, weaponType, lv):
## 设置神兵等级,同步设置场景神兵等级
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodWeaponLV % weaponType, lv)
- sceneEffectsDict = {Def_GodWeaponType_HP:[lambda curObj, value:curObj.SetExAttr15(value), ShareDefine.CDBPlayerRefresh_GodWeaponLV_1],
- Def_GodWeaponType_Atk:[lambda curObj, value:curObj.SetExAttr16(value), ShareDefine.CDBPlayerRefresh_GodWeaponLV_2],
- Def_GodWeaponType_SuperHit:[lambda curObj, value:curObj.SetExAttr17(value), ShareDefine.CDBPlayerRefresh_GodWeaponLV_3],
- Def_GodWeaponType_Def:[lambda curObj, value:curObj.SetExAttr18(value), ShareDefine.CDBPlayerRefresh_GodWeaponLV_4],
- }
- if weaponType in sceneEffectsDict:
- setFunc, notifyType = sceneEffectsDict[weaponType]
- setFunc(curPlayer, lv)
- curPlayer.SendPropertyRefresh(notifyType, lv, False)
-
+
totalLV = GetGodWeaponTotalLV(curPlayer)
# 开服活动数据
OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_GodWeaponLV, totalLV)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
index 2ac8929..1010489 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
@@ -520,7 +520,7 @@
return
tryItem = ItemControler.GetOutPutItemObj(tryItemID, 1, 1)
- if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, equipPlace, tick):
+ if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, ItemCommon.GetEquipPackIndex(tryItem), tick):
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTry, 2)
else:
curItem.clear()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index 38dc780..cccdde8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -329,7 +329,7 @@
#---执行玩家换装逻辑---
tick = GameWorld.GetGameWorld().GetTick()
- if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ShareDefine.retHorse, tick):
+ if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ItemCommon.GetEquipPackIndex(curHorse), tick):
if isRideHorse:
PlayerRideHorseUp(curPlayer, False)
@@ -377,7 +377,7 @@
PlayerRideHorseDown(curPlayer, False)
#---执行玩家换装逻辑---
- if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ShareDefine.retHorse, tick):
+ if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ItemCommon.GetEquipPackIndex(curHorse), tick):
if isRideHorse:
PlayerRideHorseUp(curPlayer, False)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
index 0c326b8..bcb1cf6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -468,9 +468,9 @@
break
if cnt:
break
- elif curType == 3:
- #全身装备X星
- cnt = ChEquip.GetTotalEquipStars(curPlayer)
+# elif curType == 3:
+# #全身装备X星
+# cnt = ChEquip.GetTotalEquipStars(curPlayer)
elif curType == 4:
#X阶普通、强化套装
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index a531409..8debe53 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1132,7 +1132,7 @@
return True
equipID = result[0]
equipPlace = result[1]
- if equipPlace == ShareDefine.retGuard:
+ if equipPlace in [ShareDefine.retGuard1, ShareDefine.retGuard2]:
PlayerControl.NotifyCode(curPlayer, 'Guardian_Timeout', [equipID, spaceIndex])
elif equipPlace == ShareDefine.retWing:
PlayerControl.NotifyCode(curPlayer, 'WingTiyan_Timeout')
@@ -1146,8 +1146,8 @@
PlayerGoldGift.FirstGoldTryItemOutTime(curPlayer)
# 广播卸装
- if equipIndex in ChConfig.Def_SyncEquipStateByIndex:
- curPlayer.Sync_UnEquipItem(equipID, equipPlace)
+ if equipPlace in ChConfig.Def_SyncEquipStateByIndex:
+ curPlayer.Sync_UnEquipItem(equipID, equipIndex)
return True
#---------------------------------------------------------------------
##全局定时器调用, 刷新玩家状态
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
index ed6e2f4..12d9664 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -321,7 +321,7 @@
ResetSuccessByType(curPlayer, succType)
for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
for i in indexList:
- equipPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i)
+ equipPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, pType, i)
for pluslv in xrange(1, equipPartStarLV+1):
DoAddSuccessProgress(curPlayer, succType, 1, [pluslv])
@@ -563,7 +563,7 @@
itemQuality = curEquip.GetItemQuality()
classLV = ItemCommon.GetItemClassLV(curEquip)
- if equipIndex not in [ShareDefine.retWing,ShareDefine.retGuard,ShareDefine.retHorse]:
+ if equipIndex not in [ShareDefine.retWing,ShareDefine.retGuard1,ShareDefine.retGuard2,ShareDefine.retHorse]:
DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipColorItem, 1, [classLV, itemColor])
if equipIndex in ChConfig.BaseEquipPlace_Weapon:
DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipWeapon, 1, [itemColor, itemQuality, classLV])
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTJG.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTJG.py
index 32d3417..6b14a22 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTJG.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTJG.py
@@ -104,57 +104,58 @@
# 切换守护
def ChangeGuard(curPlayer, tick):
- # 检查过背包中无守护则不再执行
- if curPlayer.GetDictByKey("AutoCGuardID") == 1:
- return
-
- curGuardID = 0 # 装备的守护ID
- itemIDList = IpyGameDataPY.GetFuncEvalCfg('AutoUseGuardian', 1)
- guardItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip).GetAt(ShareDefine.retGuard)
- # 1。 守护存在,判断是否最优先守护
- if ItemCommon.CheckItemCanUse(guardItem) and ItemCommon.CheckItemCanUseByExpireTime(guardItem):
- curGuardID = guardItem.GetItemTypeID()
- if curGuardID == itemIDList[0]:
- # 最高优先级
- return
- if curPlayer.GetDictByKey("AutoCGuardID") == 2:
- # 当前背包最高
- return
-
-
- findItemList = []
- curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-
- # 找到背包中优先级最高的守护物品
- for i in range(0, curPack.GetCount()):
- item = curPack.GetAt(i)
-
- if not ItemCommon.CheckItemCanUse(item):
- continue
-
- if item.GetItemTypeID() not in itemIDList:
- continue
-
- if not ItemCommon.CheckItemCanUseByExpireTime(item):
- # 背包有不过期的物品
- continue
-
- findItemList.append(item)
-
- if not findItemList:
- curPlayer.SetDict("AutoCGuardID", 1) # 设置无可替换的标志
- return
-
- findItemList.sort(cmp=SortGuard)
- if curGuardID in itemIDList and itemIDList.index(curGuardID) <= itemIDList.index(findItemList[0].GetItemTypeID()):
- # 当前装备最高,减少遍历
- curPlayer.SetDict("AutoCGuardID", 2)
- return
-
-
- #---执行玩家换装逻辑---
- ChEquip.DoPlayerEquipItem(curPlayer, findItemList[0], ShareDefine.retGuard, tick)
- curPlayer.SetDict("AutoCGuardID", 0)
+ return #新版本不需要切换
+# # 检查过背包中无守护则不再执行
+# if curPlayer.GetDictByKey("AutoCGuardID") == 1:
+# return
+#
+# curGuardID = 0 # 装备的守护ID
+# itemIDList = IpyGameDataPY.GetFuncEvalCfg('AutoUseGuardian', 1)
+# guardItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip).GetAt(ShareDefine.retGuard1)
+# # 1。 守护存在,判断是否最优先守护
+# if ItemCommon.CheckItemCanUse(guardItem) and ItemCommon.CheckItemCanUseByExpireTime(guardItem):
+# curGuardID = guardItem.GetItemTypeID()
+# if curGuardID == itemIDList[0]:
+# # 最高优先级
+# return
+# if curPlayer.GetDictByKey("AutoCGuardID") == 2:
+# # 当前背包最高
+# return
+#
+#
+# findItemList = []
+# curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+#
+# # 找到背包中优先级最高的守护物品
+# for i in range(0, curPack.GetCount()):
+# item = curPack.GetAt(i)
+#
+# if not ItemCommon.CheckItemCanUse(item):
+# continue
+#
+# if item.GetItemTypeID() not in itemIDList:
+# continue
+#
+# if not ItemCommon.CheckItemCanUseByExpireTime(item):
+# # 背包有不过期的物品
+# continue
+#
+# findItemList.append(item)
+#
+# if not findItemList:
+# curPlayer.SetDict("AutoCGuardID", 1) # 设置无可替换的标志
+# return
+#
+# findItemList.sort(cmp=SortGuard)
+# if curGuardID in itemIDList and itemIDList.index(curGuardID) <= itemIDList.index(findItemList[0].GetItemTypeID()):
+# # 当前装备最高,减少遍历
+# curPlayer.SetDict("AutoCGuardID", 2)
+# return
+#
+#
+# #---执行玩家换装逻辑---
+# ChEquip.DoPlayerEquipItem(curPlayer, findItemList[0], ItemCommon.GetEquipPackIndex(findItemList[0]), tick)
+# curPlayer.SetDict("AutoCGuardID", 0)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
index bb88c0b..f0761e5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
@@ -142,7 +142,7 @@
#翅膀信息在翅膀装备位对应装备信息
#部位强化数据
- curPlayerPlusDict["EquipPartStarLV"] = __GetEquipPartStarLVInfo(curPlayer)
+ curPlayerPlusDict["EquipPartStarLV"] = __GetEquipPartPlusLVInfo(curPlayer)
#部位宝石数据
curPlayerPlusDict["EquipPartStone"] = __GetEquipPartStoneInfo(curPlayer)
@@ -182,13 +182,13 @@
dataDict.pop(key)
return dataDict
-## 公共部位强化星级信息{部位索引:星级, ...}
-def __GetEquipPartStarLVInfo(curPlayer):
+## 公共部位强化星级信息{部位索引:强化等级, ...}
+def __GetEquipPartPlusLVInfo(curPlayer):
pType = IPY_GameWorld.rptEquip # 暂时只取装备背包,之后有扩展再修改
indexList = ChConfig.Pack_EquipPart_CanPlusStar[pType]
starLVInfoDict = {}
for i in indexList:
- starLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i)
+ starLV = ChEquip.GetEquipPartPlusLV(curPlayer, pType, i)
if starLV:
starLVInfoDict[i] = starLV
return starLVInfoDict
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 5e81214..c84ca76 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -306,7 +306,7 @@
Def_mitProduceResult, # 生产采集结果回应
Def_mitPetEquipMerge, # 宠物装备合成回应
Def_mitEquipInherit, # 装备继承
- Def_mitEquipPlus, # 装备加强
+ Def_mitEquipStarUp, # 装备升星
Def_mitEquipMayaPlus, # 装备玛雅加强
Def_mitEquipAddAttr, # 装备追加
Def_mitEquipSlotting, # 装备打孔
@@ -658,8 +658,7 @@
# 3 紫色
# 4 橙色
# 5 红色
-# 6 粉色
-#===============================================================================
+# 6 粉色#===============================================================================
Def_Item_Color_White = 1 #白
Def_Item_Color_Blue = 2 #蓝
Def_Item_Color_Purple = 3 #紫
@@ -1732,32 +1731,34 @@
# 手游不使用C++定义 enum RoleEquipType
# 装备位定义
RoleEquipType = (
- retWeapon, #1 主手
- retWeapon2, #2 副手
- retHat, #3 帽子
- retClothes, #4 衣服
- retBelt, #5 腰带
- retTrousers, #6 裤子
- retShoes, #7 鞋子
- retNeck, #8 项链
- retFairyCan, #9 仙器
- retFairyCan2, #10 仙器
- retWing, #11 翅膀
- retGuard, #12 守护
- retBaldric1, #13 佩饰
- retBaldric2, #14 佩饰
- retBaldric3, #15 佩饰
- retBaldric4, #16 佩饰
- retBaldric5, #17 佩饰
- retBaldric6, #18 佩饰
- retHorse, #19 坐骑
- retWeaponSkin, #20 时装武器
- retClothesSkin, #21 时装衣服
- retWeapon2Skin, #22 时装副手
+ retWeapon, #1 主手
+ retWeapon2, #2 副手
+ retHat, #3 帽子
+ retClothes, #4 衣服
+ retBelt, #5 腰带
+ retTrousers, #6 裤子
+ retShoes, #7 鞋子
+ retGlove, #8 手套
+ retNeck, #9 项链
+ retFairyCan, #10 仙器1
+ retFairyCan2, #11 仙器2
+ retJade, #12 玉佩
+ retWing, #13 翅膀
+ retGuard1, #14 守护1
+ retGuard2, #15 守护2
+ retPeerlessWeapon, #16 绝世武器
+ retPeerlessWeapon2, #17 绝世副手
+ retXXX18, #18 暂无
+ retHorse, #19 坐骑
+ retWeaponSkin, #20 时装武器
+ retClothesSkin, #21 时装衣服
+ retWeapon2Skin, #22 时装副手
retMax,
) = range(1, 24)
+
+
# 神兽装备位定义
DogzEquipPlace = (
dogzetHorn, # 神兽兽角
--
Gitblit v1.8.0