public static bool IsOnline(int ID) { SqlWrapper sql = new SqlWrapper(); DataTable dt = sql.ReadDT("SELECT * FROM characters WHERE ID = " + ID + ";"); if (dt.Rows.Count==0) { throw new Exception("Character does not exist"); } if ((Int16)dt.Rows[0]["Online"] == 1) { return true; } return false; }
public void readWaypointsfromSQL() { SqlWrapper ms = new SqlWrapper(); AOCoord m_wp; DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "waypoints WHERE ID=" + ID.ToString()); foreach (DataRow row in dt.Rows) { m_wp = new AOCoord((Single)row["X"], (Single)row["Y"], (Single)row["Z"]); Waypoints.Add(m_wp); } }
/// <summary> /// /// </summary> /// <param name="accountName"></param> /// <returns></returns> public static List<CharacterEntry> LoadCharacters(string accountName) { List<CharacterEntry> characters = new List<CharacterEntry>(); SqlWrapper ms = new SqlWrapper(); string SqlQuery = "SELECT `characters`.`ID`, `characters`.`Name`, `characters`.`playfield`, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 54) as level, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 4) as breed, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 59) as gender, (SELECT `Value` FROM `characters_stats` WHERE `characters`.`ID` = `characters_stats`.`ID` AND `Stat` = 60) as profession FROM `characters` WHERE `characters`.Username = '******'"; DataTable dt = ms.ReadDT(SqlQuery); foreach (DataRow row in dt.Rows) { CharacterEntry charentry = new CharacterEntry(); charentry.ID = (Int32)row["ID"]; charentry.Name = ((string)row["Name"]).PadRight(11, '\u0000'); charentry.playfield = (Int32)row["playfield"]; charentry.Level = (Int32)row["level"]; charentry.Breed = (Int32)row["breed"]; charentry.Gender = (Int32)row["gender"]; charentry.Profession = (Int32)row["profession"]; characters.Add(charentry); } return characters; }
/// <summary> /// Read uploaded nanos from database /// TODO: catch exceptions /// </summary> public void readUploadedNanosfromSQL() { lock (UploadedNanos) { UploadedNanos.Clear(); SqlWrapper Sql = new SqlWrapper(); DataTable dt = Sql.ReadDT("SELECT nano FROM " + getSQLTablefromDynelType() + "uploadednanos WHERE ID=" + ID.ToString()); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { AOUploadedNanos au = new AOUploadedNanos(); au.Nano = (Int32)row["Nano"]; UploadedNanos.Add(au); } } } }
/// <summary> /// Read nanos from database /// TODO: catch exceptions /// </summary> public void readNanosfromSQL() { lock (ActiveNanos) { SqlWrapper ms = new SqlWrapper(); { AONanos m_an; DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "activenanos WHERE ID=" + ID.ToString()); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { m_an = new AONanos(); m_an.ID = (Int32)row["nanoID"]; m_an.NanoStrain = (Int32)row["strain"]; ActiveNanos.Add(m_an); } } } } }
/// <summary> /// Read timers from database /// TODO: catch exceptions /// </summary> public void readTimersfromSQL() { lock (Timers) { SqlWrapper ms = new SqlWrapper(); TimeSpan ts; DateTime n = DateTime.Now; AOTimers m_timer; byte[] blob = new byte[10240]; Timers.Clear(); ms.SqlRead("SELECT * FROM " + getSQLTablefromDynelType() + "timers WHERE ID=" + ID.ToString() + ";"); DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "timers WHERE ID=" + ID.ToString() + ";"); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { ts = TimeSpan.FromSeconds((Int32)row["timespan"]); m_timer = new AOTimers(); m_timer.Timestamp = DateTime.Now + ts; m_timer.Strain = (Int32)row["strain"]; m_timer.Function = new AOFunctions(); blob = (byte[])row[3]; m_timer.Function.ReadFunctionfromBlob(ref blob, 0); } } } }
public void fillInventory() { InventoryEntries ie; List<ShopInv> shopinvs = new List<ShopInv>(); ShopInv temp; int place = 0; int iminql = 0; int imaxql = 0; Random r = new Random(); string like = ""; SqlWrapper Sql = new SqlWrapper(); DataTable dt = Sql.ReadDT("SELECT * from vendortemplate where HASH='" + HASH + "'"); foreach (DataRow row in dt.Rows) { temp = new ShopInv(); temp.HASH = (string)row["ShopInvHash"]; temp.minQL = (Int32)row["minQL"]; temp.maxQL = (Int32)row["maxQL"]; shopinvs.Add(temp); if (like != "") { like += "OR "; } like += "HASH LIKE '%" + temp.HASH + "%' "; } if (like != "") { Inventory.Clear(); dt = Sql.ReadDT("SELECT * from shopinventorytemplates where " + like); string thishash; foreach (DataRow row in dt.Rows) { thishash = (string)row["Hash"]; foreach (ShopInv si in shopinvs) { if (si.HASH == thishash) { iminql = (Int32)row["minql"]; imaxql = (Int32)row["maxql"]; // Dont add Items that are not between si.minQL and si.maxQL if ((iminql <= si.maxQL) && (imaxql >= si.minQL)) { ie = new InventoryEntries(); ie.Container = 104; ie.Placement = place++; ie.Item.lowID = (Int32)row["lowid"]; ie.Item.highID = (Int32)row["highid"]; ie.Item.multiplecount = (Int32)row["multiplecount"]; ie.Item.Nothing = 0; ie.Item.Quality = Math.Min(Math.Max(Convert.ToInt32(r.Next(si.minQL, si.maxQL)), iminql), imaxql); Inventory.Add(ie); } } } } } }
/// <summary> /// Read inventory from database /// TODO: catch exceptions /// </summary> public void readInventoryfromSQL() { lock (Inventory) { SqlWrapper ms = new SqlWrapper(); { InventoryEntries m_inv; Inventory.Clear(); DataTable dt = ms.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "inventory WHERE ID=" + ID.ToString() + " AND container=104 ORDER BY placement ASC;"); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { m_inv = new InventoryEntries(); m_inv.Container = (Int32)row["container"]; m_inv.Placement = (Int32)row["placement"]; m_inv.Item.highID = (Int32)row["highid"]; m_inv.Item.lowID = (Int32)row["lowid"]; m_inv.Item.Quality = (Int32)row["quality"]; m_inv.Item.multiplecount = (Int32)row["multiplecount"]; m_inv.Item.Type = (Int32)row["type"]; m_inv.Item.Instance = (Int32)row["instance"]; m_inv.Item.flags = (Int32)row["flags"]; Inventory.Add(m_inv); } } } } }
/// <summary> /// Read social tab from database /// TODO: catch exceptions /// </summary> public void ReadSocialTab() { lock (SocialTab) { SqlWrapper ms = new SqlWrapper(); DataTable dt = ms.ReadDT("SELECT * FROM socialtab WHERE charid=" + ID); if (dt.Rows.Count > 0) { SocialTab.Clear(); SocialTab.Add(0, (Int32)dt.Rows[0][1]); SocialTab.Add(1, (Int32)dt.Rows[0][2]); SocialTab.Add(2, (Int32)dt.Rows[0][3]); SocialTab.Add(3, (Int32)dt.Rows[0][4]); SocialTab.Add(4, (Int32)dt.Rows[0][5]); SocialTab.Add(38, (Int32)dt.Rows[0][6]); SocialTab.Add(1004, (Int32)dt.Rows[0][7]); SocialTab.Add(1005, (Int32)dt.Rows[0][8]); SocialTab.Add(64, (Int32)dt.Rows[0][9]); SocialTab.Add(32, (Int32)dt.Rows[0][10]); SocialTab.Add(1006, (Int32)dt.Rows[0][11]); SocialTab.Add(1007, (Int32)dt.Rows[0][12]); } else { // Nothing loaded, lets go with zeros SocialTab.Add(0, 0); SocialTab.Add(1, 0); SocialTab.Add(2, 0); SocialTab.Add(3, 0); SocialTab.Add(4, 0); SocialTab.Add(38, 0); SocialTab.Add(1004, 0); SocialTab.Add(1005, 0); SocialTab.Add(64, 0); SocialTab.Add(32, 0); SocialTab.Add(1006, 0); SocialTab.Add(1007, 0); } } }
public Item(int ID) { ItemAttributes = new List<AOItemAttribute>(); ItemEvents = new List<AOEvents>(); SqlWrapper ms = new SqlWrapper(); DataTable dt = ms.ReadDT("SELECT * FROM items WHERE AOID='" + ID.ToString() + "'"); if (dt.Rows.Count > 0) { AOID = (Int32)dt.Rows[0]["AOID"]; isnano = (Int32)dt.Rows[0]["IsNano"]; QL = (Int32)dt.Rows[0]["QL"]; itemtype = (Int32)dt.Rows[0]["ItemType"]; byte[] blob = (byte[])dt.Rows[0]["EFR"]; int blobc = 0; // Read Attack Stat/Values int cc = BitConverter.ToInt32(blob, blobc); AOItemAttribute mm_a; blobc += 4; while (cc > 0) { mm_a = new AOItemAttribute(); mm_a.Stat = BitConverter.ToInt32(blob, blobc); blobc += 4; mm_a.Value = BitConverter.ToInt32(blob, blobc); blobc += 4; attack.Add(mm_a); cc--; } // Read Defend Stat/Values cc = BitConverter.ToInt32(blob, blobc); blobc += 4; while (cc > 0) { mm_a = new AOItemAttribute(); mm_a.Stat = BitConverter.ToInt32(blob, blobc); blobc += 4; mm_a.Value = BitConverter.ToInt32(blob, blobc); blobc += 4; defend.Add(mm_a); cc--; } // Read Item Attributes int c = BitConverter.ToInt32(blob, blobc); blobc += 4; AOItemAttribute tempa; while (c > 0) { tempa = new AOItemAttribute(); tempa.Stat = BitConverter.ToInt32(blob, blobc); blobc += 4; tempa.Value = BitConverter.ToInt32(blob, blobc); blobc += 4; ItemAttributes.Add(tempa); c--; } // Read Item Events AOEvents tempe; c = BitConverter.ToInt32(blob, blobc); blobc += 4; while (c > 0) { tempe = new AOEvents(); blobc = tempe.readEventfromBlob(ref blob, blobc); ItemEvents.Add(tempe); c--; } /* // Read Item Actions AOActions tempac; c = BitConverter.ToInt32(blob, blobc); blobc += 4; while (c > 0) { tempac = new AOActions(); blobc = tempac.readActionfromBlob(ref blob, blobc); c--; } */ } else { // Setting QL to -1 as "invalid item" flag QL = -1; } }
public void LoadTemplate(string hash, uint level) { SqlWrapper ms = new SqlWrapper(); DataTable dt = ms.ReadDT("SELECT * FROM mobtemplate where hash='" + hash + "'"); if (dt.Rows.Count>0) { startup = true; level = (UInt32)Math.Min(Math.Max(level,(Int32)dt.Rows[0]["MinLvl"]),(Int32)dt.Rows[0]["MaxLvl"]); Stats.Level.Set(level); Stats.Side.Set((Int32)dt.Rows[0]["Side"]); Stats.Breed.Set((Int32)dt.Rows[0]["Breed"]); Stats.Fatness.Set((Int32)dt.Rows[0]["Fatness"]); Stats.Sex.Set((Int32)dt.Rows[0]["Sex"]); Stats.Race.Set((Int32)dt.Rows[0]["Race"]); Name = (string)dt.Rows[0]["Name"]; Stats.Flags.Set((Int32)dt.Rows[0]["Flags"]); Stats.NPCFamily.Set((Int32)dt.Rows[0]["NPCFamily"]); Stats.Health.Set((Int32)dt.Rows[0]["Health"]); Stats.Life.Set((Int32)dt.Rows[0]["Health"]); Stats.MonsterData.Set((Int32)dt.Rows[0]["Monsterdata"]); Stats.MonsterScale.Set((Int32)dt.Rows[0]["MonsterScale"]); AOTextures m_t = new AOTextures(0, (Int32)dt.Rows[0]["TextureHands"]); Textures.Add(m_t); m_t = new AOTextures(1, (Int32)dt.Rows[0]["TextureBody"]); Textures.Add(m_t); m_t = new AOTextures(2, (Int32)dt.Rows[0]["TextureFeet"]); Textures.Add(m_t); m_t = new AOTextures(3, (Int32)dt.Rows[0]["TextureArms"]); Textures.Add(m_t); m_t = new AOTextures(4, (Int32)dt.Rows[0]["TextureLegs"]); Textures.Add(m_t); startup = false; } }
// New one with id AND playfield as filter public new void readTexturesfromSQL() { SqlWrapper ms = new SqlWrapper(); AOTextures m_tex; Textures.Clear(); DataTable dt = ms.ReadDT("SELECT textures0, textures1, textures2, textures3, textures4 from " + getSQLTablefromDynelType() + " WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString()); if (dt.Rows.Count > 0) { m_tex = new AOTextures(0, (Int32)dt.Rows[0]["textures0"]); Textures.Add(m_tex); m_tex = new AOTextures(1, (Int32)dt.Rows[0]["textures1"]); Textures.Add(m_tex); m_tex = new AOTextures(2, (Int32)dt.Rows[0]["textures2"]); Textures.Add(m_tex); m_tex = new AOTextures(3, (Int32)dt.Rows[0]["textures3"]); Textures.Add(m_tex); m_tex = new AOTextures(4, (Int32)dt.Rows[0]["textures4"]); Textures.Add(m_tex); } }
public void readMeshsfromSQL() { SqlWrapper Sql = new SqlWrapper(); Meshs.Clear(); AOMeshs m_m; DataTable dt = Sql.ReadDT("SELECT * from " + getSQLTablefromDynelType() + "meshs WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString()); foreach (DataRow row in dt.Rows) { m_m = new AOMeshs(); m_m.Position = (Int32)row["meshvalue1"]; m_m.Mesh = (Int32)row["meshvalue2"]; m_m.OverrideTexture = (Int32)row["meshvalue3"]; } }
public void readWeaponpairsfromSQL() { AOWeaponpairs m_wp; SqlWrapper Sql = new SqlWrapper(); Weaponpairs.Clear(); DataTable dt = Sql.ReadDT("SELECT * FROM " + getSQLTablefromDynelType() + "weaponpairs WHERE ID=" + ID.ToString() + " AND playfield=" + PlayField.ToString()); foreach (DataRow row in dt.Rows) { m_wp = new AOWeaponpairs(); m_wp.value1 = (Int32)row["value1"]; m_wp.value2 = (Int32)row["value2"]; m_wp.value3 = (Int32)row["value3"]; m_wp.value4 = (Int32)row["value4"]; Weaponpairs.Add(m_wp); } }
/// <summary> /// Read bank account from database /// TODO: catch exceptions /// </summary> public void readBankContentsfromSQL() { lock (Bank) { SqlWrapper ms = new SqlWrapper(); Bank.Clear(); DataTable dt = ms.ReadDT("SELECT * FROM bank WHERE charID=" + ID.ToString() + " ORDER BY InventoryID ASC"); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { AOItem item = new AOItem(); item.flags = (Int32)row["InventoryID"]; item.lowID = (Int32)row["lowID"]; item.highID = (Int32)row["highID"]; item.multiplecount = (Int32)row["Amount"]; item.Quality = (Int32)row["QL"]; item.Type = (Int32)row["Type"]; item.Instance = (Int32)row["instance"]; byte[] statsblob = (byte[])row[8]; int counter = 0; long bloblen = statsblob.Length; while (counter < bloblen - 1) { AOItemAttribute tempItemAttribute = new AOItemAttribute(); tempItemAttribute.Stat = BitConverter.ToInt32(statsblob, counter); tempItemAttribute.Value = BitConverter.ToInt32(statsblob, counter + 4); counter += 8; item.Stats.Add(tempItemAttribute); } Bank.Add(item); } } } }
/// <summary> /// Read special stats (GM, Account, Expansions etc) /// TODO: catch exceptions /// </summary> public void ReadSpecialStatsfromSQL() { lock (this) { SqlWrapper sql = new SqlWrapper(); DataTable dt = sql.ReadDT("SELECT `ID`, `Expansions`, `AccountFlags`, `GM` FROM `login` WHERE `Username` = (SELECT `Username` FROM `characters` WHERE `ID` = " + ID + ");"); if (dt.Rows.Count > 0) { // Stat 607 is PlayerID Stats.SetBaseValue(607, (UInt32)(Int32)dt.Rows[0][0]); // Stat 389 is Expansion Stats.SetBaseValue(389, UInt32.Parse((string)dt.Rows[0][1])); // Stat 660 is AccountFlags Stats.SetBaseValue(660, (UInt32)(Int32)dt.Rows[0][2]); // Stat 215 is GmLevel Stats.SetBaseValue(215, (UInt32)(Int32)dt.Rows[0][3]); } } }
public void Execute(Client cli, Statel parent, int Eventnumber) { switch (FunctionNumber) { // Hit case 53002: { int statnum = Int32.Parse(Arguments.ElementAt(0)); int min = Int32.Parse(Arguments.ElementAt(1)); int max = Int32.Parse(Arguments.ElementAt(2)); if (min > max) { min = max; max = Int32.Parse(Arguments.ElementAt(1)); } Random rnd = new Random(); cli.Character.Stats.Set(statnum, (uint)(cli.Character.Stats.Get(statnum) + rnd.Next(min, max))); break; } // Lineteleport // case 53059: { #if DEBUG Console.WriteLine("Function 53059 (LineTeleport)"); Console.WriteLine("Object: " + parent.Type + ":" + parent.Instance); #endif uint arg2 = UInt32.Parse(Arguments.ElementAt(1)); // Linesegment and playfield (lower word) arg2 = arg2 >> 16; int to_pf = Int32.Parse(Arguments.ElementAt(2)); coordheading a = FindEntry(to_pf, (Int32)arg2); if (a.Coordinates.x != -1) { cli.Teleport(a.Coordinates, a.Heading, to_pf); break; } break; } case 53082: // Teleport Proxy { Identity pfinstance = new Identity(); pfinstance.Type = Int32.Parse(Arguments.ElementAt(0)); pfinstance.Instance = Int32.Parse(Arguments.ElementAt(1)); Identity id2 = new Identity(); id2.Type = Int32.Parse(Arguments.ElementAt(2)); id2.Instance = Int32.Parse(Arguments.ElementAt(3)); Identity id3 = new Identity(); id3.Type = Int32.Parse(Arguments.ElementAt(4)); id3.Instance = Int32.Parse(Arguments.ElementAt(5)); SqlWrapper ms = new SqlWrapper(); DataTable dt = ms.ReadDT("SELECT * from proxydestinations WHERE playfield=" + pfinstance.Instance); if (dt.Rows.Count == 0) { #if DEBUG cli.SendChatText("No Destination found for playfield " + pfinstance.Instance); cli.SendChatText("Statel " + parent.Type.ToString() + ":" + parent.Instance.ToString() + " handling " + Eventnumber.ToString() + " Function " + FunctionNumber.ToString() + " " + cli.Character.Coordinates.ToString()); foreach (string arg in Arguments) { cli.SendChatText("Argument: " + arg); } #endif } else { AOCoord a = new AOCoord(); a.x= (Single)dt.Rows[0][1]; a.y= (Single)dt.Rows[0][2]; a.z = (Single)dt.Rows[0][3]; Quaternion q = new Quaternion(0, 0, 0, 0); q.x = (Single)dt.Rows[0][4]; q.y = (Single)dt.Rows[0][5]; q.z = (Single)dt.Rows[0][6]; q.w = (Single)dt.Rows[0][7]; cli.TeleportProxy(a, q, pfinstance.Instance, pfinstance, 1, (Int32)parent.Instance, id2, id3); } break; } case 53092: // Bank { Packets.BankOpen.Send(cli); break; } case 53083: // Teleport Proxy 2 { Identity pfinstance = new Identity(); pfinstance.Type = Int32.Parse(Arguments.ElementAt(0)); pfinstance.Instance = Int32.Parse(Arguments.ElementAt(1)); int gs = 1; int sg = 0; Identity R = new Identity(); R.Type = Int32.Parse(Arguments.ElementAt(2)); R.Instance = Int32.Parse(Arguments.ElementAt(3)); Identity dest = new Identity(); dest.Type = Int32.Parse(Arguments.ElementAt(4)); dest.Instance = Int32.Parse(Arguments.ElementAt(5)); int to_pf = (Int32)((UInt32)(dest.Instance & 0xffff)); int arg2 = (Int32)((UInt32)(dest.Instance >> 16)); coordheading a = FindEntry(to_pf, arg2); if (a.Coordinates.x != -1) { cli.TeleportProxy(a.Coordinates, a.Heading, to_pf, pfinstance, gs, sg, R, dest); break; } break; } // Teleport case 53016: { Quaternion q = new Quaternion(0, 1, 0, 0); AOCoord a = new AOCoord(); a.x = Int32.Parse(Arguments.ElementAt(0)); a.y = Int32.Parse(Arguments.ElementAt(1)); a.z = Int32.Parse(Arguments.ElementAt(2)); cli.Teleport(a, q, Int32.Parse(Arguments.ElementAt(3))); break; } case 53044: { string text = Arguments.ElementAt(0); Packets.SystemText.Send(cli, text, 0); break; } default: { #if DEBUG cli.SendChatText("Statel " + parent.Type.ToString() + ":" + parent.Instance.ToString() + " handling " + Eventnumber.ToString() + " Function " + FunctionNumber.ToString() + " " + cli.Character.Coordinates.ToString()); foreach (string arg in Arguments) { cli.SendChatText("Argument: " + arg); } #endif break; } } }
/// <summary> /// Read org and character names from DB /// </summary> public bool ReadNames() { lock (this) { SqlWrapper Sql = new SqlWrapper(); DataTable dt = Sql.ReadDT("SELECT `Name`, `FirstName`, `LastName` FROM " + getSQLTablefromDynelType() + " WHERE ID = '" + ID + "' LIMIT 1"); if (dt.Rows.Count == 1) { Name = (string)dt.Rows[0][0]; FirstName = (string)dt.Rows[0][1]; LastName = (string)dt.Rows[0][2]; } // Read stat# 5 (Clan) - OrgID from character stats table dt = Sql.ReadDT("SELECT `Value` FROM " + getSQLTablefromDynelType() + "_stats WHERE ID = " + ID + " AND Stat = 5 LIMIT 1"); if (dt.Rows.Count == 1) { _orgId = (Int32)dt.Rows[0][0]; } if (_orgId == 0) { orgName = string.Empty; } else { List<GuildEntry> m_Guild = GuildInfo.GetGuildInfo(_orgId); foreach (GuildEntry ge in m_Guild) { orgName = ge.Name.ToString(); } } return true; } }
public static int CacheAllStatels() { SqlWrapper ms = new SqlWrapper(); int count = 0; DataTable dt = ms.ReadDT("SELECT * FROM statels ORDER BY id ASC"); dt_args = ms.ReadDT("SELECT * FROM statel_function_arguments ORDER BY statel_id, event_id, function_id, attrid ASC"); dt_events = ms.ReadDT("SELECT * FROM statel_events ORDER BY statel_id, eventid ASC"); dt_reqs = ms.ReadDT("SELECT * FROM statel_function_reqs ORDER BY statel_id, event_id, function_id, reqid ASC"); dt_functions = ms.ReadDT("SELECT * FROM statel_functions ORDER BY statel_id, event_id, functionid ASC"); int maxcount = 0; ms.sqlclose(); List<Statel> temp; maxcount = dt.Rows.Count; foreach (DataRow dr in dt.Rows) { int pf = (Int32)dr[0]; if (Statelppf.ContainsKey(pf) == false) { temp = new List<Statel>(); Statelppf.Add(pf, temp); temp = new List<Statel>(); StatelppfonEnter.Add(pf, temp); temp = new List<Statel>(); StatelppfonUse.Add(pf, temp); } Statel tempstatel = new Statel(); tempstatel.Coordinates.x = (Single)dr[5]; tempstatel.Coordinates.y = (Single)dr[6]; tempstatel.Coordinates.z = (Single)dr[7]; tempstatel.Type = (Int32)dr[1]; tempstatel.Instance = (UInt32)dr[2]; tempstatel.PlayField = (Int32)dr[0]; tempstatel.Template = (Int32)dr[3]; tempstatel.LoadEvents((Int32)dr[4]); Statelppf[pf].Add(tempstatel); foreach (Statel_Event e in tempstatel.Events) { if ((e.EventNumber == ItemHandler.eventtype_onenter) || (e.EventNumber == ItemHandler.eventtype_ontargetinvicinity)) { StatelppfonEnter[pf].Add(tempstatel); } if (e.EventNumber == ItemHandler.eventtype_onuse) { StatelppfonUse[pf].Add(tempstatel); } } count++; if ((count % 10) == 0) { Console.Write("\rReading statels: " + count.ToString() + "/" + maxcount.ToString() + " \r"); } } ms.sqlclose(); Console.Write(" \r"); dt_args.Clear(); dt_events.Clear(); dt_functions.Clear(); dt_reqs.Clear(); dt_args = null; dt_events = null; dt_functions = null; dt_reqs = null; dt.Clear(); return count; }
public Tradeskill(Client cli, int src_loc, int tgt_loc) { Cli = cli; SourcePlacement = src_loc; TargetPlacement = tgt_loc; Source = cli.Character.getInventoryAt(src_loc).Item; Target = cli.Character.getInventoryAt(tgt_loc).Item; SourceID = Source.highID; TargetID = Target.highID; isTradeskill = false; SqlWrapper wrapper = new SqlWrapper(); DataTable dt = wrapper.ReadDT("SELECT * FROM tradeskill WHERE ID1 = " + Source.highID + " AND ID2 = " + Target.highID + ";"); DataRowCollection drc = dt.Rows; if (drc.Count > 0) { isTradeskill = true; SourceName = (string)drc[0][3]; TargetName = (string)drc[0][4]; ResultName = (string)drc[0][5]; ResultLID = (int)drc[0][6]; ResultHID = (int)drc[0][7]; RangePercent = (int)drc[0][8]; DeleteFlag = (int)drc[0][9]; FirstSkill = (int)drc[0][10]; FirstSkillPercent = (int)drc[0][11]; FirstSkillPerBump = (int)drc[0][12]; SecondSkill = (int)drc[0][13]; SecondSkillPercent = (int)drc[0][14]; SecondSkillPerBump = (int)drc[0][15]; MaxBump = (int)drc[0][16]; MinXP = (int)drc[0][17]; MaxXP = (int)drc[0][18]; bDeleteSource = ((DeleteFlag & 1) == 1); bDeleteTarget = (((DeleteFlag >> 1) & 1) == 1); MinQL = Target.Quality; SetMaxQL(); if (FirstSkill != 0) { FirstSkillRequirement = (int)Math.Ceiling((decimal)FirstSkillPercent / 100M * (decimal)Target.Quality); FirstSkillValue = Cli.Character.Stats.GetStatbyNumber(FirstSkill).Value; FirstSkillName = StatsList.GetStatName(FirstSkill); } if (SecondSkill != 0) { SecondSkillRequirement = (int)Math.Ceiling((decimal)SecondSkillPercent / 100M * (decimal)Target.Quality); SecondSkillValue = Cli.Character.Stats.GetStatbyNumber(SecondSkill).Value; SecondSkillName = StatsList.GetStatName(SecondSkill); } } }
public bool LoadTemplate(string hash) { SqlWrapper Sql = new SqlWrapper(); DataTable dt = Sql.ReadDT("SELECT * from vendortemplate WHERE HASH='" + hash + "'"); if (dt.Rows.Count > 0) { TemplateID = (Int32)dt.Rows[0]["itemtemplate"]; Name = (string)dt.Rows[0]["Name"]; ItemHandler.Item it = new ItemHandler.Item(TemplateID); foreach (AOItemAttribute ia in it.ItemAttributes) { this.Stats.Set(ia.Stat, (uint)ia.Value); } Sql.sqlclose(); fillInventory(); return true; } return false; }