Предисловие

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

Глава 1: Дистрибутив

Работать будем с версией 0.3.7, так как она самая последняя и стабильная. Переходим на sa-mp.com, ищем с левой стороны раздел Navigation, под ним кнопку Downloads. После перехода нас будут интересовать два нижних раздела. "SA-MP Windows Server Download" и "SA-MP Linux Server Download"..

Есть вероятность, что после нажатия на ссылку, скачивание не начнётся. Тогда просто скопируйте адрес ссылок и вставьте их в строку поиска браузера.

В архиве находится ряд файлов и папок. Пройдёмся по основным:

  • filterscripts - подключаемые скрипты. вы можете выносить отдельные участки кода в отдельные файлы. если они автономны и не участвуют в основном моде, их можно вынести сюда

  • gamemodes - игровые режимы сервера. Здесь будет находиться главный файл нашего мода

  • include - подключаемые из кода мода файлы.

  • pawno - папка, имеющая в себе редактор IDE pawno и собственную папку includes. Настоятельно рекомендую использовать её. Отсюда легче подключать файлы

  • scriptfiles - хранилище. здесь расположены конфигурационные файлы скрптов.

  • samp-server.exe (Windows) - исполняемый файл, запускающий сервер

  • server.cfg - конфигурационный файл сервера

Глава 2: Конфигурация сервера и первый запуск

server.cfg как было сказано ранее - файл конфигурации сервера. Здесь подключаются моды, фильтерскрипты, плагины; устанавливаются название сервера, порт, язык, вебсайт и многое другое.

Значение всех его полей описано в файле server-readme.txt. Вот его перевод:

После того, как конфигурация будет завершена, запустите samp-server.exe для запуска серверного процесса

  • hostname (String) - указывает имя хоста, отображаемое в браузере серверов.

  • port (int) - указывает порт для прослушивания. Этот порт используется для игровых соединений, соединений rcon и для запросов.

  • maxplayers (int) - указывает максимальное количество игроков на сервере

  • announce (int 1/0) - добавляет ваш сервер в список серверов «Интернет» в браузере SA:MP. Вкл. (1) или Выкл. (0).

  • weburl (String) - указывает URL-адрес, отображаемый в обозревателе серверов, который связан с сервером.

  • gamemode0 - gamemode15 (String + int) - задает параметры ротации. Первый параметр задает имя игрового режима. Во-вторых, количество повторений. Вы можете использовать gamemode0 для указания первого игрового режима, gamemode1 для указания второго и т. д.

И вот, о чём в readme не написали:

  • rcon_password (String) - пароль админа сервера. ввод этого пароля при подключении в игру даёт игроку статус админа.

  • filtersripts (String[]) - через пробел описанные названия скриптов из папки filterscripts, которые будут запущены при запуске сервера

  • plugins (String[]) - список включенных плагинов (обязательно указывать форматы .so или .dll в зависимости от ОС сервера)

  • lanmode (int 0/1) - определяет возможность подключения к серверу только из локальной сети (1) или извне (0)

  • language (String) - устанавливает язык сервера (влияет только на отображение в браузере серверов)

После завершения конфигурации, запускаем файл samp-server.exe, смотрим в красивую консоль и..

Глава 2.1: Первое подключение

Я буду считать, что читатели этой статьи знакомы с SAMP и его интерфейсом. В поле IP прямого подключения или добавления сервера в Favorites вводим такой адрес:

[Local IP]:[Port]

И можем подключаться! (по умолчанию там уже стоит игровой мод grandlarc)

Глава 3: Pawn.. Pawno?

Pawn это простой Си-подобный язык программирования. Даже на википедии в спектре использований этого языка SAMP стоит на первом месте. В интернете информация по чистому языку и использованию в программировании игровых режимов. О хороших IDE и редакторах кода можете забыть. Для VS Code ещё можно накатить плагины поддержки Pawn, но он не так удобен как стандартный редактор кода, который лежит в дистрибутиве сервера в папке pawno. В подробности языка и его особенности углубляться не будем. Поверхностное представление того, с чем мы имеем дело можно сложить по статье на википедии.

Открываем Pawncc.exe, млева сверху ищем пустой белый лист, нажимаем на него и перед нашим взором предстаёт "чистый" лист шаблона мода..

Итак.. да, абсолютно всё здесь находится в одном файле. Прописано множество методов, которые будут вызываться при происхождении на клиенте или сервере какого-то события. игрок подключился, игрок вышел, игрок сел в машину игрок вылез иж машины, игрок выбирает класс, игрок умер, игрок зареспавнился, игрок игрок игрок..

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

вы можете создавать внешние .inc файлы и подключать их через #include. файлы создавайте в папке pawno/include. да, кажется, что это просто дистрибутив редактора кода, но здесь лежат даже главные файлы кода сервера. так как отсюда их можно подключать, указав в include тмя файла. если вы будете подключать свои файлы из папки include в корне сервера, вам будет необходимо указать относительный путь до этой папки из дирректории pawn/include (.. /.. /include/file.inc)

Глава 3.1: Компиляция, подключение, запуск

После того, как режим был прописан и готов к встраиванию на сервер, сохраняем его в папку mods и жмём на зелёную стрелку. Если компиляция прошла успешно, необходимо указать название файла мода в server.cfg и цифру 1 в поле gamemode0 пример

gamemode0 mymode 1

Запускаем сервер и наслаждаемся своим творением!

Эпилог

Тут наверное стоит рассказать про коммьюнити. Все сервера предпочитают сохранять свой исходный код в тайне, не делятся скомпилированными результатами. Форумы уже заглохли, часто это просто зеркало другого форума, и если возникнет проблема, то решение может искаться очень долго. Активных чатов и бесед нет, документация не весьма удобная. Даже если нашли какой-то отличный плагин, даже довольно крупный и в обиходе на серверах.. Скорее всего будет трудно найти информацию о нём кроме оригинального сообщения на форуме. Но чёрт! это очень интересная и затягивающая тема, в которой мне понравилось разбираться. Если вам будет интересно узнать подробнее о создании сервера (Сторонние плагины, инклады, маппинг) проявите фидбек под этим постом. В этом посте я попытался только дать вектор развития и хоть как-то осветить эту тему комплексно. Спасибо за то, что прочитали этот туториал!

Ссылки и полезности

Ниже приведены ссылки на форумы и разделы документации, которые будут полезны во время работы над сервером.

Комментарии (4)


  1. xTiM4x
    20.04.2022 12:43
    +1

    А почему не MTA? Или оно уже мертво?


    1. MrKarton Автор
      20.04.2022 12:45

      самп по духу мне ближе. и он популярнее


  1. ton1
    21.04.2022 09:41
    +1

    Официальный форум сдох? Жаль. Там был просто кладезь документации и примеров.

    Остались еще сервера не донатные помойки?

    Новый хорошие годные моды появились, или все так и лепят клоны старого доброго godfather?

    Мне кажется после выхода мультиплеерной гта5 в SA сильно поубавилось игроков

    Версия 0.3.7 была еще лет 10 назад, а значит все эксплоиты на нее еще работают. Еще тогда разраб не радовал скоростью устранения багов.

    Из редакторов кода был специальный PawnSCITE или как то так. Код действительно очень простой с-образный, после школьного курса там баловаться одно удовольствие. Поэтому и было этих серверов сотни лет 15-10 назад :)


    1. MrKarton Автор
      21.04.2022 16:20

      не донатных и не помоек нету. часто приходится мириться с какими-то очевидрыми косяками. в gotdather играют мало. сейчас в тренде куча однотипных РП с одинаковыми модами. отчасти поэтому и решил рассказать об этом. чтобы дать хоть какой-то толчок развитию нормальных проектов.

      вышла 0.3.8. но её даже на оф. сайте нет и вообще мало что понятно по этой части. так как главный разработчик ушёл из проекта