smart_scripts表

概述

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 '' 脚本注释说明

字段详细说明

entryorguid (目标实体ID或GUID)

根据source_type的不同,这个字段有不同的含义:

source_type (脚本源类型)

类型 说明
0 SMART_SCRIPT_TYPE_CREATURE 生物脚本
1 SMART_SCRIPT_TYPE_GAMEOBJECT 游戏对象脚本
2 SMART_SCRIPT_TYPE_AREATRIGGER 区域触发器脚本
9 SMART_SCRIPT_TYPE_TIMED_ACTIONLIST 定时动作列表

event_type (事件类型)

定义触发脚本的事件类型,常用事件包括:

事件名称 说明
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 完成任务事件

action_type (动作类型)

定义脚本执行的动作类型,常用动作包括:

动作名称 说明
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 允许战斗移动

target_type (目标类型)

定义动作的目标类型:

目标名称 说明
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 最近的游戏对象

使用示例

示例1:生物进入战斗时说话

场景:当生物进入战斗时,说一句话

示例2:生命值低于30%时施放治疗法术

场景:当生物生命值低于30%时,对自己施放治疗法术

注意事项

⚠️ 重要提醒