传奇服务端变量运用全命令详解 含变量类型与实操案例

来源: 作者: 点击:
一、变量基础规则:命名与分类核心规范

1. 命名规则

变量名由字母、数字及下划线组成,仅能以字母开头,长度不超过32个字符,且区分大小写。自定义变量禁止以P、D、M、N、S、I、G、A开头,避免与系统默认变量冲突。

2. 变量分类(按作用域与保存特性)

私人变量(仅对应单个玩家,分可保存与不可保存):P0-P999(数字型,关闭对话框重置为0)、D0-D999(数字型,下线不保存)、M0-M999(数字型,切换地图清空)、N0-N999(数字型,小退归0)、S0-S999(字符型,小退归0)、U0-U99(数字型,可保存至人物数据库,值范围正负21亿)、T0-T99(字符型,可保存至人物数据库)、J0-J255(数字型,可保存,每晚12点自动重置)。

全局变量(全服通用,分可保存与不可保存):I0-I999(数字型,不可保存,服务器重启重置为0)、G0-G999(数字型,可保存至Mir200/GlobalVal.ini)、A0-A999(字符型,可保存至Mir200/GlobalVal.ini)。

特殊变量:含数值变量(B/LB/R/LR等,对应不同值范围)、字符串变量(STR/String,长度256个字符)、IO变量(IN/OUT等,用于读写控制)等,适配不同脚本需求。

二、核心变量命令:赋值与运算类(基础必备)

1. 赋值命令

1. MOV(变量赋值):格式为「MOV 变量 数值/字符」,功能是将指定数值或字符赋给变量,示例:MOV N0 1(将1赋值给N0变量)、MOV S0 传送戒指(将“传送戒指”字符赋给S0变量)。

2. MOVR(随机赋值):格式为「MOVR 变量 数值」,功能是将0至指定数值间的随机正数赋给变量,示例:MOVR N1 10(N1变量随机获得0-10间的数值)。

2. 运算命令

1. INC(变量相加):格式为「INC 变量 数值」,功能是将变量值与指定数值相加,结果覆盖原变量,示例:INC N0 2(N0变量值在原有基础上加2)。

2. DEC(变量相减):格式为「DEC 变量 数值」,功能是将变量值与指定数值相减,结果覆盖原变量,示例:DEC N0 1(N0变量值在原有基础上减1)。

3. MUL(变量相乘):格式为「MUL 变量 数值」或「MUL 变量 数值1 数值2」,仅支持数值变量,不支持字符串变量,示例:MUL N0 2(N0变量值乘以2)、MUL N0 100 2(N0变量值等于100乘以2)。

4. DIV(变量整除):格式为「DIV 变量 数值」或「DIV 变量 数值1 数值2」,仅支持数值变量,结果为整除结果,示例:DIV N0 2(N0变量值除以2取整)、DIV N0 100 2(N0变量值等于100除以2)。

5. SUM(变量求和):格式需先初始化求和变量,再依次累加,示例:MOV X 0(初始化X变量为0)、SUM A B(X=A+B)、SUM C(X=X+C),最终X变量值为A+B+C的总和,单独使用SUM命令无意义,需配合初始化步骤。

三、变量判断命令:条件比对类(脚本逻辑核心)

1. SMALL(小于判断):格式为「SMALL 变量 数值」,功能是判断变量值是否小于指定数值,成立则执行后续脚本,示例:#IF SMALL N0 5(判断N0变量值是否小于5,成立则触发下方ACT动作)。

2. LARGE(大于判断):格式为「LARGE 变量 数值」,功能是判断变量值是否大于指定数值,成立则执行后续脚本,示例:#IF LARGE N0 10(判断N0变量值是否大于10,成立则触发下方ACT动作)。

3. EQUAL(等于判断):格式为「EQUAL 变量 数值/字符」,功能是判断变量值是否等于指定数值或字符,成立则执行后续脚本,示例:#IF EQUAL S0 传送戒指(判断S0变量值是否为“传送戒指”,成立则触发下方ACT动作)。

