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

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


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

Mission_KillMonster.txt 是杀怪类任务表:前 6 列是脚本号、任务 ID 与四个客户端展示开关,第 7 列起是是否循环、交任务 NPC 坐标、五段描述、交接 NPC、等级与前置任务,第 25 列起是最多 5 种「怪物名称 / 怪物标志 / 击杀数量」,最后是金钱经验、关系值与限时、三组物品奖励和后续任务。样本 174 条数据记录、77 列。服务端与客户端读同一批列号。

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

文件位置与生效

项目 说明
运行文件 ../Public/Config/Mission_KillMonster.txt,相对于服务端工作目录;客户端从资源目录读取同名文件。
读取程序 Server 游戏进程:TableInit::InitMissionKillMonsterTable 用 MissionOpen(file, "../Public/Config/Mission_KillMonster.txt", 77) 加载;客户端 GMDataBase.cpp 把 DBC_MISSION_KILLMONSTER(id 172)注册到同名文件,GMDP_Struct_Quest.cpp 按脚本号区间查表
生效方法 正常保存并停服后,重启读取此文件的 Server;客户端需要随资源更新并重启客户端。当前检索未发现单独重载本文件的可用入口。
样本格式 GB18030-compatibleCRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

服务端 InitMissionKillMonsterTable 先用 MissionOpen 断言列数等于 77,再用 MissionColumns(9, 14, 15, 16, 17, 18, 19, 20, 21, 40, 50, 60, 70, 76)(0 基)描述公共列,交给 MissionLoadBase 读取:第 10 到 14 列是五段描述,第 15 到 20 列是交接场景、NPC 名与 Guid,第 21 列是等级,第 22 到 24 列是三个前置任务,第 41、42 列是金钱与经验,关系值与限时组从第 43 列起共 8 列,固定 / 可选 / 隐藏物品分别从第 51、61、71 列起成对读取,第 77 列是后续任务。

击杀目标部分单独处理:第 25 列是种类数(上限 MAX_MISSION_KILL_INFO=5,越界归零),之后按 3 列一组读怪物名称、怪物标志与击杀数量。客户端 GetMissionTableLayout 的脚本号区间为:1000000-1009999 杀怪、1010000-1019999 送信、1020000-1029999 进入区域、1030000-1039999 拾取、1050000-1059999 护送;1040000-1049999 这一段没有任何表映射(返回 FALSE)。

注意样本第 25 列列名写作「击杀种类数(最多8)」,但整表只为 5 组目标留了列(第 26 到 40 列),实际上限是 5。

文件格式

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

字段详解

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

字段与类型 含义与修改要点 缺项或特殊值
第 1 列
INT:MissionIndex
任务脚本编号(主键)。服务端读第 1 列存为 m_nMissionIndex;客户端 GetMissionTableLayout 先按脚本号所在区间决定查哪一张任务表,再用它 Search_Index_EQU 定位记录。 空为 0;必须落在对应区间,否则客户端查不到记录。
第 2 列
INT:MissionId
任务 ID。服务端读第 2 列存为 m_MissionId。 空为 0。
第 3 列
INT:任务类型(客户端)
任务类型,只被客户端读取(BuildMissionInfoFromTable 存为 m_nKind)。 空为 0。
第 4 列
INT:是否精英(客户端)
是否精英任务,只被客户端读取(存为 m_nElite)。 空为 0。
第 5 列
INT:是否显示完成(客户端)
是否显示完成,只被客户端读取(存为 m_nOKFail)。 空为 0。
第 6 列
INT:环数(客户端)
环数,只被客户端读取(存为 m_nLimitTime)。 空为 0。
第 7 列
INT:是否循环任务
是否循环任务。服务端读该列存为 m_nMissionRoundable。 空为 0(非循环)。
第 8 列
INT:完成任务的Npc的坐标(X)
交任务 NPC 的坐标 X。服务端不读取这一列;客户端按 nAcceptX 存为 m_nPositionX,作为任务指引坐标。 空为 0。
第 9 列
INT:完成任务的Npc的坐标(Y)
交任务 NPC 的坐标 Z。服务端不读取这一列;客户端按 nAcceptX+1 存为 m_nPositionZ。没有 Y 坐标列。 空为 0。
第 10 列
STRING:任务名称$1$
描述段 1。服务端 MissionLoadBase 把它拷进 m_szMisDesc1;客户端只取前 3 段,分别作为任务名(m_misName)、任务目标(m_misDesc)与任务状态(m_misState)。 空字符串。
第 11 列
STRING:任务目标$1$
描述段 2。服务端 MissionLoadBase 把它拷进 m_szMisDesc2;客户端只取前 3 段,分别作为任务名(m_misName)、任务目标(m_misDesc)与任务状态(m_misState)。 空字符串。
第 12 列
STRING:任务详细描述$1$
描述段 3。服务端 MissionLoadBase 把它拷进 m_szMisDesc3;客户端只取前 3 段,分别作为任务名(m_misName)、任务目标(m_misDesc)与任务状态(m_misState)。 空字符串。
第 13 列
STRING:任务继续信息$1$
描述段 4。服务端 MissionLoadBase 把它拷进 m_szMisDesc4;客户端不读取第 4、5 段。 空字符串。
第 14 列
STRING:任务完成信息$1$
描述段 5。服务端 MissionLoadBase 把它拷进 m_szMisDesc5;客户端不读取第 4、5 段。 空字符串。
第 15 列
INT:接受任务场景ID
接受任务的场景 ID。服务端存为 m_nAcceptScene(未配置时为 INVALID_ID)。 空为 0。
第 16 列
STRING:接受任务NpcName$1$
接受任务的 NPC 名称。服务端拷进 m_szAcceptName。 空字符串。
第 17 列
INT:接受任务NpcGuid
接受任务的 NPC Guid。服务端存为 m_nAcceptNpc;客户端不读这一列。 空为 0。
第 18 列
INT:完成任务场景ID
完成任务(交任务)的场景 ID。服务端存为 m_nCompleteScene;客户端存为 m_nSceneID。 空为 0。
第 19 列
STRING:完成任务NpcName$1$
交任务的 NPC 名称。服务端拷进 m_szCompleteName;客户端存为 m_strActivePosName。 空字符串。
第 20 列
INT:完成任务NpcGuid
交任务的 NPC Guid。服务端存为 m_nCompleteNpc;客户端不读这一列。 空为 0。
第 21 列
INT:任务需求等级
接任务所需的等级。服务端存为 m_nLevelLimit(未配置时为 INVALID_ID);客户端存为 m_nLevel。 空为 0。
第 22 列
INT:前续任务Id1
前续任务 ID 1。服务端存为 m_nPreMission[0](未配置时为 INVALID_ID)。 空为 0;三个槽位都要保留,不需要依赖时填 0。
第 23 列
INT:前续任务Id2
前续任务 ID 2。服务端存为 m_nPreMission[1](未配置时为 INVALID_ID)。 空为 0;三个槽位都要保留,不需要依赖时填 0。
第 24 列
INT:前续任务Id3
前续任务 ID 3。服务端存为 m_nPreMission[2](未配置时为 INVALID_ID)。 空为 0;三个槽位都要保留,不需要依赖时填 0。
第 25 列
INT:击杀种类数(最多8)
需要击杀的怪物种类数。服务端读第 25 列存为 m_TypeCount,小于 0 或大于 MAX_MISSION_KILL_INFO(5) 时归零;客户端按同一列作为循环次数(并再与 5 取小)。注意样本列名写作「最多8」,但实际只有 5 组列(第 26 到 40 列),超出 5 的种类数会被截断。 空为 0(没有击杀目标);有效范围 0 到 5。
第 26 列
STRING:怪物名称1$1$
第 1 种目标的怪物名称。服务端按 25+3i 拷进 m_KillInfo[0].m_szMonsterName;客户端存为击杀目标的显示名。 空字符串。
第 27 列
INT:怪物标志1
第 1 种目标的怪物标志(怪物编号类 ID)。服务端存为 m_KillInfo[0].m_nMonsterId,客户端存为 m_uNPCID。 空为 0。
第 28 列
INT:击杀数量1
第 1 种目标需要击杀的数量。服务端存为 m_KillInfo[0].m_nKillCount,客户端存为 m_yCount(按字节存储,不要超过 255)。 空为 0。
第 29 列
STRING:怪物名称2$1$
第 2 种目标的怪物名称。服务端按 25+3i 拷进 m_KillInfo[1].m_szMonsterName;客户端存为击杀目标的显示名。 空字符串。
第 30 列
INT:怪物标志2
第 2 种目标的怪物标志(怪物编号类 ID)。服务端存为 m_KillInfo[1].m_nMonsterId,客户端存为 m_uNPCID。 空为 0。
第 31 列
INT:击杀数量2
第 2 种目标需要击杀的数量。服务端存为 m_KillInfo[1].m_nKillCount,客户端存为 m_yCount(按字节存储,不要超过 255)。 空为 0。
第 32 列
STRING:怪物名称3$1$
第 3 种目标的怪物名称。服务端按 25+3i 拷进 m_KillInfo[2].m_szMonsterName;客户端存为击杀目标的显示名。 空字符串。
第 33 列
INT:怪物标志3
第 3 种目标的怪物标志(怪物编号类 ID)。服务端存为 m_KillInfo[2].m_nMonsterId,客户端存为 m_uNPCID。 空为 0。
第 34 列
INT:击杀数量3
第 3 种目标需要击杀的数量。服务端存为 m_KillInfo[2].m_nKillCount,客户端存为 m_yCount(按字节存储,不要超过 255)。 空为 0。
第 35 列
STRING:怪物名称4$1$
第 4 种目标的怪物名称。服务端按 25+3i 拷进 m_KillInfo[3].m_szMonsterName;客户端存为击杀目标的显示名。 空字符串。
第 36 列
INT:怪物标志4
第 4 种目标的怪物标志(怪物编号类 ID)。服务端存为 m_KillInfo[3].m_nMonsterId,客户端存为 m_uNPCID。 空为 0。
第 37 列
INT:击杀数量4
第 4 种目标需要击杀的数量。服务端存为 m_KillInfo[3].m_nKillCount,客户端存为 m_yCount(按字节存储,不要超过 255)。 空为 0。
第 38 列
STRING:怪物名称5$1$
第 5 种目标的怪物名称。服务端按 25+3i 拷进 m_KillInfo[4].m_szMonsterName;客户端存为击杀目标的显示名。 空字符串。
第 39 列
INT:怪物标志5
第 5 种目标的怪物标志(怪物编号类 ID)。服务端存为 m_KillInfo[4].m_nMonsterId,客户端存为 m_uNPCID。 空为 0。
第 40 列
INT:击杀数量5
第 5 种目标需要击杀的数量。服务端存为 m_KillInfo[4].m_nKillCount,客户端存为 m_yCount(按字节存储,不要超过 255)。 空为 0。
第 41 列
INT:金钱奖励
金钱奖励。服务端存为 m_nGainMoney;客户端 AddMissionReward 以 MONEY 类型加入奖励列表。 空或 0 不发钱。
第 42 列
INT:经验奖励
经验奖励。服务端存为 m_nGainExp,列号固定是金钱列 +1(MissionColumns 里 m_GainExp = gainMoney + 1);客户端以 EXP 类型加入奖励列表。 空为 0。
第 43 列
INT:关系值存储位置
关系值存储位置。服务端存为 m_nRelationshipLoc;这一列大于等于 0 时才会继续读取后面 7 列关系值与限时配置。 空为 0。
第 44 列
INT:关系值奖励
完成该任务给予的关系值。服务端存为 m_nRelationshipAward。 空为 0。
第 45 列
STRING:关系值奖励提示$1$
关系值奖励的提示文本。服务端拷进 m_szRelationshipAwardDesc。 空字符串。
第 46 列
INT:放弃任务关系值惩罚
放弃任务时扣除的关系值。服务端存为 m_nRelationshipPunishment。 空为 0。
第 47 列
STRING:关系值惩罚提示$1$
关系值惩罚的提示文本。服务端拷进 m_szRelationshipPunishDesc。 空字符串。
第 48 列
INT:放弃任务后禁止接任务的时间存储位置
放弃任务后禁止再接任务的时间存储位置。服务端存为 m_nLimitedTimeLoc。 空为 0。
第 49 列
INT:禁止的时间长度,秒
禁止再接任务的时间长度,单位是秒。服务端存为 m_nLimitedTime。 空为 0。
第 50 列
STRING:时间限制内接任务的提示$1$
处在时间限制内时接任务的提示文本。服务端拷进 m_szLimitedTimeDesc。 空字符串。
第 51 列
INT:固定物品奖励1
固定物品 1 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 52 列
INT:个数1
固定物品 1 的数量。 空为 0。
第 53 列
INT:固定物品奖励2
固定物品 2 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 54 列
INT:个数2
固定物品 2 的数量。 空为 0。
第 55 列
INT:固定物品奖励3
固定物品 3 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 56 列
INT:个数3
固定物品 3 的数量。 空为 0。
第 57 列
INT:固定物品奖励4
固定物品 4 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 58 列
INT:个数4
固定物品 4 的数量。 空为 0。
第 59 列
INT:固定物品奖励5
固定物品 5 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 60 列
INT:个数5
固定物品 5 的数量。 空为 0。
第 61 列
INT:可选物品奖励1
可选物品 1 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 62 列
INT:个数1
可选物品 1 的数量。 空为 0。
第 63 列
INT:可选物品奖励2
可选物品 2 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 64 列
INT:个数2
可选物品 2 的数量。 空为 0。
第 65 列
INT:可选物品奖励3
可选物品 3 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 66 列
INT:个数3
可选物品 3 的数量。 空为 0。
第 67 列
INT:可选物品奖励4
可选物品 4 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 68 列
INT:个数4
可选物品 4 的数量。 空为 0。
第 69 列
INT:可选物品奖励5
可选物品 5 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 70 列
INT:个数5
可选物品 5 的数量。 空为 0。
第 71 列
INT:隐藏奖励物品1
隐藏物品 1 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 72 列
INT:个数1
隐藏物品 1 的数量。 空为 0。
第 73 列
INT:隐藏奖励物品2
隐藏物品 2 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 74 列
INT:个数2
隐藏物品 2 的数量。 空为 0。
第 75 列
INT:隐藏奖励物品3
隐藏物品 3 的物品 ID。服务端 MissionReadItems 从该列起成对读(物品 ID, 数量),物品 ID 小于等于 0 时立即停止,后面的条目不再读取;客户端同样按 5 组 / 3 组成对读取。 填 0 或留空会中断该组后面的条目。
第 76 列
INT:个数3
隐藏物品 3 的数量。 空为 0。
第 77 列
INT:后续任务INDEX
后续任务的 INDEX。服务端存为 m_nNextMission(未配置时为 INVALID_ID)。 空为 0。

