32

» WarCraft 3 / Утечки

Ну, в гуях каждый раз создается группа при действии с поиском юнитов в радиусе или ректе, что самое по себе убого.
Создадим одну группу и запишем её в глобальную переменную, на гуях просто создай глобалку 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 то юнит жив, иначе мертв.
32

» WarCraft 3 / Утечки

А зачем, мб альтернатива гуи? Ну она есть, jass.
Если использовать группы нормально, а не как нам предлагает гуи, не будет ни утечек, ни проблем.
32

» WarCraft 3 / Абилки которые можно кастовать сквозь стан

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

» WarCraft 3 / (Memory Hack) 2 вопроса

Lenivex, Сам memory hack это I2C и Сломманый массив, все.
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
разве нельзя !nocjass заюзать?
Увы не помогает, cjass что то не то делает с мемхаком, да у меня вовсе с ним были одни проблемы, поэтому memhack == no cjass, уже лень было разбиратся что к чему, если у вас есть желания найти и исправить все конфликты пожалуйста, остальные пусть пишут на jass\vjass там все работает исправно, без вылетов на ровном месте (кое как разобрались)...
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
32

» WarCraft 3 / (Memory Hack) 2 вопроса

Просто многие функции требуют доработок и внимания, в той теме что я скинул к примеру поправлен кд чаннелингов и кое чего другого.
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст.
Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
32

» WarCraft 3 / Функция противники игрока не работает и создает утечки

Зачем нам форсы? У вас каждую игру уникальные враги? Нет? Создаем 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 )
...
32

» WarCraft 3 / (Memory Hack) 2 вопроса

Мемхак один, новые могут только оформленные функции, с cjass н еработает, дело в пасере, есть спец тема для этого так что все там.
xgm.guru/p/wc3/179535 вот тема на мемхак, готовый для импорта а функции лежать на хайве, самые новые ну или пишутся конкретными людьми и выкладываются в паблик.
32

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

Реализация не гуи недает в полной мере определить это, столкновение рассчитывается при каждом такте смещения юнита ибо проверкой что цель двигается дальше неможет (край карты и тому подобное).
32

» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?

Lotus101:
Спасибо всем, но я кое-что не подумал, надо чтобы баффы ауры на целях были видны только игроку (и его союзникам) юнита, который их распространяет и в инвизе, а иначе палево. Вся суть баффа это дать спецэффект на юните, знаю что можно даммиком, но нужно чтобы он был закреплен как спецэффкт, иначе некрасиво. Возможно ли такое вообще, давать инвизные спецэффекты?
Ну в этом случае тебе аура не нужна вовсе, триггерной пикай всех юнитов в радиусе и локально для игроков изменяй модель спецээфектов на юнитах под эффектом ауры, ну бафф сделать так не выйдет = сразу же десинх.
32

» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?

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

» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?

Proshel_Doty:
В константах карты: Невидимки могут распространять ауры
Самый изи вариант, ну а так юзать ауры вроде аур торнадо, они распространяются на врагов сквозь инвиз, но учтите это повреждающие ауры, вы разбудите нейтралов и так далее.
32

» WarCraft 3 / War3map.j до и после оптимизации?

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

» WarCraft 3 / Ребят, а как сделать пассивку Тролля из дота 2?

В опен доте есть, но там она вроде у рексара...
Ну в общем все выдумано до вас, осталось скопировать к себе в карту.
32

» WarCraft 3 / Ребят, а как сделать пассивку Тролля из дота 2?

Опен дота в помощь, тупо добавление пассивки на скорость атаки при каждом ударе, потом если юнит бьет другую цель, то удаляем половину бонуса.
32

» WarCraft 3 / Временное случайное событие

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

» WarCraft 3 / War3map.j до и после оптимизации?

-~DracoL1ch:
ничем, кроме названий переменных. попробуй отключить морфинг имен
Определённо нет, попробовал отключать сжатие имен.
Загруженные файлы
32

» WarCraft 3 / Нужно отловить widget (memory hack)

Steal nerves:
quq_CCCP, можно настроить так, чтобы дерево выделялось)) если ты не знал. ладно
Знал, но мы обсуждаем дефолт.
Lenivex, автор очень обобщенно написал про виджеты, мне показалась что речь идет именно о разрушаймом декоре, ибо про предметы или юнитов так бы и написал. Для каста быстрого каста абилок есть всякие кликкеры, мапперы и так далее - стороннее по, всякие инвокер кеии и течис боты для доты тому яркий пример, незачем это делать на уровне карты.
32

» WarCraft 3 / Горячая клавиша предмету

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

» WarCraft 3 / Нужно отловить widget (memory hack)

Эмм, выделяются тока разрушаемые объекты да и то не все, деревья не выделяются игроком...
Если не секрет зачем вам знать над каким разрушаемым объектом сейчас курсор игрока?
32

» WarCraft 3 / Как заставить ИИ применять способность "Канал"?

Proshel_Doty:
quq_CCCP:
Если ты имеешь в виду ИИ который будет играть как про игрок человек, то я не об этом. Заставить кастовать бота способности при определённых условиях, я думаю, сможет каждый, кто разбирается в триггерах, собственно, что и разбирается в данном вопросе.
quq_CCCP:
Слабо сделать?
Вообще ничего там сложного, просто трудоёмко и куча условий и проверок.
Я бы поспорил, даже про мили ИИ, там не так уж все и изи, если разобраться, хороший ии писать очень долго, так что везде где можно пытаются на дефолтном сидеть, даже в картах которые далеки от мили.
32

» WarCraft 3 / Не запускается миссия кампании с JASS-триггером.

8gabriel8:
quq_CCCP, я не умею писать на jass, мне человек сделал. И как вытащить код и засунуть в карту кампании?
Мпк редактором, весь код карты это war3map.j