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

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

热度:
一、变量基础规则:命名与分类核心规范

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变量数值/字符」,功能是将指定数值或字符赋给变量,示例:MOVN01(将1赋值给N0变量)、MOVS0传送戒指(将“传送戒指”字符赋给S0变量)。

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

2.运算命令

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

脚本示例:

(@ButchMon5)

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

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

Break

#IFEQUALS0麻痹戒指(判断挖到的物品为麻痹戒指)

#ACTGOTO@Get_Item_01

Break

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

Break

(@Get_Item_01)

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

#ACTSetButchOK(允许获得物品)

GameGird-10(扣除10个灵符)

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

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

脚本示例:

(@mn)

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

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

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

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

(@start)

#IFEQUALN01(判断自动打怪标记为开启)

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

#SAY发现狼,准备攻击

#ACTAttack-1(攻击目标)

Goto@start(循环检测攻击)

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

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

#ACTMOVN00(重置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亿。
[顶部]