14

» WarCraft 3 / Полёт клинка

вот что можно сделать если бы у модели была анимация вращения движется к цели и задевает окружающих

все удалил с твоей карты чтоб не мозолила глаза

вот иконка которая подойдет

вот еще пару иконок
14

» WarCraft 3 / Полёт клинка

quq_CCCP:
Чет совсем не то, надо будет с юнитом попробовать.

Совсем забыл, в 1.4 не полная реализация вращения, еще и с ошибками. Только в 1.5 завезли все эти фишки, вот...
"Катарина мечет во врага кинжал, который рикошетом поражает еще несколько целей, после чего падает на землю."
вот что он пытается сделать
14

» WarCraft 3 / Волна силы не пашет vJass

quq_CCCP:
Как то много кода для такой примитивной абилки...
Пример кода:

function Group_Frost_Wave_Actions takes nothing returns nothing
    local DamageData dd = bj_forLoopAIndexEnd
    local unit Enemy = GetEnumUnit( )

    call GroupAddUnit( dd.grp, Enemy )
    
    set bj_lastCreatedUnit = CreateUnit( Player( PLAYER_NEUTRAL_PASSIVE ), 'hatk', GetUnitX( Enemy ), GetUnitY( Enemy ), GetUnitFacing( Enemy ) )
    call SetUnitPathing( bj_lastCreatedUnit, false )
    call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 0.50 )
    call UnitAddAbility( bj_lastCreatedUnit, 'A06Z' )
    call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A06Z', dd.id )
    call SetUnitX( bj_lastCreatedUnit, GetUnitX( Enemy ) )
    call SetUnitY( bj_lastCreatedUnit, GetUnitY( Enemy ) )
    
    if IssueTargetOrderById( bj_lastCreatedUnit, 852243, Enemy ) then
        call UnitDamageTarget( dd.attacker, Enemy, dd.dmg, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS )
        call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl", Enemy, "origin" ) )
    endif
   
    set bj_lastCreatedUnit = null
    
    set Enemy = null
endfunction

function Timer_Frost_Wave_Expires takes nothing returns nothing
    local timer t = GetExpiredTimer( )
    local DamageData dd = GetDataBX( t )
    
    set dd.time = dd.time + 1
    
    if dd.time > 25 then //25 * 32 = 800
    
        call DestroyEffect( dd.fx )
        call KillUnit( dd.attacked )
        
        call GroupClear( dd.grp )
        call ReleaseGroup( dd.grp )
        
        call PauseTimer( t )
        call RemoveDataBX( t )
        call DestroyTimer( t )
        call dd.clear( )
        call dd.destroy( )
    else
    
        set dd.rx = dd.rx + 32.00 * Cos( dd.hp )
        set dd.ry = dd.ry + 32.00 * Sin( dd.hp )

        call SetUnitX( dd.attacked, CheckX( dd.rx ) )
        call SetUnitY( dd.attacked, CheckY( dd.ry ) )
    
        call GroupClear( gg_grp_TempGroup )
    
        set bj_groupEnumOwningPlayer = dd.pl
        set bj_forLoopAIndexEnd = dd
        set bj_lastReplacedUnit = dd.attacker
    
        call GroupEnumUnitsInRange( gg_grp_TempGroup, dd.rx, dd.ry, 128.00 + 4.00 * dd.time, OnlyWavedEnemy )
        call ForGroup( gg_grp_TempGroup, function Group_Frost_Wave_Actions )
    
        set bj_lastReplacedUnit = null
    endif

    set t = null
endfunction

