Добавлен , не публикуется
Переделанная версия моей прошлой наработки.
Изменения:Все сделано на Jass.Переделана пассивная способность.Добавлена новая способность.Оптимизированы некоторые утечки.Убрано GUI.Исправлены недочёты с иконками.Теперь карта открывается у всех и без JNGP.Вес карты уменьшен.
Описание способностей:
1)Резка клинками:Герой производит серию ударов по врагу с разных точек нанося незначительный урон,после чего мгновенно разрезает его со спины нанеся огромный урон.
2)Быстрые атаки:Герой перемещается в случайные точки в радиусе 650 от начала способности нанося урон попадающимся рядом противникам.
3)Искуство Ассасина:Герой имеющий эту способность становится невидимым.При атаке он наносит серию ударов по врагу нанося урон.Через 4 секунды после атаки герой вновь становится невидимым.
4)Цепь:Герой крутит цепь вокруг себя.Каждые 0.02 секунды цепь наносит 20 урона.Количество сцепленных частей 12.Расстояние между частями 75.Длина цепи 1200.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
6
11 лет назад
0
И вот вторая часть:
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
Надо объеденить эти два триггера как нибуть.
0
28
11 лет назад
Отредактирован nvc123
0
GetSpellAbilityUnit()
GetSpellTargetUnit()
эти функции ориентированы на определённое событие,при событие каждые 0,05 секунды они не работают
я тебе кидал же пример
в папке nvc будет триггер со скилом
Загруженные файлы
0
6
11 лет назад
Отредактирован Gnusik
0
Ясно окай посмотрю.
nvc123, Вар карту не открывает.
0
28
11 лет назад
0
сохрани а потом запусти(у меня всё работает)
0
6
11 лет назад
0
И ошибок накидывает.
Блин тупанул карту не закинул в папку вара.
И все равно ошибки и не открывает вар.
Ошибка либрару 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, короче нефига.
0
28
11 лет назад
0
скачай джнгп заного
ибо у меня всё кул
и стоп у меня нету библиотек
карту которую я скинул открой в редакторе и посмотри как там сделан скил
0
6
11 лет назад
0
nvc123:Это jngp там функция какая то.
Создаёт библиотеку и какие то глобалки.
nvc123:
карту которую я скинул открой в редакторе и посмотри как там сделан скил
Я смотрел как скилл сделан.Но не понял ничего.
Я перезалью карту с исправленными утечками.
Я вот вопрос.Можно сделать спелл в одном триггере без МУИ?
И чем заменить GetLastCreatedEffectBJ?
0
28
11 лет назад
0
Gnusik, ты понимаешь что такое муи?
0
6
11 лет назад
0
nvc123:
Нет.
0
28
11 лет назад
0
Gnusik, муи значит мультиплеерный,то есть скил работает в мультиплеере,а у тебя если применить одновременно 2 одинаковых скила то сработает только 1
муи это главное требование к скилам(исключение только дуэли)
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
Gnusik, муи значит мультиплеерный,то есть скил работает в мультиплеере,а у тебя если применить одновременно 2 одинаковых скила то сработает только 1
муи это главное требование к скилам(исключение только дуэли)
И ещё арены.Ну блин я бы сделал его муи если бы все в 1 триггере было.Я никак не могу найти статью где про таймеры.
0
28
11 лет назад
0
Gnusik, я говорю не про тип карты а про дуэль спелмейкеров
или конкурс
когда главное красота спела
а не его практическое применение
0
6
11 лет назад
0
nvc123:
Gnusik, я говорю не про тип карты а про дуэль спелмейкеров
или конкурс
когда главное красота спела
а не его практическое применение
Я нашел статью и постараюсь сделать муи спелл.Сейчас полярные координаты заменить чем нибудь бы.И все.
nvc123, Как перевести действие "позиция кастера смещение на 50 по отношению угол поворота кастер градусов" в полярные координаты.
1
28
11 лет назад
1
геометрия
прямоугольный треугольник
где 1 угол это кастер,2 угол это точка в которую он смотрит,гипотенуза это расстояние между ними,1 катет этот разница координаты x кастера и координаты x точки а второй катет это разница координаты y кастера и координаты y точки
0
6
11 лет назад
0
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
только изменить под свои нужды.
1
28
11 лет назад
1
там хэш,лучше юзать структуры как я показывал
0
6
11 лет назад
0
nvc123:
там хэш,лучше юзать структуры как я показывал
Скинь статьи точные если не трудно.Не могу найти просто.И я не собирался использовать хеш.Я собирался делать через таймер.
Но увы не получилось
1
28
11 лет назад
1
хэш тоже через таймер
про мой способ статей нету
там типо для про
вернее там баг варика
используется
смотри мой пример
там и полярок нету и муи и без хэша
0
6
11 лет назад
0
nvc123:
хэш тоже через таймер
про мой способ статей нету
там типо для про
вернее там баг варика
используется
смотри мой пример
там и полярок нету и муи и без хэша
вот блин.вот тока я каст переделал.Вроде я перезаливал.
там не он вокруг цели движется а с целью вместе 8-ку делает или закручивается просто.Я хз как так получилось xD
0
28
11 лет назад
0
Gnusik, код в студию
0
6
11 лет назад
Отредактирован Gnusik
0
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
Ураааа.Твой муи спелл работает.За нормальный компьютер сел и норм стало.Осталось тольео переделать на моё движение.
0
28
11 лет назад
0
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, мой спел это просто пример,чтобы было совсем правильно надо делать через апдейт
0
6
11 лет назад
0
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, мой спел это просто пример,чтобы было совсем правильно надо делать через апдейт
А вот как через координаты двигать.Именно в по отношению(угол поворота,позиция юнита и т.д.)?
0
6
11 лет назад
0
nvc123:
Ёлки-иголки.Мне надо сначала 9 класс закончить.Геометрию я изучил а терь тригенометрия.Ужас.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.