红鹰论坛

 找回密码
 立即注册
查看: 1196|回复: 1

关于Leg引擎变量操作命令的深入探讨

[复制链接]

171

主题

216

回帖

1381

积分

四级GM

Rank: 6Rank: 6

积分
1381
发表于 2014-5-6 11:11:19 | 显示全部楼层 |阅读模式
来到论坛有一段时间了,很喜欢这个论坛,氛围很好,现在这样真正交流技术的论坛不多了。
一直以来都以为Leg引擎的变量操作命令只支持常数做参数,前段时间在读Leg引擎说明书的时候偶然发现Leg引擎某些变量操作命令提到了变量做参数的用法,大为惊喜,这意味着Leg引擎的变量用法更加强大,于是进行了详细的测试,有了以下的结论,喜欢看结论的直接看结论吧,喜欢测试的直接复制测试脚本吧,想想Leg引擎在2010年就实现了这个功能,有的引擎到去年才实现,对Leg引擎作者的编程功底再次佩服。

对于P、D、M、N、S、I、G、A开头的变量
变量操作命令:
加:INC 变量 参数         ---加上指定数值,相当于X=X+A
减:DEC 变量 参数         ---减去指定数值,相当于X=X-A
乘:MUL 变量 参数1 参数2
除:DIV 变量 除数 被除数
赋值:MOV 变量 参数       ---赋予数值
随机赋值:MOVR 变量 参数  ---赋予小于指定数值的随机非负数
等于:EQUAL 变量 参数     ---检测是否相等
大于:LARGE 变量 参数     ---检测是否大于
小于:SMALL 变量 参数     ---检测是否小于


结论:
1、对于P、D、M、N、S、I、G、A开头的变量,以上变量操作命令都可以直接对这类变量操作,并且支持常数(只支持整数)做参数,P、D、M、N、S、I、G、A开头的变量做参数,引擎固定作用变量做参数,自定义变量做参数。
2、两个整数相除,结果为商,舍弃余数。
3、对于自定义变量,部分变量操作命令支持直接对这类变量操作,但是有些变量操作命令对这类变量操作时会出现不确定的错误,不建议使用这些变量操作命令对这类变量操作,而是使用自定义变量专用的变量操作命令。

对于自定义变量
变量操作命令:
CALCVAR 自定义变量 运算符 参数        ---运算符支持+、-、*、/、=(赋值),相当于X=X+A,X=X-A,X=X*A,X=X/A
CHECKVAR 自定义变量 逻辑运算符 参数   ---逻辑运算符支持>、<、=(等于)

结论:
1、对于自定义变量,以上变量操作命令都可以直接对自定义变量操作,并且支持常数(只支持整数)做参数,P、D、M、N、S、I、G、A开头的变量做参数,引擎固定作用变量做参数,自定义变量做参数。
2、两个整数相除,结果为商,舍弃余数。
3、乘法和除法只有一个参数。
4、对于P、D、M、N、S、I、G、A开头的变量,这类变量操作命令都不能直接对这类变量操作,属于自定义变量专用的命令。


测试脚本:

请将
VAR Integer HUMAN XXXX
VAR String HUMAN AAAA
放到QM脚本的[@Login]段

(@@InPutString @@InPutInteger )


[@MAIN]
#IF
#SAY
整数1:<$STR(N1)>   整数2:<$STR(N2)>   整数3:<$STR(N3)>   你最大生命值为:<$MAXHP>\
字符串1:<$STR(S1)>   字符串2:<$STR(S2)>\
自定义数字型变量1:<$HUMAN(XXXX)>   自定义字符型变量1:<$HUMAN(AAAA)>\
<请输入整数1/@@InPutInteger1>   <请输入整数2/@@InPutInteger2>   <请输入字符串1/@@InPutString1>   <请输入字符

串2/@@InPutString2>\
<2个数相加/@相加>   <2个数相减/@相减>   <2个数相乘/@相乘>   <2个数相除/@相除>\
<将整数1赋值给整数3/@赋值>   <将不小于整数1的随机非负数赋值给整数3/@随机赋值>\
<将人物最大生命值赋值给整数3/@赋值最大生命值>   <整数1和整数2比较大小/@整和整比较>\
<整数1加整数2赋值给整数3/@整加整>   <整数1减整数2赋值给整数3/@整减整>\
<下一页/@下一页1>\

