private static Mount createMount(SQLiteDataReader reader) { if (!reader.Read()) { return null; } Mount mount = new Mount(); mount.permanent = true; mount.id = reader.GetInt32(0); mount.title = reader.GetString(1); mount.name = reader.GetString(2); int tameitem = reader.IsDBNull(3) ? DATABASE_NULL : reader.GetInt32(3); if (tameitem > 0) mount.tameitemid = tameitem; else mount.tameitemid = -1; int tamecreature = reader.IsDBNull(4) ? DATABASE_NULL : reader.GetInt32(4); if (tamecreature > 0) mount.tamecreatureid = tamecreature; else mount.tamecreatureid = -1; mount.speed = reader.GetInt32(5); mount.tibiastore = reader.GetBoolean(6); mount.image = Image.FromStream(reader.GetStream(7)); return mount; }
private static NPC createNPC(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } NPC npc = new NPC(); npc.permanent = true; npc.id = reader.GetInt32(0); npc.name = reader["name"].ToString(); npc.city = reader["city"].ToString(); if (!reader.IsDBNull(3) && !reader.IsDBNull(4) && !reader.IsDBNull(5)) { npc.pos.x = reader.GetInt32(3); npc.pos.y = reader.GetInt32(4); npc.pos.z = reader.GetInt32(5); } npc.image = Image.FromStream(reader.GetStream(6)); npc.job = reader.IsDBNull(7) ? "" : reader.GetString(7); if (npc.image.RawFormat.Guid == ImageFormat.Gif.Guid) { int frames = npc.image.GetFrameCount(FrameDimension.Time); if (frames == 1) { Bitmap new_bitmap = new Bitmap(npc.image); new_bitmap.MakeTransparent(); npc.image.Dispose(); npc.image = new_bitmap; } } // special case for rashid: change location based on day of the week if (npc != null && npc.name == "Rashid") { command = new SQLiteCommand(String.Format("SELECT city, x, y, z FROM RashidPositions WHERE day='{0}'", DateTime.Now.DayOfWeek.ToString()), mainForm.conn); reader = command.ExecuteReader(); if (reader.Read()) { npc.city = reader["city"].ToString(); npc.pos.x = reader.GetInt32(1); npc.pos.y = reader.GetInt32(2); npc.pos.z = reader.GetInt32(3); } } command = new SQLiteCommand(String.Format("SELECT itemid, value FROM SellItems WHERE vendorid={0}", npc.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemSold sellItem = new ItemSold(); sellItem.itemid = reader.GetInt32(0); sellItem.npcid = npc.id; sellItem.price = reader.GetInt32(1); npc.sellItems.Add(sellItem); } command = new SQLiteCommand(String.Format("SELECT itemid, value FROM BuyItems WHERE vendorid={0}", npc.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemSold buyItem = new ItemSold(); buyItem.itemid = reader.GetInt32(0); buyItem.npcid = npc.id; buyItem.price = reader.GetInt32(1); npc.buyItems.Add(buyItem); } command = new SQLiteCommand(String.Format("SELECT spellid,knight,druid,paladin,sorcerer FROM SpellNPCs WHERE npcid={0}", npc.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { SpellTaught t = new SpellTaught(); t.npcid = npc.id; t.spellid = reader.GetInt32(0); t.knight = reader.GetBoolean(1); t.druid = reader.GetBoolean(2); t.paladin = reader.GetBoolean(3); t.sorcerer = reader.GetBoolean(4); npc.spellsTaught.Add(t); } command = new SQLiteCommand(String.Format("SELECT DISTINCT questid FROM QuestNPCs WHERE npcid={0}", npc.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { Quest q = getQuest(reader.GetInt32(0)); npc.involvedQuests.Add(q); } command = new SQLiteCommand(String.Format("SELECT destination,cost,notes FROM NPCDestinations WHERE npcid={0}", npc.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { Transport t = new Transport(); t.destination = reader.GetString(0); t.cost = reader.GetInt32(1); t.notes = reader.GetString(2); npc.transportOffered.Add(t); } return npc; }
private static Item createItem(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Item item = new Item(); item.permanent = true; item.id = reader.GetInt32(0); item.displayname = reader.GetString(1); item.actual_value = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetInt64(2); item.vendor_value = reader.IsDBNull(3) ? DATABASE_NULL : reader.GetInt64(3); item.stackable = reader.GetBoolean(4); item.capacity = reader.IsDBNull(5) ? DATABASE_NULL : reader.GetFloat(5); item.category = reader.IsDBNull(6) ? "Unknown" : reader.GetString(6); item.discard = reader.GetBoolean(7); item.convert_to_gold = reader.GetBoolean(8); item.look_text = reader.IsDBNull(9) ? String.Format("You see a {0}.", item.displayname) : reader.GetString(9); item.title = reader.GetString(10); item.currency = reader.IsDBNull(11) ? DATABASE_NULL : reader.GetInt32(11); item.image = Image.FromStream(reader.GetStream(12)); if (item.image.RawFormat.Guid == ImageFormat.Gif.Guid) { int frames = item.image.GetFrameCount(FrameDimension.Time); if (frames == 1) { Bitmap new_bitmap = new Bitmap(item.image); new_bitmap.MakeTransparent(); item.image.Dispose(); item.image = new_bitmap; } } command = new SQLiteCommand(String.Format("SELECT vendorid, value FROM SellItems WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemSold sellItem = new ItemSold(); sellItem.itemid = item.id; sellItem.npcid = reader.GetInt32(0); sellItem.price = reader.GetInt32(1); item.sellItems.Add(sellItem); } command = new SQLiteCommand(String.Format("SELECT vendorid, value FROM BuyItems WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemSold buyItem = new ItemSold(); buyItem.itemid = item.id; buyItem.npcid = reader.GetInt32(0); buyItem.price = reader.GetInt32(1); item.buyItems.Add(buyItem); } command = new SQLiteCommand(String.Format("SELECT creatureid, percentage, min, max FROM CreatureDrops WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemDrop itemDrop = new ItemDrop(); itemDrop.itemid = item.id; itemDrop.creatureid = reader.GetInt32(0); itemDrop.percentage = reader.IsDBNull(1) ? DATABASE_NULL : reader.GetFloat(1); if (itemDrop.percentage > 100) { itemDrop.min = 1; itemDrop.max = (int)(itemDrop.percentage / 100.0 * 2.0); itemDrop.percentage = 100; } else { itemDrop.min = Math.Max(reader.GetInt32(2), 1); itemDrop.max = Math.Max(reader.GetInt32(3), itemDrop.min); } item.itemdrops.Add(itemDrop); } command = new SQLiteCommand(String.Format("SELECT questid FROM QuestRewards WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { item.rewardedBy.Add(getQuest(reader.GetInt32(0))); } command = new SQLiteCommand(String.Format("SELECT property, value FROM ItemProperties WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { string property = reader.GetString(0); switch(property) { case "Voc": item.vocation = reader.GetString(1); break; case "Level": item.level = reader.GetInt32(1); break; case "Def": item.defensestr = reader["value"].ToString(); if (!int.TryParse(item.defensestr, out item.defense)) { item.defense = int.Parse(item.defensestr.Split(' ')[0]); } break; case "Attrib": item.attrib = reader.GetString(1); break; case "Atk": item.attack = reader.GetInt32(1); break; case "Atk+": item.atkmod = reader.GetInt32(1); break; case "Hit+": string str = reader["value"].ToString(); int.TryParse(str, out item.hitmod); break; case "Arm": item.armor = reader.GetInt32(1); break; case "Range": item.range = reader.GetInt32(1); break; case "Type": item.type = reader.GetString(1); break; } } return item; }
private static Creature createCreature(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Creature cr = new Creature(); cr.permanent = true; cr.id = reader.GetInt32(0); cr.displayname = reader["name"].ToString(); cr.health = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetInt32(2); cr.experience = reader.IsDBNull(3) ? DATABASE_NULL : reader.GetInt32(3); cr.maxdamage = reader.IsDBNull(4) ? DATABASE_NULL : reader.GetInt32(4); cr.summoncost = reader.IsDBNull(5) ? DATABASE_NULL : reader.GetInt32(5); cr.illusionable = reader.GetBoolean(6); cr.pushable = reader.GetBoolean(7); cr.pushes = reader.GetBoolean(8); cr.res_phys = reader.IsDBNull(9) ? 100 : reader.GetInt32(9); cr.res_holy = reader.IsDBNull(10) ? 100 : reader.GetInt32(10); cr.res_death = reader.IsDBNull(11) ? 100 : reader.GetInt32(11); cr.res_fire = reader.IsDBNull(12) ? 100 : reader.GetInt32(12); cr.res_energy = reader.IsDBNull(13) ? 100 : reader.GetInt32(13); cr.res_ice = reader.IsDBNull(14) ? 100 : reader.GetInt32(14); cr.res_earth = reader.IsDBNull(15) ? 100 : reader.GetInt32(15); cr.res_drown = reader.IsDBNull(16) ? 100 : reader.GetInt32(16); cr.res_lifedrain = reader.IsDBNull(17) ? 100 : reader.GetInt32(17); cr.paralysable = reader.GetBoolean(18); cr.senseinvis = reader.GetBoolean(19); cr.abilities = reader.IsDBNull(20) ? DATABASE_STRING_NULL : reader["abilities"].ToString(); cr.title = reader[21].ToString(); cr.speed = reader.IsDBNull(22) ? DATABASE_NULL : reader.GetInt32(22); cr.armor = reader.IsDBNull(23) ? DATABASE_NULL : reader.GetInt32(23); cr.boss = reader.GetInt32(24) > 0; if (reader.IsDBNull(25)) { return null; } cr.image = Image.FromStream(reader.GetStream(25)); command = new SQLiteCommand(String.Format("SELECT skinitemid, knifeitemid, percentage FROM Skins WHERE creatureid={0}", cr.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { Skin skin = new Skin(); skin.dropitemid = reader.GetInt32(0); skin.skinitemid = reader.GetInt32(1); skin.percentage = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetFloat(2); cr.skin = skin; } command = new SQLiteCommand(String.Format("SELECT itemid, percentage, min, max FROM CreatureDrops WHERE creatureid={0}", cr.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemDrop itemDrop = new ItemDrop(); itemDrop.creatureid = cr.id; itemDrop.itemid = reader.GetInt32(0); itemDrop.percentage = reader.IsDBNull(1) ? DATABASE_NULL : reader.GetFloat(1); if (itemDrop.percentage > 100) { itemDrop.min = 1; itemDrop.max = (int)(itemDrop.percentage / 100.0 * 2.0); itemDrop.percentage = 100; } else { itemDrop.min = Math.Max(reader.GetInt32(2), 1); itemDrop.max = Math.Max(reader.GetInt32(3), itemDrop.min); } cr.itemdrops.Add(itemDrop); } return cr; }
private static WorldObject createWorldObject(SQLiteDataReader reader) { if (!reader.Read()) { return null; } WorldObject o = new WorldObject(); o.title = reader.GetString(0); o.name = reader.GetString(1); o.image = Image.FromStream(reader.GetStream(2)); ; return o; }
private static Spell createSpell(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Spell spell = new Spell(); spell.permanent = true; spell.id = reader.GetInt32(0); spell.name = reader["name"].ToString(); spell.words = reader["words"].ToString(); spell.element = reader.IsDBNull(3) ? "Unknown" : reader.GetString(3); spell.cooldown = reader.IsDBNull(4) ? DATABASE_NULL : reader.GetInt32(4); spell.premium = reader.GetBoolean(5); spell.promotion = reader.GetBoolean(6); spell.levelrequired = reader.GetInt32(7); spell.goldcost = reader.GetInt32(8); spell.manacost = reader.GetInt32(9); spell.knight = reader.GetBoolean(10); spell.paladin = reader.GetBoolean(11); spell.sorcerer = reader.GetBoolean(12); spell.druid = reader.GetBoolean(13); spell.image = Image.FromStream(reader.GetStream(14)); command = new SQLiteCommand(String.Format("SELECT npcid, knight, druid, paladin, sorcerer FROM SpellNPCs WHERE spellid={0}", spell.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { SpellTaught t = new SpellTaught(); t.npcid = reader.GetInt32(0); t.spellid = spell.id; t.knight = reader.GetBoolean(1); t.druid = reader.GetBoolean(2); t.paladin = reader.GetBoolean(3); t.sorcerer = reader.GetBoolean(4); spell.teachNPCs.Add(t); } return spell; }
private static Outfit createOutfit(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Outfit outfit = new Outfit(); outfit.permanent = true; outfit.id = reader.GetInt32(0); outfit.title = reader.GetString(1); outfit.name = reader.GetString(2); outfit.premium = reader.GetBoolean(3); outfit.tibiastore = reader.GetBoolean(4); // Outfit Images command = new SQLiteCommand(String.Format("SELECT male, addon, image FROM OutfitImages WHERE outfitid={0}", outfit.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { bool male = reader.GetBoolean(0); int addon = reader.GetInt32(1); Image image = Image.FromStream(reader.GetStream(2)); if (male) { outfit.maleImages[addon] = image; } else { outfit.femaleImages[addon] = image; } } command = new SQLiteCommand(String.Format("SELECT questid FROM QuestOutfits WHERE outfitid={0}", outfit.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { outfit.questid = reader.GetInt32(0); } return outfit; }