Пример #1
0
        private void JoinGameButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (ServerListView.Items.Count > 0 && ServerListView.Items[selectedServer] != null && serverList[selectedServer] != null)
                {
                    VarStorage.GameServer curServer = serverList[selectedServer];
                    if (ServerListView.Items[selectedServer].Text == curServer.ServerName)
                    {
                        string oldIP   = GlobalVars.IP;
                        int    oldPort = GlobalVars.JoinPort;
                        GlobalVars.IP       = curServer.ServerIP;
                        GlobalVars.JoinPort = curServer.ServerPort;
#if LAUNCHER
                        GlobalFuncs.LaunchRBXClient(curServer.ServerClient, ScriptType.Client, false, false, null, null);
#else
                        GlobalFuncs.LaunchRBXClient(curServer.ServerClient, ScriptType.Client, false, false, null);
#endif
                        GlobalVars.IP       = oldIP;
                        GlobalVars.JoinPort = oldPort;
                    }
                }
                else
                {
                    MessageBox.Show("Select a server before joining it.");
                }
            }
            catch (Exception)
            {
            }
        }
Пример #2
0
        async Task LoadServerInfoFromFile(string url)
        {
            //https://stackoverflow.com/questions/2471209/how-to-read-a-file-from-internet#2471245
            //https://stackoverflow.com/questions/10826260/is-there-a-way-to-read-from-a-website-one-line-at-a-time
            //https://stackoverflow.com/questions/856885/httpwebrequest-to-url-with-dot-at-the-end
            MethodInfo getSyntax  = typeof(UriParser).GetMethod("GetSyntax", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
            FieldInfo  flagsField = typeof(UriParser).GetField("m_Flags", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            if (getSyntax != null && flagsField != null)
            {
                foreach (string scheme in new[] { "http", "https" })
                {
                    UriParser parser = (UriParser)getSyntax.Invoke(null, new object[] { scheme });
                    if (parser != null)
                    {
                        int flagsValue = (int)flagsField.GetValue(parser);
                        // Clear the CanonicalizeAsFilePath attribute
                        if ((flagsValue & 0x1000000) != 0)
                        {
                            flagsField.SetValue(parser, flagsValue & ~0x1000000);
                        }
                    }
                }
            }

            WebClient client = new WebClient();
            Uri       uri    = new Uri(url);

            using (Stream stream = await client.OpenReadTaskAsync(uri))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    string line;
                    while ((line = await reader.ReadLineAsync()) != null)
                    {
                        string   DecodedLine             = SecurityFuncs.Base64DecodeOld(line);
                        string[] serverInfo              = DecodedLine.Split('|');
                        VarStorage.GameServer gameServer = new VarStorage.GameServer(serverInfo[0], serverInfo[1], serverInfo[2], serverInfo[3]);
                        serverList.Add(gameServer);
                    }
                }
            }
        }