Есть юнит с таймером истечеия, который кастует спелл. Во время его каста, цели заклинания должен наносится триггерный урон зависящий от статов. Но как только юнит удаляется, нужно чтобы урон перестал наносится. Вопрос: можно ли использовать таймер истечения этого юнита, не создавая новый и как это сделать?И еще один вопрос, какие есть способы повесить на юнита эффект, который будет виден только если он выйдет из инвиза (кроме баффа)?
IsUnitInvisible() //- проверяет невидимость IsUnitDetected() //- если его палят
Добавлено (31 Августа 2015, 23:42:51) --------------------------------------------- Хотя вряд ли тебе помогут, лучше пилить свою систему проверок инвиза. Проверять получиться только наличием баффа или абилки, но хотя можно поискать, мб где-то есть нативка, которая позволяет просматривать логику невидимости юнита от абилки. хммм
Сообщение отредактировал Волчачка - Понедельник, 31 Августа 2015, 23:30:35
Нужно чтобы эффект видел сам игрок, пока его герой в инвизе. Как в вовке, короче. Пока бежишь - следоом за тобой эффект, перестаешь бежать и начинаешь атаковать - становишься видимым и эффект исчезает. Сделать это баффом яснопонятно что можно, но интересны другие способы. Я к тому, что
Цитата
IsUnitInvisible() //- проверяет невидимость IsUnitDetected() //- если его палят
Нужно чтобы эффект видел сам игрок, пока его герой в инвизе. Как в вовке, короче. Пока бежишь - следоом за тобой эффект, перестаешь бежать и начинаешь атаковать - становишься видимым и эффект исчезает. Сделать это баффом яснопонятно что можно, но интересны другие способы. Я к тому, что Цитата IsUnitInvisible() //- проверяет невидимость IsUnitDetected() //- если его палят
не канает.
Тогда есть такое предложение, сделать моделку эффекта, которая будет позади героя, c прикреплением к chest,origin, или head.. Ну суть, что будет казаться, что эффект следует за героем. И не надо будет никаких даммиков, если конечно же эффект не должен быть видим всем. Хотя если тебе нужен дамик то тебе придётся организовать систему сотоящую с абилок постоянной невидимости где идут регистры на, которые проверяют данного юнита и сравнивают.. дальше кокококо...
Вопрос: можно ли использовать таймер истечения этого юнита, не создавая новый и как это сделать?
Добавлять в группу юнитов
Добавлено (01 Сентября 2015, 18:57:34) --------------------------------------------- используй вот это: if GetLocalPlayer( ) == Player( N ) then Создать дамми-юнита... endif //Созданный дамми-юнит будет виден только игроку N.
Ps: этой функции в гуи нет, если конечно ты сам не добавил её через TriggerString/Data. Придётся писать через Custom Code (Нестандартный Код).
Тискаю клаву... остальных пока некогда!
Сообщение отредактировал Kaotika - Вторник, 01 Сентября 2015, 18:58:48
Каждый раз когда ты пишешь всякую вот такую фиготень или твой "шифр", я вспоминаю свои попытки выучить нипонский 3 года назад. Я знаю 3 слова на Японском.
Добавлено (01 Сентября 2015, 20:14:55) --------------------------------------------- Кстати гугл перевел в том что ты написал только "горло" и "для".
Есть юнит с таймером истечеия, который кастует спелл. Во время его каста, цели заклинания должен наносится триггерный урон зависящий от статов. Но как только юнит удаляется, нужно чтобы урон перестал наносится. Вопрос: можно ли использовать таймер истечения этого юнита, не создавая новый и как это сделать?
Мне вот не понятно, зачем тебе даммик с истечением, когда ты вполне можешь удалять его вручную... ну раз у тебя какие-то трудности с ним
Ты хочешь прекратить наносить урон когда даммик умрёт, НО наносишь урон ТРИГГЕРНО ... что мешает проверять умер ли даммик? либо вообще убивать даммик вручную и прекращать наносить урон...
Использовать таймер истечения жизни юнита без создания нового? эмм Запаузить старый и запустить новый... ну или например лишить даммика этого баффа (истечение жизни юнита это вроде бафф же, не?)
ЦитатаSamedy_ ()
какие есть способы повесить на юнита эффект, который будет виден только если он выйдет из инвиза (кроме баффа)?
Тебе нужно видеть повешанный на юнита эффект? но сам эффект будет виден только если юнит не умеет инвиз?
Наверняка тут будет как у Сларка, только наоборот: юнита видно - даёшь эффект, иначе - отбираешь
if GetLocalPlayer( ) == Player( N ) then Создать дамми-юнита... endif //Созданный дамми-юнит будет виден только игроку N.
И вызываем desync
ЦитатаSamedy_ ()
Каждый раз когда ты пишешь всякую вот такую фиготень или твой "шифр", я вспоминаю свои попытки выучить нипонский 3 года назад. Я знаю 3 слова на Японском.
Писать код для сжатия 2-ух символов во 1 символ трудно и кто-му же умещать ещё туда это - будет ли буква загавная, пробел и знаки препинания, но я этого пока не делал. Попробую удимать слова во 1 символчик.
Мб спросим дуоса?
Сообщение отредактировал Волчачка - Среда, 02 Сентября 2015, 03:16:59
Объясняю что такое десинх в моих любимых футах, именно оттуда я понял что это такое. Играешь себе такой, играешь и тут происходит десинхронизация. В итоге (на примере футов) игроки разделяются на 2 группы. При этом, может произойти так, что всего 1 человек попадает в 1 группу, а остальные 11 в другую. Тот ломает домики каждого игрока, выигрывает и у всех других вылетает игра, а ему победка. Или еще такой не приятный момент: играешь тимой, ты сапортный гер, в итоге тиммейт на кор. роли "улетает в десинх" и ты остаешься один в своей игре против других более сильный героев. Итог - игра испорчена, спасибо десинху.
непонятно. Но короч вот как действует 'десинх': if GetLocalPlayer( ) = Player( N ) then CreateUnit.... endif Этот созданный юнит будет виден только для игрока N и ни для кого другого. То есть данные созданного юнита будет обрабатывать только игрок N. ................................................................................................... Да и вообще в своих WoWInterface системах я использовал десинх. И, тестируя в локал. сети не происходило ничего странного ( при чём тест был на 2а игрока).
Этот созданный юнит будет виден только для игрока N и ни для кого другого.
Ну, именно это и есть. Одни видят как герой дерется и покупает шмотки, а другие видят как он бегает и сливается. Все это происходит в одном и том же месте, но разные игроки видят совершенно разные вещи.
Ну и что?! Катастрофических последствий я не испытывал с этим фильтром.
Создаёся оъект для игрока 1 на его компьютере и ему присвается id = L[n] А друго какой-нить другой объект создаётся вне локала и у других тоже и их id =A[n] локального и не локальных A[n]=L[n] при тому, что они разные юниты считай даже если у них один и тот же тип. Ну того игрока A[1,n] != A[2..12,n] И поэтому произойдёт десинк. Как же поступить? Дать особую невидимость для объекта не используя GetLocalPlayer(), + 2 типа героя с типом самоубийца и без этого типа, и всё это меняем тёмным.. Ведь всё таки есть возможность взять пользу из редактора объектов и небольшой силой JASS.
if GetLocalPlayer( ) = Player( N ) then CreateUnit.... endif
ЦитатаSamedy_ ()
Играешь себе такой, играешь и тут происходит десинхронизация. В итоге (на примере футов) игроки разделяются на 2 группы
Смотрю я в экран, а там все *********
Для тех, кто в танке Алсо как обычно предложу говноедский вариант не видя ничего плохого в таймере, у которого либо время срабатывания будет равным времени жизни юнита(запуск с параметром false вроде), после которого прекращать дамаг. Либо в периодическом таймере(параметр true) и дамажить. Ах да, если нужен визуальный эффект для конкретного игрока, то и создавай его через AddSpecialEffect, только в GetLocalPlayer модель ему выставь, как в статье описано
Алсо как обычно предложу говноедский вариант не видя ничего плохого в таймере, у которого либо время срабатывания будет равным времени жизни юнита(запуск с параметром false вроде), после которого прекращать дамаг.
Можно увидеть наглядный пример? Пожалуйста. Или ты имеешь в виду просто создавать отдельный таймер? Я думал что можно использовать таймер истечения, не создавая других.
Сообщение отредактировал Samedy_ - Среда, 02 Сентября 2015, 20:18:59
Для тех, кто в танке Алсо как обычно предложу говноедский вариант не видя ничего плохого в таймере, у которого либо время срабатывания будет равным времени жизни юнита(запуск с параметром false вроде), после которого прекращать дамаг. Либо в периодическом таймере(параметр true) и дамажить. Ах да, если нужен визуальный эффект для конкретного игрока, то и создавай его через AddSpecialEffect, только в GetLocalPlayer модель ему выставь, как в статье описано
Можно увидеть наглядный пример? Пожалуйста. Или ты имеешь в виду просто создавать отдельный таймер? Я думал что можно использовать таймер истечения, не создавая других.
В один таймер можно повесить сразу две функции, т.е. дать ему два шага проверки. И флаг завершения и всё это можно закатить LoadInteger\SaveInteger().
В один таймер можно повесить сразу две функции, т.е. дать ему два шага проверки. И флаг завершения и всё это можно закатить LoadInteger\SaveInteger().
да хоть через TimerExploit играйся, проблема будет в том, что флаг нужно иметь глобальный, чтобы иметь возможность чекать его в оригинале и коллбеке(для варианта с true), а это ставит MUI под угрозу
ЦитатаSamedy_ ()
Я думал что можно использовать таймер истечения, не создавая других.
офк так было бы кошернее, если можно было его перегрузить
ЦитатаSamedy_ ()
Можно увидеть наглядный пример? Пожалуйста.
я с картостроя ущёл ещё в году 13, мало что помню вообще после UnitApplyTimedLife надо отлавливать событие разложения юнита(он в этот момент удаляется), можно туда попробовать проверку на id вгонять и выключать дамаг, вариантов много я бы вообще сделал всё таймером одним(создавал вне таймера, если много добавлял бы в группу, в функции таймера бы дамажил и сверял счётчик/флаг и блочил всё) типа такого:
Код
unit casterUnit = CreateUnit(); real interval = .5; integer maxCounter = 5; integer currentCounter = 0;
StartTimer(CreateTimer(), interval, true, lambda() { timer resTimer = GetExpiredTimer(); if (currentCounter < maxCounter) { DealDamage(); // пилим дамагу currentCounter++; } else { currentTimer = 0; PauseTimer(resTImer); DestroyTimer(resTimer); RemoveUnit(casterUnit); resTimer = null; // всем известно, что в jass нет нормального GC } });
написал абстрактно и на cJass(как помню), да и вообще где-то промазать мог итого получим таймер, работающий каждые пол секунды 5 раз можно попробовать получить MUI обернув это в структуру и создавать каждый раз при касте
El Psy Congroo
Сообщение отредактировал DragoN - Четверг, 03 Сентября 2015, 00:42:14
Есть ли в этом смысл, если каждый скилл может быть только у одного персонажа, а конкретный персонаж только у одного игрока?
при любом раскладе скилл будет единственный на карте? разве только если кд скилла меньше времени его процесса или ботов писать будешь а так не особо имеет, можно хоть глобальный флаг юзать можешь не заморачиваться и заюзать мой код сверху без структур тогда, думаю