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) { return; } lock (room._slots) { for (int index = 0; index < 16; ++index) { SLOT slot = room._slots[index]; if (slot._playerId > 0L && index != room._leader) { this.slots.Add(slot); } } } if (this.slots.Count > 0) { SLOT slot = this.slots[new Random().Next(this.slots.Count)]; if (room.getPlayerBySlot(slot) != null) { room.setNewLeader(slot._id,0,room._leader,false); using (ROOM_RANDOM_HOST_PAK roomRandomHostPak = new ROOM_RANDOM_HOST_PAK(slot._id)) room.SendPacketToPlayers((SendPacket)roomRandomHostPak); room.updateSlotsInfo(); } else { this._client.SendPacket((SendPacket) new ROOM_RANDOM_HOST_PAK(2147483648U)); } this.slots = (List <SLOT>)null; } else { this._client.SendPacket((SendPacket) new ROOM_RANDOM_HOST_PAK(2147483648U)); } } catch (Exception ex) { Logger.info("ROOM_RANDOM_HOST2_REC: " + ex.ToString()); } }
public override void run() { try { Account p = _client._player; Room room = p == null ? null : p._room; if (room != null && room._leader == p._slotId && room._state == RoomState.Ready) { lock (room._slots) for (int i = 0; i < 16; i++) { SLOT slot = room._slots[i]; if (slot._playerId > 0 && i != room._leader) { slots.Add(slot); } } if (slots.Count > 0) { SLOT slot = slots[new Random().Next(slots.Count)]; Account player = room.getPlayerBySlot(slot); if (player != null) { room.setNewLeader(slot._id,0,room._leader,false); using (ROOM_RANDOM_HOST_PAK packet = new ROOM_RANDOM_HOST_PAK(slot._id)) room.SendPacketToPlayers(packet); room.updateSlotsInfo(); } else { _client.SendPacket(new ROOM_RANDOM_HOST_PAK(0x80000000)); } slots = null; } else { _client.SendPacket(new ROOM_RANDOM_HOST_PAK(0x80000000)); } } } catch (Exception ex) { SaveLog.fatal(ex.ToString()); Printf.b_danger("[ROOM_RANDOM_HOST2_REC.run] Erro fatal!"); } }