smart_scripts表是AzerothCore中最重要的AI系统表格之一,它定义了生物、游戏对象和区域触发器的智能行为脚本。通过这个表格,可以为NPC配置复杂的AI行为,包括战斗逻辑、对话系统、事件响应等。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
entryorguid | INT | 0 | 目标实体ID或GUID |
source_type | TINYINT UNSIGNED | 0 | 脚本源类型 |
id | SMALLINT UNSIGNED | 0 | 脚本唯一ID |
link | SMALLINT UNSIGNED | 0 | 链接到其他脚本ID |
event_type | TINYINT UNSIGNED | 0 | 事件类型 |
event_phase_mask | SMALLINT UNSIGNED | 0 | 事件阶段掩码 |
event_chance | TINYINT UNSIGNED | 100 | 事件触发概率(0-100) |
event_flags | SMALLINT UNSIGNED | 0 | 事件标志 |
event_param1 | INT UNSIGNED | 0 | 事件参数1 |
event_param2 | INT UNSIGNED | 0 | 事件参数2 |
event_param3 | INT UNSIGNED | 0 | 事件参数3 |
event_param4 | INT UNSIGNED | 0 | 事件参数4 |
event_param5 | INT UNSIGNED | 0 | 事件参数5 |
action_type | TINYINT UNSIGNED | 0 | 动作类型 |
action_param1 | INT UNSIGNED | 0 | 动作参数1 |
action_param2 | INT UNSIGNED | 0 | 动作参数2 |
action_param3 | INT UNSIGNED | 0 | 动作参数3 |
action_param4 | INT UNSIGNED | 0 | 动作参数4 |
action_param5 | INT UNSIGNED | 0 | 动作参数5 |
action_param6 | INT UNSIGNED | 0 | 动作参数6 |
target_type | TINYINT UNSIGNED | 0 | 目标类型 |
target_param1 | INT UNSIGNED | 0 | 目标参数1 |
target_param2 | INT UNSIGNED | 0 | 目标参数2 |
target_param3 | INT UNSIGNED | 0 | 目标参数3 |
target_param4 | INT UNSIGNED | 0 | 目标参数4 |
target_x | FLOAT | 0 | 目标X坐标 |
target_y | FLOAT | 0 | 目标Y坐标 |
target_z | FLOAT | 0 | 目标Z坐标 |
target_o | FLOAT | 0 | 目标朝向 |
comment | TEXT | '' | 脚本注释说明 |
根据source_type的不同,这个字段有不同的含义:
值 | 类型 | 说明 |
---|---|---|
0 | SMART_SCRIPT_TYPE_CREATURE | 生物脚本 |
1 | SMART_SCRIPT_TYPE_GAMEOBJECT | 游戏对象脚本 |
2 | SMART_SCRIPT_TYPE_AREATRIGGER | 区域触发器脚本 |
9 | SMART_SCRIPT_TYPE_TIMED_ACTIONLIST | 定时动作列表 |
定义触发脚本的事件类型,常用事件包括:
值 | 事件名称 | 说明 |
---|---|---|
0 | SMART_EVENT_UPDATE_IC | 战斗中更新事件 |
1 | SMART_EVENT_UPDATE_OOC | 非战斗更新事件 |
2 | SMART_EVENT_HEALTH_PCT | 生命值百分比事件 |
3 | SMART_EVENT_MANA_PCT | 法力值百分比事件 |
4 | SMART_EVENT_AGGRO | 进入战斗事件 |
5 | SMART_EVENT_KILL | 击杀目标事件 |
6 | SMART_EVENT_DEATH | 死亡事件 |
7 | SMART_EVENT_EVADE | 脱离战斗事件 |
8 | SMART_EVENT_SPELLHIT | 被法术击中事件 |
9 | SMART_EVENT_RANGE | 距离范围事件 |
10 | SMART_EVENT_OOC_LOS | 非战斗视线事件 |
11 | SMART_EVENT_RESPAWN | 重生事件 |
12 | SMART_EVENT_TARGET_HEALTH_PCT | 目标生命值百分比事件 |
13 | SMART_EVENT_VICTIM_CASTING | 受害者施法事件 |
14 | SMART_EVENT_FRIENDLY_HEALTH | 友方生命值事件 |
15 | SMART_EVENT_FRIENDLY_IS_CC | 友方被控制事件 |
16 | SMART_EVENT_FRIENDLY_MISSING_BUFF | 友方缺少增益事件 |
17 | SMART_EVENT_SUMMONED_UNIT | 召唤单位事件 |
18 | SMART_EVENT_TARGET_MANA_PCT | 目标法力值百分比事件 |
19 | SMART_EVENT_ACCEPTED_QUEST | 接受任务事件 |
20 | SMART_EVENT_REWARD_QUEST | 完成任务事件 |
定义脚本执行的动作类型,常用动作包括:
值 | 动作名称 | 说明 |
---|---|---|
0 | SMART_ACTION_NONE | 无动作 |
1 | SMART_ACTION_TALK | 说话/聊天 |
2 | SMART_ACTION_SET_FACTION | 设置阵营 |
3 | SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL | 变形为指定模型 |
4 | SMART_ACTION_SOUND | 播放声音 |
5 | SMART_ACTION_PLAY_EMOTE | 播放表情动作 |
6 | SMART_ACTION_FAIL_QUEST | 任务失败 |
7 | SMART_ACTION_OFFER_QUEST | 提供任务 |
8 | SMART_ACTION_SET_REACT_STATE | 设置反应状态 |
9 | SMART_ACTION_ACTIVATE_GOBJECT | 激活游戏对象 |
10 | SMART_ACTION_RANDOM_EMOTE | 随机表情动作 |
11 | SMART_ACTION_CAST | 施放法术 |
12 | SMART_ACTION_SUMMON_CREATURE | 召唤生物 |
13 | SMART_ACTION_THREAT_SINGLE_PCT | 单体仇恨百分比 |
14 | SMART_ACTION_THREAT_ALL_PCT | 全体仇恨百分比 |
15 | SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS | 调用区域探索或事件发生 |
16 | SMART_ACTION_SET_INGAME_PHASE_MASK | 设置游戏内阶段掩码 |
17 | SMART_ACTION_SET_UNIT_FLAG | 设置单位标志 |
18 | SMART_ACTION_REMOVE_UNIT_FLAG | 移除单位标志 |
19 | SMART_ACTION_AUTO_ATTACK | 自动攻击 |
20 | SMART_ACTION_ALLOW_COMBAT_MOVEMENT | 允许战斗移动 |
定义动作的目标类型:
值 | 目标名称 | 说明 |
---|---|---|
0 | SMART_TARGET_NONE | 无目标 |
1 | SMART_TARGET_SELF | 自己 |
2 | SMART_TARGET_VICTIM | 受害者(当前攻击目标) |
3 | SMART_TARGET_HOSTILE_SECOND_AGGRO | 仇恨列表第二位 |
4 | SMART_TARGET_HOSTILE_LAST_AGGRO | 仇恨列表最后一位 |
5 | SMART_TARGET_HOSTILE_RANDOM | 随机敌对目标 |
6 | SMART_TARGET_HOSTILE_RANDOM_NOT_TOP | 随机非首要仇恨目标 |
7 | SMART_TARGET_ACTION_INVOKER | 动作调用者 |
8 | SMART_TARGET_POSITION | 指定位置 |
9 | SMART_TARGET_CREATURE_RANGE | 范围内生物 |
10 | SMART_TARGET_CREATURE_GUID | 指定GUID生物 |
11 | SMART_TARGET_CREATURE_DISTANCE | 距离内生物 |
12 | SMART_TARGET_STORED | 存储的目标 |
13 | SMART_TARGET_GAMEOBJECT_RANGE | 范围内游戏对象 |
14 | SMART_TARGET_GAMEOBJECT_GUID | 指定GUID游戏对象 |
15 | SMART_TARGET_GAMEOBJECT_DISTANCE | 距离内游戏对象 |
16 | SMART_TARGET_INVOKER_PARTY | 调用者队伍 |
17 | SMART_TARGET_PLAYER_RANGE | 范围内玩家 |
18 | SMART_TARGET_PLAYER_DISTANCE | 距离内玩家 |
19 | SMART_TARGET_CLOSEST_CREATURE | 最近的生物 |
20 | SMART_TARGET_CLOSEST_GAMEOBJECT | 最近的游戏对象 |
场景:当生物进入战斗时,说一句话
场景:当生物生命值低于30%时,对自己施放治疗法术