|
来到论坛有一段时间了,很喜欢这个论坛,氛围很好,现在这样真正交流技术的论坛不多了。
一直以来都以为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>\ |
上一篇:传奇锻造装备所需材料设置详解下一篇:修改新手出生地图
|