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

FREE LaptopCrateHack : 1.0.6 1.0.6

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

namespace Oxide.Plugins {

    [Info("Laptop Crate Hack", "TheSurgeon", "1.0.6")]
    [Description("Require a laptop to hack a crate.")]
    public class LaptopCrateHack : RustPlugin {
        bool requireInHand;
        bool consumeLaptop;
        bool ownCrate;
        int numberRequired;
		int targetingComputerID;

        protected override void LoadDefaultConfig() {
            Config["Require laptop to be in hand (True/False)"] = requireInHand = GetConfig("Require laptop to be in hand (True/False)", false);
            Config["Consume laptop (True/False)"] = consumeLaptop = GetConfig("Consume laptop (True/False)", true);
            Config["Laptops Required (Must be greater than 0)"] = numberRequired = GetConfig("Laptops Required (Must be greater than 0)", 1);
            Config["Only player that hacked can loot? (True/False)"] = ownCrate = GetConfig("Only player that hacked can loot ? (True / False)", false);
            SaveConfig();
        }

        private Dictionary<string, string> EN = new Dictionary<string, string>  {
            {"YouNeed", "Error: You need {0} Targeting Computers and you only have {1}."},
            {"NotHolding", "Error: You must be holding a Targeting Computer in your hand to hack this crate."},
            {"YouDontOwn", "Error: Only the player that hacked this crate can loot it."}
        };

        void Init() {            
            LoadDefaultConfig();			
        }

		
		void OnServerInitialized() {
            var itemDef = ItemManager.FindItemDefinition("targeting.computer");
            if (itemDef != null) {
                targetingComputerID = itemDef.itemid;
            } else {
				// If this id cannot be found we need to disable the plugin to prevent further errors.Unsubscribe(nameof(CanHackCrate));
			}
		}
		
        protected override void LoadDefaultMessages() {
            lang.RegisterMessages(EN, this);
        }

        object CanHackCrate(BasePlayer player, HackableLockedCrate crate) {
            if (!requireInHand) {
                var has = player.inventory.GetAmount(targetingComputerID);
                if (has >= numberRequired) {
                    if (consumeLaptop) {
                        player.inventory.Take(null, targetingComputerID, numberRequired);
                        return null;
                    }                   
                } else {
                    message(player, "YouNeed", numberRequired.ToString(), has.ToString());
                    return true;
                }
            } else {
				var activeItem = player.GetActiveItem()?.info?.shortname;
                if (activeItem == null || activeItem == "") {
                    message(player, "NotHolding");
                    return true;
                }
                if(activeItem == "targeting.computer") {
                    var has = player.inventory.GetAmount(targetingComputerID);
                    if (has >= numberRequired) {
                        if (consumeLaptop) {
                            player.inventory.Take(null, targetingComputerID, numberRequired);
                        }
                    } else {
                        message(player, "YouNeed", numberRequired.ToString(), has.ToString());
                        return true;
                    }
                } else {
                    message(player, "NotHolding");
                    return true;
                }
            }
            if(ownCrate) {
                crate.OwnerID = player.userID;
            }
            return null;
        }

        object CanLootEntity(BasePlayer player, HackableLockedCrate crate) {
            Puts(player.userID.ToString() + " : " + crate.OwnerID.ToString());
            if(ownCrate) {
                if(player.userID == crate.OwnerID) {
                    return null;
                } else {
                    message(player, "YouDontOwn");
                    return false;
                }
            }
            return null;
        }

        private void message(BasePlayer player, string key, params object[] args) {
            var message = string.Format(lang.GetMessage(key, this, player.UserIDString), args);
            player.ChatMessage(message);
        }

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

    }
}

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