Установка, структура и API
Краткая выжимка для тех, кто хочет понять устройство движка до покупки. Полная документация передаётся вместе с лицензией.
Требования к хостингу
Подойдёт любой обычный виртуальный хостинг или VPS с современным PHP. Экзотики не нужно.
| PHP | 8.0 и выше, проверено до 8.3 |
| База данных | MySQL 5.7+ или MariaDB 10.3+ |
| Веб-сервер | Apache с mod_rewrite или Nginx |
| Расширения PHP | pdo_mysql, mbstring, gd, curl, json, openssl |
| Игровой сервер | AMX Mod X 1.9+ и модуль gRIP для плагинов |
| Планировщик | Cron желателен, но не обязателен |
Установка
Основной способ — мастер в браузере: он проверит окружение, примет реквизиты базы и создаст администратора.
Загрузка
Распакуйте архив в корень сайта, включите mod_rewrite.
Мастер
Откройте адрес /install и пройдите четыре шага.
Данные
Мастер импортирует схему базы и заведёт администратора.
Готово
Каталог установки блокируется, его можно удалить.
Ручная установка, если мастер недоступен:
# 1. Конфигурация cp inc/config/config.local.php.example inc/config/config.local.php # 2. База данных mysql -u USER -p DB < modules/install/schema.sql # 3. Права на запись chmod -R 775 files templates/*/cache logs # 4. Планировщик (необязательно) * * * * * php /path/ajax/cron.php key=СЕКРЕТ
Структура проекта
Единая точка входа, ядро в отдельном каталоге, функциональность — в модулях.
index.php // единая точка входа .htaccess // ЧПУ и правила отдачи inc/ core.php // ядро: константы, автозагрузка, сессия, роутер functions.php // глобальные хелперы config/ // конфигурация, секреты в config.local.php classes/ // классы движка lib/ // сторонние библиотеки ajax/ // api.php, chat.php, cron.php, oauth.php, widgets.php modules/ // модули ядра modules_extra/ // дополнительные модули templates/ // шаблоны оформления и админки files/ // пользовательские загрузки logs/ // журналы по каналам
Шаблонизатор
Свой лёгкий шаблонизатор: компилирует tpl-файлы в PHP и кэширует результат. Синтаксис читается без обучения.
| Конструкция | Назначение |
|---|---|
{include file="parts/x.tpl"} | подключение другого шаблона |
{if($c)} … {else} … {/if} | условие |
{foreach(...)} … {/foreach} | цикл по массиву |
{{$var}} | вывод переменной |
{func Class:method(args)} | вызов метода класса |
{sql select(...)} | выборка из базы прямо в шаблоне |
{* … *} | комментарий, в вывод не попадает |
Внешнее API
Эндпоинт /ajax/api.php обслуживает игровые серверы и плагины. Аутентификация — по ключу из админки: заголовок X-Api-Key либо параметр key. Доступ к каждому методу ограничивается списком scopes у ключа.
| Метод | HTTP | Параметры | Scope | Назначение |
|---|---|---|---|---|
check_player |
GET | steam_id | ip | nick | bans |
Бан и мут одним запросом |
check_ban |
GET | steam_id | ip | nick | bans |
Проверка активного бана |
check_mute |
GET | steam_id | ip | nick | mutes |
Проверка активного мута |
bans_list |
GET | server_id | bans |
Активные баны для кэша плагина |
mutes_list |
GET | server_id | mutes |
Активные муты для кэша плагина |
add_ban |
POST | steam_id, nick, ip, reason, minutes | bans |
Выдача бана с игрового сервера |
add_mute |
POST | steam_id, mute_type, minutes | mutes |
Мут: all, chat или voice |
unban |
POST | ban_id | steam_id | ip | bans |
Снятие бана |
push_stats |
POST | server_id, steam_id, frags, deaths | stats |
Отправка игровой статистики |
check_priv |
GET | steam_id | privileges |
Текущая привилегия игрока |
Все ответы — JSON вида {"ok":true,…} или {"ok":false,"error":"…"}.
# Выдача бана с игрового сервера curl -X POST "https://ваш-проект.ru/ajax/api.php?method=add_ban" \ -H "X-Api-Key: ВАШ_КЛЮЧ" \ -d "steam_id=STEAM_0:1:12345&nick=Player&reason=cheat&minutes=1440&server_id=1"
Плагины игровых серверов
Комплект плагинов AMX Mod X, которые связывают сервер с сайтом через HTTP. Ставятся как обычные amxx-плагины.
Ядро связи
Меню игрока по команде в чате: баланс, купленные привилегии, игровая валюта. Нативы, чтобы дёргать сайт из ваших плагинов.
Наказания
Баны и муты с общей базой сайта, локальный кэш активных наказаний и очередь запросов на случай, если сайт недоступен.
Префиксы
Купленный на сайте префикс появляется в игровом чате без перезахода на сервер.
Фракции
Фракции, территории и ларьки: серверная механика, управление и статистика на сайте.
История версий
- Модули «Кейсы» и «Фракции»
- Живые уведомления без перезагрузки
- Раздел SEO и брендинга в админке
- Единая база банов и мутов с игровыми серверами
- Плагин банов с очередью и кэшем
- Публичные жалобы на игроков
- Второй шаблон оформления
- Общий чат на главной
- Загрузка аватаров с проверкой содержимого
- OAuth: VK, Google, Steam, Яндекс
- Внешний API с ключами и scopes
- Ленивое истечение привилегий без cron
- Первый публичный релиз: магазин, кошелёк, форум, админка
Нужны подробности под ваш случай?
Расскажите про проект — ответим, что движок умеет уже сейчас, а что придётся дописать.