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); }
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); }