常用修改实例

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

把 1000000 号杀怪任务(高山白猿)的经验奖励从 580 改成 800

修改前:

INT	INT	INT	INT	INT	INT	INT	INT	INT	STRING	STRING	STRING	STRING	STRING	INT	STRING	INT	INT	STRING	INT	INT	INT	INT	INT	INT	STRING	INT	INT	STRING	INT	INT	STRING	INT	INT	STRING	INT	INT	STRING	INT	INT	INT	INT	INT	INT	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
MissionIndex	MissionId	任务类型(客户端)	是否精英(客户端)	是否显示完成(客户端)	环数(客户端)	是否循环任务	完成任务的Npc的坐标(X)	完成任务的Npc的坐标(Y)	任务名称$1$	任务目标$1$	任务详细描述$1$	任务继续信息$1$	任务完成信息$1$	接受任务场景ID	接受任务NpcName$1$	接受任务NpcGuid	完成任务场景ID	完成任务NpcName$1$	完成任务NpcGuid	任务需求等级	前续任务Id1	前续任务Id2	前续任务Id3	击杀种类数(最多8)	怪物名称1$1$	怪物标志1	击杀数量1	怪物名称2$1$	怪物标志2	击杀数量2	怪物名称3$1$	怪物标志3	击杀数量3	怪物名称4$1$	怪物标志4	击杀数量4	怪物名称5$1$	怪物标志5	击杀数量5	金钱奖励	经验奖励	关系值存储位置	关系值奖励	关系值奖励提示$1$	放弃任务关系值惩罚	关系值惩罚提示$1$	放弃任务后禁止接任务的时间存储位置	禁止的时间长度,秒	时间限制内接任务的提示$1$	固定物品奖励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
1000000	490	17	0	1	0		92	127	高山白猿	#{MIS_TAR_ADD_244}	#{Mis_K_Wuliang_1000000}	#{RW_20080321_54}	#{RW_20080321_59}	6	马五德	0	6	马五德	0	1	-1	-1	-1	1	高山白猿	1500	8													135	580	-1																		10402062	1	10400060	1	10401061	1											

修改后:

INT	INT	INT	INT	INT	INT	INT	INT	INT	STRING	STRING	STRING	STRING	STRING	INT	STRING	INT	INT	STRING	INT	INT	INT	INT	INT	INT	STRING	INT	INT	STRING	INT	INT	STRING	INT	INT	STRING	INT	INT	STRING	INT	INT	INT	INT	INT	INT	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
MissionIndex	MissionId	任务类型(客户端)	是否精英(客户端)	是否显示完成(客户端)	环数(客户端)	是否循环任务	完成任务的Npc的坐标(X)	完成任务的Npc的坐标(Y)	任务名称$1$	任务目标$1$	任务详细描述$1$	任务继续信息$1$	任务完成信息$1$	接受任务场景ID	接受任务NpcName$1$	接受任务NpcGuid	完成任务场景ID	完成任务NpcName$1$	完成任务NpcGuid	任务需求等级	前续任务Id1	前续任务Id2	前续任务Id3	击杀种类数(最多8)	怪物名称1$1$	怪物标志1	击杀数量1	怪物名称2$1$	怪物标志2	击杀数量2	怪物名称3$1$	怪物标志3	击杀数量3	怪物名称4$1$	怪物标志4	击杀数量4	怪物名称5$1$	怪物标志5	击杀数量5	金钱奖励	经验奖励	关系值存储位置	关系值奖励	关系值奖励提示$1$	放弃任务关系值惩罚	关系值惩罚提示$1$	放弃任务后禁止接任务的时间存储位置	禁止的时间长度,秒	时间限制内接任务的提示$1$	固定物品奖励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
1000000	490	17	0	1	0		92	127	高山白猿	#{MIS_TAR_ADD_244}	#{Mis_K_Wuliang_1000000}	#{RW_20080321_54}	#{RW_20080321_59}	6	马五德	0	6	马五德	0	1	-1	-1	-1	1	高山白猿	1500	8													135	800	-1																		10402062	1	10400060	1	10401061	1											

