Esempio n. 1
0
        public static new TBDLobby CreateLobby(int queueId)
        {
            var lobby = new TBDLobby(queueId);

            Session.Current.CurrentLobby = lobby;

            var guid = RiotServices.TeambuilderDraftService.CreateDraftPremade(queueId);

            RiotServices.AddHandler(guid, lcds => {
                lobby.GotGameData(lcds);
                var task = RiotServices.GameInvitationService.CreateGroupFinderLobby(queueId, lobby.GroupData.Phase.PremadeID.ToString());
                task.ContinueWith(t => lobby.GotLobbyStatus(t.Result));
            });

            return(lobby);
        }
Esempio n. 2
0
        public static async Task <Session> Login(string user, string pass)
        {
            var client = new Session();

            client.LoginQueue = await RiotServices.GetAuthKey(Region, user, pass);

            if (client.LoginQueue.Token == null)
            {
                throw new AuthenticationException();
            }

            var context = RiotServices.RegisterObjects();

            client.RtmpConn = RiotServices.Client = new RtmpClient(new Uri("rtmps://" + Region.MainServer + ":2099"), context, RtmpSharp.IO.ObjectEncoding.Amf3);
            client.RtmpConn.MessageReceived += client.RtmpConn_MessageReceived;
            client.RtmpConn.Disconnected    += client.RtmpConn_Disconnected;
            await client.RtmpConn.ConnectAsync();

            var creds = new AuthenticationCredentials();

            creds.Username      = user;
            creds.Password      = pass;
            creds.ClientVersion = DataDragon.CurrentVersion;
            creds.Locale        = Locale;
            creds.Domain        = "lolclient.lol.riotgames.com";
            creds.AuthToken     = client.LoginQueue.Token;

            var loginSession = await RiotServices.LoginService.Login(creds);

            var bc    = $"bc-{loginSession.AccountSummary.AccountId}";
            var gn    = $"gn-{loginSession.AccountSummary.AccountId}";
            var cn    = $"cn-{loginSession.AccountSummary.AccountId}";
            var tasks = new[] {
                client.RtmpConn.SubscribeAsync("my-rtmps", "messagingDestination", "bc", bc),
                client.RtmpConn.SubscribeAsync("my-rtmps", "messagingDestination", gn, gn),
                client.RtmpConn.SubscribeAsync("my-rtmps", "messagingDestination", cn, cn),
            };
            await Task.WhenAll(tasks);

            bool authed = await client.RtmpConn.LoginAsync(creds.Username.ToLower(), loginSession.Token);

            string state = await RiotServices.AccountService.GetAccountState();

            client.Account = new Account(loginSession, await RiotServices.ClientFacadeService.GetLoginDataPacketForUser());

            client.Leagues = await RiotServices.LeaguesService.GetAllLeaguesForPlayer(client.Account.SummonerID);

            client.Connected      = true;
            client.ReconnectToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(client.Account.Name + ":" + client.LoginQueue.Token));

            client.StartHeartbeat();
            new Thread(() => {
                RiotServices.MatchmakerService.GetAvailableQueues().ContinueWith(client.GotQueues);
                RiotServices.InventoryService.GetAvailableChampions().ContinueWith(client.GotChampions);
                RiotServices.SummonerTeamService.CreatePlayer().ContinueWith(client.GotRankedTeamInfo);

                RiotServices.GameInvitationService.GetPendingInvitations().ContinueWith(t => {
                    foreach (var invite in t.Result)
                    {
                        if (invite is InvitationRequest)
                        {
                            client.OnInvited((InvitationRequest)invite);
                        }
                    }
                });
            }).Start();

            client.EnabledMaps = new List <int>();
            foreach (var item in client.Account.LoginPacket.ClientSystemStates.gameMapEnabledDTOList)
            {
                client.EnabledMaps.Add((int)item["gameMapId"]);
            }

            if (state?.Equals("ENABLED") != true)
            {
                Console.WriteLine(state);
                RiotServices.Client = null;
                throw new AuthenticationException(state);
            }

            client.Settings              = LoadSettings <UserSettings>(user);
            client.Settings.ProfileIcon  = client.Account.ProfileIconID;
            client.Settings.SummonerName = client.Account.Name;
            client.SummonerCache         = new SummonerCache();

            Current = client;

            client.ChatManager = new RiotChat();

            return(client);
        }