mirror of
https://github.com/BeamMP/Docs.git
synced 2026-02-16 02:20:44 +00:00
Merge pull request #259 from BeamMP/gitlocalize-35560
Update ru translations by vadyankaww and drkreis
This commit is contained in:
40
docs/ru/FAQ/Defender-exclusions.md
Normal file
40
docs/ru/FAQ/Defender-exclusions.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Как создать исключения в брандмауэре и антивирусе Защитника Windows?
|
||||
|
||||
!!! информация
|
||||
|
||||
```
|
||||
Before tampering with the firewall, make sure that your network within the windows networking settings is set to private (assuming you are in a private network).
|
||||
|
||||
!!! danger ":material-scale-balance: DISCLAIMER:"
|
||||
|
||||
**Firewall / Defender exclsuions are a risk**.
|
||||
|
||||
By creating exclsuions, you understand the risks of allowing programs on your PC and opening up ports on your home network to the public and therefore void the right to hold BeamMP accountable for **any and all** damages that may happen to you or your household.
|
||||
|
||||
We take no responsibility for any content on any externally linked services or websites.
|
||||
```
|
||||
|
||||
## 1. Исключение брандмауэра для BeamMP-Launcher.
|
||||
|
||||
1. Откройте `Windows Defender Firewall with advanced setting` .
|
||||
2. В окне нажмите `Inbound` , чтобы открыть вкладку исключений для входящих подключений.
|
||||
3. Нажмите `Create new rule` в правом верхнем углу, чтобы создать новое исключение.
|
||||
4. Выберите `Program` , чтобы создать исключение для конкретной программы.
|
||||
5. Введите полный путь к `BeamMP-Launcher.exe` . По умолчанию это будет `%appdata%\BeamMP-Launcher\BeamMP-Launcher.exe` без кавычек.
|
||||
6. Обязательно разрешите подключение
|
||||
7. Дайте исключению имя (например, «BeamMP-Launcher») и сохраните его.
|
||||
8. Перезагрузите компьютер.
|
||||
|
||||
## 2. Исключение антивируса для BeamMP-Launcher.
|
||||
|
||||
1. Откройте приложение `Windows Security` .
|
||||
2. Нажмите на первый пункт `virus and threat protection` .
|
||||
3. Нажмите `Manage settings` в разделе «Параметры защиты от вирусов и угроз».
|
||||
4. Прокрутите страницу вниз, чтобы перейти на вкладку `Exclusions` .
|
||||
5. Там нажмите «Добавить исключение» и выберите `process` .
|
||||
6. Введите `BeamMP-Launcher.exe` в поле и сохраните его.
|
||||
7. Перезагрузите компьютер.
|
||||
|
||||
## Все еще сталкиваетесь с проблемами?
|
||||
|
||||
Откройте тему на [форуме](https://forum.beammp.com) или на нашем [сервере Discord](https://discord.gg/beammp) в канале `#support` .
|
||||
45
docs/ru/FAQ/How-to-check-for-CGNAT.md
Normal file
45
docs/ru/FAQ/How-to-check-for-CGNAT.md
Normal file
@@ -0,0 +1,45 @@
|
||||
Как проверить наличие CGNAT?
|
||||
|
||||
## Проблема
|
||||
|
||||
Все исключения брандмауэра и правила переадресации портов настроены правильно, но никто не может подключиться к вашему домашнему серверу?
|
||||
|
||||
Если у вас проблемы с подключением и вы используете Hosting-Service, обратитесь к ним за помощью. Если вы хотите использовать VPS или не можете разместить сервер дома, взгляните на наш [список партнерских хостинговых услуг](../../server/create-a-server/#partnered-hosting-services-paid) (Документация по настройке сервера).
|
||||
|
||||
# Что такое CGNAT?
|
||||
|
||||
Подробное объяснение того, что такое CGNAT и почему это может стать проблемой при попытке размещения сервера дома, можно найти на [этой странице](https://en.wikipedia.org/wiki/Carrier-grade_NAT) .
|
||||
|
||||
# Как проверить наличие CGNAT?
|
||||
|
||||
## Метод 1:
|
||||
|
||||
Откройте командную строку, запустите `tracert -4 beammp.com` . Это выведет серию сетевых переходов. Дождитесь завершения операции (может занять до 30 переходов). Проверьте первые несколько IP-адресов после IP вашего маршрутизатора/модема/шлюза. Если после первого перехода появляется несколько IP-адресов в диапазоне `100.64.xx` - `100.127.xx` или `10.xx.xx.xx` , скорее всего, вы находитесь за CGNAT.
|
||||
|
||||
!!!примечание
|
||||
|
||||
```
|
||||
The first hop will be your Router/Modem/Gateway and differs between Devices.
|
||||
The official ranges for local networks are as follows: ``10.0.0.xxx`` - ``192.168.xxx.xxx`` - ```172.16.xxx.xxx``
|
||||
```
|
||||
|
||||
## Метод 2:
|
||||
|
||||
Узнайте WAN IP на вашем маршрутизаторе, посмотрев его на его интерфейсе. Сравните его с IP, опубликованным, например, на https://whatsmyip.org. Если они НЕ совпадают, вы находитесь за CGNAT.
|
||||
|
||||
## Метод 3/Решение:
|
||||
|
||||
Обратитесь за помощью к своему интернет-провайдеру. В зависимости от вашего интернет-провайдера, они могут не предлагать выделенные *динамические* IP-адреса. Помните, что статический IP-адрес не является обязательным.
|
||||
|
||||
!!! предупреждение
|
||||
|
||||
```
|
||||
Internet Service Providers may only offer dedicated IP addresses as a **paid option**.
|
||||
Please check the prices of our partnered hosting services as they could be cheaper than this fee!
|
||||
```
|
||||
|
||||
Пример сети, не являющейся CGNAT:
|
||||
|
||||

|
||||
|
||||
Теги: Сервер, 10060 10061, CGNAT, Сбой подключения, Переадресация портов, Брандмауэр
|
||||
20
docs/ru/FAQ/Update-launcher.md
Normal file
20
docs/ru/FAQ/Update-launcher.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Проблема
|
||||
|
||||
Launcher не может обновиться или показывает пустой экран? Это краткое руководство объясняет, как вручную обновить Launcher.
|
||||
|
||||
!!! примечание
|
||||
|
||||
```
|
||||
You should have already used or installed BeamMP using the installer provided by [our website](https://beammp.com) before continuing.
|
||||
```
|
||||
|
||||
# Загрузка и установка нового лаунчера
|
||||
|
||||
1. Загрузите последнюю версию Launcher напрямую с [GitHub](https://github.com/BeamMP/BeamMP-Launcher/releases/latest/download/BeamMP-Launcher.exe) .
|
||||
2. Перейдите в каталог BeamMP-Launcher.exe. По умолчанию эта папка находится в `C:\Users\<username>\AppData\Roaming\` . Заменить<username> с именем пользователя вашего Windows. Если вы установили BeamMP в другом месте, например <code>D:\BeamMP-Launcher</code> , то поместите Launcher в соответствующую папку BeamMP-Launcher.</username>
|
||||
3. Если применимо, замените существующий Launcher новым в папке BeamMP-Launcher.
|
||||
4. Запустите BeamMP-Launcher как обычно, чтобы проверить его работу.
|
||||
|
||||
## Проблема все еще не решена?
|
||||
|
||||
Создайте тикет поддержки на нашем [сервере Discord](https://discord.gg/BeamMP) . Теги: Launcher, скачать,
|
||||
64
docs/ru/FAQ/game-faq.md
Normal file
64
docs/ru/FAQ/game-faq.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Часто задаваемые вопросы
|
||||
|
||||
Список часто задаваемых вопросов.
|
||||
|
||||
---
|
||||
|
||||
## **Клиент**
|
||||
|
||||
---
|
||||
|
||||
### **Как установить BeamMP?**
|
||||
|
||||
Полное руководство по установке BeamMP на Windows можно найти [здесь](https://docs.beammp.com/game/getting-started/) .
|
||||
|
||||
---
|
||||
|
||||
### **Работает ли BeamMP на взломанной версии BeamNG?**
|
||||
|
||||
BeamMP не будет работать с пиратскими или устаревшими версиями BeamNG.drive. Команда поддержки BeamMP не предлагает поддержку по проблемам с пиратскими / устаревшими копиями.
|
||||
|
||||
---
|
||||
|
||||
### **Работает ли BeamMP на Linux?**
|
||||
|
||||
Клиент официально не поддерживается в Linux. Однако вы можете следовать нашему [руководству по использованию BeamMP в Linux](../game/getting-started/#2b-linux-installation)
|
||||
|
||||
---
|
||||
|
||||
### **Почему мой антивирус или Защитник Windows помечает лаунчер?**
|
||||
|
||||
Некоторые антивирусные программы могут помечать BeamMP как угрозу из-за его взаимодействия с сетью и другими вещами. В коде **нет вирусов** . Код для лаунчера, сервера и клиента lua можно найти на нашем [GitHub](https://github.com/BeamMP) .
|
||||
|
||||
---
|
||||
|
||||
### **У меня плохая производительность игрового процесса. Что мне делать?**
|
||||
|
||||
Мы прилагаем все усилия, чтобы сделать многопользовательский режим максимально стабильным. Если вы уже снизили графические настройки, а производительность все еще низкая, рассмотрите возможность игры на сервере с меньшим количеством игроков. Игра в основном зависит от CPU, когда вы играете с большим количеством людей, поэтому старые CPU (даже четырехъядерные) будут страдать, если людей больше, чем горстка. (Общее практическое правило: 1 машина на поток CPU)
|
||||
|
||||
---
|
||||
|
||||
## **Разнообразный**
|
||||
|
||||
---
|
||||
|
||||
### **Где я могу найти код?**
|
||||
|
||||
Весь исходный код можно найти на нашем [GitHub](https://github.com/BeamMP) . Перед внесением любых изменений помните, что код подчиняется нашим [Условиям использования](https://forum.beammp.com/t/terms-of-use-v1-0/43) и лицензиям:
|
||||
|
||||
Код | Лицензия
|
||||
--- | :-:
|
||||
Сервер | [ЛИЦЕНЗИЯ](https://github.com/BeamMP/BeamMP-Server/blob/master/LICENSE)
|
||||
Пусковая установка | [ЛИЦЕНЗИЯ](https://github.com/BeamMP/BeamMP-Launcher/blob/master/LICENSE)
|
||||
Клиент Луа | [ЛИЦЕНЗИЯ](https://github.com/BeamMP/BeamMP/blob/development/LICENSE)
|
||||
|
||||
---
|
||||
|
||||
### **Я нашел ошибку или эксплойт, что мне делать?**
|
||||
|
||||
Если проблема связана с кодом, и вы знаете, как использовать Github, откройте новую «Проблему» в соответствующем репозитории на нашем [GitHub](https://github.com/BeamMP) . Мы используем рабочий процесс, основанный на проблемах, поэтому даже если у вас уже есть исправление ошибки, рассмотрите возможность открытия новой «Проблемы», а затем откройте «Запрос на извлечение» с решениями для проблемы. Более подробную информацию о содействии можно найти [здесь](https://github.com/BeamMP/BeamMP/blob/development/CONTRIBUTING.md) .
|
||||
|
||||
Если у вас нет учетной записи GitHub, вы не знаете, как пользоваться GitHub, или у вас есть другие вопросы, вы можете связаться с нами следующими способами:
|
||||
|
||||
- Если это не что-то деликатное, вы можете создать сообщение на нашем [форуме BeamMP](https://forum.beammp.com) или сообщить об этом на нашем [официальном Discord](https://discord.gg/beammp) .
|
||||
- Если информация конфиденциальная, вы можете напрямую сообщить о проблеме нашему сотруднику в [Discord](https://discord.gg/beammp) .
|
||||
22
docs/ru/FAQ/player-faq.md
Normal file
22
docs/ru/FAQ/player-faq.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Часто задаваемые вопросы игроков
|
||||
|
||||
## Как привязать свой аккаунт Discord?
|
||||
|
||||
Связывание аккаунтов Discord и BeamMP — это новая функция BeamMP. Для этого вам нужно отправить `!link` в виде сообщения боту [BeamMP Accounts](https://discordapp.com/channels/@me/1201234743568634026/) . Бот ответит ссылкой для входа в ваш аккаунт BeamMP. Просто войдите в свой аккаунт BeamMP, после этого вы получите второе сообщение о том, что он успешно связал ваши аккаунты. 🎉
|
||||
|
||||
## Как получить ранний доступ?
|
||||
|
||||
Ранний доступ (включая фиолетовую метку и другие преимущества) можно получить, поддержав нас финансово на [Patreon](https://patreon.com/BeamMP) , купив уровень, сделав пожертвование или ускорив сервер Discord. Пожертвование **x** суммы в долларах США = **x** дополнительных ключей сервера, включая преимущества EA. Ускорение дает вам +4 ключа сервера в дополнение к преимуществам EA.
|
||||
|
||||
## Я подписался на Patreon. Как мне получить свои привилегии?
|
||||
|
||||
Чтобы автоматически получать бонусы, обязательно выполните следующие действия:
|
||||
|
||||
1. Привяжите свой аккаунт Discord к Patreon, чтобы получить роли и доступ на сервере Discord.
|
||||
2. Пожалуйста, убедитесь, что вы используете тот же адрес электронной почты на Patreon, что и для вашей учетной записи BeamMP на [форуме](https://forum.beammp.com/) .
|
||||
|
||||
Пожалуйста, будьте терпеливы, синхронизация системы может занять несколько часов, иногда до 12. Если вы не получили свои бонусы в течение 12 часов и выполнили вышеуказанные шаги, обратитесь в службу поддержки BeamMP.
|
||||
|
||||
## У меня есть еще вопросы!
|
||||
|
||||
Если ваш вопрос или проблема связаны с Игрой или процессом, пожалуйста, обратитесь к разделу [FAQ по Играм](game-faq.md) . Если ваш вопрос или проблема связаны с запуском Сервера, пожалуйста, обратитесь к разделу [FAQ по Серверу](server-faq.md) . В противном случае, пожалуйста, посетите [форумы](https://forum.beammp.com/c/faq/35) , где сообщество может задавать вопросы и получать ответы.
|
||||
21
docs/ru/beamng/dev/content/maps.md
Normal file
21
docs/ru/beamng/dev/content/maps.md
Normal file
@@ -0,0 +1,21 @@
|
||||
!!! внимание "Этот сайт находится в стадии разработки!"
|
||||
|
||||
```
|
||||
Над этим сайтом ведется активная работа.
|
||||
|
||||
Чувствуете, что можете помочь? Пожалуйста, сделайте это, нажав на страницу с карандашом справа!
|
||||
|
||||
Это можно сделать на любой странице.
|
||||
```
|
||||
|
||||
# Создание карты для BeamNG.drive
|
||||
|
||||
...
|
||||
|
||||
## Введение
|
||||
|
||||
...
|
||||
|
||||
## Начало работы
|
||||
|
||||
...
|
||||
21
docs/ru/beamng/dev/content/props.md
Normal file
21
docs/ru/beamng/dev/content/props.md
Normal file
@@ -0,0 +1,21 @@
|
||||
!!! внимание "Этот сайт находится в стадии разработки!"
|
||||
|
||||
```
|
||||
Над этим сайтом ведется активная работа.
|
||||
|
||||
Чувствуете, что можете помочь? Пожалуйста, сделайте это, нажав на страницу с карандашом справа!
|
||||
|
||||
Это можно сделать на любой странице.
|
||||
```
|
||||
|
||||
# Создание пропсов для BeamNG.drive
|
||||
|
||||
...
|
||||
|
||||
## Введение
|
||||
|
||||
...
|
||||
|
||||
## Начало работы
|
||||
|
||||
...
|
||||
21
docs/ru/beamng/dev/content/vehicles.md
Normal file
21
docs/ru/beamng/dev/content/vehicles.md
Normal file
@@ -0,0 +1,21 @@
|
||||
!!! внимание "Этот сайт находится в стадии разработки!"
|
||||
|
||||
```
|
||||
Над этим сайтом ведется активная работа.
|
||||
|
||||
Чувствуете, что можете помочь? Пожалуйста, сделайте это, нажав на страницу с карандашом справа!
|
||||
|
||||
Это можно сделать на любой странице.
|
||||
```
|
||||
|
||||
# Создание автомобиля для BeamNG.drive
|
||||
|
||||
...
|
||||
|
||||
## Введение
|
||||
|
||||
...
|
||||
|
||||
## Начало работы
|
||||
|
||||
...
|
||||
11
docs/ru/beamng/dev/index.md
Normal file
11
docs/ru/beamng/dev/index.md
Normal file
@@ -0,0 +1,11 @@
|
||||
!!! внимание "Этот сайт находится в стадии разработки!"
|
||||
|
||||
```
|
||||
Над этим сайтом ведется активная работа.
|
||||
|
||||
Чувствуете, что можете помочь? Пожалуйста, сделайте это, нажав на страницу с карандашом справа!
|
||||
|
||||
Это можно сделать на любой странице.
|
||||
```
|
||||
|
||||
# Введение в разработку BeamNG.drive
|
||||
3
docs/ru/beamng/dev/modding/imgui-windows.md
Normal file
3
docs/ru/beamng/dev/modding/imgui-windows.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# imgui-windows.md
|
||||
|
||||
Эту страницу нужно заполнить
|
||||
3
docs/ru/beamng/dev/modding/lua-mods.md
Normal file
3
docs/ru/beamng/dev/modding/lua-mods.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# lua-mods.md
|
||||
|
||||
Эту страницу нужно заполнить
|
||||
273
docs/ru/beamng/dev/modding/ui-apps.md
Normal file
273
docs/ru/beamng/dev/modding/ui-apps.md
Normal file
@@ -0,0 +1,273 @@
|
||||
# Создание UI-приложения
|
||||
|
||||
Для создания UI-приложения вам понадобятся некоторые знания фреймворка AngularJS, основную документацию можно найти здесь: [AngularJS docs](https://docs.angularjs.org/guide)
|
||||
|
||||
## Структура файла
|
||||
|
||||
Для работы UI-приложения необходимы четыре важных файла:
|
||||
|
||||
- app.js | Содержит основной код, используемый [документацией UI-приложения Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
|
||||
- app.html | Код, который отображает [HTML-документы](https://developer.mozilla.org/fr/docs/Web/HTML) вашего приложения
|
||||
- app.json | Содержит информацию о UI-приложении
|
||||
- app.png | Файл изображения, отображаемый в селекторе приложений
|
||||
|
||||
### Стиль UI-приложения
|
||||
|
||||
Мы рекомендуем использовать тег `<style>` для стилизации вашего приложения. Файл .css тоже подойдет, но вы не сможете видеть изменения в режиме реального времени.
|
||||
|
||||
## Пример
|
||||
|
||||
Этот пример от DanielW. Отдельная ему благодарность
|
||||
|
||||
ui\modules\apps\ExampleApp\app.html
|
||||
|
||||
```html
|
||||
<div style="width: 100%; height: 100%;" class="bngApp">
|
||||
<link type="text/css" rel="stylesheet" href="/ui/modules/apps/ExampleApp/app.css" />
|
||||
|
||||
<div id="exampleAppContainer">
|
||||
<span>Gear: <span>{{ gearName }}</span></span>
|
||||
|
||||
<div layout="row" layout-align="center center">
|
||||
<md-input-container flex>
|
||||
<label>Input</label>
|
||||
<input ng-model="message" ng-keydown="sendMessage($event)">
|
||||
</md-input-container>
|
||||
|
||||
<md-button md-no-ink class="md-warn" ng-disabled="!message" ng-click="sendMessage()">Send</md-button>
|
||||
</div>
|
||||
|
||||
<span style="display: block">Messages:</span>
|
||||
|
||||
<!-- Scroll Area -->
|
||||
<ul bng-nav-scroll style="margin: 0; padding: 0; overflow-y: auto; width: 100%; height: 100%; background-color: #37373740;">
|
||||
|
||||
<!-- Iterate over the messages and display them -->
|
||||
<li ng-repeat="message in messages track by $index" style="display: flex; align-items: center; height: 35px;">
|
||||
<span style="padding: 0 0.2em; width: 100%;">{{ message }}</span>
|
||||
|
||||
<!-- Button to delete the message, this calls the `deleteMessage` function in `app.js` -->
|
||||
<md-button md-no-ink class="md-icon-button md-warn" ng-click="deleteMessage($index)">
|
||||
<md-icon class="material-icons">delete</md-icon>
|
||||
</md-button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
```
|
||||
|
||||
Здесь вы можете увидеть тег `<span>` , отображающий передачу вашего транспортного средства, входные данные, используемые для отправки сообщения функции `sendMessage()` в Javascript, и повторяющийся тег `<li>` использующий <b>ng-repeat</b> для переменной `messages` , расположенной в Javascript.
|
||||
|
||||
ui\modules\apps\ExampleApp\app.js
|
||||
|
||||
```js
|
||||
angular.module('beamng.apps')
|
||||
.directive('exampleApp', [function() {
|
||||
return {
|
||||
templateUrl: '/ui/modules/apps/ExampleApp/app.html',
|
||||
replace: true,
|
||||
restrict: 'EA',
|
||||
scope: true,
|
||||
|
||||
controller: ['$scope', function($scope) {
|
||||
$scope.gearName = '0'
|
||||
$scope.message = ''
|
||||
$scope.messages = []
|
||||
|
||||
// Setup the streams we want. For now, we only want the engine information. You can add more, you'll just have to look around to find the different streams
|
||||
let steamList = ['engineInfo']
|
||||
StreamsManager.add(steamList)
|
||||
|
||||
$scope.$on('destroy', function() {
|
||||
StreamsManager.remove(steamList)
|
||||
})
|
||||
|
||||
// Do I even need to put this comment here explaining what this function does?
|
||||
// Well, I have done it for a lot of other things when they weren't needed. I'll leave this one be...
|
||||
$scope.$on('streamsUpdate', function(event, streams) {
|
||||
if (!streams.engineInfo) // Early return... You probably noticed that without this useless comment though
|
||||
return;
|
||||
|
||||
// `lua/vehicle/controller/vehicleController.lua:538` (or use console.log)
|
||||
let gear = streams.engineInfo[5]
|
||||
|
||||
// Update the gear name in HTML if needed
|
||||
if ($scope.gearName !== gear)
|
||||
$scope.gearName = gear
|
||||
})
|
||||
|
||||
$scope.sendMessage = function(event) {
|
||||
if (event && event.key !== 'Enter')
|
||||
return
|
||||
|
||||
if ($scope.message == '')
|
||||
return
|
||||
|
||||
// Forward the message to the Lua extension to modify it
|
||||
bngApi.engineLua('extensions.exampleMod.modifyMessage("' + $scope.message + '")')
|
||||
$scope.message = ''
|
||||
}
|
||||
|
||||
$scope.deleteMessage = function(idx) {
|
||||
$scope.messages.splice(idx, 1)
|
||||
}
|
||||
|
||||
// The `modifyMessage` function will call this hook with the modified data
|
||||
$scope.$on('MessageReady', function(_, modifiedMessage) {
|
||||
$scope.messages.push(modifiedMessage)
|
||||
});
|
||||
}]
|
||||
}
|
||||
}])
|
||||
```
|
||||
|
||||
Обратите внимание на использование <b>$scope{/b0} . Это очень важно, поскольку вам нужно будет определить переменные и функции в {b1}$scope</b> , чтобы иметь возможность доступа к ним из <b>Html</b> внутри любого тега <b>ng-*</b> . Таким образом, в этом примере после выполнения функции `sendMessage()` из <b>Html</b> она отправит его в файл lua, расположенный в каталоге расширений мода, и выполнит функцию `modifyMessage()` внутри этого файла lua.
|
||||
|
||||
Пример того, как может выглядеть сторона lua:
|
||||
|
||||
```lua
|
||||
local function modifyMessage(message)
|
||||
message = message .. " [Modified!]"
|
||||
guihooks.trigger('MessageReady', message)
|
||||
end
|
||||
```
|
||||
|
||||
^ Это упрощенная версия lua, просто показывающая функцию.
|
||||
|
||||
Основное внимание здесь уделяется использованию <b>guihooks.trigger</b> , который запускает событие AngularJS, определенное с помощью `$scope.$on()` . Как вы можете видеть в самом низу файла Javascript, событие называется MessageReady и будет выполнено функцией <b>guihooks.trigger</b> с полезной нагрузкой сообщения, а затем будет помещено в переменную `$scope.messages` для отображения тегом li с помощью <b>ng-repeat</b> в файле <b>Html.</b>
|
||||
|
||||
Полный файл lua находится ниже
|
||||
|
||||
lua\ge\extensions\exampleMod.lua
|
||||
|
||||
```lua
|
||||
local M = {}
|
||||
|
||||
--[[
|
||||
This is the entry point of our extension, this is what the game loads from our `modScript.lua`.
|
||||
In the modScript file, you can load more extensions and put them in the same directory as this file.
|
||||
|
||||
In this file, we will communicate with the following:
|
||||
1. Our vehicle extension. That extension tells this extension when to send it data, and we send it. Take a look at `vehicle/extensions/auto/exampleVehicleExtension.lua`
|
||||
2. Input. Take a look at `core/input/actions/myActions.json`. When the bounded key is pressed, it will call `onActionKeyDown` (a function we export below)
|
||||
]]
|
||||
|
||||
-- Game Function Hooks
|
||||
--------------------------------------------
|
||||
local function onExtensionLoaded()
|
||||
log('D', "onExtensionLoaded", "Called")
|
||||
end
|
||||
|
||||
local function onExtensionUnloaded()
|
||||
log('D', "onExtensionUnloaded", "Called")
|
||||
end
|
||||
|
||||
-- Custom Functions
|
||||
--------------------------------------------
|
||||
local function onActionKeyDown()
|
||||
log('D', "onActionKeyDown", "Pressed!")
|
||||
end
|
||||
|
||||
local function onVehicleExtensionLoaded(vehID)
|
||||
log('D', "onVehicleExtensionLoaded", "Sending some data to the vehicle")
|
||||
|
||||
local veh = be:getObjectByID(vehID) -- If you don't have the ID, you can also use `be:getPlayerVehicle(0)` to get the current vehicle.
|
||||
if not veh then return end -- The usual error checking
|
||||
|
||||
local data = {
|
||||
["name"] = "Daniel W"
|
||||
}
|
||||
|
||||
veh:queueLuaCommand("extensions.exampleVehicleExtension.onDataReceived('" .. jsonEncode(data) .. "')")
|
||||
end
|
||||
|
||||
local function modifyMessage(message)
|
||||
message = message .. " [Modified!]"
|
||||
guihooks.trigger('MessageReady', message)
|
||||
end
|
||||
|
||||
-- Export Interface
|
||||
--------------------------------------------
|
||||
M.onExtensionLoaded = onExtensionLoaded
|
||||
M.onExtensionUnloaded = onExtensionUnloaded
|
||||
|
||||
M.onActionKeyDown = onActionKeyDown
|
||||
M.onVehicleExtensionLoaded = onVehicleExtensionLoaded
|
||||
M.modifyMessage = modifyMessage
|
||||
|
||||
--[[ Other functions could include:
|
||||
- onPreRender(dtReal, dtSim, dtRaw)
|
||||
- onUpdate(dtReal, dtSim, dtRaw)
|
||||
- onClientPreStartMission(levelPath)
|
||||
- onClientPostStartMission(levelPath)
|
||||
|
||||
To find all of these, search the following in `BeamNG.Drive/lua`: `extensions.hook(`
|
||||
--]]
|
||||
|
||||
return M
|
||||
```
|
||||
|
||||
Обратите внимание, что очень важно вернуть переменную M (модуль) с необходимыми функциями внутри! Например, без строки `M.modifyMessage = modifyMessage` функция `bngApi.engineLua('extensions.exampleMod.modifyMessage("' + $scope.message + '")')` не сможет найти функцию modifyMessage()
|
||||
|
||||
ui\modules\apps\ExampleApp\app.css
|
||||
|
||||
```css
|
||||
#exampleAppContainer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
#exampleAppContainer > * {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
```
|
||||
|
||||
ui\modules\apps\ExampleApp\app.json
|
||||
|
||||
```json
|
||||
{
|
||||
"domElement": "<example-app></example-app>",
|
||||
"name": "Example App",
|
||||
"types": [
|
||||
"ui.apps.categories.debug"
|
||||
],
|
||||
"description": "example-app",
|
||||
"css": {
|
||||
"left": "0px",
|
||||
"height": "auto",
|
||||
"width": "270px",
|
||||
"min-width": "200px",
|
||||
"min-height": "90px",
|
||||
"top": "0px"
|
||||
},
|
||||
"author": "Daniel W",
|
||||
"version": "0.1",
|
||||
"directive": "exampleApp"
|
||||
}
|
||||
```
|
||||
|
||||
Директива должна быть такой же, как в файле <b>Javascript.</b>
|
||||
|
||||
# Функции Javascript, предоставляемые BeamNG для UI-приложений
|
||||
|
||||
```js
|
||||
bngApi.engineLua("lua_path.function()")
|
||||
```
|
||||
|
||||
Полезно для запуска функции lua с аргументами или без них.
|
||||
|
||||
# Функции Lua, предоставляемые BeamNG для UI-приложений
|
||||
|
||||
```lua
|
||||
guihooks.trigger("EventName", Payload)
|
||||
```
|
||||
|
||||
Полезная нагрузка может быть любого типа, но лучше хранить ее в виде массива/объекта или строки, чтобы она не потерялась.
|
||||
|
||||
<b>ВАЖНО</b> : Иногда может случиться так, что имя события, которое вы используете, уже используется внутри чего-то другого, и это вызовет проблемы, поэтому, например, если ваше приложение называется Nickel, хорошей практикой будет называть каждое событие Angular как NKEventName вместо EventName.
|
||||
43
docs/ru/contributing.md
Normal file
43
docs/ru/contributing.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Участие в разработке BeamMP Docs
|
||||
|
||||
BeamMP использует [Material for MkDocs](https://squidfunk.github.io/mkdocs-material) в качестве своей темы. Это тема для [MkDocs](https://www.mkdocs.org) . Полную документацию можно найти на их соответствующих сайтах.
|
||||
|
||||
## Начало работы
|
||||
|
||||
Чтобы внести свой вклад в эти документы, вы можете воспользоваться одним из двух подходов, изложенных ниже:
|
||||
|
||||
### 1. Редактировать необработанные файлы разметки
|
||||
|
||||
Редактирование необработанных файлов markdown — самый быстрый подход, который лучше всего подходит для быстрых правок, таких как орфография, грамматика или новые фрагменты контента. Однако этот подход требует предварительного знания markdown, поскольку вам нужно будет понимать, что даст ваш вклад.
|
||||
|
||||
Если вы предпочитаете именно этот подход, выполните следующие действия:
|
||||
|
||||
1. Нажмите «Изменить» на странице, которую вы хотите отредактировать.
|
||||
2. Создайте форк проекта в своей учетной записи GitHub.
|
||||
3. Внесите необходимые изменения.
|
||||
4. Сохраните изменения в своем форке.
|
||||
5. Подайте запрос на включение изменений в наш репозиторий [здесь](https://github.com/BeamMP/Docs).
|
||||
|
||||
После того, как вы создали свой pull request, один из руководителей BeamMP Mod Team рассмотрит ваш pull request и либо одобрит его, либо запросит некоторые изменения. Если изменения были запрошены и вы их выполнили, мы повторно рассмотрим ваш pull request. Затем ваши изменения будут объединены в репозиторий и автоматически развернуты в рамках нашей непрерывной интеграции.
|
||||
|
||||
### 2. Вносите изменения с предварительным просмотром в реальном времени
|
||||
|
||||
Редактирование наших документов таким способом по-прежнему будет осуществляться по тому же принципу, что и в варианте 1, однако вы сможете предварительно просмотреть свои изменения.
|
||||
|
||||
1. Нажмите «Изменить» на странице, которую вы хотите отредактировать.
|
||||
2. Создайте форк проекта в своей учетной записи GitHub.
|
||||
3. Клонируйте проект локально.
|
||||
4. Настройка материалов для MkDocs в соответствии с их руководством [здесь](https://squidfunk.github.io/mkdocs-material/getting-started/).
|
||||
5. Запустите `mkdocs serve` , чтобы запустить сервер документации с функцией перезагрузки в реальном времени, на который вы клонировали форк.
|
||||
6. Внесите изменения, которые считаете нужными.
|
||||
7. Сохраните изменения в своем форке.
|
||||
8. Подайте запрос на включение изменений в наш репозиторий [здесь](https://github.com/BeamMP/Docs).
|
||||
|
||||
## Макет проекта
|
||||
|
||||
```
|
||||
mkdocs.yml # The configuration file.
|
||||
docs/
|
||||
index.md # The documentation homepage.
|
||||
... # Other markdown pages, images and other files.
|
||||
```
|
||||
24
docs/ru/game/error-codes.md
Normal file
24
docs/ru/game/error-codes.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Коды ошибок
|
||||
|
||||
На этой странице содержатся все коды ошибок, которые может отображать лаунчер.
|
||||
|
||||
---
|
||||
|
||||
Код | Описание | Возможное решение
|
||||
--- | --- | ---
|
||||
10048 | Что-то другое уже использует порт запуска | Убедитесь, что одновременно запущен только ОДИН экземпляр BeamMP-Launcher. Попробуйте перезагрузить ПК.
|
||||
10038 / 10060 / 10061 | Ни один сервер не ответил по указанному IP-адресу и/или порту | Если вы являетесь владельцем сервера, проверьте правила переадресации портов и/или брандмауэра, найденные на [BeamMP-Server](https://docs.beammp.com/server/create-a-server) . Если вы не являетесь владельцем сервера, выберите другой сервер или свяжитесь с владельцем, если он вам известен.
|
||||
10054 | Сброс соединения пиром | Сервер, к которому вы подключаетесь, отключился.
|
||||
Не удалось найти игру, пожалуйста, запустите ее. Сообщите об этом, если проблема сохранится код 3. | Лаунчеру не удалось найти информацию об игре (каталог игры, каталог профиля, версию и т. д.) в записи реестра. | Запустите игру хотя бы один раз, чтобы создать значения реестра.
|
||||
Не удалось найти игру, пожалуйста, запустите ее. Сообщите об этом, если проблема сохранится код 4. | Программа запуска не смогла прочитать информацию об игре (каталог игры, каталог профиля, версию и т. д.) в записи реестра. | Эта ошибка чаще всего появляется у пользователей с **пиратскими копиями** игры. Если вы купили игру, запустите ее хотя бы один раз, чтобы были созданы значения реестра.
|
||||
Не удалось запустить игру! Лаунчер скоро закроется | Лаунчеру не удалось найти исполняемый файл игры. | Запустите игру хотя бы один раз, прежде чем снова запускать лаунчер.
|
||||
Игра закрыта! Лаунчер скоро закроется | Игра была закрыта. | Это сообщение появится при закрытии игры или если игра не запустится.
|
||||
Обновление лаунчера не удалось! | Лаунчеру не удалось загрузить новую версию | Проверьте подключение к Интернету и правила брандмауэра/антивируса, чтобы лаунчер не был заблокирован.
|
||||
Ошибка инициализации файла регистратора | Лаунчер не имеет возможности создавать файлы | Запустите лаунчер от имени администратора.
|
||||
Пожалуйста, закройте игру и попробуйте еще раз. | Игра уже открыта и лаунчер не может очистить папку `multiplayer/mods` | Закройте игру и повторите попытку.
|
||||
Пожалуйста, запустите игру хотя бы один раз. | Программа запуска пыталась, но не смогла изменить каталог игры. | Запустите игру хотя бы один раз, прежде чем снова запускать лаунчер.
|
||||
Основные серверы офлайн! Извините за неудобства! | Лаунчеру не удалось проверить наличие обновления | Проверьте подключение к интернету и правила брандмауэра. Если с вашей стороны проблем нет, проверьте [канал обновлений BeamMP](https://discord.com/channels/601558901657305098/697596153943949352) на нашем Discord.
|
||||
Извините, произошел сбой в работе системы бэкэнда! Не волнуйтесь, скоро все заработает! | Бэкэнд BeamMP не ответил | Проверьте подключение к интернету и правила брандмауэра. Если с вашей стороны проблем нет, проверьте [канал обновлений BeamMP](https://discord.com/channels/601558901657305098/697596153943949352) на нашем Discord.
|
||||
Застрял при обновлении | Лаунчер завис на этапе обновления и не переходит к следующему шагу. | Запустите лаунчер от имени администратора и проверьте правила антивируса, чтобы лаунчер не блокировался.
|
||||
|
||||
Если лаунчер сразу закрывается, проверьте файл `Launcher.log` в папке, куда вы установили BeamMP.
|
||||
101
docs/ru/guides/mod-creation/server/getting-started.md
Normal file
101
docs/ru/guides/mod-creation/server/getting-started.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# Создание многопользовательских модов
|
||||
|
||||
## Структура папок и основы файлов
|
||||
|
||||
Базовая структура папок и файлов должна выглядеть следующим образом:
|
||||
|
||||
```
|
||||
Resources/
|
||||
├─ Client/
|
||||
│ └─ examplePlugin.zip/
|
||||
│ ├─ scripts/
|
||||
│ │ └─ modScript.lua
|
||||
│ └─ lua/
|
||||
│ └─ ge/
|
||||
│ └─ extensions/
|
||||
│ └─ examplePlugin.lua
|
||||
└─ Server/
|
||||
└─ examplePlugin/
|
||||
├─ examplePlugin.lua
|
||||
└─ further_lua/
|
||||
└─ further.lua
|
||||
```
|
||||
|
||||
Серверный lua — это необходимый минимум, если вы хотите добавлять пользовательские события, вам также понадобится как минимум клиентский lua, а также modscript.lua.
|
||||
|
||||
Папка Server должна содержать подпапки, по одной для каждого серверного мода. Хорошей практикой является наличие только одного основного файла lua и добавление дополнительных файлов lua в подпапки. Однако вам не обязательно это делать, сервер загрузит файлы lua в алфавитном порядке, если их несколько.
|
||||
|
||||
Папка Client содержит zip-файлы, которые отправляются клиенту, который затем загружает их как мод. Любые другие файлы в папке Client вызовут ошибку при запуске сервера, но за исключением этого будут игнорироваться сервером. ModScript.lua будет прочитан BeamNG и укажет игре, какой плагин загружать.
|
||||
|
||||
!!!example "" [Загрузите examplePlugin.zip](../../../../assets/content/ResourcesForExamplePlugin.zip)
|
||||
|
||||
## Серверный lua
|
||||
|
||||
В examplePlugin есть и другие примеры, но вот самый простой, выводящий идентификаторы игроков:
|
||||
|
||||
```lua
|
||||
function onInit() --runs when plugin is loaded
|
||||
|
||||
MP.RegisterEvent("onPlayerAuth", "onPlayerAuth") --Provided by BeamMP
|
||||
|
||||
print("examplePlugin loaded")
|
||||
end
|
||||
|
||||
--A player has authenticated and is requesting to join
|
||||
--The player's name (string), forum role (string), guest account (bool), identifiers (table -> ip, beammp)
|
||||
function onPlayerAuth(player_name, role, isGuest, identifiers)
|
||||
local ip = identifiers.ip
|
||||
local beammp = identifiers.beammp or "N/A"
|
||||
print("onPlayerAuth: player_name: " .. player_name .. " | role: " .. role .. " | isGuest: " .. tostring(isGuest) .. " | identifiers: ip: " .. ip .. " - beammp: " .. beammp)
|
||||
end
|
||||
```
|
||||
|
||||
`onPlayerAuth` срабатывает, как только игрок хочет присоединиться, см. также [onPlayerAuth в справочнике по скриптам](../../../scripting/server/latest-server-reference/#onplayerauth)
|
||||
|
||||
Еще один пример использования onPlayerAuth, но он запретит гостям присоединяться к серверу, отправив клиенту ответное сообщение, которое затем будет показано игроку:
|
||||
|
||||
```lua
|
||||
function onPlayerAuth(playerName, playerRole, isGuest, identifiers)
|
||||
if isGuest then
|
||||
return "No guests allowed, please use a BeamMP account"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Дополнительную информацию о серверных функциях, предоставляемых BeamMP, можно найти в [последнем справочнике по серверу.](../../../scripting/server/latest-server-reference.md)
|
||||
|
||||
## Клиентская часть lua
|
||||
|
||||
Это в значительной степени соответствует [расширениям BeamNG.](https://documentation.beamng.com/modding/programming/extensions/)
|
||||
|
||||
```lua
|
||||
local M = {}
|
||||
|
||||
if extensions.isExtensionLoaded("examplePlugin") then
|
||||
log("E", "examplePlugin", "examplePlugin loaded on client side")
|
||||
return
|
||||
end
|
||||
|
||||
return M
|
||||
```
|
||||
|
||||
Выводит на консоль информацию о том, что examplePlugin был загружен
|
||||
|
||||
Более подробную информацию см. в [документации beamNG по отладочным распечаткам.](https://documentation.beamng.com/modding/programming/debugging/#a-add-a-log)
|
||||
|
||||
## modScript.lua
|
||||
|
||||
Обычно содержит только две строки
|
||||
|
||||
```lua
|
||||
load('examplePlugin')
|
||||
setExtensionUnloadMode('examplePlugin', 'manual')
|
||||
```
|
||||
|
||||
Вы можете добавить вывод журнала, если хотите видеть в журналах, когда ваш modScript обрабатывается BeamNG.
|
||||
|
||||
```lua
|
||||
load('examplePlugin')
|
||||
setExtensionUnloadMode('examplePlugin', 'manual')
|
||||
log('I', 'modScript', "examplePlugin loaded")
|
||||
```
|
||||
45
docs/ru/scripting/mod-reference.md
Normal file
45
docs/ru/scripting/mod-reference.md
Normal file
@@ -0,0 +1,45 @@
|
||||
!!! предупреждение "Этот сайт находится в стадии разработки!"
|
||||
|
||||
```
|
||||
This site is being actively worked on.
|
||||
|
||||
Feel you could help? Please do by clicking on the page with a pencil on the right!
|
||||
|
||||
This can be done any page too.
|
||||
```
|
||||
|
||||
# Справочник по модам/внутриигровым скриптам
|
||||
|
||||
BeamMP также позволяет вам создавать собственные плагины на стороне клиента. Мы предоставили несколько функций, которые вы можете использовать для связи с другими многопользовательскими модами и другими игроками через сервер.
|
||||
|
||||
# Функции
|
||||
|
||||
Список доступных функций для написания скриптов:
|
||||
|
||||
Функция | Примечания
|
||||
--- | ---
|
||||
`TriggerServerEvent("eventName", "data")` | Запускает событие в серверной среде lua, оба параметра являются строками.
|
||||
`TriggerClientEvent("eventName", "data")` | Запускает событие в локальной среде lua, оба параметра — строки. Хорошо подходит для связи между плагинами.
|
||||
`AddEventHandler("eventName", Function)` | Добавляет 2-й параметр в таблицу, который будет вызываться при получении `eventName` (локально или с сервера). `Function` получит 1 параметр — строку, содержащую данные события.
|
||||
|
||||
# Фрагменты кода
|
||||
|
||||
Например, для анализа чата используйте включенное событие `ChatMessageIncluded` следующим образом:
|
||||
|
||||
```lua
|
||||
local function chatReceived(msg) -- Receive event with parameters
|
||||
print("chat received: "..msg)
|
||||
local i = string.find(s, ":") -- Find where our first ':' is, used to separate the sender and message
|
||||
if i == nil then
|
||||
print("error parsing message: separator could not be found!")
|
||||
return -- Could not find separator, cancel function
|
||||
end
|
||||
print("index of separator: "..tostring(i))
|
||||
local sender = string.sub(msg, 1, i-1) -- Substring our input to separate its 2 parts
|
||||
local message = string.sub(msg, i+1, -1) -- Do whatever you want to with the message
|
||||
print("sender: " .. sender)
|
||||
print("message: ".. message)
|
||||
end
|
||||
|
||||
AddEventHandler("ChatMessageReceived", chatReceived) -- Add our event handler to the list managed by BeamMP
|
||||
```
|
||||
1319
docs/ru/scripting/server/latest-server-reference.md
Normal file
1319
docs/ru/scripting/server/latest-server-reference.md
Normal file
File diff suppressed because it is too large
Load Diff
384
docs/ru/scripting/server/v2-server-reference.md
Normal file
384
docs/ru/scripting/server/v2-server-reference.md
Normal file
@@ -0,0 +1,384 @@
|
||||
!!! предупреждение "Этот сайт находится в стадии разработки!"
|
||||
|
||||
```
|
||||
This site is being actively worked on.
|
||||
|
||||
Feel you could help? Please do by clicking on the page with a pencil on the right!
|
||||
|
||||
This can be done any page too.
|
||||
```
|
||||
|
||||
# Справочник по серверным скриптам
|
||||
|
||||
## Версия сервера 2.X
|
||||
|
||||
!!! предупреждение
|
||||
|
||||
```
|
||||
BeamMP server version 2.X is now unsupported. This documentation is provided as a reference only.
|
||||
Please update to the latest version for maintenance and support.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> Это скрипт 2.x. Обращайтесь к нему только если ваш сервер старый/устаревший (версия 2.xx). Для получения последней документации см. [здесь](https://docs.beammp.com/scripting/server/latest-server-reference) . {.is-warning}
|
||||
|
||||
### Примечания
|
||||
|
||||
Чтобы получить вывод функции в консоли сервера, вам нужно обернуть его в оператор `print()` . Например: `print(GetPlayerName(0))` вернет имя первого игрока вашего сервера.
|
||||
|
||||
`<PlayersServerID>` начинается с 0.
|
||||
|
||||
### Список доступных функций для написания скриптов
|
||||
|
||||
#### GetPlayerName(идентификатор_сервера_игроков)
|
||||
|
||||
Возвращает имя игрока в Discord в виде строки
|
||||
|
||||
```lua
|
||||
function onPlayerJoin(playerID)
|
||||
local name = GetPlayerName(playerID)
|
||||
-- Do something
|
||||
end
|
||||
```
|
||||
|
||||
#### GetPlayerDiscordID(playersServerID)
|
||||
|
||||
Возвращает имя игрока в Discord в виде строки
|
||||
|
||||
```lua
|
||||
function onPlayerJoin(playerID)
|
||||
local name = GetPlayerDiscordID(playerID)
|
||||
-- Do something
|
||||
end
|
||||
```
|
||||
|
||||
#### GetPlayerHWID(идентификатор_сервера_игроков)
|
||||
|
||||
Возвращает идентификатор игрока в Discord в виде строки
|
||||
|
||||
```lua
|
||||
function onPlayerJoin(playerID)
|
||||
local name = GetPlayerHWID(playerID)
|
||||
-- Do something
|
||||
end
|
||||
```
|
||||
|
||||
#### GetPlayerVehicles(идентификатор_сервера_игроков)
|
||||
|
||||
Возвращает транспортные средства игрока в виде объекта/массива.
|
||||
|
||||
```lua
|
||||
function onChatMessage(playerID, senderName, message)
|
||||
local vehicleList = GetPlayerVehicles(playerID)
|
||||
for vehicleID, vehicleData in pairs(vehicleList) do
|
||||
-- Do something
|
||||
-- Could also be used to check how many vehicles a player have
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
#### DropPlayer(идентификатор_сервера_игроков)
|
||||
|
||||
Сбрасывает соединение для определенного игрока. По сути выгоняет его
|
||||
|
||||
```lua
|
||||
function onVehicleSpawn(playerID, vehicleID, vehicleData)
|
||||
-- Do something
|
||||
DropPlayer(playerID)
|
||||
end
|
||||
```
|
||||
|
||||
#### SendChatMessage(playersServerID, сообщение)
|
||||
|
||||
Отправляет сообщение по сети указанному пользователю. Используйте -1 для всех
|
||||
|
||||
```lua
|
||||
function onPlayerJoin(playerID)
|
||||
SendChatMessage(-1, "Someone just joined!")
|
||||
end
|
||||
```
|
||||
|
||||
#### CancelEvent() -- УСТАРЕЛО
|
||||
|
||||
Отменяет событие. Это может произойти скоро. Используйте `return 1` чтобы отменить событие.
|
||||
|
||||
#### onInit()
|
||||
|
||||
Если объявлено в файле lua, оно будет вызвано после того, как C++ успешно завершит загрузку текущего файла lua.
|
||||
|
||||
```lua
|
||||
function onInit()
|
||||
print("Server ready")
|
||||
end
|
||||
```
|
||||
|
||||
#### Выход()
|
||||
|
||||
Закрою сервер.
|
||||
|
||||
```lua
|
||||
function onInit()
|
||||
print("Server Ready. But who needs a server which is running")
|
||||
exit() -- Stops the server
|
||||
end
|
||||
```
|
||||
|
||||
#### CreateThread(имя_функции, интервал_вызова)
|
||||
|
||||
Функция будет выполняться в выделенном потоке, и она будет запускать callInterval раз в секунду. 1 = Она будет запускаться каждую секунду.
|
||||
|
||||
```lua
|
||||
function yourFunction()
|
||||
for i = 1,10 do
|
||||
SendChatMessage(-1, "Countdown: "..i)
|
||||
Sleep(1000)
|
||||
end
|
||||
end
|
||||
CreateThread("yourFunction", 30)
|
||||
```
|
||||
|
||||
УСТАРЕВШИЙ ПРИМЕР Функция будет выполняться в выделенном потоке
|
||||
|
||||
```lua
|
||||
function yourFunction()
|
||||
for i = 1,10 do
|
||||
SendChatMessage(-1, "Countdown: "..i)
|
||||
Sleep(1000)
|
||||
end
|
||||
end
|
||||
CreateThread("yourFunction", 30)
|
||||
```
|
||||
|
||||
#### StopThread(имя_функции)
|
||||
|
||||
Прекратит попытки вызвать функцию потока текущего скрипта.
|
||||
|
||||
```lua
|
||||
function yourFunction()
|
||||
delayExpired = false
|
||||
Sleep(10000)
|
||||
delayExpired = true
|
||||
end
|
||||
CreateThread("yourFunction", 30)
|
||||
-- Do something
|
||||
if not delayExpired then
|
||||
StopThread("yourFunction")
|
||||
else
|
||||
-- Do something
|
||||
end
|
||||
|
||||
```
|
||||
|
||||
#### Сон (миллисек) - ИЗНОС
|
||||
|
||||
Приостановит выполнение на указанное время (предупреждение: это приведет к приостановке всего сервера, если вы не создали поток)
|
||||
|
||||
```lua
|
||||
function countdown()
|
||||
for i = 1,10 do
|
||||
SendChatMessage(-1, "Countdown: "..i)
|
||||
Sleep(1000)
|
||||
end
|
||||
end
|
||||
CreateThread("countdown", 10)
|
||||
```
|
||||
|
||||
#### ПолучитьPlayerCount()
|
||||
|
||||
Вернет количество подключенных игроков
|
||||
|
||||
```lua
|
||||
function onPlayerJoin(playerID)
|
||||
SendChatMessage(playerID, "You are the "..GetPlayerCount().."th player!"
|
||||
end
|
||||
```
|
||||
|
||||
#### RemoveVehicle(playerServerID, VehicleID)
|
||||
|
||||
Исчезнет транспортное средство.
|
||||
|
||||
```lua
|
||||
function onVehicleSpawn(playerID, vehicleID, vehicleData)
|
||||
if --[[ Vehicle data equal something it shouldn't be ]] then
|
||||
RemoveVehicle(playerID, vehicleIID)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
#### ПолучитьИгроков()
|
||||
|
||||
Вернет таблицу идентификаторов с именами
|
||||
|
||||
```lua
|
||||
local function onPlayerJoin(joinedPlayerID)
|
||||
local players = GetPlayers()
|
||||
for playerID, playerName in pairs(players) do
|
||||
if playerID == joinedPlayerID then
|
||||
-- Do something
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
#### RegisterEvent(имя_события, имя_функции)
|
||||
|
||||
Зарегистрирует эту функцию для указанного события. Оба должны быть строками
|
||||
|
||||
```lua
|
||||
function anyEvent()
|
||||
-- Do something
|
||||
end
|
||||
RegisterEvent("onAnyEventHappen", "anyEvent")
|
||||
-- Do something
|
||||
TriggerLocalEvent("onAnyEventHappen")
|
||||
```
|
||||
|
||||
#### TriggerLocalEvent(имя_события)
|
||||
|
||||
Будет вызывать каждую зарегистрированную функцию в той же папке плагина.
|
||||
|
||||
```lua
|
||||
function anyEvent()
|
||||
-- Do something
|
||||
end
|
||||
RegisterEvent("onAnyEventHappen", "anyEvent")
|
||||
-- Do something
|
||||
TriggerLocalEvent("onAnyEventHappen")
|
||||
```
|
||||
|
||||
#### TriggerGlobalEvent(имя_события)
|
||||
|
||||
Будет вызывать каждую зарегистрированную функцию с этим именем события.
|
||||
|
||||
```lua
|
||||
-- File A
|
||||
function anyEvent()
|
||||
-- Do something
|
||||
end
|
||||
RegisterEvent("onAnyEventHappen", "anyEvent")
|
||||
```
|
||||
|
||||
```lua
|
||||
-- File B
|
||||
TriggerGlobalEvent("onAnyEventHappen")
|
||||
```
|
||||
|
||||
#### TriggerClientEvent(playerServerID, eventName, data)
|
||||
|
||||
Вызовет это событие с указанными данными на указанном клиенте (-1 для широковещательной передачи)
|
||||
|
||||
```lua
|
||||
function onPlayerJoin(playerServerID)
|
||||
TriggerClientEvent(playerServerID, "anyEvent", "You just joined the server")
|
||||
end
|
||||
RegisterEvent("onAnyEventHappen", "anyEvent")
|
||||
```
|
||||
|
||||
#### Установить(configID, newValue)
|
||||
|
||||
установит настройку конфигурации на новое указанное значение из таблицы ниже|
|
||||
|
||||
```lua
|
||||
function onChatMessage(playerID, senderName, message)
|
||||
if playerID == adminPlayer then
|
||||
if message == --[[ anything ]] then
|
||||
Set(3, 10)
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
#### Список доступных настроек конфигурации для команды `Set()`
|
||||
|
||||
> Обратите внимание, что они не будут сохранены в файле конфигурации.
|
||||
|
||||
Идентификатор конфигурации | Имя | Приму только
|
||||
--- | --- | ---
|
||||
`0` | Настройка отладки | правда или ложь
|
||||
`1` | Частная обстановка | правда или ложь
|
||||
`2` | Макс. количество автомобилей на игрока | число
|
||||
`3` | Макс. количество игроков | число
|
||||
`4` | Карта | нить
|
||||
`5` | Имя | нить
|
||||
`6` | Описание | нить
|
||||
любой другой идентификатор приведет к появлению предупреждения на консоли | |
|
||||
|
||||
### Список доступных событий для написания сценариев
|
||||
|
||||
#### События по умолчанию
|
||||
|
||||
Пример использования события:
|
||||
|
||||
```lua
|
||||
function onInit()
|
||||
RegisterEvent("onPlayerJoin", "onPlayerJoin")
|
||||
end
|
||||
|
||||
function onPlayerJoin(playerServerID)
|
||||
-- Do something
|
||||
end
|
||||
```
|
||||
|
||||
Если вы не хотите, чтобы на вашем сервере были гости:
|
||||
|
||||
```lua
|
||||
function onInit()
|
||||
print("noGuests Ready")
|
||||
RegisterEvent("onPlayerAuth","onPlayerAuth")
|
||||
end
|
||||
|
||||
function onPlayerAuth(name, role, isGuest)
|
||||
if isGuest then
|
||||
return "You must be signed in to join this server!"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Событие | Параметры | Описание
|
||||
--- | --- | ---
|
||||
`onPlayerAuth` | Имя игрока, роль на форуме, гостевая учетная запись (bool) | Игрок прошел аутентификацию и запрашивает присоединение
|
||||
`onPlayerConnecting` | Идентификатор игрока | Игрок загружается (до загрузки карты)
|
||||
`onPlayerJoining` | Идентификатор игрока | Игрок загружает карту и скоро присоединится
|
||||
`onPlayerJoin` | Идентификатор игрока | Игрок присоединился и загрузился
|
||||
`onPlayerDisconnect` | Идентификатор игрока | Игрок отключился
|
||||
`onChatMessage` | Идентификатор отправителя, имя и сообщение чата | Сообщение чата было отправлено. Это было бы хорошо для создания системы команд
|
||||
`onVehicleSpawn` | Идентификатор игрока, идентификатор транспортного средства и данные транспортного средства | Это называется, когда кто-то создает транспортное средство.
|
||||
`onVehicleEdited` | Идентификатор игрока, идентификатор транспортного средства и данные транспортного средства | Это называется, когда кто-то редактирует транспортное средство или заменяет существующее.
|
||||
`onVehicleDeleted` | Идентификатор игрока и идентификатор транспортного средства | Это называется, когда кто-то удаляет принадлежащее ему транспортное средство.
|
||||
|
||||
#### Пользовательские события
|
||||
|
||||
Пользовательские события также могут быть созданы для вашего собственного использования. Это делается примерно так же, как и события по умолчанию.
|
||||
|
||||
Пример использования пользовательского события:
|
||||
|
||||
```lua
|
||||
function onInit()
|
||||
RegisterEvent("myCustomEvent", "myCustomEvent")
|
||||
end
|
||||
|
||||
function myCustomEvent(playerServerID, customData)
|
||||
-- Do something
|
||||
end
|
||||
```
|
||||
|
||||
Затем его можно вызвать либо со стороны клиента, либо со стороны сервера, используя соответствующие функции.
|
||||
|
||||
### Игроки
|
||||
|
||||
Когда игрок подключается к вашему серверу, ему назначается serverID, начиная с 0 и далее. serverID используются повторно; если игрок покидает сервер и снова присоединяется, ему не будет назначен новый serverID, он просто получит другой доступный. Когда сервер перезапустится, serverID будут сброшены.
|
||||
|
||||
#### Статические идентификаторы
|
||||
|
||||
У игроков в BeamMP есть 3 статических идентификатора, которые можно получить из их serverID: имя, discordID и hardwareID или HWID. (Хотя последний из вышеупомянутых не реализован, мы будем действовать так, как будто он реализован). Каждый из трех типов идентификаторов имеет свое собственное происхождение и сильные/слабые стороны при использовании их для идентификации игрока.
|
||||
|
||||
ТИП ИДЕНТИФИКАТОРА | ПЛЮСЫ | МИНУСЫ | ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ
|
||||
--- | --- | --- | :-:
|
||||
имя | легко получить, просто | не безопасно | ПолучитьИмяИгрока()
|
||||
DiscordID | довольно безопасно | неудобно | GetPlayerDiscordID()
|
||||
HWID | чрезвычайно безопасно | трудно получить | GetPlayerHWID()
|
||||
|
||||
### Транспортные средства
|
||||
|
||||
У транспортных средств в beamMP есть 3 атрибута, на которые обращает внимание сервер: serverID владельца, vehicleID транспортного средства и его данные. ServerID владельца прост, это serverID, у каждого транспортного средства также есть ID, идентификаторы транспортных средств не уникальны для транспортного средства; два транспортных средства могут иметь одинаковый ID, если они принадлежат разным владельцам. В отличие от serverID, vehicleID используются повторно, например, если у меня есть 4 транспортных средства, их идентификаторы — 0, 1, 2 и 3, если я удалю транспортное средство в vehicleID 2, у меня будут 0, 1 и 3, когда я создам новое транспортное средство, новое транспортное средство будет помещено в слот ID 2. Наконец, последний атрибут, который есть у транспортных средств, — это data, data содержит транспортное средство, название, детали и другие данные; как следует из названия. data хранится в виде необработанной строки JSON, поэтому вам понадобится библиотека JSON. В качестве альтернативы вы можете вручную пройти по строке и извлечь необходимую информацию.
|
||||
237
docs/ru/server/server-maintenance.md
Normal file
237
docs/ru/server/server-maintenance.md
Normal file
@@ -0,0 +1,237 @@
|
||||
# Обслуживание сервера
|
||||
|
||||
Руководства, советы и рекомендации по настройке и обслуживанию сервера BeamMP.
|
||||
|
||||
## Как установить
|
||||
|
||||
Инструкции по установке см. в разделе [Установка сервера](create-a-server.md) .
|
||||
|
||||
## Файл ServerConfig
|
||||
|
||||
Конфигурация сервера, представляющая собой файл `ServerConfig.toml` , использует [формат TOML](https://toml.io/en/) .
|
||||
|
||||
*ПРИМЕЧАНИЕ* : *Старый* файл конфигурации сервера назывался `Server.cfg` , но он больше не используется, и сервер выдаст предупреждение, если он все еще присутствует. Также обратите внимание, что два формата конфигурации **несовместимы** друг с другом.
|
||||
|
||||
По умолчанию в конфигурации есть один раздел, называемый `[General]` , который содержит следующие значения:
|
||||
|
||||
Ключ | Тип значения | Описание
|
||||
--- | --- | ---
|
||||
AuthKey | Формат AuthKey `xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` где все x — буквенно-цифровые символы (цифры и буквы) | Используется для идентификации вашего сервера с бэкэндом. Вы должны были получить его, следуя инструкциям по установке.
|
||||
Отлаживать | правда/ложь | При включении (true) будет отображаться больше сообщений в журнале и предоставляться больше информации. Включите это, если у вас возникнут проблемы. Включение этого параметра значительно увеличит размер файла журнала.
|
||||
Частный | правда/ложь | Если включено (true), ваш сервер не будет отображаться в списке серверов. Любой с правильным IP и портом все равно сможет подключиться.
|
||||
Описание | Любой "текст" | Отображается как описание сервера в списке серверов (если сервер публичный). Вы можете использовать специальные символы для форматирования с помощью цветов и стилей.
|
||||
Имя | Любой "текст" | Отображается как имя/заголовок вашего сервера в списке серверов. Вы можете использовать специальные символы для форматирования с помощью цветов и стилей.
|
||||
Карта | Допустимое местоположение на карте, например `/levels/gridmap_v2/info.json` | Карта, которую будет размещать ваш сервер. Должна быть установлена либо по умолчанию (список можно найти ниже), либо как серверный мод.
|
||||
МаксКарс | Любое число ≥ 1 | Максимальное количество машин на игрока. Любые дополнительные машины, которые игрок попытается создать, будут мгновенно удалены.
|
||||
Порт | 1024-65535 | Сетевой порт, на котором будет доступен сервер. Чтобы игрок мог напрямую подключиться к вашему серверу, ему понадобится ваш IP и этот порт.
|
||||
|
||||
Другие разделы могут и должны использоваться серверными плагинами (скоро появится API Lua), например: `[MyMod]` .
|
||||
|
||||
AuthKey **ДОЛЖЕН** быть установлен вами. Он будет пустым по умолчанию и должен быть заполнен вашим AuthKey с шага установки ранее. Не делитесь этим ключом ни с кем и на снимках экрана полностью размывайте его.
|
||||
|
||||
### Все названия ванильных карт
|
||||
|
||||
Вот все карты акций:
|
||||
|
||||
- /levels/gridmap_v2/info.json
|
||||
- /levels/johnson_valley/info.json
|
||||
- /levels/automation_test_track/info.json
|
||||
- /levels/восточное_побережье_США/info.json
|
||||
- /levels/hirochi_raceway/info.json
|
||||
- /уровни/италия/info.json
|
||||
- /levels/jungle_rock_island/info.json
|
||||
- /уровни/промышленный/info.json
|
||||
- /levels/маленький_остров/info.json
|
||||
- /уровни/smallgrid/info.json
|
||||
- /levels/юта/info.json
|
||||
- /levels/западное_побережье_США/info.json
|
||||
- /уровни/обучение_водителей/info.json
|
||||
- /levels/derby/info.json
|
||||
|
||||
### Настройте внешний вид имени вашего сервера
|
||||
|
||||
Используйте эти специальные символы перед текстом, и к этому тексту в списке серверов будет применен эффект:
|
||||
|
||||
Ценить | Описание
|
||||
:-: | ---
|
||||
`^r` | Перезагрузить
|
||||
`^p` | Новая строка (только описания)
|
||||
`^n` | Подчеркнуть
|
||||
`^l` | Смелый
|
||||
`^m` | Зачеркивание
|
||||
`^o` | Курсив
|
||||
`^0` | Черный
|
||||
`^1` | Синий
|
||||
`^2` | Зеленый
|
||||
`^3` | светло-голубой
|
||||
`^4` | Красный
|
||||
`^5` | Розовый
|
||||
`^6` | Апельсин
|
||||
`^7` | Серый
|
||||
`^8` | Темно-серый
|
||||
`^9` | Светло-фиолетовый
|
||||
`^a` | Светло-зеленый
|
||||
`^b` | светло-голубой
|
||||
`^c` | Темно-оранжевый
|
||||
`^d` | светло-розовый
|
||||
`^e` | Желтый
|
||||
`^f` | Белый
|
||||
|
||||
### Настройте теги вашего сервера
|
||||
|
||||
Теги могут использоваться для того, чтобы позволить людям искать определенный тип сервера. Ваш serverConfig.toml будет сгенерирован с тегом freeroam `Tags = "Freeroam"` .
|
||||
|
||||
Вы можете добавить несколько тегов, разделенных запятой `Tags = "Events,Offroad,lang:english"` , регистр не учитывается.
|
||||
|
||||
Вы можете выбрать из следующего списка:
|
||||
|
||||
- Возраст/Содержание:
|
||||
|
||||
- `Mature/18+`
|
||||
|
||||
- Типы игрового процесса:
|
||||
|
||||
- `Freeroam`
|
||||
- `Roleplay`
|
||||
- `Economy`
|
||||
- `Traffic`
|
||||
|
||||
- Категории гонок:
|
||||
|
||||
- `Racing`
|
||||
- `Racing:NASCAR`
|
||||
- `Racing:Track`
|
||||
- `Racing:Drag`
|
||||
- `Racing:Rally`
|
||||
- `Touge`
|
||||
|
||||
- Бездорожье и испытания:
|
||||
|
||||
- `Offroad`
|
||||
- `Crawling`
|
||||
- `Dakar`
|
||||
- `Challenge`
|
||||
|
||||
- События разрушения:
|
||||
|
||||
- `Derby`
|
||||
- `Arena`
|
||||
|
||||
- Погодные и временные условия:
|
||||
|
||||
- `Snow/Ice`
|
||||
- `Rain`
|
||||
- `Night`
|
||||
- `Weather`
|
||||
|
||||
- Режимы игры:
|
||||
|
||||
- `Gamemode`
|
||||
- `Gamemode:Racing`
|
||||
- `Gamemode:Rally`
|
||||
- `Gamemode:Drag`
|
||||
- `Gamemode:Derby`
|
||||
- `Gamemode:Infection`
|
||||
- `Gamemode:Cops-Robbers`
|
||||
- `Gamemode:Delivery`
|
||||
- `Gamemode:Sumo`
|
||||
|
||||
- Сообщество и события:
|
||||
|
||||
- `Scenarios`
|
||||
- `Events`
|
||||
- `Leaderboard`
|
||||
|
||||
- Модификации:
|
||||
|
||||
- `Modded`
|
||||
- `Mod:BeamPaint`
|
||||
- `Mod:BeamJoy`
|
||||
- `Mod:CEI`
|
||||
|
||||
- Языки:
|
||||
|
||||
- `Lang:English`
|
||||
- `Lang:Russian`
|
||||
- `Lang:French`
|
||||
- `Lang:Spanish`
|
||||
- `Lang:Portuguese`
|
||||
- `Lang:German`
|
||||
- `Lang:Polish`
|
||||
- `Lang:Arabic`
|
||||
|
||||
- Другой:
|
||||
|
||||
- `Vanilla`
|
||||
- `Moderated`
|
||||
|
||||
Если тег отсутствует в этом списке, вы можете отправить запрос на его добавление [здесь.](https://forum.beammp.com/t/introducing-server-tags/1320081)
|
||||
|
||||
## Файл Server.log
|
||||
|
||||
Этот файл будет сгенерирован при запуске сервера. Это зеркало сообщений, которые вы видите в консоли при запуске сервера. Вам следует прикреплять этот файл каждый раз, когда вам нужна поддержка от нашей службы поддержки, и он никогда не покажет ваш AuthKey, поэтому вы обычно можете отправить его без изменений.
|
||||
|
||||
Формат следующий (префикс $ означает «переменная», пояснение ниже):
|
||||
|
||||
```
|
||||
[$DATE $TIME] $CONTEXT [$LOG_LEVEL] $MESSAGE
|
||||
```
|
||||
|
||||
Где:
|
||||
|
||||
- `$DATE` — дата сообщения, например 21/07/2021
|
||||
- `$TIME` — время сообщения, например 11:05:23
|
||||
- `$CONTEXT` (виден только в режиме отладки и в основном актуален для разработчиков) — контекст сообщения, который может быть:
|
||||
- `(Player ID) “Player Name”` , где ID игрока полезен для модерации
|
||||
- Короткое имя, например «HeartbeatThread»
|
||||
- `$LOG_LEVEL` — один из уровней важности сообщения:
|
||||
- `DEBUG` : отображается только в режиме отладки, обычно является спамом и важен только для разработчиков.
|
||||
- `INFO` : Общая информация
|
||||
- `LUA` : Сообщение от плагина Lua
|
||||
- `WARN` : Описывает то, что не должно происходить, обычно
|
||||
- `ERROR` : Что-то пошло не так или произошло очень неожиданно.
|
||||
- `FATAL` : Произошло что-то, что привело к отключению сервера.
|
||||
- `$MESSAGE` само сообщение, обычно то, на что следует обратить внимание и что следует понять. В некоторых случаях это может быть зашифровано, но общее правило заключается в том, что пока нет видимых проблем с сервером и нет ОШИБОК, все хорошо.
|
||||
|
||||
## Обновление сервера
|
||||
|
||||
### Зачем обновлять
|
||||
|
||||
Всякий раз, когда выходит новое обновление, вам рекомендуется обновить свой сервер. Обычно это включает исправления ошибок, улучшения стабильности и безопасности, наряду с общими новыми функциями и т. д., которые вводятся.
|
||||
|
||||
Чтобы получать новости об обновлениях по мере их выхода, подпишитесь на канал «обновления» сервера Discord, ищите его на форумах или посетите/спросите на [странице релизов GitHub](https://github.com/BeamMP/BeamMP-Server/releases) .
|
||||
|
||||
### Как обновить
|
||||
|
||||
#### Если вы пользуетесь услугами хостинг-провайдера, являющегося партнером BeamMP
|
||||
|
||||
Если вы используете хостинг-провайдера, партнера BeamMP, инструкции ниже, скорее всего, не сработают. Мы рекомендуем дождаться более подробной информации от вашего хостинг-провайдера или связаться с ним для получения помощи.
|
||||
|
||||
#### Самостоятельное управление сервером
|
||||
|
||||
Сервер обновляется путем замены старого исполняемого файла на новый. Если вы не уверены, как это сделать, ниже приведены пошаговые инструкции для Windows и Linux.
|
||||
|
||||
Если вы собрали из исходников, просто пересоберите. Убедитесь, что выполнили `git submodule update --init --recursive` перед пересборкой.
|
||||
|
||||
#### В Windows
|
||||
|
||||
1. Для запуска сервера убедитесь, что у вас установлены [распространяемые компоненты Visual C++](https://aka.ms/vs/17/release/vc_redist.x64.exe) .
|
||||
2. Перейдите на [BeamMP.com](https://beammp.com/) и нажмите кнопку «Загрузить сервер».
|
||||
3. После загрузки вы должны увидеть один файл с именем `BeamMP-Server.exe` . Мы назовем его «новый исполняемый файл».
|
||||
4. Перейдите в папку, где находится ваш текущий исполняемый файл `BeamMP-Server.exe` (обычно это та же папка, где находится ваш `ServerConfig.toml` ). Мы будем называть его «старым исполняемым файлом».
|
||||
5. Замените старый исполняемый файл новым исполняемым файлом (например, скопировав или переместив новый исполняемый файл в папку).
|
||||
|
||||
#### На Линуксе
|
||||
|
||||
1. Перейдите на [BeamMP.com](https://beammp.com/) и нажмите кнопку «Загрузить сервер», вы будете перенаправлены на страницу релиза сервера на Github.
|
||||
2. Загрузите правильную версию для вашего дистрибутива. Для простоты теперь он будет называться `BeamMP-Server-xxx` , где `xxx` обозначает версию для используемого вами дистрибутива.
|
||||
3. После загрузки вы должны увидеть один файл с именем `BeamMP-Server-xxx` в зависимости от версии, которую вы скачали. Мы назовем его «новый исполняемый файл».
|
||||
4. Перейдите в папку, где находится ваш текущий исполняемый файл `BeamMP-Server-xxx` (обычно это та же папка, где находится ваш `ServerConfig.toml` ). Мы будем называть его «старым исполняемым файлом».
|
||||
5. Замените старый исполняемый файл новым исполняемым файлом (например, скопировав или переместив новый исполняемый файл в папку).
|
||||
6. Откройте терминал в той папке, где вы только что заменили исполняемый файл, и выполните `sudo chmod +x BeamMP-Server-xxx` . Это позволит убедиться, что сервер может быть запущен.
|
||||
|
||||
### Автоматические обновления
|
||||
|
||||
Сервер не поддерживает автоматические обновления или уведомления об обновлениях (пока).
|
||||
|
||||
Однако вы можете запросить API GitHub для получения последней версии, проверив версию сервера по тегам. Вы можете получить это с помощью GET из `https://api.github.com/repos/BeamMP/BeamMP-Server/git/refs/tags` .
|
||||
Reference in New Issue
Block a user