找回密码
 点一下
查看: 1784|回复: 14

由昨天和各位前辈讨论“复制一个单位”的技能想到的一个问题

[复制链接]
发表于 2010-9-25 11:35:00 | 显示全部楼层 |阅读模式
小弟昨天在论坛各位前辈的帮助下制作了复制单位的技能:该技能作用于目标敌方单位(非英雄单位)后,便可以在自己身边复制一个和作用目标血量和魔法值一模一样的单位(该单位的单位属性属于可驱散的),并且该单位可以持续60秒钟。

w21m0115d01前辈书写的触发很好的实现上述技能:
事件
单位 - 任意单位 发动技能效果
条件
施放技能 等于 复制
动作
单位 - 创建 1 个 ((技能释放目标)的类型)给((触发单位)的所有者) 在 ((触发单位)的位置),面向 默认角度)
单位 - 设置 最后创建的单位 的生命值 为 技能释放目标 生命值
单位 - 设置 最后创建的单位 的魔法值 为 技能释放目标 魔法值
单位 - 设置 最后创建的单位 的生命周期 为 60 秒 类型为 水元素


通过这个技能,我想到了另外一个问题,譬如说,我们现在要做这样一个技能:
该技能作用于目标敌方单位(非英雄单位)后,便可以在自己身边创建一个特定的单位(譬如说是自己创建的一个有500血,500魔的没有任何技能的“空白”单位),并且该“空白”单位可以通过触发复制目标单位的全部技能(也就是通过触发具有了目标单位的所有技能)。
所以,想请教各位前辈,该技能能够通过触发实现吗?如果能够的话那么触发该如何书写呢?请指教,谢谢...
发表于 2010-9-25 12:27:26 | 显示全部楼层
可以试试将所有你地图里可能出现的技能全部用变量储存,然后使用时循环判断单位是否拥有该技能,有的话就添加
不过这样的话工作量是恐怖的
回复

使用道具 举报

发表于 2010-9-25 12:34:41 | 显示全部楼层
小鸟在雾岛星仁
回复

使用道具 举报

发表于 2010-9-25 12:36:58 | 显示全部楼层
可是LZ想要让某个单位拥有目标的所有技能的说
除了循环我就不知道怎么办了。。。
希瓦有好方法么?
回复

使用道具 举报

发表于 2010-9-25 12:50:22 | 显示全部楼层
一:用缓存记录
二:在学习时记录
三:一是正解
回复

使用道具 举报

发表于 2010-9-25 12:53:13 | 显示全部楼层
演示在此
a.w3x (16 KB, 下载次数: 22)
回复

使用道具 举报

 楼主| 发表于 2010-9-25 16:32:15 | 显示全部楼层
谢谢前辈的演示,该技能小弟仔细测试过,是可以实现复制目标单位的效果。

不过小弟是想以此引申,做另外一个触发来实现“复制技能”的效果:
该技能作用于目标敌方单位(非英雄单位)后,便可以在自己身边创建一个特定的单位(譬如说是一个有500血,500魔的没有任何技能的“空白”单位,假如是自己创建的一个有500魔的一级水元素),并且该“空白”单位可以通过触发复制目标单位的全部技能(也就是通过触发具有了目标单位的所有技能)。
那么请问各位前辈,这个触发应该怎么写呢?请指教,谢谢...
回复

使用道具 举报

发表于 2010-9-25 17:01:14 | 显示全部楼层
那么,该技能目标是英雄还是普通单位呢?

复制英雄的技能要简单些(也就是学习时记录),复制单位技能的最好的方法貌似就是小鸟说的:列出一个表了…………
回复

使用道具 举报

 楼主| 发表于 2010-9-26 17:39:29 | 显示全部楼层
哦,回希瓦前辈,该技能目标是普通单位,如果是这样的话,那么复制单位技能的最好的方法则如a595859893前辈所说列出一个表,将地图里可能出现的技能全部用变量储存,然后使用时循环判断单位是否拥有该技能...不过,也正如a595859893前辈所说,那样的话,工作量也是相当恐怖的...
除此之外便没有其他便捷一点的方法吗?
假如没有的话,那么上述变量储存的具体方法又是怎样的呢?
如果不是太复杂不会耽误大家太多时间,或是有相关链接的话,还请劳烦各位前辈再次赐教,谢谢...
回复

