Триггерам можно добавлять 100500 событий и постоянно менять условия и действия, но это муторно, годится для навороченой системы отлова физ урона 1 на всю карту и тому подобное где триггерные баши и криты будут у 100500 юнитов.
Просто удаляем и усе.
LockCameraOnTarget в гуях вроде, закрепляет камеру за юнитом не давая ниче делать.
Так же можно периодически проверять расстояние до цели, область видимости камеры и так далее и если они вышли за некие пределы, выставлять камере нужные параметры ( x,y,z, )
Нет, ну движок SC2 всё-таки в чём-то основывался на варике, а там выделять можно сколько угодно.
Ну сравнил божий дар с яичницей, внешне игры похожи ибо обе одного жанра и разработчика. Темболее в 8 году явно не было таких ограничений как в 1-2 не говоря что движку под стар взяли уже готовую а не пилили с нуля упорно затачивая под пк.
эм Xin из доты, там если ты про его удары по аое то их лучше делать из дамми, морфы не сбивают кулдаун атаки, если ты нанес удар потом юзнул скилл, перой тычки не последует, баг который так и не поправил фрог, делаем 2 героя, один обычный второй для прыжков.
я про оформление в отдельную функцию а не про не юзай буль...
эмм а зачем? Ты же про оптимизацию спросил, лишние действия...
ты не на содержание а на оформление смотри, тут фильтр даже близко на твой не похож - как определять жив ли дело 25, тут 2 типа проверок хп и IsUnitType(GetFilterUnit(),UNIT_TYPE_DEAD)) or GetUnitTypeId() < 1, особо не важно, тебя не смутило насколько фильтр короче + не создается никаких переменных.
Ну вручи им способность мина (взрывается) 'Amin' - которую нужно отредактировать, задержка запуска 0.00, ну от инвиза можно избавится временем перехода в невидимость на бесконечное.
SetUnitPosition довольно тяжелая операци, юзайте SetUnitX\Y в конце полета юзай SetUnitPosition для того чтобы юнит не залетел в непроходимое место.
Фильтр просто ужас, ну кто так фильтры делает?
Проверка на 'Aloc', я в ужасе на кой черт проверять на дамми если GropEnumUnitsInRange\Rect не выделяет москитов, тока EnumOfPlayer может пикнуть москитов, остальное не пикает их, на то они и москиты...
Вот как выглядит нормальный фильтр без локалок и прочего
function EnemyFilter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not( IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitInvulnerable( bj_lastFilterUnit ) )
endfunction
UnitDamageTargetEx - красиво но нафиг ненужно обводить в отдельную функцию с тучей аргументов + жутко неудобно, 100500 аргументов у функции и фиг знает за что какой от вечает, прямо так UnitDamageTarget, без отдельной функции.
Туча констант, тоже хорошо тока длят наработок, на деле ставь конкретные значения или юзай Difine vjass'a.
Так же можно создавать юнитов с тем же хендлом при помощи вейта
Это как?
Был такой баг, что после вейта с каким то периодом создается обьект с тем же хендлом ..
local timer t = CreateTimer()
call BJDebugMsg( I2S(GetHandleId(t)) )
call DestroyTimer()
call TriggerSleepAction( 0.00 ) // хз скока там надо
set t = CreateTimer()
call BJDebugMsg( I2S(GetHandleId(t)) )
этот код выдаст нам 2 одинаковых дебага, первое сообщение с хендлом первого таймера будет равно хендлу второго таймера, если вейта не будет то у таймеров будут разные хендлы...
А нафига его удалять, если есть он уже создан, смотрите всякие кофетные войны от близзард, там в центре карты сидит один дамми юнит который угощает всех и стунами и фрост новами....
Так же можно создавать юнитов с тем же хендлом при помощи вейта, но это слишком говенная идея для применения в своей карте.
Мне нравится делать такое дамми аттакерами, создаем N дамми с атакой (настроенной по области) и приказываем им выстрелить 1 раз в случайную точку в пределах нужной области, вот вам и урон, правда он какой попало в центре области цель может как и не получить урона так и сдохнуть с 1 залпа.
Ну записывать на ид региона, ид ректа в хт и после в потоке триггера брать ид региона GetTriggerRegion или как то так ну и выгружать ид ректа, того самого в который залез юнит ну далее уже делать что хочется...
Эмм а че вам мешает написать её самому, так же гугл в помощь.
Делаем по 1 таймеру для игрока а так же массив целочисленных, и при убийстве игроком проверяем истек или нет таймер, если истек то запускаем на N сек, если нет - то в первый раз дабл килл, запускаем снова на N сек и записываем в переменную текущий стрик игрока, на каждый таймер делаем событие в отдельном триггере что таймер истек, действие обнулить переменную со стриком.
зажимаешь ctrl и лкм на функцию
откроется её содержимое
и там смотри
утекает она или нет
Storm_dll:
bj_LastCreatedUnit, bj_ForLoopAIndex
если используются одновременно в нескольких триггерах то можно словить кучу багов
Можно, если руки растут не из того места...
Это темповые глобалки, в них можно записывать данные с которыми вы будите работать сразу же, без вейтов и таймеров а в том же потоке где им присвоено значение, тогда никаких багов не будет.
bj_lastCreatedUnit - годится для создания дамми юнита и добавления ему абилок, свойств, времени жизни и приказа.
Я ставил опыты на разных морфах с разными настройками и зависимостями:
Превратится в ворона 'Amrf'' с такими параметрами и морфом в летающего дамми юнита, гарантированно дают такой эффект.
Чтобы сбить этот эффект, юнит должен пройти полный морф (подходит метаморфоза или превратися в сфинкса) с удаленными параметрами, начальная и конечная форма наземный дамми герой (какой неважно, его параметры не важны, главное чтобы земной и все, так же для юнитов для летунов летуны, для наземных земные )
С рунами добится этого эффекта не получилось, потому мы останавливаем юнита и вручаем ему морф сфинкса и отдаем приказ кастануть его, морф сфинкса не сбивает приказы и не блочится сайленсом, главное чтобы в момент добавления у юнита не было никаких приказов.
Это грубый пример для рассмотрения бага мофров, для юза в своей карте надо писать свой код с 0, думая о всех если и как бы это по оптимальнее..
Как как, я уже выкладывал наработку...
Суть в баге некоторых морфов, после чего боевая единица выполняет первый отданный приказ до талого, никакие действия игрока на это не повлияют но панель приказов не скрывается, кнопки нажимаются но ничего не происходит.
Первое отличается от второго названием, первое предпочтительнее ибо нативка. Ну несколько версий предметов, вот не помню работают ли формулы типа < DataA1 > в описании предметов, но вот уровни предметных абилок менять можно.
Потому что у модели для этих состояний предусмотрена именно такая анимация, это свойство модели и кроме как заставить триггерно юнита проигрывать нужную анимацию или переделывать модель путей нету.
Эмм а сделать через сферу чародея крови никак? У зданий куча точек, к примеру точки для крепления огня, пропиши их в сфере и установи модель того что тебе нужно, добавляя сферу зданию ты прилепиш к нему эти самые модели в точки крепления огня, здание развалится и.ничего удалять ненужно, само удалится.
» WarCraft 3 / [JASS] Оптимизация
Просто удаляем и усе.
Ред. quq_CCCP
» WarCraft 3 / По поводу триггера
Так же можно периодически проверять расстояние до цели, область видимости камеры и так далее и если они вышли за некие пределы, выставлять камере нужные параметры ( x,y,z, )
» WarCraft 3 / Выделение неограниченного количества юнитов
» WarCraft 3 / [JASS] Оптимизация
Ред. quq_CCCP
» WarCraft 3 / [JASS] Оптимизация
» WarCraft 3 / Как сделать столкновение?
» WarCraft 3 / [JASS] Оптимизация
Фильтр просто ужас, ну кто так фильтры делает?
Проверка на 'Aloc', я в ужасе на кой черт проверять на дамми если GropEnumUnitsInRange\Rect не выделяет москитов, тока EnumOfPlayer может пикнуть москитов, остальное не пикает их, на то они и москиты...
Вот как выглядит нормальный фильтр без локалок и прочего
Туча констант, тоже хорошо тока длят наработок, на деле ставь конкретные значения или юзай Difine vjass'a.
» WarCraft 3 / как создать один то же handle дамми?
» WarCraft 3 / как создать один то же handle дамми?
Так же можно создавать юнитов с тем же хендлом при помощи вейта, но это слишком говенная идея для применения в своей карте.
» WarCraft 3 / Артиллерийская установка
» WarCraft 3 / TriggerRegisterEnterRectSimple, альтерантива есть?
» WarCraft 3 / Gui система двойных и тройных убийств
Делаем по 1 таймеру для игрока а так же массив целочисленных, и при убийстве игроком проверяем истек или нет таймер, если истек то запускаем на N сек, если нет - то в первый раз дабл килл, запускаем снова на N сек и записываем в переменную текущий стрик игрока, на каждый таймер делаем событие в отдельном триггере что таймер истек, действие обнулить переменную со стриком.
» WarCraft 3 / Все ли красные тексты и bj jass триггере утечны?
Это темповые глобалки, в них можно записывать данные с которыми вы будите работать сразу же, без вейтов и таймеров а в том же потоке где им присвоено значение, тогда никаких багов не будет.
bj_lastCreatedUnit - годится для создания дамми юнита и добавления ему абилок, свойств, времени жизни и приказа.
» WarCraft 3 / Вопрос: приказ боевой единице от игрока?
» WarCraft 3 / Вопрос: приказ боевой единице от игрока?
Суть в баге некоторых морфов, после чего боевая единица выполняет первый отданный приказ до талого, никакие действия игрока на это не повлияют но панель приказов не скрывается, кнопки нажимаются но ничего не происходит.
» WarCraft 3 / Как отследить попадание заклинания?
» WarCraft 3 / Новый Bloodrage из DotA
» WarCraft 3 / не работает call IssueTargetOrder(d, "thunderbolt, u)?
так же правильнее будет делать так
» WarCraft 3 / Как программно добавить/удалить морф алхимику?
» WarCraft 3 / Как программно добавить/удалить морф алхимику?
» WarCraft 3 / Как сделать кастомное описание предемтов во время игры?
Ну несколько версий предметов, вот не помню работают ли формулы типа < DataA1 > в описании предметов, но вот уровни предметных абилок менять можно.
» WarCraft 3 / Анимация "Горгулья" Работает не правильно.
» WarCraft 3 / можно ли триггерно сделать отображение манабаров?
» WarCraft 3 / Москиты и бафы (и красивые здания!)