• Хостинг игровых серверов

    Максимальная производительность для ваших игровых серверов!

    Заказать сейчас

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

Нейросеть GPT-3.5 Turbo доступна всем пользователям. Для доступа к GPT-4 Turbo необходимо приобрести «Prime».
Я кормил ему плагин частями точнее блоками он прямо говорил что типа это плагин делает )
если правильно объяснить, что ты хочешь, то ИИ правильно отвечает.
Как и ты делал, показывал плагин, если не большой, описывал что и где мне нужно сделать.
Далее корректировали код, и в итоге получался готовый плагин.
Очень помогает, в оптимизации кода, показывает как лучше было написать.
Но это работает только тогда, когда объяснять умеешь и работать с представленным кодом
Plus версия GPT пишет очень быстро
 
если правильно объяснить, что ты хочешь, то ИИ правильно отвечает.
Как и ты делал, показывал плагин, если не большой, описывал что и где мне нужно сделать.
Далее корректировали код, и в итоге получался готовый плагин.
Очень помогает, в оптимизации кода, показывает как лучше было написать.
Но это работает только тогда, когда объяснять умеешь и работать с представленным кодом
Plus версия GPT пишет очень быстро
Единственно что хотелось бы видеть в реализации чтоб не было ограничений и обучаемость! Но такое я думаю не так скоро появиться
 
Единственно что хотелось бы видеть в реализации чтоб не было ограничений и обучаемость!
Я покопался в настройках чат бота, можно выставить ему определенные параметры и тогда он лучше будет выполнять какие-то функции, например написание кода.
 
Я покопался в настройках чат бота, можно выставить ему определенные параметры и тогда он лучше будет выполнять какие-то функции, например написание кода.
Ну это вы покопались человек знающий и понимающий и я человек который ещё переодичкски буквы на клавиатуре путает ?
 
Придумай простую идею для плагина и напиши его.
Одной из простых идей для плагина может быть плагин, который отображает информацию о доме игрока. Например, плагин может отображать количество игроков, находящихся в доме, уровень защиты дома и статус энергии у двери.

Вот пример кода для такого плагина:

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

namespace Oxide.Plugins
{
    [Info("HouseInfo", "YourNameHere", "0.1.0")]
    [Description("Displays information about the player's house")]
    public class HouseInfo : RustPlugin
    {
        private Dictionary<ulong, Vector3> playerHomes = new Dictionary<ulong, Vector3>();

        private void OnPlayerInit(BasePlayer player)
        {
            if (!playerHomes.ContainsKey(player.userID))
            {
                playerHomes.Add(player.userID, player.transform.position);
            }
        }

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            if (playerHomes.ContainsKey(player.userID))
            {
                playerHomes.Remove(player.userID);
            }
        }

        [ChatCommand("homeinfo")]
        private void HomeInfoCommand(BasePlayer player, string command, string[] args)
        {
            if (!playerHomes.ContainsKey(player.userID))
            {
                player.ChatMessage("You do not have a home set.");
                return;
            }

            Vector3 homePosition = playerHomes[player.userID];
            int playerCount = BasePlayer.activePlayerList.FindAll(p => Vector3.Distance(homePosition, p.transform.position) < 10f).Count;
            player.ChatMessage(string.Format("There are {0} players in your home.", playerCount));
        }
    }
}

Этот плагин сохраняет позицию дома игрока при инициализации и удаляет ее при отключении игрока. Команда /homeinfo выводит количество игроков, находящихся в доме, на котором находится игрок, который вызывает команду.

Конечно, этот плагин можно улучшить, добавив больше функций, таких как отображение информации о защите дома и статусе энергии дверей, но этот пример может послужить хорошим стартом для создания более сложных плагинов.
 
  • Мне нравится
Реакции: MrFallen
Одной из простых идей для плагина может быть плагин, который отображает информацию о доме игрока. Например, плагин может отображать количество игроков, находящихся в доме, уровень защиты дома и статус энергии у двери.

Вот пример кода для такого плагина:

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

namespace Oxide.Plugins
{
    [Info("HouseInfo", "YourNameHere", "0.1.0")]
    [Description("Displays information about the player's house")]
    public class HouseInfo : RustPlugin
    {
        private Dictionary<ulong, Vector3> playerHomes = new Dictionary<ulong, Vector3>();

