Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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.");
        }
Ejemplo n.º 4
0
        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.");
        }
Ejemplo n.º 5
0
        /// <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;
        }
Ejemplo n.º 6
0
        /// <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;
        }