[成品BOSS技能]多人冰冻,留一人救人
魔兽地图编辑器吧
全部回复
仅看楼主
level 1
DEMO图下载地址(115提取码):an4uhx0r
这是一个技能DEMO图,中间的剑圣会放一个技能,把周围一定范围内的N-1个人(假设一共有N个人)冰住,只留一个人,冰只是一个傀儡单位,实际效果是晕眩(暂停的),被冰住的时候又伤害,冰可以被打破,打破之后取出身上的晕眩效果,也就是说幸存的那个人要打破其他人身上的冰去救其他人
预览
//**************需要用到的全局变量**************
//布尔boolean promptFlag 是否输出提示
//布尔boolean debugFlag 是否输出调试信息
//技能abliity multiFreeze 范围冰的技能ID
//单位-类型UnitId mfDummyUnit 马甲单位
//技能ability mfThunderbolt 马甲使用的控制技能的ID
//单位-类型UnitId mfFreezeUnit 冰冻模型的单位ID
//伤害类型damagetype mfDamageType 伤害类型
//整数integer mfRegionRadius 选取范围的半径范围
//整数real mfDuration 持续时间
//实数real mfDamage 每秒伤害
//**********************************************
//**************需要创建的全局变量**************
//哈希表hashtable skillTable 存储临时变量
//**********************************************
说一下制作思路:
当技能释放时,选取周围所有敌方英雄单位,创建马甲释放0伤害持续很长时间的风暴之锤,同时创建模型为冰冻的傀儡单位,同时把被害者扔进一个单位组,每秒进行伤害,注册冰冻傀儡和被害者的死亡事件,无论哪个死亡,都把被害者从伤害组里剔出去(总不能别人死了复活还被伤害吧),如果是冰冻傀儡则把身上的晕眩效果剔除,同时把对应的两个触发器销毁
创建的自定义技能
stun是马甲使用的风暴之锤,下面那个就是主技能了
创建的自定义单位
把模型改成冰冻喷吐(目标)
其实还需要一个0施法前摇的马甲单位
用到的变量
初始化
那句自定义脚本请务必加上,初始化哈希表用的
1.创建变量
2.把skill下面的触发器拷到自己图里
3.把自定义脚本下面的3个函数考到自己的图的自定义脚本里(等下我发另一张DEMO图也要用到这三个函数)
4.配置变量
不想要调试信息请把debugFlag设为false
不想要提示信息请把promptFlag设为false
请不要把主技能的冷却时间设置得比mfDuration变量小,不然会重复冰,而且出现各种各样的问题
一下子不记得要说什么了,想起来再补充吧

2012年01月27日 15点01分 1
吧务
level 15
写J的演示图是最好自己封装好,半T半J移植很麻烦的
2012年01月27日 15点01分 2
level 1
没有半J半T啊,那个T只是拿来初始化用而已,你说那句自定义脚本?好吧我该下
2012年01月27日 15点01分 3
吧务
level 15
指的是使用了ctrl+b创建变量。
2012年01月27日 16点01分 4
level 1
新的提取码:an4uipor
不需要那句自定义脚本了
2012年01月27日 16点01分 5
level 6
[吃西瓜]不如打死马家单位然后取消buff不更好。。
2012年01月27日 16点01分 6
level 6
[耶]而且boss技能基本上不用多么正规。。。一个触发和一个马甲技能就OK乐。。
2012年01月27日 16点01分 7
level 1
我试过把配置信息的变量往哈希表里面放,但是用T往哈希表里面写整数型直接读不出来,无论是用T本身还是用J读
这个结果出来时0
而且又没办法用T往哈希表里面存单位类型和伤害类型
用J存的话别人又不一定会修改
干脆就算了
2012年01月27日 16点01分 8
level 12
无限晕的群体地狱火+0.01秒眩晕的死亡爆炸能做出来吧...
2012年01月27日 16点01分 9
level 1
这么说好像也是,完全不需要一个马甲一个傀儡两个单位,直接合成一个就可以了,我改改
2012年01月27日 16点01分 10
吧务
level 14
function GetAttackType takes attacktype at returns integer
local integer i = 0
loop
exitwhen i > 6
if at == ConvertAttackType(i) then
return i
endif
i++
endloop
BJDebugMsg("<Debug>获取攻击类型出错")
return 0
endfunction
function GetDamageType takes damagetype dt returns integer
local integer i = 0
loop
exitwhen i > 26
if dt == ConvertDamageType(i) then
return i
endif
i++
endloop
BJDebugMsg("<Debug>获取伤害类型出错")
return 0
endfunction

2012年01月27日 16点01分 11
level 1
这个放进自定义脚本区里面去,让移植者用这两个函数得到integer,再往哈希表里面存integer作为配置信息?
2012年01月27日 16点01分 12
level 14
BOSS技能……
2012年01月27日 16点01分 13
level 1
提取码:e7ht668x
这次不需要mfDummyUnit这个变量了,只要傀儡单位的施法前摇是0就可以了
2012年01月27日 16点01分 14
吧务
level 15
而且又没办法用T往哈希表里面存单位类型和伤害类型
用J存的话别人又不一定会修改
那你怎么不纯T做呢,半T半J的,T使用者不会用,J使用者用得不方便
2012年01月27日 17点01分 15
level 1
为什么T使用者不会用?代码都复制就行了,建好变量,T配置下变量,就算不用T,直接把变量赋初值就行了,又不需要改我的代码,而且也可以通过设置变量来实现不同难度
2012年01月28日 04点01分 16
level 13
T使用者为什么会用?代码复制多麻烦?而且哪些地图会用到完全和这一样的技能?如果要以此为模板的基础上修改,T使用者无法改,而J使用者完全可以自己做
不同地图有不同需求,真的不觉得LZ的"设置难度"除了给自己用还有别的用途
2012年01月28日 07点01分 17
level 1
如果连复制粘贴都麻烦,那么所有的技能都麻烦了,你何必还要做技能?难道你T技能就不用复制粘贴?
我提供变量就是希望给予一些可以定制的选项,比如技能的范围,伤害等等,不用改代码就能实现
改代码非常麻烦,无论是T还是J,一不小心就容易导致整个功能的失败
如果你是说,你觉得你把这些参数写死在代码里很好,那我无话可说
2012年01月28日 07点01分 18
level 13
可是这是boss技能,不是每个人都只要冰冻的,或许需要"恐惧","破防"等额外效果
这样的技能,如果要做到万能适配,那参数接口实在太多
如果仅仅是做个演示,何必半T半J。
LZ可以参见一下本吧其他演示精品
在T里复制代码不是每个T使用者都会和愿意的
如果是T里的动作,T使用者可以很简单了解到其用途,修改起来也方便
如果是J里的动作,T使用者复制下来就是死的代码,改起来相当麻烦,需要一定的jass基础
而既然使用这个技能需要一定的jass基础,为何不纯J写?
一份纯T一份纯J比半T半J受益面更大
2012年01月28日 07点01分 19
level 13
T使用者看T更多的是学习一种做法
多少T使用者做技能是复制黏贴的?不都是右键新建动作么
jass使用者需要的演示则完全不一样,他们需要的更多是成品的代码,加点注释说明一下即可
2012年01月28日 07点01分 20
1 2 尾页