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(); }
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); } }
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; } }
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(); }
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); } }
public BATTLE_ROUND_WINNER_PAK(Room room, TeamResultTypeEnum winner, RoundEndTypeEnum reason) { this.room = room; this.winner = (int)winner; this.reason = reason; }