查看“︁工程参考/配置文件/Public/Mission EnterArea.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/Mission EnterArea.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/Mission_EnterArea.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] Mission_EnterArea.txt 是进入区域类任务表:前 6 列是脚本号、任务 ID 与四个客户端展示开关(本表没有「是否循环任务」列),第 7、8 列是交任务 NPC 坐标,第 9 到 13 列是五段描述,第 14 到 16 列是进入区域的对白与提示,第 17 到 22 列是交接场景、NPC 名与 Guid,第 23 到 26 列是等级与三个前置任务,第 27 到 33 列是最多 3 组「场景 + 区域」,第 34、35 列起是奖励,第 62 列是后续任务。样本 55 条数据记录、62 列。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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/Mission_EnterArea.txt</code>,相对于服务端工作目录;客户端从资源目录读取同名文件。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 游戏进程:TableInit::InitMissionEnterAreaTable 用 MissionOpen(file, "../Public/Config/Mission_EnterArea.txt", 62) 加载;客户端 GMDataBase.cpp 把 DBC_MISSION_ENTERAREA(id 180)注册到同名文件 |- | 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。 |} 服务端 InitMissionEnterAreaTable 先用 MissionOpen 断言列数等于 62,再用 MissionColumns(8, 16, 17, 18, 19, 20, 21, 22, 23, 33, 35, 45, 55, 61) 描述公共列,随后把 columns.m_RelationshipLoc 置为 -1——本表没有关系值与限时配置列,整组(金钱列 +2 到 +9)都不读取。 因此奖励区直接是:第 34 列金钱、第 35 列经验、第 36 到 45 列固定物品 5 组、第 46 到 55 列可选物品 5 组、第 56 到 61 列隐藏物品 3 组、第 62 列后续任务。 区域目标部分:第 27 列是区域总数(上限 MAX_MISSION_ENTER_AREA=3),之后按 2 列一组读「区域所在场景」与「区域」,源码注释明确要求先写场景 ID 再写区域 ID,顺序不可颠倒。客户端 GetMissionTableLayout 的脚本号区间为:1000000-1009999 杀怪、1010000-1019999 送信、1020000-1029999 进入区域、1030000-1039999 拾取、1050000-1059999 护送;1040000-1049999 这一段没有任何表映射(返回 FALSE)。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT INT INT INT INT INT INT INT STRING STRING STRING STRING STRING INT STRING STRING INT STRING INT 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</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:MissionIndex | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 任务脚本编号(主键)。服务端读第 1 列存为 m_nMissionIndex;客户端 GetMissionTableLayout 先按脚本号所在区间决定查哪一张任务表,再用它 Search_Index_EQU 定位记录。 | 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>INT:MissionId | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 任务 ID。服务端读第 2 列存为 m_MissionId。 | 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;">第 3 列</code><br>INT:任务类型(客户端) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 任务类型,只被客户端读取(BuildMissionInfoFromTable 存为 m_nKind)。 | 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:是否精英(客户端) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 是否精英任务,只被客户端读取(存为 m_nElite)。 | 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>INT:是否显示完成(客户端) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 是否显示完成,只被客户端读取(存为 m_nOKFail)。 | 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:环数(客户端) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 环数,只被客户端读取(存为 m_nLimitTime)。 | 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:完成任务的Npc的坐标(X) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 交任务 NPC 的坐标 X。服务端不读取这一列;客户端按 nAcceptX 存为 m_nPositionX,作为任务指引坐标。 | 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:完成任务的Npc的坐标(Y) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 交任务 NPC 的坐标 Z。服务端不读取这一列;客户端按 nAcceptX+1 存为 m_nPositionZ。没有 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;">第 9 列</code><br>STRING:任务名称$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 描述段 1。服务端 MissionLoadBase 把它拷进 m_szMisDesc1;客户端只取前 3 段,分别作为任务名(m_misName)、任务目标(m_misDesc)与任务状态(m_misState)。 | 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;">第 10 列</code><br>STRING:任务目标$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 描述段 2。服务端 MissionLoadBase 把它拷进 m_szMisDesc2;客户端只取前 3 段,分别作为任务名(m_misName)、任务目标(m_misDesc)与任务状态(m_misState)。 | 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>STRING:任务详细描述$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 描述段 3。服务端 MissionLoadBase 把它拷进 m_szMisDesc3;客户端只取前 3 段,分别作为任务名(m_misName)、任务目标(m_misDesc)与任务状态(m_misState)。 | 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;">第 12 列</code><br>STRING:任务继续信息$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 描述段 4。服务端 MissionLoadBase 把它拷进 m_szMisDesc4;客户端不读取第 4、5 段。 | 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;">第 13 列</code><br>STRING:任务完成信息$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 描述段 5。服务端 MissionLoadBase 把它拷进 m_szMisDesc5;客户端不读取第 4、5 段。 | 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>INT:进入区域是否有对白 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 进入区域时是否有对白。服务端读第 14 列存为 m_nHaveAreaDesc。 | 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>STRING:进入区域的对白$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 进入区域时播放的对白文本。服务端读第 15 列拷进 m_szAreaDesz。 | 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:进入区域的提示$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 进入区域时的提示文本。服务端读第 16 列拷进 m_szAreaTip。 | 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:接受任务场景ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 接受任务的场景 ID。服务端存为 m_nAcceptScene(未配置时为 INVALID_ID)。 | 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>STRING:接受任务NpcName$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 接受任务的 NPC 名称。服务端拷进 m_szAcceptName。 | 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:接受任务NpcGuid | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 接受任务的 NPC Guid。服务端存为 m_nAcceptNpc;客户端不读这一列。 | 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;">第 20 列</code><br>INT:完成任务场景ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 完成任务(交任务)的场景 ID。服务端存为 m_nCompleteScene;客户端存为 m_nSceneID。 | 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>STRING:完成任务NpcName$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 交任务的 NPC 名称。服务端拷进 m_szCompleteName;客户端存为 m_strActivePosName。 | 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:完成任务NpcGuid | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 交任务的 NPC Guid。服务端存为 m_nCompleteNpc;客户端不读这一列。 | 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;">第 23 列</code><br>INT:任务需求等级 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 接任务所需的等级。服务端存为 m_nLevelLimit(未配置时为 INVALID_ID);客户端存为 m_nLevel。 | 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>INT:前续任务Id1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 前续任务 ID 1。服务端存为 m_nPreMission[0](未配置时为 INVALID_ID)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0;三个槽位都要保留,不需要依赖时填 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 25 列</code><br>INT:前续任务Id2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 前续任务 ID 2。服务端存为 m_nPreMission[1](未配置时为 INVALID_ID)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0;三个槽位都要保留,不需要依赖时填 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 26 列</code><br>INT:前续任务Id3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 前续任务 ID 3。服务端存为 m_nPreMission[2](未配置时为 INVALID_ID)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0;三个槽位都要保留,不需要依赖时填 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 27 列</code><br>INT:进入区域总数 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 需要进入的区域总数。服务端读第 27 列存为 m_nEnterArea_Num,小于 0 或大于 MAX_MISSION_ENTER_AREA(3) 时归零。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(没有区域目标);有效范围 0 到 3。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 28 列</code><br>INT:区域所在场景1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个区域所在的场景 ID。服务端按 27+2i 存为 m_nEnterArea[0].m_nSceneArea;每组配置先写场景 ID 再写区域 ID,顺序不可颠倒。 | 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;">第 29 列</code><br>INT:区域1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 1 个区域的区域 ID。服务端按 28+2i 存为 m_nEnterArea[0].m_nEventArea。 | 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>INT:区域所在场景2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个区域所在的场景 ID。服务端按 27+2i 存为 m_nEnterArea[1].m_nSceneArea;每组配置先写场景 ID 再写区域 ID,顺序不可颠倒。 | 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:区域2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 2 个区域的区域 ID。服务端按 28+2i 存为 m_nEnterArea[1].m_nEventArea。 | 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;">第 32 列</code><br>INT:区域所在场景3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个区域所在的场景 ID。服务端按 27+2i 存为 m_nEnterArea[2].m_nSceneArea;每组配置先写场景 ID 再写区域 ID,顺序不可颠倒。 | 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>INT:区域3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第 3 个区域的区域 ID。服务端按 28+2i 存为 m_nEnterArea[2].m_nEventArea。 | 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:金钱奖励 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 金钱奖励。服务端存为 m_nGainMoney;客户端 AddMissionReward 以 MONEY 类型加入奖励列表。 | 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;">第 35 列</code><br>INT:经验奖励 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 经验奖励。服务端存为 m_nGainExp,列号固定是金钱列 +1(MissionColumns 里 m_GainExp = gainMoney + 1);客户端以 EXP 类型加入奖励列表。 | 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>INT:固定物品奖励1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 1 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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:个数1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 1 的数量。 | 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;">第 38 列</code><br>INT:固定物品奖励2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 2 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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>INT:个数2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 2 的数量。 | 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:固定物品奖励3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 3 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 41 列</code><br>INT:个数3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 3 的数量。 | 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>INT:固定物品奖励4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 4 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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:个数4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 4 的数量。 | 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;">第 44 列</code><br>INT:固定物品奖励5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 5 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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>INT:个数5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 固定物品 5 的数量。 | 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:可选物品奖励1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 1 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 47 列</code><br>INT:个数1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 1 的数量。 | 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>INT:可选物品奖励2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 2 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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:个数2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 2 的数量。 | 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;">第 50 列</code><br>INT:可选物品奖励3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 3 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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>INT:个数3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 3 的数量。 | 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:可选物品奖励4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 4 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 53 列</code><br>INT:个数4 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 4 的数量。 | 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;">第 54 列</code><br>INT:可选物品奖励5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 5 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 55 列</code><br>INT:个数5 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 可选物品 5 的数量。 | 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;">第 56 列</code><br>INT:隐藏奖励物品1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐藏物品 1 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 57 列</code><br>INT:个数1 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐藏物品 1 的数量。 | 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;">第 58 列</code><br>INT:隐藏奖励物品2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐藏物品 2 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 59 列</code><br>INT:个数2 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐藏物品 2 的数量。 | 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;">第 60 列</code><br>INT:隐藏奖励物品3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐藏物品 3 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 | 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;">第 61 列</code><br>INT:个数3 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 隐藏物品 3 的数量。 | 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;">第 62 列</code><br>INT:后续任务INDEX | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 后续任务的 INDEX。服务端存为 m_nNextMission(未配置时为 INVALID_ID)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把 1020000 号进入区域任务的经验奖励从 1460 改成 2000 === 修改前: <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 INT INT INT INT INT INT INT STRING STRING STRING STRING STRING INT STRING STRING INT STRING INT 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 MissionIndex MissionId 任务类型(客户端) 是否精英(客户端) 是否显示完成(客户端) 环数(客户端) 完成任务的Npc的坐标(X) 完成任务的Npc的坐标(Y) 任务名称$1$ 任务目标$1$ 任务详细描述$1$ 任务继续信息$1$ 任务完成信息$1$ 进入区域是否有对白 进入区域的对白$1$ 进入区域的提示$1$ 接受任务场景ID 接受任务NpcName$1$ 接受任务NpcGuid 完成任务场景ID 完成任务NpcName$1$ 完成任务NpcGuid 任务需求等级 前续任务Id1 前续任务Id2 前续任务Id3 进入区域总数 区域所在场景1 区域1 区域所在场景2 区域2 区域所在场景3 区域3 金钱奖励 经验奖励 固定物品奖励1 个数1 固定物品奖励2 个数2 固定物品奖励3 个数3 固定物品奖励4 个数4 固定物品奖励5 个数5 可选物品奖励1 个数1 可选物品奖励2 个数2 可选物品奖励3 个数3 可选物品奖励4 个数4 可选物品奖励5 个数5 隐藏奖励物品1 个数1 隐藏奖励物品2 个数2 隐藏奖励物品3 个数3 后续任务INDEX 1020000 495 17 0 1 0 240 175 无量玉壁 #{MIS_TAR_ADD_183} #{Mis_E_Wuliang_1020000} #{WLS_20080311_01} #{WLS_20080311_02} 1 #{WLS_20080311_11} 已眺望无量玉璧 6 辛双清 0 6 辛双清 0 3 -1 -1 -1 1 6 611 133 1460 10410060 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 INT INT INT INT INT INT INT STRING STRING STRING STRING STRING INT STRING STRING INT STRING INT 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 MissionIndex MissionId 任务类型(客户端) 是否精英(客户端) 是否显示完成(客户端) 环数(客户端) 完成任务的Npc的坐标(X) 完成任务的Npc的坐标(Y) 任务名称$1$ 任务目标$1$ 任务详细描述$1$ 任务继续信息$1$ 任务完成信息$1$ 进入区域是否有对白 进入区域的对白$1$ 进入区域的提示$1$ 接受任务场景ID 接受任务NpcName$1$ 接受任务NpcGuid 完成任务场景ID 完成任务NpcName$1$ 完成任务NpcGuid 任务需求等级 前续任务Id1 前续任务Id2 前续任务Id3 进入区域总数 区域所在场景1 区域1 区域所在场景2 区域2 区域所在场景3 区域3 金钱奖励 经验奖励 固定物品奖励1 个数1 固定物品奖励2 个数2 固定物品奖励3 个数3 固定物品奖励4 个数4 固定物品奖励5 个数5 可选物品奖励1 个数1 可选物品奖励2 个数2 可选物品奖励3 个数3 可选物品奖励4 个数4 可选物品奖励5 个数5 隐藏奖励物品1 个数1 隐藏奖励物品2 个数2 隐藏奖励物品3 个数3 后续任务INDEX 1020000 495 17 0 1 0 240 175 无量玉壁 #{MIS_TAR_ADD_183} #{Mis_E_Wuliang_1020000} #{WLS_20080311_01} #{WLS_20080311_02} 1 #{WLS_20080311_11} 已眺望无量玉璧 6 辛双清 0 6 辛双清 0 3 -1 -1 -1 1 6 611 133 2000 10410060 1 </pre> 按第一列定位 1020000 号任务。样本第 35 列经验奖励为 1460,改为 2000。只改第 35 列,保留 62 列。本片段含类型行、列名行与该行,不能覆盖整表。 本表没有关系值与限时列,经验奖励紧接在金钱奖励之后(第 34、35 列)。改完需要重启服务端才会生效。 == 验证与排查 == 服务端启动日志里 InitMissionEnterAreaTable 会打印 “Load InitMissionEnterAreaTable.txt ... OK! Count=…”。改动后重启,接取该任务走到目标区域确认触发与完成判定,并核对进入时的对白与提示。列数必须等于 62,否则整表不加载。失败时恢复备份并重启。 === 本表没有关系值与限时列 === 服务端把 m_RelationshipLoc 置为 -1,MissionLoadBase 会跳过整个关系值与限时分支。奖励区从金钱 / 经验直接连到固定物品,不要照搬杀怪表去补关系值列,会改变列数导致整表加载失败。 === 区域组先场景后区域 === 第 28 到 33 列是 3 组「区域所在场景、区域」,源码注释强调顺序不可颠倒。写反会导致任务永远不满足。 === 区域上限 3 === MAX_MISSION_ENTER_AREA=3,整表只为 3 组留列。第 27 列填超过 3 会被归零。 === 没有「是否循环任务」列 === 与杀怪 / 送信 / 拾取三张表不同,本表(以及护送表)把四个客户端开关之后直接接交任务 NPC 坐标,服务端也不读 m_nMissionRoundable。 == 关联与依据 == [[工程参考/配置文件/Public/Mission_Husong.txt|Public/Mission_Husong.txt]] · [[工程参考/配置文件/Public/Mission_KillMonster.txt|Public/Mission_KillMonster.txt]] · [[工程参考/配置文件/Public/Mission_NpcDefault.txt|Public/Mission_NpcDefault.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/MissionExtend/GameStruct_Mission.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;">Client/Client/Game/DataPool/GMDP_Struct_Quest.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/Mission_EnterArea.txt</code>:实际加载、解析、字段使用或示例关联依据 本页核对 InitMissionEnterAreaTable 的 MissionOpen 列数(62)、MissionColumns 的 0 基公共列索引、m_RelationshipLoc=-1 的跳过分支、区域目标的两列循环与 MAX_MISSION_ENTER_AREA=3,以及客户端 DBC_MISSION_ENTERAREA 注册项与 MTD_NONE(客户端不读取本表的需求条目);未启动服务端与游戏,区域触发的实际表现需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/Mission EnterArea.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息