Дата: Воскресенье, 10.10.2010, 11:53 | Сообщение # 1
Сообщений: 1057
В этой статье я опишу как создать красивый эффект спелла спомошью Jass (Знать jass не обязательно) Для создания нам не понадобиться ни 1 глобалки(что также делает спелл мультиприменяемым) первое что мы сделаем это событие и условие (на ГУИ) Событие - Боевая еденица приводит спелл условие - Сппел = удар грома,. Далее конвертируем в текст.. Вот что у нас вышло
Code
function Trig_SDpell_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'AHtc' ) ) then return false endif return true endfunction
function Trig_SDpell_Actions takes nothing returns nothing endfunction
//=========================================================================== function InitTrig_SDpell takes nothing returns nothing set gg_trg_SDpell = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_SDpell, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_SDpell, Condition( function Trig_SDpell_Conditions ) ) call TriggerAddAction( gg_trg_SDpell, function Trig_SDpell_Actions ) endfunction
Ну вот(Тригер называеться "SDpell"может назвать как хотите) ну вот мы не трогаем ни чего в тексте кроме вот этих строк
Code
function Trig_SDpell_Actions takes nothing returns nothing endfunction
между Началом и Endfunction Создаем локалки) Вот они заметим что все они одного типа!
Code
local integer i = 1 local integer w = 900 local integer e = 90 local integer r = 900 local integer t = 180 local integer y = 900 local integer u = 270 local integer o = 900 local integer p = 360 local integer z = 90 local integer x = 180 local integer c = 270 local integer v = 360 local integer a = 900
Далее нам понадобиться цикл действий вот же он
Code
loop //Начало цикла exitwhen i > 54 // Выход из цикла при условии что локальная i > 54 //Тут дествия цикла endloop //Конец цикла
Чтобы i стала > 54 делаем так
Code
loop //Начало цикла exitwhen i > 54 // Выход из цикла при условии что локальная i > 54 set i = i + 1 //Это значит что цикл повториться 54 раза пока i не станет > 54(само действие означает что i + 1 например i было 53 теперь буит 54) endloop //Конец цикла
После делаем координатные локалки (у меня это все локальные кроме i) т.е внутри цикла пишем
Code
set e = e + 20 set w = w - 16 set r = r - 16 set y = y - 16 set u = u + 20 set t = t + 20 set o = o - 16 set p = p + 20 set a = a - 20
далее делаем эффекты Для наглядности я разберу 2 строки(которые создают эфект и удаляет его)
call AddSpecialEffectLocBJ( PolarProjectionBJ(GetUnitLoc(GetTriggerUnit()), w, e), "Abilities\\Weapons\\PhoenixMissile\Phoenix_Missile.mdl" ) // Это мы создаем эффект Буквы w,e это локальные в ковычках модель эффекта.... // Сам эфект будет создаваться у кастера спелла call DestroyEffectBJ( GetLastCreatedEffectBJ() ) //удаляем эффект Ну вот у нас получился спелл Вот его полный код
Code
local integer i = 1 local integer w = 900 local integer e = 90 local integer r = 900 local integer t = 180 local integer y = 900 local integer u = 270 local integer o = 900 local integer p = 360 local integer z = 90 local integer x = 180 local integer c = 270 local integer v = 360 local integer a = 900 loop exitwhen i > 54 set e = e + 20 set w = w - 16 set r = r - 16 set y = y - 16 set u = u + 20 set t = t + 20 set o = o - 16 set p = p + 20 set a = a - 20
Дата: Воскресенье, 10.10.2010, 14:25 | Сообщение # 3
Сообщений: 1057
Quote (UZzip)
Красота а неописуемая:wizard: !!! Но эта красота ни чего не делает . Вот если бы урон наносился вместе со спец эффектами!
Просто лень было делать)) Вот в примере впринципе не чо красивого)) но если поколдовать над локалками)) вот можно делать невероятные фигуры например если local integer w = 900 local integer e = 1 local integer r = 50