传奇服务端脚本SUM语句用法与多变量累加写法详解

来源: 作者: 点击:
SUM 是传奇脚本里最基础但最容易写错的算术命令,很多新手卡在“变量名写错”“没初始化”“格式不对”上。下面按引擎实际执行逻辑拆开讲,直接照抄就能用。

一、SUM 后面跟的是变量名,不是数值
正确写法:
MOV <$STR(N1)> 10
MOV <$STR(N2)> 20
SUM N1 N2
MOV <STR(X)> <STR(RESULT)>

这里 SUM N1 N2 是把 N1 和 N2 这两个变量里的数值相加,结果存在系统隐藏变量 <$STR(RESULT)> 里。
错误写法:
SUM 10 20
SUM <STR(N1)> <STR(N2)>
这两种引擎都读不到,因为 SUM 只认变量名,不认直接数值,也不认带 <$STR()> 包裹的写法。

二、单变量累加:SUM 变量C 的含义
MOV <$STR(X)> 0
MOV <$STR(A)> 5
MOV <$STR(B)> 3
MOV <$STR(C)> 2
SUM A B
MOV <STR(X)> <STR(RESULT)>
SUM C
MOV <STR(X)> <STR(RESULT)>

第一步 SUM A B,RESULT = 5+3 = 8,MOV 到 X,X=8。
第二步 SUM C,引擎会自动用 X + C,RESULT = 8+2 = 10,再 MOV 回 X,X=10。
这就是你查到的“X=X+C”的实际执行过程,前提是 X 里已经有值,否则第一次 SUM C 会算错。

三、N1 到 N20 全部相加的标准写法
最稳妥、所有引擎都支持的方式:
MOV <$STR(X)> 0
SUM N1
MOV <STR(X)> <STR(RESULT)>
SUM N2
MOV <STR(X)> <STR(RESULT)>
SUM N3
MOV <STR(X)> <STR(RESULT)>
...
SUM N20
MOV <STR(X)> <STR(RESULT)>

这样写虽然长,但不会出错。每一步都把 RESULT 存回 X,下一步 SUM Nx 就是 X+Nx。

四、简化写法(部分引擎支持)
GOM/GEE 新版本支持连续 SUM:
MOV <$STR(X)> 0
SUM N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17 N18 N19 N20
MOV <STR(X)> <STR(RESULT)>

但老引擎或 HERO 引擎不支持一口气写 20 个变量,会直接忽略。稳妥起见,用循环写:

五、用循环批量加 N1 到 N20
[@Main]
ACT

MOV <$STR(X)> 0
MOV <$STR(I)> 1
[@Loop]
IF

LARGE I 20
ACT

GOTO @End
ELSEACT

SUM N<I>
MOV <STR(X)> <STR(RESULT)>
INC I 1
GOTO @Loop
[@End]
SAY

总和是:<$STR(X)>

这个脚本从 I=1 循环到 20,每次 SUM N<I>,把结果累加进 X。N<I> 会被引擎解析成 N1、N2……N20。

六、常见错误排查
1. 变量没初始化:MOV <$STR(N1)> 0 必须写,不然 N1 是空值,SUM 结果异常。
2. 变量名写错:N1 不能写成 n1 或 N[1],引擎区分大小写。
3. 忘了 MOV 回 X:SUM N1 后必须 MOV <STR(X)> <STR(RESULT)>,否则下一步 SUM N2 用的还是旧 X。
4. 用错变量类型:N 系列是数字变量,S 是字符串,SUM 只能算 N 系列。
5. 脚本没重载:改完 NPC 脚本要在 M2 点 ReloadNpc,不然还在跑旧逻辑。

七、完整示例:20个变量求和并判断是否达标
[@CheckSum]
ACT

MOV <$STR(X)> 0
MOV <$STR(I)> 1
[@AddLoop]
IF

LARGE I 20
ACT

GOTO @Judge
ELSEACT

SUM N<I>
MOV <STR(X)> <STR(RESULT)>
INC I 1
GOTO @AddLoop
[@Judge]
IF

LARGE X 1000
ACT

SENDMSG 5 总属性超过1000,符合条件
ELSEACT

SENDMSG 5 总属性不足,继续努力

八、其他算术命令对照
• INC N1 5 :N1 = N1 + 5(加固定值)

• DEC N1 3 :N1 = N1 - 3

• MUL N1 2 :N1 = N1 * 2

• DIV N1 2 :N1 = N1 / 2

• SUM N1 N2 :RESULT = N1 + N2

SUM 的核心规则只有三条:跟变量名、结果在 RESULT、要手动 MOV 到目标变量。按这个逻辑写,N1 到 N20 的累加就不会出问题。