贤知有您 发表于 2012-5-11 20:26:06

关于交换英雄位置的ERM问题

刚写了个<移形换影>,想实现交换2个英雄的位置.现在功能倒是有了,但有个问题很是困惑.

!!HEy10:P?y21/?y22/?y23; [获取英雄位置]
!!HEy-1:P?y31/?y32/?y33;
!!HEy10:Py31/y32/y33/0;
!!HEy-1:Py21/y22/y23/0; [交换位置]


这里直接交换位置的话,错误倒是没有.但地图上会多出个英雄来,一模一样的英雄,不可移动,但可英雄访问或攻击.这是何解?
试过先将2个英雄都变成无主状态,然后一个一个重入归属,再移动..但最后依然是有重复英雄.
!!HEy10:O?y50; [获取当前玩家所属]
!!HEy-1:O-1; [将英雄置于无主状态]
!!HEy10:O-1; [将英雄置于无主状态]
!!HEy10:Oy50; [英雄归位]
!!HEy10:Py31/y32/y33/1; [交换位置]
!!HEy-1:Oy50; [英雄归位]
!!HEy-1:Py21/y22/y23/1; [交换位置]


最后用个间接语句 !!HEy-1:P0/0/0/0;重复英雄现象倒是不是出现,总觉很不爽.希望达人们告知更好的方法.
另外,使用Px/y/l/0;0表示直接跳到位置.但为何还是会有发声的现象呢?
附上全代码及测试图.




------------------------------------------------------------------------------
ZVSE
**大地图右键点"休眠/唤醒按钮"触发
**可以交换玩家2个英雄的相互位置
**需要50点魔法值和2000的移动力
**注意不要在地图刚开始时立刻应用,会出错(没有当前英雄概念),可先点击进入英雄界面

!?PI; 地图开始时触发
!!HE0:X3/8;      [更改特长为"二次元"]
!!UN:G2/0/3/311;[异次元特长图片]

!?CM2;   [英雄信息场景的点击]
!!HE-1:N?y1; [获取当前英雄编号]
!!FU&y1<>0:E;   [不是欧灵则退出](这里修改你喜欢的英雄编号)
!!VRz1:S^{英雄特技 移形换影:
足够魔法值和移动力的情况下可与其它英雄交换位置!}^;
!!UN&y1=0:G2/0/2/1; [设置英雄的特长说明(最后是Z变量号)]

!?CM0;[大地图鼠标触发]
!!CM:I?y1 F?y2; [点击位置/鼠标动作]
!!FU|y1<>6/y2<>512:E; [点击位置 休眠/唤醒按钮/不是右键按下]
!!HE-1:N?y10; [当前英雄编号]
!!HE-1:B0/?z-1;
!!FU&y10<>0:E; [不是欧灵,退出](这里修改你喜欢的英雄编号)

!!HEy10:I?y40 W?y41; [魔法值/移动值]
!!IF&y40<50:M^你没有足够的魔法值施放{<移形换影>}大法!^;
!!IF&y41<2000:M^你没有足够的移动力施放{<移形换影>}大法!^;
!!FU|y40<50/y41<2000:E;

!!OW:O-1/?y19/?y11/?y12/?y13/?y14/?y15/?y16/?y17/?y18; [获取玩家英雄列表(8个)]
!!VRz-10:S^%Z-1 特长可施展<移形换影>大法
请选择你想交换位置的英雄(英雄列表顺序)^;
!!VRz-9:S^退出^;
!!HEy11&y11>=0:B0/?z-1; [获取第一个英雄名字]
!!HEy12&y12>=0:B0/?z-2; [获取第二个英雄名字]
!!VRz-2&y12=-1:S^^;   [没有英雄的情况时]
!!HEy13&y13>=0:B0/?z-3;
!!VRz-3&y13=-1:S^^;
!!HEy14&y14>=0:B0/?z-4;
!!VRz-4&y14=-1:S^^;
!!HEy15&y15>=0:B0/?z-5;
!!VRz-5&y15=-1:S^^;
!!HEy16&y16>=0:B0/?z-6;
!!VRz-6&y16=-1:S^^;
!!HEy17&y17>=0:B0/?z-7;
!!VRz-7&y17=-1:S^^;
!!HEy18&y18>=0:B0/?z-8;
!!VRz-8&y18=-1:S^^;

!!CM:R0; [禁用标准反应]
!!IF:G1/1/1/-10/-1/-2/-3/-4/-5/-6/-7/-8/-9;[结果存于V1]
!!FU&v1=256:E; [选择退出]
!!VRy-1&v1=1:Sy11;[保存选中的英雄编号]
!!VRy-1&v1=2:Sy12;
!!VRy-1&v1=4:Sy13;
!!VRy-1&v1=8:Sy14;
!!VRy-1&v1=16:Sy15;
!!VRy-1&v1=32:Sy16;
!!VRy-1&v1=64:Sy17;
!!VRy-1&v1=128:Sy18;
!!IF&y-1<0:M^你没有选中任何活动的英雄!^;[这句似乎可忽略]
!!FU&y-1<0:E;
!!IF&y-1=y10:M^不能选择和自己交换位置!^;
!!FU&y-1=y10:E;
!!HEy10:P?y21/?y22/?y23; [获取英雄位置]
!!HEy-1:P?y31/?y32/?y33;
*!HEy-1:P0/0/0/0;      [间接语句,如少这句,会出现2个相同的英雄?????]
!!HEy10:Py31/y32/y33/1; [交换位置]
!!HEy-1:Py21/y22/y23/1; [交换位置]
!!HEy10:Id-50 Wd-2000; [减少魔法值和移动力]

