示例#1
0
        public void SendUnEquipItem(int item_id)
        {
            CPlayerUnEquipItem msg = new CPlayerUnEquipItem();

            msg.item_id = item_id;
            Client.Instance.Send(msg);
        }
        private void OnRecvPlayerUnEquipItem(IChannel channel, Message message)
        {
            CPlayerUnEquipItem request = message as CPlayerUnEquipItem;

            using (var conn = GameDataBase.GetConnection())
            {
                using (var trans = conn.BeginTransaction())
                {
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "Update Item Set status='Storing' Where item_id=@item_id;";
                        cmd.Parameters.AddWithValue("item_id", request.item_id);
                        int res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            ClientTipInfo(channel, "UnEquip Error!");
                            trans.Rollback();
                            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)channel.GetContent()).player_id);
                        int res = cmd.ExecuteNonQuery();
                        if (res != 1)
                        {
                            ClientTipInfo(channel, "UnEquip Error!");
                            trans.Rollback();
                            return;
                        }
                    }
                    trans.Commit();
                }
            }

            SPlayerUnEquipItem response = new SPlayerUnEquipItem();

            response.item_id = request.item_id;
            channel.Send(response);
            FrontEnd.Item.DItem ditem = null;
            var player = (Player)channel.GetContent();

            foreach (var item in player.wearing)
            {
                if (item.Value.item_id == request.item_id)
                {
                    ditem = item.Value;
                }
            }
            player.wearing.Remove(ditem.item_type);
            player.inventory.Add(ditem.item_id, ditem);
            player.refreshAttr();
        }