Пример #1
0
        private void OnRecvPlayerDropItem(IChannel channel, Message message)
        {
            CPlayerDropItem request = message as CPlayerDropItem;

            using (var conn = GameDataBase.GetConnection())
            {
                using (var trans = conn.BeginTransaction())
                {
                    int price = 0;
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Item Set status='Drop' Where item_id=@item_id Returning silver_value;";
                        cmd.Parameters.AddWithValue("item_id", request.item_id);
                        var silver_value = cmd.ExecuteScalar();
                        if (silver_value == null)
                        {
                            ClientTipInfo(channel, "Sell Item Error!");
                            trans.Rollback();
                            return;
                        }
                        price = (int)silver_value;
                    }
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Player Set items_count=items_count-1,silver=silver+@price Where player_id=@player_id;";
                        cmd.Parameters.AddWithValue("price", price);
                        cmd.Parameters.AddWithValue("player_id", (channel.GetContent() as Player).player_id);
                        if (cmd.ExecuteNonQuery() != 1)
                        {
                            ClientTipInfo(channel, "Sell Item Error!");
                            trans.Rollback();
                            return;
                        }
                    }
                    trans.Commit();
                }
            }
            SPlayerDropItem response = new SPlayerDropItem
            {
                item_id = request.item_id
            };

            channel.Send(response);
            var player = (Player)channel.GetContent();

            player.inventory.Remove(request.item_id);
        }
Пример #2
0
        private void OnRecvPlayerDropItem(IChannel channel, Message message)
        {
            SPlayerDropItem msg = message as SPlayerDropItem;

            World.Instance.fPlayer.DropItem(msg.item_id);
        }