三国游戏人员 发表于 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 编辑 ]

三国游戏人员 发表于 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 编辑 ]

ttheree 发表于 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;

fallening 发表于 2007-7-11 23:26:46

原帖由 ttheree 于 2007-7-10 21:46 发表 http://bbs.h3wog.com/images/common/back.gif
当为玩家时才触发,你可以用flag1000这个标志位,人类玩家 (1000=1) 电脑玩家 AI (1000=0)
在触发的时候加一个条件&1000,就可以了。

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

!?BF&1000 ...

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

倪翔天 发表于 2007-7-12 15:46:05

原帖由 fallening 于 2007-7-11 23:26 发表 http://bbs.h3wog.com/images/common/back.gif


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

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

三国游戏人员 发表于 2007-7-12 16:20:34

原帖由 ttheree 于 2007-7-10 21:46 发表 http://bbs.h3wog.com/images/common/back.gif
当为玩家时才触发,你可以用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了,相当于电脑也执行了语句。
请再次解答为盼。谢谢~~~~

ttheree 发表于 2007-7-12 21:53:20

原帖由 fallening 于 2007-7-11 23:26 发表 http://bbs.h3wog.com/images/common/back.gif


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

ERM我还差得远呢,只能改改前辈们的成品,哪来的自己的作品啊,真不好意思……;lihong;

ttheree 发表于 2007-7-12 22:12:42

原帖由 三国游戏人员 于 2007-7-12 16:20 发表 http://bbs.h3wog.com/images/common/back.gif



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

例如:
!?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;

三国游戏人员 发表于 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 编辑 ]

三国游戏人员 发表于 2007-7-12 22:30:59

原帖由 ttheree 于 2007-7-12 22:12 发表 http://bbs.h3wog.com/images/common/back.gif


你要这样的话就比较麻烦了,你可以使用!!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 编辑 ]

ttheree 发表于 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;

倪翔天 发表于 2007-7-14 16:02:41

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

三国游戏人员 发表于 2007-7-14 16:32:54

原帖由 ttheree 于 2007-7-13 22:48 发表 http://bbs.h3wog.com/images/common/back.gif
首先纠正你的一个错误:
!!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;


这样应该可行吧?

ttheree 发表于 2007-7-14 16:54:40

原帖由 三国游戏人员 于 2007-7-14 16:32 发表 http://bbs.h3wog.com/images/common/back.gif



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

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

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


当然可以……

至于为什么将y3、y4初始化为-1,这只是个人习惯问题,楼主不必在意……;cn;
页: [1]
查看完整版本: 怎么样判断是玩家英雄时执行代码,电脑是不执行?

捐赠