Стас Орлов, по подробнее, что вы хотите сделать? Что значит "скейлющуюся от чего либо?", куда что и как должно расстягиватся?
Вам хочется сделать полет молнии в цель или что?
Мне просто срочно нужно это, так я хоть буду иметь большое и дальнейшей представление о том как он отлавливается, разжуйте мне пожалуйста
Что значит как? Это помойму разжевано везде, но блин в сотый раз...
Нельзя просто так узнать кто кого ударил, вот нету такой функции, о том что один юнит ударил руками другого мы можем узнать лишь косвенно (в коде), т.к у нас есть событие - юнит атакован, которое срабатывает когда юнит начал атаку, еще даже не махнул ручками а просто сагрился на цель - уже сработало событие, при этом неважно ударит он или промажет, или цель вовсе к тому моменту умрет...
Ну у нас еще есть событие - юнит получает урон, оно не так удобно - т.к требует конкретно указанного юнита в отличии от события "юнит атакован", которе можно повешать на всех юнитов игрока ( 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 намёка на просадку фпс.
Нет списка нету, т.к у каждой абилки описано взпимодествие со всеми типами сайленса \блокировки, на вскидку не блокируются все ауры, перерождение, все статы и прямые бонусы.
Ненадо использовать вейты, особенно в циклах, они ломают поток, потом еще и длятся черт знает сколько, вейты нужны для синхронизации и роликов, и то с учетом всех нюансов.
Replay sekker и аналоги могут такое, ну реплей считай список команд что и когда делать на карте % весь чат за игру, подробнее где то было на сайте описание формата если найду кину ссылку позже.
У итемов мнимый кулдауниндикатор, а не собственный как у абилок , предмет одого типа с параметром способность чето там (забыл как называется это поле) , будет шарить кулдаун на все такие предметы независимо от их ид абилок. Удалять предметы бестолку кд хранится у владельца, сбросить кулдаун у одного предмета нельзя без мемхака, удалите инвентарь - выпадут на землю все итемы, вручите снова - кд тут как тут, так что не ищите способы, они уже найдены - start ability cooldown на мемхаке.
Сударь вы очем, экстрасенсы в отпуске. Подробно что хотите сделать и код сюда,то вы какую-то ахинею пишите, какие параметры, какие триггеры, что? Зачем? Ничего не понятно....
Ред. 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 / Как отловить удар с орбом?
» WarCraft 3 / Не блокируется способность + не реагирует на зависимости.
» WarCraft 3 / Не блокируется способность + не реагирует на зависимости.
» WarCraft 3 / Не блокируется способность + не реагирует на зависимости.
» WarCraft 3 / Способность
Ред. quq_CCCP
» WarCraft 3 / Wait в циклах
» WarCraft 3 / Формат файла сохранения игры.
» WarCraft 3 / Сброс перезарядки предмета.
» WarCraft 3 / Возможно Ли В передаче параметров передать лишь часть параметров
» WarCraft 3 / как сделать щит?
» WarCraft 3 / Сброс перезарядки предмета.
Ред. Raised
» WarCraft 3 / Не могу создать систему отлова урона при атаке, событии-Атакован
» WarCraft 3 / Сброс перезарядки предмета.
Мемхак в помощь.