public override void WriteXml(XmlWriter writer) { writer.WriteAttributeString("NpcEntry", NpcEntry.ToString()); writer.WriteAttributeString("X", loc.X.ToString()); writer.WriteAttributeString("Y", loc.Y.ToString()); writer.WriteAttributeString("Z", loc.Z.ToString()); }
public static void SetDefaultChatpoint(User user, NpcEntry npc, int chatpointId) { if (Database.HasNpcStartpointSet(user.Id, npc.Id)) { Database.SetNpcStartPoint(user.Id, npc.Id, chatpointId); } else { Database.AddNpcStartPoint(user.Id, npc.Id, chatpointId); } }
public static int GetDefaultChatpoint(User user, NpcEntry npc) { if (Database.HasNpcStartpointSet(user.Id, npc.Id)) { return(Database.GetNpcStartPoint(user.Id, npc.Id)); } else { return(0); } }
public override void WriteXml(XmlWriter writer) { writer.WriteAttributeString("NpcEntry", NpcEntry.ToString()); writer.WriteAttributeString("X", loc.X.ToString()); writer.WriteAttributeString("Y", loc.Y.ToString()); writer.WriteAttributeString("Z", loc.Z.ToString()); writer.WriteAttributeString("ItemID", ItemID); writer.WriteAttributeString("Count", Count.ToString()); writer.WriteAttributeString("SellItemType", SellItemType.ToString()); }
public static NpcChat GetNpcChatpoint(NpcEntry npc, int chatpointId) { foreach (Npc.NpcChat chatpoint in npc.Chatpoints) { if (chatpoint.Id == chatpointId) { return(chatpoint); } } return(npc.Chatpoints[0]); }
public static NpcReply GetNpcReply(NpcEntry npc, int id) { foreach (NpcChat chatpoint in npc.Chatpoints) { foreach (NpcReply reply in chatpoint.Replies) { if (reply.Id == id) { return(reply); } } } throw new KeyNotFoundException("Npc reply with " + id + " not found!"); }
public override void WriteXml(XmlWriter writer) { writer.WriteAttributeString("ItemID", ItemID); writer.WriteAttributeString("Amount", Amount.ToString()); writer.WriteAttributeString("Bank", Bank.ToString()); writer.WriteAttributeString("GetItemfromBankType", GetItemfromBankType.ToString()); writer.WriteAttributeString("NpcEntry", NpcEntry.ToString()); writer.WriteAttributeString("AutoFindBank", AutoFindBank.ToString()); writer.WriteAttributeString("X", loc.X.ToString()); writer.WriteAttributeString("Y", loc.Y.ToString()); writer.WriteAttributeString("Z", loc.Z.ToString()); writer.WriteAttributeString("MinFreeBagSlots", MinFreeBagSlots.ToString()); writer.WriteAttributeString("WithdrawAdditively", WithdrawAdditively.ToString()); }
public bool UseNpc(int npcId, int actionIndex) { if (_account.IsBusy) { return(false); } // In case the actionIndex is negative actionIndex--; if (actionIndex < 0) { return(false); } NpcEntry npc = null; var npcs = _account.Game.Map.Npcs; // In case the npcId is negative if (npcId < 0) { int index = (npcId * -1) - 1; // Check if the index is invalid if (npcs.Count() <= index) { return(false); } npc = npcs.ElementAt(index); } else { npc = npcs.FirstOrDefault(n => n.NpcId == npcId); } // If the npc is not found if (npc == null) { return(false); } // Check if the npc has the action that we want if (npc.Data.Actions.Count <= actionIndex) { return(false); } _account.Network.SendMessage(new NpcGenericActionRequestMessage(npc.Id, (uint)npc.Data.Actions[actionIndex], _account.Game.Map.Id)); return(true); }
public override void WriteXml(XmlWriter writer) { writer.WriteAttributeString("Amount", Amount.ToString()); writer.WriteAttributeString("ItemID", ItemID); writer.WriteAttributeString("NpcEntry", NpcEntry.ToString()); writer.WriteAttributeString("GuildTab", GuildTab.ToString()); writer.WriteAttributeString("AutoFindBank", AutoFindBank.ToString()); writer.WriteAttributeString("UseCategory", UseCategory.ToString()); writer.WriteAttributeString("Category", Category.ToString()); writer.WriteAttributeString("SubCategoryType", SubCategory.GetType().Name); writer.WriteAttributeString("SubCategory", SubCategory.ToString()); writer.WriteAttributeString("Bank", Bank.ToString()); writer.WriteAttributeString("X", loc.X.ToString()); writer.WriteAttributeString("Y", loc.Y.ToString()); writer.WriteAttributeString("Z", loc.Z.ToString()); }
public static void AddNpc(NpcEntry npc) { npcList.Add(npc); }
private void ParseNPC() { Program.PhantomNewTab("http://aiondatabase.net/en/", 1); List <string> npcs_id = XDocument.Load(FilePath).Root.Element("spawn_map").Elements("spawn") .Select(elem => elem.Attribute("npc_id").Value.ToString()).ToList(); List <string> alreadyParsedID = new List <string>(); XDocument npctemplate = string.IsNullOrEmpty(XNPCStaticData) ? null : XDocument.Load(XNPCStaticData); Stopwatch timer = new Stopwatch(); timer.Start(); int index = 1; foreach (string id in npcs_id) { if (!alreadyParsedID.Contains(id)) { alreadyParsedID.Add(id); NpcEntry npc = new NpcEntry(); npc.Url = $"http://aiondatabase.net/en/npc/{id}/"; npc.ID = int.Parse(id); if (npctemplate != null) { XElement npct = npctemplate.Root.Elements("npc_template") .FirstOrDefault(elem => elem.Attribute("npc_id") != null && elem.Attribute("npc_id").Value == id); if (npct != null) { try { if (int.TryParse(npct.Attribute("level").Value, out int level)) { npc.Level = level; } switch (npct.Attribute("rating").Value) { case "NORMAL": npc.Grade = NPCGrade.NORMAL; break; case "ELITE": npc.Grade = NPCGrade.ELITE; break; case "HERO": npc.Grade = NPCGrade.HEROIC; break; case "LEGENDARY": npc.Grade = NPCGrade.LEGENDARY; break; } npc.Name = npct.Attribute("name").Value; switch (npct.Attribute("race").Value) { case "ELYOS": npc.Race = NPCRace.ELYOS; break; case "ASMODIANS": npc.Race = NPCRace.ASMO; break; default: npc.Race = NPCRace.BALAUR; break; } } catch { } npc.Info(index); npct = null; } } else { Trace.WriteLine($"\n{index}. {npc.ID}\n"); } npc.GetDrop("./alparse/npc_drop/" + FileName); index++; } } npctemplate = null; timer.Stop(); Trace.WriteLine("\nParsed " + FileName + " in " + timer.Elapsed.ToString("hh\\:mm\\.ss")); }
public ItemNpcParser(NpcEntry npc) { NPC = npc; ParseItem(); }
private void ParseNPC() { Program.PhantomNewTab(Url, 1); // Reset table settings Program.Driver.FindElementByXPath("//*[@id=\"NpcTable_wrapper\"]/div[1]/div[2]/div/a").Click(); // Wait if table is loading, Quit if table is empty while (Program.Driver.FindElementByXPath("//*[@id=\"NpcTable\"]/tbody/tr/td").Displayed) { if (Program.Driver.FindElementByXPath("//*[@id=\"NpcTable\"]/tbody/tr/td").Text == "No data available in table") { Trace.WriteLine("\nNo data available in table."); Thread.Sleep(2000); Program.Main(); } else { Thread.Sleep(500); } } HtmlDocument doc = new HtmlDocument(); int npcs_size = TableUtility.Count(Program.Driver, "//*[@id=\"NpcTable_info\"]"); NpcEntry[] npcs = new NpcEntry[npcs_size]; // Sort by ID Program.Driver.ExecuteScript("document.evaluate(\"//*[@id=\\\"NpcTable\\\"]/thead/tr/th[1]\"," + " document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();"); // Set the table size to 50 Program.Driver.ExecuteScript("document.getElementsByTagName(\"option\")[1]" + ".setAttribute(\"value\",\"50\");"); Program.Driver.FindElementByXPath("//*[@id=\"NpcTable_length\"]/label/select").Click(); Program.Driver.FindElementByXPath("//*[@id=\"NpcTable_length\"]/label/select/option[2]").Click(); // Click on Page 1 Program.Driver.FindElementByXPath("//*[@id=\"NpcTable_paginate\"]/ul/li[2]/a").Click(); int file_index = 1; Stopwatch timer = new Stopwatch(); timer.Start(); int validNpcIndex = 0; for (int item = 0; item < npcs_size;) { doc.LoadHtml(File.ReadAllText(Program.SaveHTML(file_index++.ToString()))); HtmlNode table = doc.DocumentNode.SelectSingleNode("//*[@id=\"NpcTable\"]"); for (int tr = 0; tr < 50; tr++) { try { string tableXPath = ""; if (table != null && doc.DocumentNode.SelectSingleNode( table.XPath + "/tbody/tr[" + (tr + 1) + "]/td[1]") != null) { tableXPath = table.XPath; } else { throw new Exception("{EOF}"); } NPCRace race = TableUtility.ParseRace(doc, tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[3]/div"); int id = TableUtility.ParseText <int>(doc.DocumentNode.SelectSingleNode(tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[1]").InnerText); NPCGrade grade = TableUtility.ParseGrade(TableUtility.ParseText <NPCGrade>( doc.DocumentNode.SelectSingleNode(tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[6]").InnerText)); string name = ""; string url = ""; if (race == NPCRace.BALAUR) { name = TableUtility.ParseText <string>(doc.DocumentNode.SelectSingleNode( tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[3]/a/b").InnerText); url = TableUtility.ParseUrl(TableUtility.ParseText <string>( doc.DocumentNode.SelectSingleNode(tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[3]/a").GetAttributeValue("href", ""))); } else { name = TableUtility.ParseText <string>(doc.DocumentNode.SelectSingleNode(tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[3]/div/a/b").InnerText); url = TableUtility.ParseUrl(TableUtility.ParseText <string>( doc.DocumentNode.SelectSingleNode(tableXPath + "/tbody/tr[" + (tr + 1) + "]/td[3]/div/a").GetAttributeValue("href", ""))); } if (validNpcIndex > 0 && npcs[validNpcIndex - 1].ID == id) { throw new Exception("{Duplicate ID}"); } npcs[validNpcIndex] = new NpcEntry(); npcs[validNpcIndex].Race = race; npcs[validNpcIndex].Name = name; npcs[validNpcIndex].Url = url; npcs[validNpcIndex].ID = id; npcs[validNpcIndex].Grade = grade; npcs[validNpcIndex].Info(item + 1); npcs[validNpcIndex].GetDrop(Program.LoadADBXName(Url, UrlName)); validNpcIndex++; } catch /*(Exception e)*/ { //Trace.WriteLine(e.Message); } finally { item++; } } // Click on Next Page Program.Driver.FindElementByXPath("//*[@id=\"NpcTable_next\"]/a").Click(); } timer.Stop(); Trace.WriteLine("\nParsed " + UrlName + " in " + timer.Elapsed.ToString("hh\\:mm\\.ss")); }