<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.waylee.net/index.php?action=history&amp;feed=atom&amp;title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83%2F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%2FPublic%2FMonsterAITable.ini</id>
	<title>工程参考/配置文件/Public/MonsterAITable.ini - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.waylee.net/index.php?action=history&amp;feed=atom&amp;title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83%2F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%2FPublic%2FMonsterAITable.ini"/>
	<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/Public/MonsterAITable.ini&amp;action=history"/>
	<updated>2026-09-11T18:33:35Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://www.waylee.net/index.php?title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/Public/MonsterAITable.ini&amp;diff=1426&amp;oldid=prev</id>
		<title>雪舞：​维护配置文件知识库：完整字段、读取范围、手工修改实例与核对状态</title>
		<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=%E5%B7%A5%E7%A8%8B%E5%8F%82%E8%80%83/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/Public/MonsterAITable.ini&amp;diff=1426&amp;oldid=prev"/>
		<updated>2026-09-11T12:40:26Z</updated>

		<summary type="html">&lt;p&gt;维护配置文件知识库：完整字段、读取范围、手工修改实例与核对状态&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;font-size:24px;line-height:1.4;overflow-wrap:anywhere;&amp;quot;&amp;gt;工程参考/配置文件/Public/MonsterAITable.ini&amp;lt;/span&amp;gt;}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;config-file-reference&amp;quot; style=&amp;quot;max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,&amp;#039;Microsoft YaHei&amp;#039;,sans-serif;letter-spacing:0;overflow-wrap:anywhere;&amp;quot;&amp;gt;&lt;br /&gt;
