Вопрос ради облегчения раздумий. Идея такая: герою с атрибутом силы я хочу дать способность, которая бы пассивно ему давала бонус в виде части очков разума.
Я попытался реализовать это следующим образом (не повторяйте этого дома, умоляю) :
События - каждую секунду игрового времени
Действия:
Установить переменную "сила" = сила героя
Установить переменную "разум" = разум героя
Если/То/Иначе
  • Если уровень способности героя = 1, то:
  • Герой - Установить значение силы героя = ("разум"/3)+"сила"
  • Иначе: и так далее...
Результат немного шокировал, но был очевиден: ежесекундно с получения способности, герой получал сумму из трети своего разума и нового показателя силы. Я понимаю, где допустил ошибку, и прошу помощи в оптимизации сего опуса, а то сам я буду долго к этому идти. Пожалуйста!

Нужна переменная "Bonus"
Соб: изучает способность
Д: bonus = int / 3
герой установить силу равно bonus
Запустить триггер 2
Соб2: периодически
Д: герой установить силу равно текущая сила - bonus
Bonus = int / 3
герой установить силу равно текущая сила + bonus
По идее должно работать
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
Нужно считать не текущий разум, а разум без добавок. Добавки считать отдельно.
Ответы (6)
3
nazarpunk,
Разум тут как раз не меняется, менялась сила героя, причём бесконечно получала треть от разума. Этот бонус не зелёнка, а белый.
Я колеблюсь между подсчётом только белых показателей, и учётом ещё и зелёнки. То есть, тут в принципе нужна проверка текущего разума, с учётом шмоток, но получается так, что он ежесекундно себе начисляет атрибуты
30
TailsFox1, коль оно белое, то нужно хранить оригинальное количество разума отдельно.
38
TailsFox1, так ты меняешь ту же переменную, от которой берешь значение. Она и будет преобразовываться каждую секунду (я бы не делал секунду, хотябы 0.03 секунды)
Надо хранить где-то оригинальную величину. Или делать клона героя с теми же абилками и предметами вне игровой зоны, или делать силу виртуальной, меняя реальную. Или добавлять и вычитать при получении/утере абилки
3
ScorpioT1000, уф, ну и задал же я себе задачку. Не спорю, что допустил ошибку, когда поместил всё в один триггер: и проверку атрибутов, и их улучшение
28
TailsFox1, просто в юнита сохрани дополнительную силу, что он получал в последний раз. При следующей проверке удаляешь полученную силу и делаешь перерасчёт
38
rsfghd, будет то же самое, только на один тик таймера дольше) нужно убирать зависимость из функции от себя самой
3
А что, если моя ошибка у том, что я вписал это в переменную?
18
Нужна переменная "Bonus"
Соб: изучает способность
Д: bonus = int / 3
герой установить силу равно bonus
Запустить триггер 2
Соб2: периодически
Д: герой установить силу равно текущая сила - bonus
Bonus = int / 3
герой установить силу равно текущая сила + bonus
По идее должно работать
Принятый ответ
Ответы (7)
3
Borodach, мне кажется, результат будет тот же и оно будет в такой прогрессии накапливать атрибут (фактически, те же сани, только в профиль). Тут либо делать абилку активной на основе "канала", что нудно и не вяжется с идеей (потому что нужно, чтобы атрибут получал бонусы от другого с учётом всех плюсиков и отнимал соответственно), либо не выдумывать ничего столь сложного и просто забить
18
TailsFox1, Проверил, работает. Только первый триггер еще нужно отключать
3
Ах да, ещё мелочь заметил. В первом триггере написано "запуск триггера 2", но зачем, если до момента получения способности, переменная не равна ничему?
18
TailsFox1, Просто так "каноничнее" )). По сути, не работает таймер без нужды (по идее не должен)
3
Borodach,
Я проверил триггер. Да, безусловно, он работает, но я добавил пару изменений с учётом уровней способности. Да, герой получает силу за разум, но вот только получение предметов на разум не меняет ровным счётом ничего
3
Пардон, я болван и совершенно не умею читать. Спасибо, всё работает!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.