Skip to main content

Поход в "Лес" (базовые механики)

Ищите как создать бот в Телеграм с механикой похода в лес? В этой статье мы расскажем как создать бот с механикой похода в Лес с помощью @MenuBuilderBot. Мы раскроем БАЗОВЫЕ принципы игровой механики получения игроком предметов и урона персонажа в течение случайного отрезка времени.

Надо понимать, что самих базовых принципов не достаточно для создания КАЧЕСТВЕННОЙ ИГРЫ "с погружением", однако понимая основы - вы можете приложить их к вашему конкретному проекту в той форме в которой вам это нужно. Для создания необходимого антуража, базовая игровая механика должна быть окружена и обоснована сюжетным сценарием, а также вспомогательным функционалом (пополнением баланса, наличием различных видов балансов для разных внутриигровых валют или предметов, присутствием различных способов оформить базовую механику в какой-то сценарно обоснованный вид, наличием возможности юзеру САМОМУ указывать или выбирать отдельные параметры).

❖ Необходимые навыки

ПРЕДУПРЕЖДЕНИЕ: Данное пособие НЕ ставит перед собой задачу обучения новичков и исходит из того что вы имеете базовые навыки работы с конструктором и УЖЕ ГОТОВЫ создавать более сложные проекты. Руководство раскрывает ПРИНЦИПИАЛЬНУЮ СХЕМУ работы отдельных игровых механик, в частности базовые ПРИНЦИПЫ РАБОТЫ СО ВРЕМЕНЕМ. Если в процессе изучения представленного материала ваших базовых знаний окажется не достаточно, советуем изучить основы прежде чем продолжать - обучать вас "как создавать кнопки" в этом руководстве мы не будем.

Несмотря на то что пособие рассчитано на подготовленных админов, для упрощения начального понимания приведённых схем - они приведены В САМОМ БАЗОВОМ СВОЁМ ВИДЕ. В дальнейшем, поняв принципы их работы, вы сможете усложнять их по мере необходимости - подобный подход позволит вам САМИ сформировать ПРАВИЛЬНЫЕ ПРИНЦИПЫ РАБОТЫ с новым функционалом и знаниями - даст понять, что НЕ НУЖНО БЕЗДУМНО КОПИРОВАТЬ приведённые подходы (а потом приходить в поддержку и говорить что ничего не работает и вы ничего не понимаете) - нужно понять их принцип на простых примерах и затем по мере роста понимания переходить к более сложным вариантам применения.

Список необходимых навыков:

Создание Кнопок и Сообщений
Переменные
Макросы
Баланс в боте
Условия
Action-ы
Выражения
Работа с Датой и Временем

❖ Принципиальная схема механики похода в лес в боте

В данной схеме:
• Юзер отправляет игрового персонажа "в Лес" на заданное время.
• Во время пребывания в лесу персонаж может получить игровые предметы, а так же урон здоровью.
• Использование полученных в лесу предметов позволяет восстанавливать здоровье персонажа.

Подготовительные действия

На данном этапе мы подготавливаем функционал нашего бота для создания игровых механик.

● Числовая переменная «balance» у вас уже есть - там хранится Основной Баланс юзера.

● Создайте Числовую переменную «fo_health» - в ней будет хранится Здоровье Персонажа.

● Создайте Числовую переменную «fo_mushrooms» - в ней будет хранится количество найденных в лесу грибов (внутриигровых предметов).

● НЕ ОБЯЗАТЕЛЬНО - создайте Числовую переменную «cfo_count» - в ней будет хранится количество походов в лес (нужна для создания ТОП-а активных юзеров).

● Создайте Числовую переменную «fo_inforest» - содержит "флаг" говорящий о том что Персонаж находится в лесу.

● Создайте переменную Даты и Времени «fo_back» - в ней будет хранится время когда Персонаж вернётся из леса.

Вход в игру

Инициализируем необходимые внутриигровые переменные.

● Добавьте «Action Чисел» (устанавливаем начальное Здоровье Персонажа если переменная равна нулю)
Переменная для изменения: fo_health
Тип операции: Задать Значение
Значение: 100 (сто)
Условие: {%fo_health% == 0}
Сообщение о Неудаче: нет
Сообщение об Успехе: нет

ВАЖНО:  Данное действие в основном необходимо для демонстрации изложенных ниже подходов. Понятно что в реально существующей игре, за объём и состояние Здоровья будут отвечать отдельные, созданные вами механизмы - с таким же успехом, для тестов, вы можете просто установить значение в переменную, например командой. Action в данном случае используется лишь для простоты, наглядности и чтобы обратить внимание на то, что вам, как создателю игры, Здоровье Персонажа НЕОБХОДИМО будет установить где-то на этапе инициализации нового персонажа.

Оправляем персонажа в лес

Кнопка поход - отправляем Персонажа в Лес

● Создайте кнопку «Поход» с условием: {%fo_inforest% == 0} и сообщением об ошибке: «Персонаж уже в Походе».

● Добавьте «Action Чисел» (устанавливаем время возвращения)
Переменная для изменения: fo_back
Тип операции: Задать Значение
Значение: {dt_add(dt_now(), randf(0.05, 0.1))} (случайное число от 0.05 до 0.1 часа)
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

ОБРАТИТЕ ВНИМАНИЕ, что продолжительность пребывания персонажа в лесу, В ДАННОМ СЛУЧАЕ, это случайное число из заданного диапазона. Подобный подход - это лишь пример. В своей игре вы можете использовать как любые константы, так и некие производные от характеристик персонажа или обстановки в игровом мире, которые будут увеличивать или уменьшать продолжительность похода.

