佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 3718|回复: 12

ERA新增变量定义和使用指南

 关闭 [复制链接]
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4948

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34650

    论坛守望者论坛元老杰出贡献

    发表于 2012-12-6 14:00:08 | 显示全部楼层 |阅读模式
    ERA新增变量定义和使用指南

    编程的兄弟都知道,基本所有编程都可以定义自己喜欢的变量名称。但WOG中,ERM的变量名却都是固定好的,诸如 v变量y变量e变量等,在一定程度上也使得变量个数使用有限制。
    ERA中允许自由定义一个变量名,来存储整型变量或字符变量类型的值。(小数类型暂时没研究出来)
    ERM帮助内容:
    SN:W #1/$1; 使用变量 #1
    #1 - 变量的名字
    $1 - 变量的值 (可以是直接的值,也可以是一个变量而引用该变量的值)
    注:这种变量名并不能像普通WOG变量那样直接使用,需要借助一个额外正常变量来读取(变量类型要相同)。


    请看例子:
    1. ZVSE
    2. !?PI;
    3. !!SN:W^WOG-1^/1234567890;         [定义一个变量名为“WOG-1”的整型变量(类似于V变量类型)并赋值]
    4. !!SN:W^WOG-2^/^兽哥是帅锅^;       [定义一个变量名为“WOG-2”的字符变量并赋值(类似于Z变量,注意后面必须带^符号)]
    5. !!SN:W^WOG-1^/?y1 W^WOG-2^/?z1;   [SN:W定义的变量均不能直接使用,需借用一个正常游戏变量来传递]
    6. !!IF:M^WOG-1 = %Y1   WOG-2 = %Z1^;[显示信息]
    复制代码
    01.JPG

    注意:测试发现并不能定义一个类似于 E的小数类型变量存储小数类型。
    !!SN:W^WOG-3^/3.1415;  [会导致错误]

    另外,你应该注意到变量名使用^^,跟WOG中字符串使用一样,可以在字符串里面应用“把变量作为字符串变量的一部分”,即可以在里面使用:%Y1 %V1 %Z1 之类(反映该变量的实际值)作为字符串的一部分。

    再来一个例子:
    1. ZVSE
    2. !?PI;
    3. !!VRv1:S12345;
    4. !!VRv2:S67890;
    5. !!VRy1:S1;
    6. !!SN:W^ERA-1^/v1 W^ERA-2^/v2;
    7. !!SN:W^ERA-%Y1^/?v3;
    8. !!VRy1:+1;                         [改变Y1的值]
    9. !!SN:W^ERA-%Y1^/?v4;               [变量名也跟着变动]
    10. !!IF:M^ERA-1 = %V3   ERA-2 = %V4^; [将显示“ERA-1 = 12345   WOG-2 = 67890”]
    复制代码
    02.JPG


    使用UN:W#1;可以清空变量。
    如:!!SN:W^WOG-1^ W^WOG-2^; 将清除变量。
    此时,若再次调用这些变量名的值,将得到一个默认的值(数字类型值为0,字符类型为空)
    使用SN:W定义一个变量,主要是使用起来记忆方便。一个有意义的字符串总比一个数字更容易记牢。
    最后你是否马上要提问:是不是可以使用中文字符作为变量名?答案是肯定的。
    1. ZVSE
    2. !?PI;                              
    3. !!SN:W^兽哥^/^帅到掉渣^;
    4. !!SN:W^兽哥^/?z1;
    5. !!IF:M^兽哥的意义=%Z1^;           [显示信息 “兽哥的意义=帅到掉渣”]
    复制代码


    03.JPG
    -------------------------------------------------------------------------------------------------------
    下面讲解一下ERA中更为强大的变量数组定义方法。


    不明白数组是什么没有关系,首先得记住数组相当于一连串相同类型变量的集合。
    你看,WOG中y变量(包括正负)一共是200个(y-1~y100)。
    你可以把这些都当成是y的一个数组,这个数组拥有200个元素,-100到100代表了每个元素的索引号。
    你是否灵光一闪,注意到上面 SN:W 定义变量时,若用 SN:W^ERA-%Y1^..这些方式,加一个Y1循环,不也就定义了一串变量了嘛!
    正解,这是个好方法,也相当于定义了一个“ERA-”的数组。


    ERA中另外有一个专门定义数组的语法,
    请看帮助:
    SN:M#1/$1/$2/$3;
    在#1的数组编号位置创建一个拥有$1个元素的数组(变量类型由$2 决定)。
    解释一下参数。
    #1=位置编号,ERA中用一个数字编号代表一个数组的名。
    $1 - 数组元素,其实就是数组元素的个数。
    $2 - 变量类型(0:整型数值类型,1:字符串文本类型),要定义的变量类型,你姑且可以看作是v变量和z变量类型。
    $3 - 保存到游戏存档中 (1: 是, 0: 否),数组属于额外的变量,需要定义是否同时保存到游戏存档中,否则读档后失效。

    而读取和设置数组各元素的值则使用下面语法:
    SN:M#1/$1/$2;
    #1 = 位置编号
    $1 - 数组中的元素索引号 (从0开始),注意是从0开始
    $2 - 数组元素的值


    帮助中的例子比较好理解:
    1. ZVSE
    2. !?PI;                              [创建了一个数值类型的数组]
    3. !!SN:M1/3/0/1;                     [在位置1上创建一组拥有3元素的数值型数组]
    4. !!SN:M1/0/111 M1/1/222 M1/2/333;   [设置各元素的值{111, 222, 333}]
    5. !!SN:M1/1/?y5;                     [读取数组索引号是1的元素的值]
    6. !!IF:M^%Y5^;                       [显示信息 "222"]

    7. !?PI;              [创建一个字符串类型的数组]
    8. !!SN:M0/4/1/1;     [在位置0上创建4元素的数组,字符串类型。保存在游戏存档中]
    9. !!SN:M0/2/^Hello^; [储存字符串'Hello'于数组索引2中]
    10. !!SN:M0/3/^world^; [储存字符串'world'于数组索引3中]
    11. !!SN:M0/2/?z1;     [把数组中索引为2的值读取到z1中]
    12. !!SN:M0/3/?z2;     [把数组中索引为3的值读取到z2中]
    13. !!IF:M^%Z1 %Z2^;   [显示信息'Hello world']
    复制代码

    提示:经测试,第一参数位置编号从0-2147483647均可以用(这也说明,ERA中已经不必担心变量个数限制了,尽情用吧)


    你应该会提问,这么多位置编号,记不住已经使用了哪些怎样办?
    ERA中可以用 -1 位置编号来获取一个空闲的编号(未被使用),该编号存储于V1变量中。你只需要用一个较大的V变量再存储V1的值,就可供长期使用了。
    如帮助中提到的例子:
    !!SN:M-1/0/0/0;    [选择未使用的位置作为临时的储存器](数值类型,未定义元素个数)
    !!VRy1:S1;
    !!VRy1:R6;             [生成随机数字 (1~7)]
    !!SN:Mv1/y1;        [生成一个随机大小的数组](重新定义元素个数为y1)
    !!VRy1:-1;             [y1=位置中的最后索引,因为索引从0开始]
    !!SN:Mv1/y1/777;   [设置最后索引的值为777]


    由于数组需消耗较多内存,所以必须先定义数组(告诉系统要应用哪个位置编号),方可读写数组数据,否则返回错误提示“数组并不存在”。
    SN:W则与之不同,在没有定义的情况下,仍可返回一个默认值。


    -----------------------------------------------------------------------------------
    最后举一个小的例子,定义一个数组记录战斗所有堆栈的标志。希望大家有更深刻的理解。

    1. ZVSE
    2. !?PI;
    3. !!SN:M-1/42/0/0 W^StackFL.Array^/v1; [首先定义一个42元素的数组,空闲编号位置存于v1中,再使用变量名StackFL.Array记录v1的数值]

    4. !?FU111111;                 [记录当前所有堆栈的标志值]
    5. !!SN:W^StackFL.Array^/?y50; [获得记录堆栈标志的数组编号位置]#0
    6. !!VRy2:S0;                  [从堆栈0开始]#1
    7. !!BMy2:F?y3;                [获得该堆栈的标志]#2
    8. !!SN:My50/y2/y3;            [设置数组y50的第y2元素值为y3(相当于记录堆栈标志)]
    9. !!VRy2:+1;                  [用于循环堆栈号]
    10. !!SN&y2<42:G2;              [从本函数程序语句第三行即 #2开始循环]*(ERA新命令,满足条件下从某句开始循环执行语句,注意行数从0开始)

    11. !?BR&v997=1;  [回合数1时触发]
    12. !!FU111111:P;
    13. !!SN:W^StackFL.Array^/?y50;
    14. !!SN:My50/0/?y3;            [读取数组y50第0元素值到y3中]
    15. !!IF:M^第一堆栈编号的标志为: %Y3^;
    复制代码
    04.JPG

    [ 本帖最后由 贤知有您 于 2012-12-6 17:45 编辑 ]

    评分

    1

    查看全部评分

  • TA的每日心情
    慵懒
    2019-8-17 09:46
  • 签到天数: 1158 天

    连续签到: 2 天

    [LV.10]圣龙

    2万

    回帖

    91万

    金币

    7

    精华

    论坛嘉宾

    守望论坛的稻草人

    Rank: 9Rank: 9Rank: 9

    积分
    87636

    社区QQ达人论坛守望者金牌裁判杰出贡献魅力之星TE联赛冠军

    发表于 2012-12-6 14:32:52 | 显示全部楼层
    这个脚本好,值得推荐

    评分

    1

    查看全部评分

  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4948

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34650

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2012-12-6 14:34:17 | 显示全部楼层
    天啊,居然发帖途中论坛中断链接,只发了一半,而且混乱得很。
    重新收拾,真够坑爹了。


    [ 本帖最后由 贤知有您 于 2012-12-6 14:35 编辑 ]
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4948

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34650

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2012-12-6 14:37:30 | 显示全部楼层

    回复 2# 的帖子

    兽哥看中的是图片。
    脚本是次要的,关键是把ERA中关于新增的变量使用方法推荐给大家。
    现在没必要担心变量限制的问题(除了W变量,当然可以用数组来替代,不过有点麻烦)
    采用自定义的变量名,方便易记,冲突的机会也更小。
  • TA的每日心情
    慵懒
    2015-8-1 09:10
  • 签到天数: 56 天

    连续签到: 1 天

    [LV.5]女巫

    2431

    回帖

    37万

    金币

    3

    精华

    7级 Admirable Legendary Hero

    Rank: 7Rank: 7Rank: 7

    积分
    17050

    杰出贡献魅力之星

    发表于 2012-12-6 15:17:23 | 显示全部楼层
      007果然高产帝
  • TA的每日心情
    奋斗
    2015-1-22 08:29
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]野猪

    919

    回帖

    1万

    金币

    1

    精华

    论坛嘉宾

    掘坑者的铁锹

    Rank: 9Rank: 9Rank: 9

    积分
    1522

    退役版主

    发表于 2012-12-6 15:26:13 | 显示全部楼层
    意思就是,只要我们自己约定好,就不用担心变量重复的问题=_,=
    由于变量名可以自行定义(C哟~帕斯卡哟~),因此ERM编写自由度可以说是成几何数增加吧。以后只要关心“别人用过什么”,而不用担心“别人用剩下什么”了。

    评分

    1

    查看全部评分

    某真祖的酒馆留言簿:据说在诅咒之地上作战时,怪物强化III无法完全生效。
    某真祖的酒馆留言簿:魔镜大法能使一些生物施法无效但不能反射。

    该用户从未签到

    107

    回帖

    5341

    金币

    0

    精华

    1级 Hired Hero

    Rank: 1

    积分
    1292
    发表于 2012-12-6 16:57:37 | 显示全部楼层
    我还以为SN语句就是用作声音支持的,从来都不看它的说明。被坑了。

    评分

    2

    查看全部评分

  • TA的每日心情
    开心
    2023-9-21 00:57
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]野猪

    594

    回帖

    1万

    金币

    0

    精华

    3级 Known Hero

    Rank: 3Rank: 3

    积分
    948
    QQ
    发表于 2012-12-6 17:12:37 | 显示全部楼层
    这种贴我只有默默支持的份。精神上支持你。。。
    江湖风云出我辈,一入江湖岁月催!
  • TA的每日心情
    难过
    昨天 19:25
  • 签到天数: 2447 天

    连续签到: 21 天

    [LV.Master]伴坛终老

    1万

    回帖

    37万

    金币

    0

    精华

    白银会员

    Rank: 5Rank: 5

    积分
    94253

    魅力之星

    QQ
    发表于 2012-12-6 18:28:33 | 显示全部楼层
    我也是来围观图片的,顺便鄙视一下某人
    该会员没有填写今日想说内容.
  • TA的每日心情
    开心
    2020-9-19 16:27
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    9896

    回帖

    64万

    金币

    19

    精华

    管理员

    风侠

    Rank: 12Rank: 12Rank: 12

    积分
    52098

    论坛元老魅力之星封魔玩家

    发表于 2012-12-6 18:45:33 | 显示全部楼层
    建议一级精华,版主们自行定夺。
  • TA的每日心情
    开心
    2021-11-2 11:44
  • 签到天数: 754 天

    连续签到: 1 天

    [LV.10]圣龙

    8815

    回帖

    1万

    金币

    17

    精华

    论坛嘉宾

    寄蜉蝣于天地,渺沧海之一粟。

    Rank: 9Rank: 9Rank: 9

    积分
    42459

    退役版主社区QQ达人论坛守望者脚本测试狂论坛元老杰出贡献魅力之星

    发表于 2012-12-6 23:27:10 | 显示全部楼层
    进来学习ERA。。。
    SN真是恐怖,由ERM的1重功力直接上升到ERA的10重功力。。。
    如果整形变量的赋值可以中文输入就最好了,我就把心云老大的所有黑道小兄弟给一锅端过来,大鸟、二娃、三牛、四狗。。。
    “你看见的,是追随诸神脚步前进的埃拉西亚!”
    封神2.2黄金版 - 决战神之巅,英雄无敌世界的终极幻想
  • TA的每日心情
    开心
    2023-9-13 09:33
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]火元素使者

    1630

    回帖

    1万

    金币

    1

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    9089

    退役版主

    QQ
    发表于 2012-12-7 01:25:01 | 显示全部楼层
    意思是说ERA不用为变量不够发愁了?那真是碉堡了
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4948

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34650

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2012-12-7 11:58:23 | 显示全部楼层

    回复 11# 的帖子

    我说沧大.
    整型的肯定是要数字型啦, 字符型就能收集你的大鸟、二娃、三牛、四狗.
    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

    捐赠
    关注我们,英3Mod一网打尽!

    WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

    GMT+8, 2024-5-29 09:51 , Processed in 0.999742 second(s), 30 queries , Gzip On, File On.

    Powered by Discuz! X3.4

    Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

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