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

FREE FCupboardRemove : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using System.Collections.Generic;
using Oxide.Game.Rust.Cui;
using UnityEngine;

namespace Oxide.Plugins;

[Info("FCupboardRemove", "fufeldev", "1.0.0")]
public class FCupboardRemove : RustPlugin
{
    private const string Layer = "FCupboardRemove.Layer";
    private readonly Dictionary<ulong, ulong> _openedCupboards = new Dictionary<ulong, ulong>();

    private void Unload()
    {
        foreach (BasePlayer player in BasePlayer.activePlayerList)
            CuiHelper.DestroyUi(player, Layer);

        _openedCupboards.Clear();
    }

    private void OnEntityKill(BuildingPrivlidge buildingPrivlidge)
    {
        if (buildingPrivlidge?.net == null) return;
        ClearEntity(buildingPrivlidge.net.ID.Value);
    }

    private void OnLootEntity(BasePlayer player, BuildingPrivlidge buildingPrivlidge)
    {
        if (player == null || buildingPrivlidge == null || buildingPrivlidge.net == null) return;

        _openedCupboards[player.userID] = buildingPrivlidge.net.ID.Value;
        CuiHelper.DestroyUi(player, Layer);

        CuiElementContainer container = new CuiElementContainer();

        container.Add(new CuiPanel
        {
            RectTransform = { AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-8 344", OffsetMax = "180 414" },
            Image = { Color = "0.969 0.922 0.882 0.037", Material = "assets/icons/greyout.mat" }
        }, "Overlay", Layer, Layer);

        container.Add(new CuiLabel
        {
            RectTransform = { AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0" },
            Text = { Text = "Удалить шкаф\nНажмите для удаления", Font = "robotocondensed-bold.ttf", Color = "1 1 1 0.2", FontSize = 16, Align = TextAnchor.MiddleCenter }
        }, Layer);

        container.Add(new CuiButton
        {
            RectTransform = { AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0" },
            Button = { Color = "0 0 0 0", Command = $"UI_CUPBOARD_REMOVE remove {buildingPrivlidge.net.ID.Value}" },
            Text = { Text = string.Empty }
        }, Layer);

        CuiHelper.AddUi(player, container);
    }

    private void OnLootEntityEnd(BasePlayer player, BuildingPrivlidge buildingPrivlidge)
    {
        ClearPlayer(player);
    }

    private void OnPlayerDisconnected(BasePlayer player)
    {
        ClearPlayer(player);
    }

    [ConsoleCommand("UI_CUPBOARD_REMOVE")]
    private void CupboardRemoveUI(ConsoleSystem.Arg args)
    {
        BasePlayer player = args?.Player();
        if (player == null || !args.HasArgs(2)) return;
        if (args.Args[0].ToString() != "remove") return;
        if (!ulong.TryParse(args.Args[1].ToString(), out ulong cupboardId)) return;
        if (!_openedCupboards.TryGetValue(player.userID, out ulong openedId) || openedId != cupboardId) return;

        BuildingPrivlidge buildingPrivlidge = BaseNetworkable.serverEntities.Find(new NetworkableId(cupboardId)) as BuildingPrivlidge;
        if (buildingPrivlidge == null || buildingPrivlidge.IsDestroyed)
        {
            ClearPlayer(player);
            return;
        }

        ClearPlayer(player);
        player.EndLooting();
        buildingPrivlidge.Kill(BaseNetworkable.DestroyMode.Gib);
    }

    private void ClearEntity(ulong cupboardId)
    {
        foreach (BasePlayer player in BasePlayer.activePlayerList)
            if (_openedCupboards.TryGetValue(player.userID, out ulong openedId) && openedId == cupboardId)
                ClearPlayer(player);
    }

    private void ClearPlayer(BasePlayer player)
    {
        if (player == null) return;

        _openedCupboards.Remove(player.userID);
        CuiHelper.DestroyUi(player, Layer);
    }
}

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