4. RANDOM(随机判断):格式为「RANDOM 数值」,功能是当随机数等于指定数值时返回1(成立),否则返回0(不成立),示例:#IF RANDOM 5(随机生成0-4间数字,等于5时成立,概率为五分之一)。

四、变量实用命令:显示与控制类(交互与执行)

1. 变量显示命令:格式为「< $STR(变量) >」,需用在#SAY命令后,功能是将变量值显示在游戏界面对话框中,示例:#SAY 当前积分:< $STR(U0) >(在对话框显示U0变量对应的积分值)。

2. GOTO(脚本跳转):格式为「GOTO @标签」,功能是跳转至指定脚本标签处执行,可配合变量判断实现逻辑流转,示例:#ACT GOTO @Get_Item_01(跳转至@Get_Item_01标签对应的脚本段)。

3. BREAK(脚本终止):格式为「BREAK」,功能是终止当前脚本执行,常配合变量判断实现条件终止,示例:#IF EQUAL N0 0 #ACT BREAK(当N0变量值为0时,终止当前脚本)。

4. SETBUTCHOK(变量关联触发):格式为「SETBUTCHOK」,功能是允许人物获得变量关联的物品,常与挖尸体触发脚本配合,示例:@ButchMon5 #IF #ACT SETBUTCHOK(挖尸体触发该脚本,允许获得S0变量对应的物品)。

五、变量实操案例:常见场景应用(快速上手)

1. 挖尸体触发物品获取(变量S0应用)

脚本示例:

(@ButchMon5)

#IF EQUAL S0 传送戒指(判断挖到的物品为传送戒指,S0变量存储物品名称)

#ACT GOTO @Get_Item_01(跳转至指定脚本段)

Break

#IF EQUAL S0 麻痹戒指(判断挖到的物品为麻痹戒指)

#ACT GOTO @Get_Item_01

Break

#IF #ACT SETBUTCHOK(无特殊条件时,直接允许获得物品)

Break

(@Get_Item_01)

#IF CheckGameGird > 9(判断灵符数量大于9)

#ACT SetButchOK(允许获得物品)

GameGird - 10(扣除10个灵符)

#ELSESAY 灵符不足,无法获得该物品(条件不成立时提示)

2. 等级触发自动打怪(变量N0应用)

脚本示例:

(@mn)

#IF CheckLevel 30(判断玩家等级达到30级)

#SAY 已达到30级,开始自动打怪

#ACT MOV N0 1(将1赋值给N0变量,标记开启自动打怪)

Goto @start(跳转至打怪脚本段)

(@start)

#IF EQUAL N0 1(判断自动打怪标记为开启)

CheckMonster 月岛 狼 X Y(检测月岛指定坐标是否有狼)

#SAY 发现狼,准备攻击

#ACT Attack -1(攻击目标)

Goto @start(循环检测攻击)

#IF CheckLevel 50(判断玩家等级达到50级)

#SAY 已达到50级,结束自动打怪

#ACT MOV N0 0(重置N0变量为0,关闭自动打怪)

Break(终止脚本)

六、变量使用注意事项(规避常见问题)

1. 变量类型匹配:运算命令(MUL、DIV等)仅支持数值变量,不可用于字符串变量,否则会导致脚本报错;字符串变量仅可用于赋值、显示与等于判断。

2. 保存特性适配:不可保存变量(如D0、M0)适合临时标记(如摇筛子、地图切换相关),可保存变量(如U0、G0)适合长期数据存储(如积分、全服活动状态)。

3. 脚本格式规范:变量命令需严格遵循格式要求,#IF后接判断命令,#ACT后接执行命令,跳转标签(@XXX)需单独成行,避免语法错误导致变量失效。

4. 全局变量维护:G0、A0等全局变量保存于GlobalVal.ini,修改后需重启引擎生效;J0-J255变量每晚12点重置,合区或关停服务器需错开该时间。

5. 冲突规避:自定义变量不可使用系统默认变量前缀,避免与现有脚本变量冲突;变量赋值时需注意值范围,如U0变量最大值不可超过21亿。