脚本基础

变量类型与作用域

说明 Blue 引擎脚本里常见变量的类型、作用域、保存行为,以及自由扩展变量的命名写法,作为后续变量操作与条件判断的基础。

变量说明

下面这张表整理了引擎各个变量(含标识、INTS、SetAbility、定时器、任务和自定义命令编号)的范围、属性、类型与保存行为。

写变量操作、条件判断、位操作、标识判断之前,应先把变量的范围、类型和保存行为分清楚。

全局变量保存在 QuestParams.ini,数值支持到 21 亿;表中列出的可用变量数据均在最新引擎环境下测试,新 SQL 引擎与老 DBC 引擎的数据格式有差异。

变量范围属性类型保存变量解释
D0-99数字型个人不可保存
M0-99数字型个人不可保存超出常规范围(0~99)时会自动扩展,M 后面可以是任意字符,字符长度最好保持在 20 字节内
P0-9数字型个人不可保存转换 NPC 或关闭对话框时变量为 0
S0-99字符型个人不可保存超出常规范围(0~99)时会自动扩展,S 后面可以是任意字符,字符长度最好保持在 20 字节内
G0-99数字型全局可保存全局 G 变量超出常规范围(0~99)时会自动扩展,G 后面可以是任意字符
A0-99字符型全局可保存全局 A 变量超出常规范围(0~99)时会自动扩展,A 后面可以是任意字符
H0-99数字型全局可保存
I0-99数字型全局重启为 0重启引擎后自动为 0
E拓展整数型地图重启清空属于地图的变量 E(数字型),地图指向执行命令玩家所在的地图,重启引擎后自动清空
F拓展字符型地图重启清空属于地图的变量 F(字符型),地图指向执行命令玩家所在的地图,重启引擎后自动清空
[标识]1-808逻辑型个人可保存标识的初始值是关闭的,它不会因为人物下线或引擎重启而重置
INTS0-29整数型个人可保存英雄用 <$H.INTS0~29> 获取和显示;日志记录在元宝类型中,搜索时以关键字“整数”进行过滤
SetAbility0-600特殊属性0-51 为系统内置固有属性,400-407 为特殊属性 ID,500-600 为全局计时 ID,其余可用于个人计时变量
SetAbility601-855技能威力601-855 可以用于设置技能附加威力,对应的技能 ID = AID-600
OnTimer0-14定时器SetScTimer(0-14)、KillScTimer(0-14);定时器不够用时可以用 SetAbility 平替
SetMission1-65535任务可以同时使用最多 20 个任务标识
StdmodeFunc0-255双击触发@StdModeFuncXX,XX 可以超过 255,公式:XX = Reserved * 256 + AniCount(AniCount 必须是 255)
UserCmd0-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全局变量 字符串

相关阅读