From fe645e03c09fce1624ff7354beaed01375f1453c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 19 九月 2018 17:53:44 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py | 3 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 10 +++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py | 28 +++++++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 10 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py | 2
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 10 +++++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1
8 files changed, 49 insertions(+), 16 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index ff5f5b4..8213deb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -8270,6 +8270,7 @@
EquipIndex = 0 #(BYTE EquipIndex)//神兽装备背包中索引
IndexCount = 0 #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
IndexList = list() #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
+ IndexUseCountList = list() #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
IsDouble = 0 #(BYTE IsDouble)//是否双倍强化
data = None
@@ -8287,6 +8288,9 @@
for i in range(self.IndexCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.IndexList.append(value)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.IndexUseCountList.append(value)
self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
@@ -8298,6 +8302,7 @@
self.EquipIndex = 0
self.IndexCount = 0
self.IndexList = list()
+ self.IndexUseCountList = list()
self.IsDouble = 0
return
@@ -8307,6 +8312,7 @@
length += 1
length += 1
length += 1 * self.IndexCount
+ length += 4 * self.IndexCount
length += 1
return length
@@ -8318,6 +8324,8 @@
data = CommFunc.WriteBYTE(data, self.IndexCount)
for i in range(self.IndexCount):
data = CommFunc.WriteBYTE(data, self.IndexList[i])
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
data = CommFunc.WriteBYTE(data, self.IsDouble)
return data
@@ -8327,6 +8335,7 @@
EquipIndex:%d,
IndexCount:%d,
IndexList:%s,
+ IndexUseCountList:%s,
IsDouble:%d
'''\
%(
@@ -8334,6 +8343,7 @@
self.EquipIndex,
self.IndexCount,
"...",
+ "...",
self.IsDouble
)
return DumpString
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index c73e566..4887c3b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1232,6 +1232,7 @@
Def_IudetCreateItemLoginDay = 34 # 创建物品时的登录天数
Def_IudetLastOpenItemLoginDay = 36 # 上一次开启物品时的登录天数
Def_IudetRuneLV = 38 # 符印等级
+Def_IudetRuneSource = 40 # 符印来源 老号0,默认1,合成2(主要用来区分是否合成获得)
Def_IudetWingProgressValue = 42 #羽翼精炼值
Def_IudetCreateTime = 44 # 时效物品的创建时间
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index ff5f5b4..8213deb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -8270,6 +8270,7 @@
EquipIndex = 0 #(BYTE EquipIndex)//神兽装备背包中索引
IndexCount = 0 #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
IndexList = list() #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
+ IndexUseCountList = list() #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
IsDouble = 0 #(BYTE IsDouble)//是否双倍强化
data = None
@@ -8287,6 +8288,9 @@
for i in range(self.IndexCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.IndexList.append(value)
+ for i in range(self.IndexCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.IndexUseCountList.append(value)
self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
@@ -8298,6 +8302,7 @@
self.EquipIndex = 0
self.IndexCount = 0
self.IndexList = list()
+ self.IndexUseCountList = list()
self.IsDouble = 0
return
@@ -8307,6 +8312,7 @@
length += 1
length += 1
length += 1 * self.IndexCount
+ length += 4 * self.IndexCount
length += 1
return length
@@ -8318,6 +8324,8 @@
data = CommFunc.WriteBYTE(data, self.IndexCount)
for i in range(self.IndexCount):
data = CommFunc.WriteBYTE(data, self.IndexList[i])
+ for i in range(self.IndexCount):
+ data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
data = CommFunc.WriteBYTE(data, self.IsDouble)
return data
@@ -8327,6 +8335,7 @@
EquipIndex:%d,
IndexCount:%d,
IndexList:%s,
+ IndexUseCountList:%s,
IsDouble:%d
'''\
%(
@@ -8334,6 +8343,7 @@
self.EquipIndex,
self.IndexCount,
"...",
+ "...",
self.IsDouble
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
index 1364ae6..19a889f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
@@ -100,7 +100,7 @@
Def_Mission_Type_Main = 0 # 主线剧情
Def_Mission_Type_MainHid = 120 # 隐藏主线剧情
-Def_GM_Active_Mission_Type = 20
+Def_GM_Active_Mission_Type = 999 #暂时不用,配大点
Def_Mission_Type_RunDaily = 7
Def_Mission_Type_RunFamily = 12
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 2742f25..a6dd710 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1017,7 +1017,8 @@
eventName, isForceEvent, addDict = event
isNeedRecord = isForceEvent or ItemNeedRecord(tagItem)
if packIndex == ShareDefine.rptRune:
- setItemKeyData = GetRuneItemKeyData(tagItem.GetItemTypeID(), tagItem.GetUserAttr(ShareDefine.Def_IudetRuneLV))
+ runeSource = tagItem.GetUserAttr(ShareDefine.Def_IudetRuneSource) or 1
+ setItemKeyData = GetRuneItemKeyData(tagItem.GetItemTypeID(), tagItem.GetUserAttr(ShareDefine.Def_IudetRuneLV), source=runeSource)
refreshPlaceList = []
for place in xrange(ItemCommon.GetVPackCnt(packIndex)):
@@ -1297,13 +1298,14 @@
return True, itemIndex
#==============================================================================
-# 符印物品存储字典数值数据结构: 前5位为物品ID, 6~8位为强化等级, 第10位为是否锁定
-def GetRuneItemKeyData(itemID, RuneLV, lockState=0):
+# 符印物品存储字典数值数据结构: 前5位为物品ID, 6~8位为强化等级, 第9位为来源(老号0,默认1,合成2),第10位为是否锁定
+def GetRuneItemKeyData(itemID, RuneLV, lockState=0, source=1):
lockState = 1 if lockState > 0 else 0
- return lockState * 1000000000 + min(RuneLV, 999) * 100000 + itemID
+ return lockState * 1000000000 + source * 100000000 + min(RuneLV, 999) * 100000 + itemID
def GetRuneItemID(keyData): return keyData % 100000
def GetRuneItemPlusLV(keyData): return keyData % 100000000 / 100000
def GetRuneItemIsLock(keyData): return keyData / 1000000000
+def GetRuneItemSource(keyData): return keyData % 1000000000 / 100000000
def IsRuneItemNeedRecord(curItem, plusLV):
return plusLV > 0 or curItem.GetItemColor() >= ChConfig.Def_Quality_Orange
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
index ccb1d2d..5620200 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -314,6 +314,7 @@
# BYTE EquipIndex; //神兽装备背包中索引
# BYTE IndexCount; //材料所在神兽物品背包索引的数量
# BYTE IndexList[IndexCount]; //材料所在神兽物品背包索引列表
+# BYTE IndexUseCountList[IndexCount]; //材料所在神兽物品背包索引对应使用个数列表
# BYTE IsDouble; //是否双倍强化
#};
def OnDogzEquipPlus(index, clientData, tick):
@@ -321,8 +322,14 @@
playerID = curPlayer.GetPlayerID()
equipIndex = clientData.EquipIndex
indexList = clientData.IndexList
+ indexUseCountList = clientData.IndexUseCountList
isDouble = clientData.IsDouble
- GameWorld.DebugLog("神兽装备强化: equipIndex=%s,indexList=%s,isDouble=%s" % (equipIndex, indexList, isDouble), playerID)
+ GameWorld.DebugLog("神兽装备强化: equipIndex=%s,indexList=%s,indexUseCountList=%s,isDouble=%s"
+ % (equipIndex, indexList, indexUseCountList, isDouble), playerID)
+
+ if len(indexList) != len(indexUseCountList):
+ GameWorld.DebugLog(" 指定消耗的个数数据长度错误!")
+ return
dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
curEquip = dogzEquipPack.GetAt(equipIndex)
@@ -370,24 +377,25 @@
GameWorld.ErrLog("神兽背包物品无经验效果,无法强化!i=%s,itemID=%s" % (i, curItem.GetItemTypeID()), playerID)
return
+ delCount = max(1, min(curItem.GetCount(), indexUseCountList[i]))
baseExp = effect.GetEffectValue(0)
doubleCostGold = effect.GetEffectValue(1)
- addExp = baseExp
+ addExp = baseExp * delCount
plusInfoCount = curItem.GetUserAttrCount(ShareDefine.Def_IudetDogzEquipPlus)
if not plusInfoCount:
if isDouble and doubleCostGold:
- addExp = (baseExp * 2)
- costGoldTotal += doubleCostGold
- GameWorld.DebugLog(" 强化: addExp=%s,baseExp=%s,isDouble=%s,doubleCostGold=%s,costGoldTotal=%s"
- % (addExp, baseExp, isDouble, doubleCostGold, costGoldTotal), playerID)
+ addExp = (baseExp * 2 * delCount)
+ costGoldTotal += doubleCostGold * delCount
+ GameWorld.DebugLog(" 强化: addExp=%s,delCount=%s,baseExp=%s,isDouble=%s,doubleCostGold=%s,costGoldTotal=%s"
+ % (addExp, delCount, baseExp, isDouble, doubleCostGold, costGoldTotal), playerID)
else:
#plusLV = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
plusExpTotal = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 1)
addExp += plusExpTotal
- GameWorld.DebugLog(" 强化: addExp=%s,baseExp=%s,plusExpTotal=%s" % (addExp, baseExp, plusExpTotal), playerID)
+ GameWorld.DebugLog(" 强化: addExp=%s,delCount=%s,baseExp=%s,plusExpTotal=%s" % (addExp, delCount, baseExp, plusExpTotal), playerID)
addExpTotal += addExp
- delItemList.append(curItem)
+ delItemList.append([curItem, delCount])
if not delItemList:
GameWorld.DebugLog(" 没有材料可强化!", playerID)
@@ -401,8 +409,8 @@
ChConfig.Def_Cost_DogzEquipPlus, infoDict):
return
- for delItem in delItemList:
- ItemCommon.DelItem(curPlayer, delItem, curItem.GetCount(), False, ChConfig.ItemDel_DogzEquipPlus, infoDict)
+ for delItem, delCount in delItemList:
+ ItemCommon.DelItem(curPlayer, delItem, delCount, False, ChConfig.ItemDel_DogzEquipPlus, infoDict)
updPlusLV = curPlusLV
doCount, maxDoCount = 0, maxPlusLV * 2
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
index 06b876f..c6acf5e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
@@ -422,7 +422,7 @@
decompose += decompose * addPer / ShareDefine.Def_MaxRateValue
ipyData = IpyGameDataPY.GetIpyGameDataNotLog('RuneCompound', RuneItemID)
- if ipyData:
+ if ipyData and ItemControler.GetRuneItemSource(RuneData) in [0,2]:
totalMJ += ipyData.GetNeedMJ()
@@ -568,6 +568,7 @@
#给新物品
curItem = ItemControler.GetOutPutItemObj(tagItemID)
curItem.SetUserAttr(ShareDefine.Def_IudetRuneLV, tagItemLV)
+ curItem.SetUserAttr(ShareDefine.Def_IudetRuneSource, 2)
PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
PlayerItemControler.PutInItem(ShareDefine.rptRune, curItem, event=[ChConfig.ItemGive_RuneCompound, False, {}])
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index c73e566..4887c3b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1232,6 +1232,7 @@
Def_IudetCreateItemLoginDay = 34 # 创建物品时的登录天数
Def_IudetLastOpenItemLoginDay = 36 # 上一次开启物品时的登录天数
Def_IudetRuneLV = 38 # 符印等级
+Def_IudetRuneSource = 40 # 符印来源 老号0,默认1,合成2(主要用来区分是否合成获得)
Def_IudetWingProgressValue = 42 #羽翼精炼值
Def_IudetCreateTime = 44 # 时效物品的创建时间
--
Gitblit v1.8.0