一直以来都以为HERO传奇引擎的变量操作命令只支持常数做参数,前段时间在读HERO引擎说明书的时候偶然发现HERO引擎某些变量操作命令提到了变量做参数的用法,大为惊喜,这意味着HERO引擎的变量用法更加强大,于是进行了详细的测试,有了以下的结论,喜欢看结论的直接看结论吧,喜欢测试的直接复制测试脚本吧,想想HERO引擎在2010年就实现了这个功能,有的引擎到去年才实现,对HERO引擎作者的编程功底再次佩服。

对于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>\

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。