protected override void Load()
        {
            Instance     = this;
            MessageColor = UnturnedChat.GetColorFromName(Configuration.Instance.MessageColor, Color.green);

            PropertyAreTablesDirty = typeof(SpawnAsset).GetProperty("areTablesDirty", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            FieldAirdropNodes      = typeof(LevelManager).GetField("airdropNodes", BindingFlags.Static | BindingFlags.NonPublic);
            FieldHasAirdrop        = typeof(LevelManager).GetField("_hasAirdrop", BindingFlags.Static | BindingFlags.NonPublic);

            AirdropTimer           = new Timer(Configuration.Instance.AirdropInterval * 1000);
            AirdropTimer.Elapsed  += AirdropTimer_Elapsed;
            AirdropTimer.AutoReset = true;
            AirdropTimer.Start();
            AirdropTimerNext = DateTime.Now.AddSeconds(Configuration.Instance.AirdropInterval);

            foreach (Airdrop airdrop in Configuration.Instance.Airdrops)
            {
                if (Configuration.Instance.BlacklistedAirdrops.Contains(airdrop.AirdropId))
                {
                    continue;
                }

                SpawnAsset asset = new SpawnAsset(airdrop.AirdropId);
                foreach (AirdropItem item in airdrop.Items)
                {
                    asset.tables.Add(new SpawnTable()
                    {
                        assetID = item.ItemId,
                        weight  = item.Chance,
                        spawnID = 0,
                        chance  = 0
                    });
                }

                // Setting this to true solved the issue with only last time being dropped
                PropertyAreTablesDirty.SetValue(asset, true);
                Assets.add(asset, true);
            }

            if (Level.isLoaded)
            {
                OnLevelLoaded(0);
            }

            Level.onLevelLoaded += OnLevelLoaded;

            Logger.Log($"{Name} {Assembly.GetName().Version} has been loaded!", ConsoleColor.Yellow);
            Logger.Log($"Brought to You by RestoreMonarchy.com", ConsoleColor.Yellow);
        }
예제 #2
0
        protected override void Load()
        {
            Instance               = this;
            MessageColor           = UnturnedChat.GetColorFromName(Configuration.Instance.MessageColor, Color.green);
            AirdropTimer           = new Timer(Configuration.Instance.AirdropInterval * 1000);
            AirdropTimer.Elapsed  += AirdropTimer_Elapsed;
            AirdropTimer.AutoReset = true;
            AirdropTimer.Start();
            AirdropTimerNext = DateTime.Now.AddSeconds(Configuration.Instance.AirdropInterval);

            ItemStorageAsset carepackageAsset = (ItemStorageAsset)Assets.find(EAssetType.ITEM, 1374);
            var x = typeof(ItemStorageAsset).GetField("_storage_x", BindingFlags.NonPublic | BindingFlags.Instance);
            var y = typeof(ItemStorageAsset).GetField("_storage_y", BindingFlags.NonPublic | BindingFlags.Instance);

            x.SetValue(carepackageAsset, Configuration.Instance.CarepackageStorageX);
            y.SetValue(carepackageAsset, Configuration.Instance.CarepackageStorageY);

            foreach (Airdrop airdrop in Configuration.Instance.Airdrops)
            {
                if (Configuration.Instance.BlacklistedAirdrops.Contains(airdrop.AirdropId))
                {
                    continue;
                }

                SpawnAsset asset = new SpawnAsset(airdrop.AirdropId);
                foreach (AirdropItem item in airdrop.Items)
                {
                    asset.tables.Add(new SpawnTable()
                    {
                        assetID = item.ItemId,
                        weight  = item.Chance,
                        spawnID = 0,
                        chance  = 0
                    });
                }

                // Setting this to true solved the issue with only last time being dropped
                asset.GetType().GetProperty("areTablesDirty", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).SetValue(asset, true);
                Assets.add(asset, true);
            }

            Level.onLevelLoaded += OnLevelLoaded;

            Logger.Log($"{Name} {Assembly.GetName().Version} has been loaded!", ConsoleColor.Yellow);
            Logger.Log($"Brought to You by RestoreMonarchy.com", ConsoleColor.Yellow);
            Logger.Log($"Edited by Charterino", ConsoleColor.Yellow);
        }