Сейчас 06:02:26 Среда, 15 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » прыжок
прыжок
Ghost456Дата: Четверг, 15 Декабря 2011, 10:37:17 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 246
Награды: 0
Репутация: 217
Блокировки:
как сделать такой спелл чтобы герой подпрыгивал на небольшое расстояние вперёд и наносил урон всем окружающим его врагам?

 

Ty3uKДата: Четверг, 15 Декабря 2011, 10:38:37 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ghost456, могу кинуть свой пример на жассе, подойдет?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Ghost456Дата: Четверг, 15 Декабря 2011, 10:43:16 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 246
Награды: 0
Репутация: 217
Блокировки:
Quote (Ty3uK)
могу кинуть свой пример на жассе, подойдет?

давай


 

Ty3uKДата: Четверг, 15 Декабря 2011, 10:49:05 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Code
function Trig_Jumping_Filter takes nothing returns boolean
     local timer t = GetExpiredTimer()
     local integer hid = GetHandleId(t)
     local unit caster = LoadUnitHandle(udg_Hashtable, hid, 0)
     local unit target = GetFilterUnit()
     local real angle = 57.295 * Atan2(GetWidgetY(target) - GetWidgetY(caster), GetWidgetX(target) - GetWidgetX(caster))
     local integer d = GetUnitAbilityLevel(caster, 'A01Q') * 50 + 30 //Урон, кратный уровню спелла
     if IsUnitEnemy(caster, GetOwningPlayer(target)) then
         call UnitDamageTarget(caster, target, d, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
     endif
     set caster = null
     set target = null
     set t = null
     return false
endfunction

function Trig_Jumping_Timer takes nothing returns nothing
     local timer t = GetExpiredTimer()
     local integer hid = GetHandleId(t)
     local unit caster = LoadUnitHandle(udg_Hashtable, hid, 0)
     local real d = LoadReal(udg_Hashtable, hid, 1)
     local real z = LoadReal(udg_Hashtable, hid, 2)
     local real angle = LoadReal(udg_Hashtable, hid, 3)
     local real dm = LoadReal(udg_Hashtable, hid, 4)
     local real x = GetWidgetX(caster)
     local real y = GetWidgetY(caster)  
     if d <= dm / 2  then
         set x = x + 10. * Cos(angle * bj_DEGTORAD)
         set y = y + 10. * Sin(angle * bj_DEGTORAD)
         set z = z + 25.
         call SetUnitPosition(caster, x, y)
         call SetUnitFlyHeight(caster, z, 0.)
     else
         set x = x + 10. * Cos(angle * .017)
         set y = y + 10. * Sin(angle * .017)
         set z = z - 25.
         call SetUnitPosition(caster, x, y)
         call SetUnitFlyHeight(caster, z, 0.)
     endif
     call SaveReal(udg_Hashtable, hid, 1, d + 10.)
     call SaveReal(udg_Hashtable, hid, 2, z)
     if z <= 0. then
         call GroupEnumUnitsInRange(LoadGroupHandle(udg_Hashtable, hid, 6), x, y, 350., Filter(function Trig_Jumping_Filter))
         call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl", x, y))
         call DestroyEffect(LoadEffectHandle(udg_Hashtable, hid, 5))
         call PauseTimer(t)
         call DestroyTimer(t)
         call PauseUnit(caster, false)
         call FlushChildHashtable(udg_Hashtable, hid)
     endif
     set caster = null
     set t = null
endfunction

function Trig_Jumping_Conditions takes nothing returns boolean
     local timer t
     local integer hid
     local unit caster = GetTriggerUnit()
     local real z = 10.
     local real angle = 57.295 * Atan2(GetSpellTargetY() - GetWidgetY(caster), GetSpellTargetX() - GetWidgetX(caster))
     if GetSpellAbilityId() == 'A01Q' then //Рав код твоей абилки
         set t  = CreateTimer()
         set hid = GetHandleId(t)
         call SaveUnitHandle(udg_Hashtable, hid, 0, caster)
         call SaveReal(udg_Hashtable, hid, 2, z)
         call SaveReal(udg_Hashtable, hid, 3, angle)
         call SaveReal(udg_Hashtable, hid, 4, VectorGetLenght(GetWidgetX(caster), GetWidgetY(caster), 0., GetSpellTargetX(), GetSpellTargetY(), 0.))
         call SaveEffectHandle(udg_Hashtable, hid, 5, AddSpecialEffectTarget("Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile_mini.mdl", caster, "origin"))
         call SaveGroupHandle(udg_Hashtable, hid, 6, CreateGroup())
         if UnitAddAbility(caster, 'Amrf') then
             call UnitRemoveAbility(caster, 'Amrf')
         endif
         call PauseUnit(caster, true)
         call SetUnitAnimation(caster, "slam")
         call TimerStart(t, .01, true, function Trig_Jumping_Timer)
     endif
     set caster = null
     set t = null
     return false
endfunction

function InitTrig_Jumping takes nothing returns nothing
     set gg_trg_Jumping = CreateTrigger()
     call TriggerRegisterAnyUnitEventBJ(gg_trg_Jumping, EVENT_PLAYER_UNIT_SPELL_EFFECT)
     call TriggerAddCondition(gg_trg_Jumping, Condition(function Trig_Jumping_Conditions))
endfunction

триггер должен называться Jumping, для работы нужна инициализированная хэштаблица Hashtable


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ExtrematorДата: Четверг, 15 Декабря 2011, 11:10:20 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
хе-хе... вот примерчик от меня - Тык
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » прыжок
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz