GPT-3.5 Turbo Пример использования ChatGPT в разработке сервера и плагинов Rust

Нейросеть GPT-3.5 Turbo доступна всем пользователям. Для доступа к GPT-4 Turbo необходимо приобрести «Премиум».
Конечно! Вот пример плагина на C# для Rust, который будет отображать онлайн вашего сервера Rust на Discord-сервере в виде бота.

C#:
using Discord;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Oxide.Plugins
{
    [Info("DiscordServerStatus", "YourName", "1.0.0")]
    [Description("Displays the online status of your Rust server on a Discord server as a bot")]

    public class DiscordServerStatus : CovalencePlugin
    {
        private Configuration config;
        private Discord.WebSocket.SocketGuild guild;
        private Discord.WebSocket.SocketTextChannel channel;

        public class Configuration
        {
            public string Token { get; set; }
            public ulong GuildId { get; set; }
            public ulong ChannelId { get; set; }
            public string ServerName { get; set; }
        }

        protected override void LoadDefaultConfig()
        {
            config = new Configuration
            {
                Token = "YOUR_DISCORD_BOT_TOKEN",
                GuildId = 1234567890, // Replace with your Discord server ID
                ChannelId = 1234567890, // Replace with your Discord channel ID
                ServerName = "YOUR_SERVER_NAME"
            };
        }

        private void OnServerInitialized()
        {
            if (string.IsNullOrEmpty(config.Token))
            {
                PrintError("Discord bot token not set! Please set it in the configuration file.");
                return;
            }

            guild = DiscordExtension.GetGuild(config.Token, config.GuildId);
            channel = DiscordExtension.GetTextChannel(guild, config.ChannelId);

            if (guild == null || channel == null)
            {
                PrintError("Failed to get Discord guild or text channel! Please check your configuration settings.");
                return;
            }

            timer.Repeat(60, 0, UpdateServerStatus);
        }

        private void UpdateServerStatus()
        {
            var playerCount = BasePlayer.activePlayerList.Count;

            var embed = new EmbedBuilder()
                .WithAuthor(config.ServerName, "https://rust.facepunch.com/")
                .WithColor(new Color(0, 0, 255))
                .WithCurrentTimestamp()
                .WithFooter("Server Status")
                .WithThumbnailUrl("https://rust.facepunch.com/assets/static/ico/favicon.ico")
                .WithDescription($"Online Players: {playerCount}");

            channel.SendMessageAsync("", false, embed.Build());
        }
    }
}

Этот плагин использует библиотеку Covalence и Discord.Net для отправки сообщений на Discord-сервер. Он будет обновлять статус сервера каждые 60 секунд и отправлять его в указанный канал на вашем Discord-сервере.
тут?
 
Извините за путаницу! Код, который я привел выше, является плагином для сервера Rust, который использует Oxide для управления плагинами. Этот код должен быть установлен и выполняться на сервере Rust с установленным фреймворком Oxide.

Если вы хотите создать бота на Discord, который будет играть в Rust, вам следует использовать Discord API и язык программирования вашего выбора (например, Python или JavaScript). Вы можете использовать Discord.js или discord.py, чтобы создать бота, который будет реагировать на команды пользователя и выполнять действия в игре Rust.

Вот пример кода на JavaScript с использованием Discord.js:

JavaScript:
const Discord = require('discord.js');
const client = new Discord.Client();
const rustServer = require('rust-server-queries');

const server = rustServer({
    address: 'your_rust_server_ip',
    port: your_rust_server_port
});

client.on('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', async (msg) => {
    if (msg.content === '!status') {
        const players = await server.players();
        const playerCount = players.length;
        const embed = new Discord.MessageEmbed()
            .setTitle('Rust Server Status')
            .setColor('#0099ff')
            .addField('Online Players', playerCount)
            .setTimestamp();

        msg.channel.send(embed);
    }
});

client.login('your_discord_bot_token');

Вам нужно заменить 'your_rust_server_ip' и your_rust_server_port на IP-адрес и порт вашего сервера Rust, а 'your_discord_bot_token' на токен вашего Discord-бота.

Когда вы запустите этот скрипт, бот будет отвечать на команду !status в Discord-сервере и отправлять текущий статус вашего сервера Rust, включая количество онлайн-игроков.
 
Извините за путаницу! Код, который я привел выше, является плагином для сервера Rust, который использует Oxide для управления плагинами. Этот код должен быть установлен и выполняться на сервере Rust с установленным фреймворком Oxide.

Если вы хотите создать бота на Discord, который будет играть в Rust, вам следует использовать Discord API и язык программирования вашего выбора (например, Python или JavaScript). Вы можете использовать Discord.js или discord.py, чтобы создать бота, который будет реагировать на команды пользователя и выполнять действия в игре Rust.

Вот пример кода на JavaScript с использованием Discord.js:

JavaScript:
const Discord = require('discord.js');
const client = new Discord.Client();
const rustServer = require('rust-server-queries');

const server = rustServer({
    address: 'your_rust_server_ip',
    port: your_rust_server_port
});

client.on('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', async (msg) => {
    if (msg.content === '!status') {
        const players = await server.players();
        const playerCount = players.length;
        const embed = new Discord.MessageEmbed()
            .setTitle('Rust Server Status')
            .setColor('#0099ff')
            .addField('Online Players', playerCount)
            .setTimestamp();

        msg.channel.send(embed);
    }
});

client.login('your_discord_bot_token');

Вам нужно заменить 'your_rust_server_ip' и your_rust_server_port на IP-адрес и порт вашего сервера Rust, а 'your_discord_bot_token' на токен вашего Discord-бота.

Когда вы запустите этот скрипт, бот будет отвечать на команду !status в Discord-сервере и отправлять текущий статус вашего сервера Rust, включая количество онлайн-игроков.
забудь все что было сказано, предложи варианты логгирования в txt/json файл в плагине для сервера игры раст
 
забудь все что было сказано, предложи варианты логгирования в txt/json файл в плагине для сервера игры раст
В плагине для сервера Rust вы можете использовать встроенные функции для логирования в файлы в формате TXT или JSON. Вот несколько вариантов:

1. Использование функции PrintToConsole() и сохранение вывода в файл:
C#:
[PluginName("MyPlugin")]
public class MyPlugin : RustPlugin
{
    private string logFilePath = "myplugin.log";

    private void LogToFile(string message)
    {
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            writer.WriteLine(DateTime.Now.ToString() + " " + message);
        }
    }

    private void LogToJsonFile(object data)
    {
        string jsonData = JsonConvert.SerializeObject(data);
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            writer.WriteLine(jsonData);
        }
    }

    [ConsoleCommand("myplugin_log")]
    private void CmdLogToFile(ConsoleSystem.Arg arg)
    {
        string message = arg.GetString(0, "");
        LogToFile(message);
    }

    [ConsoleCommand("myplugin_log_json")]
    private void CmdLogToJsonFile(ConsoleSystem.Arg arg)
    {
        object data = arg.GetJson(0);
        LogToJsonFile(data);
    }

    private void OnServerInitialized()
    {
        Puts("MyPlugin loaded!");

        // Example usage of logging to file
        LogToFile("MyPlugin loaded!");
        LogToJsonFile(new { message = "MyPlugin loaded!" });
    }
}
В этом примере создается файл "myplugin.log" в папке "oxide/logs", и каждое сообщение логируется с датой и временем. Вы также можете использовать функцию LogToJsonFile(), чтобы логировать данные в формате JSON.

2. Использование библиотеки Log4net:
C#:
[PluginName("MyPlugin")]
public class MyPlugin : RustPlugin
{
    private ILog logger;

    private void LogToFile(string message)
    {
        logger.Info(message);
    }

