Ну, в гуях каждый раз создается группа при действии с поиском юнитов в радиусе или ректе, что самое по себе убого.
Создадим одну группу и запишем её в глобальную переменную, на гуях просто создай глобалку TempGroup (название неважно, в гуях в перменную сразу же записывается группа), потом нам потребуется фильтр, ибо нужно отсеять всех ненужных юнитов для этого нужно создать новую функцию, которая не берет аргументов и возвращает boolean,
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 ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_TAUREN ) )
endfunction
Вот пример фильра, функция GetFilterUnit() -возвращает юнита которого сейчас проверяет фильтр, ну а все остальное функции проверки, обрати внимаение на то что аргументы в фильтр мы передает глобальными переменными, в данном случаи игрок bj_groupEnumOwningPlayer
Весь код можно посмотреть тут WoLLFeR, кстати вот держи
function IsUnitDead takes unit u returns boolean
return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction
Это заменитель IsUnitAliveBJ, только она вернет true если юнит мертв (несуществует), так же проверять наличие жизны можно проверяя хп юнита:
((код jass
GetUnitState( юнит, UNIT_STATE_LIFE ) > 0.405
))
Если здоровье больше 0.405 то юнит жив, иначе мертв.
задавался уже такой вопрос
пока герой под станом, сам с себя он его снять никак не может
разве что в мемхак и отлавливать нажатие.юз предмета
Нет все гораздо проще, DracoL1ch, уже написал ответ - приказы проходят сквозь стан но юнит их не выполняет, просто проверяем что юнит отдал приказ каста и снимаем стан с юнита.
Lenivex, Сам memory hack это I2C и Сломманый массив, все.
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
разве нельзя !nocjass заюзать?
Увы не помогает, cjass что то не то делает с мемхаком, да у меня вовсе с ним были одни проблемы, поэтому memhack == no cjass, уже лень было разбиратся что к чему, если у вас есть желания найти и исправить все конфликты пожалуйста, остальные пусть пишут на jass\vjass там все работает исправно, без вылетов на ровном месте (кое как разобрались)...
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
Просто многие функции требуют доработок и внимания, в той теме что я скинул к примеру поправлен кд чаннелингов и кое чего другого.
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст. Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
Зачем нам форсы? У вас каждую игру уникальные враги? Нет? Создаем 2 форса (или сколько их у вас) и все, мы знаем кто враги а кто союзники.
Ну а если очень хочется то перебираем всех игроков в форсе bj_forceAllPlayers и ищем тех кто враг, попутно делая для них нужные действия.
вот пример кода
function MyFunc takes nothing returns nothing
local player pl = GetEnumPlayer( )
if GetPlayerSlotState( pl ) == PLAYER_SLOT_STATE_PLAYING and IsPlayerEnemy( pl, bj_groupEnumOwningPlayer ) then
call BJDebugMsg(GetPlayerName(pl)+" - враг для - "+GetPlayerName(bj_groupEnumOwningPlayer))
// ваши действия
endif
endfunction
...
set bj_groupEnumOwningPlayer = Player(0)
call ForForce( bj_FORCE_ALL_PLAYERS, function MyFunc )
...
Мемхак один, новые могут только оформленные функции, с cjass н еработает, дело в пасере, есть спец тема для этого так что все там.
xgm.guru/p/wc3/179535 вот тема на мемхак, готовый для импорта а функции лежать на хайве, самые новые ну или пишутся конкретными людьми и выкладываются в паблик.
Реализация не гуи недает в полной мере определить это, столкновение рассчитывается при каждом такте смещения юнита ибо проверкой что цель двигается дальше неможет (край карты и тому подобное).
Спасибо всем, но я кое-что не подумал, надо чтобы баффы ауры на целях были видны только игроку (и его союзникам) юнита, который их распространяет и в инвизе, а иначе палево. Вся суть баффа это дать спецэффект на юните, знаю что можно даммиком, но нужно чтобы он был закреплен как спецэффкт, иначе некрасиво. Возможно ли такое вообще, давать инвизные спецэффекты?
Ну в этом случае тебе аура не нужна вовсе, триггерной пикай всех юнитов в радиусе и локально для игроков изменяй модель спецээфектов на юнитах под эффектом ауры, ну бафф сделать так не выйдет = сразу же десинх.
Там аура которая в воздух поднимает есть, и еще что то там с уроном было работает из инвиза, у ауры торнадо насколько помню есть бафф, там в настройках указан бафф просто он не отображается, но эффект вешает стабильно на юнитов (спецэффект + висит какое то время пока носителя нет рядом)
В константах карты: Невидимки могут распространять ауры
Самый изи вариант, ну а так юзать ауры вроде аур торнадо, они распространяются на врагов сквозь инвиз, но учтите это повреждающие ауры, вы разбудите нейтралов и так далее.
Странно но имена функций ни на что не влияют, похоже все дело в сжатии кода...
Пока не уверен, но одно ясно точно - оптимизаторы как которые уменьшают вес кода, делают его заметным для лаунчера.
Ну либо вейты, что непрактично - сойдет для вывода подсказок и инфы о карте.
Либо таймер, который ты запускаешь на случайный промежуток времени, когда таймер истечет ты делаешь нужные действия и заводишь таймер снова на случайный промежуток времени, ну и так хоть до бесконечности...
quq_CCCP, можно настроить так, чтобы дерево выделялось)) если ты не знал. ладно
Знал, но мы обсуждаем дефолт. Lenivex, автор очень обобщенно написал про виджеты, мне показалась что речь идет именно о разрушаймом декоре, ибо про предметы или юнитов так бы и написал. Для каста быстрого каста абилок есть всякие кликкеры, мапперы и так далее - стороннее по, всякие инвокер кеии и течис боты для доты тому яркий пример, незачем это делать на уровне карты.
Скачать себе сторонне по, которое будет нажимать на иконку вещи в нужном слоте, если ты нажмешь некую клавишу.
Увы у предметов нету хоткеев для юза, а только для продажи, поэтому либо сторонее по либо подгрузка мемхаком библиотеки, которая будет следить что игрок нажал нужную клавишу на клавиатуре, а затем отдаст приказ каста выделенному юниту с инвентарем.
Эмм, выделяются тока разрушаемые объекты да и то не все, деревья не выделяются игроком...
Если не секрет зачем вам знать над каким разрушаемым объектом сейчас курсор игрока?
quq_CCCP:
Если ты имеешь в виду ИИ который будет играть как про игрок человек, то я не об этом. Заставить кастовать бота способности при определённых условиях, я думаю, сможет каждый, кто разбирается в триггерах, собственно, что и разбирается в данном вопросе. quq_CCCP:
Слабо сделать?
Вообще ничего там сложного, просто трудоёмко и куча условий и проверок.
Я бы поспорил, даже про мили ИИ, там не так уж все и изи, если разобраться, хороший ии писать очень долго, так что везде где можно пытаются на дефолтном сидеть, даже в картах которые далеки от мили.
Ред. quq_CCCP
» WarCraft 3 / Утечки
Создадим одну группу и запишем её в глобальную переменную, на гуях просто создай глобалку TempGroup (название неважно, в гуях в перменную сразу же записывается группа), потом нам потребуется фильтр, ибо нужно отсеять всех ненужных юнитов для этого нужно создать новую функцию, которая не берет аргументов и возвращает boolean,
WoLLFeR, кстати вот держи
))
» WarCraft 3 / Утечки
Если использовать группы нормально, а не как нам предлагает гуи, не будет ни утечек, ни проблем.
» WarCraft 3 / Ребят, а как сделать пассивку Тролля из дота 2?
» WarCraft 3 / Абилки которые можно кастовать сквозь стан
Ред. quq_CCCP
» WarCraft 3 / (Memory Hack) 2 вопроса
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
» WarCraft 3 / (Memory Hack) 2 вопроса
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст.
Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
» WarCraft 3 / Функция противники игрока не работает и создает утечки
Ну а если очень хочется то перебираем всех игроков в форсе bj_forceAllPlayers и ищем тех кто враг, попутно делая для них нужные действия.
вот пример кода
» WarCraft 3 / (Memory Hack) 2 вопроса
» WarCraft 3 / Как отследить?
» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?
» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?
» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?
» WarCraft 3 / War3map.j до и после оптимизации?
Пока не уверен, но одно ясно точно - оптимизаторы как которые уменьшают вес кода, делают его заметным для лаунчера.
» WarCraft 3 / Ребят, а как сделать пассивку Тролля из дота 2?
Ну в общем все выдумано до вас, осталось скопировать к себе в карту.
» WarCraft 3 / Ребят, а как сделать пассивку Тролля из дота 2?
» WarCraft 3 / Временное случайное событие
Либо таймер, который ты запускаешь на случайный промежуток времени, когда таймер истечет ты делаешь нужные действия и заводишь таймер снова на случайный промежуток времени, ну и так хоть до бесконечности...
» WarCraft 3 / War3map.j до и после оптимизации?
» WarCraft 3 / Нужно отловить widget (memory hack)
Lenivex, автор очень обобщенно написал про виджеты, мне показалась что речь идет именно о разрушаймом декоре, ибо про предметы или юнитов так бы и написал. Для каста быстрого каста абилок есть всякие кликкеры, мапперы и так далее - стороннее по, всякие инвокер кеии и течис боты для доты тому яркий пример, незачем это делать на уровне карты.
» WarCraft 3 / Горячая клавиша предмету
Увы у предметов нету хоткеев для юза, а только для продажи, поэтому либо сторонее по либо подгрузка мемхаком библиотеки, которая будет следить что игрок нажал нужную клавишу на клавиатуре, а затем отдаст приказ каста выделенному юниту с инвентарем.
» WarCraft 3 / Нужно отловить widget (memory hack)
Если не секрет зачем вам знать над каким разрушаемым объектом сейчас курсор игрока?
» WarCraft 3 / Как заставить ИИ применять способность "Канал"?
» WarCraft 3 / Как заставить ИИ применять способность "Канал"?
» WarCraft 3 / Не запускается миссия кампании с JASS-триггером.