//===========================================================================
function startTrig_Frost_Wave takes nothing returns nothing
    local timer t = CreateTimer( )
    local DamageData dd = DamageData.create( )
    
    set dd.attacker = GetSpellAbilityUnit( )
    set dd.id = GetUnitAbilityLevel( dd.attacker, 'A060' )
    set dd.dmg = dd.id * 125.00
    set dd.pl = GetOwningPlayer( dd.attacker )
    set dd.hp =  Atan2( GetSpellTargetY( ) - GetUnitY( dd.attacker ), GetSpellTargetX( ) - GetUnitX( dd.attacker ) )
    set dd.rx = GetUnitX( dd.attacker ) + 32.00 * Cos( dd.hp )
    set dd.ry = GetUnitY( dd.attacker ) + 32.00 * Sin( dd.hp )
    set dd.attacked = CreateUnit( dd.pl, 'hdum', dd.rx, dd.ry, bj_RADTODEG * dd.hp )
    set dd.fx = AddSpecialEffectTarget( "Abilities\\Spells\\Other\\WindWave\\PrismaticWave.mdx", dd.attacked, "origin" )
    set dd.grp = NewGroup( )
    set dd.time = 0

    call SetDataBX( t, dd )
    
    call SetUnitFlyHeight( dd.attacked, 0.00, 0.00 )
    call SetUnitScale( dd.attacked, 1.25, 1.25, 1.25 )
   
    call TimerStart( t, 0.03125, true, function Timer_Frost_Wave_Expires )
    
    set t = null
endfunctionfunction Group_Frost_Wave_Actions takes nothing returns nothing
    local DamageData dd = bj_forLoopAIndexEnd
    local unit Enemy = GetEnumUnit( )

    call GroupAddUnit( dd.grp, Enemy )
    
    set bj_lastCreatedUnit = CreateUnit( Player( PLAYER_NEUTRAL_PASSIVE ), 'hatk', GetUnitX( Enemy ), GetUnitY( Enemy ), GetUnitFacing( Enemy ) )
    call SetUnitPathing( bj_lastCreatedUnit, false )
    call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 0.50 )
    call UnitAddAbility( bj_lastCreatedUnit, 'A06Z' )
    call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A06Z', dd.id )
    call SetUnitX( bj_lastCreatedUnit, GetUnitX( Enemy ) )
    call SetUnitY( bj_lastCreatedUnit, GetUnitY( Enemy ) )
    
    if IssueTargetOrderById( bj_lastCreatedUnit, 852243, Enemy ) then
        call UnitDamageTarget( dd.attacker, Enemy, dd.dmg, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS )
        call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl", Enemy, "origin" ) )
    endif
   
    set bj_lastCreatedUnit = null
    
    set Enemy = null
endfunction

function Timer_Frost_Wave_Expires takes nothing returns nothing
    local timer t = GetExpiredTimer( )
    local DamageData dd = GetDataBX( t )
    
    set dd.time = dd.time + 1
    
    if dd.time > 25 then //25 * 32 = 800
    
        call DestroyEffect( dd.fx )
        call KillUnit( dd.attacked )
        
        call GroupClear( dd.grp )
        call ReleaseGroup( dd.grp )
        
        call PauseTimer( t )
        call RemoveDataBX( t )
        call DestroyTimer( t )
        call dd.clear( )
        call dd.destroy( )
    else
    
        set dd.rx = dd.rx + 32.00 * Cos( dd.hp )
        set dd.ry = dd.ry + 32.00 * Sin( dd.hp )

        call SetUnitX( dd.attacked, CheckX( dd.rx ) )
        call SetUnitY( dd.attacked, CheckY( dd.ry ) )
    
        call GroupClear( gg_grp_TempGroup )
    
        set bj_groupEnumOwningPlayer = dd.pl
        set bj_forLoopAIndexEnd = dd
        set bj_lastReplacedUnit = dd.attacker
    
        call GroupEnumUnitsInRange( gg_grp_TempGroup, dd.rx, dd.ry, 128.00 + 4.00 * dd.time, OnlyWavedEnemy )
        call ForGroup( gg_grp_TempGroup, function Group_Frost_Wave_Actions )
    
        set bj_lastReplacedUnit = null
    endif

    set t = null
endfunction