    private void OnServerInitialized()
    {
        logger = LogManager.GetLogger("MyPlugin");
        logger.Info("MyPlugin loaded!");

        // Example usage of logging to file
        LogToFile("MyPlugin loaded!");
    }
}
Для использования библиотеки Log4net вам нужно добавить ссылку на ее сборку и настроить файл конфигурации log4net.config. Этот файл указывает, какие данные должны быть залогированы и в каком формате.

Оба этих подхода позволяют вам логировать сообщения в файлы TXT или JSON в плагине для сервера Rust. Вы можете выбрать подход, который лучше всего соответствует вашим потребностям и предпочтениям.
 
В плагине для сервера Rust вы можете использовать встроенные функции для логирования в файлы в формате TXT или JSON. Вот несколько вариантов:

1. Использование функции PrintToConsole() и сохранение вывода в файл:
C#:
[PluginName("MyPlugin")]
public class MyPlugin : RustPlugin
{
    private string logFilePath = "myplugin.log";

    private void LogToFile(string message)
    {
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            writer.WriteLine(DateTime.Now.ToString() + " " + message);
        }
    }

    private void LogToJsonFile(object data)
    {
        string jsonData = JsonConvert.SerializeObject(data);
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            writer.WriteLine(jsonData);
        }
    }

    [ConsoleCommand("myplugin_log")]
    private void CmdLogToFile(ConsoleSystem.Arg arg)
    {
        string message = arg.GetString(0, "");
        LogToFile(message);
    }

    [ConsoleCommand("myplugin_log_json")]
    private void CmdLogToJsonFile(ConsoleSystem.Arg arg)
    {
        object data = arg.GetJson(0);
        LogToJsonFile(data);
    }

    private void OnServerInitialized()
    {
        Puts("MyPlugin loaded!");

        // Example usage of logging to file
        LogToFile("MyPlugin loaded!");
        LogToJsonFile(new { message = "MyPlugin loaded!" });
    }
}
В этом примере создается файл "myplugin.log" в папке "oxide/logs", и каждое сообщение логируется с датой и временем. Вы также можете использовать функцию LogToJsonFile(), чтобы логировать данные в формате JSON.

2. Использование библиотеки Log4net:
C#:
[PluginName("MyPlugin")]
public class MyPlugin : RustPlugin
{
    private ILog logger;

    private void LogToFile(string message)
    {
        logger.Info(message);
    }

    private void OnServerInitialized()
    {
        logger = LogManager.GetLogger("MyPlugin");
        logger.Info("MyPlugin loaded!");

        // Example usage of logging to file
        LogToFile("MyPlugin loaded!");
    }
}
Для использования библиотеки Log4net вам нужно добавить ссылку на ее сборку и настроить файл конфигурации log4net.config. Этот файл указывает, какие данные должны быть залогированы и в каком формате.

Оба этих подхода позволяют вам логировать сообщения в файлы TXT или JSON в плагине для сервера Rust. Вы можете выбрать подход, который лучше всего соответствует вашим потребностям и предпочтениям.
string fileName = $"{DateTime.Now.Day}{DateTime.Now.Month}{DateTime.Now.Year}.txt";
string filePath = "oxide/logs/Test";

if (Directory.Exists(fileName) == false) Directory.CreateDirectory(filePath);


using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.AutoFlush = true;


writer.WriteLine($"{fileName}", player.userID);
}
Выходит такая ошибка:
UnauthorizedAccessException: Access to the path 'C:\gameservers\gs6099\Server\oxide\logs\Test' is denied
 
string fileName = $"{DateTime.Now.Day}{DateTime.Now.Month}{DateTime.Now.Year}.txt";
string filePath = "oxide/logs/Test";

if (Directory.Exists(fileName) == false) Directory.CreateDirectory(filePath);


using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.AutoFlush = true;


writer.WriteLine($"{fileName}", player.userID);
}
Выходит такая ошибка:
UnauthorizedAccessException: Access to the path 'C:\gameservers\gs6099\Server\oxide\logs\Test' is denied
Ошибка "UnauthorizedAccessException: Access to the path 'C:\gameservers\gs6099\Server\oxide\logs\Test' is denied" указывает на то, что у вас нет разрешения на доступ к указанному пути или папке.

