# Login The login screen is the first screen you see when you open a client and it finishes loading: ```{figure} ../../images/loginscreen.png ``` WaspLib's {ref}`TRSLogin` can handle both resizable and fixed mode login screens. - - - (LOGIN_MESSAGES)= ## Login Messages ```pascal const LOGIN_MESSAGES = [ 'Welcome to RuneScape', 'Connecting to server', ..., 'Authenticator' ]; ``` Constant of all the login messages the login screen can handle. - - - ## Login Enums ```pascal ERSLoginMode = enum(UNKNOWN, LEGACY, LAUNCHER); ERSLoginButton = enum(LAUNCHER, EXISTING_USER, LOGIN, RETRY, OKAY, CONTINUE); ERSLoginInput = enum(USERNAME, PASSWORD); ERSLoginMessage = enum(UNKNOWN, WELCOME, ..., AUTHENTICATOR); ``` Enums representing various aspects of the login screen. `ERSLoginMessage` is a enum representation of {ref}`LOGIN_MESSAGES`. - - - ## TRSLogin Main record responsible for handling the {ref}`Login` screen. ```{figure} ../../images/trslogin.png The login screen. ``` - - - ## Login.Setup ```pascal procedure TRSLogin.Setup(); ``` Internal method responsible for setting up the {ref}`TRSLogin` coordinates. This is automatically called for you on the {ref}`Login variable`. - - - ## Login.FindButton ```pascal function TRSLogin.FindButton(button: ERSLoginButton): Boolean; ``` Attempts to find the specified `ERSLoginButton`, returns `True` if we find it. - - - ## Login.ClickButton ```pascal function TRSLogin.ClickButton(button: ERSLoginButton): Boolean; ``` Attempts to click the specified `ERSLoginButton`, returns `True` if we succeed. Example: ```pascal WriteLn Login.ClickButton(ERSLoginButton.LOGIN); ``` - - - ## Login.SelectInput ```pascal function TRSLogin.SelectInput(field: ERSLoginInput): Boolean; ``` Attempts to select the specified `ERSLoginInput`, returns `True` if we succeed. This waits a few milliseconds for the flashing yellow cursor for confirmation. Example: ```pascal WriteLn Login.SelectInput(ERSLoginInput.USERNAME); ``` - - - ## Login.InputIsFilled ```pascal function TRSLogin.InputIsFilled(field: ERSLoginInput): Boolean; ``` Returns True/False if the specified `field` is filled. Example: ```pascal WriteLn Login.InputIsFilled(ERSLoginInput.USERNAME); ``` - - - ## Login.ClearInput ```pascal function TRSLogin.ClearInput(field: ERSLoginInput): Boolean; ``` Attempts to clear the specified `field`. Example: ```pascal WriteLn Login.ClearInput(ERSLoginInput.USERNAME); ``` - - - ## Login.FillInput ```pascal function TRSLogin.FillInput(field: ERSLoginInput; details: String): Boolean; ``` Attempts to fill the specified `field` with `details`. Example: ```pascal WriteLn Login.FillInput(ERSLoginInput.USERNAME, 'myprofile@email.com'); ``` - - - ## Login.GetMessage ```pascal function TRSLogin.GetMessage(): ERSLoginMessage; ``` Returns the currently visible login message as a `ERSLoginMessage`. Check {ref}`Login Enums` for more information on `ERSLoginMessage`. Example: ```pascal WriteLn Login.GetMessage(); ``` - - - ## Login.GetMode ```pascal function TRSLogin.GetMode(): ERSLoginMode; ``` Returns the current login mode as a `ERSLoginMode`. The login mode can only be known from the "Welcome to RuneScape" screen. Check {ref}`Login Enums` for more information on `ERSLoginMode`. Example: ```pascal WriteLn Login.GetMode(); ``` - - - ## Login.HandleWelcome ```pascal function TRSLogin.HandleWelcome(): Boolean; ``` Attempts to handle the "Welcome to RuneScape" screen regardless of the `ERSLoginMode` the client is on. Check {ref}`Login Enums` for more information on `ERSLoginMode`. Example: ```pascal WriteLn Login.HandleWelcome(); ``` - - - ## Login.Back2Welcome ```pascal function TRSLogin.Back2Welcome(): Boolean; ``` Attempts to return to the "Welcome to RuneScape" screen. This is used to handle any screen that has an "Ok" button. Returns True if we succeed. Example: ```pascal WriteLn Login.Back2Welcome(); ``` - - - ## Login.EnterCredentials ```pascal function TRSLogin.EnterCredentials(username, password: String): Boolean; ``` Attempts to enter a user credentials. Example: ```pascal WriteLn Login.EnterCredentials('username', 'password'); ``` - - - ## Login.Retry ```pascal function TRSLogin.Retry(msg: ERSLoginMessage): Boolean; ``` Attempts to handle any screen that has a "Retry" button. Returns True if we succeed. The current `ERSLoginMessage` message has to be passed as `msg` so we know when we successfully handled the button. - - - ## Login.HandleError ```pascal function TRSLogin.HandleError(msg: ERSLoginMessage): Boolean; ``` Attempts to handle any screen that has an error message. Returns True if we succeed. The current `ERSLoginMessage` message has to be passed as `msg` so we know when we successfully handled the current error. Everytime this function is called, the internal `Login.Attempts` variable is increased. After 10 times of this being called without `Login.Attempts` being reset, this will raise an exception **IF** the reason we can't login is not the world being full. **IF** the reason is the world being full, this can be called forever. - - - ## Login.HandleMessage ```pascal function TRSLogin.HandleMessage(msg: ERSLoginMessage; username, password: String): Boolean; ``` Attempts to handle whatever screen the login screen is currently at. Returns True if we succeed. The current `ERSLoginMessage` message has to be passed as `msg` so we know when we successfully handled the current error. The profile `username` and `password` we want to use also have to be passed in. This can be empty value if we are using the Jagex Launcher, e.g.: `'', ''`. On certain `ERSLoginMessages` that cannot be handled this will raise an exception to shutdown your script. For example, if the profile you are trying to use has been banned. - - - ## Login.SwitchWorld ```pascal procedure TRSLogin.SwitchWorld(worlds: TIntegerArray); ``` Ensures we are on a world declared in the profile, retrying transient failures before giving up. - - - ## Login.DoLogin ```pascal function TRSLogin.DoLogin(profile: TProfile): Boolean; ``` Attempts to login into `profile`. If we login, the {ref}`Lobby` screen is handled for you. Returns true if we succeed. Example: ```pascal WriteLn Login.DoLogin(profile); ``` - - - ## Login variable Global {ref}`TRSLogin` variable.