- 18
- 40
Los Santos Role Play (LSRP)
Сервер крутится на open.mp. Вся игровая логика написана на TypeScript и собирается в JavaScript. Pawn почти не используется: в папке gamemodes лежит крошечная заглушка, без нее движок не стартует, но правил игры там нет. Аккаунты, деньги, здоровье, админка и организации хранятся в MySQL.
ЧТО НУЖНО, ЧТОБЫ ЗАПУСТИТЬ
- Windows (как сейчас собрано) или Linux, но тогда нужны linux-файлы open.mp, не omp-server.exe.
- Сам open.mp: omp-server.exe, libnode.dll, папка components.
- Node.js 18 или новее - чтобы собрать мод.
- MySQL 8, база lsrp. Доступ прописывается в файле .env в корне (скопировать из .env.example). На своей машине часто root без пароля, на настоящем сервере так делать нельзя.
- Клиент SA-MP / open.mp.
Команды из корня проекта:
copy .env.example .env (один раз, прописать MySQL)
npm run build (собрать игровой код)
npm start (запустить omp-server.exe)
После любой правки кода снова npm run build и обязательно перезапустить сервер. На лету код не подхватывается.
Проверка типов: npm run typecheck.
Сборка при каждом сохранении файла: npm run dev - сервер все равно перезапускаешь руками.
ГДЕ ЛЕЖИТ ДОКУМЕНТАЦИЯ
Подробно, уже техническим языком:
README.md - короткий старт
docs/docs.md - устройство мода, модули, база, команды, проверка
docs/deploy.md - как выложить на VPS
sql/schema.sql - как выглядит таблица игроков
.env.example - какие поля нужны для базы
КАК УСТРОЕНА ПАПКА
Корень - это папка, из которой запускается сервер. Рядом лежат config.json (название, порт, слоты), bans.json (баны по IP), maps (объекты на карте), sql, gamemodes.
Игровой код: resources/src - править здесь.
Сборка: resources/dist - сам не трогать, появляется после npm run build.
Карты: maps/*.txt (тюрьма, больница, шахта, армия). Ворота армии создаются кодом, в army.txt их дублировать не надо.
КАК ИГРОК ПОПАДАЕТ В ИГРУ
Пока нет аккаунта, человек в спеке, чат и команды не работают.
Новый ник: правила сервера (принять или кик) > почта > пароль два раза > дата рождения (16–80 лет) > пол > скин > подтверждение. Стартовые 100 HP и 500 долларов.
Есть аккаунт: только пароль. Три ошибки - кик. Закрыл окно - тоже кик.
Пароли в базе не открытым текстом. Ник берется только из клиента, подделать его окном регистрации нельзя.
В правом верхнем углу логотип "Los Santos RP". Время в мире совпадает с часами компьютера, на котором крутится сервер.
ЗДОРОВЬЕ, СМЕРТЬ, БОЛЬНИЦА
Здоровье запоминается. Раз в 15 минут снимается 1 HP, ниже 20 само не падает (если человек не в больничном режиме). При выходе и раз в 3 минуты персонаж сохраняется.
Умер - очнулся в городской больнице, здоровье 20, нужно лечение. С улицы заходишь внутрь, ложишься на койку командой /hospital. Пока лежишь рядом с койкой - здоровье растет. Встал и отошел - лечение остановилось. Выйти на улицу, пока не вылечился, нельзя. Когда 100 HP - можно уходить.
Койка чужому с улицы не дается: только тем, кого привезли после смерти (или кто еще не долечился).
ЧАТ И RP-КОМАНДЫ
Обычный чат слышат только рядом, примерно 20 метров, тот же интерьер и мир. Над головой пузырь и анимация разговора. В строке ник и ID.
/me /do /try /todo - отыгровка
/b - внеигровой чат рядом; если админ вошёл в админку, в /b пишется Administrator
/s - крик, дальше
/w - шепот, совсем близко
/help - список команд
/mn - меню
/stats - своя статистика
Цветовые коды в чате вырезаются, чужие сообщения перекрасить нельзя.
ГОРОД И РАБОТА
Мэрия: паспорт и приглашение (кого указали при регистрации - один раз).
GPS: метки по городу.
Шахта: нанимаешься, копаешь, руду везешь, деньги выдают у точки найма. Прыжок/стрельба по пути могут сбросить груз. Умер или вышел - смена срывается, зарплату за недовезенное не дают.
Каждый час в :00:
всем онлайн капает опыт и уровень;
зарплату получают только члены организации, по рангу;
кто в АФК (свернул игру или долго стоит) - зарплату не получает.
Деньги считает сервер, не полоска в клиенте. Чит на деньги в базу не пишется.
ОРГАНИЗАЦИИ
Сейчас одна - армия. Цвет ника коричневый, свой скин по рангу, своя точка появления (телепорт на базу только при первом заходе за сессию, не каждый респавн).
10 рангов, зарплата от 1500 до 9000. Лидер - 10 ранг. Выдать лидерку может админ 5 уровня. Паспорт обязателен.
/leaders - кто из лидеров онлайн
/r - рация своей организации
Ворота базы: подойти пешком и нажать присед (C) или посигналить из машины. Чужие не откроют. Через несколько секунд ворота сами закрываются.
Выдать рядовых 1–9 рангов из игры пока нельзя только лидерку или правка базы руками.
АДМИНКА
Семь уровней. Вписать уровень в базу мало, нужно еще /alogin и свой пароль админки. Без этого админ-команды молчат, как будто их нет. /ahelp показывает только то, что доступно твоему уровню.
1 - /a чат админов, /ahelp, /admins, телепорт кликом по карте
2 - /kick
3 - /ao объявление всем
4 - /sethp (чужому админу, который уже в /alogin, HP не поставить; себе можно)
5 - /makeleader
6 - пусто
7 - /makeadmin (выдать или снять 0–7)
Первый вход в админку или после /makeadmin - придумать пароль. Три ошибки /alogin — кик.
ЧЕГО ЕЩЁ НЕТ
Нет домов, инвентаря, нормального автопарка, личных сообщений, репорта, бана аккаунта (есть только бан по IP у движка), повышения обычных рангов органа из игры.
Это каркас RP-сервера: вход, персонаж, чат, больница, мэрия, шахта, армия, админка, сохранение. Дальше можно наращивать по той же схеме: папка в resources/src/modules и подключение в index.ts.
КАК ВЫЛОЖИТЬ
См. docs/deploy.md. Коротко: на сервере своя база и свой .env, не копировать локальную. Собрать npm run build. На Linux не тащить Windows .exe и папку node_modules с Windows. В config.json не включать RCON без своего пароля. Если сервер не для всех — выключить announce или поставить пароль на вход.
СКАЧАТЬ
Google Диск: https://drive.google.com/file/d/19a8xQBjr8Yj9qiU2wq8yhSA8GMpIua_i/view?usp=sharing
СКРИНШОТЫ


























p.s это, если что, не полноценный игровой мод. мне хотелось попробовать поиграться с технологиями, и я сделал пару систем как основу, как пример. желания и цели написать полноценный игровой мод не было. возможно, у кого то появится интерес сделать что то интересное, можно взять как основу. единственная проблема, я не нашел ничего, как пофиксить иероглифы, по этой причине вы можете увидеть на скрине транслит. павн не хотелось смешивать, можно попробовать написать какой то модуль на плюсах, но с плюсами я не знаком
Последнее редактирование: