Обсудим Plugin rust

  • Автор темы Автор темы RAGE
  • Дата начала Дата начала

RAGE

Автор темы
5 Мар 2025
5
0
9
Можно ли как то на своем пк в запущенном сервере , что бы добавлять в плагин картинки, не загружать их на хостинги а держать на пк и подтягивать из файлов, потому что прогрузка плагина при открытии окон занимает несколько милисекунд и видно что идет загрузка картинки, хотело бы что бы при открытии окон картинки показывались моментально, если не сложно подскажите как сделать
 
Нельзя, можно из data их брать
можно поподробнее описать , имеется ввиду что вообще не получится их хранить на этом пк где запущен сервер или же можно добавить в бибилиотеку где лежит сервер в папку oxid data ?

Вопрос еще как выглядит ссылка локальная , просто все перепробовал ничего не получается
вот кусок плагина, с сылками

[Info("FarmUI", "RAGE", "1.0.6")] // Указание метаданных плагина: название, автор, версия
public class FarmUI : RustPlugin // Определение класса плагина, наследуемого от RustPlugin
{
private const string UI_NAME = "FarmUI"; // Константа с именем основного UI для удобства использования
private Dictionary<ulong, int> playerBarrels = new Dictionary<ulong, int>(); // Словарь для хранения количества собранных бочек для каждого игрока (ключ - ID игрока, значение - количество бочек)
private HashSet<ulong> activeUI = new HashSet<ulong>(); // Множество для отслеживания игроков с активным интерфейсом

private string farmButtonImageUrl = "https://i.postimg.cc/ZnxH3417/ikon-bochka-1.png"; // URL изображения кнопки открытия интерфейса
private string[] images = new string[] // Массив URL-адресов изображений для уровней
{
"https://i.postimg.cc/d0KC4DKd/level1.png", // Изображение для уровня 1
"https://i.postimg.cc/cJMnjZsz/level2.png", // Изображение для уровня 2
"https://i.postimg.cc/Y9rWBV0C/level3.png" // Изображение для уровня 3
};

private (int, int)[] levels = new (int, int)[] // Массив кортежей с уровнями (требуемое количество бочек, награда в скрапе)
{
(50, 100), // Уровень 1: 50 бочек = 100 скрапа
(300, 500), // Уровень 2: 300 бочек = 500 скрапа
(500, 1000) // Уровень 3: 500 бочек = 1000 скрапа
};
 
можно поподробнее описать , имеется ввиду что вообще не получится их хранить на этом пк где запущен сервер или же можно добавить в бибилиотеку где лежит сервер в папку oxid data ?

Вопрос еще как выглядит ссылка локальная , просто все перепробовал ничего не получается
вот кусок плагина, с сылками

[Info("FarmUI", "RAGE", "1.0.6")] // Указание метаданных плагина: название, автор, версия
public class FarmUI : RustPlugin // Определение класса плагина, наследуемого от RustPlugin
{
private const string UI_NAME = "FarmUI"; // Константа с именем основного UI для удобства использования
private Dictionary<ulong, int> playerBarrels = new Dictionary<ulong, int>(); // Словарь для хранения количества собранных бочек для каждого игрока (ключ - ID игрока, значение - количество бочек)
private HashSet<ulong> activeUI = new HashSet<ulong>(); // Множество для отслеживания игроков с активным интерфейсом

private string farmButtonImageUrl = "https://i.postimg.cc/ZnxH3417/ikon-bochka-1.png"; // URL изображения кнопки открытия интерфейса
private string[] images = new string[] // Массив URL-адресов изображений для уровней
{
"https://i.postimg.cc/d0KC4DKd/level1.png", // Изображение для уровня 1
"https://i.postimg.cc/cJMnjZsz/level2.png", // Изображение для уровня 2
"https://i.postimg.cc/Y9rWBV0C/level3.png" // Изображение для уровня 3
};

private (int, int)[] levels = new (int, int)[] // Массив кортежей с уровнями (требуемое количество бочек, награда в скрапе)
{
(50, 100), // Уровень 1: 50 бочек = 100 скрапа
(300, 500), // Уровень 2: 300 бочек = 500 скрапа
(500, 1000) // Уровень 3: 500 бочек = 1000 скрапа
};
https://i.postimg.cc/d0KC4DKd/level1.png вот так и надо
 
Можно ли как то на своем пк в запущенном сервере , что бы добавлять в плагин картинки, не загружать их на хостинги а держать на пк и подтягивать из файлов, потому что прогрузка плагина при открытии окон занимает несколько милисекунд и видно что идет загрузка картинки, хотело бы что бы при открытии окон картинки показывались моментально, если не сложно подскажите как сделать
Можно, и даже не из data, но необходимо что бы они были на одной машине с сервером и переписать плагины под подгрузку/либо использовать file:// как ссылку (file://C/images/test.png)
 
Можно, и даже не из data, но необходимо что бы они были на одной машине с сервером и переписать плагины под подгрузку/либо использовать file:// как ссылку (file://C/images/test.png)
данный метод не работает, (file://C/images/test.png) при использовании такой ссылки картинка не появляется , просто вместо нее висит стандартное изображение раста, не знаю почему так происходит и что я делаю не так
Вот пример кода


private const string UI_NAME = "FarmUI"; // Константа с именем основного UI для удобства использования
private Dictionary<ulong, int> playerBarrels = new Dictionary<ulong, int>(); // Словарь для хранения количества собранных бочек для каждого игрока (ключ - ID игрока, значение - количество бочек)
private HashSet<ulong> activeUI = new HashSet<ulong>(); // Множество для отслеживания игроков с активным интерфейсом

private string farmButtonImageUrl = "https://i.postimg.cc/ZnxH3417/ikon-bochka-1.png"; // URL изображения кнопки открытия интерфейса
private string[] images = new string[] // Массив UFRL-адресов изображений для уровней
{
"file://C:/image/level1.png", // Изображение для уровня 1
"https://i.postimg.cc/cJMnjZsz/level2.png", // Изображение для уровня 2
"https://i.postimg.cc/Y9rWBV0C/level3.png" // Изображение для уровня 3
};
 
(file://C/images/test.png)
Она и не появится, xkrystall о своем говорит (URI)

ImageLibrary и так хранит их на "ПК", только на сервере.

На клиенте изображения не кешируются, в документации (CUI):

png -строка - Контрольная сумма CRC Изображения, размещенного на Сервере

То есть игрок каждый раз загружает изображение с сервера (а вот тут кстати могу ошибаться), это при том что это самый быстрый вариант
 
Тут я кстати и ошибся:
[CODE lang="csharp" title="код"]uint crc = FileStorage.server.Store(data, FileStorage.Type.png, CommunityEntity.ServerInstance.net.ID);
[/CODE]
После этого клиент Rust автоматически загрузит изображение с сервера. Вам придется заново загружать изображение после каждой очистки, так как сетевой идентификатор CommunityEntity будет отличаться, из-за чего клиент не сможет найти ваше изображение.

Информацию брал от сюда:
https://github.com/Kulltero/Rust.Community/blob/Docs/docs/components/UnityEngine.UI.RawImage.md
 
Тут я кстати и ошибся:
[CODE lang="csharp" title="код"]uint crc = FileStorage.server.Store(data, FileStorage.Type.png, CommunityEntity.ServerInstance.net.ID);
[/CODE]
После этого клиент Rust автоматически загрузит изображение с сервера. Вам придется заново загружать изображение после каждой очистки, так как сетевой идентификатор CommunityEntity будет отличаться, из-за чего клиент не сможет найти ваше изображение.

Информацию брал от сюда:
https://github.com/Kulltero/Rust.Community/blob/Docs/docs/components/UnityEngine.UI.RawImage.md
Просто я наткнулся на видео https://[Удаленная ссылка].ru/resources/shop.99/?ysclid=m7yv8j473g597982930
где данный плагин без задержек открывает страницы и там изображения моментально появляются
как такое сделать?
P.S я не пишу плагины сам, использую grok так что все что мы можете мне объяснить это лишь то что нужно сделать и как, остальное я все равно не пойму
 
Просто я наткнулся на видео https://[Удаленная ссылка].ru/resources/shop.99/?ysclid=m7yv8j473g597982930
где данный плагин без задержек открывает страницы и там изображения моментально появляются
как такое сделать?
P.S я не пишу плагины сам, использую grok так что все что мы можете мне объяснить это лишь то что нужно сделать и как, остальное я все равно не пойму
Вообще рекомендую забросить эту идею, у тебя задача максимально неважная и принесет тебе деструктива в будущем.

Это ФПС игра, нужна очень быстрая сообщаемость сервера-клиента. (люди стреляются, лаги не должны быть решающим фактором в замесе)
Если у тебя на сервере будет 200-300 человек играть и тянуть у тебя кучи изображений с сервера при хорошем весе этих картинок, то ты этим банально создашь лаги, которые не менее того - будешь очень долго решать и не понимать в чем бедища.

Проблему с лагами на серверах решают обновлениями (заливом изображений и элементов прям в клиент юзера) клиента людей (в расте клиентом заняты разрабы игры и мы там не участвуем) или наличием ЦДНа для хранения всякой переферии для разгрузки трафика самого сервера.

В расте тоже давно кто-нибудь сделал бы цеф интерфейс и закидывал бы интерфейс на отдельную машину/хостинг, развернув там CDN для стягивания оттуда необходимых, но мешающих стабильности ресурсов. (если бы у админов была возможность кидать обновы в клиент игрокам).

Что-бы твоя картинка тянулась в клиент (игрока) максимально быстро - уменьши размер картинки до максимума, что-бы она не выглядела размыто и максимально потеряла вес, потом загугли какой-нибудь сервис по удалению мета-данных с картинки, очисти все мета (они тебе не нужны и всем другим тоже). Твои картинки будут весить по 200-400 килобайт. Они будут и быстро грузиться и при нахождении на машине не будут забивать тебе трафик (который она делит с сервером).
 
Загрузка картинок со сторонних ресурсов (рекомендую аймгур) это условно тоже ЦДН (для понимающих - очень условно! :).
Пусть твои юзеры грузят аймгур сколько хотят, там пропускная способность 10 гиг интернета, или все 50.
А у тебя 100 мегабит, не надо тебе никакие картинки держать на машине и никому их доставлять с неё же.
Машина уже на сотке онлайна, кстати, начнёт чихать с передачей картинок юзеру.
Будет или лагать или подгрузка картинок будет дольше чем с аймгура.
 
Здравствуйте Уважаемые.
Новую тему составлять не буду напишу тут.
Создал сервер раста сижу играю строюсь изучаю, появилась проблема в группе людей играющих.
Зайдут быстро разовьются до технологии и начинают выносить других игроков чтобы они не играли на сервере.
Но это мне как то не важно, а вот наболело то что начали так как нет других игроков сносить мой дом.
Говорил им не трогать все равно сносят.
Не вытерпела моя душа установил этот плагин Zone Manager вроде бы все правильно прописал.
1) /zone_add
2) /zone option3 value3 не знаю что значит но поставил 3 вариант
3) и потом прописал это /zone nobuild true nodeploy true name “Admin House” undestr true
На следующий день захожу базу снесли авиаударом, так как забор и стены были, а вот крыши и пола не было.
Пещерная жизнь мне не понравилась там прыгать надо, снова построился на открытой местности и уже остались только колонны все снесли.
Подскажите как прописать правильно плагин чтобы ни кто не мог подойти и зарейдить.
И какой есть еще плагин чтобы нельзя было снести базу авиаударом.
 
Здравствуйте Уважаемые.
Новую тему составлять не буду напишу тут.
Создал сервер раста сижу играю строюсь изучаю, появилась проблема в группе людей играющих.
Зайдут быстро разовьются до технологии и начинают выносить других игроков чтобы они не играли на сервере.
Но это мне как то не важно, а вот наболело то что начали так как нет других игроков сносить мой дом.
Говорил им не трогать все равно сносят.
Не вытерпела моя душа установил этот плагин Zone Manager вроде бы все правильно прописал.
1) /zone_add
2) /zone option3 value3 не знаю что значит но поставил 3 вариант
3) и потом прописал это /zone nobuild true nodeploy true name “Admin House” undestr true
На следующий день захожу базу снесли авиаударом, так как забор и стены были, а вот крыши и пола не было.
Пещерная жизнь мне не понравилась там прыгать надо, снова построился на открытой местности и уже остались только колонны все снесли.
Подскажите как прописать правильно плагин чтобы ни кто не мог подойти и зарейдить.
И какой есть еще плагин чтобы нельзя было снести базу авиаударом.
Тебе лучше создать новую тему, тут тебе так не помогут в этой теме.