public static void LoadLootTemplates_Milling() { Log.outInfo(LogFilter.ServerLoading, "Loading milling loot templates..."); uint oldMSTime = Time.GetMSTime(); List<uint> lootIdSet; uint count = Milling.LoadAndCollectLootIds(out lootIdSet); // remove real entries and check existence loot var its = Global.ObjectMgr.GetItemTemplates(); foreach (var pair in its) { if (!pair.Value.GetFlags().HasAnyFlag(ItemFlags.IsMillable)) continue; if (lootIdSet.Contains(pair.Value.GetId())) lootIdSet.Remove(pair.Value.GetId()); } // output error for any still listed (not referenced from appropriate table) ids Milling.ReportUnusedIds(lootIdSet); if (count != 0) Log.outInfo(LogFilter.ServerLoading, "Loaded {0} milling loot templates in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime)); else Log.outError(LogFilter.ServerLoading, "Loaded 0 milling loot templates. DB table `milling_loot_template` is empty"); }
public static void LoadLootTemplates_Reference() { Log.outInfo(LogFilter.ServerLoading, "Loading reference loot templates..."); uint oldMSTime = Time.GetMSTime(); List<uint> lootIdSet; Reference.LoadAndCollectLootIds(out lootIdSet); // check references and remove used Creature.CheckLootRefs(lootIdSet); Fishing.CheckLootRefs(lootIdSet); Gameobject.CheckLootRefs(lootIdSet); Items.CheckLootRefs(lootIdSet); Milling.CheckLootRefs(lootIdSet); Pickpocketing.CheckLootRefs(lootIdSet); Skinning.CheckLootRefs(lootIdSet); Disenchant.CheckLootRefs(lootIdSet); Prospecting.CheckLootRefs(lootIdSet); Mail.CheckLootRefs(lootIdSet); Reference.CheckLootRefs(lootIdSet); // output error for any still listed ids (not referenced from any loot table) Reference.ReportUnusedIds(lootIdSet); Log.outInfo(LogFilter.ServerLoading, "Loaded refence loot templates in {0} ms", Time.GetMSTimeDiffToNow(oldMSTime)); }
public override void Run() { _lastTimeRunning = Others.Times; MovementManager.StopMove(); Thread.Sleep(500); Tasks.MountTask.DismountMount(); Logging.Write("Milling in progress"); Timer timer = new Timer(15 * 60 * 1000); // Milling while (Milling.NeedRun(nManagerSetting.CurrentSetting.HerbsToBeMilled) && Products.Products.IsStarted && Usefuls.InGame && !ObjectManager.ObjectManager.Me.InCombat && !ObjectManager.ObjectManager.Me.IsDeadMe && !timer.IsReady) { Thread.Sleep(200); Milling.Pulse(nManagerSetting.CurrentSetting.HerbsToBeMilled); Thread.Sleep(750); while (ObjectManager.ObjectManager.Me.IsCast && Products.Products.IsStarted && Usefuls.InGame && !ObjectManager.ObjectManager.Me.InCombat && !ObjectManager.ObjectManager.Me.IsDeadMe && !timer.IsReady) { Thread.Sleep(100); } Thread.Sleep(Others.Random(600, 1600) + Usefuls.Latency); } }