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

FREE FOvenRemove : 1.0.0 1.0.0

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

namespace Oxide.Plugins;

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

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

        _openedOvens.Clear();
    }

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

    private void OnLootEntity(BasePlayer player, BaseOven oven)
    {
        if (player == null || oven == null || oven.net == null) return;
        if (!oven.ShortPrefabName.Contains("furnace")) return;

        _openedOvens[player.userID] = oven.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_OVEN_REMOVE remove {oven.net.ID.Value}" },
            Text = { Text = string.Empty }
        }, Layer);

        CuiHelper.AddUi(player, container);
    }

    private void OnLootEntityEnd(BasePlayer player, BaseOven oven)
    {
        ClearPlayer(player);
    }

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

    [ConsoleCommand("UI_OVEN_REMOVE")]
    private void OvenRemoveUI(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 ovenId)) return;
        if (!_openedOvens.TryGetValue(player.userID, out ulong openedId) || openedId != ovenId) return;

        BaseOven oven = BaseNetworkable.serverEntities.Find(new NetworkableId(ovenId)) as BaseOven;
        if (oven == null || oven.IsDestroyed || !oven.ShortPrefabName.Contains("furnace"))
        {
            ClearPlayer(player);
            return;
        }

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

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

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

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

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