一休论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 83|回复: 0

[图文教程] 一休啦啦-关于HERO引擎变量操作命令的深入探讨

[复制链接]
  • TA的每日心情
    擦汗
    2015-2-25 10:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-9-4 13:01:49 来自手机 | 显示全部楼层 |阅读模式
    网络广告风险自担 网络广告风险自担
    网络广告风险自担
    一直以来都以为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>\


    上一篇:一休啦啦-传奇修改新手出生地图
    下一篇:一休啦啦-传奇锻造装备所需材料设置详解
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    网络广告风险自担

    小黑屋|传奇一条龙|GM基地|GM版本库|一休论坛

    GMT+8, 2016-12-10 14:55 , Processed in 0.717601 second(s), 81 queries , Gzip On.

    传奇一条龙 GM基地 版本库 传奇论坛 传奇漏洞论坛 传奇服务端下载 传奇版本

    站长QQ:1921249589 一休论坛资料来自网络仅供学习交流之用,用于商业后果自负

    快速回复 返回顶部 返回列表