[@下一页1]
#IF
#SAY
整数1:<$STR(N1)>   字符串1:<$STR(S1)>\
自定义数字型变量1:<$HUMAN(XXXX)>   自定义字符型变量1:<$HUMAN(AAAA)>\
<请输入自定义数字型变量1/@@InPutInteger4>   <请输入自定义字符型变量1/@@InPutString4>\
<整数1加自定义数字型变量1/@整加自>   <自定义数字型变量1减整数1/@自减整>\
<整数1乘以自定义数字型变量1/@整乘自>   <整数1除以自定义数字型变量1/@整除自>\
<整数1与自定义数字型变量1比较大小/@整和自比较>\
<字符串1赋值给自定义字符型变量1/@字赋值给自>\
<自定义字符型变量1赋值给字符串1/@自赋值给字>\
<下一页/@下一页2>   <返回/@MAIN>\

[@下一页2]
#IF
#SAY
整数1:<$STR(N1)>   整数2:<$STR(N2)>   自定义数字型变量1:<$HUMAN(XXXX)>\
字符串1:<$STR(S1)>   自定义字符型变量1:<$HUMAN(AAAA)>\
<整数1赋值给自定义数字型变量1/@CAL整赋值自>   <自定义数字型变量1赋值给整数1/@CAL自赋值整>\
<整数1加自定义数字型变量1/@CAL整加自>   <自定义数字型变量1减整数1/@CAL自减整>\
<自定义数字型变量1乘以整数1/@CALMUL>   <自定义数字型变量1除以整数1/@CALDIV>\
<整数1与自定义数字型变量1比较大小/@CHECK整和自比较>\
<自定义字符型变量1赋值给字符串1/@CAL自赋值给字>   <字符串1赋值给自定义字符型变量1/@CAL字赋值给自>\
<整数1乘以整数2赋值给自定义数字型变量1/@整乘整等自>   <整数1除以整数2赋值给自定义数字型变量1/@整除整等自>\
<返回/@MAIN>\


[@InPutInteger1]
#IF
#SAY
你输入的整数1的值是<$STR(N1)> \
<返回/@MAIN>\

[@InPutInteger2]
#IF
#SAY
你输入的整数2的值是<$STR(N2)> \
<返回/@MAIN>\

[@InPutInteger4]
#IF
#ACT
MOV HUMAN XXXX <$STR(N4)>
#SAY
你输入的自定义数字型变量1的值是<$HUMAN(XXXX)> \
<返回/@MAIN>\

[@InPutString1]
#IF
#SAY
你输入的字符串1的值是<$STR(S1)> \
<返回/@MAIN>\

[@InPutString2]
#IF
#SAY
你输入的字符串2的值是<$STR(S2)> \
<返回/@MAIN>\

[@InPutString4]
#IF
#ACT
MOV HUMAN AAAA <$STR(S4)>
#SAY
你输入的自定义字符型变量1的值是<$HUMAN(AAAA)> \
;这样写有时候能成功,有时候无效...
<返回/@MAIN>\

[@IsInFilterList]
#IF
#ACT
MESSAGEBOX 错误的格式或包含过滤内容,请重新编辑!

[@赋值]
#IF
#ACT
MOV N3 <$STR(N1)>
#SAY
整数3的值是<$STR(N3)>!\
<返回/@MAIN>\

[@相加]
#IF
#ACT
INC N1 <$STR(N2)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@相减]
#IF
#ACT
DEC N1 <$STR(N2)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@相乘]
#IF
#ACT
MUL N3 <$STR(N1)> <$STR(N2)>
#SAY
整数3的值是<$STR(N3)>!\
<返回/@MAIN>\

[@相除]
#IF
#ACT
DIV N3 <$STR(N1)> <$STR(N2)>
#SAY
整数3的值是<$STR(N3)>!\
<返回/@MAIN>\

[@随机赋值]
#IF
#ACT
MOVR N3 <$STR(N1)>
#SAY
整数3的值是<$STR(N3)>!\
<返回/@MAIN>\


[@整和整比较]
#IF
EQUAL N1 <$STR(N2)>
#SAY
整数1  <$STR(N1)>  等于整数2  <$STR(N2)>  !\
<返回/@MAIN>\
#ACT
BREAK

#IF
LARGE N1 <$STR(N2)>
#SAY
整数1  <$STR(N1)>  大于整数2  <$STR(N2)>  !\
<返回/@MAIN>\
#ELSESAY
整数1  <$STR(N1)>  小于整数2  <$STR(N2)>  !\
<返回/@MAIN>\


[@赋值最大生命值]
#IF
#ACT
MOV N3 <$MAXHP>
#SAY
整数3的值是<$STR(N3)>!\
<返回/@MAIN>\

[@整加自]
#IF
#ACT
INC N1 <$HUMAN(XXXX)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@自减整]
#IF
#ACT
DEC HUMAN XXXX N1
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\

