剧情事件与触发器
剧情事件是游戏中组织剧情脚本的基本单位。触发器负责在合适的时机找到并调用事件,事件中的命令会进入剧情事件队列,并按顺序执行。
脚本中使用的特殊符号建议全部使用英文半角符号,例如 *、#、:、;、|、[、]、$。剧情文本和配置表里也应避免把这些符号误当成普通文字使用。
一个剧情事件主要由事件 ID、命令内容和结果三部分组成。
| 组成 | 说明 |
|---|---|
| 剧情事件 ID | 唯一标识一段剧情事件,供触发器或 EVENT、SUB_EVENT 等指令调用。 |
| 命令内容 | 事件触发后执行的命令条目,多行命令按顺序进入执行队列。 |
| 结果 | 根据命令返回结果进行条件判定,并跳转到其他事件或结束当前事件。 |
触发器执行方式
Section titled “触发器执行方式”触发器用于把游戏中的交互、地图进入、任务完成、战斗结果等时机连接到剧情事件。触发器被命中后,并不是直接打断所有流程立即运行,而是把对应事件放入剧情事件队列,再由事件执行器依次处理。
| 接口类型 | 触发时机 | 对象参数 |
|---|---|---|
| passive | 被动触发,常用于地图编辑器触发器或 TRIGGER 指令直接执行。 | |
| talk | 与 NPC 交互时触发。 | |
| first_in | 第一次进入游戏时触发。 | |
| encounter | 与沙盒地图上的单位交互时触发。 | 目标单位控制 ID |
| before_enter_map | 进入目标地图前触发;有事件响应时会中断当前进入地图行为。 | 目标地图 ID |
| enter_map | 进入地图时触发。 | 目标地图 ID |
| before_leave_map | 离开当前地图前触发;有事件响应时会中断当前离开地图行为。 | 当前地图 ID |
| leave_map | 离开当前地图时触发。 | 当前地图 ID |
| enter_place | 进入地点时触发。 | 目标地点 ID |
| reach_place | 大地图上进入地点前触发;有事件响应时会中断进入地点行为。 | 目标地点 ID |
| leave_place | 离开地点时触发。 | 当前地点 ID |
| before_leave_place | 离开地点前触发;有事件响应时会中断离开地点行为。 | 当前地点 ID |
| reach_building | 进入设施前触发;有事件响应时会中断进入设施行为。 | 目标设施 ID |
| set_lord | AI 任命或解除玩家城主时触发。 | 触发类型与对象 ID |
| job_cmd | 对玩家下达工作指令时触发。 | |
| see_warband | 大地图遭遇其他队伍战斗时触发。 | |
| curplace_inwar | 玩家所在地点被攻击时触发。 | |
| quest_done | 任务所有条件达成但尚未交付时触发。 | 任务 ID |
| on_end_work | 结束在某地点的任务时触发。 | |
| occupy_place | 玩家成功占领地点时触发。 | 目标地点 ID |
| new_day | 新的一天到来时触发。 | 目标天数 |
| reward_follower | 奖赏玩家手下时触发。 | |
| reward_player | 玩家受到奖赏时触发。 | |
| dip_event | 玩家势力遇到外交事件时触发。 | 外交事件类型与对方势力 ID |
| dip_ret_success | 玩家势力请求的外交活动返回成功时触发。 | 外交事件类型与对方势力 ID |
| dip_ret_fail | 玩家势力请求的外交活动返回失败时触发。 | 外交事件类型与对方势力 ID |
| player_failed | 玩家遭遇战失败时触发。 | |
| reinforce_request | 与玩家相关的支援事件触发。 | |
| is_fall | 势力垮台时触发。 | 势力 ID |
| is_to_fall | 势力失去所有据点、即将垮台时触发。 | 势力 ID |
| before_cash_present | 褒奖前触发,可用于打断褒奖。 | |
| before_present | 送礼前触发,可用于打断送礼。 | |
| on_present | 送礼时触发。 | |
| encounter_role | 遇到角色并进入通用对话前触发。 | 目标角色 ID |
| helped_camp | 遭遇双方战斗时帮助其中一方后触发。 | 对方队伍领队所属阵营 |
| on_saodang | 扫荡完野外地点后触发。 | |
| on_place_rep_up | 地点贡献度提升时触发,最新贡献度可从 arg_int_val1 读取。 | |
| on_place_rep_down | 地点贡献度下降时触发,最新贡献度可从 arg_int_val1 读取。 | |
| team_dismiss | 队伍解散时触发。 | 队伍类型 |
| team_into_place | 队伍进入地点时触发。 | 队伍类型与地点 ID |
| in_game | 创建或载入游戏后触发。 | |
| bar_challenge | 玩家在酒馆发起挑战时触发。 | |
| tournament_start | 玩家参加当地搏击武斗会时触发。 | |
| be_promoted | 玩家爵位等级提升时触发,tagrole 为势力领主。 | |
| be_demoted | 玩家爵位等级下降时触发,tagrole 为势力领主。 | |
| space_move | 玩家在城内区域切换时触发。 | enter 或 leave;区域 ID |
| on_diplomacy_strategy | 按下情报界面的外交按钮时触发,tagcamp 为目标势力。 | |
| on_diplomacy_quit | 按下情报界面的退出按钮时触发,tagcamp 为目标势力。 | |
| after_generate_role | 生成角色后触发,tagrole 为生成出的角色。 | 生成模板 ID |
| match_prepare | 比武大会开始准备时触发。 | 比武大会 ID |
| match_start | 比武大会正式举办时触发。 | 比武大会 ID |
| match_end | 比武大会结束时触发。 | 结束类型与比武大会 ID |
| match_fight | 比武大会开始战斗时触发。 | 比武大会 ID |
| match_watch_fight | 比武大会观战时触发。 | 比武大会 ID |
| match_fast_fight | 比武大会快速战斗时触发。 | 比武大会 ID |
| match_join_team | 比武大会加入队伍时触发,arg_int_val1 为申请加入的队伍 ID。 | 比武大会 ID |
| match_end_talk | 比武大会结束对话时触发。 | 结果类型与对话人物 |
脚本预设字段
Section titled “脚本预设字段”预设字段可以在脚本中代替当前上下文里的对象,适合编写可复用的通用事件。
| 字段 | 说明 |
|---|---|
CUR_ROLE | 当前遭遇人物模板的 ID,常用于对话框和选择框。 |
CUR_BATTLE | 当前遭遇的大地图刷新单位对应的战斗 ID。 |
战斗参数信息
Section titled “战斗参数信息”特定战斗表的限制条件字段,以及 BATTLE 等指令的战斗参数,都可以使用战斗参数覆盖原本的战斗设置。
参数1ID:参数1;参数2ID:参数2;...| 参数 | 说明 |
|---|---|
player | 覆盖玩家方出战英雄单位。格式:角色ID|角色ID2,例如 主角|曲玉。 |
units | 覆盖玩家方出战编队。格式:兵卡ID,数量,等级|兵卡ID2,数量,等级;等级不填时使用卡牌初始等级。 |
add_stat | 为初始部署角色附加属性。格式:角色ID或兵卡ID=属性字段ID,字段数值|属性字段ID2,字段数值2。 |
place_stat | 为战斗地点附加属性字段。格式:属性字段ID,字段数值|属性字段ID2,字段数值2。 |
can_capture | 本次战斗是否可以俘虏战败方。1 为可以,0 为不可以。 |
can_loot_equip | 本次战斗是否可以掉落敌人装备。1 为可以,0 为不可以。 |
结果脚本格式
Section titled “结果脚本格式”结果脚本用于根据条件把事件导向不同后续命令。游戏会从第一行开始判断,命中第一条成立的条件后执行对应命令。
条件表达式组1:执行命令1条件表达式组2:执行命令2...条件表达式组N:执行命令N全局存档查询
Section titled “全局存档查询”| 写法 | 说明 |
|---|---|
[%global_int:ID%] | 返回全局整形字段 ID 的值。 |
[$global_str:ID$] | 返回全局字符串字段 ID 的值。 |
内置全局变量
Section titled “内置全局变量”| 字段 | 说明 |
|---|---|
save_max_hard_level | 已经解锁过的最高难度,默认值为 0。 |
内置自定义变量
Section titled “内置自定义变量”| 字段 | 说明 |
|---|---|
system_沙盒模式 | 标记当前是否是沙盒模式。 |
system_探索地图点数 | 记录探索地图点数。 |
system_星星 | 记录星星数目。 |
system_敌方角色血量百分比 | 玩家与敌方角色对战时,对方血量的额外附加倍率。 |
system_敌方角色攻击百分比 | 玩家与敌方角色对战时,对方攻击力、魔法攻击力的额外附加倍率。 |
config_ai_level | 当前 AI 强度等级:0 简单,1 普通,2 困难。 |
config_roll_limit | 是否开启战斗翻滚限制。0 关闭,1 开启。 |
config_hunger_penalty | 是否开启饥饿惩罚。0 关闭,1 开启。 |
config_upgrade_cost_reduce | 当前升级单位花费经验与材料的折扣率,百分比。 |
config_soldier_dead_scale | 当前小兵阵亡概率倍率,百分比。 |
初始设定字段
Section titled “初始设定字段”初始设定字段通常用于角色创建、出生地图、默认时间速度和战斗默认公式等基础配置。
| 字段 | 说明 |
|---|---|
| init_pos | 默认出生点位置信息。 |
| init_statu | 玩家出生时默认的属性状态信息。 |
| init_money | 默认初始财产。 |
| home_place | 默认初始地点 ID。 |
| init_skillpages | 初始点亮的技能页。 |
| init_skills | 主角初始拥有的技能表。 |
| init_equip | 主角初始装备表信息。 |
| init_camp_rl | 初始阵营关系表。格式:阵营A,阵营B,关系状态,友好度|...。 |
| gametime_scale | 大地图中游戏时间进行的缩放系数。 |
| battletime_scale | 战斗中游戏时间进行的缩放系数;为 0 时遭遇战或攻城战中游戏时间静止。 |
| custom_intval_watcher | 默认监视自定义变量字段,格式同 ADD_INTVAL_WATCHER。 |
| def_dropitem_model | 战斗中默认道具掉落在地上的模型及特效信息。 |
| default_role_model_male / default_role_model_female | 未指定角色模型时使用的默认男女角色模型。 |
| default_role_act_male / default_role_act_female | 未能根据武器类型映射动作时使用的默认男女动作 ID。 |
| default_weapons_speed | 所有武器类型对应的默认攻击速度。 |
| def_formula_phy_x / def_formula_mag_x | 物理防御与巫术防御计算公式因子。 |