Расскажу тут в кратце как это сделать, надо три плагина.
Чтобы можно было продавать команду unban %STEAMID% в магазине gamestores нам потребуется установить плагин anticheats и enthancebansystem думаю найдетеив интернет полно них как поставить и купить плагин ХPrison или скачать бесплатный Prison
купить XPrison
https://oxide-russia.ru/resources/3200/
за 150р тюрьма: https://charaling-plugins.ru/resources/xprison.245/
бесплатно мод
https://rustmods.ru/threads/prison.239/
prison 1.0.7
Команды чата
/jail — открывает пользовательский интерфейс для отправки игроков в тюрьму
/setjail (название тюрьмы) (название точки освобождения) — устанавливает конкретную тюремную камеру в том месте, где вы находитесь, и связанную с ней точку освобождения (важно!!! чтобы это работало, сначала необходимо установить точку освобождения)
/setfree (название точки освобождения) — устанавливает указанную точку освобождения. Требуется для освобождения игроков из тюремной камеры (важно!!! требуется. можно установить несколько точек освобождения)
/getjail - выводит список всех названий джейлов в чате
/deljail all — удаляет все созданные вами тюремные камеры, включая точку освобождения
/deljail [название камеры] — удаляет только указанную тюремную камеру
/freejail [название тюремной камеры] — освобождает игроков из указанной тюремной камеры, если вы хотите освободить их до того, как таймер достигнет нуля, или если вы случайно установили таймер на высокое значение.
/getliberation — возвращает список всех точек освобождения в чате
/delliberation (all) — удаляет все точки освобождения и все связанные с ними тюремные камеры
/delliberation (название точки освобождения) — удаляет указанную точку освобождения и все связанные с ней тюремные камеры
Prison - Этот плагин, основанный на ролевой игре, отправляет игрока в указанное место тюрьмы на определенное время.
Таймер истечет и автоматически освободит игроков, телепортировав их в указанную точку освобождения.
В тюрьме игроки не могут убить себя. Инвентарь, а также контейнер с одеждой заперты, чтобы в тюрьме нельзя было стрелять или ронять вещи.
Приятный пользовательский интерфейс отображает каждого игрока, который доступен на сервере для отправки в тюрьму.
Этот пользовательский интерфейс включает поле ввода, чтобы установить время в минутах, которое игрок должен находиться в тюрьме.
Плагин LockMeUp поддерживается, чтобы избежать злоупотреблений. Если в настройках установлено значение true, этот плагин будет проверять, надет ли игрок, которого вы собираетесь отправить в тюрьму, в наручниках или нет.
В противном случае игрока нельзя отправить в тюрьму. Это работает, только если на вашем сервере установлен плагин LockMeUp. Если параметр равен false, стандартная конфигурация, то игроки
можно отправить без наручников. Так что вам не нужен LockMeUp, если вы не хотите его покупать или иметь. Этот плагин прекрасно работает и без него.
Права
prison.use - дает игрокам возможность отправлять игроков в тюрьму и использовать все команды для этого плагина
Поставили 3 плагина разобрались проверили все работает то можно теперь ставить на продажу команду в магагазин ведь теперь благодаря плагину тюрьмы в расте забаненые игроки попадают в игру и могут получить покупку разбана теперь в меню магазина.
Как сделать вместо обычного бана античита, чтобы забаненые игроки оказывались в онлайне а именно в тюрьме, через плагин xprison
1. Использовать плагин тюрьмы (например, XPrison)
Если вы используете XPrison, он уже предоставляет базовый функционал для помещения игроков в тюрьму. Нужно будет настроить плагин и интегрировать его с античитом.
Пример логики:
Античит фиксирует нарушение.
Вместо вызова стандартного бана (команда ban), вызывается команда XPrison для помещения игрока в тюрьму.
Шаги настройки:
Убедитесь, что плагин XPrison установлен на сервере.
Настройте конфигурацию тюрьмы (определите место тюрьмы и условия выхода, например, время).
В античите замените бан на команду xprison jail {playerID} (или аналогичную, если команда отличается).
2. Интеграция античита с тюрьмой
Если у вас есть античитовый плагин, например, NoEscape, AntiCheat, или любой другой кастомный плагин, можно заменить стандартную логику бана на отправку в тюрьму.
Пример кода для античита (Oxide API, C#):
void OnPlayerCheatDetected(BasePlayer player, string cheatReason)
{
// Команда отправки в тюрьму
string command = $"xprison jail {player.UserIDString} 60m"; // Пример: тюрьма на 60 минут
ConsoleSystem.Run.Server.Normal(command);
// Уведомление администраторам
Puts($"Игрок {player.displayName} был отправлен в тюрьму за: {cheatReason}");
}
Добавьте этот код в ваш античитовый плагин, чтобы заменить стандартный бан.
3. Альтернативы XPrison
Если XPrison вам не подходит, вы можете использовать другие плагины или написать свой:
ZoneManager + собственная логика: создать зону с ограничениями (например, тюрьма) и перемещать туда нарушителей.
Jail (аналогичные плагины): некоторые плагины предлагают простую систему создания тюрем.
Пример использования ZoneManager:
Создайте зону с помощью ZoneManager.
Используйте команду zone_addplayer {zoneID} {playerID} для перемещения игрока в зону.
4. Пользовательский плагин
Если готовых решений недостаточно, можно написать собственный плагин. Основные функции:
Ловить событие нарушения.
Перемещать игрока в заранее определённую локацию (тюрьму).
Ограничивать их действия (отключить крафт, ограничить передвижение и т.д.).
Пример минимального плагина для тюрьмы:
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("JailOnCheat", "Author", "1.0.0")]
class JailOnCheat : RustPlugin
{
[PluginReference]
private Plugin ZoneManager;
private string jailZoneID = "jailzone"; // ID зоны тюрьмы из ZoneManager
void OnPlayerCheatDetected(BasePlayer player, string cheatReason)
{
if (ZoneManager != null)
{
ZoneManager.Call("AddPlayerToZone", jailZoneID, player);
player.ChatMessage("Вы были отправлены в тюрьму за нарушение!");
Puts($"{player.displayName} отправлен в тюрьму за: {cheatReason}");
}
}
}
}
5. Дополнительные рекомендации
Убедитесь, что плагин тюрьмы корректно работает с последней версией сервера Rust.
Настройте уведомления для игроков и администраторов.
Продумайте условия выхода из тюрьмы (например, штраф, ожидание времени или обращение к администрации).
Если нужно, могу помочь доработать или написать плагин!
как интегрировать бан на jail в античите xanticheat?
Чтобы интегрировать отправку в тюрьму вместо стандартного бана в плагине XAnticheat, нужно внести изменения в его код или использовать события и команды, которые предоставляет сам плагин.
Общая концепция интеграции
Замените вызов команды бана (ban) на команду тюрьмы.
Если вы используете плагин для тюрьмы (например, XPrison или ZoneManager), настройте его заранее.
Убедитесь, что изменения протестированы, чтобы не нарушить работу античита.
1. Шаги для интеграции с XPrison
Настройка XPrison:
Установите плагин XPrison.
Настройте тюрьму: задайте место тюрьмы, условия содержания, время и т.д.
Изменение кода XAnticheat:
Откройте файл плагина XAnticheat.cs в текстовом редакторе или IDE.
Найдите место, где выполняется команда бана. Обычно это что-то вроде:
player.Ban("Причина бана");
Замените это на вызов команды тюрьмы. Например, для XPrison:
string jailCommand = $"xprison jail {player.UserIDString} 60m"; // 60 минут в тюрьме
ConsoleSystem.Run.Server.Normal(jailCommand);
Добавьте уведомление для игрока и лог администратору:
player.ChatMessage("Вы были отправлены в тюрьму за нарушение правил.");
Puts($"{player.displayName} был отправлен в тюрьму за читерство.");
2. Шаги для интеграции с ZoneManager
Если вы используете ZoneManager для создания тюрьмы:
Создайте зону тюрьмы через ZoneManager (zone_add).
Получите ID зоны (например, jailzone).
Изменение кода XAnticheat:
Найдите место, где вызывается бан.
Замените вызов бана на перемещение в зону:
if (ZoneManager != null)
{
ZoneManager.Call("AddPlayerToZone", "jailzone", player);
player.ChatMessage("Вы были отправлены в тюрьму за нарушение правил.");
Puts($"{player.displayName} был отправлен в тюрьму за читерство.");
}
3. Пример изменения в коде XAnticheat
Вот как будет выглядеть пример измененного метода, который обрабатывает читеров:
void HandleCheater(BasePlayer player, string reason)
{
// Вместо бана отправляем игрока в тюрьму
string jailCommand = $"xprison jail {player.UserIDString} 60m"; // Пример: 60 минут в тюрьме
ConsoleSystem.Run.Server.Normal(jailCommand);
// Уведомление игрока
player.ChatMessage($"Вы были отправлены в тюрьму за нарушение: {reason}");
// Лог администратору
Puts($"Игрок {player.displayName} ({player.UserIDString}) отправлен в тюрьму за: {reason}");
}
Вместо xprison jail можно использовать аналогичные команды от других плагинов.
4. Тестирование
После внесения изменений перезагрузите плагин:
oxide.reload XAnticheat
Проверьте, чтобы игрок с нарушением отправлялся в тюрьму, а не получал стандартный бан.
Убедитесь, что настройки тюрьмы работают корректно.
Если вы хотите, чтобы я помог с конкретным кодом или доработкой, предоставьте точную версию XAnticheat или фрагмент кода, где вызывается бан, и я подготовлю готовое решение
Плагин XAntiCheat уже включает логику для работы с тюрьмой через подключаемый плагин PrisonBitch. Это видно по коду:
В функции BAN проверяется наличие параметра prison и наличие подключенного плагина PrisonBitch.
Если включена опция prison и игрок не находится в тюрьме (IsImprisoned), выполняется команда для помещения игрока в тюрьму:
csharp
Копировать код
fermens.Server.Command(config.pattern["PRISON.ACCOUNT"]
.Replace("{steamid}", steamid)
.Replace("{time}", time.ToString())
.Replace("{reason}", reason));
Шаги настройки интеграции с PrisonBitch:
Убедитесь, что плагин PrisonBitch установлен и работает корректно на вашем сервере.
В конфигурации XAntiCheat включите параметр prison:
json
Копировать код
"Send to jail if there is PrisonBitch plugin": true
Проверьте, чтобы в разделе pattern была строка для отправки в тюрьму, например:
json
Копировать код
"PRISON.ACCOUNT": "prison.add {steamid} {time} {reason}"
Перезагрузите плагин:
Копировать код
oxide.reload XAntiCheat
Проверка работы:
Если игрок будет определён как нарушитель, вместо команды бана (ban) плагин вызовет команду prison.add, которая отправит игрока в тюрьму.
Убедитесь, что тюрьма настроена корректно через PrisonBitch (местоположение, условия выхода и т.д.).
Если нужно адаптировать эту логику для другого плагина тюрьмы (например, XPrison), просто измените команду в pattern["PRISON.ACCOUNT"] на соответствующую вашему плагину.
Если вы хотите интегрировать отправку в тюрьму через XPrison, вам нужно изменить команду для отправки игрока в тюрьму в плагине XAntiCheat. Давайте разберём пошагово.
1. Подготовка плагина XPrison
Убедитесь, что XPrison установлен и настроен.
Проверьте, какая команда используется для помещения игрока в тюрьму. Обычно это что-то вроде:
css
Копировать код
xprison jail {steamid} {time} {reason}
Убедитесь, что тюрьма создана и функционирует корректно.
2. Настройка в XAntiCheat
Откройте файл XAntiCheat.cs.
Найдите метод BAN. Это основной метод, который отвечает за наказание нарушителей.
В блоке, где проверяется config.prison, замените команду на подходящую для XPrison.
Пример изменения:
csharp
Копировать код
if (config.prison && prison)
{
if (!IsImprisoned(usteamid))
{
ADDLOG("PRISON", fermens.messages["logPRISON"]
.Replace("{name}", displayname)
.Replace("{steamid}", steamid)
.Replace("{days}", (time * 1f / 24f).ToString("F1"))
.Replace("{reason}", reason), webhook, 1);
time = (int)(time * 60f); // Преобразование часов в минуты
fermens.Server.Command($"xprison jail {steamid} {time} \"{reason}\"");
}
}
Убедитесь, что в коде используются правильные параметры:
{steamid} — ID игрока.
{time} — длительность в минутах.
{reason} — причина отправки в тюрьму.
3. Изменение шаблона в конфигурации
В разделе pattern конфигурации XAntiCheat обновите строку для тюрьмы:
json
Копировать код
"PRISON.ACCOUNT": "xprison jail {steamid} {time} {reason}"
4. Перезагрузка плагина
После внесения изменений:
Перезагрузите плагин:
Копировать код
oxide.reload XAntiCheat
Убедитесь, что плагин работает без ошибок.
5. Проверка
Проверьте работу античита, спровоцировав нарушение.
Убедитесь, что вместо бана игрок отправляется в тюрьму через XPrison.
Проверьте, что игрок действительно находится в тюрьме и не может покинуть её.