[@整乘自]
#IF
#ACT
MUL N1 <$STR(N1)> <$HUMAN(XXXX)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@整除自]
#IF
#ACT
;DIV HUMAN XXXX <$HUMAN(XXXX)> <$STR(N1)> 这样写会导致无法正确计算...必须按下面的格式写
DIV N1 <$STR(N1)> <$HUMAN(XXXX)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@整和自比较]
#IF
;EQUAL HUMAN XXXX <$STR(N1)> 这样写会导致无法正确判断是否相等...必须按下面的格式写
EQUAL N1 <$HUMAN(XXXX)>
#SAY
整数1等于自定义数字型变量1!\
<返回/@MAIN>\
#ACT
BREAK

#IF
LARGE N1 <$HUMAN(XXXX)>
#SAY
整数1大于自定义数字型变量1!\
<返回/@MAIN>\
#ELSESAY
整数1小于自定义数字型变量1!\
<返回/@MAIN>\

[@字赋值给自]
#IF
#ACT
MOV HUMAN AAAA <$STR(S1)>
;这样写有时候能成功,有时候无效...
#SAY
自定义字符型变量1的值是<$HUMAN(AAAA)>!\
<返回/@MAIN>\

[@自赋值给字]
#IF
#ACT
MOV S1 <$HUMAN(AAAA)>
#SAY
字符串1的值是<$STR(S1)>!\
<返回/@MAIN>\

[@CAL整赋值自]
#IF
#ACT
CALCVAR HUMAN XXXX = <$STR(N1)>
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\

[@CAL自赋值整]
#IF
#ACT
CALCVAR N1 = <$HUMAN(XXXX)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@CAL整加自]
#IF
#ACT
CALCVAR N1 + <$HUMAN(XXXX)>
#SAY
整数1的值是<$STR(N1)>!\
<返回/@MAIN>\

[@CAL自减整]
#IF
#ACT
CALCVAR HUMAN XXXX - <$STR(N1)>
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\

[@CALMUL]
#IF
#ACT
CALCVAR HUMAN XXXX * <$STR(N1)>
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\

[@CALDIV]
#IF
#ACT
CALCVAR HUMAN XXXX / <$STR(N1)>
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\

[@CHECK整和自比较]
#IF
CHECKVAR N1 = <$HUMAN(XXXX)>
#SAY
整数1和自定义数字型变量1相等!\
<返回/@MAIN>\
#ACT
BREAK

#IF
CHECKVAR HUMAN XXXX > <$STR(N1)>
#SAY
自定义数字型变量1大于整数1!\
<返回/@MAIN>\
#ELSESAY
自定义数字型变量1小于整数1!\
<返回/@MAIN>\

[@CAL自赋值给字]
#IF
#ACT
CALCVAR S1 = <$HUMAN(AAAA)>
#SAY
字符串1的值是<$STR(S1)>!\
<返回/@MAIN>\

[@CAL字赋值给自]
#IF
#ACT
CALCVAR HUMAN AAAA = <$STR(S1)>
#SAY
自定义字符型变量1的值是<$HUMAN(AAAA)>!\
<返回/@MAIN>\

[@整加整]
#IF
#ACT
INC N3 <$STR(N1)> <$STR(N2)>
#SAY
整数3的值是<$STR(N3)>\
<返回/@MAIN>\

[@整减整]
#IF
#ACT
DEC N3 <$STR(N1)> <$STR(N2)>
#SAY
整数3的值是<$STR(N3)>\
<返回/@MAIN>\

[@整乘整等自]
#IF
#ACT
CALCVAR HUMAN XXXX <$STR(N1)> * <$STR(N2)>
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\

[@整除整等自]
#IF
#ACT
CALCVAR HUMAN XXXX <$STR(N1)> / <$STR(N2)>
#SAY
自定义数字型变量1的值是<$HUMAN(XXXX)>!\
<返回/@MAIN>\




上一篇:传奇锻造装备所需材料设置详解
下一篇:修改新手出生地图
回复

举报

0

主题

429

回帖

520

积分

三级GM

Rank: 4

积分
520
发表于 2014-5-11 10:40:09 | 显示全部楼层
无论是不是沙发都得回复下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新手推荐上一条 /1 下一条

传奇服务端|传奇一条龙|站点地图|手机版|gm基地|红鹰论坛 ( 冀ICP备2023015431号-1 )|网站地图

GMT+8, 2024-11-14 13:18

Powered by 传奇版本 X3.4

本站于2013年2月28日成立,至今运行: 天。本站所有资源均来自网络,严禁商业使用,请于24小时内删除!
快速回复 返回顶部 返回列表