Добавлен , не публикуется
Переделанная версия моей прошлой наработки.
Изменения:Все сделано на Jass.Переделана пассивная способность.Добавлена новая способность.Оптимизированы некоторые утечки.Убрано GUI.Исправлены недочёты с иконками.Теперь карта открывается у всех и без JNGP.Вес карты уменьшен.
Описание способностей:
1)Резка клинками:Герой производит серию ударов по врагу с разных точек нанося незначительный урон,после чего мгновенно разрезает его со спины нанеся огромный урон.
2)Быстрые атаки:Герой перемещается в случайные точки в радиусе 650 от начала способности нанося урон попадающимся рядом противникам.
3)Искуство Ассасина:Герой имеющий эту способность становится невидимым.При атаке он наносит серию ударов по врагу нанося урон.Через 4 секунды после атаки герой вновь становится невидимым.
4)Цепь:Герой крутит цепь вокруг себя.Каждые 0.02 секунды цепь наносит 20 урона.Количество сцепленных частей 12.Расстояние между частями 75.Длина цепи 1200.
`
ОЖИДАНИЕ РЕКЛАМЫ...
6
И вот вторая часть:
code 2
function Trig_Sword_Attack_2_Actions takes nothing returns nothing
    local unit caster=GetSpellAbilityUnit()
    local unit cell_cast=GetSpellTargetUnit()
    call SetUnitPathing( caster, false )
    call SetUnitPathing( cell_cast, false )
    call SetUnitPositionLocFacingLocBJ( cell_cast, PolarProjectionBJ(GetUnitLoc(caster), 45.00, GetUnitFacing(caster)), GetUnitLoc(caster) )
    call SetUnitPositionLocFacingLocBJ( caster, PolarProjectionBJ(GetUnitLoc(caster), 50.00, GetUnitFacing(caster)), GetUnitLoc(cell_cast) )
    call SetUnitAnimation( caster, "attack" )
    call SetUnitAnimation( cell_cast, "death" )
    call UnitDamageTargetBJ( udg_Attack, udg_unit, 15, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(caster), "Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl" )
endfunction

//===========================================================================
function InitTrig_Sword_Attack_2 takes nothing returns nothing
    set gg_trg_Sword_Attack_2 = CreateTrigger(  )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Sword_Attack_2, 0.05 )
    call TriggerAddAction( gg_trg_Sword_Attack_2, function Trig_Sword_Attack_2_Actions )
endfunction
Надо объеденить эти два триггера как нибуть.
28
GetSpellAbilityUnit()
GetSpellTargetUnit()
эти функции ориентированы на определённое событие,при событие каждые 0,05 секунды они не работают
я тебе кидал же пример
в папке nvc будет триггер со скилом
Загруженные файлы
6
Ясно окай посмотрю.
nvc123, Вар карту не открывает.
28
сохрани а потом запусти(у меня всё работает)
6
И ошибок накидывает.
Блин тупанул карту не закинул в папку вара.
И все равно ошибки и не открывает вар.
Ошибка либрару syntax error
library cjLib75hJKJ374s4e597nba9o7w45gf
globals
group cj_tmpgr_copy_nw509ert7
endglobals
function cj_group_copy_75hJKJ3745gf takes nothing returns nothing
//# optional
call GroupAddUnit(cj_tmpgr_copy_nw509ert7,GetEnumUnit())
endfunction
endlibrary
globals
unit udg_caster=null
unit udg_cell_cast=null
unit array udg_Dummy
unit udg_unit=null
unit udg_u=null
unit udg_Attack=null
effect array udg_eff
nvc123, короче нефига.
28
скачай джнгп заного
ибо у меня всё кул
и стоп у меня нету библиотек
карту которую я скинул открой в редакторе и посмотри как там сделан скил
6
nvc123:Это jngp там функция какая то.
Создаёт библиотеку и какие то глобалки.
nvc123:
карту которую я скинул открой в редакторе и посмотри как там сделан скил
Я смотрел как скилл сделан.Но не понял ничего.
Я перезалью карту с исправленными утечками.
Я вот вопрос.Можно сделать спелл в одном триггере без МУИ?
И чем заменить GetLastCreatedEffectBJ?
28
Gnusik, муи значит мультиплеерный,то есть скил работает в мультиплеере,а у тебя если применить одновременно 2 одинаковых скила то сработает только 1
муи это главное требование к скилам(исключение только дуэли)
6
nvc123:
Gnusik, муи значит мультиплеерный,то есть скил работает в мультиплеере,а у тебя если применить одновременно 2 одинаковых скила то сработает только 1
муи это главное требование к скилам(исключение только дуэли)
И ещё арены.Ну блин я бы сделал его муи если бы все в 1 триггере было.Я никак не могу найти статью где про таймеры.
28
Gnusik, я говорю не про тип карты а про дуэль спелмейкеров
или конкурс
когда главное красота спела
а не его практическое применение
6
nvc123:
Gnusik, я говорю не про тип карты а про дуэль спелмейкеров
или конкурс
когда главное красота спела
а не его практическое применение
Я нашел статью и постараюсь сделать муи спелл.Сейчас полярные координаты заменить чем нибудь бы.И все.
nvc123, Как перевести действие "позиция кастера смещение на 50 по отношению угол поворота кастер градусов" в полярные координаты.
28
геометрия
прямоугольный треугольник
где 1 угол это кастер,2 угол это точка в которую он смотрит,гипотенуза это расстояние между ними,1 катет этот разница координаты x кастера и координаты x точки а второй катет это разница координаты y кастера и координаты y точки
6
nvc123:
геометрия
прямоугольный треугольник
где 1 угол это кастер,2 угол это точка в которую он смотрит,гипотенуза это расстояние между ними,1 катет этот разница координаты x кастера и координаты x точки а второй катет это разница координаты y кастера и координаты y точки
А можно в код конверт.Просто это единственное BJ которое мне осталось устранить чтобы спелл был муи.
я хочу попробовать через 1 триггер с таймером по примеру
code
function SpellDamage takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit caster = LoadUnitHandle(udg_hash,h,1)
    local unit target = LoadUnitHandle(udg_hash,h,2)
    local integer counter = LoadInteger(udg_hash,h,3)
    
    if counter>0 then
        call UnitDamageTarget(caster,target,1.0,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)
        call SaveInteger(udg_hash,h,3,counter-1)
    else
        call DestroyTimer(t)
        call FlushChildHashtable(udg_hash,h)
    endif
    
    set caster = null
    set target = null
    set t = null
endfunction

function Spell takes nothing returns nothing
    local unit caster = GetSpellAbilityUnit()
    local unit target = GetSpellTargetUnit()
    local timer t = CreateTimer()
    local integer h = GetHandleId(t)
    
    call SaveUnitHandle(udg_hash,h,1,caster)
    call SaveUnitHandle(udg_hash,h,2,target)
    call SaveInteger(udg_hash,h,3,125)
    
    call TimerStart(t,0.04,true,function SpellDamage)
    
    set caster = null
    set target = null
    set t = null
endfunction

function SpellCond takes nothing returns boolean
    return GetSpellAbilityId()=='A000'
endfunction

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    set gg_trg_Spell = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_Spell,Player(0),EVENT_PLAYER_UNIT_SPELL_CAST,null)
    call TriggerAddCondition(gg_trg_Spell,Condition(function SpellCond))
    call TriggerAddAction(gg_trg_Spell,function Spell)
    
    set udg_hash = InitHashtable()
endfunction
только изменить под свои нужды.
28
там хэш,лучше юзать структуры как я показывал
6
nvc123:
там хэш,лучше юзать структуры как я показывал
Скинь статьи точные если не трудно.Не могу найти просто.И я не собирался использовать хеш.Я собирался делать через таймер.
Но увы не получилось
28
хэш тоже через таймер
про мой способ статей нету
там типо для про
вернее там баг варика
используется
смотри мой пример
там и полярок нету и муи и без хэша
6
nvc123:
хэш тоже через таймер
про мой способ статей нету
там типо для про
вернее там баг варика
используется
смотри мой пример
там и полярок нету и муи и без хэша
вот блин.вот тока я каст переделал.Вроде я перезаливал.
там не он вокруг цели движется а с целью вместе 8-ку делает или закручивается просто.Я хз как так получилось xD
6
nvc123:
Gnusik, код в студию
сейчас закину.
студия кодов xD
function Trig_Sword_Attack_2_Actions takes nothing returns nothing
    local unit a=udg_caster
    local unit b=udg_cell_cast
    call SetUnitPathing( a, false )
    call SetUnitPathing( b, false )
    call SetUnitPositionLocFacingLocBJ( b, PolarProjectionBJ(GetUnitLoc(a), 45.00, GetUnitFacing(a)), GetUnitLoc(a) )
    call SetUnitPositionLocFacingLocBJ( a, PolarProjectionBJ(GetUnitLoc(a), 50.00, GetUnitFacing(a)), GetUnitLoc(b) )
    call SetUnitAnimation( udg_caster, "attack" )
    call SetUnitAnimation( udg_cell_cast, "death" )
    call UnitDamageTargetBJ( a,b, 25.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    call AddSpecialEffectLocBJ( GetUnitLoc(udg_caster), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(udg_caster), "Objects\\Spawnmodels\\Undead\\UndeadDissipate\\UndeadDissipate.mdl" )
    call AddSpecialEffectLocBJ( GetUnitLoc(udg_caster), "Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl" )
endfunction

//===========================================================================
function InitTrig_Sword_Attack_2 takes nothing returns nothing
    set gg_trg_Sword_Attack_2 = CreateTrigger(  )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Sword_Attack_2, 0.05 )
    call TriggerAddAction( gg_trg_Sword_Attack_2, function Trig_Sword_Attack_2_Actions )
endfunction
Ураааа.Твой муи спелл работает.За нормальный компьютер сел и норм стало.Осталось тольео переделать на моё движение.
28
call SetUnitPositionLocFacingLocBJ( a, PolarProjectionBJ(GetUnitLoc(a), 50.00, GetUnitFacing(a)), GetUnitLoc(b) )
этой строкой ты двигаешь юнита кастера
call SetUnitPositionLocFacingLocBJ( b, PolarProjectionBJ(GetUnitLoc(a), 45.00, GetUnitFacing(a)), GetUnitLoc(a) )
этой строкой ты двигаешь цель
и да это бж а бж надо оптимизировать
и двигай не в точку а по координатам ибо функция GetUnitLoc создаёт точку и не удаляет,то есть при частом использование точек станет так много что игра будет лагать а то и вобще повиснет
Gnusik, мой спел это просто пример,чтобы было совсем правильно надо делать через апдейт
6
nvc123:
call SetUnitPositionLocFacingLocBJ( a, PolarProjectionBJ(GetUnitLoc(a), 50.00, GetUnitFacing(a)), GetUnitLoc(b) )
этой строкой ты двигаешь юнита кастера
call SetUnitPositionLocFacingLocBJ( b, PolarProjectionBJ(GetUnitLoc(a), 45.00, GetUnitFacing(a)), GetUnitLoc(a) )
этой строкой ты двигаешь цель
и да это бж а бж надо оптимизировать
и двигай не в точку а по координатам ибо функция GetUnitLoc создаёт точку и не удаляет,то есть при частом использование точек станет так много что игра будет лагать а то и вобще повиснет
Gnusik, мой спел это просто пример,чтобы было совсем правильно надо делать через апдейт
А вот как через координаты двигать.Именно в по отношению(угол поворота,позиция юнита и т.д.)?
6
nvc123:
Ёлки-иголки.Мне надо сначала 9 класс закончить.Геометрию я изучил а терь тригенометрия.Ужас.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.