RonoRating - специализированная Discord-игра, которая симулирует небольшую экономику.
У каждого пользователя есть своя собственная карточка. Пример:
Пользователь может различными способами развивать свою карточку: устанавливать и покупать различные темы, стикеры и значки. Однако, зачастую для получения этих благ понадобятся деньги. Их можно получить при помощи заполнения шкал актива и улучшения уровня в разных категориях.
Написание проекта началось в 2021 году и активно продолжается и по сей пор. Однако, истоки лежат с 2020 года, когда я только начал изучать Node.JS
В конце 2021 года (16 декабря) этот проект стал победителем школьной конференции в нескольких категориях в отрасли 5-9 класс.
Также, более полугода проект находился с плохой базой данных (реализованной при помощи модуля fs и на бесплатном сервере), однако, в мае 2022 года он был перенесён на новую базу данных и новый платный хостинг - это и стало одним из основных шагов к успеху проекта.
Обновления выходят не особо часто, однако, проект я не забрасываю. Если у Вас есть идеи по новым функциям, то Вы всегад можете написать мне в Discord! Мой айди: 544902183007813652
Актуальный список команд на 4 июня 2022 года:
/start - зарегистрироваться в Рейтинге. (команды ниже не работают, если у Вас не прописан /start)
/card [пользователь] - показать свою или карточку пользователя
/claim <код> - позволяет получить какую-либо тему через специальный код
/inv [пользователь] [страница] - покажет инвентарь на заданной странице у заданного пользователя (по умолчанию первую страницу Вашего инвентаря)
/set <ID темы> - поставить тему с заданным ID (если у Вас имеется)
/shop [страница] - загрузит магазин тем! (по умолчанию первая страница)
/buy <ID темы> - позволяет купить тему с заданным ID, если у Вас достаточно виртуальной валюты
/preview <ID темы> - посмотреть, как будет смотреться определённая тема на Вашей карточке (иметь её для этого не надо; это предпросмотр)
/bal [пользователь] - показывает деньги, которые есть у пользователя с точностью до единиц
/badges [пользователь] - посмотреть все значки, которые есть у пользователя
/setbadge1 [ID значка] - поставит первый значок (справа от карточки с ником)
/setbadge2 [ID значка] - поставит второй значок (возле аватарки)
/export - сгенерировать архив, содержащий Ваши данные в базе данных
/count - показывает последнее число для канала #🧮счёт
/check - проверить данные на целостность перевода после обновления базы данных
/debug - включить режим откладки
Получить деньги можно за повышение актива в следующих категориях: Текстовый актив - даётся за сообщения в практически всех чатах. За одну минуту общения можно получить 1 единицу опыта.
Голосовой актив - даётся за нахождение в голосовых каналах. Обычно даётся 1 опыт за минуту, проведённую в голосовом канале. Однако, такие факторы, как:
Включён микрофон или нет Включён звук или нет Запущена трансляция или нет
могут влиять на этот показатель
Повседневный актив - даётся за каждый день посещённый на сервере. В отличии от пунктов выше, не даёт денег. Деньги выдаются только за повышения уровня. За каждый день актив на сервере даётся по 1 единице опыта
Счёт - даётся за участие в жизни канала #🧮счёт. Деньги, как в повседневном активе, выдаются за лвл ап. Одно верно написанное число даёт 1 опыт.
- Зарегистрируйтесь при помощи
/start - Попробуйте загрузить свою карточку при помощи
/card - Теперь Вы можете начинать набирать деньги. Подобнее в разделе
События и активность - Напиишите
/shop- это должно будет вывести магазин с карточками, которые Вы можете купить за внутреннюю валюту. - Пропишите
/inventory- это выведет Ваш инвентарь и Ваши карточки. - Почитайте подробнее в разделе
Командыпро остальные команды. - Соревнуйтесь с другими пользователями за лучшую карточку :)
Если кому-то интересно, то здесь можно подоробнее узнать про системы баз данных.
На данный момент, RonoRating находился на двух различных видах баз данных.
Первый тип (файловый) - был с октября 2021 по апрель 2022
Второй тип (парсерный) - был с мая 2022 по текущее время
Первый тип базы данных заключался в том, что карточка каждого пользователя и вся информация о нём представляла из себя папку с кучей файлов и подпапок, в которых хранились и записывались данные.
Пример:

Система была очень плохой. Сервер постоянно перегружался и из-за этого данные часто откатывались назад. Также, ответ был значительно дольше, чем у второго типа.
Особенность второго типа в том, что все сообщения хранятся в Discord сообщениях в специальном канале. Программа лишь один раз считывает ./data/dbsetup.json, в котором хранятся айди пользователей - ключи и айди их сообщений в канале с данными - значениями ключей.
Далее команда просто получает нужное ей сообщение в JSON формате, которое она форматирует в объект и дальше редактирует его. В конце концов, она просто изменяет сообщение. Пример данных:
{
"user": "544902183007813652",
"money": 256324,
"exp": "331.8478223737671",
"lvl": "60",
"credit": "1000",
"active": {
"text": {
"lvl": 33,
"exp": 69
},
"daily": {
"lvl": 10,
"exp": "2022-06-03T21:00:00.000Z 39"
},
"voice": {
"lvl": "19",
"exp": "12228.599999999758"
},
"count": {
"lvl": "9",
"exp": "131"
}
},
"config": {
"badge1": "mdk",
"badge2": "staff",
"theme": "2020"
},
"themes": [
"1",
"2020",
"2022",
"2022pixel",
"22222222222",
"MoskvaLublinoRabotaem",
"beta",
"chilldebil",
"default",
"glitch",
"gradient",
"graffiti.wall",
"happy2022",
"hentai",
"oplot",
"pixel_galaxy",
"ronostar",
"space",
"volcano",
"winterbabft"
],
"badges": [
"contributor",
"generalgavs",
"mdk",
"nothing",
"staff"
],
"debugMode": false
}Discord поддерживает большое количество потоков, поэтому откатов данных не наблюдается. Парсинг происходит быстро и на сервер практически нету нагрузки.
Без переписки кода запустить проект не получитися - он настроен на каналы Роносервера. Однако, если Вы перепишите значения переменных, то сможете запустить его. Если вдруг есть те, кто действительно этим займётся, то вот небольшая инструкция:
- Скачайте репозиторий
- На одну директорию выше директории с проектом (та, в которой лежит папка
RonoRating) создайте 2 файла:
- config.json
- isServer
- Заполните файлы выше в соответствии с образцом:
Здесь хранится токен. Вставьте его вместо ТОКЕН_БОТА и поместите в этот файл:
{
"token": "ТОКЕН_БОТА"
}Этот файл отвечает за внедрение проекта на сервер.
Если корневым каталогом исполнения Node.JS является папка с index.js (RonoRating), то вставьте в файл одно слово:
false
Если папкой исполнения ялвяется директория выше (в которой лежит папка RonoRating), то поставьте значение
true
- Запустите
index.jsпри помощиNode.JS
Спасибо огромное всем, кто участвует в жизни RonoRating'а и поддерживает его. Именно благодаря Вам этот проект может развиваться. Не стесняйтесь сообщать о багах, кидать пулл реквесты и оставлять комментарии.
Очень надеюсь, что проект действительно чего-то добётся. Но даже если нет, то у меня будет ценный опыт работы в JavaScript. Поэтому, это всё не просто так.
Спасибо всем огромное, кто это читает. Люблю Вас ^^
Искренне
Ronopoldo
Помощь в оплате серверов и донат
Мой Discord ID: 544902183007813652
Мой ник в Telegram: @RonopoldoYT
Моя электронная почта: RonopoldoFeedback@yandex.ru
