找回密码
 点一下
查看: 3197|回复: 21

技能求助:霜冻弹射

  [复制链接]
发表于 2008-7-9 19:59:32 | 显示全部楼层 |阅读模式
连环霜冻   快捷键:C
释放一股最多弹射7(8)次的霜冻,第一次弹射造成0.01秒的睡眠。(括号内为拥有Aghanim的神杖时的数值。)
施法距离:750(850)
冷却时间:145/115/60秒
魔法消耗:200/325/500点

等级 1 - 每次弹射造成280(370)点的伤害。
等级 2 - 每次弹射造成370(460)点的伤害。
等级 3 - 每次弹射造成460(550)点的伤害。

想是想明白- -原型用闪电链,就是不知道怎么搞0.01秒的沉睡.
虽然知道马甲辅助放魔法一说.
但是我不清楚要放给什么单位,
是放给"对其使用技能的目标单位"还是什么"被攻击的单位"
而且沉睡过后还有减速,持续1秒.
 楼主| 发表于 2008-7-9 20:00:32 | 显示全部楼层
在线等人回答白痴问题...
回复

使用道具 举报

发表于 2008-7-9 20:16:10 | 显示全部楼层
捕获一下单位目标命令
是这个的话创建个马甲对命令目标使用会敲晕的东西
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:20:58 | 显示全部楼层
捕捉一下单位目标命令?????????
有这个动作???????????我刚翻了5分钟没有找到,请楼上说详细些.
回复

使用道具 举报

发表于 2008-7-9 20:22:53 | 显示全部楼层
888.JPG
回复

使用道具 举报

发表于 2008-7-9 20:35:04 | 显示全部楼层
让他搜索DOTA技能去
问LZ 是不是新手?
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:35:20 | 显示全部楼层
那个我也试过.没有用...
不知道条件应该怎么设置.
求详细演示,彻底的白.
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:35:52 | 显示全部楼层
搜索DOTA技能没这个.
似乎因为太白痴...所以没人去做...
回复

使用道具 举报

发表于 2008-7-9 20:37:48 | 显示全部楼层
我记得做过一个ChainThunderbolt的,就是链式飞锤………………

会把人做得疯掉的
回复

使用道具 举报

发表于 2008-7-9 20:38:10 | 显示全部楼层
彻底的白你就不要考虑做这个 先把WE是什么弄清楚吧
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:39:08 | 显示全部楼层
魔兽地图编辑器,完毕.
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:43:59 | 显示全部楼层
觉得死海文书老是打击新手...其实不是所有新手都想坐享其成,我看了很多新手问问题都受到打击我自己研究了很久研究不出来才问的,还特地跑到疑难解答区去问,结果还是被转过来了,又被打击了.
回复

使用道具 举报

发表于 2008-7-9 20:46:49 | 显示全部楼层
这也不算打击新手,这东西对于一个“彻底的白”的新手来说,实在是不适合去做

话说如果经常对于技能、触发这个摸摸那个看看,做一些尝试,很多问题都不需要问了
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:50:09 | 显示全部楼层
其实我只想知道技能到底该对哪个单位放,只要知道这个很多就迎刃而解了.
物体编辑器我会的,搞电影搞动画我也会的,也不算是特别白.
我觉得这个技能可以让我进阶一些而已.
算了,自己研究去.
回复

使用道具 举报

发表于 2008-7-9 20:53:00 | 显示全部楼层
这个东西根本就不是用闪电链的,而是用一个辅助单位,一个一个来的

这里有,那个lich乒乓球就是
回复

使用道具 举报

 楼主| 发表于 2008-7-9 20:57:00 | 显示全部楼层
谢谢...没注意到乒乓球是我不对...
回复

使用道具 举报

发表于 2008-7-10 06:31:19 | 显示全部楼层
lich的大那个弹出来的东西就是辅助单位把
弹过去的时候即使你走它也是到达你原来的位置就不走了
不会跟着过去
所以有时候会有点效果上的BUG
回复

使用道具 举报

发表于 2008-7-10 07:07:14 | 显示全部楼层
BUG是在所难免的~~

但是要看你怎么去弄了~~~
回复

使用道具 举报

发表于 2008-7-10 07:41:08 | 显示全部楼层
使用技能后,
如果使用的技能=连环霜冻或者X
那么

函数C     参数:单位
在单位坐标创建一个辅助单位
选取周围友军单位组,随机选取一个单位。
命令释放伤害性技能X



于是呼不断的弹啊弹啊。。。
要纪录次数的话多加个整数变量吧
回复

使用道具 举报

发表于 2008-7-11 20:05:28 | 显示全部楼层
我到是做了个。。冰冻闪电链。。。。
不知道...LZ要否
是J的。。分4个函数。。。。
本人懒到。。。不想法附件了。。直接发函数
[jass]
//===============闪电效果(淡化效果)======
//参数:1.闪电效果类型2.开始单位3.结束单位4.持续时间(精确度0.1秒)5.目标单位特效
function WS_Lightning_2 takes nothing returns nothing
local timer Timer = GetExpiredTimer()
local lightning Lightning = I2LGT(GetStoredInteger(udg_cache,I2S(H2I(Timer)),"Lightning"))
local unit Start_Unit = I2U(GetStoredInteger(udg_cache,I2S(H2I(Timer)),"Start_Unit"))
local unit End_Unit = I2U(GetStoredInteger(udg_cache,I2S(H2I(Timer)),"End_Unit"))
local real Time = GetStoredReal(udg_cache,I2S(H2I(Timer)),"Time")
local real Endtime = GetStoredReal(udg_cache,I2S(H2I(Timer)),"Endtime")+0.1
call StoreReal(udg_cache,I2S(H2I(Timer)),"Endtime",Endtime)
if(Endtime>Time)then
  call DestroyLightning(Lightning)
  call FlushStoredMission(udg_cache,I2S(H2I(Timer)))
  call DestroyTimer(Timer)
else
  if (GetUnitState(End_Unit,UNIT_STATE_LIFE)>0 and GetUnitState(Start_Unit,UNIT_STATE_LIFE)>0)then
  call SetLightningColor(Lightning, 1, 1, 1, 1-Endtime/Time)
  call MoveLightningEx(Lightning, true,GetUnitX(Start_Unit), GetUnitY(Start_Unit), GetUnitFlyHeight(Start_Unit)+60, GetUnitX(End_Unit),GetUnitY(End_Unit), GetUnitFlyHeight(End_Unit)+60 )
  else
  call SetLightningColor(Lightning, 1, 1, 1, 1-Endtime/Time)
  endif
endif
set Lightning = null
set Timer = null
set Start_Unit = null
set End_Unit = null
endfunction

function WS_Lightning takes string Lightning_Type,unit Start_Unit,unit End_Unit,real Time,string Effect returns nothing
local timer Timer = CreateTimer()
local lightning Lightning = AddLightningEx(Lightning_Type,true, GetUnitX(Start_Unit), GetUnitY(Start_Unit), GetUnitFlyHeight(Start_Unit)+60, GetUnitX(End_Unit),GetUnitY(End_Unit),GetUnitFlyHeight(End_Unit)+60)
call DestroyEffect(AddSpecialEffectTarget( Effect,End_Unit,"chest") )
call StoreInteger(udg_cache,I2S(H2I(Timer)),"Lightning",H2I(Lightning))
call StoreInteger(udg_cache,I2S(H2I(Timer)),"Start_Unit",H2I(Start_Unit))
call StoreInteger(udg_cache,I2S(H2I(Timer)),"End_Unit",H2I(End_Unit))
call StoreReal(udg_cache,I2S(H2I(Timer)),"Time",Time)
call TimerStart(Timer,0.1,true,function WS_Lightning_2)
set Lightning = null
set Timer = null
endfunction
//=======================================

//================霜冻效果(BUFF效果)===============
//参数1.目标单位2.持续时间
function WS_Slow_2 takes nothing returns nothing
local timer Timer = GetExpiredTimer()
local unit Unit = I2U(GetStoredInteger(udg_cache,I2S(H2I(Timer)),"Unit"))
call UnitRemoveAbility(Unit,'B000')
call FlushStoredMission(udg_cache,I2S(H2I(Timer)))
call FlushStoredMission(udg_cache,I2S(H2I(Unit)))
set Timer = null
call DestroyTimer(Timer)
set Unit = null
endfunction

function WS_Slow takes unit Unit,real Time returns nothing
local timer Timer = I2TM(GetStoredInteger(udg_cache,I2S(H2I(Unit)),"Timer"))
local unit Auxiliary_Unit = CreateUnit(GetTriggerPlayer(), 'h000', GetUnitX(Unit), GetUnitY(Unit), 0)
if (H2I(Timer)==0) then
set Timer = CreateTimer()
call StoreInteger(udg_cache,I2S(H2I(Unit)),"Timer",H2I(Timer))
call UnitAddAbility(Auxiliary_Unit,'A000')
call IssueTargetOrderById(Auxiliary_Unit, 852226, Unit )
call StoreInteger(udg_cache,I2S(H2I(Timer)),"Unit",H2I(Unit))
call TimerStart(Timer,Time,false,function WS_Slow_2)
else
call DestroyTimer(Timer)
set Timer = CreateTimer()
call StoreInteger(udg_cache,I2S(H2I(Unit)),"Timer",H2I(Timer))
call UnitAddAbility(Auxiliary_Unit,'A000')
call IssueTargetOrderById(Auxiliary_Unit, 852226, Unit )
call StoreInteger(udg_cache,I2S(H2I(Timer)),"Unit",H2I(Unit))
call TimerStart(Timer,Time,false,function WS_Slow_2)
endif
set Timer = null
set Auxiliary_Unit = null
endfunction
//=======================================================

//==============选取范围内满足是敌人,不是建筑,是存活的单位========
//=====参数1.范围2.中心点3.过滤单位
function WS_GetUnitsInRangeOfLoc_2 takes nothing returns boolean
if (IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false)then
if (GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>0)then
return true
endif
endif
return false
endfunction

function WS_GetUnitsInRangeOfLoc takes real radius,location whichLocation,group Unit,player Play returns unit
local group G= GetUnitsInRangeOfLocMatching(radius,whichLocation,Condition(function WS_GetUnitsInRangeOfLoc_2))
local integer Unit_2
call GroupRemoveGroup( Unit, G )
set Unit_2 = H2I(FirstOfGroup(G))
loop
exitwhen(IsUnitEnemy(I2U(Unit_2), Play) == true or CountUnitsInGroup(G)<=0)
call GroupRemoveUnit( G,I2U(Unit_2))
set Unit_2 = H2I(FirstOfGroup(G))
endloop
if  (CountUnitsInGroup(G)<=0) then
call DestroyGroup(G)
return null
else
call DestroyGroup(G)
return I2U(Unit_2)
endif
endfunction

技能函数见下面的
function Trig_Ice_Lightning_Conditions  takes nothing returns boolean
return GetSpellAbilityId() == 'A001'
endfunction

function Trig_Ice_Lightning_Actions takes nothing returns nothing
local unit Trigger_Unit = GetTriggerUnit()
local unit GetSpellTarget_Unit = GetSpellTargetUnit()
local group Group = CreateGroup()
local unit Unit
local integer i =0
call WS_Lightning("CLPB",Trigger_Unit,GetSpellTarget_Unit,0.7,"Abilities\\\\Weapons\\\\FrostWyrmMissile\\\\FrostWyrmMissile.mdl")
call WS_Slow(GetSpellTarget_Unit,3)
call UnitDamageTarget(Trigger_Unit,GetSpellTarget_Unit,100,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
call GroupAddUnit(Group,GetSpellTarget_Unit)
loop
exitwhen (i>=100)
set i=i+1
set Unit = WS_GetUnitsInRangeOfLoc(600,GetUnitLoc(GetSpellTarget_Unit),Group,Player(0))
if (H2I(Unit)!=0)then
call TriggerSleepAction( 0.00 )
call GroupAddUnit(Group,Unit)
call WS_Lightning("CLPB",GetSpellTarget_Unit,Unit,0.7,"Abilities\\\\Weapons\\\\FrostWyrmMissile\\\\FrostWyrmMissile.mdl")
call WS_Slow(Unit,3)
call UnitDamageTarget(Trigger_Unit,Unit,100,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
set GetSpellTarget_Unit = Unit
else
call TriggerSleepAction( 0.00 )
endif
endloop
set Trigger_Unit = null
set GetSpellTarget_Unit = null
set Unit = null
set Group = null
call GroupClear( Group )
call DestroyGroup( Group )
endfunction

//===========================================================================
function InitTrig_Ice_Lightning takes nothing returns nothing
    set gg_trg_Ice_Lightning = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ice_Lightning, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Ice_Lightning, Condition( function Trig_Ice_Lightning_Conditions ) )
    call TriggerAddAction( gg_trg_Ice_Lightning, function Trig_Ice_Lightning_Actions )
endfunction
[/jass]

OVER....自己都觉得长...
不过我是特意分开写的...
一些功能 之后的技能还能用.....

这个是缓存版...
我还有个数组版
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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