工程参考/配置文件/Public/PetAttrTable.txt

来自天龙知识库
跳到导航跳到搜索


首页 · 配置文件索引 · 修改约定

PetAttrTable.txt 是珍兽种类总表。每一行一种 DataID:携带等级、技能池、标准寿命和五项标准资质。查询按编号下标,不是按行号。它不是升级经验表,也不是 PetConfig 里的战斗基数。

位置与生效 · 文件格式 · 字段详解 · 修改实例

文件位置与生效

项目 说明
运行文件 ../Public/Config/PetAttrTable.txt,相对于 Server 工作目录。源码宏 FILE_PET_ATTR。
读取程序 Server 在 TableInit::InitPetAttrTable 加载;创建、繁殖和资质计算按编号查询。客户端 GMDataBase 也注册同名表
生效方法 停服后备份并修改实际 Public 副本,再重启 Server。客户端同名表须同步。当前检索范围未发现独立重载。列数必须正好 51。
样本格式 GB18030-compatibleCRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

样本 2103 行、51 列。编号写入下标,须 0..65534。列数必须等于 PetAttrEnd=51。第 5 列阵营在枚举里有名字,加载循环不读。名称最长 31 字节。

表头「标准灵气资质」进 m_SprPerception,「标准身法资质」进 m_DexPerception。结构体 PET_ATTR 的注释把这两项写反了;战斗输出按字段名:Spr 当灵气、Dex 当身法。

文件格式

首行是类型行:INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。

字段详解

列号从 1 开始,源码列下标从 0 开始。

