Никак баш баратрума из доты решили запилить?
Ну там двигают с помощью таймера юнита, при этом оглушив или запаузив чтобы не бегал, так же стоит проверять проходимость местности чтобы не затолкать юнита в непроходимое место.
На гуи сложнореализуемо...
Для предмета можно юзать и 'Aasl' (аура замедления, торнадо) но 'Aasl' повреждающая аура, её бафф на юните спровоцирует его напасть на владельца ауры, а так же разбудит нейтралов.
А что ты хотел знать про вторую атаку?
У юнита может быть 2 разные атаки для разны типов целей, т.е у атак взаимоисключающие допустимые цели, иначе будет работать 1 атака.
Размер карты-то изначально известен, можно обойтись и рандомом между статичными цифирями. Думал над этим вариантом тоже, значит будем пользовать его. nvc123:
к слову этот вообще не рабочий ибо количество итераций циклов может превысить лимит потока и тогда триггер просто обрубится
Ставить таймеры по 0.5 сек? Такого вида?
loop
exitwhen IsUnitDeadBJ(BET) or BECo > 20
if (TimerGetRemaining(t) <= 0) then
call MoveLocation( p, GetRandomReal ( X1, X2), GetRandomReal (Y1, Y2))
call SetUnitMoveSpeed( BET, 500.00 )
call IssuePointOrderLocBJ( BET, "move", p )
set BECo = BECo + 0.5
call TimerStart(t, 0.5, false, null)
endif
endloop
Таймер не вейт, он запустить новый Поток когда истечет, в функции старта таймера 4 параметра, таймер, время, периодичный буль и ссылка на код .
вместо null нужно вписать function Имя функции
functiom Timer_UnitMove_Expires takes nothing returns nothing
// эта функция будет вызыватся каждые 0.50 сек. пока не остановить таймер
endfunction
function A takes nothing returns nothing
local timer t = CreateTimer( )
call TimerStart( t, 0.50, true, function Timer_UnitMove_Expires )
set t = null
endfunction
Чтобы передавать информацию между функциями нужны так называемые Аттачи, нужно прикрепить данные к триггеру или таймеру, потому что мы можем получить ссылку на них в запущенных ими потоками.
Про хештаблицу куча данных на сайте, SaveUnitHandle( хештаблица, ключ 1, ключ 2, сам юнит )
Ну ну, наплодили утечек и еще какая то странная реализация... какой то custom PolledWait, который как не работал так и не работает, юзайте таймеры!
GetRandomLocInRect() - возвращает локейшены, каждый раз новый локейшен..
Наверное так называемый Новичок начал удалять локейшены но забыл не юзать бж функции где эти локейшены создаются и не удаляются, видя что оптимизация не помогла он начал грешить на Matching unit, прост так, с потолка...
GetFilterUnit() не вызывает утечки, ибо возвращает только существующего на карте юнита, а не плодить нового как GetUnitLoc() которая каждый раз плодит по локейшену, но это многие не помнят.
Ах да чуть не забыл, там половина гуи действий с группами вызвывает утечки то локейшены то группы, именно функция типа GetUnitsInRectMatching, вот тут да, не удаляется группа.
Все забыли про морфы?
Руна с морфом на основе 'Aave' не сбивает приказы, не считается кастом скилла, сохраняет баффы на юните.
Чтобы все вернуть в дефолт даруем юниту руну с обнуленным Эликсиром ярости (алхимик), все вернется в норму. Alexander12:
Количество уровней у улучшений, не влияет на скорость загрузки игры или еще на что-то. Делал 2млрд уровней улучшений, правда не на прямую в редакторе, через слк таблицу
Можно схитрить и сделать несколько апгрейдов по допустим 10 уровней, так карта загрузится быстрее.
Но апргейды это последнее дело, если там 100500 юнитам нужно менять дальность.
Ну либо триггерно, есть такие функции которые заставляют проигрывать конкретную анимацию, либо с помощью способности - Канал, там можно указать анимациюю и время которое юнит будет проигрывать анимацию, так же спецэффекты и возможность блокировать управление юнитом на время каста способности.
Ну если хочется чтобы иконка затемнилась, как в сайленсе то достаточно добавить в требования способности дамми юнита, и удаляя\создавая дамми юнита для игрока можно включать\выключать часть способностей.
(ауры, всякие шипы неруба, там хоть и затемнится иконка но способность будет действовать как обычно)
В теории анхаднуть проглоченного, ну или убить и создать на его месте нового.
Но лучше всего сделать свой кастомный Проглотить и еще Отрыгунть со всеми вытекающими.
Мб либу сюда? Сделаем ICCUP WIN HACK - доступным народу!
Ну а если поделу интересен именно preloader и писать в кешь свои данные, подгружая параметры в через тхт файлик.
Кстати если кому интересно вот утилизатор триггеров фрога:
globals
timer DispTimer = null
integer nTriggerIndex = 0
trigger array DispTriggers
real array Elapsed
gg_trg_Trigger_Remover
endglobals
function ClenTrigger_ERROR takes nothing returns nothing
local integer nPlayerIndex = 0
if udg_ItsForDebug then
loop
call DisplayTimedTextToPlayer( Player( nPlayerIndex ), 0, 0, 120, "|c00ff0303Что то пошло нетак!|r" )
call DisplayTimedTextToPlayer( Player( nPlayerIndex ), 0, 0, 120, "|c00ff0303Это все фигня, ни какайте в трусы, этот баг несерьезен!|r" )
call DisplayTimedTextToPlayer( Player( nPlayerIndex ), 0, 0, 120, "|c00ff0303Не забудьте сохранить реплей, а так же не поленитесь отправить его мне на мыло IceFrog@gmail.com|r" )
set nPlayerIndex = nPlayerIndex + 1
exitwhen nPlayerIndex == 12
endloop
endif
endfunction
function CleanTrigger_GetTime takes nothing returns real // зачем он обьявил эту функцию?
return TimerGetElapsed( DispTimer ) // так как она не где не используется оптимизатор не стер её оригинальное имя
endfunction
function DisposeTrigger takes trigger t returns nothing
call DisableTrigger( t )
set nTriggerIndex = nTriggerIndex + 1
set DispTriggers[nTriggerIndex] = t
set Elapsed[nTriggerIndex] = TimerGetElapsed( DispTimer ) + 60
if nTriggerIndex > 8000 then
call ClenTrigger_ERROR( )
endif
endfunction
function CleanTriggerArray takes integer nIndex returns nothing
if nIndex != nTriggerIndex then
set DispTriggers[nIndex] = DispTriggers[nTriggerIndex]
set Elapsed[nIndex] = Elapsed[nTriggerIndex]
endif
set DispTriggers[nTriggerIndex] = null
set Elapsed[nTriggerIndex] = 0
set nTriggerIndex = nTriggerIndex - 1
endfunction
function Trig_Trigger_Remover_Actions takes nothing returns nothing
local real CleanTime = TimerGetElapsed( DispTimer )
local integer nIndex = 1
loop
exitwhen nIndex > nTriggerIndex
if Elapsed[nIndex] < CleanTime then
if DispTriggers[nIndex] == null or IsTriggerEnabled( DispTriggers[nIndex] ) == true then
call ClenTrigger_ERROR( )
else
call DestroyTrigger( DispTriggers[nIndex] )
endif
call CleanTriggerArray( nIndex )
call BJDebugMsg("Триггер Удален!")
else
set nIndex = nIndex + 1
endif
endloop
return
endfunction
//===========================================================================
function InitTrig_Trigger_Remover takes nothing returns nothing
set gg_trg_Trigger_Remover = CreateTrigger( )
set DispTimer = CreateTimer( )
call TimerStart( DispTimer, 999999999999.00, false, null )
call TriggerRegisterTimerEvent( gg_trg_Trigger_Remover, 15.00, true )
call TriggerAddAction( gg_trg_Trigger_Remover, function Trig_Trigger_Remover_Actions )
endfunction
Так уж проще просто дать эти способеости. Но аттак спид позволит нанести много ударов а в доте только 1 насколько я помню
Да и как сделать шанс этого события?
Вранье, там лега пару раз иногда успевает стукнуть в ответ.
Делается это через систему отлова физического урона, как только ударил тут же удадлил бонус скорости с вампиризмом но фрог был лень и поставил таймер в 0.4 сек.
» WarCraft 3 / "Откидывающий Удар"
Ну там двигают с помощью таймера юнита, при этом оглушив или запаузив чтобы не бегал, так же стоит проверять проходимость местности чтобы не затолкать юнита в непроходимое место.
На гуи сложнореализуемо...
» WarCraft 3 / Не работает спелл
» WarCraft 3 / Если юнит не двигается то....
Проверить двигался юнит проще пареной репы, две переменные х и y если одна из координат изменилась то юнит двигается.
» WarCraft 3 / Как работает эта функция?
В гуях через кастом скрипт.
» WarCraft 3 / Две атаки
У юнита может быть 2 разные атаки для разны типов целей, т.е у атак взаимоисключающие допустимые цели, иначе будет работать 1 атака.
» WarCraft 3 / Эффект
А вот спецэффекты созданные триггерами нужно удалять.
» WarCraft 3 / Задержка
Ред. quq_CCCP
» WarCraft 3 / Нужна помощь со спеллом.
Про хештаблицу куча данных на сайте, SaveUnitHandle( хештаблица, ключ 1, ключ 2, сам юнит )
» WarCraft 3 / Нужна помощь со спеллом.
Ред. quq_CCCP
» WarCraft 3 / Нужна помощь со спеллом.
GetRandomLocInRect() - возвращает локейшены, каждый раз новый локейшен..
Неужели нельзя было обойтись таймером и координатами?
Без локейшенов, набери
» WarCraft 3 / Что за утечка с Matching unit
GetFilterUnit() не вызывает утечки, ибо возвращает только существующего на карте юнита, а не плодить нового как GetUnitLoc() которая каждый раз плодит по локейшену, но это многие не помнят.
Ах да чуть не забыл, там половина гуи действий с группами вызвывает утечки то локейшены то группы, именно функция типа GetUnitsInRectMatching, вот тут да, не удаляется группа.
» WarCraft 3 / Что за утечка с Matching unit
» WarCraft 3 / Juggernaut's omnislash из DotA
При замахе на врага давать герою руну иллюзий, ну всего пла возможно...
Но его пассивка же изи гомно, 1 гуи триггер...
» WarCraft 3 / Корректное проигрывание анимации
» WarCraft 3 / Дополнительная дальность атаки.
Руна с морфом на основе 'Aave' не сбивает приказы, не считается кастом скилла, сохраняет баффы на юните.
Чтобы все вернуть в дефолт даруем юниту руну с обнуленным Эликсиром ярости (алхимик), все вернется в норму.
Alexander12: Можно схитрить и сделать несколько апгрейдов по допустим 10 уровней, так карта загрузится быстрее.
Но апргейды это последнее дело, если там 100500 юнитам нужно менять дальность.
» WarCraft 3 / Корректное проигрывание анимации
» WarCraft 3 / модель дедпула deadpool
Будет deadpool, ну или сам нарисуй в фотошопе, инфы в сети хватает.
» WarCraft 3 / Как заблочить абилку?
(ауры, всякие шипы неруба, там хоть и затемнится иконка но способность будет действовать как обычно)
» WarCraft 3 / Можно ли тригерно "вытащить" проглоченного юнита?
Но лучше всего сделать свой кастомный Проглотить и еще Отрыгунть со всеми вытекающими.
» WarCraft 3 / Вызов функций вк 3, через mix (dll)
Ну а если поделу интересен именно preloader и писать в кешь свои данные, подгружая параметры в через тхт файлик.
Ред. quq_CCCP
» WarCraft 3 / Вызов функций вк 3, через mix (dll)
» WarCraft 3 / Вызов функций вк 3, через mix (dll)
Ред. quq_CCCP
» WarCraft 3 / Триггеры
» WarCraft 3 / Как сохранить цвет воды, освещение и т. д. при загрузке карты?
Ред. quq_CCCP
» WarCraft 3 / Скилл легионки
Делается это через систему отлова физического урона, как только ударил тут же удадлил бонус скорости с вампиризмом но фрог был лень и поставил таймер в 0.4 сек.