        private void OnPlayerInit(BasePlayer player)
        {
            if (!playerHomes.ContainsKey(player.userID))
            {
                playerHomes.Add(player.userID, player.transform.position);
            }
        }

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            if (playerHomes.ContainsKey(player.userID))
            {
                playerHomes.Remove(player.userID);
            }
        }

        [ChatCommand("homeinfo")]
        private void HomeInfoCommand(BasePlayer player, string command, string[] args)
        {
            if (!playerHomes.ContainsKey(player.userID))
            {
                player.ChatMessage("You do not have a home set.");
                return;
            }

            Vector3 homePosition = playerHomes[player.userID];
            int playerCount = BasePlayer.activePlayerList.FindAll(p => Vector3.Distance(homePosition, p.transform.position) < 10f).Count;
            player.ChatMessage(string.Format("There are {0} players in your home.", playerCount));
        }
    }
}

Этот плагин сохраняет позицию дома игрока при инициализации и удаляет ее при отключении игрока. Команда /homeinfo выводит количество игроков, находящихся в доме, на котором находится игрок, который вызывает команду.

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

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

namespace Oxide.Plugins
{
    [Info("InventorySave", "YourNameHere", "0.1.0")]
    [Description("Saves and restores player's inventory when they disconnect and reconnect")]
    public class InventorySave : RustPlugin
    {
        private Dictionary<ulong, List<Item>> playerInventories = new Dictionary<ulong, List<Item>>();

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            List<Item> inventory = new List<Item>();
            foreach (Item item in player.inventory.containerMain.itemList)
            {
                inventory.Add(item);
            }
            foreach (Item item in player.inventory.containerBelt.itemList)
            {
                inventory.Add(item);
            }
            playerInventories[player.userID] = inventory;
            player.inventory.containerMain.Clear();
            player.inventory.containerBelt.Clear();
        }

        private void OnPlayerInit(BasePlayer player)
        {
            if (playerInventories.ContainsKey(player.userID))
            {
                List<Item> inventory = playerInventories[player.userID];
                foreach (Item item in inventory)
                {
                    item.MoveToContainer(player.inventory.containerMain);
                }
                playerInventories.Remove(player.userID);
            }
        }
    }
}

Когда игрок отключается от сервера, его инвентарь сохраняется в словаре playerInventories, а его инвентарь очищается. Когда он снова подключается, плагин проверяет наличие сохраненного инвентаря и ложит предметы из него в инвентарь игрока.

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

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

namespace Oxide.Plugins
{
    [Info("InventorySave", "YourNameHere", "0.1.0")]
    [Description("Saves and restores player's inventory when they disconnect and reconnect")]
    public class InventorySave : RustPlugin
    {
        private Dictionary<ulong, List<Item>> playerInventories = new Dictionary<ulong, List<Item>>();

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            List<Item> inventory = new List<Item>();
            foreach (Item item in player.inventory.containerMain.itemList)
            {
                inventory.Add(item);
            }
            foreach (Item item in player.inventory.containerBelt.itemList)
            {
                inventory.Add(item);
            }
            playerInventories[player.userID] = inventory;
            player.inventory.containerMain.Clear();
            player.inventory.containerBelt.Clear();
        }

        private void OnPlayerInit(BasePlayer player)
        {
            if (playerInventories.ContainsKey(player.userID))
            {
                List<Item> inventory = playerInventories[player.userID];
                foreach (Item item in inventory)
                {
                    item.MoveToContainer(player.inventory.containerMain);
                }
                playerInventories.Remove(player.userID);
            }
        }
    }
}

Когда игрок отключается от сервера, его инвентарь сохраняется в словаре playerInventories, а его инвентарь очищается. Когда он снова подключается, плагин проверяет наличие сохраненного инвентаря и ложит предметы из него в инвентарь игрока.

Конечно, этот плагин может быть улучшен и расширен, например, добавив сохранение инвентаря при смерти игрока и восстановление его после воскрешения, но этот пример может послужить хорошим стартом для создания более сложных плагинов.
Метода OnPlayerInit давно не существует, нужно использовать OnPlayerConnected
 
Метода OnPlayerInit давно не существует, нужно использовать OnPlayerConnected
Вы правы, я извиняюсь за ошибку. Вот обновленный пример кода с использованием метода OnPlayerConnected:

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