//===========================================================================
function startTrig_Frost_Wave takes nothing returns nothing
    local timer t = CreateTimer( )
    local DamageData dd = DamageData.create( )
    
    set dd.attacker = GetSpellAbilityUnit( )
    set dd.id = GetUnitAbilityLevel( dd.attacker, 'A060' )
    set dd.dmg = dd.id * 125.00
    set dd.pl = GetOwningPlayer( dd.attacker )
    set dd.hp =  Atan2( GetSpellTargetY( ) - GetUnitY( dd.attacker ), GetSpellTargetX( ) - GetUnitX( dd.attacker ) )
    set dd.rx = GetUnitX( dd.attacker ) + 32.00 * Cos( dd.hp )
    set dd.ry = GetUnitY( dd.attacker ) + 32.00 * Sin( dd.hp )
    set dd.attacked = CreateUnit( dd.pl, 'hdum', dd.rx, dd.ry, bj_RADTODEG * dd.hp )
    set dd.fx = AddSpecialEffectTarget( "Abilities\\Spells\\Other\\WindWave\\PrismaticWave.mdx", dd.attacked, "origin" )
    set dd.grp = NewGroup( )
    set dd.time = 0

    call SetDataBX( t, dd )
    
    call SetUnitFlyHeight( dd.attacked, 0.00, 0.00 )
    call SetUnitScale( dd.attacked, 1.25, 1.25, 1.25 )
   
    call TimerStart( t, 0.03125, true, function Timer_Frost_Wave_Expires )
    
    set t = null
endfunction
Вот примерчик как надо делать такие спеллы, 1 структура на все спеллы и общий "движок" всех волн, клонов которых с одним кодом можно наделать 100500, на все абилки у меня 1 триггер.
это пока не мой уровень, код сложен для меня, да и вникать в чужой код пока не по мне, почти все пишут всё с маленькими и одной буквой или с двумя а я все прописываю с большими и полностью по этому понять чужой код для пока дело не из простых
14

» WarCraft 3 / Стальной вихрь (whirlwind) и Заводной зверь

ща

вот у мастера клинка можно посмотреть прямо в редакторе
вот у другой модели

обычно эта анимка называтся stand spin walk
Загруженные файлы
14

» WarCraft 3 / Стальной вихрь (whirlwind) и Заводной зверь

если у модели есть анимация вращения то все норм если нет то нечего не показывает все просто
14

» WarCraft 3 / Нужна модель? - Вам сюда!

может кто нибудь прилепить анимации иллидана к этой модельке?
Загруженные файлы
14

» WarCraft 3 / Волна силы не пашет vJass

rsfghd:
дебагом научись пользоваться, у тебя ошибка в слове
local SpellStruct s = LoadInteger(Hash,GetHandleId(T),StringHash("Strcut"))
call SaveInteger(Hash,GetHandleId(T),StringHash("Struct"),s)
оу щет, пасиб а то я уже целый час голову ломаю что я сделал не так
14

» WarCraft 3 / Вращение юнита

Bergi_Bear:
Гуванч:
пересадка анимы это ремесло трудное?
Нет это очень просто, когда есть нужный инструмент
не сделаешь мне воот эту модельку
с анимками илидана? пожалуйста
Загруженные файлы
14

» WarCraft 3 / Как включить портрет у alternate?

вроде в РО ставится или через триггер но если сделать это у модели то и портрет примет такую форму для примера посмотри превращение иллидана

вот как это делается без триггеров но есть один минус он будет таким всегда и после старта игры через триггер можешь в нужное время сделать его таким

скинь модельку сюда чтоб люди смогли тебе помочь причина может быть в модели либо ты что то не так делаешь
Загруженные файлы
14

» WarCraft 3 / Вращение юнита

Bergi_Bear:
Если не получается, кидай сюда модель попробую пересадить анимку от панды, в принципе я её проверял, юнит вращался. Так же я проверял заднее сальто троля на любого юнита, анимация пересаживается успешно
раскрыть
классно чувак, можно сделать спелл типа сальто назад при касте герой делает сальто и перемещается на короткое расстояние))

Bergi_Bear:
Если не получается, кидай сюда модель попробую пересадить анимку от панды, в принципе я её проверял, юнит вращался. Так же я проверял заднее сальто троля на любого юнита, анимация пересаживается успешно
раскрыть
пересадка анимы это ремесло трудное?
14

» WarCraft 3 / Вращение юнита

