public override void run() { try { Account player = this._client._player; Room room = player == null ? (Room)null : player._room; if (room == null || room._leader != player._slotId || (room._state != RoomState.Ready || room.changingSlots)) { return; } Monitor.Enter((object)room._slots); room.changingSlots = true; foreach (int oldSlotId in room.RED_TEAM) { int newSlotId = oldSlotId + 1; if (oldSlotId == room._leader) { room._leader = newSlotId; } else if (newSlotId == room._leader) { room._leader = oldSlotId; } room.SwitchSlots(this.changeList, newSlotId, oldSlotId, true); } if (this.changeList.Count > 0) { using (ROOM_CHANGE_SLOTS_PAK roomChangeSlotsPak = new ROOM_CHANGE_SLOTS_PAK(this.changeList, room._leader, 2)) { byte[] completeBytes = roomChangeSlotsPak.GetCompleteBytes("ROOM_CHANGE_TEAM_REC"); foreach (Account allPlayer in room.getAllPlayers()) { allPlayer._slotId = AllUtils.getNewSlotId(allPlayer._slotId); Logger.LogProblems("[ROOM_CHANGE_TEAM_REC] Jogador '" + (object)allPlayer.player_id + "' '" + allPlayer.player_name + "'; NewSlot: " + (object)allPlayer._slotId, "errorC"); allPlayer.SendCompletePacket(completeBytes); } } } room.changingSlots = false; Monitor.Exit((object)room._slots); } catch (Exception ex) { Logger.info("ROOM_CHANGE_TEAM_REC: " + ex.ToString()); } }
public override void run() { try { Account p = _client._player; Room r = p == null ? null : p._room; if (r != null && r._leader == p._slotId && r._state == RoomState.Ready && !r.changingSlots) { Monitor.Enter(r._slots); r.changingSlots = true; foreach (int slotIdx in r.RED_TEAM) { int NewId = (slotIdx + 1); if (slotIdx == r._leader) { r._leader = NewId; } else if (NewId == r._leader) { r._leader = slotIdx; } r.SwitchSlots(changeList, NewId, slotIdx, true); } if (changeList.Count > 0) { using (ROOM_CHANGE_SLOTS_PAK packet = new ROOM_CHANGE_SLOTS_PAK(changeList, r._leader, 2)) { byte[] data = packet.GetCompleteBytes(); foreach (Account ac in r.getAllPlayers()) { ac._slotId = AllUtils.getNewSlotId(ac._slotId); //Logger.LogProblems("[ROOM_CHANGE_TEAM_REC] Jogador '" + ac.player_id + "' '" + ac.player_name + "'; NewSlot: " + ac._slotId, "errorC"); ac.SendCompletePacket(data); } } } r.changingSlots = false; Monitor.Exit(r._slots); } } catch (Exception ex) { SaveLog.fatal(ex.ToString()); Printf.b_danger("[ROOM_CHANGE_TEAM_REC.run] Erro fatal!"); } }