---------------------------------------------------------------------

兽哥哥 发表于 2012-5-11 21:03:10

这个看起来很有趣

沧海一粟 发表于 2012-5-11 21:11:51

这个脚本有意思,顶一下。
其实我觉得你出现上述情况很正常,HE:P就是瞬间把英雄移动到某处,而y10英雄先瞬间移动时y-1英雄刚好还在那里,两个英雄的位置当时应该是重复了,至于解决,我倒觉得你那把y-1英雄先移开的方法不错。
还有就是声音如果!!HEy10:Py31/y32/y33/0;也有的话,那就没办法了,其实有这种次元门的声音不是更爽吗?

[ 本帖最后由 沧海一粟 于 2012-5-11 21:13 编辑 ]

贤知有您 发表于 2012-5-11 21:28:00

回复 3# 的帖子

我觉得不是英雄重叠的问题,而是英雄被复制了..但就是想不明白是怎么复制出来的..撞鬼了呵呵.
AB交换位置之后,其中一个英雄A移动开,他的原位置会出现跟他交换的那个英雄B.
于是地图上出现了2个一模一样的英雄B.其中一个类似个物体,能访问,就是不能移动.太搞笑了.

先移开其中一个英雄到左上角,但如果刚好0,0,0的位置也有个英雄,不知道会出现什么状况;ft;

沧海一粟 发表于 2012-5-11 21:45:52

回复 4# 的帖子

一样复制,呵呵;oweojs;
这种鬼东西我见过,所以那个垃圾英雄我才限定不能蹲在城里,不然一样变成两个垃圾英雄

hellmatrix 发表于 2012-5-11 22:08:05

好有趣的脚本呀,下载了试试看

无心云 发表于 2012-5-11 22:41:28

这个真的有很有趣哦,不过貌似有待完善
关注

格鲁德肯 发表于 2012-5-11 22:52:03

可以复制英雄?那干脆做个“影分身”大法,一个英雄可以分出N个分身,就像若干个英雄,然后每人的数据一样,每个分身得到的经验值都能共享。单英雄多分身通关也是很爽的事情。

灰狼王子 发表于 2012-5-11 22:56:04

这个脚本很有趣也很实用啊,有时候也很恐怖啊——当然是对电脑来讲,本来一个菜鸟英雄杀了过来,突然就变身才大牛,情何以堪啊;aieol;

灰狼王子 发表于 2012-5-11 22:58:05

原帖由 格鲁德肯 于 2012-5-11 22:52 发表 http://bbs.h3wog.com/images/common/back.gif
可以复制英雄?那干脆做个“影分身”大法,一个英雄可以分出N个分身,就像若干个英雄,然后每人的数据一样,每个分身得到的经验值都能共享。单英雄多分身通关也是很爽的事情。
这个可以考虑做到特定地图里,比如孙猴子大闹天宫之类的,拔根猴毛变身,但是对于分身应有标记或者有某些方面的限制,比如持续天数什么的,或者共享魔法点数,尽量不要太BT了。

沧海一粟 发表于 2012-5-11 23:48:29

回复 10# 的帖子

晕,那个复制用不得的,小心动不动每天都赏你黑屏。如果真的要克隆,只能用其它没出场的英雄用erm改变成你心目中想克隆的英雄。

songfx 发表于 2012-5-12 08:41:43

这个问题应该好解决,首先单个英雄移位很方便,也不出错。两英雄交换,可以先让A英雄往旁边空位移一步,然后B英雄移到A之前的位置,A英雄移到B之前的位置。

贤知有您 发表于 2012-5-12 08:55:09

回复 12# 的帖子

风侠说得很对.所以我也用了最左上角(0,00)作为中间交换点.勉强可以.
不过,就算是这样,也要先判断那个中间交换点是否有英雄.
如此需要反复判断多次,直到找到个没有英雄的位置.

songfx 发表于 2012-5-12 09:42:29

依次检查A英雄周围8格,如果是空位,就开始交换,如果非空位,检查下一个。

沧海一粟 发表于 2012-5-12 09:56:37

回复 13# 的帖子

你那个交换列表,主英雄的名字怎么又在里面,完全可以用判断取消掉,根本不用出现在对话框里再限制。

贤知有您 发表于 2012-5-12 10:14:48

回复 15# 的帖子

明白,对比是原英雄的话,设置为空白..就自动跳过了.;go;

贤知有您 发表于 2012-5-12 10:28:38

回复 14# 的帖子

检测英雄周围8格,好麻烦..
又要判断是否有英雄,又要判断是否越界.

要再想想有没有更方便快捷的方法才行.
页: [1]
查看完整版本: 关于交换英雄位置的ERM问题

捐赠