Возможные причины и решения этой проблемы:

1. Проверьте, есть ли у вас административные права для доступа к этому пути. Если вы не являетесь администратором сервера, попросите администратора предоставить вам соответствующие разрешения.

2. Убедитесь, что указанный путь или папка существует на сервере Rust. Если нет, создайте его, используя функцию Directory.CreateDirectory() перед созданием файла.

3. Проверьте, не открыт ли уже файл или папка другим процессом. Если файл или папка открыты другим приложением или процессом, закройте их или используйте другой путь или имя файла.

4. Если сервер запущен в контейнере или настроен с использованием средств безопасности, убедитесь, что у вас есть необходимые разрешения для доступа к файлу или папке.

Учитывая все эти факторы, вы должны быть в состоянии решить проблему и разрешить доступ к указанному пути или папке.
 
Напиши плагин для игры Rust на языке C#. С его помощью вы сможете облегчить взаимодействие между друзьями, он будет авторизировать друзей в шкафах, турелях замках, а также управлять уроном между друзьями.
 
Ошибка "UnauthorizedAccessException: Access to the path 'C:\gameservers\gs6099\Server\oxide\logs\Test' is denied" указывает на то, что у вас нет разрешения на доступ к указанному пути или папке.

Возможные причины и решения этой проблемы:

1. Проверьте, есть ли у вас административные права для доступа к этому пути. Если вы не являетесь администратором сервера, попросите администратора предоставить вам соответствующие разрешения.

2. Убедитесь, что указанный путь или папка существует на сервере Rust. Если нет, создайте его, используя функцию Directory.CreateDirectory() перед созданием файла.

3. Проверьте, не открыт ли уже файл или папка другим процессом. Если файл или папка открыты другим приложением или процессом, закройте их или используйте другой путь или имя файла.

4. Если сервер запущен в контейнере или настроен с использованием средств безопасности, убедитесь, что у вас есть необходимые разрешения для доступа к файлу или папке.

Учитывая все эти факторы, вы должны быть в состоянии решить проблему и разрешить доступ к указанному пути или папке.
Напиши плагин друзей для игры Rust на языке C#
 
Ошибка "UnauthorizedAccessException: Access to the path 'C:\gameservers\gs6099\Server\oxide\logs\Test' is denied" указывает на то, что у вас нет разрешения на доступ к указанному пути или папке.

Возможные причины и решения этой проблемы:

1. Проверьте, есть ли у вас административные права для доступа к этому пути. Если вы не являетесь администратором сервера, попросите администратора предоставить вам соответствующие разрешения.

2. Убедитесь, что указанный путь или папка существует на сервере Rust. Если нет, создайте его, используя функцию Directory.CreateDirectory() перед созданием файла.

3. Проверьте, не открыт ли уже файл или папка другим процессом. Если файл или папка открыты другим приложением или процессом, закройте их или используйте другой путь или имя файла.

4. Если сервер запущен в контейнере или настроен с использованием средств безопасности, убедитесь, что у вас есть необходимые разрешения для доступа к файлу или папке.

Учитывая все эти факторы, вы должны быть в состоянии решить проблему и разрешить доступ к указанному пути или папке.
Напиши плагин друзей для игры Rust на языке C#
 
Ошибка "UnauthorizedAccessException: Access to the path 'C:\gameservers\gs6099\Server\oxide\logs\Test' is denied" указывает на то, что у вас нет разрешения на доступ к указанному пути или папке.

Возможные причины и решения этой проблемы:

1. Проверьте, есть ли у вас административные права для доступа к этому пути. Если вы не являетесь администратором сервера, попросите администратора предоставить вам соответствующие разрешения.

2. Убедитесь, что указанный путь или папка существует на сервере Rust. Если нет, создайте его, используя функцию Directory.CreateDirectory() перед созданием файла.

