/// <summary> /// Retrieve all market orders created by <code>seller</code> /// </summary> public static List <MarketEntry> EntriesBySeller(Mobile seller) { List <MarketEntry> list = new List <MarketEntry>(); SQLiteDataReader reader = ExecuteQuery("SELECT entryid,active,category,cost,description,itemserial FROM entries WHERE sellerserial = " + (int)seller.Serial); while (reader.Read()) { IEntity saleObject = World.FindEntity(reader.GetInt32(reader.GetOrdinal("itemserial"))); MarketEntry entry = new MarketEntry(seller); entry.Active = reader.GetBoolean(reader.GetOrdinal("active")); entry.Category = (Category)reader.GetInt32(reader.GetOrdinal("category")); entry.Description = reader.GetString(reader.GetOrdinal("description")); entry.TableId = reader.GetInt32(reader.GetOrdinal("entryid")); if (saleObject != null) { entry.SetSellItem(saleObject); } entry.ChangeCost(reader.GetInt32(reader.GetOrdinal("cost")), 0, 0); list.Add(entry); } reader.Close(); return(list); }
/// <summary> /// Retrieve all market orders matching <code>category</code> /// </summary> public static List <MarketEntry> EntriesByCategory(Category category) { List <MarketEntry> list = new List <MarketEntry>(); SQLiteDataReader reader = ExecuteQuery("SELECT entryid,cost,description,itemserial,sellerserial FROM entries WHERE active = 1 AND category = " + (int)category); while (reader.Read()) { Mobile seller = World.FindMobile(reader.GetInt32(reader.GetOrdinal("sellerserial"))); IEntity saleObject = World.FindEntity(reader.GetInt32(reader.GetOrdinal("itemserial"))); if (seller == null || saleObject == null) { continue; } MarketEntry entry = new MarketEntry(seller); entry.Category = category; entry.Description = reader.GetString(reader.GetOrdinal("description")); entry.TableId = reader.GetInt32(reader.GetOrdinal("entryid")); entry.ChangeCost(reader.GetInt32(reader.GetOrdinal("cost")), 0, 0); entry.SetSellItem(saleObject); list.Add(entry); } reader.Close(); return(list); }
private static void FinalizeNewOrder(Mobile seller, MarketEntry entry, IEntity saleEntity) { entry.SetSellItem(saleEntity); //do this to prevent a scenario where the market db is more up to date than the latest server save (market serials could be mismatched to server items, in that case) World.Save(false, true); if (saleEntity is Item) { ((Item)saleEntity).MoveToWorld(new Point3D(0, 0, 1), Map.Internal); } else if (saleEntity is Mobile) { ((Mobile)saleEntity).Internalize(); } if (String.IsNullOrEmpty(entry.Description)) { if (saleEntity is Item) { Item i = saleEntity as Item; if (String.IsNullOrEmpty(i.Name)) { if ((i.ItemData.Flags & TileFlag.ArticleA) != 0) { entry.Description = "a " + i.ItemData.Name; } else if ((i.ItemData.Flags & TileFlag.ArticleAn) != 0) { entry.Description = "an " + i.ItemData.Name; } else { entry.Description = i.ItemData.Name; } } else { entry.Description = i.Name; } } else { entry.Description = "a pet for sale by " + seller.Name; } } //add into the entries table SQLiteParameter[] paramSet = new SQLiteParameter[] { new SQLiteParameter("$category", (int)entry.Category), new SQLiteParameter("$cost", entry.Cost), new SQLiteParameter("$desc", entry.Description.Substring(0, Math.Min(entry.Description.Length, 255))), new SQLiteParameter("$item", (int)saleEntity.Serial), new SQLiteParameter("$seller", (int)seller.Serial) }; ExecuteNonQuery("INSERT INTO entries (category,cost,description,itemserial,sellerserial) " + "VALUES ($category,$cost,$desc,$item,$seller)", paramSet); //add/update the seller detail table try { ExecuteNonQuery("INSERT INTO sellers (serial,totalorders) VALUES ($seller,1)", new SQLiteParameter[] { new SQLiteParameter("$seller", (int)seller.Serial) }); } catch { ExecuteNonQuery("UPDATE sellers SET totalorders=totalorders+1 WHERE serial=$seller", new SQLiteParameter[] { new SQLiteParameter("$seller", (int)seller.Serial) }); } seller.SendGump(new PersonalMarketGump(seller)); seller.SendMessage("Your order has been added to the marketplace."); }
private static void FinalizeNewOrder( Mobile seller, MarketEntry entry, IEntity saleEntity ) { entry.SetSellItem(saleEntity); //do this to prevent a scenario where the market db is more up to date than the latest server save (market serials could be mismatched to server items, in that case) World.Save(false, true); if( saleEntity is Item ) ((Item)saleEntity).MoveToWorld(new Point3D(0, 0, 1), Map.Internal); else if( saleEntity is Mobile ) ((Mobile)saleEntity).Internalize(); if( String.IsNullOrEmpty(entry.Description) ) { if( saleEntity is Item ) { Item i = saleEntity as Item; if( String.IsNullOrEmpty(i.Name) ) { if( (i.ItemData.Flags & TileFlag.ArticleA) != 0 ) entry.Description = "a " + i.ItemData.Name; else if( (i.ItemData.Flags & TileFlag.ArticleAn) != 0 ) entry.Description = "an " + i.ItemData.Name; else entry.Description = i.ItemData.Name; } else { entry.Description = i.Name; } } else { entry.Description = "a pet for sale by " + seller.Name; } } //add into the entries table SQLiteParameter[] paramSet = new SQLiteParameter[] { new SQLiteParameter( "$category", (int)entry.Category ), new SQLiteParameter( "$cost", entry.Cost ), new SQLiteParameter( "$desc", entry.Description.Substring( 0, Math.Min( entry.Description.Length, 255 ) ) ), new SQLiteParameter( "$item", (int)saleEntity.Serial ), new SQLiteParameter( "$seller", (int)seller.Serial ) }; ExecuteNonQuery("INSERT INTO entries (category,cost,description,itemserial,sellerserial) " + "VALUES ($category,$cost,$desc,$item,$seller)", paramSet); //add/update the seller detail table try { ExecuteNonQuery("INSERT INTO sellers (serial,totalorders) VALUES ($seller,1)", new SQLiteParameter[] { new SQLiteParameter("$seller", (int)seller.Serial) }); } catch { ExecuteNonQuery("UPDATE sellers SET totalorders=totalorders+1 WHERE serial=$seller", new SQLiteParameter[] { new SQLiteParameter("$seller", (int)seller.Serial) }); } seller.SendGump(new PersonalMarketGump(seller)); seller.SendMessage("Your order has been added to the marketplace."); }
/// <summary> /// Retrieve all market orders created by <code>seller</code> /// </summary> public static List<MarketEntry> EntriesBySeller( Mobile seller ) { List<MarketEntry> list = new List<MarketEntry>(); SQLiteDataReader reader = ExecuteQuery("SELECT entryid,active,category,cost,description,itemserial FROM entries WHERE sellerserial = " + (int)seller.Serial); while( reader.Read() ) { IEntity saleObject = World.FindEntity(reader.GetInt32(reader.GetOrdinal("itemserial"))); MarketEntry entry = new MarketEntry(seller); entry.Active = reader.GetBoolean(reader.GetOrdinal("active")); entry.Category = (Category)reader.GetInt32(reader.GetOrdinal("category")); entry.Description = reader.GetString(reader.GetOrdinal("description")); entry.TableId = reader.GetInt32(reader.GetOrdinal("entryid")); if( saleObject != null ) entry.SetSellItem(saleObject); entry.ChangeCost(reader.GetInt32(reader.GetOrdinal("cost")), 0, 0); list.Add(entry); } reader.Close(); return list; }
/// <summary> /// Retrieve all market orders matching <code>category</code> /// </summary> public static List<MarketEntry> EntriesByCategory( Category category ) { List<MarketEntry> list = new List<MarketEntry>(); SQLiteDataReader reader = ExecuteQuery("SELECT entryid,cost,description,itemserial,sellerserial FROM entries WHERE active = 1 AND category = " + (int)category); while( reader.Read() ) { Mobile seller = World.FindMobile(reader.GetInt32(reader.GetOrdinal("sellerserial"))); IEntity saleObject = World.FindEntity(reader.GetInt32(reader.GetOrdinal("itemserial"))); if( seller == null || saleObject == null ) continue; MarketEntry entry = new MarketEntry(seller); entry.Category = category; entry.Description = reader.GetString(reader.GetOrdinal("description")); entry.TableId = reader.GetInt32(reader.GetOrdinal("entryid")); entry.ChangeCost(reader.GetInt32(reader.GetOrdinal("cost")), 0, 0); entry.SetSellItem(saleObject); list.Add(entry); } reader.Close(); return list; }