使用道具 举报

发表于 2010-9-26 17:46:29 | 显示全部楼层
注意:技能目标 不等于 技能马甲

而更简单的方法的话,也就是“列出一个表”记录每个单位类型拥有的技能(工作量其实不算很大,倒塌的“吞噬”貌似就是这样做的)
反正,这些方法都需要“列出一个表”(应该来说没有简单的方法),想偷懒是完不成这个技能的。

演示在此 啊.w3x (14 KB, 下载次数: 11) 啊2.w3x (14 KB, 下载次数: 15)
回复

使用道具 举报

发表于 2010-9-26 17:59:11 | 显示全部楼层
引用第8楼thrall于2010-09-26 17:39发表的  :
哦,回希瓦前辈,该技能目标是普通单位,如果是这样的话,那么复制单位技能的最好的方法则如a595859893前辈所说列出一个表,将地图里可能出现的技能全部用变量储存,然后使用时循环判断单位是否拥有该技能...不过,也正如a595859893前辈所说,那样的话,工作量也是相当恐怖的...
除此之外便没有其他便捷一点的方法吗?
假如没有的话,那么上述变量储存的具体方法又是怎样的呢?
如果不是太复杂不会耽误大家太多时间,或是有相关链接的话,还请劳烦各位前辈再次赐教,谢谢...
设置XXX[1]=技能1
设置XXX[2]=技能2
设置XXX[3]=技能3
……
设置XXX[N]=技能N
直到将所有技能全部列完


然后使用时

循环整数A从1到N做动作
如果单位的XXX[循环整数A]大于0

添加XXX[循环整数A]给单位
否则
无动作
差不多是这个样了
回复

使用道具 举报

 楼主| 发表于 2010-9-26 18:18:40 | 显示全部楼层
哦,那么请问a595859893前辈,上面触发中XXX就是设置的变量的名字吗?整个触发中也只是涉及到这一个变量吗?
回复

使用道具 举报

发表于 2010-9-26 18:26:25 | 显示全部楼层
那是一个技能数组变量

镜像元素.w3x

19 KB, 下载次数: 13

回复

使用道具 举报

发表于 2010-9-26 19:37:36 | 显示全部楼层
首先,所谓的技能本身是两种,一种是技能类型,一种是技能自身,这个类似单位类型和单位的差别,即,不同单位的同类技能不是同一个技能。然后,英雄技能与普通技能的差别(物品技能类似普通技能)在于,英雄拥有的英雄技能是在0级时就在单位身上的,即英雄身上的英雄技能存在0级。而普通技能如果为0级相当于没有。注意是相当于。记得大约设置一个不存在于某单位的普通技能的等级无效。删除后的技能也无效,删除英雄技能相当于设置技能等级为0。直接获取一个单位拥有的技能是不能的。只能判断单位有没有一个技能,判断方法有两种,一种是判断技能等级是否为0。此方法有个问题,就是上面说的英雄技能,英雄技能就算为0级也有可能有。第二种方法是用j设置技能永久性判断,此函数返回一个布尔值。这个方法必须用j或者自定义代码。至于循环全部技能没有必要,记得单位类型就是整数型的。所以如果每种单位的技能是固定或有限的,可以根据单位类型来分类存储。1.24下使用hashtable(哈希表),用单位类型做父key。1.20下用gc就行了,或者复杂些用数组做二维数组。只是此方法需要懂j。
回复

使用道具 举报

 楼主| 发表于 2010-9-26 21:12:59 | 显示全部楼层
谢谢沉静前辈和a595859893前辈的演示,以及其他前辈的热心帮助,基本原理我已经懂了,不过将所有非英雄单位的基本技能全部编辑进触发真的是一个不小的工程啊,不过小弟用将近2个小时的时间完成了,经试验效果还是不错的,虽然很累,但是很高兴...谢谢各位前辈哈...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-10-1 14:59 , Processed in 0.041939 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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