diff --git "a/.github/documentation/localization/README-\320\240\321\203\321\201\321\201\320\272\320\270\320\271.md" "b/.github/documentation/localization/README-\320\240\321\203\321\201\321\201\320\272\320\270\320\271.md"
index d04018da3..214a0cd82 100644
--- "a/.github/documentation/localization/README-\320\240\321\203\321\201\321\201\320\272\320\270\320\271.md"
+++ "b/.github/documentation/localization/README-\320\240\321\203\321\201\321\201\320\272\320\270\320\271.md"
@@ -2,7 +2,7 @@
[
](https://github.com/ExMod-Team/EXILED/actions/workflows/main.yml/badge.svg?branch=master)
-
+
![Github Commits](https://img.shields.io/github/commit-activity/w/ExMod-Team/EXILED/apis-rework?style=for-the-badge&logo=git)
@@ -10,22 +10,21 @@
-EXILED - низкоуровневый фреймворк для серверов SCP: Secret Laboratory. Он предлагает систему событий, которую разработчики могут использовать для различных манипуляций, изменения кода игры или реализации собственных функций. Все ивенты EXILED сделаны с помощью Harmony, это означает, что для их функционирования не требуется прямого редактирования серверных сборок, что позволяет получить два уникальных преимущества:
+EXILED - высокоуровневый фреймворк для серверов SCP: Secret Laboratory. Он предлагает систему событий, которую разработчики могут использовать для различных манипуляций, изменения кода игры или реализации собственных функций. Все ивенты EXILED сделаны с помощью Harmony, что исключает необходимость прямого редактирования серверных сборок. Это обеспечивает два важных преимущества:
- Во-первых, весь код фреймворка может быть свободно опубликован и распространен, что позволяет разработчикам лучше понять, *как* он работает, а также предложить свои предложения по дополнению или изменению его функций.
- Во-вторых, поскольку весь код, связанный с фреймворком, выполняется вне сборки сервера, такие вещи, как небольшие обновления игры, будут иметь незначительное влияние на фреймворк, если вообще будут иметь. Это делает его наиболее совместимым с будущими обновлениями игры, а также облегчает обновление, когда это *нужно* сделать.
-# Скачивание
-Установка EXILED может показаться более сложной, чем установка других фреймворков, но на самом деле она довольно проста.
-Как упоминалось выше, большая часть EXILED не содержится в файле Assembly-CSharp.dll сервера, однако в файл Assembly-CSharp.dll необходимо внести одно изменение, которое требуется для того, чтобы EXILED действительно *загружался* на сервер при запуске, чистая сборка игры с уже внесенными изменениями будет поставляться с релизами.
+# Установка
+Установка EXILED довольно проста. Она загружается через Plugin API Northwood. Именно поэтому в архиве ``Exiled.tar.gz``, доступном в релизах, находятся две папки: ``SCP Secret Laboratory`` и ``EXILED``. Просто переместите их в указанные ниже пути, и всё готово!
-Если вы решите использовать программу установки, она, при правильном запуске, "позаботится" об установке `Exiled.Loader`, `Exiled.Updater`, `Exiled.Permissions`, `Exiled.API` и `Exiled.Events`, а также о том, чтобы на вашем сервере был установлен правильный файл Assembly-CSharp.dll.
+Если вы выберете установку через инсталлятор, он автоматически выполнит все необходимые шаги.
# Windows
### Автоматическая установка ([подробнее](https://github.com/ExMod-Team/EXILED/blob/master/Exiled.Installer/README.md))
-**Примечание**: Перед запуском программы установки убедитесь, что вы находитесь под пользователем, который запускает сервер, или у вас есть права администратора.
+**Примечание**: Убедитесь, что вы используете учётную запись, с которой запускается сервер, или обладаете правами администратора.
-- Скачайте **`Exiled.Installer-Win.exe` [отсюда](https://github.com/ExMod-Team/EXILED/releases)** (нажмите на Assets -> нажмите на Installer).
+- Скачайте **`Exiled.Installer-Win.exe` [отсюда](https://github.com/ExMod-Team/EXILED/releases)** (нажмите на Assets -> выберите Installer).
- Поместите его в папку вашего сервера (если вы еще не скачали выделенный сервер)
- Дважды щелкните **`Exiled.Installer.exe`** или **[скачайте этот .bat](https://www.dropbox.com/scl/fi/7yh0r3q0vdn6ic4rhuu3l/install-prerelease.bat?rlkey=99fwjbwy1xg61qgtak0qzb9rd&st=8xs4xks8&dl=1)** и поместите его в папку сервера для установки последней предварительной версии.
- Чтобы установить и получить плагины, ознакомьтесь с разделом [Установка плагинов](#Установка-плагинов-Windows) ниже.
@@ -36,13 +35,13 @@ EXILED - низкоуровневый фреймворк для серверов
- Распакуйте его содержимое с помощью [7Zip](https://www.7-zip.org/) или [WinRar](https://www.win-rar.com/download.html?&L=6).
- Переместите папку **`EXILED`** в **`%appdata%`** *Примечание: Эта папка должна находиться в ``C:\Users\%UserName%\AppData\Roaming``, и ***НЕ*** ``C:\Users\%UserName%\AppData\Roaming\SCP Secret Laboratory``, и **ЭТО ДОЛЖНО** быть в (. ...)\AppData\Roaming, а не (...)\AppData\!*.
- Переместите **``SCP Secret Laboratory``** в **`%appdata%`**.
- - Windows 10:
- Напишите `%appdata%` в Cortana / значке поиска или в строке проводника Windows.
- - Любая другая версия Windows:
+ - Windows 10 & 11:
+ Введите `%appdata%` в Cortana, строку поиска или адресную строку проводника Windows.
+ - Другие версии Windows:
Нажмите Win + R и введите `%appdata%`.
-### Установка плагинов Windows
-Вот и все, теперь EXILED должен быть установлен и активен при следующей загрузке вашего сервера. Обратите внимание, что EXILED сам по себе почти ничего не делает, поэтому обязательно получайте новые плагины с **[нашего сервера Discord](https://discord.gg/PyUkWTg)**.
+### Установка плагинов
+На этом установка EXILED завершена, и он будет активен при следующем запуске сервера. Обратите внимание, что EXILED сам по себе почти ничего не делает, поэтому обязательно получайте новые плагины с **[нашего сервера Discord](https://discord.gg/PyUkWTg)**.
- Чтобы установить плагин, просто:
- Скачайте плагин с [*их* страницы релизов](https://i.imgur.com/u34wgPD.jpg) (**он ДОЛЖЕН быть `.dll`!**)
- Переместите его в: ``C:\Users\%UserName%\AppData\Roaming\EXILED\Plugins`` (переместите его сюда, нажав Win + R, а затем написав `%appdata%`)
@@ -84,21 +83,20 @@ EXILED сам по себе предлагает некоторые опции
Более полные и активно обновляемые руководства вы найдете на [сайте EXILED](https://exmod-team.github.io/EXILED/).
-- Ваш плагин должен содержать класс, который наследуется от Exiled.API.Features.Plugin<>, если это не так, EXILED не загрузит ваш плагин при запуске сервера.
-- Когда плагин загружен, код в методе ``OnEnabled()`` вышеупомянутого класса срабатывает немедленно, он не ждет загрузки других плагинов. Он не ждет завершения процесса запуска сервера. ***Он не ждет ничего.*** При настройке метода ``OnEnabled()`` убедитесь, что вы не обращаетесь к вещам, которые еще не инициализированы сервером, таким как ServerConsole.Port или PlayerManager.localPlayer.
-- Если вам нужно получить доступ к вещам, которые не инициализированы до загрузки плагина, рекомендуется просто дождаться события WaitingForPlayers, если по какой-то причине вам нужно сделать это раньше, оберните код в цикл `` while(!x)``, который проверяет, что переменная/объект, который вам нужен, больше не является ``null``, прежде чем продолжить.
-- EXILED поддерживает динамическую перезагрузку сборок плагинов во время работы сервера. Это означает, что если вам нужно обновить плагин, это можно сделать без перезагрузки сервера, однако, если вы обновляете плагин в середине выполнения, плагин должен быть правильно настроен для поддержки этого, иначе у вас будут очень плохие времена. Обратитесь к разделу ``Динамические обновления`` для получения дополнительной информации и рекомендаций.
-- В EXILED ***НЕТ*** событий OnUpdate, OnFixedUpdate или OnLateUpdate. Если вам по какой-то причине нужно запускать код так часто, вы можете использовать MEC-корутину, которая ждет один кадр, 0.01f, или использовать временной слой, например Timing.FixedUpdate.
+Основные правила для разработчиков:
-### Отключение исправлений событий EXILED.
-***В настоящее время эта функция больше не поддерживается.***
+- Ваш плагин должен содержать класс, наследуемый от ``Exiled.API.Features.Plugin<>``. Иначе EXILED не загрузит его при запуске сервера.
+- Когда плагин загружен, код в методе ``OnEnabled()`` вышеупомянутого класса срабатывает немедленно, он не ждет загрузки других плагинов. Он не ждет завершения процесса запуска сервера. ***Он не ждет ничего.*** При настройке метода ``OnEnabled()`` убедитесь, что вы не обращаетесь к объектам, которые еще не инициализированы сервером, таким как ``ServerConsole.Port`` или ``PlayerManager.localPlayer``.
+- Если вам нужно получить доступ к элементам, которые не инициализированы до загрузки плагина, рекомендуется просто дождаться события ``WaitingForPlayers``, если по какой-то причине вам нужно сделать это раньше, оберните код в цикл `` while(!x)``, который проверяет, что переменная/объект, который вам нужен, больше не является ``null``, прежде чем продолжить.
+- EXILED поддерживает динамическую перезагрузку сборок плагинов во время выполнения, что позволяет обновлять плагин без перезапуска сервера. Однако для поддержки этой функции плагин должен быть корректно настроен. Обратитесь к разделу ``Динамические обновления`` для получения дополнительной информации и рекомендаций.
+- В EXILED ***НЕТ*** событий OnUpdate, OnFixedUpdate или OnLateUpdate. Если вам по какой-то причине нужно запускать код так часто, вы можете использовать MEC-корутину, которая ждет один кадр, 0.01f, или использовать временной слой, например Timing.FixedUpdate.
### MEC Coroutines
-Если вы незнакомы с MEC, это будет очень краткий и простой учебник, который поможет вам начать работу.
+Если вы не знакомы с MEC, это будет очень краткий и простой учебник, который поможет вам начать работу.
MEC Coroutines - это методы с таймером, которые поддерживают периоды ожидания перед продолжением выполнения, не прерывая основной поток игры.
-Корутины MEC безопасны для использования в Unity, в отличие от традиционной работы с потоками. ***НЕ пытайтесь создавать новые потоки для взаимодействия с Unity, они приведут к крашу сервера.***
+Они безопасны для использования с Unity, в отличие от традиционных потоков. ***НЕ пытайтесь создавать новые потоки для взаимодействия с Unity, они приведут к крашу сервера.***
-Чтобы использовать MEC, нужно будет добавить ссылку ``Assembly-CSharp-firstpass.dll`` из файлов сервера и написать ``using MEC;``.
+Для использования MEC добавьте ссылку на ``Assembly-CSharp-firstpass.dll`` из файлов сервера и напишите ``using MEC;``.
Пример вызова простой корутины, которая повторяет себя с задержкой между каждым циклом:
```cs
using MEC;
@@ -125,7 +123,7 @@ public IEnumerator MyCoroutine()
EXILED как фреймворк поддерживает динамическую перезагрузку сборок плагинов, не требуя перезагрузки сервера.
Например, если вы запускаете сервер с единственным плагином `Exiled.Events` и хотите добавить новый, вам не нужно перезагружать сервер для выполнения этой задачи. Вы можете просто использовать команду `reload plugins` в RemoteAdmin или в консоли сервера для перезагрузки всех плагинов EXILED, и загрузки новых, которые не были загружены ранее.
-Это также означает, что вы можете *обновлять* плагины без полной перезагрузки сервера. Однако есть несколько рекомендаций, которым должен следовать разработчик плагина, чтобы это было сделано правильно:
+Это также позволяет *обновлять* плагины без полной перезагрузки сервера. Однако, чтобы это было сделано должным образом, разработчик плагина должен следовать нескольким рекомендациям:
***Для хостеров***
- Если вы обновляете плагин, убедитесь, что имя его сборки не совпадает с именем текущей установленной версии (если таковая имеется). Чтобы это сработало, плагин должен быть создан разработчиком с учетом динамических обновлений, простое переименование файла не поможет.
@@ -135,12 +133,12 @@ EXILED как фреймворк поддерживает динамическу
***Для разработчиков***
- Плагины, которые хотят поддерживать динамическое обновление, должны отписываться от всех событий к которым они подключены, когда они отключены или перезагружены.
-- Плагины, имеющие пользовательские патчи Harmony, должны использовать какую-либо изменяемую переменную в имени экземпляра Harmony, и должны UnPatchAll() для своего экземпляра, когда плагин отключен или перезагружен.
-- Любые корутины, запущенные плагином в OnEnabled(), также должны быть завершены при отключении или перезагрузке плагина.
+- Плагины, имеющие собственные патчи Harmony, должны использовать какую-либо изменяемую переменную в имени экземпляра Harmony, и вызывать ``UnPatchAll()`` для своего экземпляра, когда плагин отключен или перезагружен.
+- Любые корутины, запущенные плагином в ``OnEnabled()``, также должны быть завершены при отключении или перезагрузке плагина.
-Все это можно сделать в методах OnReloaded() или OnDisabled() в классе плагина. Когда EXILED перезагружает плагины, он вызывает OnDisabled(), затем OnReloaded(), затем загружает новые сборки, а затем выполняет OnEnabled().
+Все это можно сделать в методах ``OnReloaded()`` или ``OnDisabled()`` в классе плагина. Когда EXILED перезагружает плагины, он вызывает ``OnDisabled()``, затем ``OnReloaded()``, затем загружает новые сборки, а затем выполняет ``OnEnabled()``.
-Обратите внимание, что я сказал *новые* сборки. Если вы замените сборку другой сборкой с таким же именем, она ***НЕ*** будет обновлена. Это связано с GAC (Global Assembly Cache), если вы попытаетесь "загрузить" сборку, которая уже находится в кэше, то вместо нее всегда будет использоваться кэшированная сборка.
+Обратите внимание, что загружаются именно *новые* сборки. Если вы замените сборку другой сборкой с таким же именем, она ***НЕ*** будет обновлена. Это связано с GAC (Global Assembly Cache), если вы попытаетесь "загрузить" сборку, которая уже находится в кэше, то вместо нее всегда будет использоваться кэшированная сборка.
По этой причине, если ваш плагин будет поддерживать динамические обновления, вы должны собирать каждую версию с другим именем сборки в опциях сборки (переименование файла не работает). Также, поскольку старая сборка не "уничтожается", то вы не сможете отписаться, распатчить ваш экземпляр, остановить корутины и т.д., этот код будет продолжать выполняться, как и код новой версии.
Это очень плохо.
diff --git a/EXILED/EXILED.props b/EXILED/EXILED.props
index b4aecc1f3..62d6e57cd 100644
--- a/EXILED/EXILED.props
+++ b/EXILED/EXILED.props
@@ -15,7 +15,7 @@
- 8.14.0
+ 8.14.1
false