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

FREE AutoTeleport : 1.0.1 1.0.1

Нет прав для скачивания
C#:
///Скачано с дискорд сервера Rust Edit [PRO+]
///discord.gg/9vyTXsJyKR
using System.Collections.Generic;
using Oxide.Core;
using System;
using Oxide.Core.Plugins;
using Newtonsoft.Json;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("AutoTeleport", "discord.gg/9vyTXsJyKR", "1.0.1")]
    [Description("Auto teleport for Rust Team and Clan")]
    class AutoTeleport : RustPlugin {
        [PluginReference]
        private Plugin NTeleportation, Clans;
        private bool clansLoaded = false;
        private const string autoTeleportUI = "auto_teleport_ui";
        private const string fileName = "AutoTeleport";
        private const string permUse = "autoteleport.use";
        private const string blurMaterial = "assets/content/ui/uibackgroundblur.mat";
        private const string color1 = "0.549 0.784 0.235 0.6";
        private const string color2 = "0.804 0.275 0.196 0.6";
        private Dictionary<string, PlayerData> playerData = new Dictionary<string, PlayerData>();
        private Configuration config;
        private void Init() {
            permission.RegisterPermission(permUse, this);
            LoadData();
        }
        private void OnServerInitialized() {
            if (NTeleportation == null || !NTeleportation.IsLoaded) {
                PrintWarning("NTeleportation plugin not installed or loaded! Please install https://umod.org/plugins/nteleportation");
                PrintWarning("NTeleportation plugin not installed or loaded! Please install https://umod.org/plugins/nteleportation");
                PrintWarning("NTeleportation plugin not installed or loaded! Please install https://umod.org/plugins/nteleportation");
                timer.In(0.1f, () => {
                    Interface.Oxide.UnloadPlugin(Name);
                }
                );
                return;
            }
            if (config.enabledClans && (Clans == null || !Clans.IsLoaded)) {
                clansLoaded = false;
                PrintWarning("Clans plugin not installed or loaded but option is enabled!");
                PrintWarning("Clans plugin not installed or loaded but option is enabled!");
                PrintWarning("Clans plugin not installed or loaded but option is enabled!");
            }
            else if (config.enabledClans) {
                clansLoaded = true;
            }
            foreach (var command in config.chatCommands) cmd.AddChatCommand(command, this, nameof(cmdAutoTeleport));
            foreach (var player in BasePlayer.activePlayerList) OnPlayerConnected(player);
        }
        private void OnPlayerConnected(BasePlayer player) {
            if (!playerData.ContainsKey(player.UserIDString)) playerData.Add(player.UserIDString, new PlayerData {
                clanEnabled = true, teamEnabled = true
            }
            );
        }
        private void OnPlayerDeath(BasePlayer player, HitInfo info) {
            if (player == null || player.IsNpc) return;
            DestroyUI(player);
        }
        private void Unload() {
            foreach (var player in BasePlayer.activePlayerList) DestroyUI(player);
            SaveData();
        }
        private void OnTeleportRequested(BasePlayer target, BasePlayer player) {
            if (!permission.UserHasPermission(player.UserIDString, permUse)) return;
            if (ClansTeleport(target, player) || TeamTeleport(target, player)) TeleportPlayer(player, target);
        }
        private bool TeamTeleport(BasePlayer target, BasePlayer player) {
            if (!config.enabledTeams) return false;
            if (player.currentTeam == 0ul) return false;
            var data = playerData[target.UserIDString];
            if (!data.teamEnabled) return false;
            var teamID = player.currentTeam;
            var team = RelationshipManager.ServerInstance.FindTeam(teamID);
            if (team == null) return false;
            if (!team.members.Contains(target.userID)) return false;
            return true;
        }
        private bool ClansTeleport(BasePlayer target, BasePlayer player) {
            if (!config.enabledClans) return false;
            if (!clansLoaded) return false;
            var data = playerData[target.UserIDString];
            if (!data.clanEnabled) return false;
            bool isMember = (bool)Clans?.Call("IsClanMember", player.UserIDString, target.UserIDString);
            if (!isMember) return false;
            return true;
        }
        private void TeleportPlayer(BasePlayer player, BasePlayer target) {
            player.SendConsoleCommand($"gametip.showtoast 0 \"{GetLang("AcceptMessage", player.UserIDString)}\"");
            target.SendConsoleCommand($"gametip.showtoast 0 \"{GetLang("AcceptMessage", target.UserIDString)}\"");
            target.SendConsoleCommand("chat.say", "/tpa");
        }
        private void EnableTeam(BasePlayer player) {
            var data = playerData[player.UserIDString];
            if (data.teamEnabled) {
                data.teamEnabled = false;
                SendMessage(player, GetLang("DisabledTeam", player.UserIDString));
            }
            else {
                data.teamEnabled = true;
                SendMessage(player, GetLang("EnabledTeam", player.UserIDString));
            }
        }
        private void EnableClan(BasePlayer player) {
            var data = playerData[player.UserIDString];
            if (data.clanEnabled) {
                data.clanEnabled = false;
                SendMessage(player, GetLang("DisabledClan", player.UserIDString));
            }
            else {
                data.clanEnabled = true;
                SendMessage(player, GetLang("EnabledClan", player.UserIDString));
            }
        }
        private void SendMessage(BasePlayer player, string msg) => Player.Message(player, msg, config.chatIcon);
        private void cmdAutoTeleport(BasePlayer player, string command, string[] args) {
            if (!permission.UserHasPermission(player.UserIDString, permUse)) {
                SendMessage(player, GetLang("NotAllowed", player.UserIDString));
                return;
            }
            var value = args.Length > 0 ? args[0].ToLower() : "null";
            switch (value) {
                case "clan" : case "clans" : {
                    if (!config.enabledClans || !clansLoaded) {
                        SendMessage(player, GetLang("ClansAllowed", player.UserIDString));
                        return;
                    }
                    EnableClan(player);
                    break;
                }
                case "team" : case "teams" : {
                    if (!config.enabledTeams) {
                        SendMessage(player, GetLang("TeamsAllowed", player.UserIDString));
                        return;
                    }
                    EnableTeam(player);
                    break;
                }
                default : {
                    CreateUI(player);
                    break;
                }
            }
        }
        [ConsoleCommand("autoteleport")]
        private void consoleCmdShopBuyItem(ConsoleSystem.Arg args) {
            BasePlayer player = args.Connection.player as BasePlayer;
            if (player == null) return;
            var cmd = args.GetString(0);
            if (string.IsNullOrEmpty(cmd)) return;
            switch (cmd) {
                case "team" : EnableTeam(player);
                CreateUI(player);
                break;
                case "clan" : EnableClan(player);
                CreateUI(player);
                break;
                case "close" : DestroyUI(player);
                break;
            }
        }
        private class Configuration {
            [JsonProperty(PropertyName = "Chat Icon")]
            public ulong chatIcon;
            [JsonProperty(PropertyName = "Chat Commands")]
            public string[] chatCommands;
            [JsonProperty(PropertyName = "Enabled for Teams")]
            public bool enabledTeams;
            [JsonProperty(PropertyName = "Enabled for Clans")]
            public bool enabledClans;
            public VersionNumber version;
        }
        private class PlayerData {
            public bool teamEnabled;
            public bool clanEnabled;
        }
        private void SaveData() => Interface.Oxide.DataFileSystem.WriteObject(fileName, playerData);
        private void LoadData() {
            try {
                playerData = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<string, PlayerData>>(fileName);
            }
            catch (Exception e) {
                PrintWarning(e.Message);
            }
            SaveData();
        }
        private Configuration GetDefaultConfig() {
            return new Configuration {
                chatIcon = 0, chatCommands = new string[] {
                    "atp", "autoteleport"
                }
                , enabledTeams = true, enabledClans = true, version = this.Version
            }
            ;
        }
        protected override void LoadDefaultConfig() {
            config = GetDefaultConfig();
            Puts("Generating new configuration file........");
        }
        protected override void SaveConfig() => Config.WriteObject(config);
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
                if (config.version < Version) UpdateConfig();
            }
            catch {
                PrintError("######### Configuration file is not valid! #########");
                return;
            }
            SaveConfig();
        }
        private void UpdateConfig() {
            Puts("Updating configuration values.....");
            config.version = Version;
            Puts("Configuration updated");
        }
        private string GetLang(string key, string playerID) => string.Format(lang.GetMessage(key, this, playerID));
        protected override void LoadDefaultMessages() {
            lang.RegisterMessages(new Dictionary<string, string> {
                {
                    "Disabled", "Auto Teleport for Clan and Team is Disabled"
                }
                , {
                    "EnabledClan", "Auto Teleport for Clan is Enabled"
                }
                , {
                    "DisabledClan", "Auto Teleport for Clan is Disabled"
                }
                , {
                    "EnabledTeam", "Auto Teleport for Team is Enabled"
                }
                , {
                    "DisabledTeam", "Auto Teleport for Team is Disabled"
                }
                , {
                    "AcceptMessage", "Teleport was accepted by Auto teleport"
                }
                , {
                    "NotAllowed", "You don't have permissions"
                }
                , {
                    "ClansAllowed", "Auto Teleport for Clan is not allowed"
                }
                , {
                    "TeamsAllowed", "Auto Teleport for Team is not allowed"
                }
            }
            , this);
        }
        private void CreateUI(BasePlayer player) {
            var data = playerData[player.UserIDString];
            var CUI = UI.CreateElementContainer(autoTeleportUI, "0 0 0 0.7", blurMaterial, "0.4 0.4", "0.6 0.6", true);
            UI.CreateButton(ref CUI, autoTeleportUI, "0 0 0 0", "X", 15, "0.9 0.85", "0.98 0.98", "autoteleport close");
            if (config.enabledTeams) UI.CreateButton(ref CUI, autoTeleportUI, data.teamEnabled ? color1 : color2, "TEAM", 25, "0.1 0.53", "0.9 0.85", "autoteleport team");
            if (config.enabledClans) UI.CreateButton(ref CUI, autoTeleportUI, data.clanEnabled ? color1 : color2, "CLAN", 25, "0.1 0.15", "0.9 0.47", "autoteleport clan");
            CuiHelper.DestroyUi(player, autoTeleportUI);
            CuiHelper.AddUi(player, CUI);
        }
        private void DestroyUI(BasePlayer player) {
            CuiHelper.DestroyUi(player, autoTeleportUI);
        }
        public class UI {
            static public CuiElementContainer CreateElementContainer(string panelName, string color, string material, string aMin, string aMax, bool useCursor = false, string parent = "Overlay") {
                var element = new CuiElementContainer() {
                    {
                        new CuiPanel {
                            Image = {
                                Color = color, Material = material
                            }
                            , RectTransform = {
                                AnchorMin = aMin, AnchorMax = aMax
                            }
                            , CursorEnabled = useCursor
                        }
                        , new CuiElement().Parent = parent, panelName
                    }
                }
                ;
                return element;
            }
            static public void CreateButton(ref CuiElementContainer container, string panel, string color, string text, int size, string aMin, string aMax, string command, TextAnchor align = TextAnchor.MiddleCenter) {
                container.Add(new CuiButton {
                    Button = {
                        Color = color, Command = command
                    }
                    , RectTransform = {
                        AnchorMin = aMin, AnchorMax = aMax
                    }
                    , Text = {
                        Text = text, FontSize = size, Align = align
                    }
                }
                , panel);
            }
        }
    }
}

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

Другие ресурсы пользователя 15FPS

Сверху