当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇服务端变量命令与脚本操作全解

热度:
传奇服务端的变量系统是脚本编写的核心,分为数字型(整数)、字符型(文本)和标识型(开关)三大类。不同引擎(如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.赋值与运算命令

命令语法示例说明

MOVMOVN0100赋值。将N0设置为100。

INCINCN01加法。N0=N0+1。

DECDECN01减法。N0=N0-1。

MULMULN02乘法。N0=N0*2。

DIVDIVN02除法。N0=N0/2(整除)。

MOVRMOVRN0100随机数。将0-99之间的随机数赋给N0。

SUMSUMN0N1累加。需配合MOV使用(见下文详解)。

SUM命令详解:
SUM用于多个变量累加,通常需要先初始化一个容器变量。
#ACT
MOVN990;先清空累加容器
SUMN0N1;N99=N0+N1
SUMN2;N99=N99+N2

此时,N99的值为N0+N1+N2。

2.条件检测命令

在#IF段中使用,判断变量状态。

命令语法示例说明

EQUALEQUALN0100检测N0是否等于100。

LARGELARGEN0100检测N0是否大于100。

SMALLSMALLN0100检测N0是否小于100。

CHECKCHECK[001]1检测标识[001]是否为1(开启状态)。

SETSET[001]1设置标识[001]为1。

RESETRESET[001]5批量重置。将[001]至[005]共5个标识全部设为0。

3.字符变量(S/A)的特殊操作

字符变量(S、A系列)除了直接MOV赋值外,支持字符串截取和输入。

•文本输入:通过@@InPutString或@@InPutInteger触发,将玩家输入的内容存入S变量或A变量。

•字符串截取(DEC):DECS0510表示删除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元宝
MOVRN0100;生成0-99随机数
#if
SMALLN010;10%概率(0-9)
#act
GIVE屠龙1
MESSAGEBOX恭喜抽中屠龙!
#elseact
MESSAGEBOX很遗憾未中奖,随机数:<$STR(N0)>


四、常见报错与避坑

1.变量未定义/乱码:在显示变量(如<$STR(N0)>)时,若N0未经过MOV赋值直接显示,可能显示乱码或报错。建议在使用前先MOVN00初始化。
2.作用域混淆:误用P变量做跨NPC传递。P变量一旦关闭对话框就清零,跨NPC需使用D、N或U变量。
3.字符数字混用:试图将文本存入N变量(数字型)会导致脚本卡死或报错。存文本必须用S或A变量。
4.全局变量冲突:G变量是全服共用的,若多个NPC同时读写同一个G变量(如G10),可能导致数据错乱,建议加锁或使用个人U变量替代。
[顶部]