Всем привет, уже всю голову сломал что можно сделать. Делаю периодический урон на юнитах через хэш-таблицу, и условно говоря - 1 заклинание добавляет в таблицу саму цель заклинания и на нем все работает. Второе заклинание - юнит делает несколько прыжков, соответственно цель прыжка выбирается из рандомного юнита рядом и заносится в переменную, а мы не можем получить Key юнита из переменной, так как ее нельзя выбрать, и потому юнит добавляется в пустую группу и получается Key уже 1 случайного юнита из этой группы. И вот по проверке - он находит юнита в группе с дебафами, но не записывает его в хэш таблицу. Что может быть еще не так?

Для этих Key, а скорее всего это GetHandleId(), используй триггер юнита, истекшего таймера (если триггер по таймеру) или This Trigger, то есть "триггер триггера")) Соответственно сохраняй/загружай данные в таблицу/из таблицы по вышенаписанному принципу. Всякие случайные и прочие нестабильные вещи лучше не использовать для такого) чревато неработоспособностью
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
23
Принятый ответ
Для этих Key, а скорее всего это GetHandleId(), используй триггер юнита, истекшего таймера (если триггер по таймеру) или This Trigger, то есть "триггер триггера")) Соответственно сохраняй/загружай данные в таблицу/из таблицы по вышенаписанному принципу. Всякие случайные и прочие нестабильные вещи лучше не использовать для такого) чревато неработоспособностью
4
EugeAl, как раз да, не работоспособничает. В таком случае создавать даммика, и уже к нему привязывать значения в хэш таблице? Соответственно если целей на которых наложен периодический урон, по ним циклом пробегаться проверять, у кого сохранено значение?
30
LosKalmaros, уже триста раз разжёван принцип привязки данных а таймер. Но нужно упорно изобретать костыли.
23
LosKalmaros, если периодический урон, то можно сделать это через триггер с истечением таймера, и сохранять/грузить по ключу таймера.
Если в триггере 1 создаётся дамми и каст
И в триггере 2 идёт отлов каста дамми и действия
То тогда сохраняй ключ от дамми, но дамми должен быть жив на момент Загрузки ключа
И так далее и тому подобное.
Короче говоря, для ключей используй те вещи, которые точно могут быть определены в триггере именно к этому триггеру
Никаких переборов не надо. Это костыль, и плохой костыль, как верно сказано выше.
Надеюсь, понятно))
4
EugeAl, Периодический урон делал через запуск триггера с событием every 1 second of the game, который активировался после наложения эффекта, и пробегался по всем юнитам с эффектом из таблицы и затем вычиталось сколько осталось секунд и по истечению юнит удалялся из группы на ком должен быть дебаф и нанесение урона.
Сейчас как написал ниже через кастомный скрипт напрямую заношу юнита в хэш таблицу и все проходит
10
Вот видосики по которым я учился в первый раз, сейчас для меня уже хеш-таблицы это просто, как H2O
30
Tredor46, хт довольно простая структура данных. Что там может быть сложного то?
30
Tredor46, посмотрел видео. Всё по заветам товарища Гоблина.
10
nazarpunk, да пофиг, главное я разобрался с началом, а дальше сам научился
28
Юзай стек на массивах, будет легче хэштаблицы, тем более, что для работы с ней не хватает функционала на гуи
10
rsfghd, ладно, кажется у меня просто знаний не хватает, разберусь
10
rsfghd, тьфу ты, я не в то место ответил
Вот что я хотел спросить ---
А на это гайд есть где-нибудь? Я не умею, знаю массивы, но не знаю как ими заменить таблицу, чтобы это было проще
10
rsfghd, Большое спасибо что уделили мне время, я посмотрел, всё понял как работает, но у меня ещё остались вопросы (но уже немного другие), я сейчас занят немного и задам их ближе к ночи или завтра, ещё раз спасибо
10
А на это гайд есть где-нибудь? Я не умею, знаю массивы, но не знаю как ими заменить таблицу, чтобы это было проще
4
В общем получилось через отдельную кастомную строчку "set udg_JG_BleedId = GetHandleIdBJ(udg_JG_BleedUnit)" записать в хэш таблицу юнита из переменной и все стакается. Единственное будут ли от такого использования проблемы в дальнейшем?
23
LosKalmaros, Ну, раз уже джасс пошел, это к лучшему)
Для начала вместо GetHandleIdBJ можно просто написать GetHandleId
Проблемы будут, если в триггере будет вейт или другое отложенное время. Тогда udg_JG_BleedId может быть перезаписана от новой реакции этого же триггера, например)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.