32

» WarCraft 3 / как создать один то же handle дамми?

Кет:
Так же можно создавать юнитов с тем же хендлом при помощи вейта
Это как?
Был такой баг, что после вейта с каким то периодом создается обьект с тем же хендлом ..

local timer t = CreateTimer()


call BJDebugMsg( I2S(GetHandleId(t)) )

call DestroyTimer()
call TriggerSleepAction( 0.00 ) // хз скока там надо
set t = CreateTimer()
call BJDebugMsg( I2S(GetHandleId(t)) )
этот код выдаст нам 2 одинаковых дебага, первое сообщение с хендлом первого таймера будет равно хендлу второго таймера, если вейта не будет то у таймеров будут разные хендлы...
32

» WarCraft 3 / как создать один то же handle дамми?

Принятый ответ
А нафига его удалять, если есть он уже создан, смотрите всякие кофетные войны от близзард, там в центре карты сидит один дамми юнит который угощает всех и стунами и фрост новами....
Так же можно создавать юнитов с тем же хендлом при помощи вейта, но это слишком говенная идея для применения в своей карте.
32

» WarCraft 3 / Артиллерийская установка

Мне нравится делать такое дамми аттакерами, создаем N дамми с атакой (настроенной по области) и приказываем им выстрелить 1 раз в случайную точку в пределах нужной области, вот вам и урон, правда он какой попало в центре области цель может как и не получить урона так и сдохнуть с 1 залпа.
32

» WarCraft 3 / TriggerRegisterEnterRectSimple, альтерантива есть?

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

» WarCraft 3 / Gui система двойных и тройных убийств

Принятый ответ
Эмм а че вам мешает написать её самому, так же гугл в помощь.
Делаем по 1 таймеру для игрока а так же массив целочисленных, и при убийстве игроком проверяем истек или нет таймер, если истек то запускаем на N сек, если нет - то в первый раз дабл килл, запускаем снова на N сек и записываем в переменную текущий стрик игрока, на каждый таймер делаем событие в отдельном триггере что таймер истек, действие обнулить переменную со стриком.
32

» WarCraft 3 / Все ли красные тексты и bj jass триггере утечны?

зажимаешь ctrl и лкм на функцию
откроется её содержимое
и там смотри
утекает она или нет
Storm_dll:
bj_LastCreatedUnit, bj_ForLoopAIndex
если используются одновременно в нескольких триггерах то можно словить кучу багов
Можно, если руки растут не из того места...
Это темповые глобалки, в них можно записывать данные с которыми вы будите работать сразу же, без вейтов и таймеров а в том же потоке где им присвоено значение, тогда никаких багов не будет.
bj_lastCreatedUnit - годится для создания дамми юнита и добавления ему абилок, свойств, времени жизни и приказа.
    set bj_lastCreatedUnit = CreateUnit( bj_groupEnumOwningPlayer, 'hdum', GetUnitX(enemy), GetUnitY(enemy), GetUnitFacing(enemy) )
    call SetUnitPathing( bj_lastCreatedUnit, false )
    call UnitAddAbility( bj_lastCreatedUnit, 'A07D' )
    call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A07D', bj_forLoopAIndex )
    call UnitApplyTimedLife( bj_lastCreatedUnit, 0, 5.01 )
    
    call UnitShareVision( enemy, bj_groupEnumOwningPlayer, true )
    if not IssueTargetOrderById( bj_lastCreatedUnit, 852601, enemy ) then
    call BJDebugMsg,"Ошибка - невозможно применить способность!")
    endif
    call UnitShareVision( enemy, bj_groupEnumOwningPlayer, false )
В этом примере никаких утечек и багов не будет.
32

» WarCraft 3 / Вопрос: приказ боевой единице от игрока?

Я ставил опыты на разных морфах с разными настройками и зависимостями:
  1. Превратится в ворона 'Amrf'' с такими параметрами и морфом в летающего дамми юнита, гарантированно дают такой эффект.
  2. Чтобы сбить этот эффект, юнит должен пройти полный морф (подходит метаморфоза или превратися в сфинкса) с удаленными параметрами, начальная и конечная форма наземный дамми герой (какой неважно, его параметры не важны, главное чтобы земной и все, так же для юнитов для летунов летуны, для наземных земные )
  3. С рунами добится этого эффекта не получилось, потому мы останавливаем юнита и вручаем ему морф сфинкса и отдаем приказ кастануть его, морф сфинкса не сбивает приказы и не блочится сайленсом, главное чтобы в момент добавления у юнита не было никаких приказов.
Это грубый пример для рассмотрения бага мофров, для юза в своей карте надо писать свой код с 0, думая о всех если и как бы это по оптимальнее..
32

» WarCraft 3 / Вопрос: приказ боевой единице от игрока?

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

» WarCraft 3 / Как отследить попадание заклинания?

Принятый ответ
Если нету баффа, а тупо урон то кастуем скилл даммиком и проверяем на урон от этого дамми юнита.
32

» WarCraft 3 / Новый Bloodrage из DotA

quq_CCCP, можешь вытащить код Boots of Travel и Town portal?
Могу, но зачем? Там и так все очевидно...
32

» WarCraft 3 / не работает call IssueTargetOrder(d, "thunderbolt, u)?

Принятый ответ
Руками молоток пробовали применять?
так же правильнее будет делать так
       set bj_lastCreatedUnit = CreateUnit( bj_groupEnumOwningPlayer, 'hdum', GetUnitX( enemy ), GetUnitY( enemy ), GetUnitFacing( enemy ) )
        call UnitAddAbility( bj_lastCreatedUnit, 'Ast1' )
        call UnitShareVision( enemy, bj_groupEnumOwningPlayer, true )
        if not IssueTargetOrder( bj_lastCreatedUnit, "creepthunderbolt", enemy ) then
            call BJDebugMsg("Ошибка - невозможно выполнить приказ!")
        endif
        call UnitShareVision( enemy, bj_groupEnumOwningPlayer, true )
        call UnitApplyTimedLife( bj_lastCreatedUnit, 0, 1.00 )
32

» WarCraft 3 / Как программно добавить/удалить морф алхимику?

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

» WarCraft 3 / Как сделать кастомное описание предемтов во время игры?

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

» WarCraft 3 / Анимация "Горгулья" Работает не правильно.

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

» WarCraft 3 / Москиты и бафы (и красивые здания!)

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

» WarCraft 3 / Триггерный урон для способностей типа волна

Ну раз группы для вас ресурсоёмки используйте event units in range - этот ивент берт boolexpr, так же можно добавить любое условие триггеру на enterning unit.
32

» WarCraft 3 / Pick Up a ll items?

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

» WarCraft 3 / Триггерный урон

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

» WarCraft 3 / SyncStoredString не работает?

Принятый ответ
Ну как бы там все одно да потому, код тот же что я описал выше, вот только проверять все надо в МУИ это раз, два время затраченное на синхронизацию может быть пипец каким большим...
function Trig_SyncStr_Actions takes nothing returns nothing
    local string splayer = null
    local player pl = Player(0)
    
    if GetLocalPlayer() == pl then
        call StoreString( udg_Data, "A", "B", "твоя строка!" )
    endif

    call TriggerSyncReady()
    
    if GetLocalPlayer) == pl  then
        call SyncStoredString( udg_Data, "A", "B"  )
    endif

    call TriggerSleepAction( 2.00 )
    
    call TriggerSyncReady()
    
    set splayer = GetStoredString( udg_Data, "A", "B" ) // выгрузи строку из кеша в локалку и делай с ней что хочешь
    
endfunction

//===========================================================================
function InitTrig_SyncStr takes nothing returns nothing
    set gg_trg_SyncStr = CreateTrigger(  )
    call TriggerAddAction( gg_trg_SyncStr, function Trig_SyncStr_Actions )
endfunction
Триггер запускаем ExecuteTrigger а "Твоя строка" заменяется на глобальную переменную.
32

» WarCraft 3 / Урон по области врагам

ssbbssc:
naxim:
Юзай способность буран с одной волной. Не?
Буран и своих угощает
Так если что, это можно настроить и у огненного дождя и у бурана, а так же огненного столба, достаточно правильно указать допустимые цели!