Bergi_Bear:
Модель будет сделать проще, так же можно попробовать пересадить анимацию ретерой, если лень заморачиваться. Так же возможен мемхак, точно можно вращать модель, а в последнем вроде и юнита, но я это не проверял, так что на этом мои полномочия всё
так пусть сделает модельку и через триггер делает с ним все что захочет
14

» WarCraft 3 / Вращение юнита

а блин, сори я думал кружок по оси, ну я не видел такого никогда может быть через мемхак получится а если есть моделько то на изи без мемхака можно сделать пример земляной панда из доты или в редакторе есть модель панды который кувыркается вот

закажи модель или сделай сам если можешь это лучше чем мемхак(как по мне)
Загруженные файлы
14

» WarCraft 3 / Вращение юнита

вот карта тут герой крутится вокруг пехотинца даже если он движется но в идеале тут нужна куча проверок чтоб герой не вылетал за карту и тому подобное
Загруженные файлы
14

» WarCraft 3 / Вращение юнита

помоему создаешь дамми юнита через polar offset на дистанции скажем 400 по углу 0 потом заносим в переменную точку созданного юнита и через него перемещаем героя вокруг юнита через 5 мин скину тест карту если успею
14

» WarCraft 3 / Не работает модель? - Вам сюда!

привет всем, мне тут нужна ваша помощь
вот у этой модели есть анимация бега
а вот у этой модели нет хотя все анимации одинаковые только скин другой можете сделать так чтоб 2 моделька бежала а не ходила
вот сама моедлька
Загруженные файлы
14

» WarCraft 3 / Магический лайфстил

Extremator:
Гуванч, да, впринципе ты вполне можешь обойтись и таким способом реализации, если тебя удовлетворит некая возможная неточность в итоговых подсчётах... и если это реализуется для одного скилла (или для скиллов одного героя). А в идеале надо разделить и детектить тип наносимого уронса, и тогда всё это можно перенести на простое событие получения урона и ряд фильтров.
какая неточность?
насчет "Получает урон" это ахинея мне не позубам пока что можно канеш через boolean сделать когда юнит кастует скилл поставить true после урона поставить false и если юнит отменит каст то опять же false если юнит получил приказ stop тоесть отставить после каста и тут же false и таким способом я долго ходил

quq_CCCP:
Для реализации подобного, нужен детект магического урона.
никакого мемори хака дружище!
14

» WarCraft 3 / Способности и алгоритмы на заказ

ArhiMEN:
Гуванч:
Имя: Опыт боя
Метод исполнения: GUI/JASS
MUI: Да
Цель: нет
Уровни: 5
Описание: получивший эту способность героя получает доп. Силу атака в размере 10/15/20/25/30% от своих характеристик
На мемхаке могу сделать
спасибо канеш но я против мемхака абсолютно лучше без него

Extremator:
Гуванч, на днях буду дома, сделаю на GUI.
было бы круто
14

» WarCraft 3 / Заказы на ландшафт

Размер карты: 468х468
Тип ланда: темная цитадель
Местность: Ад
Вид: локации(для каждой локации свой уровень)
Карта в жанре рпг в аду тематика демоны, ангелы, души нужны интересные локации можно с моделями которые есть в едиторе с перва игрок проходит через пустоши запелненные тварями и монтсрами потом через тюрьму тварей а потом через тюрьму демонов а дальше душ, потом сам ад с 7 локациями которые связаны между собой
14

» WarCraft 3 / Способности и алгоритмы на заказ

Имя: Опыт боя
Метод исполнения: GUI/JASS
MUI: Да
Цель: нет
Уровни: 5
Описание: получивший эту способность героя получает доп. Силу атака в размере 10/15/20/25/30% от своих характеристик
14

» Мой путь редактора / Аниме карта 1.1

rsfghd:
Это не аниме карта какой-то там версии, дружище)
Это скорее обычный спеллпак
Ну как бы это начало ща делаю 4 героя
14

» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.

Lua? Хмм, а версии выше 1.26 люди играют? Помоему все зависли в этой версии да и луа капец сложноват я с этим джассом не могу разобратся так что не стоит лезть туда куда не сможешь