using System; using Oxide.Game.Rust.Cui; using UnityEngine; namespace Oxide.Plugins { [Info("Scopes", "MikeHawke", "1.3.2")] [Description("On screen crosshairs")] class Scopes : RustPlugin { void Destroy(BasePlayer player, bool all) { CuiHelper.DestroyUi(player, "ScopesUI"); } void Unload() { foreach (BasePlayer current in BasePlayer.activePlayerList) { CuiHelper.DestroyUi(current, "ScopesUI"); } } private void OnPlayerDisconnected(BasePlayer player) { Destroy(player, true); } void ScopesUI(BasePlayer player, int scope) { var elements = new CuiElementContainer(); var mainName = elements.Add(new CuiPanel { Image = { Color = "0 0 0 0" }, RectTransform = { AnchorMin = "0.4693 0.4630", AnchorMax = "0.5293 0.5330" }, CursorEnabled = false }, "Overlay", "ScopesUI"); elements.Add(new CuiLabel { Text = { Text = configData.symbols[scope], Color = configData.Colour, FontSize = 24, Align = TextAnchor.MiddleCenter }, RectTransform = { AnchorMin = "0 0", AnchorMax = "1 1" } }, mainName); CuiHelper.AddUi(player, elements); } [ChatCommand("scope")] void HelpToScreen(BasePlayer player, string cmd, string[] args) { if (args == null) return; if (!permission.UserHasPermission(player.userID.ToString(), "Scopes.Toggle")) { SendReply(player, "You do not have permission to use this command!"); return; } if (args.Length == 0) { string info = $"Use one of the following commands:\n/Scope 1,\n/Scope 2,\n/Scope 3,\n/Scope 4,\n/Scope 5,\n/Scope 6,\n/NoScope to remove Scopes"; SendReply(player, info); return; } int scope = -1; if (!int.TryParse(args[0], out scope)) return; scope--;//make 1 0, 2 1, etc for array indexing. if (scope < 0) { string info = $"Usage - /scope : 1-{configData.symbols.Length}."; SendReply(player, info); return; } if (configData.symbols.Length <= scope) { string info = $"There are only {configData.symbols.Length} available scopes."; SendReply(player, info); return; } Destroy(player, true); ScopesUI(player, scope); SendReply(player, $"Scope {scope+1} Active"); } [ChatCommand("NoScope")] void RemoveScope(BasePlayer player, string cmd, string[] args) { Destroy(player, true); SendReply(player, "Scopes Deactivated"); } #region Config void Init() { if (!LoadConfigVariables()) { Puts("Config file issue detected. Please delete file, or check syntax and fix."); return; } permission.RegisterPermission("Scopes.Toggle", this); } private ConfigData configData; public class ConfigData { public String[] symbols = { "「」", "+", "◎", "◬", "・", "Ⓧ" }; public string Colour = "1 0 0 1"; } private bool LoadConfigVariables() { try { configData = Config.ReadObject(); } catch { return false; } SaveConfig(configData); return true; } protected override void LoadDefaultConfig() { Puts("Creating new config file."); var config = new ConfigData(); SaveConfig(config); } void SaveConfig(ConfigData config) => Config.WriteObject(config, true); #endregion } }