public async void connection_OnMessageReceived(object sender, object message) { //======================= if (message is GameDTO) { GameDTO game = message as GameDTO; switch (game.GameState) { case "CHAMP_SELECT": if (this.firstTimeInLobby) { updateStatus("Bắt đầu trận thứ : " + solandachoi, ""); firstTimeInLobby = false; updateStatus("Đang chọn tướng !", Accountname); object obj = await connection.SetClientReceivedGameMessage(game.Id, "CHAMP_SELECT_CLIENT"); if (queueType != QueueTypes.ARAM) { if (Program.championId != "" && Program.championId != "RANDOM") { int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); await connection.SelectChampion(Enums.championToId(Program.championId)); updateStatus("Bạn chọn tướng : " + Program.championId, Accountname); updateStatus("Phép bổ trợ 1 : " + Program.spell1, Accountname); updateStatus("Phép bổ trợ 2 : " + Program.spell2, Accountname); await connection.ChampionSelectCompleted(); } else if (Program.championId == "RANDOM") { int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); var randAvailableChampsArray = availableChampsArray.Shuffle(); await connection.SelectChampion(randAvailableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); updateStatus("Chọn tướng ngẫu nhiên ", Accountname); updateStatus("Bạn chọn tướng : " + randAvailableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId, Accountname); updateStatus("Phép bổ trợ 1 : " + Spell1, Accountname); updateStatus("Phép bổ trợ 2 : " + Spell2, Accountname); await connection.ChampionSelectCompleted(); } else { int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); await connection.SelectChampion(availableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); updateStatus("Chọn tướng đầu tiên", Accountname); updateStatus("Bạn chọn tướng : " + availableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId, Accountname); updateStatus("Phép bổ trợ 1 : " + Spell1, Accountname); updateStatus("Phép bổ trợ 2 : " + Spell2, Accountname); await connection.ChampionSelectCompleted(); } } break; } else { break; } case "POST_CHAMP_SELECT": firstTimeInLobby = false; this.updateStatus("(Post Champ Select)", Accountname); break; case "PRE_CHAMP_SELECT": this.updateStatus("(Pre Champ Select)", Accountname); break; case "GAME_START_CLIENT": this.updateStatus("Trò chơi bắt đầu .", Accountname); break; case "GameClientConnectedToServer": this.updateStatus("Client kết nối tới sever .", Accountname); break; case "IN_QUEUE": this.updateStatus("Đang tìm trận ...", Accountname); QueueFlag = true; break; case "TERMINATED": if (solandachoi <= solanchoi) { updateStatus("Xong trận thứ : " + solandachoi, ""); this.updateStatus("Vào lại hàng chờ !", Accountname); solandachoi++; } else { connection.Disconnect(); updateStatus("Hết số lần chơi ! . Thoát LOL ...", ""); Process[] processes = Process.GetProcessesByName("RitoBot"); foreach (Process process in processes) { process.Kill(); process.WaitForExit(); } } Thread.Sleep(2000); this.firstTimeInQueuePop = true; break; case "JOINING_CHAMP_SELECT": if (this.firstTimeInQueuePop && game.StatusOfParticipants.Contains("1")) { this.updateStatus("Đang chờ người chơi !", Accountname); this.firstTimeInQueuePop = false; this.firstTimeInLobby = true; object obj = await this.connection.AcceptPoppedGame(true); break; } else { break; } case "LEAVER_BUSTED": this.updateStatus("Leave busted", Accountname); break; } } else if (message is PlayerCredentialsDto) { string str = ipath + "GAME\\"; /* string str = Enumerable.Last<string>((IEnumerable<string>)Enumerable.OrderBy<string, DateTime>(Directory.EnumerateDirectories((this.ipath ?? "") + "RADS\\solutions\\lol_game_client_sln\\releases\\"), (Func<string, DateTime>)(f => new DirectoryInfo(f).CreationTime))) + "\\deploy\\";*/ LoLLauncher.RiotObjects.Platform.Game.PlayerCredentialsDto credentials = message as PlayerCredentialsDto; System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.WorkingDirectory = str; startInfo.FileName = "League of Legends.exe"; startInfo.Arguments = "\"8394\" \"LoLLauncher.exe\" \"\" \"" + credentials.ServerIp + " " + credentials.ServerPort + " " + credentials.EncryptionKey + " " + credentials.SummonerId + "\""; updateStatus("League of Legends đang chạy !", Accountname); new Thread((ThreadStart)(() => { exeProcess = Process.Start(startInfo); exeProcess.Exited += exeProcess_Exited; while (exeProcess.MainWindowHandle == IntPtr.Zero) { ; } exeProcess.PriorityClass = ProcessPriorityClass.Idle; exeProcess.EnableRaisingEvents = true; })).Start(); } else if (!(message is GameNotification) && !(message is SearchingForMatchNotification)) { if (message is EndOfGameStats) { LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams matchParams = new LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams(); if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { this.updateStatus("Chế độ chơi : " + queueType.ToString(), Accountname); } else { try { updateStatus("Couldn't enter Q - " + m.PlayerJoinFailures.Summoner.Name + " : " + m.PlayerJoinFailures.ReasonFailed, Accountname); } catch (Exception) { if (QueueFlag) { Console.WriteLine( "Something went wrong, couldn't enter queue. Check accounts.txt for correct queue type."); connection.Disconnect(); } else { this.updateStatus("Bạn đang bị vào hàng chờ thấp ... VCC", Accountname); this.updateStatus("Tool đang check . đợi xíu . 1 phút 1 lần !", Accountname); Thread.Sleep(1000 * 60); EndOfGameStats eog = new EndOfGameStats(); connection_OnMessageReceived(sender, eog); } } } } else { if (message.ToString().Contains("EndOfGameStats")) { EndOfGameStats eog = new EndOfGameStats(); connection_OnMessageReceived(sender, eog); exeProcess.Exited -= exeProcess_Exited; exeProcess.Kill(); loginPacket = await this.connection.GetLoginDataPacketForUser(); archiveSumLevel = sumLevel; sumLevel = loginPacket.AllSummonerData.SummonerLevel.Level; if (sumLevel != archiveSumLevel) { levelUp(); } } } } //======================= }
private async void AttachToQueue() { MatchMakerParams matchParams = new MatchMakerParams(); //Set BotParams if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } //Check if is available to join queue. if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { this.updateStatus("In Queue: " + queueType.ToString(), Accountname); } else { foreach (var failure in m.PlayerJoinFailures) { if (failure.ReasonFailed == "LEAVER_BUSTED") { m_accessToken = failure.AccessToken; if (failure.LeaverPenaltyMillisRemaining > m_leaverBustedPenalty) { m_leaverBustedPenalty = failure.LeaverPenaltyMillisRemaining; } } else if (failure.ReasonFailed == "LEAVER_BUSTER_TAINTED_WARNING") { //updateStatus("Please login on your LoL Client and type I Agree to the message that comes up.", Accountname); await connection.ackLeaverBusterWarning(); await connection.callPersistenceMessaging(new SimpleDialogMessageResponse() { AccountID = loginPacket.AllSummonerData.Summoner.SumId, MsgID = loginPacket.AllSummonerData.Summoner.SumId, Command = "ack" }); connection_OnMessageReceived(null, (object)new EndOfGameStats()); } } if (String.IsNullOrEmpty(m_accessToken)) { // Queue dodger or something else } else { updateStatus("Waiting out leaver buster: " + m_leaverBustedPenalty / 1000 / (float)60 + " minutes!", Accountname); System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(m_leaverBustedPenalty)); m = await connection.AttachToLowPriorityQueue(matchParams, m_accessToken); if (m.PlayerJoinFailures == null) { this.updateStatus("Succesfully joined lower priority queue!", Accountname); } else { this.updateStatus("There was an error in joining lower priority queue.\nDisconnecting.", Accountname); connection.Disconnect(); parent.lognNewAccount(); } } } }
public async void joinQueue() { if (queueType == QueueTypes.CUSTOM) { CreatePracticeGame(); } else { LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams matchParams = new LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams(); if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; Program.QueueValid = false; LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); this.updateStatus("Trying to join queue", Accountname); if (m.PlayerJoinFailures == null) { this.updateStatus("In queue for " + queueType.ToString(), Accountname); } else { foreach (QueueDodger current in m.PlayerJoinFailures) { if (current.ReasonFailed == "LEAVER_BUSTED") { m_accessToken = current.AccessToken; if (current.LeaverPenaltyMillisRemaining > this.m_leaverBustedPenalty) { this.m_leaverBustedPenalty = current.LeaverPenaltyMillisRemaining; } } else { this.updateStatus("Queue busted, login to your account", Accountname); await Task.Delay(5000); this.joinQueue(); } } if (!string.IsNullOrEmpty(this.m_accessToken)) { this.updateStatus("Waiting leaver busted " + (float)(this.m_leaverBustedPenalty / 1000) / 60f, this.Accountname); Thread.Sleep(TimeSpan.FromMilliseconds((double)this.m_leaverBustedPenalty)); m = await connection.AttachToLowPriorityQueue(matchParams, this.m_accessToken); if (m.PlayerJoinFailures == null) { this.updateStatus("In queue for " + queueType.ToString(), this.Accountname); } else { this.joinQueue(); } } } } }
public async void connection_OnMessageReceived(object sender, object message) { if (message is GameDTO) { GameDTO game = message as GameDTO; switch (game.GameState) { case "CHAMP_SELECT": firstTimeInCustom = true; firstTimeInQueuePop = true; if (firstTimeInLobby) { firstTimeInLobby = false; updateStatus("In Champion Select", Accountname); await connection.SetClientReceivedGameMessage(game.Id, "CHAMP_SELECT_CLIENT"); if (queueType != QueueTypes.ARAM) { if (Core.championId != "") { await connection.SelectChampion(Enums.championToId(Core.championId)); await connection.ChampionSelectCompleted(); } else { await connection.SelectChampion(availableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); await connection.ChampionSelectCompleted(); } } break; } else { break; } case "POST_CHAMP_SELECT": firstTimeInLobby = false; updateStatus("(Post Champ Select)", Accountname); break; case "PRE_CHAMP_SELECT": updateStatus("(Pre Champ Select)", Accountname); break; case "GAME_START_CLIENT": updateStatus("Game client ran", Accountname); break; case "GameClientConnectedToServer": updateStatus("Client connected to the server", Accountname); break; case "IN_QUEUE": updateStatus("In Queue", Accountname); break; case "TERMINATED": updateStatus("Re-entering queue", Accountname); firstTimeInQueuePop = true; break; case "JOINING_CHAMP_SELECT": if (firstTimeInQueuePop) { updateStatus("Queue popped", Accountname); if (game.StatusOfParticipants.Contains("1")) { updateStatus("Accepted Queue", Accountname); firstTimeInQueuePop = false; firstTimeInLobby = true; await connection.AcceptPoppedGame(true); } } break; } } else if (message is PlayerCredentialsDto) { PlayerCredentialsDto dto = message as PlayerCredentialsDto; if (!HasLaunchedGame) { HasLaunchedGame = true; new Thread((ThreadStart)(() => { LaunchGame(dto); Thread.Sleep(3000); })).Start(); } } else if (!(message is GameNotification) && !(message is SearchingForMatchNotification)) { if (message is EndOfGameStats) { MatchMakerParams matchParams = new MatchMakerParams(); //Set BotParams if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } //Check if is available to join queue. if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { updateStatus("In Queue: " + queueType.ToString(), Accountname); } else { updateStatus("Couldn't enter Queue! Please contact us @ volibot.com", Accountname); } } else { if (message.ToString().Contains("EndOfGameStats")) { EndOfGameStats eog = new EndOfGameStats(); connection_OnMessageReceived(sender, eog); exeProcess.Kill(); loginPacket = await this.connection.GetLoginDataPacketForUser(); archiveSumLevel = sumLevel; sumLevel = loginPacket.AllSummonerData.SummonerLevel.Level; if (sumLevel != archiveSumLevel) { levelUp(); } } } } }
public async void connection_OnMessageReceived(object sender, object message) { if (message is GameDTO) { GameDTO game = message as GameDTO; switch (game.GameState) { case "CHAMP_SELECT": if (this.firstTimeInLobby) { firstTimeInLobby = false; updateStatus("In Champion Select", Accountname); object obj = await connection.SetClientReceivedGameMessage(game.Id, "CHAMP_SELECT_CLIENT"); if (queueType != QueueTypes.ARAM) { if (Program.championId != "") { await connection.SelectChampion(Enums.championToId(Program.championId)); await connection.ChampionSelectCompleted(); } else { await connection.SelectChampion(availableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); await connection.ChampionSelectCompleted(); int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); } } break; } else { break; } case "POST_CHAMP_SELECT": firstTimeInLobby = false; this.updateStatus("(Post Champ Select)", Accountname); break; case "PRE_CHAMP_SELECT": this.updateStatus("(Pre Champ Select)", Accountname); break; case "GAME_START_CLIENT": this.updateStatus("Game client ran", Accountname); break; case "GameClientConnectedToServer": this.updateStatus("Client connected to the server", Accountname); break; case "IN_QUEUE": this.updateStatus("In Queue", Accountname); break; case "TERMINATED": this.updateStatus("Re-entering queue", Accountname); this.firstTimeInQueuePop = true; break; case "JOINING_CHAMP_SELECT": if (this.firstTimeInQueuePop && game.StatusOfParticipants.Contains("1")) { this.updateStatus("Accepted Queue", Accountname); this.firstTimeInQueuePop = false; this.firstTimeInLobby = true; object obj = await this.connection.AcceptPoppedGame(true); break; } else { break; } } } else if (message is PlayerCredentialsDto) { string str = Enumerable.Last <string>((IEnumerable <string>)Enumerable.OrderBy <string, DateTime>(Directory.EnumerateDirectories((this.ipath ?? "") + "RADS\\solutions\\lol_game_client_sln\\releases\\"), (Func <string, DateTime>)(f => new DirectoryInfo(f).CreationTime))) + "\\deploy\\"; LoLLauncher.RiotObjects.Platform.Game.PlayerCredentialsDto credentials = message as PlayerCredentialsDto; System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.WorkingDirectory = str; startInfo.FileName = "League of Legends.exe"; startInfo.Arguments = "\"8394\" \"LoLLauncher.exe\" \"\" \"" + credentials.ServerIp + " " + credentials.ServerPort + " " + credentials.EncryptionKey + " " + credentials.SummonerId + "\""; updateStatus("Launching League of Legends", Accountname); new Thread((ThreadStart)(() => { exeProcess = Process.Start(startInfo); exeProcess.Exited += exeProcess_Exited; while (exeProcess.MainWindowHandle == IntPtr.Zero) { ; } exeProcess.PriorityClass = ProcessPriorityClass.Idle; exeProcess.EnableRaisingEvents = true; })).Start(); } else if (!(message is GameNotification) && !(message is SearchingForMatchNotification)) { if (message is EndOfGameStats) { LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams matchParams = new LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams(); if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { this.updateStatus("In Queue: " + queueType.ToString(), Accountname); } else { try { updateStatus("Couldn't enter Q - " + m.PlayerJoinFailures.Summoner.Name + " : " + m.PlayerJoinFailures.ReasonFailed, Accountname); } catch (Exception) { Console.WriteLine("Something went wrong, couldn't enter queue. Check accounts.txt for correct queue type."); connection.Disconnect(); } } } else { if (message.ToString().Contains("EndOfGameStats")) { EndOfGameStats eog = new EndOfGameStats(); connection_OnMessageReceived(sender, eog); exeProcess.Exited -= exeProcess_Exited; exeProcess.Kill(); loginPacket = await this.connection.GetLoginDataPacketForUser(); archiveSumLevel = sumLevel; sumLevel = loginPacket.AllSummonerData.SummonerLevel.Level; if (sumLevel != archiveSumLevel) { levelUp(); } } } } }
private async void connection_OnMessageReceived(object sender, object message) { if (message is GameDTO) { GameDTO game = message as GameDTO; Console.WriteLine("Message Type:" + game.GameState); switch (game.GameState) { case "START_REQUESTED": break; case "FAILED_TO_START": Console.WriteLine("Failed to Start!"); break; case "CHAMP_SELECT": firstTimeInCustom = true; firstTimeInQueuePop = true; if (firstTimeInLobby) { firstTimeInLobby = false; object obj = await connection.SetClientReceivedGameMessage(game.Id, "CHAMP_SELECT_CLIENT"); if (QueueType != QueueTypes.ARAM) { int Spell1; int Spell2; var random = new Random(); var spellList = new List <int> { 13, 6, 7, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); await connection.SelectSpells(Spell1, Spell2); var randAvailableChampsArray = myChampions.Shuffle(); await connection.SelectChampion(randAvailableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); await connection.ChampionSelectCompleted(); } break; } else { break; } case "PRE_CHAMP_SELECT": updateStatus(msgStatus.INFO, "Champion selection in progress"); break; case "POST_CHAMP_SELECT": firstTimeInLobby = false; if (firstTimeInPostChampSelect) { firstTimeInPostChampSelect = false; updateStatus(msgStatus.INFO, "Champion selection is done, waiting for game to start"); break; } else { break; } case "IN_QUEUE": updateStatus(msgStatus.INFO, "In Queue"); break; case "TERMINATED": updateStatus(msgStatus.INFO, "Re-entering queue"); firstTimeInPostChampSelect = true; firstTimeInQueuePop = true; break; case "JOINING_CHAMP_SELECT": if (firstTimeInQueuePop && game.StatusOfParticipants.Contains("1")) { updateStatus(msgStatus.INFO, "Accepted Queue"); firstTimeInQueuePop = false; firstTimeInLobby = true; object obj = await connection.AcceptPoppedGame(true); break; } else { break; } default: updateStatus(msgStatus.INFO, "[DEFAULT]" + game.GameStateString); break; } } else if (message.GetType() == typeof(TradeContractDTO)) { TradeContractDTO tradeDto = message as TradeContractDTO; if (tradeDto != null) { switch (tradeDto.State) { case "PENDING": if (tradeDto != null) { object obj = await connection.AcceptTrade(tradeDto.RequesterInternalSummonerName, (int)tradeDto.RequesterChampionId); break; } else { break; } } } } else if (message is PlayerCredentialsDto) { firstTimeInPostChampSelect = true; PlayerCredentialsDto dto = message as PlayerCredentialsDto; ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.WorkingDirectory = FindLoLExe(); startInfo.FileName = "League of Legends.exe"; startInfo.Arguments = "\"8394\" \"LoLLauncher.exe\" \"\" \"" + dto.ServerIp + " " + dto.ServerPort + " " + dto.EncryptionKey + " " + dto.SummonerId + "\""; updateStatus(msgStatus.INFO, "Launching League of Legends"); new Thread(() => { exeProcess = Process.Start(startInfo); exeProcess.EnableRaisingEvents = true; exeProcess.Exited += new EventHandler(exeProcess_Exited); while (exeProcess.MainWindowHandle == IntPtr.Zero) { } Console.WriteLine(exeProcess.MainWindowTitle); Thread.Sleep(1000); App.gameMask.addGame(info.username, info.region.ToString(), exeProcess); }).Start(); } else if (!(message is GameNotification) && !(message is SearchingForMatchNotification)) { if (message is EndOfGameStats) { object obj4 = await connection.ackLeaverBusterWarning(); object obj5 = await connection.callPersistenceMessaging(new SimpleDialogMessageResponse() { AccountID = loginDataPacket.AllSummonerData.Summoner.SumId, MsgID = loginDataPacket.AllSummonerData.Summoner.SumId, Command = "ack" }); MatchMakerParams matchParams = new MatchMakerParams(); checkAndUpdateQueueType(); if (QueueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (QueueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (QueueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } if (QueueType != 0) { matchParams.QueueIds = new Int32[1] { (int)QueueType }; SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { updateStatus(msgStatus.INFO, "In Queue: " + QueueType.ToString()); } else { foreach (var failure in m.PlayerJoinFailures) { if (failure.ReasonFailed == "LEAVER_BUSTED") { m_accessToken = failure.AccessToken; if (failure.LeaverPenaltyMillisRemaining > m_leaverBustedPenalty) { m_leaverBustedPenalty = failure.LeaverPenaltyMillisRemaining; } } Console.WriteLine("Start Failed:" + failure.ReasonFailed); } if (string.IsNullOrEmpty(m_accessToken)) { foreach (var failure in m.PlayerJoinFailures) { updateStatus(msgStatus.INFO, "Dodge Remaining Time: " + Convert.ToString((failure.DodgePenaltyRemainingTime / 1000 / (float)60)).Replace(",", ":") + "..."); } } else { double minutes = m_leaverBustedPenalty / 1000 / (float)60; updateStatus(msgStatus.INFO, "Waiting out leaver buster: " + minutes + " minutes!"); t = TimeSpan.FromMinutes((int)minutes); //Tick(); -> Enable to get visual time remaining Thread.Sleep(TimeSpan.FromMilliseconds(m_leaverBustedPenalty)); m = await connection.AttachToLowPriorityQueue(matchParams, m_accessToken); if (m.PlayerJoinFailures == null) { updateStatus(msgStatus.INFO, "Succesfully joined lower priority queue!"); } else { updateStatus(msgStatus.ERROR, "There was an error in joining lower priority queue.\nDisconnecting."); connection.Disconnect(); } } } } } else if (message.ToString().Contains("EndOfGameStats")) { EndOfGameStats eog = new EndOfGameStats(); exeProcess.Exited -= new EventHandler(exeProcess_Exited); exeProcess.Kill(); Thread.Sleep(500); if (exeProcess.Responding) { Process.Start("taskkill /F /IM \"League of Legends.exe\""); } loginDataPacket = await connection.GetLoginDataPacketForUser(); if (type == RotationType.SmurfDone) { if (info.desiredLevel > loginDataPacket.AllSummonerData.SummonerLevel.Level) { connection_OnMessageReceived(sender, eog); } else { connection.Disconnect(); } } else { connection_OnMessageReceived(sender, eog); } } } }
public async void connection_OnMessageReceived(object sender, object message) { if (message.ToString().Contains("LobbyStatus")) { String metaData = (String)((TypedObject)message)["gameMetaData"]; Match match = Regex.Match(metaData, "gameId\":([0-9]+),"); if (match.Success) { string gameId = match.Groups[1].Value; await connection.SwitchTeams(Convert.ToDouble(gameId)); } } else if (message is LoLLauncher.RiotObjects.Platform.Game.GameDTO) { LoLLauncher.RiotObjects.Platform.Game.GameDTO game = message as LoLLauncher.RiotObjects.Platform.Game.GameDTO; switch (game.GameState) { case "IDLE": break; case "TEAM_SELECT": if (firstTimeInCustom) { updateStatus("Entering champion selection"); await connection.StartChampionSelection(game.Id, game.OptimisticLock); firstTimeInCustom = false; } break; case "CHAMP_SELECT": firstTimeInCustom = true; firstTimeInQueuePop = true; if (firstTimeInLobby) { firstTimeInLobby = false; updateStatus("Champion Select - Waiting for game to start"); await connection.SetClientReceivedGameMessage(game.Id, "CHAMP_SELECT_CLIENT"); if (queueType != QueueTypes.ARAM) { await connection.SelectChampion(availableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); await connection.ChampionSelectCompleted(); } } break; case "POST_CHAMP_SELECT": break; case "PRE_CHAMP_SELECT": break; case "START_REQUESTED": break; case "GAME_START_CLIENT": break; case "GameClientConnectedToServer": break; case "IN_PROGRESS": break; case "IN_QUEUE": break; case "POST_GAME": break; case "TERMINATED": if (queueType == QueueTypes.CUSTOM) { CreatePracticeGame(); } else { updateStatus("Re-entering queue due to someone dodging"); firstTimeInQueuePop = true; } break; case "TERMINATED_IN_ERROR": break; case "CHAMP_SELECT_CLIENT": break; case "GameReconnect": break; case "GAME_IN_PROGRESS": break; case "JOINING_CHAMP_SELECT": if (firstTimeInQueuePop) { updateStatus("Queue popped"); if (game.StatusOfParticipants.Contains("1")) { updateStatus("Accepted Queue"); firstTimeInQueuePop = false; firstTimeInLobby = true; await connection.AcceptPoppedGame(true); } } break; case "WAITING": break; case "DISCONNECTED": break; default: break; } } else if (message is LoLLauncher.RiotObjects.Platform.Game.PlayerCredentialsDto) { LoLLauncher.RiotObjects.Platform.Game.PlayerCredentialsDto credentials = message as LoLLauncher.RiotObjects.Platform.Game.PlayerCredentialsDto; System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.WorkingDirectory = installPath; startInfo.FileName = "League of Legends.exe"; startInfo.Arguments = "\"8394\" \"LoLLauncher.exe\" \"\" \"" + credentials.ServerIp + " " + credentials.ServerPort + " " + credentials.EncryptionKey + " " + credentials.SummonerId + "\""; updateStatus("Playing League of Legends"); new Thread(() => { exeProcess = System.Diagnostics.Process.Start(startInfo); while (exeProcess.MainWindowHandle == IntPtr.Zero) { } Thread.Sleep(1000); SetParent(exeProcess.MainWindowHandle, panelHandle); MoveWindow(exeProcess.MainWindowHandle, 0, 0, 600, 400, true); }).Start(); } else if (message is LoLLauncher.RiotObjects.Platform.Game.Message.GameNotification) { } else if (message is LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification) { } else if (message is LoLLauncher.RiotObjects.Platform.Statistics.EndOfGameStats) { if (queueType == QueueTypes.CUSTOM) { CreatePracticeGame(); } else { updateStatus("Joining Queue"); LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams matchParams = new LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams(); if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } matchParams.QueueIds = new Int32[1] { (int)queueType }; LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { updateStatus("Joined Queue"); } else { updateStatus("Couldn't enter Q - " + m.PlayerJoinFailures.Summoner.Name + " : " + m.PlayerJoinFailures.ReasonFailed); } } } else { if (message.ToString().Contains("EndOfGameStats")) { exeProcess.Kill(); LoLLauncher.RiotObjects.Platform.Statistics.EndOfGameStats eog = new LoLLauncher.RiotObjects.Platform.Statistics.EndOfGameStats(); connection_OnMessageReceived(sender, eog); } } }
public async void joinQueue() { if (queueType == QueueTypes.CUSTOM) { CreatePracticeGame(); } else { LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams matchParams = new LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams(); if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); this.updateStatus("Trying to join queue", Accountname); if (m.PlayerJoinFailures == null) { this.updateStatus("In queue for " + queueType.ToString(), Accountname); } else { List <QueueDodger> .Enumerator enumerator = m.PlayerJoinFailures.GetEnumerator(); try { while (enumerator.MoveNext()) { QueueDodger current = enumerator.Current; if (current.ReasonFailed == "LEAVER_BUSTED") { this.m_accessToken = current.AccessToken; if (current.LeaverPenaltyMillisRemaining > this.m_leaverBustedPenalty) { this.m_leaverBustedPenalty = current.LeaverPenaltyMillisRemaining; } } } } finally { enumerator.Dispose(); } if (string.IsNullOrEmpty(this.m_accessToken)) { List <QueueDodger> .Enumerator enumerator2 = m.PlayerJoinFailures.GetEnumerator(); try { while (enumerator2.MoveNext()) { QueueDodger dodger2 = enumerator2.Current; this.updateStatus("Dodge Remaining Time: " + Convert.ToString((float)(((float)(dodger2.DodgePenaltyRemainingTime / 0x3e8)) / 60f)).Replace(",", ":") + "...", Accountname); if (dodger2.DodgePenaltyRemainingTime == 0 || dodger2.LeaverPenaltyMillisRemaining == 0) { this.updateStatus("You need login to your account using the game client and type 'I accept' to use HFL", Accountname); connection.Disconnect(); } } return; } finally { enumerator2.Dispose(); } } double minutes = ((float)(this.m_leaverBustedPenalty / 0x3e8)) / 60f; this.updateStatus("Waiting out leaver buster: " + minutes + " minutes!", Accountname); Thread.Sleep(TimeSpan.FromMilliseconds((double)this.m_leaverBustedPenalty)); m = await this.connection.AttachToLowPriorityQueue(matchParams, this.m_accessToken); if (m.PlayerJoinFailures == null) { this.updateStatus("Succesfully joined lower priority queue!", Accountname); } else { this.updateStatus("There was an error in joining lower priority queue.Disconnecting...", Accountname); this.connection.Disconnect(); } } } }
public async void connection_OnMessageReceived(object sender, object message) { if (message is GameDTO) { GameDTO game = message as GameDTO; switch (game.GameState) { case "TEAM_SELECT": if (Program.IsGameCreated == true && Program.LobbyPlayers == Program.maxBots && Program.LobbyOwner.Equals(Accountname) && leader) { Thread.Sleep(2000); this.updateStatus("Start Custom Game", Accountname); await connection.StartChampionSelection(Program.GameID, game.OptimisticLock); } break; case "CHAMP_SELECT": if (this.firstTimeInLobby) { firstTimeInLobby = false; updateStatus("In Champion Select", Accountname); object obj = await connection.SetClientReceivedGameMessage(game.Id, "CHAMP_SELECT_CLIENT"); if (queueType != QueueTypes.ARAM) { if (Program.championId != "" && Program.championId != "RANDOM") { int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); await connection.SelectChampion(Enums.championToId(Program.championId)); this.updateStatus("Champion Pick : " + Program.championId, this.Accountname); await connection.ChampionSelectCompleted(); } else if (Program.championId == "RANDOM") { int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); var randAvailableChampsArray = availableChampsArray.Shuffle(); await connection.SelectChampion(randAvailableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); this.updateStatus("Random Champion", this.Accountname); await connection.ChampionSelectCompleted(); } else { int Spell1; int Spell2; if (!Program.rndSpell) { Spell1 = Enums.spellToId(Program.spell1); Spell2 = Enums.spellToId(Program.spell2); } else { var random = new Random(); var spellList = new List <int> { 13, 6, 7, 10, 1, 11, 21, 12, 3, 14, 2, 4 }; int index = random.Next(spellList.Count); int index2 = random.Next(spellList.Count); int randomSpell1 = spellList[index]; int randomSpell2 = spellList[index2]; if (randomSpell1 == randomSpell2) { int index3 = random.Next(spellList.Count); randomSpell2 = spellList[index3]; } Spell1 = Convert.ToInt32(randomSpell1); Spell2 = Convert.ToInt32(randomSpell2); } await connection.SelectSpells(Spell1, Spell2); await connection.SelectChampion(availableChampsArray.First(champ => champ.Owned || champ.FreeToPlay).ChampionId); this.updateStatus("Random Champion", this.Accountname); await connection.ChampionSelectCompleted(); } } break; } else { break; } case "POST_CHAMP_SELECT": firstTimeInLobby = false; this.updateStatus("(Post Champ Select)", Accountname); break; case "PRE_CHAMP_SELECT": this.updateStatus("(Pre Champ Select)", Accountname); break; case "GAME_START_CLIENT": this.updateStatus("Game client ran", Accountname); break; case "GameClientConnectedToServer": this.updateStatus("Client connected to the server", Accountname); break; case "IN_QUEUE": this.updateStatus("In Queue", Accountname); QueueFlag = true; break; case "TERMINATED": this.firstTimeInQueuePop = true; break; case "JOINING_CHAMP_SELECT": if (this.firstTimeInQueuePop && game.StatusOfParticipants.Contains("1")) { this.updateStatus("Accepted Queue", Accountname); this.firstTimeInQueuePop = false; this.firstTimeInLobby = true; object obj = await this.connection.AcceptPoppedGame(true); break; } else { break; } case "LEAVER_BUSTED": this.updateStatus("Leave busted", Accountname); break; } } else if (message is PlayerCredentialsDto) { string str = ipath + "GAME\\"; LoLLauncher.RiotObjects.Platform.Game.PlayerCredentialsDto credentials = message as PlayerCredentialsDto; System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.WorkingDirectory = str; startInfo.FileName = "League of Legends.exe"; startInfo.Arguments = "\"8394\" \"LoLLauncher.exe\" \"\" \"" + credentials.ServerIp + " " + credentials.ServerPort + " " + credentials.EncryptionKey + " " + credentials.SummonerId + "\""; updateStatus("Launching League of Legends", Accountname); new Thread((ThreadStart)(() => { exeProcess = Process.Start(startInfo); exeProcess.Exited += exeProcess_Exited; while (exeProcess.MainWindowHandle == IntPtr.Zero) { ; } exeProcess.PriorityClass = ProcessPriorityClass.Idle; exeProcess.EnableRaisingEvents = true; })).Start(); p = true; Program.IsGameCreated = false; totalgame++; } else if (message is EndOfGameStats) { EndOfGameStats eog = message as EndOfGameStats; if (p) { Console.ForegroundColor = ConsoleColor.Magenta; this.updateStatus("========Result========", this.Accountname); var tempxp = eog.ExperienceEarned + eog.BoostXpEarned; var tempip = eog.IpEarned + eog.BoostIpEarned; ip = ip + tempip; xp = xp + tempxp; bool tempvic = false; var allParticipants = new List <PlayerParticipantStatsSummary>(eog.TeamPlayerParticipantStats.ToArray()); foreach (PlayerParticipantStatsSummary summary in allParticipants) { foreach (RawStatDTO stat in summary.Statistics.Where(stat => stat.StatTypeName.ToLower() == "win")) { if (summary.SummonerName == loginPacket.AllSummonerData.Summoner.Name) { win++; tempvic = true; } } } if (tempvic) { this.updateStatus("Victory!", this.Accountname); } else { this.updateStatus("Defeat!", this.Accountname); } this.updateStatus("IP Earned: " + tempip, this.Accountname); this.updateStatus("XP Earned: " + tempxp, this.Accountname); var winrate = (win / totalgame) * 100; this.updateStatus("Win Rate: " + winrate + "%" + "(Win: " + win + " TotalGame: " + totalgame + ")", this.Accountname); if (loginPacket.AllSummonerData.SummonerLevel.Level < 30) { var xpnextlevel = loginPacket.AllSummonerData.SummonerLevel.ExpToNextLevel; this.updateStatus("Exp to Next Level : " + xpnextlevel, this.Accountname); } this.updateStatus("====================", this.Accountname); Console.ForegroundColor = ConsoleColor.Green; Console.Title = " Current Connected: " + Program.connectedAccs + " Total IP: " + ip + " Total XP:" + xp + " Total Game: " + totalgame + " WinRate: " + winrate + "%"; exeProcess.Exited -= exeProcess_Exited; exeProcess.Kill(); p = false; loginPacket = await this.connection.GetLoginDataPacketForUser(); archiveSumLevel = sumLevel; sumLevel = loginPacket.AllSummonerData.SummonerLevel.Level; if (sumLevel != archiveSumLevel) { levelUp(); } this.updateStatus("Re-entering queue", Accountname); } if (queueType == QueueTypes.CUSTOM_DOM_3x3 || queueType == QueueTypes.CUSTOM_HA_3x3) { if (Program.IsGameCreated == false && leader) { PracticeGameConfig cfg = new PracticeGameConfig(); BotParticipant bcg = new BotParticipant(); GameMap map = new GameMap(); if (queueType == QueueTypes.CUSTOM_DOM_3x3) { map.Description = "desc"; map.DisplayName = "Crystal Scar"; map.TotalPlayers = 6; map.Name = "Crystal Scar"; map.MapId = (int)GameMode.Dominion; map.MinCustomPlayers = 1; cfg.GameMode = StringEnum.GetStringValue(GameMode.Dominion); } else { map.Description = "desc"; map.DisplayName = "Howling Abyss"; map.TotalPlayers = 6; map.Name = "Howling Abyss"; map.MapId = (int)GameMode.HowlingAbyss; map.MinCustomPlayers = 1; cfg.GameMode = StringEnum.GetStringValue(GameMode.HowlingAbyss); } cfg.GameName = RandomString(10); cfg.GamePassword = "******"; cfg.GameMap = map; cfg.MaxNumPlayers = 6; cfg.GameTypeConfig = 1; cfg.AllowSpectators = "NONE"; GameDTO result = await connection.CreatePracticeGame(cfg); // Custom game has been created; Program.IsGameCreated = true; Program.GameID = result.Id; Program.LobbyOwner = Accountname; Program.LobbyPlayers = 1; // Notify updateStatus(" Game [" + Program.GameID + "] has been created. Lobby password: "******"Waiting Leader Create Room", Accountname); } while (!Program.IsGameCreated); if (Program.IsGameCreated == true && Program.LobbyOwner != Accountname && Program.LobbyPlayers < Program.maxBots && !leader) { Program.LobbyPlayers++; await connection.JoinGame(Program.GameID, "Paruru"); updateStatus(" Player has joined the lobby! Players: [" + Program.LobbyPlayers + "/" + Program.maxBots + "]", Accountname); System.Threading.Thread.Sleep(5000); } } } else { LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams matchParams = new LoLLauncher.RiotObjects.Platform.Matchmaking.MatchMakerParams(); if (queueType == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queueType == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queueType == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } if (sumLevel == 3 && actualQueueType == QueueTypes.NORMAL_5x5) { queueType = actualQueueType; } else if (sumLevel == 6 && actualQueueType == QueueTypes.ARAM) { queueType = actualQueueType; } else if (sumLevel == 7 && actualQueueType == QueueTypes.NORMAL_3x3) { queueType = actualQueueType; } matchParams.QueueIds = new Int32[1] { (int)queueType }; LoLLauncher.RiotObjects.Platform.Matchmaking.SearchingForMatchNotification m = await connection.AttachToQueue(matchParams); if (m.PlayerJoinFailures == null) { this.updateStatus("In Queue: " + queueType.ToString(), Accountname); } else { foreach (QueueDodger current in m.PlayerJoinFailures) { if (current.ReasonFailed == "LEAVER_BUSTED") { m_accessToken = current.AccessToken; if (current.LeaverPenaltyMillisRemaining > this.m_leaverBustedPenalty) { this.m_leaverBustedPenalty = current.LeaverPenaltyMillisRemaining; } } } if (!string.IsNullOrEmpty(this.m_accessToken)) { this.updateStatus("Waiting For Leaver Busted: " + (float)(this.m_leaverBustedPenalty / 1000) / 60f + " Minute", this.Accountname); Thread.Sleep(TimeSpan.FromMilliseconds((double)this.m_leaverBustedPenalty)); m = await connection.AttachToLowPriorityQueue(matchParams, this.m_accessToken); if (m.PlayerJoinFailures == null) { this.updateStatus("In Queue: " + queueType.ToString(), this.Accountname); } else { this.updateStatus("There was an error in joining lower priority queue.\nDisconnecting.", this.Accountname); this.connection.Disconnect(); } } } } } else { } }
private async void joinQueue() { MatchMakerParams matchParams = new MatchMakerParams(); if (queue == QueueTypes.INTRO_BOT) { matchParams.BotDifficulty = "INTRO"; } else if (queue == QueueTypes.BEGINNER_BOT) { matchParams.BotDifficulty = "EASY"; } else if (queue == QueueTypes.MEDIUM_BOT) { matchParams.BotDifficulty = "MEDIUM"; } mustQueue = queue; if (currentLevel < 3 && queue == QueueTypes.NORMAL_5x5) { Logger.Push("Need to be Level 3 before NORMAL_5x5 queue, joining Co-Op vs AI (Beginner) queue until 3.", "info", username); mustQueue = QueueTypes.BEGINNER_BOT; } if (currentLevel < 6 && queue == QueueTypes.ARAM) { Logger.Push("Need to be Level 6 before ARAM queue, joining Co-Op vs AI (Beginner) queue until 6.", "info", username); mustQueue = QueueTypes.BEGINNER_BOT; } if (currentLevel < 7 && queue == QueueTypes.NORMAL_3x3) { Logger.Push("Need to be Level 7 before NORMAL_3x3 queue, joining Co-Op vs AI (Beginner) queue until 6.", "info", username); mustQueue = QueueTypes.BEGINNER_BOT; } matchParams.QueueIds = new Int32[1] { (int)mustQueue }; lastMatchParams = matchParams; SearchingForMatchNotification message = await connection.AttachToQueue(matchParams); if (message.PlayerJoinFailures == null) { Logger.Push("In Queue: " + mustQueue.ToString(), "info", username); smurf.updateTimer(60 * 5); } else { dynamic failure = message.PlayerJoinFailures[0]; bool taintedWarning = false; foreach (QueueDodger current in message.PlayerJoinFailures) { if (current.ReasonFailed == "LEAVER_BUSTED") { m_accessToken = current.AccessToken; if (current.LeaverPenaltyMillisRemaining > this.m_leaverBustedPenalty) { this.m_leaverBustedPenalty = current.LeaverPenaltyMillisRemaining; } } if (current.ReasonFailed == "QUEUE_DODGER") { m_accessToken = current.AccessToken; if (current.DodgePenaltyRemainingTime > this.m_leaverBustedPenalty) { this.m_leaverBustedPenalty = current.DodgePenaltyRemainingTime; } } if (current.ReasonFailed == "LEAVER_BUSTER_TAINTED_WARNING") { Logger.Push("Login to your account using your real client and accept the popup you will see", "danger", username); taintedWarning = true; connection.Disconnect(); break; } } if (!string.IsNullOrEmpty(this.m_accessToken)) { double minutes = ((float)(this.m_leaverBustedPenalty / 0x3e8)) / 60f; smurf.updateTimer(Convert.ToInt32(Math.Round(minutes) + 10) * 60); Logger.Push("Waiting out leaver buster: " + minutes + " minutes!", "warning", username); Thread.Sleep(TimeSpan.FromMilliseconds((double)this.m_leaverBustedPenalty)); if (!m_disposed) { try { message = await connection.AttachToLowPriorityQueue(matchParams, this.m_accessToken); if (message.PlayerJoinFailures == null) { Logger.Push("Succesfully joined lower priority queue!", "info", username); } else { Logger.Push("There was an error in joining lower priority queue.Disconnecting...", "danger", username); smurf.restart(); } } catch (Exception ex) { } } } else { if (!taintedWarning) { double minutes = ((float)(this.m_leaverBustedPenalty / 0x3e8)) / 60f; if (minutes <= 0) { try { exeProcess.Exited -= exeProcess_Exited; exeProcess.Kill(); } catch (Exception ex) { } if (lastStarter != null) { startProcessor(lastStarter); } } else { Logger.Push("Waiting out queue buster: " + minutes + " minutes!", "warning", username); smurf.updateTimer(Convert.ToInt32(Math.Round((double)m_leaverBustedPenalty) + 2) * 60); Thread.Sleep(TimeSpan.FromMilliseconds((double)this.m_leaverBustedPenalty)); if (!m_disposed) { try { this.joinQueue(); } catch (Exception ex) { } } } } } } }