| | |
| | | #
|
| | | # 详细描述: 读取PY表
|
| | | #
|
| | | # @note: 本脚本由 \PySysDB\生成IpyGameDataPY 生成
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2018-05-10 12:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
| | | }
|
| | | '''
|
| | | 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),
|
| | |
| | | ("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),
|
| | |
| | | ("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":(
|
| | |
| | | ("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),
|
| | |
| | | ("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(): |
| | |
| | | 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(): |
| | | |
| | |
| | | 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(): |
| | |
| | | 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(): |
| | | |
| | |
| | | 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):
|
| | |
| | | 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)
|
| | |
| | | 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)
|
| | |
| | | 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)
|
| | |
| | | self.__LoadFileData("Zhanling", onlyCheck)
|
| | | self.__LoadFileData("Xiangong", onlyCheck)
|
| | | self.__LoadFileData("TiandaoTree", onlyCheck)
|
| | | self.__LoadFileData("TreeLV", onlyCheck)
|
| | | Log("IPY_DataMgr ReloadOK! onlyCheck=%s" % onlyCheck)
|
| | | return
|
| | |
|
| | |
| | |
|
| | | 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):
|
| | |
| | | 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
|
| | |
| | | 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") |
| | |
| | | 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
|
| | |
| | | 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
|