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

FREE HardcoreMode : 0.1.0 0.1.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using System;
using Network;
using Rust;

namespace Oxide.Plugins
{
    [Info("Hardcore Mode", "Default", "0.1.0")]
    [Description("Brings an overhaul to the base game.")]
    class HardcoreMode : RustPlugin
    {
        /*
         * TODO Limit building entities.Limit damage, inventory space, etc.Create entire gamemode.Essentially overhaul Rust.* TODO Support for other ban options.* TODO Finish the damn plugin me
		 * TODO Null check.Null check.Null check.*/

        #region Variables

        private bool Changed = false;
        public bool oneLife;
        public float damageAmount;

        
        #endregion


        #region Main plugin

        void OnPlayerDie(BasePlayer player, HitInfo info)
        {
            if (player is NPCPlayer || player == null || info == null)
            {
                return;
            }

            if (oneLife)
            {
                Server.Command($"ban {player.userID} \"You died in hardcore mode.\" ");
            }

            PrintToChat(player, lang.GetMessage("Died", this, player.UserIDString));
        }

        void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
        {

            if (info.isHeadshot)
            {
                info.damageTypes.ScaleAll(100f);
                return;
            }

            info.damageTypes.ScaleAll(55f);

            
        }
        


        private void OnPlayerInit(BasePlayer player)
        {
            if (player.IsReceivingSnapshot)
            {
                timer.Once(1, () => OnPlayerInit(player));
                return;
            }

            AddGui(player);
        }

        private void OnPlayerDisconnected(BasePlayer player) => DestroyGui(player);


        private void OnPlayerDie(BasePlayer player) => DestroyGui(player);


        private void OnPlayerRespawn(BasePlayer player) => AddGui(player);


        private void LoadMessages()
        {

            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["Died"] = "You just died in hardcore mode.",
            }, this);
        }

        #endregion

        #region HardcoreGUI

        #region JSON
        private string json = @"[  
		{ 
			""name"": ""HardcoreOverlay"",
			""parent"": ""Overlay"",
			""components"":
			[
				{
					 ""type"":""UnityEngine.UI.Image"", 
					 ""color"":""0 0 0 0"",
				},
				{
					""type"":""RectTransform"",
					""anchormin"": ""0.837 0.0"",
					""anchormax"": ""0.986 0.089""
				}
			]
		},
        { 
			""parent"": ""HardcoreOverlay"",
			""components"":
			[
				{
					 ""type"":""UnityEngine.UI.Image"",
					 ""color"":""0.1 0.1 0.1 1"",
				},
				{
					""type"":""RectTransform"",
					""anchormin"": ""0 0.20"",
					""anchormax"": ""1 1.5""
				}
			]
		}
        ]
		";
        #endregion

        private void Loaded()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                AddGui(player);
            }
        }

        private void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                DestroyGui(player);
            }
        }

        private void AddGui(BasePlayer player)
        {

            CommunityEntity.ServerInstance.ClientRPCEx(new SendInfo { connection = player.net.connection }, null, "AddUI", json.Replace("{ACTIVATED}", "Hardcore Mode is activated!"));
        }

        private void DestroyGui(BasePlayer player)
        {
            CommunityEntity.ServerInstance.ClientRPCEx(new SendInfo { connection = player.net.connection }, null, "DestroyUI", "HardcoreOverlay");
        }



        #endregion

        #region Config 


        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;
                Changed = true;
            }
            object value;
            if (!data.TryGetValue(datavalue, out value))
            {
                value = defaultValue;
                data[datavalue] = value;
                Changed = true;
            }
            return value;
        }

        void LoadVariables()
        {

            oneLife = Convert.ToBoolean(GetConfig("Hardcore Mode", "One life?", false));
            damageAmount = Convert.ToSingle(GetConfig("Hardcore Mode", "Damage multiplier", 0.5f));

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

        protected override void LoadDefaultConfig()
        {
            Config.Clear();
            LoadVariables();
        }

        void Init()
        {
            LoadVariables();
            LoadMessages();
        }
        #endregion

    }
}

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