Сделал триггерную способность, которая отлично работает в соло-режиме. Но в мультиплеере баги-баги(
Суть способности: взаимосвязанные активная и пассивная способность
Способность 1: активная
Вешает некий дебафф на цель, кд = длительность дебафа
Способность 2: пассивная
Если, цель с дебафом атакована, то кастер получает баф. Если кастер (либо другой такой герой с этой же пассивой) атакует цель с дебафом, он получает по 2 силы и 2% скорости атаки за удар. Стакается до (2х уровень пассивы) раз. Если меняет цель - сила и АС пропадают.
Суть проблемы в мультиплеере:
Распределение силы, когда несколько "кастеров" атакуют цель с дебафом - баф силы распределяется между ними 2х уровень пассивы кастера раз. При смене цели, либо при окончании дебаффа сила минусуется у последнего получившего стак.
Вопрос: как правильно внести атакеров в массив так, чтобы сила распределялась каждому по условию пассивы? И правильно удалялась тоже :)

Принятый ответ

Всем спасибо, проблему решил за счет проверки на цвет/номер игрока как индекс в массиве переменных. Все работает как запланировано.
Вопрос вдогонку: как можно задавать сам индекс переменной-массива?)
З.Ы. Массивы конечно зло, но другого способа хранить инфо по одному спеллу, не используя множество переменных - пока не умею.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
24
9 лет назад
0
Когда кто-то получает бафф - увеличивать счётчик, обрабатывать BUFFCARRIER[счётчик] и запускать таймер. Точнее таймер запускать только если он уже не запущен.
Ну и когда он истекает - увеличивать счётчик 2 и обрабатывать BUFFCARRIER[счётчик2]
Хотя нет стоп, так лажа получится. Мильон таймеров создавать тоже не фонтан.

Через локальё здесь надо кароч. Либо зафигачить через custom value юнитов.
Заносим в группу, устанавливаем TIMEBUFF[Cv юнита]=скок надо, добавляем в группу Buffs и запускаем периодический триггер, который выбирает всех в группе Buffs, уменьшает их TIMEBUFF[Cv юнита] и устанавливать уровень способности баффа исходя из суммарного времени баффов и длительности 1 стака. например если бафф длится 5 единиц времени, то ставить уровень способности = TIMEBUFF[Cv юнита]/5 +1.
Стаки будут удаляться послойно, так что норм всё будет выглядеть
0
25
9 лет назад
0
А не проще все тупо перенести на jass+hash, а не насиловать себе мозг массивами?
0
24
9 лет назад
0
Ancient, в данном случае - скорее всего проще.
0
28
9 лет назад
0
Ancient, в данном случае проще структуры ибо у нас есть ярко выраженные объекты
а ооп и нужно для оперирования объектами(ваш кэп)
0
11
9 лет назад
Отредактирован Impertus
0
Ancient:
А не проще все тупо перенести на jass+hash, а не насиловать себе мозг массивами?
Конечно проще, только в джасс я пока что не умею, а без мультиплеера работает на отлично.
Melissa:
Заносим в группу, устанавливаем TIMEBUFF[Cv юнита]=скок надо, добавляем в группу Buffs и запускаем периодический триггер, который выбирает всех в группе Buffs, уменьшает их TIMEBUFF[Cv юнита] и устанавливать уровень способности баффа исходя из суммарного времени баффов и длительности 1 стака. например если бафф длится 5 единиц времени, то ставить уровень способности = TIMEBUFF[Cv юнита]/5 +1.
Стаки будут удаляться послойно, так что норм всё будет выглядеть
Это хорошо, только стаки вообще не привязаны к бафу. Т.е. можно быть на другом конце карты, и получать баф. Стаки силы+АС сохраняются пока не ударишь цель без дебафа. И сила добавляется триггерно, пробовал через способность, но ей почему-то уровни не меняло, несколько раз проверял, возможно потому что у героя уже есть такая же способность, только "герой" ранка и она перевешивает "воин" ранка.
Думаю не мучиться и поставить набор стаков только для кастера с запретом обновления\перекаста дебафа от других юнитов. Но может быть можно и с этим что-то сделать?
Еще есть вариант напихать кучу циклов с проверками на номер игрока, т.к. герой будет максимум один на игрока.
0
29
9 лет назад
0
Конечно проще, только в джасс я пока что не умею, а без мультиплеера работает на отлично.
делай хэш на гуи тогда. чё сложно что ле?
0
11
9 лет назад
0
Всем спасибо, проблему решил за счет проверки на цвет/номер игрока как индекс в массиве переменных. Все работает как запланировано.
Вопрос вдогонку: как можно задавать сам индекс переменной-массива?)
З.Ы. Массивы конечно зло, но другого способа хранить инфо по одному спеллу, не используя множество переменных - пока не умею.
Принятый ответ
0
24
9 лет назад
0
только стаки вообще не привязаны к бафу
Уровень баффа отловить нельзя. Так что хоть что-то придётся привязывать, переменную или способность.
Impertus:
как можно задавать сам индекс переменной-массива?)
что именно ты имеешь ввиду. Пример.
0
11
9 лет назад
Отредактирован Impertus
0
Melissa:
Impertus:
Уровень баффа отловить нельзя. Так что хоть что-то придётся привязывать, переменную или способность.
Я сразу привязываю переменную HauntLevel к уровню пассивы атакующего, карту зачем прилагал(
как можно задавать сам индекс переменной-массива?)
что именно ты имеешь ввиду. Пример.
Переменная массив - Variable[Index]. Можно ли как-то задавать заранее (при старте игры)значения Index для, допустим, 6 значений в массиве - что индекс может быть от 1 до 6? Только громоздкими if-else-do и то на один раз?
З.Ы. Карту с решением прилагаю, может кому понадобится
Загруженные файлы
0
24
9 лет назад
0
Так что насчёт
Melissa:
как можно задавать сам индекс переменной-массива?)
что именно ты имеешь ввиду. Пример.
2
28
9 лет назад
2
Массивы конечно зло
чито?
а что тогда не зло
массивы это основа математики и программирования
0
11
9 лет назад
0
nvc123:
Массивы конечно зло
чито?
а что тогда не зло
массивы это основа математики и программировании
Вон выше на хэш да джасс уповают).
Ну ладно, вопрос закрыт, вопросов больше не имею)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.