3. Проверьте, не открыт ли уже файл или папка другим процессом. Если файл или папка открыты другим приложением или процессом, закройте их или используйте другой путь или имя файла.

4. Если сервер запущен в контейнере или настроен с использованием средств безопасности, убедитесь, что у вас есть необходимые разрешения для доступа к файлу или папке.

Учитывая все эти факторы, вы должны быть в состоянии решить проблему и разрешить доступ к указанному пути или папке.
Напиши плагин друзей для игры Rust на языке C#
 
Напиши плагин друзей для игры Rust на языке C#
Конечно! Вот пример простого плагина друзей для игры Rust на языке C#:

C#:
using System.Collections.Generic;
using System.Linq;
using Oxide.Core;
using Oxide.Core.Plugins;
using Rust;

namespace Oxide.Plugins
{
    [Info("Friends", "YourName", "1.0.0")]
    [Description("Allows players to add friends and share access to their base.")]

    public class Friends : RustPlugin
    {
        private Dictionary<ulong, List<ulong>> friendList = new Dictionary<ulong, List<ulong>>();

        [ChatCommand("addfriend")]
        private void AddFriendCommand(BasePlayer player, string command, string[] args)
        {
            if (args.Length != 1)
            {
                SendReply(player, "Syntax: /addfriend <playername>");
                return;
            }

            BasePlayer targetPlayer = FindPlayer(args[0]);
            if (targetPlayer == null)
            {
                SendReply(player, "Player not found.");
                return;
            }

            List<ulong> friends;
            if (!friendList.TryGetValue(player.userID, out friends))
            {
                friends = new List<ulong>();
                friendList.Add(player.userID, friends);
            }

            if (friends.Contains(targetPlayer.userID))
            {
                SendReply(player, "This player is already your friend.");
                return;
            }

            friends.Add(targetPlayer.userID);
            SendReply(player, string.Format("{0} has been added to your friends list.", targetPlayer.displayName));
        }

        [ChatCommand("removefriend")]
        private void RemoveFriendCommand(BasePlayer player, string command, string[] args)
        {
            if (args.Length != 1)
            {
                SendReply(player, "Syntax: /removefriend <playername>");
                return;
            }

            BasePlayer targetPlayer = FindPlayer(args[0]);
            if (targetPlayer == null)
            {
                SendReply(player, "Player not found.");
                return;
            }

            List<ulong> friends;
            if (!friendList.TryGetValue(player.userID, out friends))
            {
                SendReply(player, "You have no friends.");
                return;
            }

            if (!friends.Contains(targetPlayer.userID))
            {
                SendReply(player, "This player is not your friend.");
                return;
            }

            friends.Remove(targetPlayer.userID);
            SendReply(player, string.Format("{0} has been removed from your friends list.", targetPlayer.displayName));
        }

        [HookMethod("CanOpenDoor")]
        private object CanOpenDoor(BasePlayer player, BaseLock baseLock)
        {
            if (baseLock == null)
                return null;

            List<ulong> friends;
            if (!friendList.TryGetValue(baseLock.OwnerID, out friends))
                return null;

            if (friends.Contains(player.userID))
                return true;

            return null;
        }

        private BasePlayer FindPlayer(string playerName)
        {
            var allPlayers = BasePlayer.activePlayerList;
            foreach (var player in allPlayers)
            {
                if (player.displayName.ToLower().Contains(playerName.ToLower()))
                    return player;
            }

            return null;
        }
    }
}

В этом примере плагина есть команды /addfriend и /removefriend, которые позволяют игрокам добавлять и удалять друзей. Для определения доступа к дверям используется хук CanOpenDoor. Если игрок добавлен в список друзей владельца двери, ему разрешен доступ к ней.

Обратите внимание, что это пример базового плагина друзей и может потребоваться доработка и адаптация к вашему серверу и требованиям.
 
Напиши плагин друзей для игры Rust на языке C#
К сожалению, я не могу написать плагин для игры Rust на языке C#. Однако, я могу дать вам общее представление о том, как может выглядеть плагин друзей для игры Rust на языке C#.

