Exemple #1
0
        private void LeavePlayerNoBOT_EndBattle(Room room, Account p, int red13, int blue13)
        {
            isFinished = true;
            TeamResultTypeEnum winnerTeam = room.GetWinnerTeam(red13, blue13);
            List <Account>     players    = room.GetAllPlayers(SlotStateEnum.READY, 1);

            if (players.Count > 0)
            {
                if (room.state == RoomStateEnum.Battle)
                {
                    room.CalculateResult(winnerTeam, false);
                }
                using (PROTOCOL_BATTLE_LEAVEP2PSERVER_ACK packet = new PROTOCOL_BATTLE_LEAVEP2PSERVER_ACK(p, 0))
                {
                    byte[] data = packet.GetCompleteBytes("BATTLE_PLAYER_LEAVE_REQ-8");
                    room.GetBattleResult(out ushort missionCompletes, out ushort inBattle, out byte[] a1);
                    for (int i = 0; i < players.Count; i++)
                    {
                        Account pR = players[i];
                        pR.SendCompletePacket(data);
                        pR.SendPacket(new PROTOCOL_BATTLE_ENDBATTLE_ACK(pR, winnerTeam, inBattle, missionCompletes, false, a1));
                    }
                }
            }
            room.ResetBattleInfo();
        }
Exemple #2
0
 public PROTOCOL_BATTLE_ENDBATTLE_ACK(Account player)
 {
     this.player = player;
     if (player != null)
     {
         room      = player.room;
         winner    = room.GetWinnerTeam();
         isBotMode = room.IsBotMode();
         room.GetBattleResult(out missionsFlag, out playersFlag, out array1);
     }
 }
Exemple #3
0
 public PROTOCOL_BATTLE_ENDBATTLE_ACK(Account player, TeamResultTypeEnum winner, ushort playersFlag, ushort missionsFlag, bool isBotMode, byte[] a1)
 {
     this.player       = player;
     this.winner       = winner;
     this.playersFlag  = playersFlag;
     this.missionsFlag = missionsFlag;
     this.isBotMode    = isBotMode;
     array1            = a1;
     if (player != null)
     {
         room = player.room;
     }
 }
Exemple #4
0
        private void LeaveHostBOT_EndBattle(Room room, Account p)
        {
            List <Account> players = room.GetAllPlayers(SlotStateEnum.READY, 1);

            if (players.Count > 0)
            {
                using (PROTOCOL_BATTLE_LEAVEP2PSERVER_ACK packet = new PROTOCOL_BATTLE_LEAVEP2PSERVER_ACK(p, 0))
                {
                    byte[]             data       = packet.GetCompleteBytes("BATTLE_PLAYER_LEAVE_REQ-3");
                    TeamResultTypeEnum winnerTeam = room.GetWinnerTeam();
                    room.GetBattleResult(out ushort missionCompletes, out ushort inBattle, out byte[] a1);
                    for (int i = 0; i < players.Count; i++)
                    {
                        Account pR = players[i];
                        pR.SendCompletePacket(data);
                        pR.SendPacket(new PROTOCOL_BATTLE_ENDBATTLE_ACK(pR, winnerTeam, inBattle, missionCompletes, true, a1));
                    }
                }
            }
            room.ResetBattleInfo();
        }
Exemple #5
0
 private void EndRound(Room room, bool isBotMode)
 {
     try
     {
         room.swapRound = true;
         if (room.mode == RoomTypeEnum.Dino || room.mode == RoomTypeEnum.CrossCounter)
         {
             if (room.rounds == 1)
             {
                 room.rounds = 2;
                 for (int i = 0; i < 16; i++)
                 {
                     Slot slot = room.slots[i];
                     if (slot.state == SlotStateEnum.BATTLE)
                     {
                         slot.killsOnLife     = 0;
                         slot.lastKillState   = 0;
                         slot.repeatLastState = false;
                     }
                 }
                 List <int> dinos = room.GetDinossaurs(true, -2);
                 using (BATTLE_ROUND_WINNER_PAK packet = new BATTLE_ROUND_WINNER_PAK(room, 2, RoundEndTypeEnum.TimeOut))
                     using (BATTLE_ROUND_RESTART_PAK packet2 = new BATTLE_ROUND_RESTART_PAK(room, dinos, isBotMode))
                     {
                         room.SendPacketToPlayers(packet, packet2, SlotStateEnum.BATTLE, 0);
                     }
                 room.round.StartJob(5250, (callbackState) =>
                 {
                     if (room.state == RoomStateEnum.Battle)
                     {
                         room.BattleStart = DateTime.Now.AddSeconds(5250);
                         using (PROTOCOL_BATTLE_TIMERSYNC_ACK packet = new PROTOCOL_BATTLE_TIMERSYNC_ACK(room))
                         {
                             room.SendPacketToPlayers(packet, SlotStateEnum.BATTLE, 0);
                         }
                     }
                     room.swapRound = false;
                     lock (callbackState)
                     {
                         room.round.Timer = null;
                     }
                 });
             }
             else if (room.rounds == 2)
             {
                 room.EndBattle(isBotMode, room.GetWinnerTeam());
             }
         }
         else if (room.ThisModeHaveRounds())
         {
             int winner = 1;
             if (room.mode != RoomTypeEnum.Sabotage)
             {
                 room.blueRounds++;
             }
             else
             {
                 if (room.Bar1 > room.Bar2)
                 {
                     room.redRounds++;
                     winner = 0;
                 }
                 else if (room.Bar1 < room.Bar2)
                 {
                     room.blueRounds++;
                 }
                 else
                 {
                     winner = 2;
                 }
             }
             room.BattleEndRound(winner, RoundEndTypeEnum.TimeOut);
         }
         else
         {
             List <Account> players = room.GetAllPlayers(SlotStateEnum.READY, 1);
             if (players.Count > 0)
             {
                 TeamResultTypeEnum winnerTeam = room.GetWinnerTeam();
                 room.CalculateResult(winnerTeam, isBotMode);
                 using (BATTLE_ROUND_WINNER_PAK packet = new BATTLE_ROUND_WINNER_PAK(room, winnerTeam, RoundEndTypeEnum.TimeOut))
                 {
                     room.GetBattleResult(out ushort missionCompletes, out ushort inBattle, out byte[] resultData);
                     byte[] data = packet.GetCompleteBytes("BATTLE_TIMERSYNC_REQ");
                     for (int i = 0; i < players.Count; i++)
                     {
                         Account player = players[i];
                         if (player != null)
                         {
                             if (room.slots[player.slotId].state == SlotStateEnum.BATTLE)
                             {
                                 player.SendCompletePacket(data);
                             }
                             player.SendPacket(new PROTOCOL_BATTLE_ENDBATTLE_ACK(player, winnerTeam, inBattle, missionCompletes, isBotMode, resultData));
                         }
                     }
                 }
             }
             room.ResetBattleInfo();
         }
     }
     catch (Exception ex)
     {
         Logger.Exception(ex);
     }
 }
Exemple #6
0
 public BATTLE_ROUND_WINNER_PAK(Room room, TeamResultTypeEnum winner, RoundEndTypeEnum reason)
 {
     this.room   = room;
     this.winner = (int)winner;
     this.reason = reason;
 }