private void ButtonLogin_Click(object sender, EventArgs e) { username = textBoxName.Text; password = textBoxPassword.Text; server = textBoxServer.Text; var trainTroopType = comboBoxTroop.SelectedIndex; var farmlistTroopType = comboBoxTroop.SelectedIndex; if (username == string.Empty) { Bot.Log("Enter a valid username.", Color.Black); } else if (password == string.Empty) { Bot.Log("Enter a valid password.", Color.Black); } else if (Uri.CheckHostName(server) != UriHostNameType.Dns) { Bot.Log("Enter a valid server URL.", Color.Black); } else { travian = new Travian(username, password, server, trainTroopType, farmlistTroopType); travian.mainForm = this; Bot.Log("Loading page...", Color.Black); int loginAttempts = 1; threadLogin?.Abort(); threadLogin = new Thread(() => { while (!_login) { travian.GetToken(); var token = Info.LoginId; if (token.Length != 10) { Bot.Log("Token error, retrying in 2 seconds... Attempts: " + loginAttempts, Color.Black); Thread.Sleep(2000); loginAttempts++; continue; } else { Bot.Log("Logging in...", Color.Black); _login = travian.Login(token); } } Bot.Log("Logged in!", Color.Black); }); threadLogin.Start(); SaveUserSettings(); } }