예제 #1
0
        private void LeavePlayerNoBOT_EndBattle(Room room,Account p,int red13,int blue13)
        {
            this.isFinished = true;
            TeamResultType winnerTeam = AllUtils.GetWinnerTeam(room,red13,blue13);
            List <Account> allPlayers = room.getAllPlayers(SLOT_STATE.READY,1);

            if (allPlayers.Count != 0)
            {
                if (room._state == RoomState.Battle)
                {
                    room.CalculateResult(winnerTeam,false);
                }
                using (BATTLE_LEAVEP2PSERVER_PAK leaveP2PserverPak = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
                {
                    byte[] completeBytes = leaveP2PserverPak.GetCompleteBytes("BATTLE_PLAYER_LEAVE_REC-8");
                    ushort result1;
                    ushort result2;
                    byte[] data;
                    AllUtils.getBattleResult(room,out result1,out result2,out data);
                    foreach (Account p1 in allPlayers)
                    {
                        p1.SendCompletePacket(completeBytes);
                        p1.SendPacket((SendPacket) new BATTLE_ENDBATTLE_PAK(p1,winnerTeam,result2,result1,false,data));
                    }
                }
            }
            AllUtils.resetBattleInfo(room);
        }
예제 #2
0
        private void LeaveHostNoBOT_GiveBattle(Room room,Account p)
        {
            List <Account> allPlayers = room.getAllPlayers(SLOT_STATE.READY,1);

            if (allPlayers.Count == 0)
            {
                return;
            }
            int leader = room._leader;
            int state  = room._state == RoomState.Battle ? 12 : 8;

            room.setNewLeader(-1,state,room._leader,true);
            using (BATTLE_GIVEUPBATTLE_PAK battleGiveupbattlePak = new BATTLE_GIVEUPBATTLE_PAK(room,leader))
            {
                using (BATTLE_LEAVEP2PSERVER_PAK leaveP2PserverPak = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
                {
                    byte[] completeBytes1 = battleGiveupbattlePak.GetCompleteBytes("BATTLE_PLAYER_LEAVE_REC-6");
                    byte[] completeBytes2 = leaveP2PserverPak.GetCompleteBytes("BATTLE_PLAYER_LEAVE_REC-7");
                    foreach (Account account in allPlayers)
                    {
                        if (room._slots[account._slotId].state >= SLOT_STATE.PRESTART)
                        {
                            account.SendCompletePacket(completeBytes1);
                        }
                        account.SendCompletePacket(completeBytes2);
                    }
                }
            }
        }
        private void LeavePlayerNoBOT_EndBattle(Room room,Account p,int red13,int blue13)
        {
            isFinished = true;
            TeamResultType winnerTeam = AllUtils.GetWinnerTeam(room,red13,blue13);
            List <Account> players    = room.getAllPlayers(SLOT_STATE.READY,1);

            if (players.Count == 0)
            {
                goto EndLabel;
            }
            if (room._state == RoomState.Battle)
            {
                room.CalculateResult(winnerTeam,false);
            }
            using (BATTLE_LEAVEP2PSERVER_PAK packet = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
            {
                byte[] data = packet.GetCompleteBytes();
                ushort inBattle,missionCompletes;
                byte[] a1;
                AllUtils.getBattleResult(room,out missionCompletes,out inBattle,out a1);
                foreach (Account pR in players)
                {
                    pR.SendCompletePacket(data);
                    pR.SendPacket(new BATTLE_ENDBATTLE_PAK(pR,winnerTeam,inBattle,missionCompletes,false,a1));
                }
            }
EndLabel:
            AllUtils.resetBattleInfo(room);
        }
        private void LeaveHostNoBOT_GiveBattle(Room room,Account p)
        {
            List <Account> players = room.getAllPlayers(SLOT_STATE.READY,1);

            if (players.Count == 0)
            {
                return;
            }
            int oldLeader = room._leader;
            int state     = (room._state == RoomState.Battle ? 12 : 8);

            room.setNewLeader(-1,state,room._leader,true);
            using (BATTLE_GIVEUPBATTLE_PAK packet = new BATTLE_GIVEUPBATTLE_PAK(room,oldLeader))
                using (BATTLE_LEAVEP2PSERVER_PAK packet2 = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
                {
                    byte[] data  = packet.GetCompleteBytes();
                    byte[] data2 = packet2.GetCompleteBytes();
                    foreach (Account pR in players)
                    {
                        if (room._slots[pR._slotId].state >= SLOT_STATE.PRESTART)
                        {
                            pR.SendCompletePacket(data);
                        }
                        pR.SendCompletePacket(data2);
                    }
                }
        }
예제 #5
0
        private void LeaveHostBOT_EndBattle(Room room,Account p)
        {
            List <Account> allPlayers = room.getAllPlayers(SLOT_STATE.READY,1);

            if (allPlayers.Count != 0)
            {
                using (BATTLE_LEAVEP2PSERVER_PAK leaveP2PserverPak = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
                {
                    byte[]         completeBytes = leaveP2PserverPak.GetCompleteBytes("BATTLE_PLAYER_LEAVE_REC-3");
                    TeamResultType winnerTeam    = AllUtils.GetWinnerTeam(room);
                    ushort         result1;
                    ushort         result2;
                    byte[]         data;
                    AllUtils.getBattleResult(room,out result1,out result2,out data);
                    foreach (Account p1 in allPlayers)
                    {
                        p1.SendCompletePacket(completeBytes);
                        p1.SendPacket((SendPacket) new BATTLE_ENDBATTLE_PAK(p1,winnerTeam,result2,result1,true,data));
                    }
                }
            }
            AllUtils.resetBattleInfo(room);
        }
        private void LeaveHostBOT_EndBattle(Room room,Account p)
        {
            List <Account> players = room.getAllPlayers(SLOT_STATE.READY,1);

            if (players.Count == 0)
            {
                goto EndLabel;
            }
            using (BATTLE_LEAVEP2PSERVER_PAK packet = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
            {
                byte[]         data = packet.GetCompleteBytes();
                TeamResultType winnerTeam = AllUtils.GetWinnerTeam(room);
                ushort         inBattle,missionCompletes;
                byte[]         a1;
                AllUtils.getBattleResult(room,out missionCompletes,out inBattle,out a1);
                foreach (Account pR in players)
                {
                    pR.SendCompletePacket(data);
                    pR.SendPacket(new BATTLE_ENDBATTLE_PAK(pR,winnerTeam,inBattle,missionCompletes,true,a1));
                }
            }
EndLabel:
            AllUtils.resetBattleInfo(room);
        }
예제 #7
0
 private void LeavePlayer_QuitBattle(Room room,Account p)
 {
     using (BATTLE_LEAVEP2PSERVER_PAK leaveP2PserverPak = new BATTLE_LEAVEP2PSERVER_PAK(p,0))
         room.SendPacketToPlayers((SendPacket)leaveP2PserverPak,SLOT_STATE.READY,1);
 }