找回密码
 点一下
查看: 5451|回复: 37

投石车模式

[复制链接]
发表于 2010-6-3 02:59:57 | 显示全部楼层 |阅读模式
首先要对之前的事情道歉,部分原因我也找到了,以后我会注意的。



如标题所说,这个地图就是演示投石车模式,定点攻击。其实说白了就是Create Unit(创造一个靶子),然后A它,然后加上一些细节的限制。很简单的演示。

首先说下为什么要模拟,因为我找不到白打地面的方法= =,Attack技能只是用来筛选目标(目标必须是单位)、触发Weapon,而Weapon也没有找到攻击地面的Option。Weapon的筛选目标更不必谈。Weapon的下面就是Effect,更不可能找到方法。所以Weapon就是一个必须以单位为目标的技能。

那么首先说一下构思

先要了解投石车的效果过程:释放一个技能(无CD随时释放,任何地点任何视野,只要距离够) → 开始攻击(任何命令都将中断这个过程,除了“瞬间”技能,没有时间限制)

当时思考是这样的。因为Create Unit也就意味着别人也可以打它,我不希望这样,所以必须有个宏观过滤,比如说“Target Filters”,但是如果我不想浪费这些宝贵的属性呢,我想了一下,两种方法:1.Buff 2.Match(之后我都用Marker表示,因为它本来就是Marker不是Match)。有Marker干嘛要用Buff,于是我失败了……【不管Buff还是Marker,都必须为每个地图中出现的技能设置Validator过滤掉靶子,很麻烦吧,虽然这个Validator条件都是一样的,一个一个添加麻烦死了,所以一般来说,为每个根父类都设置一个Validator是最方便的,具体还有点小复杂,就不多说了】

为什么可以使用Buff、Marker呢,因为Weapon啊,除了自己的Target Filter可以筛选单位,它的第一个Effect的【Validator&Filter】也可以帮助筛选,第二个呢?

是这样的:
1.通常Weapon想要锁定一个目标,准备发动第一个Effect,如果这个Effect的【Validator&Filter】说不可以,那么Weapon连“想要锁定”都办不到,直接过滤了。
2.通常Weapon想要锁定一个目标,准备发动第一个Effect,如果这个Effect不存在,那么Weapon放空炮...
3.情况复杂点,例如:Weapon→Set→Damage1 + Damage2。如果Set允许通过,Damage1&2的【Validator&Filter】都说不可以,Set还是要执行的,所以这相当于放空炮;那么如果Damage2的Validator&Filter说可以,那就施加Damage2的伤害。

所以,如果我希望Weapon能够过滤掉这个靶子,且不使用Target Filters,那么就只能使用【第一个效果的Validator】。可惜Marker完败。



接下来我说一下为什么Marker败了(这里并不详细介绍Marker的规则,只是大致的思路,和一点点更明确的发现)

Marker是标记,但无论如何,Marker必须依赖它的link,我之前的帖子里有说过,但有纰漏,且不完全,重点看看http://bbs.islga.org/read-htm-tid-41289.html第19楼,了解一下基本情况。Player、Unit、Link、ID的关系,要这么推理:无论是哪一,都依赖Link,那么Link恐怕就是最大的领袖了,大概它们的范围排序就是【Link》Player》Unit》ID】,link和Player的范围我没测试,只是这么觉得,有谁比Player小,却比Unit大的?所以Link恐怕就是全地图了。

Ability没法使得自己的Effect识别Ability的Marker
Weapon有点问题
Effect完胜
Behavior?这东西虽然没有Marker,但是添加Buff的效果将会保证Marker与Behavior同在,不至于归零。

那么,如果我想使用Marker帮我识别自己的靶子,分为两个步骤:
1.制造Marker,结合这个例子,我必须制造一个靶子(Create Unit),然后我要为Create Unit上上一个标记(Marker),之后Create Unit会创造一个SCV,并为这个SCV施展“实际效果”,使得Marker Count增加,只要不是0就好。Match使用Unit,这就表示这个靶子是自己的。
2.识别Marker,在Weapon的第一个效果的Validator中判断目标单位是不自己的靶子。

到步骤2就失败了。Marker必须依赖Link进行识别,所以Weapon的第一个Effect的Marker和步骤1的Link一样不就可以了?不可以...Validator的运作机制不允许,Validator不会去识别自己所在Effect的Marker Link,会去识别它的上级,最远可以到达Weapon的Marker Link,可是Weapon这个悲剧是一个不完整的男人……

举个例子:
1.Weapon → Set → Damage(Validator表示Marker必须大于1);那么这个Validator会去读取Set的Marker Link,如果Set没有读取Weapon,正常通过
2.Weapon → Set(Validator表示Marker必须大于1) → Damage;那么这个Validator根本不会去读取Weapon的Marker Link。所以百分之百Validator说不可以。

也许Weapon只是因为不喜欢老大,所以不想满足老大的要求。鬼知道是不是Bug。这整个匪夷所思的过程都让我觉得暴雪!@#¥%……&*(



那就使用Buff吧。可是Buff的思路就没有Marker清晰明了了(未见得Buff就复杂,只是思路没有Marker清晰,我这么觉得。而且无论如何都要使用到Buff,只是使用Marker可以尽量减少Buff的数量)。Buff依赖比较高的耦合性,所以我的图耦合性很高。

需求还是不变,重点思考,靶子到底怎么被过滤:
首先别人都不准打,给靶子添加一个Buff,是个人都别打,可自己怎么办?100个投石车要一一区分,那么就必须给投石车自己加上Buff,在创造靶子的时候加上一个,能不能打靶子就看自己有没有这个Buff……都有Buff怎么办?Create Unit之后立刻给投石车加上Buff,命令投石车攻击靶子,一旦停止就删掉Buff,杀死靶子。这保证了“投石车可以打靶子的时候,只能打自己当时创造出来的靶子”,脚踏两条船的投石车不存在。

简单吧……浪费了许多话都是我所遇到的困难上的……

由于太简单了所以就不详细说明了,将一些重点一一标出:
1.不会英语的人也知道英语有个Yes/No的回答习惯吧,对的事情表示否定要回答No,错的事情表示肯定要回答Yes,好吧,这个思维方式我很不习惯,但是Validator就不得不注意了。Damage的Validator表示No,Switch的Cases Validator表示Yes。虽然汉语的思路是,满足Validator就不发动,总之我困扰过。某些Validator还有个Find可以反转,诶……Validator有四个,所以注意了……

2.Effect Set的所有效果都是同时发动的,可以当做多线程,所以Set中的效果之间并不了解,如果涉及到时间的耦合,就不得不使用Persistent延时一下……例如:添加行为的效果A,判断行为的效果B,放在同一个Set中,B就无法判断A产生的行为,除非把B放进Persistent,并延时0.0004秒以上……

3.靶子死了会删除投石车的Buff,但是假设这样情况:对地点A攻击(创造了靶子A),对点B攻击(靶子A死了,创造了靶子B,并添加了Buff,靶子A删掉了这个Buff) —— 连续使用技能的一瞬间,会出现这种干扰,解决办法是在技能的Prepare Time中设置0.2秒左右,也不知道SC2的前摇后摇问题有没有,是怎样,总之坦克就是这么解决了。

4.靶子通过两点判断自己仍被瞄准:1.投石车攻击的目标是靶子 2.投石车不是A地板(这是为了A地板可以打断技能)在地图的Alive这个行为中,使用了这两个Validator;顺便一提,这个行为会回血,单位自身是减血,所以行为没了单位就死了

5.作为靶子的SCV被隐藏了,Unit - Flag - No Draw看不到动画了,某Actor中修改声音。碰撞体积0,移动方式是天空(就算没有碰撞体积,也不允许摆在建筑上,我还不知道怎么直接允许建筑那啥那啥),被攻击选定的目标是地面&天空。靶子的Alive行为设置受到伤害永远是0.

6.Switch……使用它是有原因的。本来,作为普通模式,投石车自己也不允许打靶子,在技能模式下就变为可以打靶子了,那武器就要变啊,当时我用行为添加武器,结果发现几个规则
1.武器如果显示冷却,和武器的link无关,某个武器发动攻击,所有武器一起冷却,但是行为刚添加的武器冷却是0(只要不断地使用技能,攻击间隔就被无视了),除了Link我也不知道怎么让这两个Weapon同步,但Link也是毫不相干的东西,未果,果断放弃
2.我想到了Switch,只要在自己拥有Buff的时候,切换成另一个Damage(这个Damage的Validator就允许打靶子了)
3.Switch的默认&替换效果作为Switch本身处理,好玩吧,这就是为什么,看起来Damage放在Switch里面,并非Weapon的第一个Effect却可以发挥Validator的作用

