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

FREE ZoneManagerAutoZones : 1.2.0 1.2.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using System.Globalization;
using Oxide.Core.Plugins;
using UnityEngine;
using Newtonsoft.Json;

namespace Oxide.Plugins
{
    [Info("Zone Manager Auto Zones", "FastBurst", "1.2.0")]
    [Description("Adds zones and domes to monuments automatically.")]

    public class ZoneManagerAutoZones : RustPlugin
    {
        [PluginReference] Plugin ZoneManager, ZoneDomes, TruePVE;

        BasePlayer player;

        void OnServerInitialized()
        {
			
			
            PopulateZoneLocations();
			
			//if (configData.ZoneOption.UseZoneDomes)
			//	ZoneDomes?.Call("OnServerInitialized",player);
        }

        private void PopulateZoneLocations()
        {
            ConfigData.LocationOptions.Monument config = configData.Location.Monuments;
			
			//if (configData.ZoneOption.UseZoneDomes)
			//	ZoneDomes?.Call("DestroyAllSpheres",player);

            MonumentInfo[] monuments = UnityEngine.Object.FindObjectsOfType<MonumentInfo>();
            for (int i = 0; i < monuments.Length; i++)
            {
                MonumentInfo monument = monuments[i];

                if (monument.name.Contains("harbor_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = "Large " + monument.displayPhrase.english;
                    string ID = "harbor_1";

                    if (config.HarborLarge.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.HarborLarge.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.HarborLarge.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.HarborLarge.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.HarborLarge.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.HarborLarge.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.HarborLarge.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("harbor_2", CompareOptions.IgnoreCase))
                {
                    string friendlyname = "Small " + monument.displayPhrase.english;
                    string ID = "harbor_2";

                    if (config.HarborSmall.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.HarborSmall.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.HarborSmall.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.HarborSmall.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.HarborSmall.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.HarborSmall.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.HarborSmall.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("airfield_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "airfield_1";

                    if (config.Airfield.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.Airfield.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.Airfield.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.Airfield.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.Airfield.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.Airfield.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.Airfield.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("launch_site_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "launch_site";

                    if (config.LaunchSite.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.LaunchSite.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.LaunchSite.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.LaunchSite.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.LaunchSite.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.LaunchSite.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("oilrigai2", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "oilrigai2";

                    if (config.LargeOilRig.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.LargeOilRig.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.LargeOilRig.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.LargeOilRig.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.LargeOilRig.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.LargeOilRig.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.LargeOilRig.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("oilrigai", CompareOptions.IgnoreCase))
                {
                    string friendlyname = "Small " + monument.displayPhrase.english;
                    string ID = "oilrigai";

                    if (config.SmallOilRig.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.SmallOilRig.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.SmallOilRig.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.SmallOilRig.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.SmallOilRig.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.SmallOilRig.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.SmallOilRig.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("powerplant_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "powerplant_1";

                    if (config.Powerplant.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.Powerplant.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.Powerplant.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.Powerplant.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.Powerplant.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.Powerplant.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.Powerplant.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("military_tunnel_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "military_tunnel_1";

                    if (config.MilitaryTunnels.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.MilitaryTunnels.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.MilitaryTunnels.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.MilitaryTunnels.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.MilitaryTunnels.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.MilitaryTunnels.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.MilitaryTunnels.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("junkyard_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "junkyard_1";

                    if (config.Junkyard.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.Junkyard.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.Junkyard.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.Junkyard.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.Junkyard.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.Junkyard.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.Junkyard.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("water_treatment_plant_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "water_treatment_plant_1";

                    if (config.WaterTreatment.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.WaterTreatment.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.WaterTreatment.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.WaterTreatment.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.WaterTreatment.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.WaterTreatment.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.WaterTreatment.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("trainyard_1", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "trainyard_1";

                    if (config.TrainYard.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.TrainYard.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.TrainYard.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.TrainYard.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.TrainYard.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.TrainYard.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.TrainYard.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("excavator", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "excavator";

                    if (config.Excavator.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.Excavator.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.Excavator.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.Excavator.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.Excavator.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.Excavator.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.Excavator.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);														
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
							
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("satellite_dish", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "satellite_dish";

                    if (config.SatelliteDish.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.SatelliteDish.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.SatelliteDish.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.SatelliteDish.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.SatelliteDish.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.SatelliteDish.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.SatelliteDish.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("radtown_small_3", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "radtown_small_3";

                    if (config.SewerBranch.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.SewerBranch.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.SewerBranch.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.SewerBranch.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.SewerBranch.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.SewerBranch.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.SewerBranch.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }

                if (monument.name.Contains("sphere_tank", CompareOptions.IgnoreCase))
                {
                    string friendlyname = monument.displayPhrase.english;
                    string ID = "sphere_tank";

                    if (config.Dome.Enabled)
                    {
                        string[] messages = new string[8];
                        messages[0] = "name";
                        messages[1] = friendlyname;
                        messages[2] = "enter_message";
                        messages[3] = configData.Location.Monuments.Dome.EnterMessage;
                        messages[4] = "leave_message";
                        messages[5] = configData.Location.Monuments.Dome.LeaveMessage;
                        messages[6] = "radius";
                        messages[7] = Convert.ToInt32(configData.Location.Monuments.Dome.Radius).ToString();

                        ZoneManager?.CallHook("CreateOrUpdateZone", ID, messages, monument.transform.position);

                        if (configData.Location.Monuments.Dome.ZoneFlags != null)
                            foreach (var flag in configData.Location.Monuments.Dome.ZoneFlags)
                                ZoneManager?.CallHook("AddFlag", ID, flag);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("AddOrUpdateMapping", ID, configData.Location.Monuments.Dome.TruePVERules);

                        if (configData.ZoneOption.UseZoneDomes)
						{
							ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                            ZoneDomes?.CallHook("AddNewDome", player, ID);
						}
                    }
                    else
                    {
                        ZoneManager?.CallHook("EraseZone", ID);

                        if (configData.ZoneOption.UseTruePVE)
                            TruePVE?.CallHook("RemoveMapping", ID);

                        if (configData.ZoneOption.UseZoneDomes)
                            ZoneDomes?.CallHook("RemoveExistingDome", player, ID);
                    }
                    continue;
                }
            }
			
			if (configData.ZoneOption.UseZoneDomes)
			{
				ZoneDomes?.Call("DestroyAllSpheres",player);
				ZoneDomes?.Call("OnServerInitialized",player);
			}
        }

        #region Config        
        private ConfigData configData;
        class ConfigData
        {
            [JsonProperty(PropertyName = "ZonesDome Option")]
            public Options ZoneOption { get; set; }
            public class Options
            {
                [JsonProperty(PropertyName = "Use Zone Domes Spheres over Zones")]
                public bool UseZoneDomes { get; set; }
                [JsonProperty(PropertyName = "Enable TruePVE to allow Rule Sets")]
                public bool UseTruePVE { get; set; }
            }

            [JsonProperty(PropertyName = "Zone Location Options")]
            public LocationOptions Location { get; set; }

            public class LocationOptions
            {
                [JsonProperty(PropertyName = "Monument Options")]
                public Monument Monuments { get; set; }

                public class Monument
                {
                    [JsonProperty(PropertyName = "Airfield")]
                    public Options Airfield { get; set; }
                    [JsonProperty(PropertyName = "Small Harbour")]
                    public Options HarborSmall { get; set; }
                    [JsonProperty(PropertyName = "Large Harbour")]
                    public Options HarborLarge { get; set; }
                    [JsonProperty(PropertyName = "Launch Site")]
                    public Options LaunchSite { get; set; }
                    [JsonProperty(PropertyName = "Large Oil Rig")]
                    public Options LargeOilRig { get; set; }
                    [JsonProperty(PropertyName = "Small Oil Rig")]
                    public Options SmallOilRig { get; set; }
                    [JsonProperty(PropertyName = "Power Plant")]
                    public Options Powerplant { get; set; }
                    [JsonProperty(PropertyName = "Junk Yard")]
                    public Options Junkyard { get; set; }
                    [JsonProperty(PropertyName = "Military Tunnels")]
                    public Options MilitaryTunnels { get; set; }
                    [JsonProperty(PropertyName = "Train Yard")]
                    public Options TrainYard { get; set; }
                    [JsonProperty(PropertyName = "Water Treatment Plant")]
                    public Options WaterTreatment { get; set; }
                    [JsonProperty(PropertyName = "Giant Excavator Pit")]
                    public Options Excavator { get; set; }
                    [JsonProperty(PropertyName = "Satellite Dish")]
                    public Options SatelliteDish { get; set; }
                    [JsonProperty(PropertyName = "Sewer Branch")]
                    public Options SewerBranch { get; set; }
                    [JsonProperty(PropertyName = "The Dome")]
                    public Options Dome { get; set; }

                    public class Options
                    {
                        public bool Enabled { get; set; }
                        [JsonProperty(PropertyName = "Radius")]
                        public int Radius { get; set; }

                        [JsonProperty(PropertyName = "Enter Zone Message")]
                        public string EnterMessage { get; set; }

                        [JsonProperty(PropertyName = "Leave Zone Message")]
                        public string LeaveMessage { get; set; }

                        [JsonProperty(PropertyName = "Zone Flags")]
                        public string[] ZoneFlags { get; set; }
                        [JsonProperty(PropertyName = "TruePVE RuleSet to use if TruePVE is enabled")]
                        public string TruePVERules { get; set; }
                        [JsonIgnore]
                        public List<MonumentInfo> Monument { get; set; } = new List<MonumentInfo>();
                    }
                }
            }
            
            public Oxide.Core.VersionNumber Version { get; set; }
        }
        protected override void LoadConfig()
        {
            base.LoadConfig();
            configData = Config.ReadObject<ConfigData>();

            if (configData.Version < Version)
                UpdateConfigValues();

            Config.WriteObject(configData, true);
        }

        protected override void LoadDefaultConfig() => configData = GetBaseConfig();

        private ConfigData GetBaseConfig()
        {
            return new ConfigData
            {
                ZoneOption = new ConfigData.Options
                {
                    UseZoneDomes = true,
                    UseTruePVE = false
                },
                Location = new ConfigData.LocationOptions
                {
                    Monuments = new ConfigData.LocationOptions.Monument
                    {
                        Airfield = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 200,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        HarborLarge = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 150,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        HarborSmall = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 145,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        LaunchSite = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 295,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        SmallOilRig = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 100,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        LargeOilRig = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 165,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        Powerplant = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 150,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        Junkyard = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 165,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        MilitaryTunnels = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 115,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        TrainYard = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 165,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        WaterTreatment = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 175,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        Excavator = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 205,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        SatelliteDish = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 100,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        SewerBranch = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 80,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        },
                        Dome = new ConfigData.LocationOptions.Monument.Options
                        {
                            Enabled = true,
                            Radius = 80,
                            EnterMessage = "WARNING: You are now entering a PVP Zone",
                            LeaveMessage = "Returning to PVE Area",
                            ZoneFlags = new string[] { "autolights" },
                            TruePVERules = "exclude"
                        }
                    }
                },
                Version = Version
            };
        }

        protected override void SaveConfig() => Config.WriteObject(configData, true);

        private void UpdateConfigValues()
        {
            PrintWarning("Config update detected! Updating config values...");

            ConfigData baseConfig = GetBaseConfig();
            if (configData.Version < new Core.VersionNumber(1, 0, 0))
                configData.ZoneOption.UseZoneDomes = baseConfig.ZoneOption.UseZoneDomes;

            if (configData.Version < new Core.VersionNumber(1, 2, 0))
            {
                configData.Location.Monuments = baseConfig.Location.Monuments;
            }

            configData.Version = Version;
            PrintWarning("Config update completed!");
        }
        #endregion
    }
}

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