Иконка ресурса

FREE PulseRustUI : 1.0.1 1.0.1

Нет прав для скачивания
C#:
using System.Text;
namespace Oxide.Plugins;
[Info("PulseRustUI", "Sergioklv", "1.0.1")]
public class PulseRustUI : RustPlugin {
    private const string UIName = "PulseRustUI";
    private const string TextElement = "PulseRustUI_Text";
    private static string? _baseUITemplate;
    private static string? _updateTemplate;
    private static readonly StringBuilder _sb = new(256);
    private void OnServerInitialized() {
        BuildTemplates();
        foreach (var player in BasePlayer.activePlayerList) CreateUI(player);
    }
    private void Unload() {
        foreach (var player in BasePlayer.activePlayerList) DestroyUI(player);
    }
    private void OnPlayerConnected(BasePlayer player) {
        if (player is null) return;
        CreateUI(player);
        UpdateOtherPlayers(player);
    }
    private void OnPlayerDisconnected(BasePlayer player) {
        if (player is null) return;
        UpdateAllPlayers();
    }
    private static void BuildTemplates2() {
        _baseUITemplate = "[{\"name\":\"PulseRustUI\",\"parent\":\"Hud\",\"components\":[{\"type\":\"RectTransform\",\"anchormin\":\"0 1\",\"anchormax\":\"0 1\",\"offsetmin\":\"14.021 -46.72\",\"offsetmax\":\"121.622 -11.92\"},{\"type\":\"UnityEngine.UI.RawImage\",\"url\":\"https://pulserust292.ru/AntiCheat/PulseWinter.png\"}]},{\"name\":\"PulseRustUI_Text\",\"parent\":\"PulseRustUI\",\"components\":[{\"type\":\"RectTransform\",\"anchormin\":\"0 0\",\"anchormax\":\"0 0\",\"offsetmin\":\"15.515 2.438\",\"offsetmax\":\"40.685 16.162\"},{\"type\":\"UnityEngine.UI.Text\",\"text\":\"{COUNT}\",\"font\":\"RobotoCondensed-Regular.ttf\",\"fontSize\":12,\"align\":\"MiddleCenter\",\"verticalOverflow\":\"Overflow\"}]}]";
        _updateTemplate = "[{\"name\":\"PulseRustUI_Text\",\"parent\":\"PulseRustUI\",\"update\":true,\"components\":[{\"type\":\"RectTransform\",\"anchormin\":\"0 0\",\"anchormax\":\"0 0\",\"offsetmin\":\"15.515 2.438\",\"offsetmax\":\"40.685 14.5\"},{\"type\":\"UnityEngine.UI.Text\",\"text\":\"{COUNT}\",\"font\":\"RobotoCondensed-Regular.ttf\",\"fontSize\":12,\"align\":\"MiddleCenter\",\"verticalOverflow\":\"Overflow\"}]}]";
    }
    private static void BuildTemplates() {
        _baseUITemplate = "[{" + "\"name\":\"PulseRustUI\"," + "\"parent\":\"Hud\"," + "\"components\":[" + "{\"type\":\"RectTransform\",\"anchormin\":\"0 1\",\"anchormax\":\"0 1\",\"offsetmin\":\"14.021 -46.72\",\"offsetmax\":\"121.622 -11.92\"}," + "{\"type\":\"UnityEngine.UI.RawImage\",\"url\":\"https://pulserust292.ru/AntiCheat/PulseWinter.png\"}" + "]" + "}," + "{" + "\"name\":\"PulseRustUI_Button\"," + "\"parent\":\"PulseRustUI\"," + "\"components\":[" + "{\"type\":\"RectTransform\",\"anchormin\":\"0 0\",\"anchormax\":\"1 1\",\"offsetmin\":\"0 0\",\"offsetmax\":\"0 0\"}," + "{\"type\":\"UnityEngine.UI.Button\",\"command\":\"chat.say /info\",\"color\":\"0 0 0 0\"}" + "]" + "}," + "{" + "\"name\":\"PulseRustUI_Text\"," + "\"parent\":\"PulseRustUI\"," + "\"components\":[" + "{\"type\":\"RectTransform\",\"anchormin\":\"0 0\",\"anchormax\":\"0 0\",\"offsetmin\":\"15.515 -3.562\",\"offsetmax\":\"40.685 10.162\"}," + "{\"type\":\"UnityEngine.UI.Text\",\"text\":\"<color=#00F0F0>{COUNT}</color>\",\"font\":\"RobotoCondensed-Regular.ttf\",\"fontSize\":12,\"align\":\"MiddleCenter\",\"verticalOverflow\":\"Overflow\"}" + "]" + "}]";
        _updateTemplate = "[{" + "\"name\":\"PulseRustUI_Text\"," + "\"parent\":\"PulseRustUI\"," + "\"update\":true," + "\"components\":[" + "{\"type\":\"RectTransform\",\"anchormin\":\"0 0\",\"anchormax\":\"0 0\",\"offsetmin\":\"15.515 -3.562\",\"offsetmax\":\"40.685 8.5\"}," + "{\"type\":\"UnityEngine.UI.Text\",\"text\":\"<color=#00F0F0>{COUNT}</color>\",\"font\":\"RobotoCondensed-Regular.ttf\",\"fontSize\":12,\"align\":\"MiddleCenter\",\"verticalOverflow\":\"Overflow\"}" + "]" + "}]";
    }
    private static void CreateUI(BasePlayer? player) {
        if (player?.net?.connection == null) return;
        DestroyUI(player);
        AddUI(player, GetBaseUIJson());
    }
    private static void UpdateOtherPlayers(BasePlayer excludePlayer) {
        var json = GetUpdateJson();
        foreach (var player in BasePlayer.activePlayerList) {
            if (player?.net?.connection == null || player == excludePlayer) continue;
            AddUI(player, json);
        }
    }
    private static void UpdateAllPlayers() {
        var json = GetUpdateJson();
        foreach (var player in BasePlayer.activePlayerList) {
            if (player?.net?.connection == null) continue;
            AddUI(player, json);
        }
    }
    private static string GetBaseUIJson() {
        _sb.Clear();
        _sb.Append(_baseUITemplate);
        _sb.Replace("{COUNT}", (BasePlayer.activePlayerList.Count).ToString());
        return _sb.ToString();
    }
    private static string GetUpdateJson() {
        _sb.Clear();
        _sb.Append(_updateTemplate);
        _sb.Replace("{COUNT}", (BasePlayer.activePlayerList.Count).ToString());
        return _sb.ToString();
    }
    private static void AddUI(BasePlayer player, string json) => CommunityEntity.ServerInstance.ClientRPC(RpcTarget.Player("AddUI", player), json);
    private static void DestroyUI(BasePlayer player) => CommunityEntity.ServerInstance.ClientRPC(RpcTarget.Player("DestroyUI", player), UIName);
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху