Beispiel #1
0
        public void SendEquipItem(int item_id)
        {
            var item = inventory[item_id];

            if (wearing.ContainsKey(item.item_type))
            {
                SendChangeItem(wearing[item.item_type].item_id, item_id);
                return;
            }
            //SendUnEquipItem(wearing.Contains)

            CPlayerEquipItem msg = new CPlayerEquipItem();

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

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

            response.item_id = request.item_id;
            channel.Send(response);
            var player = (Player)channel.GetContent();
            var ditem  = player.inventory[request.item_id];

            player.inventory.Remove(request.item_id);
            player.wearing.Add(ditem.item_type, ditem);
            player.refreshAttr();
        }