//Speicify the player private async void getPlayerInformation(RlsPlatform platform, bool Steam2) { if (!platform_set) { plat = platform; } bar.Visible = true; button1.Visible = false; bar.Value = 1; try { player = await getPlayerTask(); } catch (Exception e) { Error(e.Message); Close(); return; } bar.Value = 3; player_set = true; openMain(); this.Hide(); }
private ulong GetPlatformRole(RlsPlatform platform) { switch (platform) { case RlsPlatform.Steam: return(386067580630073356); case RlsPlatform.Xbox: return(386067821035126784); case RlsPlatform.Ps4: return(386067907093856256); } throw new ArgumentException("Invalid platform."); }
public Player_Name_Platform() { InitializeComponent(); bar = progressBar1; progressBar1.Maximum = 3; try { TextReader tr = new StreamReader("SavedPlayer.txt"); savedPlayer = tr.ReadLine(); int.TryParse(tr.ReadLine(), out platform); tr.Close(); } catch (FileNotFoundException e) { ; } if (savedPlayer != null) { player_name.Text = savedPlayer; if (platform == 0) { plat = RlsPlatform.Steam; Steam = true; } if (platform == 1) { plat = RlsPlatform.Ps4; Steam = false; } if (platform == 2) { plat = RlsPlatform.Xbox; Steam = false; } platform_set = true; name = player_name.Text; getPlayerInformation(plat, Steam); } }
/// <summary> /// Retrieves player data. /// </summary> /// <param name="platform">The <see cref="RlsPlatform"/> of the player.</param> /// <param name="uniqueId">Steam 64 ID / PSN Username / Xbox Gamertag or XUID.</param> /// <returns></returns> public async Task <Player> GetPlayerAsync(RlsPlatform platform, string uniqueId) { return(await _api.Get <Player>($"player?unique_id={Uri.EscapeDataString(uniqueId)}&platform_id={(int)platform}")); }
/// <summary> /// Initialize a request for <see cref="RLSClient.GetPlayersAsync"/>. /// </summary> /// <param name="platform">The <see cref="RlsPlatform"/> of the player.</param> /// <param name="uniqueId">Steam 64 ID / PSN Username / Xbox Gamertag or XUID.</param> public PlayerBatchRequest(RlsPlatform platform, string uniqueId) { Platform = platform; UniqueId = uniqueId; }
public async Task LinkAsync() { await Context.Channel.TriggerTypingAsync(); var user = Context.Message.Author as SocketGuildUser; try { // check if discord id is already in the database var userinfo = await Database.GetUserInfoAsync(user.Id); if (userinfo == null) { await ReplyAsync($"{user.Mention}, no account info provided."); return; } // check if there are still unlinked playlists if (userinfo.Elo1s != -1 && userinfo.Elo2s != -1 && userinfo.Elo3s != -1) { await ReplyAsync($"{user.Mention}, you've already linked all your rocket league playlists to your discord."); return; } // get the platform from the user RlsPlatform platform = RlsPlatform.Steam; if (user.Roles.Contains(Context.Guild.GetRole(386067580630073356))) { platform = RlsPlatform.Steam; } else if (user.Roles.Contains(Context.Guild.GetRole(386067821035126784))) { platform = RlsPlatform.Xbox; } else if (user.Roles.Contains(Context.Guild.GetRole(386067907093856256))) { platform = RlsPlatform.Ps4; } else { await ReplyAsync($"{user.Mention}, couldn't retrieve your platform."); return; } // try to retrieve the account info and check if previously unranked playlists are now ranked var player = await _RLSClient.GetPlayerAsync(platform, userinfo.UniqueID); if (player == null) { await ReplyAsync($"Failed to retrieve player information!"); return; } if (!player.RankedSeasons.TryGetValue(Enum.GetValues(typeof(RlsSeason)).Cast <RlsSeason>().Max(), out var season)) { await ReplyAsync($"{user.Mention}, the account was found, but no information could be retrieved for the current season."); return; } List <IRole> roles = new List <IRole>(); int rp1 = userinfo.Elo1s; if (rp1 == -1 && season.TryGetValue(RlsPlaylistRanked.Duel, out PlayerRank duel)) { rp1 = duel.RankPoints; roles.Add(Context.Guild.GetRole(Global.GetRank(RlsPlaylistRanked.Duel, duel.RankPoints).RoleID)); } int rp2 = userinfo.Elo2s; if (rp2 == -1 && season.TryGetValue(RlsPlaylistRanked.Doubles, out PlayerRank doubles)) { rp2 = doubles.RankPoints; roles.Add(Context.Guild.GetRole(Global.GetRank(RlsPlaylistRanked.Doubles, doubles.RankPoints).RoleID)); } int rp3 = userinfo.Elo3s; if (rp3 == -1 && season.TryGetValue(RlsPlaylistRanked.Standard, out PlayerRank standard)) { rp3 = standard.RankPoints; roles.Add(Context.Guild.GetRole(Global.GetRank(RlsPlaylistRanked.Standard, standard.RankPoints).RoleID)); } if (rp1 == userinfo.Elo1s && rp2 == userinfo.Elo2s && rp3 == userinfo.Elo3s) { await ReplyAsync($"{user.Mention}, no new playlists have been linked."); return; } // try to add the user to the database with their current elo await Database.UpdateUserInfoAsync(user.Id, (short)rp1, (short)rp2, (short)rp3); // give the roles to the user await user.AddRolesAsync(roles); await ReplyAsync($"{user.Mention}, new playlists have been linked!"); } catch (Exception ex) { await ReplyAsync($"{user.Mention}, " + ex.Message); } }
public async Task LinkAsync([OverrideTypeReader(typeof(RLRegionTypeReader))] RLRegion region, [OverrideTypeReader(typeof(RLPlatformTypeReader))] RlsPlatform platform, [Remainder] string uniqueId) { await Context.Channel.TriggerTypingAsync(); var user = Context.Message.Author as SocketGuildUser; try { // check if discord id is already in the database if (await Database.GetUserInfoAsync(user.Id) != null) { await ReplyAsync($"{user.Mention}, you've already linked your rocket league account to your discord. If not all playlists are linked do `!link`."); return; } // try to retrieve the account info and show it to the user so he/she can confirm it's them var player = await _RLSClient.GetPlayerAsync(platform, uniqueId); if (player == null) { await ReplyAsync($"Failed to retrieve player information!"); return; } var embedBuilder = new EmbedBuilder() .WithColor(RLBot.EMBED_COLOR) .WithTitle($"Rocket League Stats") .AddField("Username", player.DisplayName) .WithThumbnailUrl(player.Avatar); if (!player.RankedSeasons.TryGetValue(Enum.GetValues(typeof(RlsSeason)).Cast <RlsSeason>().Max(), out var season)) { await ReplyAsync($"{user.Mention}, the following account was found, but no information could be retrieved for the current season.", false, embedBuilder.Build()); return; } List <IRole> roles = new List <IRole>(); int rp1 = -1; if (season.TryGetValue(RlsPlaylistRanked.Duel, out PlayerRank duel)) { embedBuilder.AddField("1V1", GetRankString(duel.Tier) + $" ({duel.RankPoints})", true); rp1 = duel.RankPoints; roles.Add(Context.Guild.GetRole(Global.GetRank(RlsPlaylistRanked.Duel, duel.RankPoints).RoleID)); } else { embedBuilder.AddField("1V1", "Unranked"); } int rp2 = -1; if (season.TryGetValue(RlsPlaylistRanked.Doubles, out PlayerRank doubles)) { embedBuilder.AddField("2V2", GetRankString(doubles.Tier) + $" ({doubles.RankPoints})", true); rp2 = doubles.RankPoints; roles.Add(Context.Guild.GetRole(Global.GetRank(RlsPlaylistRanked.Doubles, doubles.RankPoints).RoleID)); } else { embedBuilder.AddField("2V2", "Unranked"); } int rp3 = -1; if (season.TryGetValue(RlsPlaylistRanked.Standard, out PlayerRank standard)) { embedBuilder.AddField("3V3", GetRankString(standard.Tier) + $" ({standard.RankPoints})", true); rp3 = standard.RankPoints; roles.Add(Context.Guild.GetRole(Global.GetRank(RlsPlaylistRanked.Standard, standard.RankPoints).RoleID)); } else { embedBuilder.AddField("3V3", "Unranked"); } await ReplyAsync($"{user.Mention}, reply with yes if this is you. (Cannot be undone!)", false, embedBuilder.Build()); var msg = await NextMessageAsync(timeout : new TimeSpan(0, 0, 30)); if (msg == null) { await ReplyAsync("Message timed out.."); return; } else if (msg.Content.ToLower() != "yes" && msg.Content.ToLower() != "y") { await ReplyAsync($"{user.Mention}, account linking cancelled."); return; } // check if the user has all the required ranks if (rp1 == -1 && rp2 == -1 && rp3 == -1) { await ReplyAsync($"{user.Mention}, the accounts can't be linked untill you have received a rank in at least 1 playlist."); return; } // prepare the roles for the user roles.Add(Context.Guild.GetRole(GetRegionRole(region))); roles.Add(Context.Guild.GetRole(GetPlatformRole(platform))); // try to add the user to the database with their current elo await Database.InsertUserInfoAsync(user.Id, uniqueId, (short)rp1, (short)rp2, (short)rp3); // give the rolse to the user await user.AddRolesAsync(roles); await ReplyAsync($"Accounts linked succesfull!"); } catch (SqlException ex) when(ex.Number == 2627) { await ReplyAsync($"{user.Mention}, this account is already linked to someone else."); } catch (Exception ex) { await ReplyAsync($"{user.Mention}, " + ex.Message); } }