7.地图里坦克就是那位投石车,Ghost和坦克一样,武器伤害添加了Validator,其它单位都可以攻击靶子。由于SCV是No Draw状态,所以无法释放单位目标技能,却会被范围效果作用到,用感染者喷一口就知道了,这个也是要过滤的。可能存在让单位不会被选择的方法,我是不知道的。

诶,想不出来了,脑袋糊了,于是总结一下:我是多么希望我在走弯路...

投石车模式.SC2Map

30 KB, 下载次数: 119

发表于 2010-6-3 04:34:13 | 显示全部楼层
像帝国时代一样可以变形吗。
回复

使用道具 举报

 楼主| 发表于 2010-6-3 04:42:33 | 显示全部楼层
那是Actor的事情,可以将这个技能弄成变形的...反正坦克就有一个变形技能,改起来也方便...
回复

使用道具 举报

发表于 2010-6-3 05:09:04 | 显示全部楼层
像大菠萝一样可以替换投射物吗,比如说扔冰球,扔火球,扔闪电球和毒气球什么的。
回复

使用道具 举报

发表于 2010-6-3 05:17:05 | 显示全部楼层
可以像马里奥那样吃了蘑菇以后变大吗。
回复

使用道具 举报

发表于 2010-6-3 05:21:31 | 显示全部楼层
吃了小花还可以扔火球。
回复

使用道具 举报

 楼主| 发表于 2010-6-3 05:49:39 | 显示全部楼层
以上,全都可以……喂!
回复

使用道具 举报

发表于 2010-6-3 05:51:22 | 显示全部楼层
至少吃了蘑菇以后头顶要能碎大石。
回复

使用道具 举报

 楼主| 发表于 2010-6-3 05:55:35 | 显示全部楼层
使用技能【Jump】跳起,破坏单位头顶的单位,巨型单位要顶10几下
回复

使用道具 举报

发表于 2010-6-3 06:22:39 | 显示全部楼层
这个问题已经解决了呀~

话说~一点都看不懂~
回复

使用道具 举报

 楼主| 发表于 2010-6-3 06:46:53 | 显示全部楼层
因为这不是教程,是唠嗑


-------------------------------------------------------------------------------------------------------
顺便说一句:像这种繁琐的宏观过滤,建议使用Validator的打包,一了百了
回复

使用道具 举报

发表于 2010-6-3 12:08:13 | 显示全部楼层
太多了。。没看完-,-
回复

使用道具 举报

发表于 2010-6-3 12:16:34 | 显示全部楼层
不是多的問題。是我能力的問題。。。完全沒看懂的說……
回复

使用道具 举报

发表于 2010-6-3 13:14:18 | 显示全部楼层
恩,我记得参数里面好像有一个目标点/目标单位什么的的
回复

使用道具 举报

 楼主| 发表于 2010-6-3 16:15:14 | 显示全部楼层
引用第13楼马甲君于2010-06-03 13:14发表的  :
恩,我记得参数里面好像有一个目标点/目标单位什么的的

假设Ghost以目标点为目标,那么它必须找到一个单位,然后攻击目标单位点,于是目标单位不受到任何伤害
回复

使用道具 举报

发表于 2010-6-3 17:12:00 | 显示全部楼层
如果傷害類型為溅射之類的呢?
回复

使用道具 举报

发表于 2010-6-3 17:22:48 | 显示全部楼层
lz所说的至于溅射类似于 war3迫击炮小队之于红龙的攻击模式
回复

使用道具 举报

发表于 2010-6-3 17:34:14 | 显示全部楼层
樓上在說啥?
回复

使用道具 举报

 楼主| 发表于 2010-6-3 17:56:29 | 显示全部楼层
Effect Damage里面可以自由设置伤害范围、伤害目标、伤害类型、伤害数值、伤害奖励

溅射有很多意思,伤害类型就有一个溅射伤害,范围伤害也是溅射伤害

不巧坦克就是溅射类型的范围溅射伤害..
回复

使用道具 举报

发表于 2010-6-3 17:57:45 | 显示全部楼层
话说。SC1的坦克好像是可以攻击地面的。。
SC2里偶还米有玩过。素不可以的吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 10:57 , Processed in 0.168859 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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