Exemple #1
0
 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());
     }
 }
Exemple #2
0
 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!");
     }
 }