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

FREE ZonePVxInfo : 0.0.3 0.0.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Oxide.Game.Rust.Cui;
using UnityEngine;  //cui textanchor
using System.Collections.Generic;   //dict
using Oxide.Core.Plugins;
using System.Linq;
using Convert = System.Convert;

namespace Oxide.Plugins
{
	[Info("Zone PVx Info", "BuzZ[PHOQUE]", "0.0.3")]
	[Description("HUD on PVx name defined Zones")]

/*======================================================================================================================= 
*
*   
*   15th november 2018
*   
*   0.0.3   get in dict player/zonein   for multiple zones go thru wich was buggy   + added config for hud/text/position
*
*    THANKS TO THE OXIDE/UMOD TEAM for coding quality, ideas, and time spent for the community
*
*
*
*=======================================================================================================================*/


	public class ZonePVxInfo : RustPlugin
	{

        [PluginReference] Plugin ZoneManager;

        /*string Prefix = "[ZPI] ";                  // CHAT PLUGIN PREFIX
        string PrefixColor = "#bf0000";                 // CHAT PLUGIN PREFIX COLOR
        string ChatColor = "#dd8e8e";                   // CHAT MESSAGE COLOR
        ulong SteamIDIcon = 76561198079320022;  
*/
        bool ConfigChanged;
        bool pvpall;
        bool debug = false;
        private static string PVXHUD;
        string pvpcolor = "0.6 0.2 0.2";
        string pvecolor = "0.5 1.0 0.0";
        string pvpcoloropacity = "0.5";
        string pvecoloropacity = "0.4";
        string pvptextcolor = "1.0 1.0 1.0";
        string pvetextcolor = "1.0 1.0 1.0";
        int textsize = 12;
        double HUDleft = 0.65;
        double HUDbottom = 0.04;

        Dictionary<BasePlayer, string> zoneyouare = new Dictionary<BasePlayer, string>();

        void Init()
        {
            LoadVariables();
        }
        
        void Unload()
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList.ToList())
            {
                LetsDestroyUIz(player);
            }
        }

        void Loaded()
        {
            if (ZoneManager == false)
                {
                    PrintError("ZoneManager.cs is needed and not present.");
                }
        }

/*#region MESSAGES

    void LoadDefaultMessages()
    {

        lang.RegisterMessages(new Dictionary<string, string>
        {
            {"PVEinMsg", "You entered a PVE zone."},
            {"PVPinMsg", "You entered a PVP zone."},
            {"PVEoutMsg", "You leaved a PVE zone."},
            {"PVPoutMsg", "You leaved a PVP zone."},

        }, this, "en");

        lang.RegisterMessages(new Dictionary<string, string>
        {
            {"PVEinMsg", "Vous entrez en zone PVE."},
            {"PVPinMsg", "Vous entrez en zone PVP."},
            {"PVEoutMsg", "Vous quittez une zone PVP."},
            {"PVPoutMsg", "Vous quittez une zone PVP."},

        }, this, "fr");
    }

#endregion*/

#region CONFIG

    protected override void LoadDefaultConfig()
        {
            LoadVariables();
        }

        private void LoadVariables()
        {
            /*Prefix = Convert.ToString(GetConfig("Chat Settings", "Prefix", "[NightPVP] "));                       // CHAT PLUGIN PREFIX
            PrefixColor = Convert.ToString(GetConfig("Chat Settings", "PrefixColor", "#bf0000"));                // CHAT PLUGIN PREFIX COLOR
            ChatColor = Convert.ToString(GetConfig("Chat Settings", "ChatColor", "#dd8e8e"));                    // CHAT MESSAGE COLOR
            SteamIDIcon = Convert.ToUInt64(GetConfig("Chat Settings", "SteamIDIcon", "76561198079320022")); */       // SteamID FOR PLUGIN ICON - STEAM PROFILE CREATED FOR THIS PLUGIN / NONE YET /
            pvpcolor = Convert.ToString(GetConfig("HUD COLOR", "for PVP", "0.6 0.2 0.2"));
            pvecolor = Convert.ToString(GetConfig("HUD COLOR", "for PVE", "0.5 1.0 0.0"));
            pvpcoloropacity = Convert.ToString(GetConfig("HUD OPACITY", "for PVP", "0.5"));
            pvecoloropacity = Convert.ToString(GetConfig("HUD OPACITY", "for PVE", "0.4"));
            textsize = Convert.ToInt32(GetConfig("HUD TEXT", "size", "12"));
            pvptextcolor = Convert.ToString(GetConfig("HUD TEXT", "color for PVP", "1.0 1.0 1.0"));
            pvetextcolor = Convert.ToString(GetConfig("HUD TEXT", "color for PVE", "1.0 1.0 1.0"));
            HUDleft = Convert.ToDouble(GetConfig("HUD POSITION", "left", "0.65"));
            HUDbottom = Convert.ToDouble(GetConfig("HUD COLOR", "bottom", "0.04"));

            if (!ConfigChanged) return;
            SaveConfig();
            ConfigChanged = false;
        }

        private object GetConfig(string menu, string datavalue, object defaultValue)
        {
            var data = Config[menu] as Dictionary<string, object>;
            if (data == null)
            {
                data = new Dictionary<string, object>();
                Config[menu] = data;
                ConfigChanged = true;
            }
            object value;
            if (!data.TryGetValue(datavalue, out value))
            {
                value = defaultValue;
                data[datavalue] = value;
                ConfigChanged = true;
            }
            return value;
        }

