ну альфу неправильно значит настраиваешь, там кстати не помню у молнии вроде были настройки видимости и еще чего то, смотри все нативки.
Кстати на сайте есть система которая сама двигает молнии за обьектами и делает затухание, на одном таймере.
Steal nerves, ты одно упустил, с пассивками boolean attack, boolean ranged не связаны, просто это галочки для проверок, если поставить, true, false, то при нанесении урона по врагу с ледяным щитом на источнике урона появится дебафф, то же самое с аурой шипов у Фуриона, однако это никак не затрагивает каменные доспехи великана и прочее, т.к эти пассивки ждут не урона а атаки, движок уже на замахе знает будет промах или нет.
Вампиризмы тоже никак не работают на урон нанесенный этой функцией не смотря на параметры, но эти параметры очень полезны при тригерном детекте урона на мемхаке, т.к можно проверить эти флаги урона.
Нам вот очень интересно слушать такие подробности вашего эмоционального потрясения, в следующий раз пишите что "я ошибся" или "проклятый T9, заменил слово".
Действия триггера могут быть удалены как обьект, так и очищены из триггера (но в памяти висеть они останутся), TriggerRemoveAction - удалит указанное действие, требует ссылку на действие (handle triggeraction), так же TriggerClearActions уберет у триггера все действия, но они будут существовать как хендлы, и потребуется их последущее удаление действием TriggerRemoveAction чтобы не плодить утечки.
Еще вопросы?
Где UnitShareVision - если что даммик нихрена не видит после того как создан, он либо должен иметь точно такие же координаты как и цель либо у него должна быть расшарена видимость над целью.
События никак не удаляются, они связаны с обьектами на которые они рассчитаны, у триггера можно удалять только условия и действия, напишите что хотите сделать?
Руками, прямыми человеческими руками.
Есть такие карты как ExtrimeCandyWars и BlizzardTD они открыты и написаны на гуях, смотрите и повторяйте, читайте комментарии авторов карт.
Пушистый, Вот немного инфы: ссылка
По сути аргументы - это обычные локалки, просто когда jass интерпритируется в asm код, там объявляются локалки-аргументы и вних сразу же пишется значение, а затем они зачищаются перед выходом, таков интерпритатор, можно было бы изи допилить и аргументы в каллбеки.
Стас Орлов, по подробнее, что вы хотите сделать? Что значит "скейлющуюся от чего либо?", куда что и как должно расстягиватся?
Вам хочется сделать полет молнии в цель или что?
Мне просто срочно нужно это, так я хоть буду иметь большое и дальнейшей представление о том как он отлавливается, разжуйте мне пожалуйста
Что значит как? Это помойму разжевано везде, но блин в сотый раз...
Нельзя просто так узнать кто кого ударил, вот нету такой функции, о том что один юнит ударил руками другого мы можем узнать лишь косвенно (в коде), т.к у нас есть событие - юнит атакован, которое срабатывает когда юнит начал атаку, еще даже не махнул ручками а просто сагрился на цель - уже сработало событие, при этом неважно ударит он или промажет, или цель вовсе к тому моменту умрет...
Ну у нас еще есть событие - юнит получает урон, оно не так удобно - т.к требует конкретно указанного юнита в отличии от события "юнит атакован", которе можно повешать на всех юнитов игрока ( EVENT_PLAYER_UNIT_ATTACKED), что удобнее т.к такое событие будет работат на всех юнитов указанного игрока и существующих и созданных в процессе игры.... Ну вернемся к событию - "юнит получает урон", оно срабатывает на фрейм ранее от того момента как юнит потеряет хп от урона, срабатывает на любой урон полученный указанным юнитом, проверить приэтом мы можем лишь кол-во урона (функция GetEventDamage()), источник урона (GetEventDamageSource()) ну и тот кто получил урон (GetTriggerUnit()), понять прост так нельзя урон это от атаки, от спелла или от баффа (вредные баффы наносят 0 урона при появлении и потере).
Далее уже люди реализуют проверки на тип урона с помощью костылей, тот пример что я тебе дал использует оба событие, когда юнит атакован - включается событие юнит получает урон, если после события атаки сработает событие урона - считай был удар, но это слишком багано, т.к сущетсуют промахи и другие источники урона.
Еще есть способ отличить физический урон от магического - сделать его отрицательным, вручая тому у кого будем отлавливать физ атаки, суть - рунные браслеты с фактором сниженного урона 2, весь магический урон полученный юнитом будет отрецательным, а положительным будет только чистый и физический (чистый в стандартных способностях практически не втречается, как и физический) ну а далее все просто, лечение от маг урона уберается так же триггерно, сначала ждем таймером 0.00 сек, потом возвращаем юниту хп которое было до отрец урона и тут же наносим ему еще урон маг типа, забирая пассивку резиста и отключая триггер, таким образом мы вернем все наместо и юнит получит маг урон в полном размере, как и должен без лечения (т.е мы блокируем лечение от отрец урона), ну а далее снова вручаем пассивку и врубаем триггер, дейтсвуем поновой....
Bergi_Bear, это копипаст кода мипо, когда он только появился и все было на кеше с ретурбагом, так все и осталось, малость переписали на хештаблицу и все.
У Фрога структур то почти нет, разве что то что делали его кодеры с нуля.
Это асм код на мемхаке или сторонняя длл, если использованы хуки, так же вар любит много чего кешировать, поэтому после карт с кастом шрифтами и интерфейсами нужно перезапускать вар.
Это не сначала наносится урон, а лечить выше максимума низя. Если нанести юниту урона больше чем его хп и тут же отхилить его на это же кол-во урона, он всеравно умрет, т.к юнит с фулл хп не сможет вылечится (больше максимума хп получить нельзя), но хп упадет то только через фрейм после получения урона как и смерть...
Чето совсем не похоже на фрога, какая то отсебятина...
Если у вас фильтр выглядит вот так:
function earthbind_Filter takes nothing returns boolean
local boolean array b
set b[0] = IsUnitEnemy( GetFilterUnit(), GetOwningPlayer( udg_earthbind_u ) )
set b[1] = IsUnitVisible( GetFilterUnit(), GetOwningPlayer( udg_earthbind_u ) )
set b[2] = GetUnitState( GetFilterUnit(), UNIT_STATE_LIFE) > .5
set b[3] = IsUnitType( GetFilterUnit(), UNIT_TYPE_STRUCTURE ) == false
set b[4] = GetUnitAbilityLevel( GetFilterUnit(), 'A04R') == 0
return b[0] and b[1] and b[2] and b[3] and b[4]
endfunction
То в оригинале совсем иначе, конечно весь копировать не стоило но и ваш вариант отпад...
код фрога
function ZJ4 takes nothing returns boolean
return SPI(GetFilterUnit()) == false and IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(XO)) and (A31(GetFilterUnit()) == false or IsUnitVisible(GetFilterUnit(), GetOwningPlayer(XO)) == true) and GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0.5 and IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false and GetUnitAbilityLevel(GetFilterUnit(), 'A04R') == 0 and GetUnitTypeId(GetFilterUnit()) != 'n00L'
endfunction
У фрога я что то таймеров в абилках не припомню, уже довольно интересно.
Потом вот это зачем?
//...
call DestroyBoolExpr( bE )
//...
Если что болекспры не утекают, нужно никаких локалок и удалений, это лишние дейтсвия которые бесполезны. Bergi_Bear, просто удобство чтобы не запутатся, но хеш от строки медленне чем просто целое число.
8gabriel8, руками и динамическими триггерами. Которые создаются в месте с объектом а затем удаляются, счетчик хендлов сначала растет, потом падает, и так по кругу, специально пррводил тесты со счетчиком хендлов.
Ну статистику еще дата менеджером делали давным давно, ну а взаимодесвие с сайтом лич уже сделал в своей доте с мемхаком, прост длл пишем там вирус который следит во что и когда юзер играет, время от времени сливаем инфу куда надо.
8gabriel8, мою карту дать? не, Там крипы лупят другдруга и плодятся, у них орб автоатака и пассивка по типу Reactive Armor из доты, работает и не лагает по 40 минут играли ни 1 намёка на просадку фпс.
» WarCraft 3 / Молнии
Кстати на сайте есть система которая сама двигает молнии за обьектами и делает затухание, на одном таймере.
» WarCraft 3 / УУУУ Функции
» WarCraft 3 / УУУУ Функции
» WarCraft 3 / Поясните функцию
Вампиризмы тоже никак не работают на урон нанесенный этой функцией не смотря на параметры, но эти параметры очень полезны при тригерном детекте урона на мемхаке, т.к можно проверить эти флаги урона.
» WarCraft 3 / Удаление событий из триггера.
Действия триггера могут быть удалены как обьект, так и очищены из триггера (но в памяти висеть они останутся), TriggerRemoveAction - удалит указанное действие, требует ссылку на действие (handle triggeraction), так же TriggerClearActions уберет у триггера все действия, но они будут существовать как хендлы, и потребуется их последущее удаление действием TriggerRemoveAction чтобы не плодить утечки.
Еще вопросы?
» WarCraft 3 / Создание триггерных иллюзий
» WarCraft 3 / Удаление событий из триггера.
» WarCraft 3 / Обнуление аргументов типа handle
» WarCraft 3 / Сюрв
Есть такие карты как ExtrimeCandyWars и BlizzardTD они открыты и написаны на гуях, смотрите и повторяйте, читайте комментарии авторов карт.
» WarCraft 3 / Обнуление аргументов типа handle
По сути аргументы - это обычные локалки, просто когда jass интерпритируется в asm код, там объявляются локалки-аргументы и вних сразу же пишется значение, а затем они зачищаются перед выходом, таков интерпритатор, можно было бы изи допилить и аргументы в каллбеки.
» WarCraft 3 / Выделение памяти при работе с хэш-таблицей
Карту кинь, потом гляну... Мб еще лич заинтересуется.
» WarCraft 3 / Выделение памяти при работе с хэш-таблицей
Тип string в JASS это хендл из таблицы строк, туда попадает все, по осторожнее со строками.
Ред. quq_CCCP
» WarCraft 3 / Способность Earthbind героя Meepo из DotA
Массивы локальные если что нужно обнулять, иначе будет утечка...
» WarCraft 3 / Скейл
Вам хочется сделать полет молнии в цель или что?
» WarCraft 3 / Не могу создать систему отлова урона при атаке, событии-Атакован
Нельзя просто так узнать кто кого ударил, вот нету такой функции, о том что один юнит ударил руками другого мы можем узнать лишь косвенно (в коде), т.к у нас есть событие - юнит атакован, которое срабатывает когда юнит начал атаку, еще даже не махнул ручками а просто сагрился на цель - уже сработало событие, при этом неважно ударит он или промажет, или цель вовсе к тому моменту умрет...
Ну у нас еще есть событие - юнит получает урон, оно не так удобно - т.к требует конкретно указанного юнита в отличии от события "юнит атакован", которе можно повешать на всех юнитов игрока ( EVENT_PLAYER_UNIT_ATTACKED), что удобнее т.к такое событие будет работат на всех юнитов указанного игрока и существующих и созданных в процессе игры.... Ну вернемся к событию - "юнит получает урон", оно срабатывает на фрейм ранее от того момента как юнит потеряет хп от урона, срабатывает на любой урон полученный указанным юнитом, проверить приэтом мы можем лишь кол-во урона (функция GetEventDamage()), источник урона (GetEventDamageSource()) ну и тот кто получил урон (GetTriggerUnit()), понять прост так нельзя урон это от атаки, от спелла или от баффа (вредные баффы наносят 0 урона при появлении и потере).
Далее уже люди реализуют проверки на тип урона с помощью костылей, тот пример что я тебе дал использует оба событие, когда юнит атакован - включается событие юнит получает урон, если после события атаки сработает событие урона - считай был удар, но это слишком багано, т.к сущетсуют промахи и другие источники урона.
Еще есть способ отличить физический урон от магического - сделать его отрицательным, вручая тому у кого будем отлавливать физ атаки, суть - рунные браслеты с фактором сниженного урона 2, весь магический урон полученный юнитом будет отрецательным, а положительным будет только чистый и физический (чистый в стандартных способностях практически не втречается, как и физический) ну а далее все просто, лечение от маг урона уберается так же триггерно, сначала ждем таймером 0.00 сек, потом возвращаем юниту хп которое было до отрец урона и тут же наносим ему еще урон маг типа, забирая пассивку резиста и отключая триггер, таким образом мы вернем все наместо и юнит получит маг урон в полном размере, как и должен без лечения (т.е мы блокируем лечение от отрец урона), ну а далее снова вручаем пассивку и врубаем триггер, дейтсвуем поновой....
» WarCraft 3 / Не могу создать систему отлова урона при атаке, событии-Атакован
Для начала тебе хватит, есть более продвинутые системы.
» WarCraft 3 / Не могу создать систему отлова урона при атаке, событии-Атакован
» WarCraft 3 / Способность Earthbind героя Meepo из DotA
У Фрога структур то почти нет, разве что то что делали его кодеры с нуля.
» WarCraft 3 / Функция, к-рая по выходу из вара чистит данные скиллов из таблиц
» WarCraft 3 / Дефолтные аттачи с кастов
» WarCraft 3 / Ещё немного интересных фишек
» WarCraft 3 / Способность Earthbind героя Meepo из DotA
Если у вас фильтр выглядит вот так:
Потом вот это зачем?
Bergi_Bear, просто удобство чтобы не запутатся, но хеш от строки медленне чем просто целое число.
» WarCraft 3 / Как отловить удар с орбом?
» WarCraft 3 / Мемхак и аналитика
» WarCraft 3 / Как отловить удар с орбом?