C#:
using System;
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Plugins;
using Rust;

namespace Oxide.Plugins
{
    [Info("Friends", "YourName", "1.0.0")]
    [Description("Allows players to add friends in Rust")]

    public class Friends : RustPlugin
    {
        private Dictionary<ulong, List<ulong>> friendsData;

        void Init()
        {
            friendsData = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, List<ulong>>>("FriendsData");
        }

        void SaveData()
        {
            Interface.Oxide.DataFileSystem.WriteObject("FriendsData", friendsData);
        }

        [ChatCommand("addfriend")]
        void AddFriendCommand(BasePlayer player, string command, string[] args)
        {
            if (args.Length != 1)
            {
                SendChatMessage(player, "Syntax: /addfriend <playername>");
                return;
            }

            BasePlayer targetPlayer = FindPlayerByName(args[0]);
            if (targetPlayer == null)
            {
                SendChatMessage(player, "Player not found.");
                return;
            }

            if (!friendsData.ContainsKey(player.userID))
            {
                friendsData.Add(player.userID, new List<ulong>());
            }
            friendsData[player.userID].Add(targetPlayer.userID);

            SendChatMessage(player, "Added " + targetPlayer.displayName + " to friends list.");
            SaveData();
        }

        [ChatCommand("removefriend")]
        void RemoveFriendCommand(BasePlayer player, string command, string[] args)
        {
            if (args.Length != 1)
            {
                SendChatMessage(player, "Syntax: /removefriend <playername>");
                return;
            }

            BasePlayer targetPlayer = FindPlayerByName(args[0]);
            if (targetPlayer == null)
            {
                SendChatMessage(player, "Player not found.");
                return;
            }

            if (friendsData.ContainsKey(player.userID) && friendsData[player.userID].Contains(targetPlayer.userID))
            {
                friendsData[player.userID].Remove(targetPlayer.userID);
                SendChatMessage(player, "Removed " + targetPlayer.displayName + " from friends list.");
            }
            else
            {
                SendChatMessage(player, targetPlayer.displayName + " is not in your friends list.");
            }

            SaveData();
        }

        [ChatCommand("friends")]
        void FriendsCommand(BasePlayer player, string command, string[] args)
        {
            if (!friendsData.ContainsKey(player.userID) || friendsData[player.userID].Count == 0)
            {
                SendChatMessage(player, "You have no friends.");
                return;
            }

            SendChatMessage(player, "Your friends:");
            foreach (ulong friendID in friendsData[player.userID])
            {
                BasePlayer friend = FindPlayerByID(friendID);
                if (friend != null)
                {
                    SendChatMessage(player, friend.displayName);
                }
            }
        }

        void SendChatMessage(BasePlayer player, string message)
        {
            SendReply(player, "<color=#FFA500>Friends:</color> " + message);
        }

        BasePlayer FindPlayerByName(string name)
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                if (player.displayName.ToLower() == name.ToLower())
                {
                    return player;
                }
            }
            return null;
        }

        BasePlayer FindPlayerByID(ulong id)
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                if (player.userID == id)
                {
                    return player;
                }
            }
            return null;
        }
    }
}

Этот плагин включает команды /addfriend, /removefriend и /friends, которые позволяют игрокам добавлять и удалять друзей, а также просматривать список друзей. Данные о друзьях сохраняются и загружаются при инициализации плагина и при его сохранении.

Обратите внимание, что это пример и может потребоваться дополнительная работа для его адаптации к вашим потребностям и настройкам сервера Rust.

Не забудьте также добавить ссылку на библиотеку Oxide в свой проект и настроить путь к файлам данных в конфигурационном файле Oxide.
 
Напиши плагин друзей для игры Rust на языке C#
Конечно, вот простой пример плагина друзей для игры Rust на языке C#:

C#:
using System.Collections.Generic;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Friends", "Your Name", "1.0.0")]
    [Description("Friend system for Rust")]

    public class Friends : RustPlugin
    {
        private Dictionary<ulong, List<ulong>> friendData = new Dictionary<ulong, List<ulong>>();

        void Loaded()
        {
            LoadData();
        }

        void Unload()
        {
            SaveData();
        }

        void LoadData()
        {
            friendData = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, List<ulong>>>("Friends");
        }

        void SaveData()
        {
            Interface.Oxide.DataFileSystem.WriteObject("Friends", friendData);
        }

        [ChatCommand("friend")]
        void cmdFriend(BasePlayer player, string command, string[] args)
        {
            if (args.Length == 0)
            {
                player.ChatMessage("Usage: /friend add <player> | /friend remove <player> | /friend list");
                return;
            }

            if (args[0].ToLower() == "add")
            {
                if (args.Length < 2)
                {
                    player.ChatMessage("Usage: /friend add <player>");
                    return;
                }

                BasePlayer target = FindPlayer(args[1]);
                if (target == null)
                {
                    player.ChatMessage("Player not found.");
                    return;
                }

                AddFriend(player.userID, target.userID);
                player.ChatMessage("Added " + target.displayName + " to your friend list.");
            }

            if (args[0].ToLower() == "remove")
            {
                if (args.Length < 2)
                {
                    player.ChatMessage("Usage: /friend remove <player>");
                    return;
                }

                BasePlayer target = FindPlayer(args[1]);
                if (target == null)
                {
                    player.ChatMessage("Player not found.");
                    return;
                }

                RemoveFriend(player.userID, target.userID);
                player.ChatMessage("Removed " + target.displayName + " from your friend list.");
            }

            if (args[0].ToLower() == "list")
            {
                List<ulong> friends;
                if (friendData.TryGetValue(player.userID, out friends))
                {
                    player.ChatMessage("Friend List:");
                    foreach (var friendID in friends)
                    {
                        BasePlayer friend = BasePlayer.FindByID(friendID);
                        if (friend != null)
                            player.ChatMessage(friend.displayName);
                    }
                }
                else
                {
                    player.ChatMessage("You don't have any friends.");
                }
            }
        }

        void AddFriend(ulong playerID, ulong friendID)
        {
            List<ulong> friends;
            if (!friendData.TryGetValue(playerID, out friends))
            {
                friends = new List<ulong>();
                friendData.Add(playerID, friends);
            }

            if (!friends.Contains(friendID))
                friends.Add(friendID);

            SaveData();
        }

        void RemoveFriend(ulong playerID, ulong friendID)
        {
            List<ulong> friends;
            if (friendData.TryGetValue(playerID, out friends))
            {
                if (friends.Contains(friendID))
                    friends.Remove(friendID);

                if (friends.Count == 0)
                    friendData.Remove(playerID);

                SaveData();
            }
        }

        BasePlayer FindPlayer(string nameOrID)
        {
            BasePlayer player = null;
            ulong userID;
            if (ulong.TryParse(nameOrID, out userID))
                player = BasePlayer.FindByID(userID);
            else
                player = BasePlayer.Find(nameOrID);

            return player;
        }
    }
}

Этот плагин позволяет игрокам добавлять и удалять друзей в игре Rust. Используется команда /friend, которая имеет подкоманды add, remove и list. Когда игрок добавляет друга, их SteamID добавляется в словарь friendData. Этот словарь сохраняется и загружается с помощью функций LoadData() и SaveData(). Информация о друзьях доступна каждому игроку через команду /friend list.

Обратите внимание, что этот пример плагина использует Oxide API для работы с данными и командами. Если вы используете другую API, вам может потребоваться изменить некоторые части кода.

Не забудьте установить и настроить Oxide для своего сервера Rust, чтобы подключить и запустить этот плагин.
 
Конечно, вот простой пример плагина друзей для игры Rust на языке C#:

C#:
using System.Collections.Generic;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Friends", "Your Name", "1.0.0")]
    [Description("Friend system for Rust")]

    public class Friends : RustPlugin
    {
        private Dictionary<ulong, List<ulong>> friendData = new Dictionary<ulong, List<ulong>>();

        void Loaded()
        {
            LoadData();
        }

        void Unload()
        {
            SaveData();
        }

        void LoadData()
        {
            friendData = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, List<ulong>>>("Friends");
        }

        void SaveData()
        {
            Interface.Oxide.DataFileSystem.WriteObject("Friends", friendData);
        }

        [ChatCommand("friend")]
        void cmdFriend(BasePlayer player, string command, string[] args)
        {
            if (args.Length == 0)
            {
                player.ChatMessage("Usage: /friend add <player> | /friend remove <player> | /friend list");
                return;
            }

            if (args[0].ToLower() == "add")
            {
                if (args.Length < 2)
                {
                    player.ChatMessage("Usage: /friend add <player>");
                    return;
                }

                BasePlayer target = FindPlayer(args[1]);
                if (target == null)
                {
                    player.ChatMessage("Player not found.");
                    return;
                }

                AddFriend(player.userID, target.userID);
                player.ChatMessage("Added " + target.displayName + " to your friend list.");
            }

            if (args[0].ToLower() == "remove")
            {
                if (args.Length < 2)
                {
                    player.ChatMessage("Usage: /friend remove <player>");
                    return;
                }

                BasePlayer target = FindPlayer(args[1]);
                if (target == null)
                {
                    player.ChatMessage("Player not found.");
                    return;
                }

                RemoveFriend(player.userID, target.userID);
                player.ChatMessage("Removed " + target.displayName + " from your friend list.");
            }

            if (args[0].ToLower() == "list")
            {
                List<ulong> friends;
                if (friendData.TryGetValue(player.userID, out friends))
                {
                    player.ChatMessage("Friend List:");
                    foreach (var friendID in friends)
                    {
                        BasePlayer friend = BasePlayer.FindByID(friendID);
                        if (friend != null)
                            player.ChatMessage(friend.displayName);
                    }
                }
                else
                {
                    player.ChatMessage("You don't have any friends.");
                }
            }
        }

        void AddFriend(ulong playerID, ulong friendID)
        {
            List<ulong> friends;
            if (!friendData.TryGetValue(playerID, out friends))
            {
                friends = new List<ulong>();
                friendData.Add(playerID, friends);
            }

            if (!friends.Contains(friendID))
                friends.Add(friendID);

            SaveData();
        }

        void RemoveFriend(ulong playerID, ulong friendID)
        {
            List<ulong> friends;
            if (friendData.TryGetValue(playerID, out friends))
            {
                if (friends.Contains(friendID))
                    friends.Remove(friendID);

                if (friends.Count == 0)
                    friendData.Remove(playerID);

                SaveData();
            }
        }

        BasePlayer FindPlayer(string nameOrID)
        {
            BasePlayer player = null;
            ulong userID;
            if (ulong.TryParse(nameOrID, out userID))
                player = BasePlayer.FindByID(userID);
            else
                player = BasePlayer.Find(nameOrID);

            return player;
        }
    }
}

Этот плагин позволяет игрокам добавлять и удалять друзей в игре Rust. Используется команда /friend, которая имеет подкоманды add, remove и list. Когда игрок добавляет друга, их SteamID добавляется в словарь friendData. Этот словарь сохраняется и загружается с помощью функций LoadData() и SaveData(). Информация о друзьях доступна каждому игроку через команду /friend list.

Обратите внимание, что этот пример плагина использует Oxide API для работы с данными и командами. Если вы используете другую API, вам может потребоваться изменить некоторые части кода.

Не забудьте установить и настроить Oxide для своего сервера Rust, чтобы подключить и запустить этот плагин.
Привет! Вот пример плагина на языке C#, который удалит предметы "hoodie", "pants" и "shoes.boots" из трупов после смерти игрока в игре Rust:
 
Активность
Пока никто не печатает сообщение