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

FREE StopRaid : 1.0.5 1.0.5

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using ru = Oxide.Game.Rust;
namespace Oxide.Plugins {
    [Info("StopRaid", "bezdna", "1.0.5")]
    public class StopRaid : RustPlugin {
        private void Unload() {
            foreach(var player in BasePlayer.activePlayerList) CuiHelper.DestroyUi(player, "StopMAIN");
        }
        private void OnServerInitialized() {
            var com = Interface.Oxide.GetLibrary<ru.Libraries.Command>(null);
            com.AddChatCommand("sr", this, nameof(chatCommand));
        }
#region Hooks
        [PluginReference]
        Plugin ImageLibrary, Clans;
        private List<BasePlayer> PlayerList = new List<BasePlayer>();
        Timer start;
        private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) {
            if(entity == null || info == null) return;
            var Player = info.InitiatorPlayer;
            if(PlayerList.Contains(Player)) if(entity is BasePlayer || entity is BuildingBlock) info.damageTypes.ScaleAll(0f);
        }
        private object CanBuild(Planner planner, Construction prefab, Construction.Target target) {
            if (planner == null || prefab == null || target.GetWorldPosition() == null || planner.GetOwnerPlayer()?.GetActiveItem() == null) return null;
            var player = planner.GetOwnerPlayer();
            if(PlayerList.Contains(player)) return false;
            return null;
        }
        private void chatCommand(BasePlayer player, string command, string[] args) {
            if (string.IsNullOrEmpty(command)) command = "sr";
            if (!player.IsAdmin) {
                player.ChatMessage("Вы не админ, идите нахуй!");
                return;
            }
            if (args != null && args.Length > 0) {
                if(args.Length == 2) {
                    if(args[0] == "start") {
                        var Clan = Clans?.Call<JObject>("GetClan", args[1]);
                        if (Clan == null) {
                            SendReply(player, "Клан не найден!");
                            return;
                        }
                        var names = "";
                        var members = Clan.GetValue("members") as JArray;
                        foreach (var member in members) {
                            var id = Convert.ToUInt64(member);
                            var Player = BasePlayer.FindByID(id);
                            if (Player == null) continue;
                            if (Player.IsConnected) lockPosition(Player);
                            PlayerList.Add(Player);
                            names = Clans?.Call<string>("GetClanOf", Player);
                        }
                        SendReply(player, $"Вы начали стоп рейд клану {names}!");
                    }
                    else if(args[0] == "stop") {
                        var Clan = Clans?.Call<JObject>("GetClan", args[1]);
                        if (Clan == null) {
                            SendReply(player, "Клан не найден!");
                            return;
                        }
                        var names = "";
                        var members = Clan.GetValue("members") as JArray;
                        foreach (var member in members) {
                            var id = Convert.ToUInt64(member);
                            var Player = BasePlayer.FindByID(id);
                            if (Player == null) continue;
                            if (Player.IsConnected) UnlockPosition(Player);
                            PlayerList.Remove(Player);
                            names = Clans?.Call<string>("GetClanOf", Player);
                        }
                        SendReply(player, $"Вы закончили стоп рейд клану {names}!");
                    }
                }
            }
            else SendReply(player, "<size=16>Неправильный синтаксис!</size>\n/sr stop [Название клана]\n/sr start [Название клана]");
        }
        private void lockPosition(BasePlayer player) {
            var position = player.transform.position;
            SendReply(player, "Вы не може двигаться, так как действует стоп рейд!");
            StopMAIN(player);
            start = timer.Every(0.3f, () => {
                player.MovePosition(position);
            }
            );
        }
        void UnlockPosition(BasePlayer player) {
            SendReply(player, "Стоп рейд окончен, можете играть!");
            CuiHelper.DestroyUi(player, "StopMAIN");
            start.Destroy();
        }
#endregion
#region GUI
        private void StopMAIN(BasePlayer player) {
            var container = new CuiElementContainer();
            container.Add(new CuiPanel {
                Image = {
                    Color = "0.439 0.596 0.984 0.54", Material = "assets/icons/greyout.mat"
                }
                , RectTransform = {
                    AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-700.002 0", OffsetMax = "700.998 304"
                }
            }
            , "Overlay", "StopMAIN");
            container.Add(new CuiElement {
                Name = "stopText", Parent = "StopMAIN", Components = {
                    new CuiTextComponent {
                        Text = "Стоп рейд!\nВы не можете двигаться и наносить урон.\nПожалуйста! Подождите пока Администратор выключит его вам", Font = "robotocondensed-regular.ttf", FontSize = 40, Align = TextAnchor.UpperCenter, Color = "1 1 1 0.65"
                    }
                    , new CuiOutlineComponent {
                        Color = "1 1 1 0.65", Distance = "1 -1"
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-600 -125.025", OffsetMax = "600 132.124"
                    }
                }
            }
            );
            CuiHelper.DestroyUi(player, "StopMAIN");
            CuiHelper.AddUi(player, container);
        }
#endregion
    }
}

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