[[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]]&lt;br /&gt;
&lt;br /&gt;
MonsterAITable.ini 定义怪物 AI 类型的参数。 [INFO] 的 AINUMBER 决定有多少种 AI；每种 AI 一个 [AI&amp;lt;n&amp;gt;] 节，节内有 DESC 说明与 11 个 AIPARAM。怪物的基础 AI 编号（m_BaseAI）指向这里的下标，AI 行为在运行时按 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AI_Monster::AIParam&amp;lt;/code&amp;gt; 取用。样本 AINUMBER=31，即 AI0 到 AI30 共 31 种。&lt;br /&gt;
&lt;br /&gt;
这份表只调 AI 的行为参数，不决定怪物长什么样、刷在哪里、掉什么；那些由怪物属性表与场景刷怪配置决定。&lt;br /&gt;
&lt;br /&gt;
[[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]]&lt;br /&gt;
&lt;br /&gt;
== 文件位置与生效 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 项目&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:76%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 说明&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 运行文件&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;../Public/Config/MonsterAITable.ini&amp;lt;/code&amp;gt;，由 FileDef.h 的 FILE_MONSTER_AI 定义，相对于 Server 工作目录。Public 只是资源组织位置，本文件由服务端读取，不需要放进客户端。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 读取程序&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | Server 游戏进程：TableInit::InitMonsterAITable 用 Ini ini(FILE_MONSTER_AI) 打开&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 生效方法&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 正常保存并停服后，重启读取此文件的 Server。多份运行目录分别核对。当前检索未发现单独重载本文件的可用入口；不需要把本文件复制到玩家客户端。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 样本格式&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;GB18030-compatible&amp;lt;/code&amp;gt;，&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;CRLF&amp;lt;/code&amp;gt;。保留原编码；源码读取器不会自动把中文转为 UTF-8。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
加载流程是：先读 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;&amp;amp;#91;INFO&amp;amp;#93; AINUMBER&amp;lt;/code&amp;gt; 作为 AI 种类数，再双重循环 i 从 0 到 AINUMBER-1、j 从 0 到 AIPARAM_NUMBER-1，用 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;sprintf(szSection, &amp;quot;AI%d&amp;quot;, i)&amp;lt;/code&amp;gt; 与 &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;sprintf(szName, &amp;quot;AIPARAM%d&amp;quot;, j)&amp;lt;/code&amp;gt; 拼出节名与键名逐个读整数。因此节名与键名里的数字必须连续：AI 编号断号会让后面所有种类的参数错位，AIPARAM 少一个键会让对应参数读成 -99999999。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 参数与源码枚举&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:76%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 含义与修改要点&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_SCANTIME&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 扫描敌人的时间间隔（毫秒）。大于 0 表示主动攻击，值就是扫描间隔；小于等于 0 表示非主动攻击。 Obj_Monster.cpp 判断怪物是否主动攻击时读这一项。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_RANDMOVETIME&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 随机移动位置的时间间隔（毫秒）。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM2&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_CANNOTATTACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 无法攻击的对象。源码注释标注「已经废弃」：怪物是否无敌以 Public/MonsterAttrExTable.txt 为准。 不要再靠这一项配置无敌。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM3&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_RETURN&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 距离出生地超过此值时放弃追赶。大于 0 才生效。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM4&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_SCANENEMYDIST&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 扫描敌人的最大距离。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM5&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_SCANTEAMMATEDIST&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 扫描队友的最大距离。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM6&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_RESETTARGET_DIST&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 当前移动目标与敌人位置之间的距离大于此数值时，重新设定移动目标。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM7&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_PATROLTIME&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 巡逻的时间间隔。小于等于 0 不进行巡逻。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM8&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_STRIKEBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 是否会还击。非 0 为会还击。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM9&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_EXTEND_BY_LUA&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 是否由 Lua 脚本扩展怪物 AI。大于 0 时走脚本扩展分支。 Obj_Monster_AILuaExtand.cpp 按这一项判断是否交给 Lua。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM_CALL_NEARBY_MONSTER&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 是否召唤附近怪物协助作战。非 0 为会召唤。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 检查项&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:76%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 结论&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | AI 种类上限&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | MAXAI_NUMBER = 256，AINUMBER 必须落在 0 到 255。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 参数个数&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 固定 11 个（AIPARAM_NUMBER），由 enum MONSTER_AI_PRAM 决定，不能多写也不能少写。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 缺失的键&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Ini::ReadInt&amp;lt;/code&amp;gt; 的返回版本在找不到时返回 ERROR_DATA，即 -99999999，不会被当成 0。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 怪物的 AI 编号&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 刷怪配置里的 m_BaseAI 必须小于 AINUMBER，否则加载期断言。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | DESC 键&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 样本每个节都有，但加载函数不读它，纯粹是给维护者看的说明。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 文件格式 ==&lt;br /&gt;
使用 [节名] 与 Key=Value，节名和键名区分大小写，保持节标题位于行首。用单独一行分号写注释，保留原编码及 CRLF 换行；重复节或键取先匹配项，不依赖后写覆盖。缺项、空值与 0 分别按下表处理。&lt;br /&gt;
&lt;br /&gt;
== 字段详解 ==&lt;br /&gt;
模板 [n] 表示从 0 开始的序号，写入时应展开为实际数字；不是字面键名。&lt;br /&gt;
&lt;br /&gt;
=== [INFO] ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:34%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 字段与类型&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:42%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 含义与修改要点&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 缺项或特殊值&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AINUMBER&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;整数，0 到 255&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | AI 种类的数量，决定读取 [AI0] 到 [AI&amp;lt;N-1&amp;gt;] 的循环次数。超出 MAXAI_NUMBER（256）会触发断言；为 0 时一个 AI 节都不读，所有怪物取到的参数都是 0。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 必填。缺失时 Ini::ReadInt 返回 ERROR_DATA（-99999999），断言立即失败。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [AI[n]] ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:34%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 字段与类型&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:42%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 含义与修改要点&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:24%;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 缺项或特殊值&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;DESC&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;字符串，说明文字&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 该 AI 类型的人读说明。加载函数完全没有读取它，只作为维护备注存在。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 可选。写错或删除不影响运行，但会让后续维护失去参考。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;AIPARAM&amp;amp;#91;n&amp;amp;#93;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;整数，参数值&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 第 n 号 AI 的第 j 个参数（键名 AIPARAM0 到 AIPARAM10），含义见上表。怪物的 AI 类型就是这里的第一维下标，由怪物的基础 AI 编号决定，不是场景 ID 也不是怪物编号。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 缺失时读到 ERROR_DATA（-99999999）而不是 0，通常意味着该参数被当成“极大/极小”的极端值使用，效果需要实测。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 常用修改实例 ==&lt;br /&gt;
示例为局部教学片段，先备份原运行文件，再修改对应行并保留其余配置。教学值不是程序默认值。&lt;br /&gt;
&lt;br /&gt;
=== 把 AI0 的巡逻间隔从 10000 毫秒改为 20000 毫秒 ===&lt;br /&gt;
修改前：&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;&amp;quot;&amp;gt;&amp;amp;#91;AI0&amp;amp;#93;&lt;br /&gt;
DESC=Sample AI for the teaching snippet.&lt;br /&gt;
AIPARAM0=2000&lt;br /&gt;
AIPARAM7=10000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
修改后：&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;&amp;quot;&amp;gt;&amp;amp;#91;AI0&amp;amp;#93;&lt;br /&gt;
DESC=Sample AI for the teaching snippet.&lt;br /&gt;
AIPARAM0=2000&lt;br /&gt;
AIPARAM7=20000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AIPARAM7 是巡逻时间间隔（AIPARAM_PATROLTIME），小于等于 0 表示不巡逻。这里只把 AI0 的这一项从 10000 改成 20000，让巡逻间隔加倍；其余 10 个参数、DESC 与 [INFO] 全部保留。&lt;br /&gt;
&lt;br /&gt;
示例是局部片段，英文 DESC 只是为了让片段没有编码歧义；实际操作保留原文件的中文说明。改完需要重启 Server。&lt;br /&gt;
&lt;br /&gt;
== 验证与排查 ==&lt;br /&gt;
重启 Server 后查看启动日志的 “Load MonsterAITable.ini ... OK!”。再找一只使用目标 AI 编号的怪物，分别观察：是否主动攻击（AIPARAM0）、是否随机移动（AIPARAM1）、追出多远会返回（AIPARAM3）、是否巡逻与巡逻频率（AIPARAM7）、受击是否还击（AIPARAM8）。参数生效后才会体现在行为上，改 AIPARAM2 看不到无敌效果。失败时恢复备份并重启。&lt;br /&gt;
&lt;br /&gt;
=== 节名与键名的数字必须连续 ===&lt;br /&gt;
节名与键名都由 sprintf 拼出，读取是靠拼名字去找，不是按文件顺序。删掉 AI5 会让原本的 AI6 变成新的 AI5，所有引用该编号的怪物行为都会改变。AIPARAM3 缺失则 AIPARAM4 不会顶上来，而是那一项读到 -99999999。&lt;br /&gt;
&lt;br /&gt;
=== AIPARAM2 已经废弃 ===&lt;br /&gt;
源码注释写明「无法攻击的对象（已经废弃，是否无敌是以 MonsterAttrExTable.txt 表中为主）」。配怪物无敌不要改这里。&lt;br /&gt;
&lt;br /&gt;
=== 取值单位是毫秒，不是秒 ===&lt;br /&gt;
AIPARAM0、AIPARAM1、AIPARAM7 都是毫秒。把 10000 当 10 秒填成 10 会让怪物几乎每帧扫描。&lt;br /&gt;
&lt;br /&gt;
=== 这是服务端表，不要放进客户端 ===&lt;br /&gt;
FILE_MONSTER_AI 指向 ../Public/Config，是服务端进程自己读的。修改不需要同步玩家客户端。&lt;br /&gt;
&lt;br /&gt;
== 关联与依据 ==&lt;br /&gt;
[[工程参考/配置文件/Server/SceneInfo.ini|Server/SceneInfo.ini]]&lt;br /&gt;
&lt;br /&gt;
[[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/ServerBase/Ini.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/ServerBase/Ini.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/ServerBase/FileDef.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Main/GameTable.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Main/GameTable.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/GameDefine.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Common/GameDefine2.h&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/AI/AI_Monster.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Obj/Obj_Monster.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Obj/Obj_Monster_AILuaExtand.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;Server/Server/GameServer/Server/Obj/MonsterManager.cpp&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
* &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;resources/Public/Config/MonsterAITable.ini&amp;lt;/code&amp;gt;：实际加载、解析、字段使用或示例关联依据&lt;br /&gt;
&lt;br /&gt;
本页核对源码读取、字段使用与样本格式，未启动游戏、服务端或数据库。解析验证不等于游戏实测；广播、权限、客户端交互等运行结果需要实测。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:工程参考]]&lt;/div&gt;</summary>
		<author><name>雪舞</name></author>
	</entry>
</feed>