● Добавьте «Action Чисел» (увеличиваем счётчик походов в Лес)
Переменная для изменения: fo_count
Тип операции: Изменить Значение
Значение: 1 (один)
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (ставим "флаг" что Персонаж в Лесу)
Переменная для изменения: fo_inforest
Тип операции: Задать Значение
Значение: 1 (один)
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте кнопке Сообщение: «Персонаж отправился в Лес».


Проверка состояния

Кнопка проверки состояния - позволит игроку узнать основные игровые показатели на данный момент.

● Создайте кнопку «Статус». 

● Добавьте «Action Условия» (если Персонаж в Лесу)
Условие: {%fo_inforest% == 1}
Сообщение о Неудаче: нет
Действие кнопки: ПОКАЗАТЬ контент

● Добавьте «Action Условия» (если время вышло и персонаж покинул Лесу)
Условие: {dt_left("%fo_back%") == 0}
Сообщение о Неудаче: нет
Действие кнопки: ПОКАЗАТЬ контент

● Добавьте «Action Чисел» (ставим "флаг" что Персонаж покинул Лес)
Переменная для изменения: fo_inforest
Тип операции: Задать Значение
Значение: 0 (ноль)
Условие: нет
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (с вероятностью 50% отнимаем случайное количество Здоровья Персонажа)
Переменная для изменения: fo_health
Тип операции: Изменить Значение
Значение: {randi(-20, -5)} (случайное число от -20 до -5 часа)
Условие: {randf(0, 1) <= 0.5} (задаём вероятность (события) срабатывания Action-а)
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно, но например: «Вас укусили - вы теряете {-1 * %fo_health_v%} Здоровья.»

● Добавьте «Action Чисел» (с вероятностью 60% добавляем 1 гриб в инвентарь Персонажа)
Переменная для изменения: fo_mushrooms
Тип операции: Изменить Значение
Значение: 1 (один)
Условие: {randf(0, 1) <= 0.6} (задаём вероятность (события) срабатывания Action-а)
Сообщение о Неудаче: нет
Сообщение об Успехе: не обязательно

● Добавьте сообщение кнопке:

Статус Похода в Лес.
Персонаж {bool_symb((%fo_inforest% == 0), "вышел из леса", "в лесу")}
Вернётся через: {dt_left_hm("%fo_back%")}
Здоровье: %fo_health%
Грибы: %fo_mushrooms%
Всего походов: %fo_count%

Использование найденного предмета

Использование предмета - позволит увеличить здоровье Персонажа на заданное количество очков.

● Создайте кнопку «Съесть Гриб» с условием: {%fo_mushrooms% > 0} и сообщением об ошибке: «У вас нет грибов».

● Добавьте «Action Чисел» (спишет один Гриб из Инвентаря Персонажа)
Переменная для изменения: fo_mushrooms
Тип операции: Изменить Значение
Значение: -1 (минус один)
Условие: {%fo_health% < 100} (если Здоровье Персонажа повреждено)
Сообщение о Неудаче: «У вас полное Здоровье - лечение не требуется»
Сообщение об Успехе: не обязательно

● Добавьте «Action Чисел» (восстановление здоровья на 10 очков, но не более 100)
Переменная для изменения: fo_health
Тип операции: Задать Значение
Значение: {min(%fo_health%+10, 100)} (задаём в качестве Здоровья меньшее из двух значений)
Условие: {%fo_health% < 100} (если Здоровье Персонажа повреждено)
Сообщение о Неудаче: «У вас полное Здоровье - лечение не требуется»
Сообщение об Успехе: не обязательно

● Добавьте кнопке Сообщение: «Осталось Грибов: %fo_mushrooms%».

ТОП игроков

Кнопка ТОП-а позволяет создавать списки лучших игроков по отдельным параметрам.

Для создания ТОП-а - вам понадобится функция (по количеству ТОП-ов):

«39. Базовый ТОП по Переменной»
Для подключения перейдите в свой бот:
☞ 🔐Админ | 🧩Расширения | 📂Переменные

● Создайте кнопку «ТОП Игроков».

● Добавьте Сообщение кнопке (для ТОП-а по количеству Походов в Лес):

Самые активные игроки:
1. %topfo_count1u% - %topfo_count1v%
2. %topfo_count2u% - %topfo_count2v%
3. %topfo_count3u% - %topfo_count3v%
4. %topfo_count4u% - %topfo_count4v%
5. %topfo_count5u% - %topfo_count5v%
6. %topfo_count6u% - %topfo_count6v%
7. %topfo_count7u% - %topfo_count7v%
8. %topfo_count8u% - %topfo_count8v%
9. %topfo_count9u% - %topfo_count9v%
10. %topfo_count10u% - %topfo_count10v%
Следующее обновление ТОП-а: %topfo_counth%:%topfo_countm%

❖ Варианты улучшения базовой механики

Дополнительные предметы

"В Лесу" можно находить несколько предметов с разной вероятностью. Самым простым способом реализации является добавление ещё одного аналогичного экшена с нужными вам параметрами. Также можно ввести и Баланс содержащий внутри игровую валюту. По сути своей, внутриигровая валюта - это такой же предмет обмена как и всё остальное (Грибы например).

Покупка и продажа предметов

В игру можно добавить функционал продажи и покупки внутри игровых предметов. Сам механизм принципиально ничем не отличается от «Использования найденного предмета» (см. выше) - списываем один ресурс, добавляем другой. Для этого введите в игровую механику Баланс, на котором будут находиться Монеты доступные Персонажу.

Крафт новых предметов

На основе механики покупки и продажи (когда один тип активов меняется на другой тип), также можно создать крафт новых предметов которые нельзя купить или найти. В этом случае вы списываете значения с нескольких переменных, а добавляете в одну, создавая новый предмет.