From 69dc81f34df6887f26cbde4fad3fab687573f5b7 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 28 五月 2019 14:55:29 +0800
Subject: [PATCH] 6965 【2.0】【后端】炼丹功能精简优化
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py | 46 +++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 48 +++++----
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 184 ++++++++++++++++++------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 4
4 files changed, 149 insertions(+), 133 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 7d7bafe..a218635 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
Head = tagHead()
Type = 0 #(BYTE Type)//类型
Count = 0 #(WORD Count)//数量
- UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
+ UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
data = None
def __init__(self):
@@ -1133,7 +1133,7 @@
FamilyID = 0 #(DWORD FamilyID)//家族ID
ActionType = 0 #(BYTE ActionType)//类型
Count = 0 #(WORD Count)//数量
- FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
+ FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
data = None
def __init__(self):
@@ -2981,8 +2981,8 @@
IsAlive = 0 #(BYTE IsAlive)// 是否存活
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
+ RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -3376,8 +3376,8 @@
class tagGCNotifyEquipClassEquip(Structure):
_pack_ = 1
_fields_ = [
- ("ItemID", c_int),
- ("Star", c_ubyte),
+ ("ItemID", c_int),
+ ("Star", c_ubyte),
]
def __init__(self):
@@ -3635,7 +3635,7 @@
OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名
ID = 0 #(DWORD ID)
ID2 = 0 #(DWORD ID2)
- Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
+ Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
Name2 = "" #(char Name2[33])//名字2
Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
Value1 = 0 #(DWORD Value1)//排序依赖的值,比如,等级
@@ -3947,7 +3947,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -4188,7 +4188,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -5629,7 +5629,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("StartTime", c_int),
+ ("StartTime", c_int),
]
def __init__(self):
@@ -5738,7 +5738,7 @@
class tagFamilyArrestOverStateInfo(Structure):
Head = tagHead()
Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
+ ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
data = None
def __init__(self):
@@ -5888,7 +5888,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("GroupType", c_ubyte), # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("SortValue", c_int), #最近联系人和仇人按时间排序
]
@@ -6054,7 +6054,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("GroupType", c_ubyte), # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
]
def __init__(self):
@@ -6249,8 +6249,8 @@
class tagGCGroupPlayer(Structure):
_pack_ = 1
_fields_ = [
- ("PlayerID", c_int),
- ("SortValue", c_int),
+ ("PlayerID", c_int),
+ ("SortValue", c_int),
]
def __init__(self):
@@ -6430,7 +6430,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("OnlineType", c_ubyte), #0不在线 1在线 2脱机在线
]
@@ -6486,9 +6486,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
- ("Value", c_int),
+ ("PlayerID", c_int),
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("Value", c_int),
]
def __init__(self):
@@ -6543,7 +6543,7 @@
class tagGCVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
SrcNameLen = 0 #(BYTE SrcNameLen)
SrcName = "" #(String SrcName)//size = SrcNameLen
PlayerID = 0 #(DWORD PlayerID)
@@ -8059,7 +8059,7 @@
ItemGUID = "" #(char ItemGUID[40])
AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
AddTime = "" #(char AddTime[19])//上架时间
- BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
data = None
@@ -9003,7 +9003,7 @@
class tagGCTeamMemPrepareState(Structure):
_pack_ = 1
_fields_ = [
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("PrepareState", c_ubyte), # 状态,0-未准备,1-已准备,2-拒绝
]
@@ -9469,9 +9469,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("RefreshType", c_ubyte), #刷新类型,同0418属性类型
- ("Value", c_int),
+ ("Value", c_int),
]
def __init__(self):
@@ -9741,8 +9741,8 @@
class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 赛区ID
- SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
Count = 0 #(WORD Count)
PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
@@ -10519,7 +10519,7 @@
class tagMCCoinToGoldCount(Structure):
_pack_ = 1
_fields_ = [
- ("RecordID", c_ubyte),
+ ("RecordID", c_ubyte),
("TodayPayCount", c_ushort), # 今日已购买次数
("TotalPayCount", c_int), # 累计总购买次数
]
@@ -10755,7 +10755,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -11748,7 +11748,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MapID", c_ushort),
+ ("MapID", c_ushort),
("FuncLineID", c_ushort), #功能线路ID
]
@@ -11804,7 +11804,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MapID", c_int),
+ ("MapID", c_int),
("FuncLineID", c_ushort), #功能线路ID
]
@@ -11912,7 +11912,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Mode", c_ubyte),
+ ("Mode", c_ubyte),
]
def __init__(self):
@@ -12209,7 +12209,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("LockState", c_ubyte),
+ ("LockState", c_ubyte),
]
def __init__(self):
@@ -12573,7 +12573,8 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
- ("AddItemCnt", c_int), #增幅丹使用个数
+ ("ItemAddCnt", c_int), #增幅丹增加上限
+ ("ItemBreakCnt", c_int), #增幅丹突破次数
]
def __init__(self):
@@ -12588,7 +12589,8 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
- self.AddItemCnt = 0
+ self.ItemAddCnt = 0
+ self.ItemBreakCnt = 0
return
def GetLength(self):
@@ -12601,12 +12603,14 @@
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
EatCnt:%d,
- AddItemCnt:%d
+ ItemAddCnt:%d,
+ ItemBreakCnt:%d
'''\
%(
self.ItemID,
self.EatCnt,
- self.AddItemCnt
+ self.ItemAddCnt,
+ self.ItemBreakCnt
)
return DumpString
@@ -13573,7 +13577,7 @@
Seting = 0 #(DWORD Seting)// 操作数据记录
DecomposeCnt = 0 #(BYTE DecomposeCnt)// 分解件数进度
GetItemLen = 0 #(WORD GetItemLen)
- GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
+ GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
data = None
def __init__(self):
@@ -13661,8 +13665,8 @@
class tagMCEquipPartStar(Structure):
_pack_ = 1
_fields_ = [
- ("EquipPackIndex", c_ushort),
- ("Star", c_ubyte),
+ ("EquipPackIndex", c_ushort),
+ ("Star", c_ubyte),
]
def __init__(self):
@@ -13806,7 +13810,7 @@
class tagMCEquipPartXLAttr(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -13941,7 +13945,7 @@
class tagMCFairyAdventuresData(Structure):
_pack_ = 1
_fields_ = [
- ("EventID", c_ubyte),
+ ("EventID", c_ubyte),
("Gear", c_ubyte), #第几档
("Condition", c_int), #条件
]
@@ -14342,7 +14346,7 @@
class tagMCFBEncourageInfo(Structure):
Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//
+ Cnt = 0 #(BYTE Cnt)//
InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
data = None
@@ -15132,7 +15136,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Cnt", c_int),
+ ("Cnt", c_int),
]
def __init__(self):
@@ -15182,9 +15186,9 @@
class tagMCMagicWeaponInfo(Structure):
_pack_ = 1
_fields_ = [
- ("MWID", c_int),
- ("LV", c_ubyte),
- ("Exp", c_int),
+ ("MWID", c_int),
+ ("LV", c_ubyte),
+ ("Exp", c_int),
("FBPassLV", c_ubyte), #副本关卡
("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝)
]
@@ -15422,11 +15426,11 @@
class tagMCEquipPartPlusLV(Structure):
_pack_ = 1
_fields_ = [
- ("PackType", c_ubyte),
- ("EquipIndex", c_ubyte),
- ("EquipPartStarLV", c_ushort),
- ("Proficiency", c_int),
- ("EvolveLV", c_ubyte),
+ ("PackType", c_ubyte),
+ ("EquipIndex", c_ubyte),
+ ("EquipPartStarLV", c_ushort),
+ ("Proficiency", c_int),
+ ("EvolveLV", c_ubyte),
]
def __init__(self):
@@ -15721,7 +15725,7 @@
class tagMCNPCAttackCount(Structure):
_pack_ = 1
_fields_ = [
- ("NPCID", c_int),
+ ("NPCID", c_int),
("AttackCount", c_ubyte), #已攻击次数
]
@@ -16013,7 +16017,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -16266,8 +16270,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PrizeItem", c_int),
- ("ItemCount", c_ubyte),
+ ("PrizeItem", c_int),
+ ("ItemCount", c_ubyte),
]
def __init__(self):
@@ -16313,7 +16317,7 @@
class tagMCPlayerOnlinePrizeInfo(Structure):
Head = tagHead()
RemaindTime = 0 #(DWORD RemaindTime)//产生奖励剩余时间
- HasPrize = 0 #(BYTE HasPrize)//是否可以领取
+ HasPrize = 0 #(BYTE HasPrize)//是否可以领取
PrizeType = 0 #(BYTE PrizeType)//在线奖励类型
PrizeCnt = 0 #(BYTE PrizeCnt)//在线奖励类型
PrizeInfo = list() #(vector<tagMCOnlinePrizeItem> PrizeInfo)//在线奖励类型
@@ -16460,7 +16464,7 @@
_pack_ = 1
_fields_ = [
("AlchemyID", c_int), # 丹 ID
- ("StartTime", c_int), # 开始炼的时间
+ ("StartTime", c_int), # 开始炼的时间
]
def __init__(self):
@@ -17139,7 +17143,7 @@
# A3 BC 通知装备位孔位宝石ID #tagMCStoneInfo
class tagMCStoneMsg(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
MaxStoneCount = 0 #(BYTE MaxStoneCount)// 最大孔数
StoneInfo = list() #(vector<DWORD> StoneInfo)// 孔内宝石信息
StoneBind = list() #(vector<BYTE> StoneBind)// 孔内宝石是否绑定
@@ -18127,8 +18131,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PassLV", c_int),
- ("YesterDayPassLV", c_int),
+ ("PassLV", c_int),
+ ("YesterDayPassLV", c_int),
]
def __init__(self):
@@ -19110,7 +19114,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Exp", c_int), # 当前VIP等级经验
- ("VIPLV", c_int), #vip等级
+ ("VIPLV", c_int), #vip等级
]
def __init__(self):
@@ -19436,8 +19440,8 @@
class tagMCCollectAwardItem(Structure):
_pack_ = 1
_fields_ = [
- ("ItemID", c_int),
- ("Count", c_ubyte),
+ ("ItemID", c_int),
+ ("Count", c_ubyte),
("IsAuctionItem", c_ubyte), #是否拍品
]
@@ -19555,11 +19559,11 @@
class tagMCDynamicBarrier(Structure):
_pack_ = 1
_fields_ = [
- ("APosX", c_ushort),
- ("APosY", c_ushort),
- ("BPosX", c_ushort),
- ("BPosY", c_ushort),
- ("Angle", c_ushort),
+ ("APosX", c_ushort),
+ ("APosY", c_ushort),
+ ("BPosX", c_ushort),
+ ("BPosY", c_ushort),
+ ("Angle", c_ushort),
]
def __init__(self):
@@ -20162,8 +20166,8 @@
class tagMCNPCCntInfo(Structure):
_pack_ = 1
_fields_ = [
- ("NPCID", c_int),
- ("Cnt", c_int),
+ ("NPCID", c_int),
+ ("Cnt", c_int),
]
def __init__(self):
@@ -20337,13 +20341,13 @@
class tagMCNPCInfo(Structure):
_pack_ = 1
_fields_ = [
- ("ObjID", c_int),
- ("NPCID", c_int),
- ("NPCHP", c_int),
- ("MaxHP", c_int),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ("NPCHP", c_int),
+ ("MaxHP", c_int),
("IsActive", c_ubyte), #这个NPC是否活着
- ("PosX", c_ushort),
- ("PosY", c_ushort),
+ ("PosX", c_ushort),
+ ("PosY", c_ushort),
("RefreshSecond", c_int), # 剩余多少秒刷新
]
@@ -20485,9 +20489,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("NPCID", c_int),
- ("PosX", c_ushort),
- ("PosY", c_ushort),
+ ("NPCID", c_int),
+ ("PosX", c_ushort),
+ ("PosY", c_ushort),
]
def __init__(self):
@@ -20545,7 +20549,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("NPCID", c_int),
+ ("NPCID", c_int),
]
def __init__(self):
@@ -20597,7 +20601,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
EquipClassLV = 0 #(BYTE EquipClassLV)
ItemDataSize = 0 #(WORD ItemDataSize)
- ItemData = "" #(String ItemData)//物品记录
+ ItemData = "" #(String ItemData)//物品记录
data = None
def __init__(self):
@@ -20779,9 +20783,9 @@
class tagMCRunTaskAwardRecord(Structure):
_pack_ = 1
_fields_ = [
- ("Type", c_ubyte),
- ("Num", c_int),
- ("AwardState", c_ubyte),
+ ("Type", c_ubyte),
+ ("Num", c_int),
+ ("AwardState", c_ubyte),
]
def __init__(self):
@@ -20896,7 +20900,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -20992,7 +20996,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("GuideID", c_ushort),
+ ("GuideID", c_ushort),
]
def __init__(self):
@@ -21042,8 +21046,8 @@
class tagRefreshType(Structure):
_pack_ = 1
_fields_ = [
- ("RefreshType", c_ubyte),
- ("Value", c_int),
+ ("RefreshType", c_ubyte),
+ ("Value", c_int),
]
def __init__(self):
@@ -21231,7 +21235,7 @@
class tagMCItemDayUseCnt(Structure):
_pack_ = 1
_fields_ = [
- ("ItemID", c_int),
+ ("ItemID", c_int),
("UseCnt", c_ushort), # 今日已使用次数
]
@@ -21341,7 +21345,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 6d279e2..ef37236 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3510,8 +3510,8 @@
Def_PDict_AddPointValue = "AddPointValue_%s" # 已加属性点数, 参数(属性ID)
Def_PDict_AttrFruitEatCnt = "AttrFruitEatCnt_%s" # 已吃属性果实个数,参数为物品id
Def_PDict_AttrFruitAddValue = "AttrFruitAddValue_%s" # 已吃属性果实增加的属性,参数为物品id
-Def_PDict_AttrFruitAddItemCnt = "FruitAddItemCnt_%s" # 已吃增幅丹个数,参数为果实物品id
-
+Def_PDict_AttrFruitAddItemCnt = "FruitAddItemCnt_%s" # 增幅丹增加上限数,参数为果实物品id
+Def_PDict_AttrFruitItemBreakCnt = "FruitItemBreakCnt_%s" # 增幅丹突破次数,参数为果实物品id
Def_PDict_NobleLV = "NobleLV" # 贵族等级, 0位为不同贵族模式版本切换标记位, 从1位开始表示每种等级贵族开通情况, 1-已开通过;9-永久
Def_PDict_NobleEndTime = "NobleEndTime_%s" # 贵族到期结束时间<单位s>, 参数为贵族等级, 从1开始
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 7d7bafe..f3daa2e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
Head = tagHead()
Type = 0 #(BYTE Type)//类型
Count = 0 #(WORD Count)//数量
- UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
+ UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
data = None
def __init__(self):
@@ -1133,7 +1133,7 @@
FamilyID = 0 #(DWORD FamilyID)//家族ID
ActionType = 0 #(BYTE ActionType)//类型
Count = 0 #(WORD Count)//数量
- FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
+ FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
data = None
def __init__(self):
@@ -2981,8 +2981,8 @@
IsAlive = 0 #(BYTE IsAlive)// 是否存活
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
+ RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -3947,7 +3947,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -4188,7 +4188,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -5738,7 +5738,7 @@
class tagFamilyArrestOverStateInfo(Structure):
Head = tagHead()
Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
+ ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
data = None
def __init__(self):
@@ -6487,7 +6487,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
("Value", c_int),
]
@@ -6543,7 +6543,7 @@
class tagGCVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
SrcNameLen = 0 #(BYTE SrcNameLen)
SrcName = "" #(String SrcName)//size = SrcNameLen
PlayerID = 0 #(DWORD PlayerID)
@@ -8059,7 +8059,7 @@
ItemGUID = "" #(char ItemGUID[40])
AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
AddTime = "" #(char AddTime[19])//上架时间
- BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
data = None
@@ -9741,8 +9741,8 @@
class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 赛区ID
- SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
Count = 0 #(WORD Count)
PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
@@ -10755,7 +10755,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -12573,7 +12573,8 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
- ("AddItemCnt", c_int), #增幅丹使用个数
+ ("ItemAddCnt", c_int), #增幅丹增加上限
+ ("ItemBreakCnt", c_int), #增幅丹突破次数
]
def __init__(self):
@@ -12588,7 +12589,8 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
- self.AddItemCnt = 0
+ self.ItemAddCnt = 0
+ self.ItemBreakCnt = 0
return
def GetLength(self):
@@ -12601,12 +12603,14 @@
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
EatCnt:%d,
- AddItemCnt:%d
+ ItemAddCnt:%d,
+ ItemBreakCnt:%d
'''\
%(
self.ItemID,
self.EatCnt,
- self.AddItemCnt
+ self.ItemAddCnt,
+ self.ItemBreakCnt
)
return DumpString
@@ -13806,7 +13810,7 @@
class tagMCEquipPartXLAttr(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -16013,7 +16017,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -20597,7 +20601,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
EquipClassLV = 0 #(BYTE EquipClassLV)
ItemDataSize = 0 #(WORD ItemDataSize)
- ItemData = "" #(String ItemData)//物品记录
+ ItemData = "" #(String ItemData)//物品记录
data = None
def __init__(self):
@@ -20896,7 +20900,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -21341,7 +21345,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
index 222001d..6be7530 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
@@ -196,7 +196,7 @@
Sync_AttrFruitEatCnt(curPlayer, [itemID])
# 增加属性
- attrIDList = __AddFruitAttr(curPlayer, itemID, funcIndex, addValue)
+ __AddFruitAttr(curPlayer, itemID, funcIndex, addValue)
# 刷新属性
__RefreshAttr(curPlayer, funcIndex)
@@ -408,7 +408,7 @@
#[属性索引, 是否基础属性,(非)线性]
attrInfo = ChConfig.ItemEffect_AttrDict.get(effPerID, [])
- if attrInfo == []:
+ if attrInfo is []:
return
addAttrList = attrInfo[0]
@@ -433,12 +433,12 @@
# @param curPlayer
# @param fruitItemID
# @return None
-def Sync_AttrFruitEatCnt(curPlayer, fruitItemIDList=[]):
+def Sync_AttrFruitEatCnt(curPlayer, fruitItemIDList=None):
eatPack = ChPyNetSendPack.tagMCAttrFruitEatCntList()
eatPack.Clear()
eatPack.EatCntList = []
- if fruitItemIDList == []:
+ if fruitItemIDList is None:
itemidList = []
ipyDataMgr = IpyGameDataPY.IPY_Data()
maxCnt = ipyDataMgr.GetAttrFruitCount()
@@ -458,7 +458,8 @@
eatCntPack.Clear()
eatCntPack.ItemID = fruitItemID
eatCntPack.EatCnt = curPlayer.NomalDictGetProperty(eatCntKey)
- eatCntPack.AddItemCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % fruitItemID)
+ eatCntPack.ItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % fruitItemID)
+ eatCntPack.ItemBreakCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitItemBreakCnt % fruitItemID)
eatPack.EatCntList.append(eatCntPack)
eatPack.count = len(eatPack.EatCntList)
@@ -516,11 +517,7 @@
maxEatCnt = maxEatCntDict[order]
break
addItemUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID)
- if addItemUseCnt:
- addItemInfo = ipyData.GetAddItemInfo()
- if addItemInfo:
- singleItemCnt, singleAddCnt = addItemInfo[1:]
- maxEatCnt += (addItemUseCnt/singleItemCnt*singleAddCnt)
+ maxEatCnt += addItemUseCnt
return maxEatCnt
@@ -537,19 +534,30 @@
ipyData = GetAttrFruitIpyData(itemID)
if not ipyData:
return
- addItemInfo = ipyData.GetAddItemInfo()
- if not addItemInfo:
+ addItemInfoList = ipyData.GetAddItemInfo()
+ if not addItemInfoList:
return
- addItemUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID)
- needItemID, singleItemCnt, singleAddCnt = addItemInfo
- if addItemUseCnt + singleItemCnt> ChConfig.Def_UpperLimit_DWord:
+ itemBreakCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitItemBreakCnt % itemID)
+ itemAddUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID)
+ needUseCnt = canUpCnt = 0
+ for breakCnt, useCnt, upCnt in addItemInfoList:
+ if itemBreakCnt >= breakCnt:
+ continue
+ needUseCnt, canUpCnt = useCnt, upCnt
+ break
+ if not needUseCnt:
+ return
+
+ needItemID = IpyGameDataPY.GetFuncCfg('AlchemyOverLimit')
+ if itemAddUseCnt + canUpCnt> ChConfig.Def_UpperLimit_DWord:
return
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(needItemID, itemPack, singleItemCnt)
+ enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(needItemID, itemPack, needUseCnt)
if not enough:
return
- ItemCommon.ReduceItem(curPlayer, itemPack, indexList, singleItemCnt, False, "AddFruitUseLimit")
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID, addItemUseCnt+singleItemCnt)
-
+ ItemCommon.ReduceItem(curPlayer, itemPack, indexList, needUseCnt, False, "AddFruitUseLimit")
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID, itemAddUseCnt+canUpCnt)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitItemBreakCnt % itemID,
+ itemBreakCnt + 1)
Sync_AttrFruitEatCnt(curPlayer, [itemID])
return
--
Gitblit v1.8.0