佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 4926|回复: 13

怎么样判断是玩家英雄时执行代码,电脑是不执行?

[复制链接]

该用户从未签到

5

回帖

7511

金币

0

精华

1级 Hired Hero

Rank: 1

积分
9
发表于 2007-7-9 23:20:15 | 显示全部楼层 |阅读模式
:
我想71号英雄为玩家时
!!DO7081/0/20/1&v9555=71:P;
!!DO7081/21/41/1&v9560=71:P;
可执行,为电脑时不执行.
怎么改?
我改成
!!HE71:Oy31;
!!DO7081/0/20/1&v9555=71/y31<0:P;
!!DO7081/21/41/1&v9560=71/y31<0:P;
时无效,直接就不运行这两条代码了.

应该怎么样改?

[ 本帖最后由 三国游戏人员 于 2007-7-10 10:09 编辑 ]

该用户从未签到

5

回帖

7511

金币

0

精华

1级 Hired Hero

Rank: 1

积分
9
 楼主| 发表于 2007-7-9 23:31:49 | 显示全部楼层
还想问一下,
就是关于判断句里的“或or”跟“与and”的关系。

!!VRy23&y22>10/y22<21:S20;
这条语句应该表示y22大于10并小于21时将y23设为20.

如果我想表示y22小于10或者大于21时将y23设为20呢?
应该怎么样表示?
!!VRy23&y22<10/y22>21:S20;吗?应该不对吧?
还是
!!VRy23&y22<10|y22>21:S20;呢?
感觉好象大家的脚本上的关系都是and的关系,都不用or的关系。