按第一列定位 1000000 号任务。样本第 42 列经验奖励为 580,改为 800。只改第 42 列,保留 77 列。本片段含类型行、列名行与该行,不能覆盖整表。

经验奖励列固定是金钱奖励列 +1(第 41 列金钱、第 42 列经验)。改完需要重启服务端才会生效,客户端侧需要更新资源后重启才能看到新数值。

验证与排查

服务端启动日志里 InitMissionKillMonsterTable 会打印 “Load InitMissionKillMonsterTable.txt ... OK! Count=…”。改动后重启,接取该任务核对任务面板里的经验奖励、击杀目标与数量显示,再实际击杀确认计数与完成判定。注意列数必须等于 77,否则 MissionOpen 直接返回、整张表不加载。失败时恢复备份并重启。

列数必须恰好 77

MissionOpen 的第三个参数会断言 GetFieldsNum() 等于 77,不匹配时直接 return,整张表不加载(不是跳过单行)。新增列或删除列都会让这张表整体失效。

击杀种类上限是 5,不是列名写的 8

第 25 列列名写「最多8」,但 MAX_MISSION_KILL_INFO=5,整表也只为 5 组目标留列(第 26 到 40 列)。填超过 5 的种类数会被归零,等于没有击杀目标。

脚本号决定客户端查哪张表

客户端 GetMissionTableLayout 的脚本号区间为:1000000-1009999 杀怪、1010000-1019999 送信、1020000-1029999 进入区域、1030000-1039999 拾取、1050000-1059999 护送;1040000-1049999 这一段没有任何表映射(返回 FALSE)。写错区间会导致客户端查不到任务显示信息(服务端仍可能正常)。

奖励物品成对读取,遇到 0 就停

固定 / 可选 / 隐藏三组奖励都是(物品 ID, 数量)成对读取,物品 ID 小于等于 0 时立即停止。想跳过中间某组而保留后面是不行的,必须连续填。

关联与依据

Public/Mission_LootItem.txt · Public/Mission_Delivery.txt · Public/Mission_NpcDefault.txt

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

  • Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/MissionExtend/GameStruct_Mission.h:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Common/TDDBC_Struct.h:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/DBC/GMDataBase.cpp:实际加载、解析、字段使用或示例关联依据
  • Client/Client/Game/DataPool/GMDP_Struct_Quest.cpp:实际加载、解析、字段使用或示例关联依据
  • resources/Public/Config/Mission_KillMonster.txt:实际加载、解析、字段使用或示例关联依据

本页核对 InitMissionKillMonsterTable 的 MissionOpen 列数(77)与 MissionColumns 的 0 基公共列索引、击杀目标的三列循环与 MAX_MISSION_KILL_INFO=5,以及客户端 GMDP_Struct_Quest.cpp 的 GetMissionTableLayout 区间映射与 DBC_MISSION_KILLMONSTER 注册项;未启动服务端与游戏,任务流程的实际表现需要实测。