А кто сказал, что автодонат только для донатов?

Использование IGS (InGameShop) не ограничивается итемами из файла sh_additems.lua. IGS это не только менюшка с предметами, а целый кухонный комбайн с набором функций, которые можно применить для множества неочевидных задач.

Вот лишь несколько из вариантов применения IGS, о которых вы могли не догадываться:

Авторазбан

Забаненный игрок донатит через сайт, сервер узнает об этом и выполняет функцию разблокировки. Автразбан это не ITEM в sh_additems, это модуль, который списывает деньги у забаненного игрока и выполняет функцию разбана

Доступ к экзотическим функциям на сервере

Например, в свое время у меня был донатер, который единственный имел право использовать определенную модельку и даже продавать ее другим. Эта услуга называлась model_trader и ее не было в additems. Основному покупателю я выдал ее вручную через панель, затем он мог выдавать такое право другим игрокам самостоятельно через специальную команду. Каждый, имеющий :HasAccess("model_trader") мог использовать эту модельку, будучи условно частью какой-то организации

image

Полнофункциональные ачивки за вечер

Год назад для уже мертвого проекта написал мини-скрипт ачивок за вечер. Он действительно очень минималистичный, но в то же время мог бы выполнять главную задачу – усложнять уход игрока с проекта. Согласитесь, не каждый захочет терять зафиксированные достижения многих часов игры, а отдалить игроков от ухода можно всего за вечер разработки простейшего скрипта. В минимум кода я постарался вставить максимум пользы, в итоге весь аддон это 30 строк для красивого оповещения в чат, когда кто-то получает ачивки, 100 строк на само ядро ачивок и 50 строк на интеграцию с Telegram.

image

Как удалось засунуть всю суть модуля в 100 строк кода?

Проект, где работали эти ачивки, состоял из нескольких серверов. Значит нужно было бы использовать MySQL БД, чтобы ачивки были общими, а это еще целую БД тащить (если ее нет), .dll библиотеки, учить SQL (если не знаком), таблицы создавать, писать функции с базовыми запросами к таблице и тд. Я бы ни за что не поместил все в 100 строк, не сильно хотел возиться и решил все упростить.

Зачем тащить свою БД, возиться с таблицами и писать лишний код, когда можно просто хранить ачивки в БД GM-Donate?

В крайнем случае всегда же можно будет создать таблицу в MySQL и перенести туда.

В итоге вышло вот что. Функция createAchievement создает IGS предмет (как в additems) с особыми свойствами: предмет не отображается в /donate меню, выдается навсегда и имеет метод :CanReceive. Если :CanReceive(ply) возвращает true, значит игроку нужно выдать ачивку. Проверка осуществляется для всех игроков каждые N минут

“Выдать ачивку” это просто добавить uid ачивки в качестве покупки игрока:

Можно даже через панель на сайте. Считайте, что это еще и админка для ваших ачивок :slight_smile:
image

Сами ачивки выглядят вот так:


Послесловие

Надеюсь, эти идеи подтолкнут вас к созданию своих модулей и применению автодоната там, где другие даже не подумали бы. Если у вас есть идея и желание сделать что-то необычное - делитесь здесь в комментариях. Мы поможем с реализацией и будем рады, если вы поделитесь с другими своими наработками

3 симпатии

Полезно, спасибо

1 симпатия