#endregion

//////////////////////////////

        void LetsDestroyUIz(BasePlayer player)
        {
            zoneyouare.Remove(player);
            CuiHelper.DestroyUi(player, PVXHUD);
        }

        string GetZoneName(string zoneID) => (string)ZoneManager?.Call("GetZoneName", zoneID);

        void OnEnterZone(string ZoneID, BasePlayer player)
        {
            if (pvpall) return;
            LetsDestroyUIz(player);
            if (ZoneID == null)
            {
                if (debug == true){Puts($"-> NULL ZONEID.IGNORED.");}
                return;
            }
            bool check = CheckThisID(player);
            if (check == false)
            {
                if (debug == true){Puts($"-> ENTER ZONE IGNORED.");}
                return;
            }
            string zonename = GetZoneName(ZoneID); 
            if (zonename == null)
            {
                if (debug == true){Puts($"-> NULL ZONE NAME.IGNORED.");}
                return;
            }
            zonename = zonename.ToLower();            
            string playername = player.displayName;
            if (zonename.Contains("pve") == true)
            {
                if (debug == true){Puts($"-> ENTERED IN PVE {ZoneID} - {zonename} : HUMAN PLAYER {playername}");}
                zoneyouare.Remove(player);
                zoneyouare.Add(player, "pve");
                DisplayPVXHUD (player);
                return;
            }
            if (zonename.Contains("pvp") == true)
            {
                if (debug == true){Puts($"-> ENTERED IN PVP {ZoneID} - {zonename} : HUMAN PLAYER {playername}");}
                zoneyouare.Remove(player);
                zoneyouare.Add(player, "pvp");
                DisplayPVXHUD (player);
            }
        }

        void OnExitZone(string ZoneID, BasePlayer player)
        {
            if (pvpall == true){return;}
            if (ZoneID == null)
            {
                if (debug == true){Puts($"-> NULL ZONEID.IGNORED.");}
                return;
            }            
            bool check = CheckThisID(player);
            if (check == false)
            {
                if (debug == true){Puts($"-> EXIT ZONE IGNORED.");}
                return;
            }
            string zonename = GetZoneName(ZoneID); 
            if (zonename == null)
            {
                if (debug == true){Puts($"-> NULL ZONE NAME.IGNORED.");}
                return;
            }
            zonename = zonename.ToLower();
            string playername = player.displayName;
            if (zonename.Contains("pve") || zonename.Contains("pvp"))
            {
                if (debug == true){Puts($"-> EXIT ZONE {ZoneID} - {zonename} : HUMAN PLAYER {playername}");}
                LetsDestroyUIz(player);
            }
        }

        private bool CheckThisID(BasePlayer player)
        {
            if (BasePlayer.activePlayerList.ToList().Contains(player) == true) return true;
            else return false;
        }

        [ChatCommand("pvpall_on")]         
        private void AllDaMapIsPVP(BasePlayer admin, string command, string[] args)
        {
            pvpall = true;
            foreach (BasePlayer player in BasePlayer.activePlayerList.ToList())
            {
                LetsDestroyUIz(player);
                zoneyouare.Add(player, "pvp");
                DisplayPVXHUD (player);
            }
        }

        [ChatCommand("pvpall_off")]         
        private void AllDaMapZones(BasePlayer admin, string command, string[] args)
        {
            pvpall = false;
            foreach (BasePlayer player in BasePlayer.activePlayerList.ToList())
            {
                LetsDestroyUIz(player);
            }
        }

        void DisplayPVXHUD (BasePlayer player)
        {
            string whatisdazone;
            string zonetype = "PVP\nZONE";
            string zonecolor = pvpcolor;
            string zonecoloropac = pvpcoloropacity;
            string textcolor = pvptextcolor;
            zoneyouare.TryGetValue(player, out whatisdazone);
            if (whatisdazone == null) return;
            if (whatisdazone == "pve")
            {
                zonetype = "PVE\nZONE";
                zonecolor = pvecolor;
                textcolor = pvetextcolor;
                zonecoloropac = pvecoloropacity;
            }

            var CuiElement = new CuiElementContainer();
            PVXHUD = CuiElement.Add(new CuiPanel{Image ={Color = $"{zonecolor} {zonecoloropac}"},RectTransform ={AnchorMin = $"{HUDleft} {HUDbottom}",AnchorMax = $"{HUDleft+0.04} {HUDbottom+0.04}"},CursorEnabled = false
                }, new CuiElement().Parent = "Overlay", PVXHUD);
                    
            CuiElement.Add(new CuiLabel{Text ={Text = zonetype,FontSize = textsize,Align = TextAnchor.MiddleCenter,Color = $"{textcolor} 1.0"},RectTransform ={AnchorMin = "0.10 0.10",   AnchorMax = "0.90 0.90"}
                }, PVXHUD);
            CuiHelper.AddUi(player, CuiElement);
        }

        void OnPlayerSleepEnded(BasePlayer player)
        {
            if (pvpall == true)
            {
                zoneyouare.Remove(player);
                zoneyouare.Add(player, "pvp");
                DisplayPVXHUD (player);
            }

// NEED TO ADD if wake up in a zone -> isplayer in zone + get name etc.//  isOnPlayer

        }

        void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            LetsDestroyUIz(player);
        }
    }
}

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