From 2f7cda24c3e8421ce4358f2fc2233ac02f0acf6e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 02 十二月 2024 18:51:46 +0800
Subject: [PATCH] 5559 [越南][英文][tqxbqy][砍树]优化启动检查配表格式(增加检查指定的字段格式dict、list)
---
PySysDB/生成IpyGameDataPY/IpyGameDataPYTemp.py | 4 ++++
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 8 ++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 24 ++++++++++++++----------
PySysDB/PySysDBPY.h | 10 +++++-----
PySysDB/PySysDBG.h | 2 +-
5 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index c8db436..dfb6c65 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -919,7 +919,7 @@
list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
WORD LVLimit; //限制等级
BYTE IsDayReset; //是否每天重置
- list ShopTypeList; //商店类型列表
+ dict ShopTypeList; //商店类型列表
};
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index cde1496..e5728ef 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1866,7 +1866,7 @@
WORD _GiftbagType; //礼包模板类型
DWORD _GiftbagID; //礼包编号
WORD BuyCountLimit; //限购次数,0不限购
- list GiftItemList; //礼包物品信息列表 [(物品ID,个数,是否绑定),...]
+ eval GiftItemList; //礼包物品信息列表 [(物品ID,个数,是否绑定),...]
WORD Discount; //折扣百分比
};
@@ -1959,7 +1959,7 @@
WORD DropDiffLVLimit; //掉落等级差值限制
list GuajiAwardSet; //挂机收益设置,x秒|x次小怪掉率
list DropItemRateList; //小怪掉落饼图概率
- list DropItemRateListBoss; //Boss掉落饼图概率
+ dict DropItemRateListBoss; //Boss掉落饼图概率
};
//集字活动兑换模板表
@@ -1968,7 +1968,7 @@
{
DWORD _TemplateID; //模板ID
BYTE ExchangeNum; //兑换编号(同个模板中需唯一不可变)
- list ExchangeItemInfo; //兑换目标物品[物品ID,个数,是否绑定]
+ eval ExchangeItemInfo; //兑换目标物品[物品ID,个数,是否绑定]
BYTE ExchangeCountMax; //最大兑换次数(0不限制)
list NeedItemList; //所需物品信息列表 [[物品ID,个数,是否绑定], ...]
BYTE NeedNotify; //是否需要广播
@@ -2263,7 +2263,7 @@
WORD AdvanceMinutes; //前端提前X分钟展示活动
WORD LVLimit; //限制等级
BYTE IsDayReset; //是否每天重置
- list ShopTypeList; //商店类型列表
+ dict ShopTypeList; //商店类型列表
char MailKey; //活动更新时发送邮件key
list MailItemPrize; //活动更新时发送邮件奖励物品
};
@@ -2701,7 +2701,7 @@
BYTE ActionType; //活动条目ID
DWORD TotalTimes; //可完成的总次数,0表示不限次数
WORD SingleTimes; //单次领奖需要的次数
- list Reward; //奖励物品
+ eval Reward; //奖励物品
WORD Point; //积分
};
diff --git "a/PySysDB/\347\224\237\346\210\220IpyGameDataPY/IpyGameDataPYTemp.py" "b/PySysDB/\347\224\237\346\210\220IpyGameDataPY/IpyGameDataPYTemp.py"
index 0a5516e..0a0bb50 100644
--- "a/PySysDB/\347\224\237\346\210\220IpyGameDataPY/IpyGameDataPYTemp.py"
+++ "b/PySysDB/\347\224\237\346\210\220IpyGameDataPY/IpyGameDataPYTemp.py"
@@ -173,8 +173,12 @@
attrValue = value
elif fieldType == "dict":
attrValue = self.__StrToDict(value)
+ if type(attrValue) != dict:
+ raise
elif fieldType == "list":
attrValue = self.__StrToList(value)
+ if type(attrValue) not in [list, tuple]:
+ raise
elif fieldType == "eval":
attrValue = self.__StrToEval(value)
elif fieldType == "float":
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index b01a79c..fc1e6c5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -749,7 +749,7 @@
("list", "NotifyInfoLoop", 0),
("WORD", "LVLimit", 0),
("BYTE", "IsDayReset", 0),
- ("list", "ShopTypeList", 0),
+ ("dict", "ShopTypeList", 0),
),
"Store":(
@@ -2264,7 +2264,7 @@
def GetNotifyInfoLoop(self): return self.attrTuple[11] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
def GetLVLimit(self): return self.attrTuple[12] # 限制等级 WORD
def GetIsDayReset(self): return self.attrTuple[13] # 是否每天重置 BYTE
- def GetShopTypeList(self): return self.attrTuple[14] # 商店类型列表 list
+ def GetShopTypeList(self): return self.attrTuple[14] # 商店类型列表 dict
# 商城表
class IPY_Store():
@@ -3191,8 +3191,12 @@
attrValue = value
elif fieldType == "dict":
attrValue = self.__StrToDict(value)
+ if type(attrValue) != dict:
+ raise
elif fieldType == "list":
attrValue = self.__StrToList(value)
+ if type(attrValue) not in [list, tuple]:
+ raise
elif fieldType == "eval":
attrValue = self.__StrToEval(value)
elif fieldType == "float":
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 4b4af0a..200889e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1492,7 +1492,7 @@
("WORD", "GiftbagType", 1),
("DWORD", "GiftbagID", 1),
("WORD", "BuyCountLimit", 0),
- ("list", "GiftItemList", 0),
+ ("eval", "GiftItemList", 0),
("WORD", "Discount", 0),
),
@@ -1561,13 +1561,13 @@
("WORD", "DropDiffLVLimit", 0),
("list", "GuajiAwardSet", 0),
("list", "DropItemRateList", 0),
- ("list", "DropItemRateListBoss", 0),
+ ("dict", "DropItemRateListBoss", 0),
),
"CollectWordsExchange":(
("DWORD", "TemplateID", 1),
("BYTE", "ExchangeNum", 0),
- ("list", "ExchangeItemInfo", 0),
+ ("eval", "ExchangeItemInfo", 0),
("BYTE", "ExchangeCountMax", 0),
("list", "NeedItemList", 0),
("BYTE", "NeedNotify", 0),
@@ -1793,7 +1793,7 @@
("WORD", "AdvanceMinutes", 0),
("WORD", "LVLimit", 0),
("BYTE", "IsDayReset", 0),
- ("list", "ShopTypeList", 0),
+ ("dict", "ShopTypeList", 0),
("char", "MailKey", 0),
("list", "MailItemPrize", 0),
),
@@ -2116,7 +2116,7 @@
("BYTE", "ActionType", 0),
("DWORD", "TotalTimes", 0),
("WORD", "SingleTimes", 0),
- ("list", "Reward", 0),
+ ("eval", "Reward", 0),
("WORD", "Point", 0),
),
@@ -4738,7 +4738,7 @@
def GetGiftbagType(self): return self.attrTuple[0] # 礼包模板类型 WORD
def GetGiftbagID(self): return self.attrTuple[1] # 礼包编号 DWORD
def GetBuyCountLimit(self): return self.attrTuple[2] # 限购次数,0不限购 WORD
- def GetGiftItemList(self): return self.attrTuple[3] # 礼包物品信息列表 [(物品ID,个数,是否绑定),...] list
+ def GetGiftItemList(self): return self.attrTuple[3] # 礼包物品信息列表 [(物品ID,个数,是否绑定),...] eval
def GetDiscount(self): return self.attrTuple[4] # 折扣百分比 WORD
# 双倍经验活动表
@@ -4847,7 +4847,7 @@
def GetDropDiffLVLimit(self): return self.attrTuple[6] # 掉落等级差值限制 WORD
def GetGuajiAwardSet(self): return self.attrTuple[7] # 挂机收益设置,x秒|x次小怪掉率 list
def GetDropItemRateList(self): return self.attrTuple[8] # 小怪掉落饼图概率 list
- def GetDropItemRateListBoss(self): return self.attrTuple[9] # Boss掉落饼图概率 list
+ def GetDropItemRateListBoss(self): return self.attrTuple[9] # Boss掉落饼图概率 dict
# 集字活动兑换模板表
class IPY_CollectWordsExchange():
@@ -4858,7 +4858,7 @@
def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
def GetExchangeNum(self): return self.attrTuple[1] # 兑换编号(同个模板中需唯一不可变) BYTE
- def GetExchangeItemInfo(self): return self.attrTuple[2] # 兑换目标物品[物品ID,个数,是否绑定] list
+ def GetExchangeItemInfo(self): return self.attrTuple[2] # 兑换目标物品[物品ID,个数,是否绑定] eval
def GetExchangeCountMax(self): return self.attrTuple[3] # 最大兑换次数(0不限制) BYTE
def GetNeedItemList(self): return self.attrTuple[4] # 所需物品信息列表 [[物品ID,个数,是否绑定], ...] list
def GetNeedNotify(self): return self.attrTuple[5] # 是否需要广播 BYTE
@@ -5199,7 +5199,7 @@
def GetAdvanceMinutes(self): return self.attrTuple[5] # 前端提前X分钟展示活动 WORD
def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
- def GetShopTypeList(self): return self.attrTuple[8] # 商店类型列表 list
+ def GetShopTypeList(self): return self.attrTuple[8] # 商店类型列表 dict
def GetMailKey(self): return self.attrTuple[9] # 活动更新时发送邮件key char
def GetMailItemPrize(self): return self.attrTuple[10] # 活动更新时发送邮件奖励物品 list
@@ -5712,7 +5712,7 @@
def GetActionType(self): return self.attrTuple[1] # 活动条目ID BYTE
def GetTotalTimes(self): return self.attrTuple[2] # 可完成的总次数,0表示不限次数 DWORD
def GetSingleTimes(self): return self.attrTuple[3] # 单次领奖需要的次数 WORD
- def GetReward(self): return self.attrTuple[4] # 奖励物品 list
+ def GetReward(self): return self.attrTuple[4] # 奖励物品 eval
def GetPoint(self): return self.attrTuple[5] # 积分 WORD
# 运势活动时间表
@@ -6907,8 +6907,12 @@
attrValue = value
elif fieldType == "dict":
attrValue = self.__StrToDict(value)
+ if type(attrValue) != dict:
+ raise
elif fieldType == "list":
attrValue = self.__StrToList(value)
+ if type(attrValue) not in [list, tuple]:
+ raise
elif fieldType == "eval":
attrValue = self.__StrToEval(value)
elif fieldType == "float":
--
Gitblit v1.8.0