查看“︁工程参考/配置文件/Public/CharMount.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/CharMount.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/CharMount.txt</span>}} __NOTOC__ <div class="config-file-reference" style="max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;overflow-wrap:anywhere;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] CharMount.txt 登记坐骑。第 1 列是编号,第 3 到 12 列依次是准乘人数、模型编号、抬高高度、配方、主坐动作组、主绑定点、副坐动作组、副绑定点、移动声音与可否跳跃。样本 57 行、24 列。 服务端读 9 个整型与浮点列,三个字符串列(名称、主绑定点、副绑定点)一律置空不读;客户端的结构体覆盖全部 12 列。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 项目 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 说明 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 运行文件 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">../Public/Config/CharMount.txt</code>(宏 FILE_CHARMOUNT),相对于 GameServer 工作目录;客户端从资源目录按同名文件加载。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | GameServer:TableInit::InitDRideInfoTable 用 DBCFile::OpenFromTXT 打开 FILE_CHARMOUNT;客户端经 DBC_CHARACTER_MOUNT 读同一份 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 停服后备份并修改实际副本,重启 Server;客户端一侧需要随资源更新并重启客户端。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本格式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">GB18030-compatible</code>,<code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>。保留原编码;源码读取器不会自动把中文转为 UTF-8。 |} 服务端按 <code style="white-space:normal;overflow-wrap:anywhere;">_DBC_CHARACTER_MOUNT</code> 枚举取列:ID=0、NAME=1、MAXPASSENGERCOUNT=2、MODELID=3、ADDHEIGHT=4、RECIPE=5、MAINACTIONFILEINDEX=6、MAINATTACHLOCATOR=7、SECONDACTIONFILEINDEX=8、SECONDATTACHLOCATOR=9、MOVESOUNDID=10、CANJUMP=11。 {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 检查项 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 结论 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 编号怎么定位 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 直接当作数组下标 m_aDRideInfo[nDataID],必须落在 0 到 149 之间(MAX_DRIDE_INFO_COUNT)。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 编号越界 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | AssertEx 并 continue,只跳过该行,其余照常加载。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 字符串列 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2、8、10 列服务端置空,只有客户端读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 哪个是 FLOAT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 列抬高高度。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可否跳跃 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 列,非 0 表示可以跳跃。 |} == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT STRING INT INT FLOAT INT INT INT STRING INT INT STRING STRING STRING STRING STRING INT INT INT INT INT INT FLOAT INT</code>;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。 == 字段详解 == 列号从 1 开始,源码列下标从 0 开始。 {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:34%;text-align:left;background:#edf3f2;padding:8px;" | 字段与类型 ! scope="col" style="width:42%;text-align:left;background:#edf3f2;padding:8px;" | 含义与修改要点 ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 缺项或特殊值 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 1 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 坐骑编号。服务端把它当作数组下标写入 m_aDRideInfo[nDataID],不在 0 到 149 之间会 AssertEx 并跳过该行。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。坐骑名称。服务端把 m_pszName 置空,不读取本列。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 准乘人数。保存为 m_nMaxPassengerCount。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 4 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 模型编号。保存为 m_nModelID。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>FLOAT:FLOAT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 骑乘后角色抬高的高度,按 FLOAT 读取。保存为 m_fAddHeight。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 6 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 骑乘配方编号。保存为 m_nRecipe。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 7 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 主坐动作组索引。保存为 m_nMainActionFileIndex。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 8 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。主坐绑定点名称。服务端把 m_pszMainAttachLocator 置空,不读取本列。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 9 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 副坐动作组索引。保存为 m_nSecondActionFileIndex。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 10 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。副坐绑定点名称。服务端把 m_pszSecondAttachLocator 置空,不读取本列。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 11 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 移动声音编号。保存为 m_nMoveSoundID。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 12 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 是否能跳跃。保存为 m_nCanJump。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 13 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 14 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 15 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 16 列</code><br>STRING:STRING | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 17 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 18 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 19 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 20 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 21 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 22 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 23 列</code><br>FLOAT:FLOAT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 24 列</code><br>INT:INT | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读取。undefined | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不生效。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把 0 号坐骑(虎)改成不能跳跃 === 修改前: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT STRING INT INT FLOAT INT INT INT STRING INT INT STRING STRING STRING STRING STRING INT INT INT INT INT INT FLOAT INT INT STRING INT INT FLOAT INT INT INT STRING INT INT STRING STRING STRING STRING STRING INT INT INT INT INT INT FLOAT INT 0 虎 1 1010 0.5 447 2877 2878 attach1 2877 2878 attach1 attach1 attach1 attach1 attach1 -1 1 -1 -1 0 -1 0 -1</pre> 修改后: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT STRING INT INT FLOAT INT INT INT STRING INT INT STRING STRING STRING STRING STRING INT INT INT INT INT INT FLOAT INT INT STRING INT INT FLOAT INT INT INT STRING INT INT STRING STRING STRING STRING STRING INT INT INT INT INT INT FLOAT INT 0 虎 1 1010 0.5 447 2877 2878 attach1 2877 2878 0 attach1 attach1 attach1 attach1 -1 1 -1 -1 0 -1 0 -1</pre> 按第 1 列定位 0 号坐骑(虎)。第 12 列是是否能跳跃,样本值 1,这里改成 0,其余 11 列与另 56 行全部保留。 第 2 列名称「虎」与第 8、10 列的绑定点服务端都不读,改它们只影响客户端。第 5 列抬高高度是 FLOAT,样本值 0.5。 示例块含类型行、列名行与该行原文,不能覆盖整张表。改完需要重启 Server,并同步更新客户端资源。 == 验证与排查 == Server 启动日志出现 “Load CharMount.txt ... OK!”。改完重启后上马,确认抬升高度、准乘人数、移动声音与跳跃行为符合新值。若日志出现 “Invalid CharMount ID”,说明有行的第 1 列落在 0 到 149 之外,那一行会被跳过。失败时恢复备份并重启。 === 编号就是数组下标 === 第 1 列必须落在 0 到 149 之间。越界的那一行会被 AssertEx 并跳过,其余行照常加载,所以症状常常是「某一个坐骑不见了」。 === 三个字符串列服务端不读 === 名称、主绑定点、副绑定点都被置成 NULL。改它们不会影响服务端,只会影响客户端显示与挂点。 === 只有抬高高度是浮点 === 第 5 列按 FLOAT 读取,其余整型列按 INT。类型行写错会让解析值完全不同。 === 和 Public/BusInfo.txt 的区别 === BusInfo 是交通工具(有路线与停站),CharMount 是玩家坐骑,两张表编号空间独立,不要互相参照。 == 关联与依据 == [[工程参考/配置文件/Public/BusInfo.txt|Public/BusInfo.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Common/TDDBC_Struct.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DBC/GMDataBase.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/CharMount.txt</code>:实际加载、解析、字段使用或示例关联依据 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/CharMount.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息