32

» WarCraft 3 / У кого есть наработки физика столкновения юнитов!

JCtapuk, есть рикошет, могу кинуть.
Есть бросок по пораболе, с подпрыгиванием и затуханием (как камень по воде, справедливости ради это я стырил из пуджварс).
32

» WarCraft 3 / Описания в РО с использованием ссылок

Они только с слк пашут, это не ссылки а формулы екселя, они показывают значение из слк таблиц, нужны только для авто заполнения описаний способностей по уровню.
32

» WarCraft 3 / Карта в ворлде не открывается

Принятый ответ
Мда, карта круто повреждена, хоть и не совсем из нулей, но заголовка мпк нету, вероятно что то поломалось в момент сохранения, когда данные были стерты а в заготовленный файл еще не успел редаткор записать всю инфу...
Если бекапа нет, с картой придется распрощаться.
Загруженные файлы
32

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

koloff, ну добавили, но добавили конечно не так как у современных игр, рендер мб еще что то вторичное вроде бнета будет многоядерное, основная движка скорее всего та же - ибо переписывать очень много. Хотя мб допилят, то что они не хвастаются об этом - скорее всего связано с неудачами.
32

» WarCraft 3 / Озвучка и текст

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

» WarCraft 3 / У меня очередной вопрос

Lesnoi troll, ууу какой ужас... вейты, ты создаешь юнитов а потом перемещаешь их, используя lastCreatedUnit - этот же просто переменная, куда заносится последний созданный юнит, совместо с такими переменныеми использовать нельзя, за время вейта значение в переменной может переписаться много раз.
Чтобы наносить урон только врагам - нужно делать фильтр, GroupPickUnitsInRangeMathingConditions - т.е нужно перечислить те типы юнитов которые получат урон, враги, не здания, живые, не имунные к магии допустим.
Говорю же - открой конфетные войны 2004 - и смотри там как сделано, сразу станет понятно.
32

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

LongbowMan, ну рендор они явно переработали то бы варик шел бы в 6 кадров на любых компах...
Добавили наконец то детект урона, который люди 15 лет ждали. Осталось только кд абилок и флаги допилить. Ну наверняка механику вижена изменили, т.к у вара вижен квадратами, не смотря на анимацию, и частота обновления вижена 0.4 секунды. Так же карта путей, по квадратам. Там есть чего улучшить и оптимизировать (никто не забыл тупку у 60+ юнитов, когда они стоят по полчаса и толкутся на месте вместо того чтобы идти?).
32

» WarCraft 3 / У меня очередной вопрос

Lesnoi troll, чувак, плз почитай статьи, открой карты близзардов - Конфетные войны 2004, и копируй как там сделано, чтобы сначала понимать алгоритм. А потом строить в редакторе триггеров последовательность комманд, чтобы добится успеха.
Запомни - изменить механику работы дефолтных способностей никак нельзя, не существует чудо способа как настроить абилки урон от кол-ва маны или статов, если в её настройках нет такой опции, урон от громовой поступи всегда фиксированный. Во всех случаев когда тебя не устраивает стандартная способность - ты делаешь её триггерный вариант.
Громовая поступь достаточно простая способность - все необходимые действия есть в редакторе триггеров чтобы воссоздать её эффект, что деформация земли что урон.
32

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Мили режим вара кстати давно не правилсо, люди и орки шибко имбили, издевались над андеадами и прочим. Ну и играть в ртс современные игроки вряд-ли смогут, там задротсва еще больше чем в доте, контроль только 3мя разными героями чего стоит? Не говоря про экономику, и армию. Рефордж ждут ради кастомок - крутых кастомок с новым графонием. Не думаю что все истосковались по мили картам.
32

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

DracoL1ch, ну в дотку 2 то свали не только по этому, вспомни все баги фрога которые не фиксились годами? И как они далеко ушли с валвами, фрог бы в варкравте хрен ступил так далеко, даже имея кодеров и прочее.
Многих привлекают всякие скины, кастом модельки за деньги.
32

» WarCraft 3 / Мне нужна помощь с 1 скилом.

Lesnoi troll, если ты ниче сложнее аое дамми каста дефолтных способностей не делал - то не советую рассматирвать доты и так далее, а делать простые карты и без сложных скиллов и механик, ибо начинающим не стоит замахиваться на серьезную карту сходу - не играбельное говно получится.
32

» WarCraft 3 / Ох уж этот "дамми"...

Lesnoi troll, ну а гуи такие спеллы делать нутроно и неудобно, да что тут разбиратся то?
32