namespace Oxide.Plugins
{
    [Info("InventorySave", "YourNameHere", "0.1.0")]
    [Description("Saves and restores player's inventory when they disconnect and reconnect")]
    public class InventorySave : RustPlugin
    {
        private Dictionary<ulong, List<Item>> playerInventories = new Dictionary<ulong, List<Item>>();

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            List<Item> inventory = new List<Item>();
            foreach (Item item in player.inventory.containerMain.itemList)
            {
                inventory.Add(item);
            }
            foreach (Item item in player.inventory.containerBelt.itemList)
            {
                inventory.Add(item);
            }
            playerInventories[player.userID] = inventory;
            player.inventory.containerMain.Clear();
            player.inventory.containerBelt.Clear();
        }

        private void OnPlayerConnected(BasePlayer player)
        {
            if (playerInventories.ContainsKey(player.userID))
            {
                List<Item> inventory = playerInventories[player.userID];
                foreach (Item item in inventory)
                {
                    item.MoveToContainer(player.inventory.containerMain);
                }
                playerInventories.Remove(player.userID);
            }
        }
    }
}

Этот плагин сохраняет инвентарь игрока при его отключении от сервера и восстанавливает его при следующем подключении.

Конечно, этот пример может быть улучшен и расширен, например, добавив сохранение инвентаря при смерти игрока и восстановление его после воскрешения, но этот пример может послужить хорошим стартом для создания более сложных плагинов.
 
Напиши плагин Menu для сервера
Конечно, вот пример кода для плагина, который создает меню на сервере:

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

namespace Oxide.Plugins
{
    [Info("Menu", "YourNameHere", "0.1.0")]
    [Description("Creates a menu on the server")]
    public class Menu : RustPlugin
    {
        private Dictionary<ulong, MenuData> playerMenus = new Dictionary<ulong, MenuData>();

        private class MenuData
        {
            public string[] options;
            public string[] responses;
            public int currentOption;
            public ulong targetPlayerID;
            public ulong sourcePlayerID;

            public MenuData(string[] options, string[] responses, ulong targetPlayerID, ulong sourcePlayerID)
            {
                this.options = options;
                this.responses = responses;
                this.currentOption = 0;
                this.targetPlayerID = targetPlayerID;
                this.sourcePlayerID = sourcePlayerID;
            }
        }

        [ChatCommand("menu")]
        private void MenuCommand(BasePlayer player, string command, string[] args)
        {
            if (args.Length == 0)
            {
                player.ChatMessage("Usage: /menu <option1,option2,option3,...> <response1,response2,response3,...> <player name>");
                return;
            }

            string[] options = args[0].Split(',');
            string[] responses = args[1].Split(',');
            string targetPlayerName = args[2];
            BasePlayer targetPlayer = BasePlayer.Find(targetPlayerName);
            if (targetPlayer == null)
            {
                player.ChatMessage("Player not found.");
                return;
            }

            ulong targetPlayerID = targetPlayer.userID;
            ulong sourcePlayerID = player.userID;
            MenuData menuData = new MenuData(options, responses, targetPlayerID, sourcePlayerID);
            playerMenus[player.userID] = menuData;

            ShowMenu(player, menuData);
        }

        private void ShowMenu(BasePlayer player, MenuData menuData)
        {
            string message = string.Format("Select an option for {0}:\n", player.displayName);
            for (int i = 0; i < menuData.options.Length; i++)
            {
                if (i == menuData.currentOption)
                {
                    message += $"<color=yellow>{menuData.options[i]}</color>\n";
                }
                else
                {
                    message += $"{menuData.options[i]}\n";
                }
            }
            player.ChatMessage(message);
        }

        [ChatCommand("menu_up")]
        private void MenuUpCommand(BasePlayer player, string command, string[] args)
        {
            if (!playerMenus.ContainsKey(player.userID))
            {
                return;
            }

            MenuData menuData = playerMenus[player.userID];
            menuData.currentOption--;
            if (menuData.currentOption < 0)
            {
                menuData.currentOption = 0;
            }
            playerMenus[player
 
Limen видимо нужно цитировать не все его сообщение, а только часть. Иначе слишком много инфы. Ну мое предположение. Когда ты цитируешь сообщение, оно служит контекстом для бота. Видимо много переварить не может :(
 
Активность
Пока никто не печатает сообщение