public static bool ScanMemory() { ReadMemoryResults readMemoryResults = ReadMemoryManager.ReadMemory(); ParseMemoryResults parseMemoryResults = Parser.ParseLogResults(readMemoryResults); if (parseMemoryResults != null) { lastResults = parseMemoryResults; if (parseMemoryResults.newDamage) { GlobalDataManager.UpdateDamage(); } } if (readMemoryResults != null && readMemoryResults.newAdvances.Count > 0) { if (SettingsManager.getSettingBool("AutoScreenshotAdvance")) { MainForm.mainForm.Invoke((MethodInvoker)delegate { ScreenshotManager.saveScreenshot("Advance", ScreenshotManager.takeScreenshot()); }); } if (SettingsManager.getSettingBool("CopyAdvances")) { foreach (object obj in readMemoryResults.newAdvances) { MainForm.mainForm.Invoke((MethodInvoker)delegate { Clipboard.SetText(obj.ToString()); }); } } readMemoryResults.newAdvances.Clear(); } if (parseMemoryResults != null && parseMemoryResults.death) { if (SettingsManager.getSettingBool("AutoScreenshotDeath")) { MainForm.mainForm.Invoke((MethodInvoker)delegate { ScreenshotManager.saveScreenshot("Death", ScreenshotManager.takeScreenshot()); }); } parseMemoryResults.death = false; } if (parseMemoryResults != null) { if (parseMemoryResults.newEventMessages.Count > 0) { if (SettingsManager.getSettingBool("EnableEventNotifications")) { foreach (Tuple<Event, string> tpl in parseMemoryResults.newEventMessages) { Event ev = tpl.Item1; Creature cr = StorageManager.getCreature(ev.creatureid); MainForm.mainForm.Invoke((MethodInvoker)delegate { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { PopupManager.ShowSimpleNotification("Event in " + ev.location, tpl.Item2, cr.image); } else { PopupManager.ShowSimpleNotification(new SimpleTextNotification(cr.image, "Event in " + ev.location, tpl.Item2)); } }); } } parseMemoryResults.newEventMessages.Clear(); } } if (SettingsManager.getSettingBool("LookMode") && readMemoryResults != null) { foreach (string msg in parseMemoryResults.newLooks) { string itemName = Parser.parseLookItem(msg).ToLower(); if (StorageManager.itemExists(itemName)) { MainForm.mainForm.Invoke((MethodInvoker)delegate { CommandManager.ExecuteCommand("item@" + itemName); }); } else if (StorageManager.creatureExists(itemName) || (itemName.Contains("dead ") && (itemName = itemName.Replace("dead ", "")) != null && StorageManager.creatureExists(itemName)) || (itemName.Contains("slain ") && (itemName = itemName.Replace("slain ", "")) != null && StorageManager.creatureExists(itemName))) { MainForm.mainForm.Invoke((MethodInvoker)delegate { CommandManager.ExecuteCommand("creature@" + itemName); }); } else { NPC npc = StorageManager.getNPC(itemName); if (npc != null) { MainForm.mainForm.Invoke((MethodInvoker)delegate { CommandManager.ExecuteCommand("npc@" + itemName); }); } } } parseMemoryResults.newLooks.Clear(); } List<string> commands = parseMemoryResults == null ? new List<string>() : parseMemoryResults.newCommands.ToList(); commands.Reverse(); foreach (string command in commands) { MainForm.mainForm.Invoke((MethodInvoker)delegate { if (!CommandManager.ExecuteCommand(command, parseMemoryResults) && SettingsManager.getSettingBool("EnableUnrecognizedNotifications")) { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { PopupManager.ShowSimpleNotification("Unrecognized command", "Unrecognized command: " + command, StyleManager.GetImage("tibia.png")); } else { PopupManager.ShowSimpleNotification(new SimpleTextNotification(null, "Unrecognized command", "Unrecognized command: " + command)); } } }); } if (parseMemoryResults != null) { if (parseMemoryResults.newItems.Count > 0) { MainForm.mainForm.Invoke((MethodInvoker)delegate { LootDatabaseManager.UpdateLoot(); }); } foreach (Tuple<Creature, List<Tuple<Item, int>>> tpl in parseMemoryResults.newItems) { Creature cr = tpl.Item1; List<Tuple<Item, int>> items = tpl.Item2; bool showNotification = PopupManager.ShowDropNotification(tpl); if (showNotification) { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { Console.WriteLine("Rich Notification"); PopupManager.ShowSimpleNotification(cr.displayname, cr.displayname + " dropped a valuable item.", cr.image); } else { MainForm.mainForm.Invoke((MethodInvoker)delegate { PopupManager.ShowSimpleNotification(new SimpleLootNotification(cr, items)); }); } if (SettingsManager.getSettingBool("AutoScreenshotItemDrop")) { // Take a screenshot if Tibialyzer is set to take screenshots of valuable loot Bitmap screenshot = ScreenshotManager.takeScreenshot(); if (screenshot == null) continue; // Add a notification to the screenshot SimpleLootNotification screenshotNotification = new SimpleLootNotification(cr, items); Bitmap notification = new Bitmap(screenshotNotification.Width, screenshotNotification.Height); screenshotNotification.DrawToBitmap(notification, new Rectangle(0, 0, screenshotNotification.Width, screenshotNotification.Height)); foreach (Control c in screenshotNotification.Controls) { c.DrawToBitmap(notification, new Rectangle(c.Location, c.Size)); } screenshotNotification.Dispose(); int widthOffset = notification.Width + 10; int heightOffset = notification.Height + 10; if (screenshot.Width > widthOffset && screenshot.Height > heightOffset) { using (Graphics gr = Graphics.FromImage(screenshot)) { gr.DrawImage(notification, new Point(screenshot.Width - widthOffset, screenshot.Height - heightOffset)); } } notification.Dispose(); MainForm.mainForm.Invoke((MethodInvoker)delegate { ScreenshotManager.saveScreenshot("Loot", screenshot); }); } } } } return readMemoryResults != null; }
private bool ScanMemory() { ReadMemoryResults readMemoryResults = ReadMemory(); ParseMemoryResults parseMemoryResults = ParseLogResults(readMemoryResults); if (parseMemoryResults != null) { lastResults = parseMemoryResults; } if (readMemoryResults != null && readMemoryResults.newAdvances.Count > 0) { if (SettingsManager.getSettingBool("AutoScreenshotAdvance")) { this.Invoke((MethodInvoker)delegate { saveScreenshot("Advance", takeScreenshot()); }); } if (SettingsManager.getSettingBool("CopyAdvances")) { foreach (object obj in readMemoryResults.newAdvances) { this.Invoke((MethodInvoker)delegate { Clipboard.SetText(obj.ToString()); }); } } readMemoryResults.newAdvances.Clear(); } if (parseMemoryResults != null && parseMemoryResults.death) { if (SettingsManager.getSettingBool("AutoScreenshotDeath")) { this.Invoke((MethodInvoker)delegate { saveScreenshot("Death", takeScreenshot()); }); } parseMemoryResults.death = false; } if (parseMemoryResults != null) { if (parseMemoryResults.newEventMessages.Count > 0) { if (SettingsManager.getSettingBool("EnableEventNotifications")) { foreach (Tuple<Event, string> tpl in parseMemoryResults.newEventMessages) { Event ev = tpl.Item1; Creature cr = getCreature(ev.creatureid); this.Invoke((MethodInvoker)delegate { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { ShowSimpleNotification("Event in " + ev.location, tpl.Item2, cr.image); } else { ShowSimpleNotification(new SimpleTextNotification(cr.image, "Event in " + ev.location, tpl.Item2)); } }); } } parseMemoryResults.newEventMessages.Clear(); } } if (SettingsManager.getSettingBool("LookMode") && readMemoryResults != null) { foreach (string msg in parseMemoryResults.newLooks) { string itemName = parseLookItem(msg).ToLower(); if (itemExists(itemName)) { this.Invoke((MethodInvoker)delegate { this.ExecuteCommand("item@" + itemName); }); } else if (creatureExists(itemName) || (itemName.Contains("dead ") && (itemName = itemName.Replace("dead ", "")) != null && creatureExists(itemName)) || (itemName.Contains("slain ") && (itemName = itemName.Replace("slain ", "")) != null && creatureExists(itemName))) { this.Invoke((MethodInvoker)delegate { this.ExecuteCommand("creature@" + itemName); }); } else { NPC npc = getNPC(itemName); if (npc != null) { this.Invoke((MethodInvoker)delegate { this.ExecuteCommand("npc@" + itemName); }); } } } parseMemoryResults.newLooks.Clear(); } List<string> commands = parseMemoryResults == null ? new List<string>() : parseMemoryResults.newCommands.ToArray().ToList(); commands.Reverse(); foreach (string command in commands) { this.Invoke((MethodInvoker)delegate { if (!ExecuteCommand(command, parseMemoryResults) && SettingsManager.getSettingBool("EnableUnrecognizedNotifications")) { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { ShowSimpleNotification("Unrecognized command", "Unrecognized command: " + command, tibia_image); } else { ShowSimpleNotification(new SimpleTextNotification(null, "Unrecognized command", "Unrecognized command: " + command)); } } }); } if (parseMemoryResults != null) { if (parseMemoryResults.newItems.Count > 0) { this.Invoke((MethodInvoker)delegate { for (int i = 0; i < NotificationFormGroups.Length; i++) { if (NotificationFormGroups[i] != null && NotificationFormGroups[i] is LootDropForm) { (NotificationFormGroups[i] as LootDropForm).UpdateLoot(); } } if (logButton.Enabled == false) { refreshHuntLog(getSelectedHunt()); } }); } foreach (Tuple<Creature, List<Tuple<Item, int>>> tpl in parseMemoryResults.newItems) { Creature cr = tpl.Item1; List<Tuple<Item, int>> items = tpl.Item2; bool showNotification = ShowDropNotification(tpl); if (showNotification) { if (SettingsManager.getSettingBool("AutoScreenshotItemDrop")) { // Take a screenshot if Tibialyzer is set to take screenshots of valuable loot Bitmap screenshot = takeScreenshot(); if (screenshot == null) continue; // Add a notification to the screenshot SimpleLootNotification screenshotNotification = new SimpleLootNotification(cr, items); Bitmap notification = new Bitmap(screenshotNotification.Width, screenshotNotification.Height); screenshotNotification.DrawToBitmap(notification, new Rectangle(0, 0, screenshotNotification.Width, screenshotNotification.Height)); foreach (Control c in screenshotNotification.Controls) { c.DrawToBitmap(notification, new Rectangle(c.Location, c.Size)); } screenshotNotification.Dispose(); int widthOffset = notification.Width + 10; int heightOffset = notification.Height + 10; if (screenshot.Width > widthOffset && screenshot.Height > heightOffset) { using (Graphics gr = Graphics.FromImage(screenshot)) { gr.DrawImage(notification, new Point(screenshot.Width - widthOffset, screenshot.Height - heightOffset)); } } notification.Dispose(); this.Invoke((MethodInvoker)delegate { saveScreenshot("Loot", screenshot); }); } if (!SettingsManager.getSettingBool("UseRichNotificationType")) { ShowSimpleNotification(cr.displayname, cr.displayname + " dropped a valuable item.", cr.image); } else { this.Invoke((MethodInvoker)delegate { ShowSimpleNotification(new SimpleLootNotification(cr, items)); }); } } } } return readMemoryResults != null; }
public static bool ScanMemory() { ReadMemoryResults readMemoryResults = ReadMemoryManager.ReadMemory(); ParseMemoryResults parseMemoryResults = Parser.ParseLogResults(readMemoryResults); if (parseMemoryResults != null) { lastResults = parseMemoryResults; if (parseMemoryResults.newDamage) { GlobalDataManager.UpdateDamage(); } } if (readMemoryResults != null && readMemoryResults.newAdvances.Count > 0) { if (SettingsManager.getSettingBool("AutoScreenshotAdvance")) { MainForm.mainForm.Invoke((MethodInvoker) delegate { ScreenshotManager.saveScreenshot("Advance", ScreenshotManager.takeScreenshot()); }); } if (SettingsManager.getSettingBool("CopyAdvances")) { foreach (object obj in readMemoryResults.newAdvances) { MainForm.mainForm.Invoke((MethodInvoker) delegate { Clipboard.SetText(obj.ToString()); }); } } readMemoryResults.newAdvances.Clear(); } if (parseMemoryResults != null && parseMemoryResults.death) { if (SettingsManager.getSettingBool("AutoScreenshotDeath")) { MainForm.mainForm.Invoke((MethodInvoker) delegate { ScreenshotManager.saveScreenshot("Death", ScreenshotManager.takeScreenshot()); }); } parseMemoryResults.death = false; } if (parseMemoryResults != null) { if (parseMemoryResults.newEventMessages.Count > 0) { if (SettingsManager.getSettingBool("EnableEventNotifications")) { foreach (Tuple <Event, string> tpl in parseMemoryResults.newEventMessages) { Event ev = tpl.Item1; Creature cr = StorageManager.getCreature(ev.creatureid); MainForm.mainForm.Invoke((MethodInvoker) delegate { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { PopupManager.ShowSimpleNotification("Event in " + ev.location, tpl.Item2, cr.image); } else { PopupManager.ShowSimpleNotification(new SimpleTextNotification(cr.image, "Event in " + ev.location, tpl.Item2)); } }); } } parseMemoryResults.newEventMessages.Clear(); } } if (SettingsManager.getSettingBool("LookMode") && readMemoryResults != null) { foreach (string msg in parseMemoryResults.newLooks) { string itemName = Parser.parseLookItem(msg).ToLower(); if (StorageManager.itemExists(itemName)) { MainForm.mainForm.Invoke((MethodInvoker) delegate { CommandManager.ExecuteCommand("item@" + itemName); }); } else if (StorageManager.creatureExists(itemName) || (itemName.Contains("dead ") && (itemName = itemName.Replace("dead ", "")) != null && StorageManager.creatureExists(itemName)) || (itemName.Contains("slain ") && (itemName = itemName.Replace("slain ", "")) != null && StorageManager.creatureExists(itemName))) { MainForm.mainForm.Invoke((MethodInvoker) delegate { CommandManager.ExecuteCommand("creature@" + itemName); }); } else { NPC npc = StorageManager.getNPC(itemName); if (npc != null) { MainForm.mainForm.Invoke((MethodInvoker) delegate { CommandManager.ExecuteCommand("npc@" + itemName); }); } } } parseMemoryResults.newLooks.Clear(); } List <string> commands = parseMemoryResults == null ? new List <string>() : parseMemoryResults.newCommands.ToList(); commands.Reverse(); foreach (string command in commands) { MainForm.mainForm.Invoke((MethodInvoker) delegate { if (!CommandManager.ExecuteCommand(command, parseMemoryResults) && SettingsManager.getSettingBool("EnableUnrecognizedNotifications")) { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { PopupManager.ShowSimpleNotification("Unrecognized command", "Unrecognized command: " + command, StyleManager.GetImage("tibia.png")); } else { PopupManager.ShowSimpleNotification(new SimpleTextNotification(null, "Unrecognized command", "Unrecognized command: " + command)); } } }); } if (parseMemoryResults != null) { if (parseMemoryResults.newItems.Count > 0) { MainForm.mainForm.Invoke((MethodInvoker) delegate { LootDatabaseManager.UpdateLoot(); }); } foreach (Tuple <Creature, List <Tuple <Item, int> > > tpl in parseMemoryResults.newItems) { Creature cr = tpl.Item1; List <Tuple <Item, int> > items = tpl.Item2; bool showNotification = PopupManager.ShowDropNotification(tpl); if (showNotification) { if (!SettingsManager.getSettingBool("UseRichNotificationType")) { Console.WriteLine("Rich Notification"); PopupManager.ShowSimpleNotification(cr.displayname, cr.displayname + " dropped a valuable item.", cr.image); } else { MainForm.mainForm.Invoke((MethodInvoker) delegate { PopupManager.ShowSimpleNotification(new SimpleLootNotification(cr, items)); }); } if (SettingsManager.getSettingBool("AutoScreenshotItemDrop")) { // Take a screenshot if Tibialyzer is set to take screenshots of valuable loot Bitmap screenshot = ScreenshotManager.takeScreenshot(); if (screenshot == null) { continue; } // Add a notification to the screenshot SimpleLootNotification screenshotNotification = new SimpleLootNotification(cr, items); Bitmap notification = new Bitmap(screenshotNotification.Width, screenshotNotification.Height); screenshotNotification.DrawToBitmap(notification, new Rectangle(0, 0, screenshotNotification.Width, screenshotNotification.Height)); foreach (Control c in screenshotNotification.Controls) { c.DrawToBitmap(notification, new Rectangle(c.Location, c.Size)); } screenshotNotification.Dispose(); int widthOffset = notification.Width + 10; int heightOffset = notification.Height + 10; if (screenshot.Width > widthOffset && screenshot.Height > heightOffset) { using (Graphics gr = Graphics.FromImage(screenshot)) { gr.DrawImage(notification, new Point(screenshot.Width - widthOffset, screenshot.Height - heightOffset)); } } notification.Dispose(); MainForm.mainForm.Invoke((MethodInvoker) delegate { ScreenshotManager.saveScreenshot("Loot", screenshot); }); } } } } return(readMemoryResults != null); }
private bool ScanMemory() { ReadMemoryResults readMemoryResults = ReadMemory(); ParseMemoryResults parseMemoryResults = ParseLogResults(readMemoryResults); if (parseMemoryResults != null) { lastResults = parseMemoryResults; } if (readMemoryResults != null && readMemoryResults.newAdvances.Count > 0) { if (getSettingBool("AutoScreenshotAdvance")) { this.Invoke((MethodInvoker)delegate { saveScreenshot("Advance", takeScreenshot()); }); } if (copyAdvances) { foreach (object obj in readMemoryResults.newAdvances) { this.Invoke((MethodInvoker)delegate { Clipboard.SetText(obj.ToString()); }); } } readMemoryResults.newAdvances.Clear(); } if (parseMemoryResults != null && parseMemoryResults.death) { if (getSettingBool("AutoScreenshotDeath")) { this.Invoke((MethodInvoker)delegate { saveScreenshot("Death", takeScreenshot()); }); } parseMemoryResults.death = false; } if (parseMemoryResults != null) { if (parseMemoryResults.newEventMessages.Count > 0) { if (getSettingBool("EnableEventNotifications")) { foreach (Tuple<Event, string> tpl in parseMemoryResults.newEventMessages) { Event ev = tpl.Item1; Creature cr = getCreature(ev.creatureid); this.Invoke((MethodInvoker)delegate { if (!lootNotificationRich) { ShowSimpleNotification("Event in " + ev.location, tpl.Item2, cr.image); } else { ShowSimpleNotification(new SimpleTextNotification(cr.image, "Event in " + ev.location, tpl.Item2)); } }); } } parseMemoryResults.newEventMessages.Clear(); } } if (getSettingBool("LookMode") && readMemoryResults != null) { foreach (string msg in parseMemoryResults.newLooks) { string itemName = parseLookItem(msg).ToLower(); if (itemExists(itemName)) { this.Invoke((MethodInvoker)delegate { this.ExecuteCommand("item@" + itemName); }); } else if (creatureExists(itemName) || (itemName.Contains("dead ") && (itemName = itemName.Replace("dead ", "")) != null && creatureExists(itemName)) || (itemName.Contains("slain ") && (itemName = itemName.Replace("slain ", "")) != null && creatureExists(itemName))) { this.Invoke((MethodInvoker)delegate { this.ExecuteCommand("creature@" + itemName); }); } else { NPC npc = getNPC(itemName); if (npc != null) { this.Invoke((MethodInvoker)delegate { this.ExecuteCommand("npc@" + itemName); }); } } } parseMemoryResults.newLooks.Clear(); } List<string> commands = parseMemoryResults == null ? new List<string>() : parseMemoryResults.newCommands.ToArray().ToList(); commands.Reverse(); foreach (string command in commands) { this.Invoke((MethodInvoker)delegate { if (!ExecuteCommand(command, parseMemoryResults) && getSettingBool("EnableUnrecognizedNotifications")) { if (!lootNotificationRich) { ShowSimpleNotification("Unrecognized command", "Unrecognized command: " + command, tibia_image); } else { ShowSimpleNotification(new SimpleTextNotification(null, "Unrecognized command", "Unrecognized command: " + command)); } } }); } if (parseMemoryResults != null) { foreach (Tuple<Creature, List<Tuple<Item, int>>> tpl in parseMemoryResults.newItems) { Creature cr = tpl.Item1; List<Tuple<Item, int>> items = tpl.Item2; bool showNotification = false; if (getSettingBool("AlwaysShowLoot")) { // If AlwaysShowLoot is enabled, we always show a notification, as long as the creature is part of the hunts' creature list if (activeHunt.trackAllCreatures) { showNotification = true; } else { string[] creatures = activeHunt.trackedCreatures.Split('\n'); for (int i = 0; i < creatures.Length; i++) { creatures[i] = creatures[i].ToLower(); } if (creatures.Contains(cr.GetName().ToLower())) { showNotification = true; } } } foreach (Tuple<Item, int> tpl2 in items) { Item item = tpl2.Item1; bool showNotificationValue = item.GetMaxValue() >= notification_value && showNotificationsValue; bool showNotificationRatio = getSettingBool("ShowNotificationsGoldRatio") && (item.GetMaxValue() / item.capacity) >= getSettingDouble("NotificationGoldRatio"); bool showNotificationSpecific = showNotificationsSpecific && settings["NotificationItems"].Contains(item.displayname.ToLower()); if (((!showNotificationsValue || showNotificationValue) && (!getSettingBool("ShowNotificationsGoldRatio") || showNotificationRatio) && (getSettingBool("ShowNotificationsGoldRatio") || showNotificationsValue)) || showNotificationSpecific) { showNotification = true; if (getSettingBool("AutoScreenshotItemDrop")) { // Take a screenshot if Tibialyzer is set to take screenshots of valuable loot Bitmap screenshot = takeScreenshot(); if (screenshot == null) continue; // Add a notification to the screenshot SimpleLootNotification screenshotNotification = new SimpleLootNotification(cr, items); Bitmap notification = new Bitmap(screenshotNotification.Width, screenshotNotification.Height); screenshotNotification.DrawToBitmap(notification, new Rectangle(0, 0, screenshotNotification.Width, screenshotNotification.Height)); foreach (Control c in screenshotNotification.Controls) { c.DrawToBitmap(notification, new Rectangle(c.Location, c.Size)); } screenshotNotification.Dispose(); int widthOffset = notification.Width + 10; int heightOffset = notification.Height + 10; if (screenshot.Width > widthOffset && screenshot.Height > heightOffset) { using (Graphics gr = Graphics.FromImage(screenshot)) { gr.DrawImage(notification, new Point(screenshot.Width - widthOffset, screenshot.Height - heightOffset)); } } notification.Dispose(); this.Invoke((MethodInvoker)delegate { saveScreenshot("Loot", screenshot); }); } if (this.showNotifications && !lootNotificationRich) { ShowSimpleNotification(cr.displayname, cr.displayname + " dropped a " + item.displayname + ".", cr.image); } } } if (this.showNotifications && showNotification && lootNotificationRich) { this.Invoke((MethodInvoker)delegate { ShowSimpleNotification(new SimpleLootNotification(cr, items)); }); } } } return readMemoryResults != null; }