脚本基础
变量类型与作用域
说明 Blue 引擎脚本里常见变量的类型、作用域、保存行为,以及自由扩展变量的命名写法,作为后续变量操作与条件判断的基础。
变量说明
下面这张表整理了引擎各个变量(含标识、INTS、SetAbility、定时器、任务和自定义命令编号)的范围、属性、类型与保存行为。
写变量操作、条件判断、位操作、标识判断之前,应先把变量的范围、类型和保存行为分清楚。
全局变量保存在 QuestParams.ini,数值支持到 21 亿;表中列出的可用变量数据均在最新引擎环境下测试,新 SQL 引擎与老 DBC 引擎的数据格式有差异。
| 变量 | 范围 | 属性 | 类型 | 保存 | 变量解释 |
|---|---|---|---|---|---|
D | 0-99 | 数字型 | 个人 | 不可保存 | |
M | 0-99 | 数字型 | 个人 | 不可保存 | 超出常规范围(0~99)时会自动扩展,M 后面可以是任意字符,字符长度最好保持在 20 字节内 |
P | 0-9 | 数字型 | 个人 | 不可保存 | 转换 NPC 或关闭对话框时变量为 0 |
S | 0-99 | 字符型 | 个人 | 不可保存 | 超出常规范围(0~99)时会自动扩展,S 后面可以是任意字符,字符长度最好保持在 20 字节内 |
G | 0-99 | 数字型 | 全局 | 可保存 | 全局 G 变量超出常规范围(0~99)时会自动扩展,G 后面可以是任意字符 |
A | 0-99 | 字符型 | 全局 | 可保存 | 全局 A 变量超出常规范围(0~99)时会自动扩展,A 后面可以是任意字符 |
H | 0-99 | 数字型 | 全局 | 可保存 | |
I | 0-99 | 数字型 | 全局 | 重启为 0 | 重启引擎后自动为 0 |
E | 拓展 | 整数型 | 地图 | 重启清空 | 属于地图的变量 E(数字型),地图指向执行命令玩家所在的地图,重启引擎后自动清空 |
F | 拓展 | 字符型 | 地图 | 重启清空 | 属于地图的变量 F(字符型),地图指向执行命令玩家所在的地图,重启引擎后自动清空 |
[标识] | 1-808 | 逻辑型 | 个人 | 可保存 | 标识的初始值是关闭的,它不会因为人物下线或引擎重启而重置 |
INTS | 0-29 | 整数型 | 个人 | 可保存 | 英雄用 <$H.INTS0~29> 获取和显示;日志记录在元宝类型中,搜索时以关键字“整数”进行过滤 |
SetAbility | 0-600 | 特殊属性 | 0-51 为系统内置固有属性,400-407 为特殊属性 ID,500-600 为全局计时 ID,其余可用于个人计时变量 | ||
SetAbility | 601-855 | 技能威力 | 601-855 可以用于设置技能附加威力,对应的技能 ID = AID-600 | ||
OnTimer | 0-14 | 定时器 | SetScTimer(0-14)、KillScTimer(0-14);定时器不够用时可以用 SetAbility 平替 | ||
SetMission | 1-65535 | 任务 | 可以同时使用最多 20 个任务标识 | ||
StdmodeFunc | 0-255 | 双击触发 | @StdModeFuncXX,XX 可以超过 255,公式:XX = Reserved * 256 + AniCount(AniCount 必须是 255) | ||
UserCmd | 0-255 | 自定义命令 | 配置文件 USERCMD.TXT 在 ENVIR 下,功能脚本对应 QFUNCTION.TXT |
自由扩展变量
G变量名、A变量名、M变量名、S变量名 这一类“后面直接跟名字”的写法,统一称为“自由扩展变量”。
可做自由扩展的变量有 G、A、M、S,后面可跟任意字符串。
变量名长度建议控制在 20 字节以内:
- 英文 / 数字按
1字节计算 - 中文按
2字节计算
#ACT
MOV G全局变量 1
MOV S个人变量 字符串
MOV M个人变量 1
MOV A全局变量 字符串