[ 本帖最后由 三国游戏人员 于 2007-7-9 23:33 编辑 ]
  • TA的每日心情
    奋斗
    昨天 21:10
  • 签到天数: 651 天

    连续签到: 1 天

    [LV.9]龙巫妖

    89

    回帖

    4万

    金币

    0

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    8868
    发表于 2007-7-10 21:46:02 | 显示全部楼层
    当为玩家时才触发,你可以用flag1000这个标志位,人类玩家 (1000=1) 电脑玩家 AI (1000=0)
    在触发的时候加一个条件&1000,就可以了。

    例如:
    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;

    !?BF&1000;
    !!DO7081/0/20/1&v9555=71:P;
    !!DO7081/21/41/1&v9560=71:P;


    想表示y22小于10或者大于21时将y23设为20就这么写:
    !!VRy23|y22<10/y22>21:S20;

    评分

    1

    查看全部评分

    该用户从未签到

    197

    回帖

    9361

    金币

    4

    精华

    绘图大师

    Rank: 8Rank: 8

    积分
    1497
    发表于 2007-7-11 23:26:46 | 显示全部楼层
    原帖由 ttheree 于 2007-7-10 21:46 发表
    当为玩家时才触发,你可以用flag1000这个标志位,人类玩家 (1000=1) 电脑玩家 AI (1000=0)
    在触发的时候加一个条件&1000,就可以了。

    例如:
    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;

    !?BF&1000 ...


    这位兄弟
    [wiki]ERM[/wiki]玩得不错
    代表大家催促下
    放点东西出来

    该用户从未签到

    651

    回帖

    1万

    金币

    3

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1437
    发表于 2007-7-12 15:46:05 | 显示全部楼层
    原帖由 fallening 于 2007-7-11 23:26 发表


    这位兄弟
    erm玩得不错
    代表大家催促下
    放点东西出来


    风铃同志,把《最后的异次元门》[wiki]WoG[/wiki]化一下啊。
    晕死已经接单了,但是他很忙,你跟他联系一下,然后[wiki]WoG化[/wiki]一下啊。;shxin;

    教育要从娃娃抓起

    该用户从未签到

    5

    回帖

    7511

    金币

    0

    精华

    1级 Hired Hero

    Rank: 1

    积分
    9
     楼主| 发表于 2007-7-12 16:20:34 | 显示全部楼层
    原帖由 ttheree 于 2007-7-10 21:46 发表
    当为玩家时才触发,你可以用flag1000这个标志位,人类玩家 (1000=1) 电脑玩家 AI (1000=0)
    在触发的时候加一个条件&1000,就可以了。

    例如:
    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;

    !?BF&1000 ...



    非常感谢你的回答,我还想再请问一下。

    例如:
    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;

    !?BF&1000;
    !!DO7081/0/20/1&v9555=71:P;
    !!DO7081/21/41/1&v9560=71:P;

    在这个例子中,比如我不固定是玩家使用的71号英雄,我想是所有玩家的英雄都可以执行

    !!DO7081/0/20/1:P;
    !!DO7081/21/41/1:P;
    这两条语句,怎么判断是进攻方还是防守方是玩家英雄呢?

    !!DO7081/0/20/1&1000:P;
    !!DO7081/21/41/1&1000:P;

    是这样吗?感觉不对,因为1000肯定是为1的。然后进攻方跟防守方都执行do7081了,相当于电脑也执行了语句。
    请再次解答为盼。谢谢~~~~
  • TA的每日心情
    奋斗
    昨天 21:10
  • 签到天数: 651 天

    连续签到: 1 天

    [LV.9]龙巫妖

    89

    回帖

    4万

    金币

    0

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    8868
    发表于 2007-7-12 21:53:20 | 显示全部楼层
    原帖由 fallening 于 2007-7-11 23:26 发表


    这位兄弟
    erm玩得不错
    代表大家催促下
    放点东西出来


    ERM我还差得远呢,只能改改前辈们的成品,哪来的自己的作品啊,真不好意思……;lihong;
  • TA的每日心情
    奋斗
    昨天 21:10
  • 签到天数: 651 天

    连续签到: 1 天

    [LV.9]龙巫妖

    89

    回帖

    4万

    金币

    0

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    8868
    发表于 2007-7-12 22:12:42 | 显示全部楼层
    原帖由 三国游戏人员 于 2007-7-12 16:20 发表



    非常感谢你的回答,我还想再请问一下。

    例如:
    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;

    !?BF&1000;
    !!DO7081/0/20/1&v9555=71:P;
    !!DO7081/21/41/1&v9560=71:P;

    在这个例子中,比如我 ...


    你要这样的话就比较麻烦了,你可以使用!!OW:I#1/$2;这个命令,#1--颜色(0~7)、$2--控制者(1 : AI ,0 : 人类)
    定义8个v变量,然后再用!!HE#:O$;命令分别得到两边英雄的所属颜色,再进行比对……

    还有你得到变量值的写法有问题,例如得到英雄编号71的所属颜色并放在y31中应该是这么写的:
    !!HE71:O?y31;

    该用户从未签到

    5

    回帖

    7511

    金币

    0

    精华

    1级 Hired Hero

    Rank: 1

    积分
    9
     楼主| 发表于 2007-7-12 22:26:58 | 显示全部楼层
    先说一下,
    !!HE71:O?y31
    这条语句是正确的,我少打了一个?号。呵呵~~~
    而且返回值y31不是光光是指所属颜色,返回值是0-7的话是指所属颜色,如果对objects返回-1的话是指中立,当前玩家/英雄=-1
    所以我为什么在条件判断里用y31<0了。呵呵~~~
    因为当是电脑所属的时候返回0-7,是当前玩家/英雄时返回-1


    PS:打这个回复的时候我突然想到了.......
    当时我只注意了玩家返回值是-1,现在发现还有当前英雄,不知道当前英雄是指玩家英雄还是把电脑当前英雄也包括在内了。

    [ 本帖最后由 三国游戏人员 于 2007-7-12 23:07 编辑 ]

    该用户从未签到

    5

    回帖

    7511

    金币

    0

    精华

    1级 Hired Hero

    Rank: 1

    积分
    9
     楼主| 发表于 2007-7-12 22:30:59 | 显示全部楼层
    原帖由 ttheree 于 2007-7-12 22:12 发表


    你要这样的话就比较麻烦了,你可以使用!!OW:I#1/$2;这个命令,#1--颜色(0~7)、$2--控制者(1 : AI ,0 : 人类)
    定义8个v变量,然后再用!!HE#:O$;命令分别得到两边英雄的所属颜色,再进行比对……

    还 ...

    感觉了一下,你说得有点麻烦,
    你用了八个V变量,很容易跟其他脚本冲突然,我写ERM的时候希望尽量用y变量。而且我希望尽量写得简单些,尽量使用y变量,你能思考一下,给出一个脚本算法出来吗?
    只是在一个战斗场景里的话,应该光用y变量可以完成两边英雄所属颜色的对比的吧?
    PS:所谓的通用性就是指所有的情况都能适用,不能只是特殊的情况。

    [ 本帖最后由 三国游戏人员 于 2007-7-12 22:46 编辑 ]
  • TA的每日心情
    奋斗
    昨天 21:10
  • 签到天数: 651 天

    连续签到: 1 天

    [LV.9]龙巫妖

    89

    回帖

    4万

    金币

    0

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    8868
    发表于 2007-7-13 22:48:29 | 显示全部楼层
    首先纠正你的一个错误:
    !!HE#:O$;命令是用于获得英雄的所属如果英雄不在地图上或处于无主状态,则返回值为-1。不管这个英雄是否属于人类玩家,哪怕他是属于电脑玩家,则返回值肯定是在0~7之间。不是你之前理解的那样……

    其次我说使用8个v变量是为了简化判断,不用每次都在战场生成时去执行一大段代码,这样会影响生成速度的……如果你一定要的话,也不是不可以……

    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;
    !!VRy2:S-1;
    !!HEv9555:O?y1;
    !!HEv9560&v9560>=0:O?y2;
    !!VRy3:S-1;
    !!VRy4:S-1;
    !!OW&y1>=0:Iy1/?y3;
    !!OW&y2>=0:Iy2/?y4;
    !!VRv9555&y3=0:S157;
    !!VRv9560&y4=0:S157;

    !?BF&1000;
    !!DO7081/0/20/1&v9555=157:P;
    !!DO7081/21/41/1&v9560=157:P;

    该用户从未签到

    651

    回帖

    1万

    金币

    3

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1437
    发表于 2007-7-14 16:02:41 | 显示全部楼层
    嗯~~~气氛不错嘛,大家继续讨论。
    虽然多执行了几条代码,但是我还是倾向于用临时变量,这样能很大程度上避免了跟其他脚本的冲突,加大了通用性。而且wog(hero3)相对来说对电脑的要求很低的,大家现在的电脑基本上感觉不到电脑有没有慢。呵呵~~~

    教育要从娃娃抓起

    该用户从未签到

    5

    回帖

    7511

    金币

    0

    精华

    1级 Hired Hero

    Rank: 1

    积分
    9
     楼主| 发表于 2007-7-14 16:32:54 | 显示全部楼层
    原帖由 ttheree 于 2007-7-13 22:48 发表
    首先纠正你的一个错误:
    !!HE#:O$;命令是用于获得英雄的所属如果英雄不在地图上或处于无主状态,则返回值为-1。不管这个英雄是否属于人类玩家,哪怕他是属于电脑玩家,则返回值肯定是在0~7之间。不是你之前理解 ...



    首先非常感谢你的认真回答。

    在你的语句中还是改变了V9555跟V9560,如果在后面需要用到进攻方或者防守方的英雄的编号的话,那就麻烦了。
    所以我想把你的语句改成:

    !?BA0&1000;
    !!BA:H0/?v9555;
    !!BA:H1/?v9560;

    !?BF&1000;
    !!VRy2:S-1;
    !!HEv9555:O?y1;
    !!HEv9560&v9560>=0:O?y2;
    !!VRy3:S-1;  (干吗要付值为-1呢?直接付值为1不就代表电脑了?)
    !!VRy4:S-1;
    !!OW&y1>=0:Iy1/?y3;
    !!OW&y2>=0:Iy2/?y4;
    !!DO7081/0/20/1&y3=0:P;
    !!DO7081/21/41/1&y4=0:P;


    这样应该可行吧?
  • TA的每日心情
    奋斗
    昨天 21:10
  • 签到天数: 651 天

    连续签到: 1 天

    [LV.9]龙巫妖

    89

    回帖

    4万

    金币

    0

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    8868
    发表于 2007-7-14 16:54:40 | 显示全部楼层
    原帖由 三国游戏人员 于 2007-7-14 16:32 发表



    首先非常感谢你的认真回答。

    在你的语句中还是改变了V9555跟V9560,如果在后面需要用到进攻方或者防守方的英雄的编号的话,那就麻烦了。
    所以我想把你的语句改成:

    !?BA0&1000;
    !!BA:H0/?v9555;
    ...



    当然可以……

    至于为什么将y3、y4初始化为-1,这只是个人习惯问题,楼主不必在意……
    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

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

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

    GMT+8, 2024-11-14 14:54 , Processed in 0.377829 second(s), 15 queries , Gzip On, File On.

    Powered by Discuz! X3.4

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

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