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); }
private void OnRecvPlayerDropItem(IChannel channel, Message message) { SPlayerDropItem msg = message as SPlayerDropItem; World.Instance.fPlayer.DropItem(msg.item_id); }