Всем доброго времени суток, подскажите пожалуйста: у меня есть стандартный ИИ на развитие, и он строит только одного героя.
И этому герою нужно дать предметы (как будто бы он их сам купил): к примеру спустя 100 сек дать первый предмет, спустя 300 сек второй предмет, и спустя 600 сек третий предмет. Проблема в том, что этот герой может быть мёртвым на момент выдачи предмета...Как можно реализовать данную механику без багов?
Может есть карта с примером у кого-нибудь

Короче, вот тебе наработка.
Первый триггер отвечает за появление героя (если у компа есть выбор кого нанять, то ты будешь давать шмотки первому герою, которого он купит, но для себя ты можешь изменить этот триггер). Если игрок может купить несколько героев то добавь действие отключить этот триггер.
Так-же запускаем таймер до выдачи предмета (окно чисто для теста, у себя ты можешь удалить это действие).
Далее уже шаблон каждого триггера, где проверяем, если герой мертв или инвентарь заполнен - то запустить таймер еще раз. Иначе выдаем предмет, выключаем этот триггер, запускаем таймер и запускаем следующий триггер на следующий предмет. Второй триггер с предмет будет абсолютно такой-же, и так по цепочке.
Можно, конечно, сделать один триггер на все предметы, усложнив систему, добавив переменные времени, предметов за счет использования массивов. Могу показать как.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
25
Ну триггерно естественно. Цепочка триггеров с таймером. Если герой мертвый - запускай таймер на 5 секунд чтобы этот триггер снова запустился и снова проверил жив ли герой и если жив выдал предмет. Если нет - снова на 5 сек запуск таймера.
Уловил идею? Знаешь как работать с таймерами?
Ответы (5)
12
konvan5,
Примерно знаю. Тут много всяких но... А если у героя уже заполнен инвентарь? И как остановить этот триггер после того, как герою уже выдан предмет? Или может как-то можно проверить, есть ли у героя уже такой предмет в инвентаре и тд.
25
FIRERANGER, остановить триггер - выключить триггер)
По поводу полного инвентаря - ну после такого запускай таймер на 30 секунд чтобы снова чекнуло, если есть место то выдаст.
25
FIRERANGER, и зачем проверять, если есть такой-же предмет. Типа ну нашел герой такой-же предмет, и? Ты же хочешь выдать конкретные предметы в течении времени независимо от того, что он находит. Или для тебя это важно?
21
FIRERANGER, FIRERANGER, создай простую переменную "да" "нет". Для каждого слота. Если герой получает предмет в слот 1, то пиши ее как да, если выбрасывает то нет. Так, для каждого слота 6 слотов. ( будет шестиэтажка из "если")
Как и было сказано выше проверяй, жив ли герой.
Можешь и вовсе сделать невидимого даммика и давать предметы ему вместо героя, когда он мерт,в а когда воскрешается, то забирай триггерно у даммика и отдавай герою. От того, что у него будут заняты слоты и предметы появятся под ногами не особенно страшно. Ну или вовсе, нефиг было умирать, если раздают предметы. У меня так герой - оборотень обламывался с превращением, когда был мертв)
25
SсRealm, по поводу слотов все делается проще, проверяется есть ли предмет в каждом слоте. И если хотя бы 1 свободен то через ИЛИ мы получим Да.
43
Есть действия ожидания, пока не будет выполнено условие. Называется "Пауза/Ожидать/Wait - пока не будет выполнено условие" = какое то время (к примеру 1 сек.).
И запускаем это действие под событие, что прошло N-сек игры, и после выполнения ожидания под условием - выдача предмета. Если герой будет мертв или что то ещё, то предмет не получит герой, пока условие не соблюдётся. Тут нужно учитывает много условий, заранее думай или делай проверочный триггер.
25
Короче, вот тебе наработка.
Первый триггер отвечает за появление героя (если у компа есть выбор кого нанять, то ты будешь давать шмотки первому герою, которого он купит, но для себя ты можешь изменить этот триггер). Если игрок может купить несколько героев то добавь действие отключить этот триггер.
Так-же запускаем таймер до выдачи предмета (окно чисто для теста, у себя ты можешь удалить это действие).
Далее уже шаблон каждого триггера, где проверяем, если герой мертв или инвентарь заполнен - то запустить таймер еще раз. Иначе выдаем предмет, выключаем этот триггер, запускаем таймер и запускаем следующий триггер на следующий предмет. Второй триггер с предмет будет абсолютно такой-же, и так по цепочке.
Можно, конечно, сделать один триггер на все предметы, усложнив систему, добавив переменные времени, предметов за счет использования массивов. Могу показать как.
Загруженные файлы
Принятый ответ
Ответы (2)
12
konvan5, о, отлично, спасибо! И также можно для всех игроков сделать?
Только добавить доп таймер, и доп переменные?
В принципе через больше количество триггеров тоже хорошо, главное работает!
А сложно ли сделать ещё так: проверять каждые 50 сек если ли у героя зелье здоровья и не заполнен ли его инвентарь, и если нет зелья, то давать ему это зелье (типа он сам его покупает) ... Или тут уже триггерами так не настроить
25
FIRERANGER, да можно так для всех игроков, в отдельную папку закинь триггеры эти да и все.
По поводу зелек ну не проблема, можешь даже запилить один общий таймер для всех игроков, каждые 50 сек чекать.
В целом советую такие вещи делать через циклы и массивы. К примеру героев можно занести в массив. Так тебе просто меньше строк триггеров придется писать. Когда запускаешь цикл для всех игроков для каждого героя чекнуть зельки и инвентарь и дать этому герою зельку если надо.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.