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

FREE MagicSmelt : 1.0.0 1.0.0

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

/*

	TO DO List:

	* Smelt items as soon as they hit inventory (permission)
	* Smelt on command (permission, cooldown, sound)
	* Remade List in Dictionary with cooldowns, etc

*/

namespace Oxide.Plugins
{
    [Info("Magic Smelt", "Lomarine", "1.0.0")]
	[Description("Smelts resources on gather.")]

    class MagicSmelt : RustPlugin
    {
		List<ulong> ActiveUsers;

		private string PermTools = "MagicSmelt.tools";
		private string GatherEffect;
		private int CharcoalMultiplier;

		#region Initialization

		void Init()
        {
            permission.RegisterPermission(PermTools, this);

			LoadDefaultMessages();
			LoadData();
			LoadDefaultConfig();
        }

		#endregion

		#region Commands

		[ChatCommand("tools")]
        private void cmdtools(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, PermTools))
            {
                PrintToChat(player, "Нет прав.");
                return;
            }
            if (ActiveUsers.Contains(player.userID))
            {
                PrintToChat(player, "Переплавка руд при добыче деактивирована.");
                ActiveUsers.Remove(player.userID);
                return;
            }
            PrintToChat(player, "Переплавка руд при добыче активирована.");
            ActiveUsers.Add(player.userID);
        }
		
		#endregion

		#region Helpers

		void OnServerSave()
		{
			Interface.Oxide.DataFileSystem.WriteObject("MagicSmelt", ActiveUsers);
		}

		void LoadData()
		{
			try
            {
                ActiveUsers = Interface.Oxide.DataFileSystem.ReadObject<List<ulong>>("MagicSmelt");
            }
            catch
            {
                ActiveUsers = new List<ulong>();
                PrintWarning("Failed to load datafile.Creating new datafile...");
            }
		}

		void LoadDefaultMessages()
		{
			lang.RegisterMessages(new Dictionary<string, string>
            {
                {"1", "<color=red>У вас нету прав к этой Команде</color>"},
				{"2", "<color=Green>Activated</color>"},
				{"3", "<color=red>deactivated</color>"}
            }, this);
		}

		protected override void LoadDefaultConfig()
        {
            Config["Gather Effect"] = GatherEffect = GetConfig("Gather Effect", "assets/prefabs/weapons/wooden spear/effects/strike_wood.prefab");
			Config["Charcoal Multiplier"] = CharcoalMultiplier = GetConfig("Charcoal Multiplier", 1);
            SaveConfig();
        }

		T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));

		#endregion

		#region Smelt

		// On Gather
		void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item)
        {
            BasePlayer player = entity.ToPlayer();
            if (player == null) return;
            if (!permission.UserHasPermission(player.UserIDString, PermTools) || !ActiveUsers.Contains(player.userID)) return;
            switch (item.info.shortname)
            {
				// Resources
                case "sulfur.ore":
                    SmeltItems(-891243783, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
                case "hq.metal.ore":
                    SmeltItems(374890416, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
                case "metal.ore":
                    SmeltItems(688032252, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "wood":
                    SmeltItems(1436001773, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				// Meat
				case "bearmeat":
                    SmeltItems(-2043730634, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "deermeat.raw":
                    SmeltItems(-202239044, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "humanmeat.raw":
                    SmeltItems(-991829475, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "meat.boar":
                    SmeltItems(991728250, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "wolfmeat.raw":
                    SmeltItems(-1691991080, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "chicken.raw":
                    SmeltItems(1734319168, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
            }

        }

		// On Collect
		void OnCollectiblePickup(Item item, BasePlayer player)
		{
			if (player == null) return;
            if (!permission.UserHasPermission(player.UserIDString, PermTools) || !ActiveUsers.Contains(player.userID)) return;
            switch (item.info.shortname)
            {
                case "sulfur.ore":
                    SmeltItems(-891243783, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
                case "metal.ore":
                    SmeltItems(688032252, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
				case "wood":
                    SmeltItems(1436001773, ref item);
					Effect.server.Run(GatherEffect, player.transform.position);
                    break;
            }
		}

		// Smelter
		private void SmeltItems(int ItemId, ref Item item)
        {
			if(item.info.shortname == "wood")
				item.amount = item.amount * CharcoalMultiplier;
            Item _item = ItemManager.CreateByItemID(ItemId, item.amount);
            item.info = _item.info;
            item.contents = _item.contents;
        }

		#endregion
    }
}

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