查看“︁工程参考/配置文件/Public/MonsterRespawnPos.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/MonsterRespawnPos.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/MonsterRespawnPos.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] MonsterRespawnPos.txt 是怪物刷新点坐标表:第 1 列是刷新脚本编号,第 2、3 列是策划备注,第 4 列是有效坐标组数,第 5 列起是 16 组「X 坐标、Z 坐标、朝向角度」。样本 267 条数据记录、52 列。当前只检索到服务端加载入口,没检索到客户端读取入口。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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/MonsterRespawnPos.txt</code>,相对于服务端工作目录。当前检索未发现客户端加载本文件的入口。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 游戏进程:TableInit::InitMonsterRespawnPosManager 调用 g_MonsterRespawnPosManager.InitFromDB("../Public/Config/MonsterRespawnPos.txt") |- | 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。 |} MonsterRespawnPosManager::InitFromDB 用带密钥的 DBCFile(0, TRUE, "<EMPTY>") 打开本文件,逐行读第 1 列存为 m_nScriptID;若等于 INVALID_ID(一般为 -1)就把该行的坐标数量置 0 并跳过。 有效行读第 4 列得到组数 nPosCount,然后按 nColumn = 4 + j*3 循环:第 5+3j 列用 fValue 读 X、第 6+3j 列用 fValue 读 Z、第 7+3j 列读角度并按 角度*2*3.1415/360 转成弧度(夹到 0 到 6.283)。存满 MAX_MONSTER_RESPAWN_POS=16 组就 break,多出来的组被丢弃。 第 2、3 列是策划备注,服务端不读取;表里没有 Y 坐标列,只有 X 与 Z。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT STRING STRING INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT 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:scriptID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 刷新脚本编号(主键顺序)。MonsterRespawnPosManager::InitFromDB 读第 1 列(Search_Posistion(i,0))存为 m_nScriptID;取值等于 INVALID_ID(一般为 -1)的行被当成空行,坐标数量置 0。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 为 -1 时该行不产生任何刷新点。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>STRING:策划用 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 策划备注文本,服务端不读取。 | 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>STRING:策划用 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 策划备注文本,服务端不读取。 | 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;">第 4 列</code><br>INT:出生坐标数量 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 本行有效的刷新点组数,读第 4 列(Search_Posistion(i,3))。循环里按 nColumn = 4 + j*3 取坐标,超过 MAX_MONSTER_RESPAWN_POS(16)的组会被 break 丢弃。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0;填超过 16 只取前 16 组。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>FLOAT:x0 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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>FLOAT:z0 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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:dir0 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 8 列</code><br>FLOAT:x1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 9 列</code><br>FLOAT:z1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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:dir1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 11 列</code><br>FLOAT:x2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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>FLOAT:z2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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>INT:dir2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 14 列</code><br>FLOAT:x3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 15 列</code><br>FLOAT:z3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 16 列</code><br>INT:dir3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 4 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 17 列</code><br>FLOAT:x4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 18 列</code><br>FLOAT:z4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 19 列</code><br>INT:dir4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 5 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 20 列</code><br>FLOAT:x5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 21 列</code><br>FLOAT:z5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 22 列</code><br>INT:dir5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 6 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 23 列</code><br>FLOAT:x6 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 24 列</code><br>FLOAT:z6 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 25 列</code><br>INT:dir6 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 7 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 26 列</code><br>FLOAT:x7 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 8 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 27 列</code><br>FLOAT:z7 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 8 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 28 列</code><br>INT:dir7 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 8 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 29 列</code><br>FLOAT:x8 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 9 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 30 列</code><br>FLOAT:z8 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 9 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 31 列</code><br>INT:dir8 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 9 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 32 列</code><br>FLOAT:x9 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 10 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 33 列</code><br>FLOAT:z9 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 10 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 34 列</code><br>INT:dir9 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 10 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 35 列</code><br>FLOAT:x10 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 11 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 36 列</code><br>FLOAT:z10 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 11 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 37 列</code><br>INT:dir10 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 11 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 38 列</code><br>FLOAT:x11 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 39 列</code><br>FLOAT:z11 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 40 列</code><br>INT:dir11 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 12 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 41 列</code><br>FLOAT:x12 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 13 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 42 列</code><br>FLOAT:z12 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 13 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 43 列</code><br>INT:dir12 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 13 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 44 列</code><br>FLOAT:x13 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 14 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 45 列</code><br>FLOAT:z13 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 14 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 46 列</code><br>INT:dir13 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 14 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 47 列</code><br>FLOAT:x14 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 15 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 48 列</code><br>FLOAT:z14 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 15 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 49 列</code><br>INT:dir14 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 15 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 50 列</code><br>FLOAT:x15 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 16 个刷新点的 X 坐标,用 fValue 直接读取(不经整数转换)。 | 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;">第 51 列</code><br>FLOAT:z15 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 16 个刷新点的 Z 坐标,用 fValue 直接读取。没有 Y 坐标列。 | 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;">第 52 列</code><br>INT:dir15 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 16 个刷新点的朝向,单位是角度。服务端按 角度*2*3.1415/360 转成弧度,并把结果夹到 0 到 6.283。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(弧度 0);负数会被夹成 0。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把 320301 号刷新脚本第 1 个出生点的朝向从 0 度改成 90 度 === 修改前: <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 STRING INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT scriptID 策划用 策划用 出生坐标数量 x0 z0 dir0 x1 z1 dir1 x2 z2 dir2 x3 z3 dir3 x4 z4 dir4 x5 z5 dir5 x6 z6 dir6 x7 z7 dir7 x8 z8 dir8 x9 z9 dir9 x10 z10 dir10 x11 z11 dir11 x12 z12 dir12 x13 z13 dir13 x14 z14 dir14 x15 z15 dir15 320301 嵩山精英怪物 [头目]恶猿 4 64 98 0 58 105 0 86 138 0 92 124 0 </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 STRING INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT FLOAT FLOAT INT scriptID 策划用 策划用 出生坐标数量 x0 z0 dir0 x1 z1 dir1 x2 z2 dir2 x3 z3 dir3 x4 z4 dir4 x5 z5 dir5 x6 z6 dir6 x7 z7 dir7 x8 z8 dir8 x9 z9 dir9 x10 z10 dir10 x11 z11 dir11 x12 z12 dir12 x13 z13 dir13 x14 z14 dir14 x15 z15 dir15 320301 嵩山精英怪物 [头目]恶猿 4 64 98 90 58 105 0 86 138 0 92 124 0 </pre> 按第一列定位 320301 号刷新脚本。样本第 7 列(第 1 组的 dir0)为 0,改为 90。只改第 7 列,保留 52 列。本片段含类型行、列名行与该行,不能覆盖整表。 朝向按角度填写,服务端会换算成弧度;改完需要重启服务端才会生效。 == 验证与排查 == 服务端启动后到对应场景观察怪物出生位置与朝向是否与配置一致;第 1 列写成 -1 的行不会产生刷新点。注意第 4 列的组数决定读几组,填得比实际坐标少会漏掉后面的点,多于 16 时只取前 16 组。失败时恢复备份并重启。 === 坐标必须是浮点写法 === 第 5、6 列(以及后续每组的前两列)用 fValue 直接读取,不经过整数转换,需要按浮点格式填写。表里没有 Y 坐标列,不要试图补一列。 === 朝向单位是角度不是弧度 === 第 7 列(以及每组第 3 列)填角度,服务端内部按 角度*2*3.1415/360 换算,并把结果夹到 0 到 6.283。负值会被夹成 0。 === 最多 16 组 === 存满 MAX_MONSTER_RESPAWN_POS=16 组后 break,第 4 列即使写更大的值,多出来的坐标也不会生效。 === 本文件用密钥打开 === 服务端用 DBCFile(0, TRUE, "<EMPTY>") 带解密打开,与不加参数的普通 DBCFile 不同;手工改文本后仍需保持 DBC 文本格式(类型行 + 列名行 + 数据行)。 == 关联与依据 == [[工程参考/配置文件/Public/MonsterAttrExTable.txt|Public/MonsterAttrExTable.txt]] · [[工程参考/配置文件/Public/SceneAttr.txt|Public/SceneAttr.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <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/Module/MonsterRespawnRule.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Module/MonsterRespawnRule.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/MonsterRespawnPos.txt</code>:实际加载、解析、字段使用或示例关联依据 本页核对 TableInit::InitMonsterRespawnPosManager 的调用路径、MonsterRespawnPosManager::InitFromDB 的列索引与角度换算、MonsterRespawnRule.h 的 MAX_MONSTER_RESPAWN_POS=16,以及第 2、3 列服务端不读取的事实;未启动服务端与游戏,刷新点实际分布需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/MonsterRespawnPos.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息