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

FREE DoorHealth : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using System.Collections.Generic;
using Newtonsoft.Json;
using UnityEngine;
using System.Linq;

namespace Oxide.Plugins
{
    [Info("DoorHealth", "Miho", "1.0.0")]
    [Description("Allows you to change the maximum health of doors")]
    public class DoorHealth : RustPlugin
    {
        private static ConfigData config = new ConfigData();

        private class ConfigData
        {
            [JsonProperty(PropertyName = "Door health in percents")]
            public Dictionary<string, int> percents = new Dictionary<string, int>()
            {
                { "door.hinged.wood", 100 },
                { "door.hinged.metal", 100 },
                { "door.hinged.toptier", 100 },
                { "door.double.hinged.wood", 100 },
                { "door.double.hinged.metal", 100 },
                { "door.double.hinged.toptier", 100 },
                { "wall.frame.garagedoor", 100 },
                { "door.hinged.industrial.d", 100 }
            };
        }

        private void OnServerInitialized(bool initial)
        {
            foreach (Door d in BaseNetworkable.serverEntities.OfType<Door>())
            {
                ModifyDoorHealth(d);
            }
        }

        private void Unload()
        {
            foreach (Door d in BaseNetworkable.serverEntities.OfType<Door>())
            {
                ModifyDoorHealth(d, true);
            }
        }

        private void OnEntitySpawned(BaseNetworkable entity)
        {
            var door = entity as Door;
            if (door != null)
            {
                ModifyDoorHealth(door);
            }
        }
        private void ModifyDoorHealth(Door door, bool isUnloading = false)
        {
            if (door == null) return;
            int percent = 100;

            if (config.percents.TryGetValue(door.ShortPrefabName, out percent))
            {
                if (percent <= 0) return;

                float originalMaxHealth;
                switch (door.ShortPrefabName)
                {
                    case "door.hinged.wood":
                        originalMaxHealth = 200f;
                        break;
                    case "door.hinged.metal":
                        originalMaxHealth = 250f;
                        break;
                    case "door.hinged.toptier":
                        originalMaxHealth = 1000f;
                        break;
                    case "door.double.hinged.wood":
                        originalMaxHealth = 200f;
                        break;
                    case "door.double.hinged.metal":
                        originalMaxHealth = 250f;
                        break;
                    case "door.double.hinged.toptier":
                        originalMaxHealth = 1000f;
                        break;
                    case "wall.frame.garagedoor":
                        originalMaxHealth = 600f;
                        break;
                    case "door.hinged.industrial.d":
                        originalMaxHealth = 250f;
                        break;
                    default:
                        return;
                }

                if (isUnloading)
                {
                    door._maxHealth = originalMaxHealth;
                    if (door.health > originalMaxHealth)
                    {
                        door.health /= percent / 100f;
                    }
                }
                else
                {
                    if (door._maxHealth == originalMaxHealth)
                    {
                        door._maxHealth *= percent / 100f;
                        door.health *= percent / 100f;
                    }
                }
                door.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);
            }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            config = Config.ReadObject<ConfigData>();
            if (config == null)
            {
                LoadDefaultConfig();
            }
            SaveConfig();
        }

        protected override void LoadDefaultConfig()
        {
            config = new ConfigData();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config);
        }
    }
}

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