立即注册 找回密码

搜索

一休啦啦-关于HERO引擎变量操作命令的深入探讨

 火... [复制链接]
发表于 2023-12-7 23:55:03 | 显示全部楼层 |阅读模式
一直以来都以为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>\


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




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

使用道具 举报

发表于 2023-12-8 00:08:03 | 显示全部楼层
这东西我收了!谢谢楼主!
回复

使用道具 举报

发表于 2023-12-8 18:15:42 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!
回复

使用道具 举报

发表于 2023-12-9 02:58:22 | 显示全部楼层
谢谢楼主!喜欢这里的东西,方便又好用!
回复

使用道具 举报

发表于 2023-12-9 03:33:44 | 显示全部楼层
谢谢楼主!喜欢这里的东西,方便又好用!
回复

使用道具 举报

发表于 2023-12-9 08:20:42 | 显示全部楼层
比较全的传奇教程分享网站,站长辛苦了。
回复

使用道具 举报

发表于 2023-12-9 16:36:29 | 显示全部楼层
这个帖子不回对不起自己!
回复

使用道具 举报

发表于 2023-12-9 18:15:46 | 显示全部楼层
这东西我收了!
回复

使用道具 举报

发表于 2023-12-11 02:45:57 | 显示全部楼层
谢谢楼主!喜欢这里的东西,方便又好用!
回复

使用道具 举报

发表于 2023-12-11 06:10:07 | 显示全部楼层
这个帖子不回对不起自己!
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【64gm论坛,传奇版本库】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服QQ:909928377

顶部

QQ|传奇开区一条龙|私服服务端|传奇单机架设教程|手机版|64gm论坛 ( 鄂ICP备2021011479号-2 )|网站地图

GMT+8, 2024-4-29 12:44 , Processed in 0.236322 second(s), 48 queries .

Powered by 64gm X3.5 © 2009-2023 64gm论坛 Inc &

免责声明:本站所有资源均来至网络,仅供学习交流,严禁用于商业用途,请于24小时内删除!开区请获得授权.