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