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

FREE Stacks : 1.0.3 1.0.3

Нет прав для скачивания
C#:
using System.Collections.Generic;
using System.Linq;
using System;
using UnityEngine;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
namespace Oxide.Plugins {
    [Info("Stacks", "Nimant", "1.0.3")]
    public class Stacks : RustPlugin {
        [PluginReference("FurnaceSplitter")]
        private Plugin gQBdhXWCYxw;
        private static Dictionary<string, int> yAPCONNhlKtKKZM = new Dictionary<string, int>();
        private void Init() => hClyeRIZNAAOe();
        private void OnServerInitialized() {
            var TuuCCwaQaVNDImxIrTSmjHWkTyQJ = ItemManager.itemList.Where(x=> EGZzqCLzhMOzp(x)).ToList();
            List<string> fQqGjCAPlOj = new List<string>();
            List<string> tRXvOMrFEtMyMokQMWZiNnnyG = new List<string>();
            foreach (var jFLYpQttaQBBLSgzOhhKBSXUuxPh in TuuCCwaQaVNDImxIrTSmjHWkTyQJ.OrderBy(r=> r.category)) {
                var FrSFRHPARDFsOakkqCTinfn = jFLYpQttaQBBLSgzOhhKBSXUuxPh.category.ToString();
                var nAMqcshShdaFRdfSen = jFLYpQttaQBBLSgzOhhKBSXUuxPh.displayName.english;
                if (!lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn.ContainsKey(FrSFRHPARDFsOakkqCTinfn)) {
                    lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn.Add(FrSFRHPARDFsOakkqCTinfn, new Dictionary<string, int> {
                        {
                            nAMqcshShdaFRdfSen, jFLYpQttaQBBLSgzOhhKBSXUuxPh.stackable
                        }
                    }
                    );
                    fQqGjCAPlOj.Add($"'{nAMqcshShdaFRdfSen}' в категории '{FrSFRHPARDFsOakkqCTinfn}'");
                }
                else if (!lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[FrSFRHPARDFsOakkqCTinfn].ContainsKey(nAMqcshShdaFRdfSen)) {
                    lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[FrSFRHPARDFsOakkqCTinfn].Add(nAMqcshShdaFRdfSen, jFLYpQttaQBBLSgzOhhKBSXUuxPh.stackable);
                    fQqGjCAPlOj.Add($"'{nAMqcshShdaFRdfSen}' в категории '{FrSFRHPARDFsOakkqCTinfn}'");
                }
                if (!yAPCONNhlKtKKZM.ContainsKey(FrSFRHPARDFsOakkqCTinfn + "|" + nAMqcshShdaFRdfSen)) yAPCONNhlKtKKZM.Add(FrSFRHPARDFsOakkqCTinfn + "|" + nAMqcshShdaFRdfSen, jFLYpQttaQBBLSgzOhhKBSXUuxPh.stackable);
                jFLYpQttaQBBLSgzOhhKBSXUuxPh.stackable = lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[FrSFRHPARDFsOakkqCTinfn][nAMqcshShdaFRdfSen];
            }
            foreach(var lAgjqcPRgxFeefGbcwdtWBa in lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn.Keys) {
                foreach(var jFLYpQttaQBBLSgzOhhKBSXUuxPh in lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[lAgjqcPRgxFeefGbcwdtWBa].ToDictionary(x=>x.Key, x=>x.Value)) {
                    if (!TuuCCwaQaVNDImxIrTSmjHWkTyQJ.Exists(x=>x.displayName.english == jFLYpQttaQBBLSgzOhhKBSXUuxPh.Key)) {
                        lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[lAgjqcPRgxFeefGbcwdtWBa].Remove(jFLYpQttaQBBLSgzOhhKBSXUuxPh.Key);
                        tRXvOMrFEtMyMokQMWZiNnnyG.Add($"'{jFLYpQttaQBBLSgzOhhKBSXUuxPh.Key}' из категории '{lAgjqcPRgxFeefGbcwdtWBa}'");
                    }
                }
                if (lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[lAgjqcPRgxFeefGbcwdtWBa].Count == 0) lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn.Remove(lAgjqcPRgxFeefGbcwdtWBa);
            }
            if (fQqGjCAPlOj.Count == 0 && tRXvOMrFEtMyMokQMWZiNnnyG.Count == 0) return;
            ubmZlOJevmKTgPpuqdDeJnyQwS(lVSGaCcnFN);
            if (fQqGjCAPlOj.Count > 0) {
                PrintWarning("В конфигурационный файл были добавлены новые предметы:");
                foreach(var jFLYpQttaQBBLSgzOhhKBSXUuxPh in fQqGjCAPlOj) PrintWarning(jFLYpQttaQBBLSgzOhhKBSXUuxPh);
            }
            if (tRXvOMrFEtMyMokQMWZiNnnyG.Count > 0) {
                PrintWarning("Конфигурационный файл был очищен от устаревших предметов:");
                foreach(var jFLYpQttaQBBLSgzOhhKBSXUuxPh in tRXvOMrFEtMyMokQMWZiNnnyG) PrintWarning(jFLYpQttaQBBLSgzOhhKBSXUuxPh);
            }
        }
        private void Unload() {
            foreach (var jFLYpQttaQBBLSgzOhhKBSXUuxPh in ItemManager.itemList.Where(x=> EGZzqCLzhMOzp(x))) jFLYpQttaQBBLSgzOhhKBSXUuxPh.stackable = yAPCONNhlKtKKZM[jFLYpQttaQBBLSgzOhhKBSXUuxPh.category.ToString() + "|" + jFLYpQttaQBBLSgzOhhKBSXUuxPh.displayName.english];
        }
        private bool CanStackItem(Item YbBZeZDQKsOgegKxmGEzDSDq, Item jFLYpQttaQBBLSgzOhhKBSXUuxPh) {
            if (YbBZeZDQKsOgegKxmGEzDSDq == jFLYpQttaQBBLSgzOhhKBSXUuxPh) return false;
            if (YbBZeZDQKsOgegKxmGEzDSDq.info.stackable <= 1 || jFLYpQttaQBBLSgzOhhKBSXUuxPh.info.stackable <= 1) return false;
            if (YbBZeZDQKsOgegKxmGEzDSDq.info.itemid != jFLYpQttaQBBLSgzOhhKBSXUuxPh.info.itemid) return false;
            if ((YbBZeZDQKsOgegKxmGEzDSDq.hasCondition || jFLYpQttaQBBLSgzOhhKBSXUuxPh.hasCondition) && YbBZeZDQKsOgegKxmGEzDSDq.condition != jFLYpQttaQBBLSgzOhhKBSXUuxPh.condition) return false;
            if (YbBZeZDQKsOgegKxmGEzDSDq.skin != jFLYpQttaQBBLSgzOhhKBSXUuxPh.skin) return false;
            if (!YbBZeZDQKsOgegKxmGEzDSDq.IsValid()) return false;
            if (YbBZeZDQKsOgegKxmGEzDSDq.IsBlueprint() && YbBZeZDQKsOgegKxmGEzDSDq.blueprintTarget != jFLYpQttaQBBLSgzOhhKBSXUuxPh.blueprintTarget) return false;
            return true;
        }
        private Item OnItemSplit(Item YbBZeZDQKsOgegKxmGEzDSDq, int amount) {
            YbBZeZDQKsOgegKxmGEzDSDq.amount = YbBZeZDQKsOgegKxmGEzDSDq.amount - amount;
            Item kCyWMPBQMd = ItemManager.CreateByItemID(YbBZeZDQKsOgegKxmGEzDSDq.info.itemid, 1, YbBZeZDQKsOgegKxmGEzDSDq.skin);
            kCyWMPBQMd.amount = amount;
            kCyWMPBQMd.condition = YbBZeZDQKsOgegKxmGEzDSDq.condition;
            if (YbBZeZDQKsOgegKxmGEzDSDq.IsBlueprint()) kCyWMPBQMd.blueprintTarget = YbBZeZDQKsOgegKxmGEzDSDq.blueprintTarget;
            YbBZeZDQKsOgegKxmGEzDSDq.MarkDirty();
            return kCyWMPBQMd;
        }
        private object CanMoveItem(Item YbBZeZDQKsOgegKxmGEzDSDq, PlayerInventory aGyxUQeZZoZBzSpxLKQNJJIysEB, uint kGjorWPmgBclOPU, int sjwkfRUmupAcdoSYsEFpVVlQbveaC, int RRmGAtmTirQJKO) {
            if (YbBZeZDQKsOgegKxmGEzDSDq == null || aGyxUQeZZoZBzSpxLKQNJJIysEB == null || YbBZeZDQKsOgegKxmGEzDSDq.amount < UInt16.MaxValue || !lVSGaCcnFN.dOBrXBdDjeLreLSWJIHRPDB) return null;
            ItemContainer SqLBfnnXesxNodz = aGyxUQeZZoZBzSpxLKQNJJIysEB.FindContainer(kGjorWPmgBclOPU);
            if (SqLBfnnXesxNodz == null) return null;
            ItemContainer HHvdtYvmxj = aGyxUQeZZoZBzSpxLKQNJJIysEB.GetContainer(PlayerInventory.Type.Main);
            BasePlayer VVzltEtgifhSPH = HHvdtYvmxj?.GetOwnerPlayer();
            if (VVzltEtgifhSPH != null && gQBdhXWCYxw != null) {
                bool egDLyaQJTufjzEQvrLVAWY = true;
                bool MfJenwUNTPTBsEfq = false;
                bool pdCfEjWrVytqcNCIN = true;
                try {
                    MfJenwUNTPTBsEfq = (bool)gQBdhXWCYxw?.CallHook("GetEnabled", VVzltEtgifhSPH);
                    pdCfEjWrVytqcNCIN = (bool)gQBdhXWCYxw?.CallHook("HasPermission", VVzltEtgifhSPH);
                }
                catch {
                    egDLyaQJTufjzEQvrLVAWY = false;
                }
                if (egDLyaQJTufjzEQvrLVAWY && MfJenwUNTPTBsEfq && pdCfEjWrVytqcNCIN) {
                    BaseEntity luLxSNWocZnTHGHVdGanvyORo = SqLBfnnXesxNodz.entityOwner;
                    if (luLxSNWocZnTHGHVdGanvyORo is BaseOven && (luLxSNWocZnTHGHVdGanvyORo as BaseOven).inventory.capacity > 1) return null;
                }
            }
            bool wJOYsjwMBjqzBBhuTYUr = false;
            int IhsVtZeGWYOMefoPbLC = lVSGaCcnFN.NsObVjLYDDgLPrTtoYzHHn[YbBZeZDQKsOgegKxmGEzDSDq.info.category.ToString()][YbBZeZDQKsOgegKxmGEzDSDq.info.displayName.english];
            if (YbBZeZDQKsOgegKxmGEzDSDq.amount > IhsVtZeGWYOMefoPbLC) wJOYsjwMBjqzBBhuTYUr = true;
            if (RRmGAtmTirQJKO + YbBZeZDQKsOgegKxmGEzDSDq.amount / UInt16.MaxValue == YbBZeZDQKsOgegKxmGEzDSDq.amount % UInt16.MaxValue) {
                if (wJOYsjwMBjqzBBhuTYUr) {
                    Item jFLYpQttaQBBLSgzOhhKBSXUuxPh = YbBZeZDQKsOgegKxmGEzDSDq.SplitItem(IhsVtZeGWYOMefoPbLC);
                    if (!jFLYpQttaQBBLSgzOhhKBSXUuxPh.MoveToContainer(SqLBfnnXesxNodz, sjwkfRUmupAcdoSYsEFpVVlQbveaC, true)) {
                        YbBZeZDQKsOgegKxmGEzDSDq.amount += jFLYpQttaQBBLSgzOhhKBSXUuxPh.amount;
                        jFLYpQttaQBBLSgzOhhKBSXUuxPh.Remove(0f);
                    }
                    ItemManager.DoRemoves();
                    aGyxUQeZZoZBzSpxLKQNJJIysEB.ServerUpdate(0f);
                    return true;
                }
                YbBZeZDQKsOgegKxmGEzDSDq.MoveToContainer(SqLBfnnXesxNodz, sjwkfRUmupAcdoSYsEFpVVlQbveaC, true);
                var GXKpxfBDbcHwZY = "11";
                return true;
            }
            else if (RRmGAtmTirQJKO + (YbBZeZDQKsOgegKxmGEzDSDq.amount / 2) / UInt16.MaxValue == (YbBZeZDQKsOgegKxmGEzDSDq.amount / 2) % UInt16.MaxValue + YbBZeZDQKsOgegKxmGEzDSDq.amount % 2) {
                if (wJOYsjwMBjqzBBhuTYUr) {
                    Item lCiOUemrsZLPUzjoKMMe;
                    if (IhsVtZeGWYOMefoPbLC > YbBZeZDQKsOgegKxmGEzDSDq.amount / 2) lCiOUemrsZLPUzjoKMMe = YbBZeZDQKsOgegKxmGEzDSDq.SplitItem(Convert.ToInt32(YbBZeZDQKsOgegKxmGEzDSDq.amount) / 2);
                    else lCiOUemrsZLPUzjoKMMe = YbBZeZDQKsOgegKxmGEzDSDq.SplitItem(IhsVtZeGWYOMefoPbLC);
                    if (!lCiOUemrsZLPUzjoKMMe.MoveToContainer(SqLBfnnXesxNodz, sjwkfRUmupAcdoSYsEFpVVlQbveaC, true)) {
                        YbBZeZDQKsOgegKxmGEzDSDq.amount += lCiOUemrsZLPUzjoKMMe.amount;
                        lCiOUemrsZLPUzjoKMMe.Remove(0f);
                    }
                    ItemManager.DoRemoves();
                    aGyxUQeZZoZBzSpxLKQNJJIysEB.ServerUpdate(0f);
                    return true;
                }
                Item jFLYpQttaQBBLSgzOhhKBSXUuxPh = YbBZeZDQKsOgegKxmGEzDSDq.SplitItem(YbBZeZDQKsOgegKxmGEzDSDq.amount / 2);
                if ((YbBZeZDQKsOgegKxmGEzDSDq.amount + jFLYpQttaQBBLSgzOhhKBSXUuxPh.amount) % 2 != 0) {
                    jFLYpQttaQBBLSgzOhhKBSXUuxPh.amount++;
                    YbBZeZDQKsOgegKxmGEzDSDq.amount--;
                }
                if (!jFLYpQttaQBBLSgzOhhKBSXUuxPh.MoveToContainer(SqLBfnnXesxNodz, sjwkfRUmupAcdoSYsEFpVVlQbveaC, true)) {
                    YbBZeZDQKsOgegKxmGEzDSDq.amount += jFLYpQttaQBBLSgzOhhKBSXUuxPh.amount;
                    jFLYpQttaQBBLSgzOhhKBSXUuxPh.Remove(0f);
                }
                ItemManager.DoRemoves();
                aGyxUQeZZoZBzSpxLKQNJJIysEB.ServerUpdate(0f);
                return true;
            }
            return null;
        }
        public static bool EGZzqCLzhMOzp(ItemDefinition LyxrkBqWezFNQVVIjzrWhYN) {
            if (LyxrkBqWezFNQVVIjzrWhYN == null) return false;
            int stackable = LyxrkBqWezFNQVVIjzrWhYN.stackable;
            if (yAPCONNhlKtKKZM.ContainsKey(LyxrkBqWezFNQVVIjzrWhYN.category.ToString() + "|" + LyxrkBqWezFNQVVIjzrWhYN.displayName.english)) stackable = yAPCONNhlKtKKZM[LyxrkBqWezFNQVVIjzrWhYN.category.ToString() + "|" + LyxrkBqWezFNQVVIjzrWhYN.displayName.english];
            if ((LyxrkBqWezFNQVVIjzrWhYN.condition.enabled && LyxrkBqWezFNQVVIjzrWhYN.condition.max > 0f && stackable == 1) && !(LyxrkBqWezFNQVVIjzrWhYN.category.ToString() == "Misc" && LyxrkBqWezFNQVVIjzrWhYN.shortname.Contains("electric")) ) return false;
            return true;
        }
        private Dictionary<string, Dictionary<string, int>> TPDfAdJtnwGJGVznON() {
            var ULzzyGHwMqISQSgZeAk = new Dictionary<string, Dictionary<string, int>>();
            var gxgvZkcSwTLpjBLqwklMvTW = ItemCategory.Weapon;
            var IkhZTUIhsFZk = new Dictionary<string, int>();
            foreach (var jFLYpQttaQBBLSgzOhhKBSXUuxPh in ItemManager.itemList.Where(x=> EGZzqCLzhMOzp(x)).OrderBy(r=> r.category)) {
                if (gxgvZkcSwTLpjBLqwklMvTW != jFLYpQttaQBBLSgzOhhKBSXUuxPh.category && IkhZTUIhsFZk.Count > 0) {
                    ULzzyGHwMqISQSgZeAk.Add($"{gxgvZkcSwTLpjBLqwklMvTW}", new Dictionary<string, int>(IkhZTUIhsFZk.OrderBy(x=>x.Key)));
                    IkhZTUIhsFZk.Clear();
                }
                if (!IkhZTUIhsFZk.ContainsKey(jFLYpQttaQBBLSgzOhhKBSXUuxPh.displayName.english)) IkhZTUIhsFZk.Add(jFLYpQttaQBBLSgzOhhKBSXUuxPh.displayName.english, jFLYpQttaQBBLSgzOhhKBSXUuxPh.stackable);
                gxgvZkcSwTLpjBLqwklMvTW = jFLYpQttaQBBLSgzOhhKBSXUuxPh.category;
            }
            if (IkhZTUIhsFZk.Count > 0) ULzzyGHwMqISQSgZeAk.Add($"{gxgvZkcSwTLpjBLqwklMvTW}", new Dictionary<string, int>(IkhZTUIhsFZk));
            return ULzzyGHwMqISQSgZeAk.OrderBy(x=>x.Key).ToDictionary(x=>x.Key, x=>x.Value);
        }
        private static vDqBUrPNDFrJLYfLtbbkCGKrIWsK lVSGaCcnFN;
        private class vDqBUrPNDFrJLYfLtbbkCGKrIWsK {
            [JsonProperty(PropertyName = "Разрешить корректный перенос стаков больше 64К")]
            public bool dOBrXBdDjeLreLSWJIHRPDB;
            [JsonProperty(PropertyName = "Стаки предметов по категориям")]
            public Dictionary<string, Dictionary<string, int>> NsObVjLYDDgLPrTtoYzHHn;
        }
        private void hClyeRIZNAAOe() => lVSGaCcnFN = Config.ReadObject<vDqBUrPNDFrJLYfLtbbkCGKrIWsK>();
        protected override void LoadDefaultConfig() {
            if (ItemManager.itemList == null) {
                timer.Once(5f, ()=> LoadDefaultConfig());
                return;
            }
            lVSGaCcnFN = new vDqBUrPNDFrJLYfLtbbkCGKrIWsK {
                dOBrXBdDjeLreLSWJIHRPDB = true, NsObVjLYDDgLPrTtoYzHHn = TPDfAdJtnwGJGVznON()
            }
            ;
            ubmZlOJevmKTgPpuqdDeJnyQwS(lVSGaCcnFN);
            timer.Once(0.1f, ()=> ubmZlOJevmKTgPpuqdDeJnyQwS(lVSGaCcnFN));
        }
        private void ubmZlOJevmKTgPpuqdDeJnyQwS(vDqBUrPNDFrJLYfLtbbkCGKrIWsK EvXYPZWfCQfuQFPBzKwv) => Config.WriteObject(EvXYPZWfCQfuQFPBzKwv, true);
    }
}

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

Другие ресурсы пользователя 15FPS

Сверху