Хотелось бы знать какие пути решения без использования отдельных массивов/хэштэйбла видит кто-либо для разрешения ситуации следующего характера:
Скилл поражает цели в выбранной зоне и оставляет даммика, находясь возле которого юниты, задетые заклинанием, получают урон. В один момент времени может существовать хоть с десяток таких даммиков, но они должны наносить повреждения лишь целям, задетыми заклинанием их создателя. Проверка на бафф не актуальна, поскольку два таких кастера будут перебивать баффы друг друга.
В данный момент под каждый каст скилла выделяется перерабатываемая группа на время жизни этого скилла, которая содержит юнитов, задетых этим конкретным кастом, а также группа, содержащие все цели, пораженные этими же заклинаниями кастера. Поскольку нельзя добавить в группу юнита, который уже содержится в ней, нерешенным остается вопрос о том, как же удалять юнита из второй группы, только когда он не содержится в первых группах. Сейчас на ум приходит только выделение, скажем, 64 перерабатываемых элементов параллельных массивов юнит+интегер, куда в интегер записывается число групп, в которых содержится юнит. Солюшн весьма хреновый, поскольку придется каждый раз искать этого юнита в 64 элементах массива...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
22
7 лет назад
0
Для мгновенного урона также есть два даммика, которые постоянно меняют владельца перед нанесением урона. Первый - для блокируемого урона, второй - для не блокируемого.
При чём тут владелец
Когда урон надо наносить от определённого юнита - кастера, т.е. героя в данном случае
Proshel_Doty:
Я бы так не делал, хотя бы потому, что тогда такой предмет как Octarine Core как в доте2 (ну суть понятна - хилит от способностей) не будет просто хилить героя из-за того, что не он наносит урон.
0
20
7 лет назад
Отредактирован Diaboliko
0
При чём тут владелец
Когда урон надо наносить от определённого юнита - кастера, т.е. героя в данном случае
Proshel_Doty:
Я бы так не делал, хотя бы потому, что тогда такой предмет как Octarine Core как в доте2 (ну суть понятна - хилит от способностей) не будет просто хилить героя из-за того, что не он наносит урон.
Поскольку я знаю что даммика создал конкретный юнит под нужды нанесения урона - я утверждаю что урон, в итоге, наносит этот конкретный юнит. Если я захочу прохилить этого юнита - у меня есть ссылка на него в UnitUserData даммика.
Однако я бы предпочел услышать в этом конкретном топике мысли по решению возникшей у меня задачи. Если хочется дальше поспорить о превосходстве гибкости метода нанесения всего магического урона от даммика против нанесения урона от того же юнита - пиши в ЛС.
0
28
7 лет назад
0
Diaboliko, насколько я понял ситуация следующая
есть 2 юнита-кастера C1 и C2 являющихся союзниками
C1 кастует этот спел и задевает вражеского юнита T
создаётся даммик D1
C2 кастует этот спел и не задевает вражеского юнита T
создаётся даммик D2
в результате D1 наносит урон T если T находится в радиусе досягаемости D1
и D2 наносит урон T если T находится в радиусе досягаемости D2
да или нет?
0
20
7 лет назад
0
в результате D1 наносит урон T если T находится в радиусе досягаемости D1
и D2 наносит урон T если T находится в радиусе досягаемости D2
да или нет?
Это как раз тот солюшн, которого я хочу избежать. D2 не должен наносить урон T, поскольку сам каст его не задел. Такое поведение в данный момент реализовано в рамках каждого каста. Если каст задевает юнита - даммик этого каста будет наносить задетому юниту урон. Сабж в том чтобы если персонаж применяет дважды этот скилл и задевает противника T лишь одним из них, то даммики D1 и D2, созданные по итогам применения обоих кастов наносили этому юниту урон. Проблема именно в ведении счета того, сколько раз юнит был добавлен в эту "глобальную" группу, содержащую всех юнитов, которых своими кастами задел этот персонаж.
В прочем, спустя два дня тыканья палкой, я уже уверен что "красивого" решения здесь нет. Разве что я что-то упускаю...
0
26
7 лет назад
Отредактирован Hate
0
в результате D1 наносит урон T если T находится в радиусе досягаемости D1
и D2 наносит урон T если T находится в радиусе досягаемости D2
Сабж в том чтобы если персонаж применяет дважды этот скилл и задевает противника T лишь одним из них, то даммики D1 и D2, созданные по итогам применения обоих кастов наносили этому юниту урон.
разве это не противоречие самому себе?
лично мне до сих пор непонятно как должно работать и как работает сейчас.
0
20
7 лет назад
0
разве это не противоречие самому себе?
В первой цитате говорилось о двух разных кастерах.
Сейчас касты работают каждый сами по себе(задел кастом - даммик будет дпсить), но от задевания одним кастом, даммику, появившемуся от другого каста, ни горячо, ни холодно.
Этот комментарий удален
0
29
7 лет назад
0
Кто-нибудь уже объяснил зачем нужна глобальная группа?
Есть такое понятие как скоупинг. В чем проблема использовать одну группу на один каст? Я что-то не так понял?
0
26
7 лет назад
0
Doc:
Кто-нибудь уже объяснил зачем нужна глобальная группа?
Есть такое понятие как скоупинг. В чем проблема использовать одну группу на один каст? Я что-то не так понял?
Hate:
и зачем тебе 2 группы? храни одну на каждого игрока
я с самого начала задал этот вопрос
0
20
7 лет назад
Отредактирован biridius
0
Сабж в том чтобы если персонаж применяет дважды этот скилл и задевает противника T лишь одним из них, то даммики D1 и D2, созданные по итогам применения обоих кастов наносили этому юниту урон.
Создавать группу для каждого кастера в которой хранить задетых юнитов
Каждую сек. очищаем группу, далее каждый даммик перебирает юнитов вокруг себя добавляя их в группу, затем каждый даммик перебирает группу нанося урон
0
20
7 лет назад
Отредактирован Diaboliko
0
Doc:
Кто-нибудь уже объяснил зачем нужна глобальная группа?
Есть такое понятие как скоупинг. В чем проблема использовать одну группу на один каст? Я что-то не так понял?
Одна группа на один каст имеется. Глобальная группа выделяется для каждого такого юнита дабы при добавлении в первую группу, юнит также добавлялся в глобальную. При поиске целей для нанесения урона от даммика используется глобальная группа(дабы обеспечить желаемый эффект двух войд-зон, дамажащих юнитов, задетых хотя бы одним кастом своего кастера). Первая упомянутая в этом посте группа (назовем ее локальной, т.к. используется в рамках 1 каста) нужна для удаления из глобальной всех юнитов, содержащихся в ней(своего рода удаление дебаффа без использования оного).
Опять же - единственный солюшн, который я вижу - использовать 2 параллельных массива(юнит+интегер), где массив юнитов заменит глобальную группу, а параллельный этому массиву массив интегеров будет работать как счетчик. Недостаток этого метода в необходимости искать задетых каждым следующим кастом юнитов из массива юнитов.
Если этого описания все еще недостаточно, то пора закрывать эту тему -_-
В общем, прибегнул к эмуляции группы юнитов через цикл + два параллельных массива, пространство которых выделяется под кастеров этого заклинания.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.