public void SendChangeItem(int oldItem, int newItem) { CPlayerChangeItem msg = new CPlayerChangeItem(); msg.old_id = oldItem; msg.new_id = newItem; Client.Instance.Send(msg); }
private void OnRecvPlayerChangeItem(IChannel channel, Message message) { CPlayerChangeItem request = message as CPlayerChangeItem; 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=@old_id;"; cmd.Parameters.AddWithValue("old_id", request.old_id); int res = cmd.ExecuteNonQuery(); if (res != 1) { ClientTipInfo(channel, "Oh! Change Item Error!"); trans.Rollback(); return; } } using (var cmd = conn.CreateCommand()) { cmd.CommandText = "Update Item Set status='Using' Where item_id=@new_id;"; cmd.Parameters.AddWithValue("new_id", request.new_id); int res = cmd.ExecuteNonQuery(); if (res != 1) { ClientTipInfo(channel, "Oh! Change Iten Error!"); trans.Rollback(); return; } } trans.Commit(); } } SPlayerChangeItem response = new SPlayerChangeItem(); response.new_id = request.new_id; response.old_id = request.old_id; channel.Send(response); var player = (Player)channel.GetContent(); FrontEnd.Item.DItem ditem = null; foreach (var item in player.wearing) { if (item.Value.item_id == request.old_id) { ditem = item.Value; } } player.wearing.Remove(ditem.item_type); player.inventory.Add(ditem.item_id, ditem); ditem = player.inventory[request.new_id]; player.inventory.Remove(request.new_id); player.wearing.Add(ditem.item_type, ditem); player.refreshAttr(); return; }