예제 #1
0
 public override void run()
 {
     try
     {
         Account p = _client._player;
         Room    r = p == null ? null : p._room;
         SLOT    slot;
         if (r == null || r._state != RoomState.Battle || r.vote.Timer == null ||
             r.votekick == null || !r.getSlot(p._slotId,out slot) || slot.state != SLOT_STATE.BATTLE)
         {
             return;
         }
         VoteKick vote = r.votekick;
         if (vote._votes.Contains(p._slotId))
         {
             _client.SendPacket(new VOTEKICK_UPDATE_RESULT_PAK(0x800010F1));
             return;
         }
         lock (vote._votes)
         {
             vote._votes.Add(slot._id);
         }
         if (type == 0)
         {
             vote.kikar++;
             if (slot._team == vote.victimIdx % 2)
             {
                 vote.allies++;
             }
             else
             {
                 vote.enemys++;
             }
         }
         else
         {
             vote.deixar++;
         }
         if (vote._votes.Count >= vote.GetInGamePlayers())
         {
             r.vote.Timer = null;
             AllUtils.votekickResult(r);
         }
         else
         {
             using (VOTEKICK_UPDATE_PAK packet = new VOTEKICK_UPDATE_PAK(vote))
                 r.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
         }
     }
     catch (Exception ex)
     {
         SaveLog.fatal(ex.ToString());
         Printf.b_danger("[VOTEKICK_UPDATE_REC.run] Erro fatal!");
     }
 }
예제 #2
0
 public override void run()
 {
     try
     {
         Account player = this._client._player;
         Room    room   = player == null ? (Room)null : player._room;
         SLOT    slot;
         if (room == null || room._state != RoomState.Battle || (room.vote.Timer == null || room.votekick == null) || (!room.getSlot(player._slotId,out slot) || slot.state != SLOT_STATE.BATTLE))
         {
             return;
         }
         VoteKick votekick = room.votekick;
         if (votekick._votes.Contains(player._slotId))
         {
             this._client.SendPacket((SendPacket) new VOTEKICK_UPDATE_RESULT_PAK(2147487985U));
         }
         else
         {
             lock (votekick._votes)
                 votekick._votes.Add(slot._id);
             if (this.type == (byte)0)
             {
                 ++votekick.kikar;
                 if (slot._team == votekick.victimIdx % 2)
                 {
                     ++votekick.allies;
                 }
                 else
                 {
                     ++votekick.enemys;
                 }
             }
             else
             {
                 ++votekick.deixar;
             }
             if (votekick._votes.Count >= votekick.GetInGamePlayers())
             {
                 room.vote.Timer = (Timer)null;
                 AllUtils.votekickResult(room);
             }
             else
             {
                 using (VOTEKICK_UPDATE_PAK votekickUpdatePak = new VOTEKICK_UPDATE_PAK(votekick))
                     room.SendPacketToPlayers((SendPacket)votekickUpdatePak,SLOT_STATE.BATTLE,0);
             }
         }
     }
     catch (Exception ex)
     {
         Logger.info("VOTEKICK_UPDATE_REC: " + ex.ToString());
     }
 }