Можно, но костыльно. Например чтобы внутри той функции куда будешь передавать аргументы сделать фильтр, например чтобы функция меняла принцип работы если какой то из аргументов будет равен null или 0.
И к примеру в одном триггере пишешь call My_Func( Player(0), GetTriggerUnit() )
А в другом пишешь call My_Func( null, GetTriggerUnit() )
В рандомных сферических координатах запускать летающих даммиков от юнита. И по наличию юнитов от этих даммиков в радиусе 10x10, наносить урон по юнитам, в т.ч молнии (но надо будет ещё прицепить наработку чтобы распознавать неуязвимость юнита).
Лови.
Не забудь перенести 4 переменные из редактора переменных.
Ещё не забудь перенести двух юнитов: "Net" и "Spellcaster"
+ не забудь 3 способности: "Marker", "Earthbind" и "Earthbind Helper"
Если хочешь чтобы на некоторых юнитов не работала сетка, то дай им способность "Marker"
Карта сохраняется в обычном WorldEditor
Забыл ещё кое что сказать, строчку:
set b[5] = GetUnitTypeId( GetFilterUnit() ) != 'n00L'
можно или даже нужно удалить, т.к чтобы по равкоду не совпало с "не тем" юнитом. Ну или настроить под себя и ставить запрет на кидание сетки, на какого нибудь уникального юнита без способности "Marker"
Стас Орлов
Да, функцию groupCondition всегда ставь над той функцией где будешь вставлять действия.
И в том же groupCondition можешь фильтровать юнитов, юнит который туда идет на проверку - это GetFilterUnit() Стас Орлов
и ещё важное забыл, те три local переменные всегда ставь в самый верх действий функции.
function groupCondition takes nothing returns boolean
return true == true //Здесь пишешь условия используя and или or и сюда передается юнит GetFilterUnit()
endfunction
//Эти действия вставляешь в любую нужную тебе функцию
local group g = CreateGroup()
local boolexpr bE = Condition( function groupCondition )
local unit u
//Где x и y - это координаты
//Где r - это радиус
call GroupEnumUnitsInRange( g, x, y, r, bE )
call DestroyBoolExpr( bE )
loop
set u = FirstOfGroup( g )
exitwhen u == null
//Действия над группой
call BJDebugMsg( GetUnitName( u ) )
//Конец
call GroupRemoveUnit( g, u )
set u = null
endloop
call GroupClear( g )
call DestroyGroup( g )
set g = null
set bE = null
set u = null
quq_CCCP
а что тут такого? Ловишь ивент на каст скилла, врубаешь таймер, потом кидаешь по ид приказа на ближайшего юнита корни.
Таймер не периодический, поэтому всё нормально.
Главное во времени таймера поставить кд абилки + 0.01 и чекать с boolean кинулись корни на ближайшего или нет, если не кинулись то костыль с таймером 0.05 (или больше) чтобы пытался кинуть корни на ближайшего юнита, вернёт true - костыльный таймер удалить.
А если подшаманить и передавать в функцию запускающую таймер ид абилки и её кд (+на всякий время подготовки заклинания), то ваще в шоколаде. Можно будет таким способом сделать автокаст на любую абилку quq_CCCP
ой перепутал, вместо ид абилки - её ид приказа
bazeba
Я в костылях на GUI не силён, может быть где то ошибся.
учи Jass, очень легкий язык. А если вникнуть, то ваще интересно изучать всякие фичи и т.д.
Вот ссылка: xgm.guru/p/wc3/jassintroduction
Если у тебя есть время, то опиши подробно что все эти триггеры должны делать, скажешь - я постараюсь сделать наработку на Jass (но тебе обязательно нужен будет JNGP, т.к обычный WE не сможет сохранить наработку).
bazeba
фух, чуть глаза не сломал пока бегал по этому GUI
Вроде все утечки починил, но так и не понял что там с точкой udg_Point, поэтому оставил как есть.
Советую тебе для таких вещей Jass учить
bazeba
Перед удалением группы используй call GroupClear(udg_Group[udg_A]) bazeba
+ ты не удаляешь точку "Позиция bolt[A]" bazeba
и вместо Установить Group[A] Юниты в радиусе 200, используй это:
call GroupEnumUnitsInRangeOfLoc(udg_Group[udg_A], udg_Point[udg_A], 200.00, null) bazeba
короче тут дохера утечек, кинь пустую карту с этими двумя триггерами, я сам поправлю утечки
Naadir
У тебя в пути к карте есть русские буквы, перекинь в корень диска D к примеру (если он есть) Naadir
RenderEdge? Как я помню там надо wehack переделывать и ещё кое че шаманить Naadir
Бери этот мемхак xgm.guru/p/wc3/179535
Кидать карту туда где нету русских букв в пути к самой карте. А для работы с мемхаком надо отключать AdicParser и AdicOptimizer
И ещё карту нужно сначала сохранять а потом нажимать "Проверка карты"
Diaboliko
Есть ещё один костыль на ХТ, сохранять самого же юнита используя как ключ его хендл. Пользоваться этим надо аккуратно, + при входе любого юнита в игровую арену записывать его в ХТ.
» WarCraft 3 / Возможно Ли В передаче параметров передать лишь часть параметров
И к примеру в одном триггере пишешь call My_Func( Player(0), GetTriggerUnit() )
А в другом пишешь call My_Func( null, GetTriggerUnit() )
Ред. Hodor
» WarCraft 3 / Навесная траэктория
» WarCraft 3 / Камера показывает не то, что должна
попробуй перемещать камеру после отключения режима кинематики
» WarCraft 3 / Камера показывает не то, что должна
Это время за которое камера переместится туда куда нужно
» WarCraft 3 / Отряд
я не находил статьи которая объясняла бы что нужно и что не нужно обнулять
quq_CCCP
хотя пришлось порыться, вроде нашел
Ред. Hodor
» WarCraft 3 / Массивы и кастом скрипт
Не забудь перенести 4 переменные из редактора переменных.
Ещё не забудь перенести двух юнитов: "Net" и "Spellcaster"
+ не забудь 3 способности: "Marker", "Earthbind" и "Earthbind Helper"
Если хочешь чтобы на некоторых юнитов не работала сетка, то дай им способность "Marker"
Карта сохраняется в обычном WorldEditor
set b[5] = GetUnitTypeId( GetFilterUnit() ) != 'n00L'
можно или даже нужно удалить, т.к чтобы по равкоду не совпало с "не тем" юнитом. Ну или настроить под себя и ставить запрет на кидание сетки, на какого нибудь уникального юнита без способности "Marker"
» WarCraft 3 / Отряд
Да, функцию groupCondition всегда ставь над той функцией где будешь вставлять действия.
И в том же groupCondition можешь фильтровать юнитов, юнит который туда идет на проверку - это GetFilterUnit()
Стас Орлов
и ещё важное забыл, те три local переменные всегда ставь в самый верх действий функции.
Ред. Hodor
» WarCraft 3 / Отряд
» WarCraft 3 / Способность
блин почему никто не хочет понять костыльный автокаст.
Я же делал такое уже, работает
Ред. Hodor
» WarCraft 3 / Способность
а что тут такого? Ловишь ивент на каст скилла, врубаешь таймер, потом кидаешь по ид приказа на ближайшего юнита корни.
Таймер не периодический, поэтому всё нормально.
Главное во времени таймера поставить кд абилки + 0.01 и чекать с boolean кинулись корни на ближайшего или нет, если не кинулись то костыль с таймером 0.05 (или больше) чтобы пытался кинуть корни на ближайшего юнита, вернёт true - костыльный таймер удалить.
А если подшаманить и передавать в функцию запускающую таймер ид абилки и её кд (+на всякий время подготовки заклинания), то ваще в шоколаде. Можно будет таким способом сделать автокаст на любую абилку
quq_CCCP
ой перепутал, вместо ид абилки - её ид приказа
» WarCraft 3 / Массивы и кастом скрипт
Я в костылях на GUI не силён, может быть где то ошибся.
учи Jass, очень легкий язык. А если вникнуть, то ваще интересно изучать всякие фичи и т.д.
Вот ссылка: xgm.guru/p/wc3/jassintroduction
Если у тебя есть время, то опиши подробно что все эти триггеры должны делать, скажешь - я постараюсь сделать наработку на Jass (но тебе обязательно нужен будет JNGP, т.к обычный WE не сможет сохранить наработку).
» WarCraft 3 / Массивы и кастом скрипт
такие штуки очень легко делаются на Jass, но для удобства обязательно нужен JNGP
Ред. Hodor
» WarCraft 3 / Массивы и кастом скрипт
фух, чуть глаза не сломал пока бегал по этому GUI
Вроде все утечки починил, но так и не понял что там с точкой udg_Point, поэтому оставил как есть.
Советую тебе для таких вещей Jass учить
» WarCraft 3 / Массивы и кастом скрипт
и советую скачать и установить улучшенный редактор карт JNGP (Jass New Gen Pack)
Ред. Hodor
» WarCraft 3 / Массивы и кастом скрипт
Перед удалением группы используй call GroupClear(udg_Group[udg_A])
bazeba
+ ты не удаляешь точку "Позиция bolt[A]"
bazeba
и вместо Установить Group[A] Юниты в радиусе 200, используй это:
call GroupEnumUnitsInRangeOfLoc(udg_Group[udg_A], udg_Point[udg_A], 200.00, null)
bazeba
короче тут дохера утечек, кинь пустую карту с этими двумя триггерами, я сам поправлю утечки
Ред. Hodor
» WarCraft 3 / Массивы и кастом скрипт
Если эту "A" ты создавал в редакторе переменных, то да
Ред. Hodor
» WarCraft 3 / Массивы и кастом скрипт
Или A это локалка?
Ред. Hodor
» WarCraft 3 / Способность
да ну, на таймерах изи наработку делал, даже без дамми
» WarCraft 3 / КАК защитить карту от Ladik's MPQ Editor ?
» WarCraft 3 / Выброс в главое меню
У тебя в пути к карте есть русские буквы, перекинь в корень диска D к примеру (если он есть)
Naadir
RenderEdge? Как я помню там надо wehack переделывать и ещё кое че шаманить
Naadir
Бери этот мемхак xgm.guru/p/wc3/179535
» WarCraft 3 / Выброс в главое меню
И ещё карту нужно сначала сохранять а потом нажимать "Проверка карты"
Ред. Hodor
» WarCraft 3 / Очередные вопросы по триггерам
Тем более что период у таймера 0.5, а это значит нагрузки ваще 0
Ред. Hodor
» WarCraft 3 / Что происходит с real почему 0?
» WarCraft 3 / Покраска юнита для определённого игрока
Ред. Hodor
» WarCraft 3 / I2H как сконвертировать
Есть ещё один костыль на ХТ, сохранять самого же юнита используя как ключ его хендл. Пользоваться этим надо аккуратно, + при входе любого юнита в игровую арену записывать его в ХТ.