# BattleBit Remastered Community Server API [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) Language [English](/README.md) | [中文](/README-zhCN.md) | Русский | [한국어](/README-koKR.md) | [Español](/README-esES.md) | [Português](/README-ptBR.md) Этот репозиторий предоставляет API, который можно использовать для обработки событий на сервере/серверах и манипулирования ими. ## Приступая к работе ### Предварительные условия - Собственный коммьюнити сервер в BattleBit Remastered c **отключенной** официальной прогрессией для доступа к параметрам запуска. - Способность писать и компилировать [.NET 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) C# код. - (Для продакшена) Место, на котором будет размещен этот API. ### Написание кода Документацию и примеры можно найти на [wiki](https://github.com/MrOkiDoki/BattleBit-Community-Server-API/wiki) (WIP). Способ использования этого API заключается в создании инстанции `ServerListener` (и ее запуске), которой вы передаете типы ваших *собственных* подклассов `Player` и `GameServer`. В этих подклассах вы можете делать свои собственные переопределения уже существующих методов в `Player` и `GameServer`. Вы также можете добавлять свои собственные методы и поля/свойства. Самый простой способ начать работу со всем этим - использовать `Program.cs` и добавить свои переопределения и т.п. в `MyPlayer` и `MyGameServer`. ### Сборка Этот проект можно собрать с помощью команды [`dotnet build`](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-build) в командной строке или с помощью опций run / build в предпочитаемой вами IDE. В качестве альтернативы вы можете использовать [Docker](https://docs.docker.com/get-started/overview/) для его запуска. Простой способ сделать это - запустить `docker compose up`. ### Подключение к игровому серверу/серверам После написания и компиляции этого проекта, вы захотите разместить его где-нибудь. Это может быть тот же сервер, на котором запущен текущий игровой сервер, или совершенно другой. Мы рекомендуем поддерживать минимальную задержку до игрового сервера для более плавной и быстрой коммуникации между ними. Один и тот же `ServerListener` может использоваться для *нескольких* игровых серверов одновременно. Вы можете указать API-сервер (адрес и порт) в параметрах запуска игрового сервера. #### Параметры запуска игрового сервера Игровой сервер подключается к API с помощью параметра запуска `«-apiendpoint=:»`, где `` - это порт, который слушает слушатель, а `` - IP сервера API. Если в вашем Server API требуется проверка `Api Token`, вам необходимо добавить `«-apiToken=»` в параметры запуска игрового сервера/серверов. Если `` совпадает с `Api Token`, определенным в Server API, игровой сервер(ы) смогут взаимодействовать с Server API. Когда игровой сервер запущен, вы также можете напрямую изменить `Api Token` игрового сервера, введя `setapitoken ` в его командной строке. #### Настройка порта прослушивания API В настоящее время проект настроен на прослушивание API на порту `29294`. Если вы хотите изменить это, обязательно измените это в коде (на вашем `listener.start(port)`). Порт `29294` также открыт в Docker и привязан к тому же порту на хосте в Docker Compose. Это означает, что при использовании Docker вам придется изменить порт в `Dockerfile` и в `docker-compose.yml` (при использовании Compose). Подробнее в [EXPOSE в справке по Dockerfile](https://docs.docker.com/engine/reference/builder/#expose) и [networking in Compose](https://docs.docker.com/compose/networking/).