字段与类型 含义与修改要点 缺项或特殊值
第 1 列
INT:珍兽编号
种类编号,同时作数组下标。样本第一行 558 飘飘鸭。GetAttr(编号) 用本列。 空首列跳行。越界跳过该行。重复后行覆盖前行。
第 2 列
STRING:名称
种类名。strncpy 到 32 字节缓冲,保留结尾 0。 空串合法。过长截断。
第 3 列
INT:珍兽类型
写入 m_nPetPhyle。可与 PetTypeAttr 的类型号对照,但当前启动不加载 PetTypeAttr。 空为 0。
第 4 列
INT:可携带等级
人物须达到该等级才能携带。样本飘飘鸭 1。 空为 0。
第 5 列
INT:阵营
样本有本列,加载器不读。列必须存在以满足 51 列。 改它不会改变 Server 阵营判定。
第 6 列
INT:是否变异
非 0 视为变异种类。 空为 0。
第 7 列
INT:是否宝宝
非 0 视为宝宝种类。 空为 0。
第 8 列
INT:食物类
食物类型。枚举 1 肉、2 草、3 虫、4 谷。样本飘飘鸭 11,超出枚举范围,实际判定需要实测。 空为 0。
第 9 列
INT:所能学的技能数
写入 m_PassiveSkillCount,注释按自动技能数使用。 空为 0。
第 10 列
INT:主动技能
手动技能 1 的技能编号,写入 m_MasterPlaySkills[0]。样本飘飘鸭 -1。 -1 表示该槽无技能。
第 11 列
INT:主动技能生成几率(1/100w)
手动技能 1 的生成权重,单位 1/100 万。 空为 0。
第 12 列
INT:主动技能2
手动技能 2 的技能编号,写入 m_MasterPlaySkills[1]。样本飘飘鸭 -1。 -1 表示该槽无技能。
第 13 列
INT:主动技能2生成几率(1/100w)
手动技能 2 的生成权重,单位 1/100 万。 空为 0。
第 14 列
INT:被动技能1
自动技能 1 的技能编号,写入 m_AutoPlaySkills[0]。 -1 表示该槽无技能。
第 15 列
INT:被动技能1生成几率(1/100W)
自动技能 1 的生成权重,单位 1/100 万。 空为 0。
第 16 列
INT:被动技能2
自动技能 2 的技能编号,写入 m_AutoPlaySkills[1]。 -1 表示该槽无技能。
第 17 列
INT:被动技能2生成几率(1/100W)
自动技能 2 的生成权重,单位 1/100 万。 空为 0。
第 18 列
INT:被动技能3
自动技能 3 的技能编号,写入 m_AutoPlaySkills[2]。 -1 表示该槽无技能。
第 19 列
INT:被动技能3生成几率(1/100W)
自动技能 3 的生成权重,单位 1/100 万。 空为 0。
第 20 列
INT:被动技能4
自动技能 4 的技能编号,写入 m_AutoPlaySkills[3]。 -1 表示该槽无技能。
第 21 列
INT:被动技能4生成几率(1/100W)
自动技能 4 的生成权重,单位 1/100 万。 空为 0。
第 22 列
INT:被动技能5
自动技能 5 的技能编号,写入 m_AutoPlaySkills[4]。 -1 表示该槽无技能。
第 23 列
INT:被动技能5生成几率(1/100W)
自动技能 5 的生成权重,单位 1/100 万。 空为 0。
第 24 列
INT:被动技能6
自动技能 6 的技能编号,写入 m_AutoPlaySkills[5]。 -1 表示该槽无技能。
第 25 列
INT:被动技能6生成几率(1/100W)
自动技能 6 的生成权重,单位 1/100 万。 空为 0。
第 26 列
INT:被动技能7
自动技能 7 的技能编号,写入 m_AutoPlaySkills[6]。 -1 表示该槽无技能。
第 27 列
INT:被动技能7生成几率(1/100W)
自动技能 7 的生成权重,单位 1/100 万。 空为 0。
第 28 列
INT:被动技能8
自动技能 8 的技能编号,写入 m_AutoPlaySkills[7]。 -1 表示该槽无技能。
第 29 列
INT:被动技能8生成几率(1/100W)
自动技能 8 的生成权重,单位 1/100 万。 空为 0。
第 30 列
INT:被动技能9
自动技能 9 的技能编号,写入 m_AutoPlaySkills[8]。 -1 表示该槽无技能。
第 31 列
INT:被动技能9生成几率(1/100W)
自动技能 9 的生成权重,单位 1/100 万。 空为 0。
第 32 列
INT:被动技能10
自动技能 10 的技能编号,写入 m_AutoPlaySkills[9]。 -1 表示该槽无技能。
第 33 列
INT:被动技能10生成几率(1/100W)
自动技能 10 的生成权重,单位 1/100 万。 空为 0。
第 34 列
INT:标准寿命
标准寿命。样本飘飘鸭 64800。 空为 0。
第 35 列
INT:标准力量资质
力量标准资质。样本飘飘鸭 208。 空为 0。
第 36 列
INT:标准体质资质
体质标准资质。样本飘飘鸭 208。 空为 0。
第 37 列
INT:标准灵气资质
写入 m_SprPerception。样本飘飘鸭 208。结构体注释写成身法,以本表头和战斗输出为准。 空为 0。
第 38 列
INT:标准身法资质
写入 m_DexPerception。样本飘飘鸭 208。结构体注释写成灵气,以本表头为准。 空为 0。
第 39 列
INT:标准定力资质
定力标准资质。样本飘飘鸭 208。 空为 0。
第 40 列
INT:成长率1
成长档 0。样本飘飘鸭 500。 空为 0。
第 41 列
INT:成长率2
成长档 1。样本 550。 空为 0。
第 42 列
INT:成长率3
成长档 2。样本 575。 空为 0。
第 43 列
INT:成长率4
成长档 3。样本 650。 空为 0。
第 44 列
INT:成长率5
成长档 4。样本 750。 空为 0。
第 45 列
INT:胆小(1/1000)
胆小性格权重,分母 1000。 空为 0。
第 46 列
INT:谨慎(1/1000)
谨慎性格权重。 空为 0。
第 47 列
INT:忠诚(1/1000)
忠诚性格权重。 空为 0。
第 48 列
INT:精明(1/1000)
精明性格权重。 空为 0。
第 49 列
INT:勇猛(1/1000)
勇猛性格权重。样本飘飘鸭 10。 空为 0。
第 50 列
INT:珍兽繁殖时间(ms)
繁殖间隔毫秒。样本飘飘鸭 6000。 空为 0。
第 51 列
INT:同类参考珍兽类型
参考种类编号。样本飘飘鸭 558。 空为 0。列必须存在。

常用修改实例

示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。

把飘飘鸭可携带等级从 1 改为 2

修改前:

INT	STRING	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
珍兽编号	名称$1$	珍兽类型	可携带等级	阵营	是否变异	是否宝宝	食物类	所能学的技能数	主动技能	主动技能生成几率(1/100w)	主动技能2	主动技能2生成几率(1/100w)	被动技能1	被动技能1生成几率(1/100W)	被动技能2	被动技能2生成几率(1/100W)	被动技能3	被动技能3生成几率(1/100W)	被动技能4	被动技能4生成几率(1/100W)	被动技能5	被动技能5生成几率(1/100W)	被动技能6	被动技能6生成几率(1/100W)	被动技能7	被动技能7生成几率(1/100W)	被动技能8	被动技能8生成几率(1/100W)	被动技能9	被动技能9生成几率(1/100W)	被动技能10	被动技能10生成几率(1/100W)	标准寿命	标准力量资质	标准体质资质	标准灵气资质	标准身法资质	标准定力资质	成长率1	成长率2	成长率3	成长率4	成长率5	胆小(1/1000)	谨慎(1/1000)	忠诚(1/1000)	精明(1/1000)	勇猛(1/1000)	珍兽繁殖时间(ms)	同类参考珍兽类型
558	飘飘鸭	298	1	9	1	0	11	10	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	64800	208	208	208	208	208	500	550	575	650	750	900	50	20	20	10	6000	558

修改后:

INT	STRING	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
珍兽编号	名称$1$	珍兽类型	可携带等级	阵营	是否变异	是否宝宝	食物类	所能学的技能数	主动技能	主动技能生成几率(1/100w)	主动技能2	主动技能2生成几率(1/100w)	被动技能1	被动技能1生成几率(1/100W)	被动技能2	被动技能2生成几率(1/100W)	被动技能3	被动技能3生成几率(1/100W)	被动技能4	被动技能4生成几率(1/100W)	被动技能5	被动技能5生成几率(1/100W)	被动技能6	被动技能6生成几率(1/100W)	被动技能7	被动技能7生成几率(1/100W)	被动技能8	被动技能8生成几率(1/100W)	被动技能9	被动技能9生成几率(1/100W)	被动技能10	被动技能10生成几率(1/100W)	标准寿命	标准力量资质	标准体质资质	标准灵气资质	标准身法资质	标准定力资质	成长率1	成长率2	成长率3	成长率4	成长率5	胆小(1/1000)	谨慎(1/1000)	忠诚(1/1000)	精明(1/1000)	勇猛(1/1000)	珍兽繁殖时间(ms)	同类参考珍兽类型
558	飘飘鸭	298	2	9	1	0	11	10	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	-1	64800	208	208	208	208	208	500	550	575	650	750	900	50	20	20	10	6000	558

按第一列定位 558。样本携带等级 1、寿命 64800、类型 298。只改第 4 列,保留 51 列和其余行。本片段含表头与该行,不能覆盖整表。

GetAttr(558) 的携带等级变为 2。隔离加载读回 2。阵营列仍不参与加载。实际携带检查需要实测。

验证与排查

启动有 Load PetAttrTable.txt ... OK!。558 携带等级 2,列数仍 51。用该编号珍兽核对携带等级。客户端不同步时显示可能仍是 1。恢复备份后重启。

资质字段

创建资质时 Spr 字段乘到灵气输出,Dex 乘到身法输出。繁殖函数曾把 m_SprPerception 赋给力量,随后 CreatePerception 会覆盖。

容量

MAXTYPE_NUMBER 65535。行数须 >0 且 <65535。

关联与依据

Public/PetTypeAttr.txt · Server/PetConfigTable.ini · Server/PetAttrPointDistribute.txt · Public/PetLevelUpTable.txt

其他配置及整理状态 · 服务端外网设置 · Lua 接口索引

  • Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.h:实际加载、解析、字段使用或示例关联依据
  • Common/GameStruct_Pet.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/PetRuler.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Obj/PetProcreate.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据
  • Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/DBC/GMDataBase.cpp:实际加载、解析、字段使用或示例关联依据
  • resources/Public/Config/PetAttrTable.txt:实际加载、解析、字段使用或示例关联依据

原始 InitPetAttrTable 隔离测试。携带、繁殖和战斗未在游戏中执行。