San Andreas: Multiplayer #1 — Самый неактуальный туториал

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Предисловие

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

Глава 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

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

Эпилог

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

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

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

  • Официальная документация по скриптингу

  • Список всех функций

  • SAMP раздел на форуме Pawn Wiki

  • Русская документация (неполная)

  • Pawn.CMD - Удобный командный процессор (о нём позже)

Источник: https://habr.com/ru/post/661401/


Интересные статьи

Интересные статьи

Выясним, как вычисляются рейтинги языков программирования, какие языки программирования наиболее популярны, и что нам с этой информацией делать. В декабре 2021 года Python остается одним из самых поп...
От переводчика: все началось с топика на форуме D. После оценки скорости компиляции D по сравнению с другими языками мне было интересно, существует ли какой-нибудь язык, который компилир...
Всем привет. Если вы когда-либо работали с универсальными списками в Битрикс24, то, наверное, в курсе, что страница детального просмотра элемента полностью идентична странице редак...
Как быстро определить, что на отдельно взятый сайт забили, и им никто не занимается? Если в подвале главной страницы в копирайте стоит не текущий год, а старый, то именно в этом году опека над са...
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.