示例#1
0
    private void Awake()
    {
        ItemInfo.SetActive(false);
        SellShelfItem.SetActive(false);
        SellButton.GetComponent <Button>().onClick.AddListener(delegate() {
            int price = System.Int32.Parse(ItemPriceValue.GetComponent <Text>().text);
            Debug.Log(string.Format("Sell {0} {1} {2}", this.ItemId, this.priceType, price));

            var inventory = World.Instance.fPlayer.inventory;
            if (!inventory.ContainsKey(ItemId))
            {
                return;
            }
            MarketItem item        = new MarketItem();
            item.ditem             = inventory[ItemId].ToDItem();
            item.costConf.costType = priceType;
            item.costConf.cost     = price;
            item.owner_id          = 0;
            CSellMarketItem msg    = new CSellMarketItem();
            msg.item = item;
            Gamekit3D.Network.Client.Instance.Send(msg);

            ItemId = -1;
            ItemInfo.SetActive(false);
        });
        ItemPriceButton.GetComponent <Button>().onClick.AddListener(delegate() {
            if (this.priceType == CostType.Silver)
            {
                this.priceType = CostType.Gold;
                ItemPriceButton.GetComponent <Image>().color = new Color(1, 1, 0);
            }
            else
            {
                this.priceType = CostType.Silver;
                ItemPriceButton.GetComponent <Image>().color = new Color(1, 1, 1);
            }
        });
    }
        private void OnRecvSellMarketItem(IChannel channel, Message message)
        {
            CSellMarketItem request = message as CSellMarketItem;
            var             player  = (Player)channel.GetContent();

            using (var conn = GameDataBase.GetConnection())
            {
                using (var trans = conn.BeginTransaction())
                {
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Select item_id From Item Where item_id=@item_id And status='Storing' And player_id=@player_id;";
                        cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id);
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        var res = cmd.ExecuteScalar();
                        if (res == null)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Error! Try again.[Sell]");
                            return;
                        }
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Item Set status='Selling' Where item_id=@item_id;";
                        cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Error! Try again.[Sell1]");
                            return;
                        }
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText =
                            "Insert Into Market(market_id, item_id, seller_id, price, price_type, valid)" +
                            "Values(DEFAULT, @item_id, @seller_id, @price, @price_type, @valid);";
                        cmd.Parameters.AddWithValue("item_id", request.item.ditem.item_id);
                        cmd.Parameters.AddWithValue("seller_id", player.player_id);
                        cmd.Parameters.AddWithValue("price", request.item.costConf.cost);
                        cmd.Parameters.AddWithValue("price_type", request.item.costConf.costType.ToString());
                        cmd.Parameters.AddWithValue("valid", true);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Error! Try again.[Sell2]");
                            return;
                        }
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Player Set items_count=items_count-1 Where player_id=@player_id;";
                        cmd.Parameters.AddWithValue("player_id", player.player_id);
                        var res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            trans.Rollback();
                            ClientTipInfo(channel, "Error! Try again.[Sell3]");
                            return;
                        }
                    }
                    trans.Commit();
                } // trans
            }     //conn
            SSellMarketItem response = new SSellMarketItem();

            response.item = request.item;
            channel.Send(response);
            player.inventory.Remove(request.item.ditem.item_id);
            return;
        }