» WarCraft 3 / Не открывается карта

umswe включи, у тебя кастом гуи в карте, оно пашет только на редакторе с umswe тулами.
32

» WarCraft 3 / Мне нужна помощь с 1 скилом.

Пассивка хускара не самая простая, хотябы уже тем что для её реализации нужно целую кучу дамми пассивок сделать, для резиста и для скорости атаки. Ну код в доте средний по сложности, раз в 0.5 сек идет проверка на хп хускара и выбирается из массива пачка способностей, в доте шаг бонусов 4%.
32

» WarCraft 3 / Ох уж этот "дамми"...

Lesnoi troll, ваши попытки в студию.
Насчет как сделать, ну я бы сделал примерно так:
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
endfunction
Примечания:
  • даммик должен иметь обзор над его целью обязательно, как это вы сделайте другое дело, создавая его за владцельца цели или выдавая shared vision неважно.
  • если важно только замедление, лучше использовать AEpa - отравленные стрелы, дебаффы на их основе могут складываться.
  • если волну можно применить в юнита, важно сделать проверку в коде на то какой тип цели использван - юнит или точка, чтобы брать от них координаты.
32

» WarCraft 3 / Отмена приказов/снятие таргета

Через шифт в тебя вряд-ли будут кидать стан, да и манту в доте в основном используют для уклонения от летящих снарядов.
32

» WarCraft 3 / Отмена приказов/снятие таргета

Enemy1PK, банальный хайд юнита, этого достаточно.
Насколько помню лич хоть и переделывал манту на кастом но был против такого нововведения, он сторонник мнения что юниты не должны терять агр на героя который применил манту или аналог.
Грубо говоря если юнит исчез с карты, исчезли все приказы других юнитов связанные с ним.
32

» WarCraft 3 / set aqcuisition range

Насколько помню оно работало, вроде вовсе автоатаку уберали им. Берет вроде оно дефолтное значение.
32

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

ScorpioT1000, сможешь пойти поиграть на бнете, доступны 4 карты и 2 рассы, никаких своих карт, только 4 карты от близзардов...
И да, игра с рандомами по поиску, сам создать кастом лобби ты не ма.
На ютубе уже прут обзоры, играть пока не во что, все добавят после выхода. Если уж сильно охото поиграть на карте "Черепашьи скалы" - на обычном варе можите вс бота поиграть.
32

» WarCraft 3 / Как сделать что-бы юнит ходил по дереве

mUtAnT, по дереву? Дерево сделайте из декорации без карты путей, и выложите путь по дереву невидимыми платфлрмами (такие деркорации по которым можно ходить), таким образом юниты смогут ходить по этому дереву, выглядить это конечно будет нелепо но тем не менее.
32

» WarCraft 3 / Spell Negation и дамми каст.

Нашел очень интересный способ блокировать 'Anss', запись в флаги абилки, флага кулдауна. Если с помощью мемхака записать в Адресс абилки + 0x20, текущее значение + 512, то 'ANss' работать не будет, далее уже все просто, возвращаем все на место и оно работает. Вряд ли близзарды добавят флаги абилок в рефордже...
32

» WarCraft 3 / Вопрос по триггерам через "Событие - юнит атакован"

RiderOfBalance, ну разумеется полноценный детект возможен на мемхаке, тут видео на 50 часов будет, если все рассказывать. Потом это невероятно скучно, показывать код, и объяснять как он работает...
Событие - юнит получает урон, есть только на конкретного юнита, а не на всех накарте. Нам нужно создать триггер который имеет событие - юнит входит в игровую область, чтобы добавить событие юнит получает урон всем юнитам которые уже есть на карте и тем что будут созданы, разумеется стоит исключать всяких технических юнитов и юнитов которые не интересны - к примеру здания.
Вот даже есть такая наработка - ссылка
Дальше все сложнее, стандартный функционал jass не позволяет как либо отличить урон, т.е все что мы можем узнать это источник и количество урона, а так же тот кто этот урон получает...
И тут начинаются костыли, о которых можно неделю рассказывать. Через 2х реезист к магии к примеру, если юниту вручить рунные браслеты с фактором снижения урона то весь магический урон станет отрицательным, а положительный - физический, но не все так просто, мало того что нам кодом нужно починить магический урон, еще и систему маг резиста мутить...
Ну и если ты нуб-нубский в этом, ты конечно же не справишся, тема эта сложная, с множеством токостей, + куча кода который будет работать постоянно, что требует тщательной проработки алгоритма и оптимизации.