From 09fef77b16601ee5b0f53f34ccb23804b8448c8c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 28 五月 2025 17:59:13 +0800 Subject: [PATCH] 102 【主界面】官职晋升-服务端 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 273 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 259 insertions(+), 14 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py index 49273bf..c1e5011 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py @@ -11,6 +11,8 @@ # # 详细描述: 读取PY表 # +# @note: 本脚本由 \PySysDB\生成IpyGameDataPY 生成 +# #------------------------------------------------------------------------------- #"""Version = 2018-05-10 12:00""" #------------------------------------------------------------------------------- @@ -33,6 +35,27 @@ } ''' Def_IpyTable = { + "DirtyList":( + ("WORD", "ID", 0), + ("char", "Word", 0), + ), + + "DirtyName":( + ("WORD", "ID", 0), + ("char", "Word", 0), + ), + + "FuncTeamSet":( + ("DWORD", "FuncMapID", 1), + ("BYTE", "NeedName", 0), + ("BYTE", "MemberMax", 0), + ("BYTE", "ApplyMax", 0), + ("BYTE", "ReqApplyMax", 0), + ("BYTE", "SortType", 0), + ("BYTE", "SortReverse", 0), + ("BYTE", "OPLimitInAct", 0), + ), + "Dienstgrad":( ("DWORD", "ID", 1), ("WORD", "Type", 0), @@ -121,6 +144,15 @@ ("list", "LVAttrValueList", 0), ), + "Task":( + ("WORD", "TaskID", 1), + ("BYTE", "TaskGroup", 0), + ("BYTE", "TaskType", 0), + ("list", "TaskConds", 0), + ("DWORD", "NeedValue", 0), + ("list", "AwardItemList", 0), + ), + "RealmXXZL":( ("WORD", "TaskID", 1), ("BYTE", "TaskType", 0), @@ -134,11 +166,6 @@ ("DWORD", "LVMax", 0), ("list", "AddAttrType", 0), ("list", "AddAttrNum", 0), - ("DWORD", "BuffID", 0), - ("DWORD", "ExpRate", 0), - ("DWORD", "ExpLimit", 0), - ("dict", "LearnSkillIDInfo", 0), - ("BYTE", "AddFreePoint", 0), ), "RealmLVUPTask":( @@ -2417,6 +2444,35 @@ ("list", "AwardItemList", 0), ), + "Family":( + ("BYTE", "FamilyLV", 1), + ("BYTE", "MemberMax", 0), + ("BYTE", "DeputyLeaderMax", 0), + ("BYTE", "EliteMax", 0), + ("DWORD", "NeedExp", 0), + ("DWORD", "ZhenbaogeWeights", 0), + ), + + "FamilyEmblem":( + ("BYTE", "EmblemID", 1), + ("BYTE", "UnlockFamilyLV", 0), + ("DWORD", "ExpireMinutes", 0), + ("DWORD", "CustomFamilyID", 0), + ), + + "FamilyZhenbaogeCut":( + ("BYTE", "CutNum", 1), + ("DWORD", "CutWeight", 0), + ("float", "MinRatio", 0), + ("float", "RandRatio", 0), + ), + + "FamilyZhenbaogeItem":( + ("BYTE", "ItemGroupNum", 1), + ("DWORD", "ItemWeight", 0), + ("list", "ItemList", 0), + ), + "FamilyZhenfa":( ("BYTE", "ZhenfaType", 1), ("WORD", "ZhenfaLV", 1), @@ -2587,8 +2643,52 @@ ("DWORD", "NeedQiyun", 0), ("list", "AwardItemList", 0), ), + + "TreeLV":( + ("BYTE", "TreeLV", 1), + ("DWORD", "LVUPNeedMoney", 0), + ("DWORD", "LVUPNeedTime", 0), + ("list", "EquipColorRateList", 0), + ("list", "ExAwardItemRateList", 0), + ), } + +# 屏蔽词 +class IPY_DirtyList(): + + def __init__(self): + self.attrTuple = None + return + + def GetID(self): return self.attrTuple[0] # WORD + def GetWord(self): return self.attrTuple[1] # 屏蔽词 char + +# 玩家名屏蔽词 +class IPY_DirtyName(): + + def __init__(self): + self.attrTuple = None + return + + def GetID(self): return self.attrTuple[0] # WORD + def GetWord(self): return self.attrTuple[1] # 屏蔽词 char + +# 功能队伍设定表 +class IPY_FuncTeamSet(): + + def __init__(self): + self.attrTuple = None + return + + def GetFuncMapID(self): return self.attrTuple[0] # 功能地图ID DWORD + def GetNeedName(self): return self.attrTuple[1] # 需要队伍名 BYTE + def GetMemberMax(self): return self.attrTuple[2] # 最大人员数 BYTE + def GetApplyMax(self): return self.attrTuple[3] # 最大接受申请数 BYTE + def GetReqApplyMax(self): return self.attrTuple[4] # 最大申请数 BYTE + def GetSortType(self): return self.attrTuple[5] # 队伍列表排序方案 BYTE + def GetSortReverse(self): return self.attrTuple[6] # 是否倒序 BYTE + def GetOPLimitInAct(self): return self.attrTuple[7] # 活动期间限制队伍操作 BYTE # 称号表 class IPY_Dienstgrad(): @@ -2728,6 +2828,20 @@ def GetLVAttrTypeList(self): return self.attrTuple[8] # 每级额外属性类(非累积) list def GetLVAttrValueList(self): return self.attrTuple[9] # 每级额外属性值(非累积) list +# 任务表 +class IPY_Task(): + + def __init__(self): + self.attrTuple = None + return + + def GetTaskID(self): return self.attrTuple[0] # 任务ID WORD + def GetTaskGroup(self): return self.attrTuple[1] # 任务组别 0-主线 BYTE + def GetTaskType(self): return self.attrTuple[2] # 任务类型 BYTE + def GetTaskConds(self): return self.attrTuple[3] # 任务条件[...] list + def GetNeedValue(self): return self.attrTuple[4] # 所需任务值 DWORD + def GetAwardItemList(self): return self.attrTuple[5] # 奖励物品列表 [[物品ID,个数,是否拍品], ...] list + # 境界修仙之路 class IPY_RealmXXZL(): @@ -2751,12 +2865,7 @@ def GetLvLarge(self): return self.attrTuple[1] # 大境界 BYTE def GetLVMax(self): return self.attrTuple[2] # 等级上限 DWORD def GetAddAttrType(self): return self.attrTuple[3] # 境界加成属性类型 list - def GetAddAttrNum(self): return self.attrTuple[4] # 境界加成属性值 list - def GetBuffID(self): return self.attrTuple[5] # 给全服在线玩家增加buff DWORD - def GetExpRate(self): return self.attrTuple[6] # 修为池经验速率 DWORD - def GetExpLimit(self): return self.attrTuple[7] # 修为池经验上限 DWORD - def GetLearnSkillIDInfo(self): return self.attrTuple[8] # 学习技能ID信息 {"职业":[技能ID, ...], ...} dict - def GetAddFreePoint(self): return self.attrTuple[9] # 增加自由属性点 BYTE + def GetAddAttrNum(self): return self.attrTuple[4] # 境界加成属性值 list # 境界进阶任务表 class IPY_RealmLVUPTask(): @@ -6184,6 +6293,55 @@ def GetNeedHurtTotal(self): return self.attrTuple[2] # 所需总伤血 DWORD def GetAwardItemList(self): return self.attrTuple[3] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list +# 仙盟等级表 +class IPY_Family(): + + def __init__(self): + self.attrTuple = None + return + + def GetFamilyLV(self): return self.attrTuple[0] # 仙盟等级 BYTE + def GetMemberMax(self): return self.attrTuple[1] # 成员数上限 BYTE + def GetDeputyLeaderMax(self): return self.attrTuple[2] # 副盟主数上限 BYTE + def GetEliteMax(self): return self.attrTuple[3] # 精英数上限 BYTE + def GetNeedExp(self): return self.attrTuple[4] # 升级所需经验 DWORD + def GetZhenbaogeWeights(self): return self.attrTuple[5] # 珍宝阁总权重 DWORD + +# 仙盟徽章表 +class IPY_FamilyEmblem(): + + def __init__(self): + self.attrTuple = None + return + + def GetEmblemID(self): return self.attrTuple[0] # 徽章ID BYTE + def GetUnlockFamilyLV(self): return self.attrTuple[1] # 解锁仙盟等级,为0时代表其他方式解锁 BYTE + def GetExpireMinutes(self): return self.attrTuple[2] # 有效时长,分钟 DWORD + def GetCustomFamilyID(self): return self.attrTuple[3] # 定制仙盟ID DWORD + +# 仙盟珍宝阁砍价表 +class IPY_FamilyZhenbaogeCut(): + + def __init__(self): + self.attrTuple = None + return + + def GetCutNum(self): return self.attrTuple[0] # 砍价人次 BYTE + def GetCutWeight(self): return self.attrTuple[1] # 砍价权重 DWORD + def GetMinRatio(self): return self.attrTuple[2] # 保底比值 float + def GetRandRatio(self): return self.attrTuple[3] # 随机比值 float + +# 仙盟珍宝阁物品表 +class IPY_FamilyZhenbaogeItem(): + + def __init__(self): + self.attrTuple = None + return + + def GetItemGroupNum(self): return self.attrTuple[0] # 物品组编号 BYTE + def GetItemWeight(self): return self.attrTuple[1] # 随机权重 DWORD + def GetItemList(self): return self.attrTuple[2] # 物品列表[[物品ID,个数,是否拍品], ...] list + # 仙盟阵法表 class IPY_FamilyZhenfa(): @@ -6469,6 +6627,19 @@ def GetAwardIndex(self): return self.attrTuple[0] # 奖励索引 WORD def GetNeedQiyun(self): return self.attrTuple[1] # 所需气运值 DWORD def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表 list + +# 仙树等级表 +class IPY_TreeLV(): + + def __init__(self): + self.attrTuple = None + return + + def GetTreeLV(self): return self.attrTuple[0] # 仙树等级 BYTE + def GetLVUPNeedMoney(self): return self.attrTuple[1] # 升到下一级所需货币数 DWORD + def GetLVUPNeedTime(self): return self.attrTuple[2] # 升级下一级所需所需秒 DWORD + def GetEquipColorRateList(self): return self.attrTuple[3] # 产出装备品质概率列表,[0品质万分率, 1品质万分率, ...] list + def GetExAwardItemRateList(self): return self.attrTuple[4] # 每次砍树概率额外产出道具饼图,[[万分率,[物品ID,个数]], ...] list def Log(msg, playerID=0, par=0): @@ -6525,6 +6696,9 @@ Log("IPY_DataMgr Reload... onlyCheck=%s" % onlyCheck) if not onlyCheck: self.ipyConfigEx = {} + self.__LoadFileData("DirtyList", onlyCheck) + self.__LoadFileData("DirtyName", onlyCheck) + self.__LoadFileData("FuncTeamSet", onlyCheck) self.__LoadFileData("Dienstgrad", onlyCheck) self.__LoadFileData("TitleStarUp", onlyCheck) self.__LoadFileData("PlayerFace", onlyCheck) @@ -6535,6 +6709,7 @@ self.__LoadFileData("RolePoint", onlyCheck) self.__LoadFileData("LingQiAttr", onlyCheck) self.__LoadFileData("LingQiTrain", onlyCheck) + self.__LoadFileData("Task", onlyCheck) self.__LoadFileData("RealmXXZL", onlyCheck) self.__LoadFileData("Realm", onlyCheck) self.__LoadFileData("RealmLVUPTask", onlyCheck) @@ -6767,6 +6942,10 @@ self.__LoadFileData("EquipPlusEvolve", onlyCheck) self.__LoadFileData("FamilyBossAward", onlyCheck) self.__LoadFileData("FamilyBossHurtAward", onlyCheck) + self.__LoadFileData("Family", onlyCheck) + self.__LoadFileData("FamilyEmblem", onlyCheck) + self.__LoadFileData("FamilyZhenbaogeCut", onlyCheck) + self.__LoadFileData("FamilyZhenbaogeItem", onlyCheck) self.__LoadFileData("FamilyZhenfa", onlyCheck) self.__LoadFileData("ItemWashMax", onlyCheck) self.__LoadFileData("HorsePetBossAward", onlyCheck) @@ -6790,6 +6969,7 @@ self.__LoadFileData("Zhanling", onlyCheck) self.__LoadFileData("Xiangong", onlyCheck) self.__LoadFileData("TiandaoTree", onlyCheck) + self.__LoadFileData("TreeLV", onlyCheck) Log("IPY_DataMgr ReloadOK! onlyCheck=%s" % onlyCheck) return @@ -6802,10 +6982,12 @@ def __LoadFileData(self, tableName, onlyCheck=False): # @param onlyCheck: 是否仅检查格式,一般启动时用 - curPath = ChConfig.GetDBPath() + "\\PySysDB\\tag" + tableName + ".txt" + curPath = ChConfig.GetServerConfigPath() + "\\PySysDB\\" + tableName + ".txt" if not os.path.isfile(curPath): - ErrLog("can not find file = %s,%s" % (tableName, curPath)) - raise Exception("can not find file = %s,%s" % (tableName, curPath)) + curPath = ChConfig.GetServerConfigPath() + "\\PySysDB\\tag" + tableName + ".txt" + if not os.path.isfile(curPath): + ErrLog("can not find file = %s,%s" % (tableName, curPath)) + raise Exception("can not find file = %s,%s" % (tableName, curPath)) if not onlyCheck: if not hasattr(self, "ipy%sLen" % tableName): @@ -6999,6 +7181,27 @@ return setList + def GetDirtyListCount(self): + self.CheckLoadData("DirtyList") + return self.ipyDirtyListLen + def GetDirtyListByIndex(self, index): + self.CheckLoadData("DirtyList") + return self.ipyDirtyListCache[index] + + def GetDirtyNameCount(self): + self.CheckLoadData("DirtyName") + return self.ipyDirtyNameLen + def GetDirtyNameByIndex(self, index): + self.CheckLoadData("DirtyName") + return self.ipyDirtyNameCache[index] + + def GetFuncTeamSetCount(self): + self.CheckLoadData("FuncTeamSet") + return self.ipyFuncTeamSetLen + def GetFuncTeamSetByIndex(self, index): + self.CheckLoadData("FuncTeamSet") + return self.ipyFuncTeamSetCache[index] + def GetDienstgradCount(self): self.CheckLoadData("Dienstgrad") return self.ipyDienstgradLen @@ -7068,6 +7271,13 @@ def GetLingQiTrainByIndex(self, index): self.CheckLoadData("LingQiTrain") return self.ipyLingQiTrainCache[index] + + def GetTaskCount(self): + self.CheckLoadData("Task") + return self.ipyTaskLen + def GetTaskByIndex(self, index): + self.CheckLoadData("Task") + return self.ipyTaskCache[index] def GetRealmXXZLCount(self): self.CheckLoadData("RealmXXZL") @@ -8693,6 +8903,34 @@ self.CheckLoadData("FamilyBossHurtAward") return self.ipyFamilyBossHurtAwardCache[index] + def GetFamilyCount(self): + self.CheckLoadData("Family") + return self.ipyFamilyLen + def GetFamilyByIndex(self, index): + self.CheckLoadData("Family") + return self.ipyFamilyCache[index] + + def GetFamilyEmblemCount(self): + self.CheckLoadData("FamilyEmblem") + return self.ipyFamilyEmblemLen + def GetFamilyEmblemByIndex(self, index): + self.CheckLoadData("FamilyEmblem") + return self.ipyFamilyEmblemCache[index] + + def GetFamilyZhenbaogeCutCount(self): + self.CheckLoadData("FamilyZhenbaogeCut") + return self.ipyFamilyZhenbaogeCutLen + def GetFamilyZhenbaogeCutByIndex(self, index): + self.CheckLoadData("FamilyZhenbaogeCut") + return self.ipyFamilyZhenbaogeCutCache[index] + + def GetFamilyZhenbaogeItemCount(self): + self.CheckLoadData("FamilyZhenbaogeItem") + return self.ipyFamilyZhenbaogeItemLen + def GetFamilyZhenbaogeItemByIndex(self, index): + self.CheckLoadData("FamilyZhenbaogeItem") + return self.ipyFamilyZhenbaogeItemCache[index] + def GetFamilyZhenfaCount(self): self.CheckLoadData("FamilyZhenfa") return self.ipyFamilyZhenfaLen @@ -8853,6 +9091,13 @@ def GetTiandaoTreeByIndex(self, index): self.CheckLoadData("TiandaoTree") return self.ipyTiandaoTreeCache[index] + + def GetTreeLVCount(self): + self.CheckLoadData("TreeLV") + return self.ipyTreeLVLen + def GetTreeLVByIndex(self, index): + self.CheckLoadData("TreeLV") + return self.ipyTreeLVCache[index] IPYData = IPY_DataMgr() def IPY_Data(): return IPYData -- Gitblit v1.8.0