传奇服务端的变量系统是脚本编写的核心,分为数字型(整数)、字符型(文本)和标识型(开关)三大类。不同引擎(如BLUE、GOM、GEE)的变量范围略有差异,但核心命令通用。
一、变量类型与作用域速查
变量前缀 类型 作用域 生命周期与特性
P0-P99/P999 数字 个人 临时。仅当前NPC对话有效,关闭窗口即清零。用于NPC内计算。
D0-D99/D999 数字 个人 临时。人物不下线则保留,小退/下线归零。常用于摇骰子。
M0-M99/M999 数字 个人 临时。切换地图清空。部分引擎等同于N变量。
N0-N99/N999 数字 个人 临时。小退即归零。最常用的个人临时计数。
S0-S99/S999 字符 个人 临时。存储字符串,小退归零。
U0-U99 数字 个人 永久。保存至数据库,人物下线/重启不丢。
T0-T99 字符 个人 永久。字符串型个人变量,保存至数据库。
G0-G99/G999 数字 全局 永久。全服共用,存于Mir200/GlobalVal.ini,重启不丢。
A0-A99/A999 字符 全局 永久。全局字符串,存于Mir200/GlobalVal.ini。
I0-I99/I999 数字 全局 临时。全局内存变量,服务端重启归零。
[001]-[999] 标识 个人 开关。只有0(关)和1(开),常用于任务标记,下线保存。
注意:GOM/GEE等新引擎常扩展至999上限,老版BLUE通常为99。
二、核心操作命令详解
1. 赋值与运算命令
命令 语法示例 说明
MOV MOV N0 100 赋值。将N0设置为100。
INC INC N0 1 加法。N0 = N0 + 1。
DEC DEC N0 1 减法。N0 = N0 - 1。
MUL MUL N0 2 乘法。N0 = N0 * 2。
DIV DIV N0 2 除法。N0 = N0 / 2(整除)。
MOVR MOVR N0 100 随机数。将0-99之间的随机数赋给N0。
SUM SUM N0 N1 累加。需配合MOV使用(见下文详解)。
SUM命令详解:
SUM用于多个变量累加,通常需要先初始化一个容器变量。
#ACT
MOV N99 0 ; 先清空累加容器
SUM N0 N1 ; N99 = N0 + N1
SUM N2 ; N99 = N99 + N2
此时,N99的值为N0+N1+N2。
2. 条件检测命令
在 #IF 段中使用,判断变量状态。
命令 语法示例 说明
EQUAL EQUAL N0 100 检测N0是否等于100。
LARGE LARGE N0 100 检测N0是否大于100。
SMALL SMALL N0 100 检测N0是否小于100。
CHECK CHECK [001] 1 检测标识[001]是否为1(开启状态)。
SET SET [001] 1 设置标识[001]为1。
RESET RESET [001] 5 批量重置。将[001]至[005]共5个标识全部设为0。
3. 字符变量(S/A)的特殊操作
字符变量(S、A系列)除了直接MOV赋值外,支持字符串截取和输入。
• 文本输入:通过 @@InPutString 或 @@InPutInteger 触发,将玩家输入的内容存入S变量或A变量。
• 字符串截取(DEC):DEC S0 5 10 表示删除S0字符串中从第5位到第10位的字符(部分引擎支持)。
4. 变量显示
在NPC对话(#SAY)中显示变量值,必须使用转换标签:
• 数字变量:<$STR(N0)>
• 字符/全局变量:<$STR(S0)> 或 <$GLOBAL(A0)>(视引擎而定)
示例:#SAY 你的当前积分是:<$STR(N0)>
三、脚本实战示例
1. 每日签到脚本(使用标识)
[@Main]
#if
CHECK [100] 1 ; 检测今日是否已签到
#act
MESSAGEBOX 你今天已经签到过了!
break
#if
#act
SET [100] 1 ; 标记已签到
GAMEGOLD + 1000
MESSAGEBOX 签到成功,获得1000元宝!
说明:标识[100]在人物数据中保存,需配合机器人脚本(Robot.txt)在每天0点自动执行 RESET [100] 1 来重置所有人的签到状态。
2. 随机抽奖脚本(使用运算)
[@Lottery]
#if
CHECKGAMEGOLD > 99 ; 检测元宝是否够100
#act
GAMEGOLD - 100 ; 扣100元宝
MOVR N0 100 ; 生成0-99随机数
#if
SMALL N0 10 ; 10%概率(0-9)
#act
GIVE 屠龙 1
MESSAGEBOX 恭喜抽中屠龙!
#elseact
MESSAGEBOX 很遗憾未中奖,随机数:<$STR(N0)>
四、常见报错与避坑
1. 变量未定义/乱码:在显示变量(如 <$STR(N0)>)时,若N0未经过MOV赋值直接显示,可能显示乱码或报错。建议在使用前先 MOV N0 0 初始化。
2. 作用域混淆:误用P变量做跨NPC传递。P变量一旦关闭对话框就清零,跨NPC需使用D、N或U变量。
3. 字符数字混用:试图将文本存入N变量(数字型)会导致脚本卡死或报错。存文本必须用S或A变量。
4. 全局变量冲突:G变量是全服共用的,若多个NPC同时读写同一个G变量(如G10),可能导致数据错乱,建议加锁或使用个人U变量替代。
传奇服务端变量命令与脚本操作全解
来源:
作者:
点击:

