How to skip RuneScape NXT launcher splashscreen?

Discussion in 'RuneScape Programming' started by arrd, Oct 21, 2017.

How to skip RuneScape NXT launcher splashscreen?
  1. Unread #1 - Oct 21, 2017 at 1:46 PM
  2. arrd
    Joined:
    Oct 13, 2017
    Posts:
    67
    Referrals:
    0
    Sythe Gold:
    55

    arrd Member

    How to skip RuneScape NXT launcher splashscreen?

    Hi All!
    I need to open RuneScape launcher and go directly to the main game. For what I'm doing, I cannot have the splashscreen open initially. How do I do this?

    Thanks!
     
  3. Unread #2 - Dec 1, 2017 at 3:41 PM
  4. Minted
    Joined:
    Dec 1, 2017
    Posts:
    70
    Referrals:
    0
    Sythe Gold:
    22

    Minted Member

    How to skip RuneScape NXT launcher splashscreen?

    What programming language are you using?

    I'll assume you're using C#...

    You're not going to be able to dissect the game packages enough to simply "skip" the launcher, however, you can make it appear this way to the user.

    Firstly, understand that the launcher consists of 2 processes: "rs2client" and "runescape". Both processes are required for the launcher to run, however, the main interface that you want (which relates to the main game window handle) is "rs2client". So, what I propose you do is start the RuneScape Launcher and a timer simultaneously. The timer will be set to a low tick interval as it will be used to set the process(es) as hwndChild to your form (or panel).

    Once the RuneScape Launcher has initiated, the timer will search for the "runescape" process, if it is not nothing, then it will be set as a child to the form (or in the example I wrote, child to the panel). As you can see, you're also sending a message to that process to be hidden, this means that the user won't be able to see, manipulate or disrupt the launcher splash screen while it's loading - I suggest that you indicate that it's loading using an infinite progress bar (as seen here):

    [​IMG]

    So, the code that I've been referring to (CS):

    Code:
        private void Timer1_Tick(object sender, EventArgs e) {
         
    p1 = Process.GetProcessesByName("runescape").FirstOrDefault;
    if (p1) {
    IsNot;
    null;
    SetParent(p1.MainWindowHandle, Panel1.Handle);
    SendMessage(p1.MainWindowHandle, WM_SYSCOMMAND, SW_HIDE, 0);
    }
    
    Every time the timer ticks, the "runescape" process is searched for, if found, it's set as a hidden process. Don't forget to make your declarations and such to refer to the functions used and their values.

    That should help you start, now, as a challenge, you're going to want to determine when the "RuneScape" handle (the main client window) has finally started, once it has, do the same as what I demonstrated above, but instead of "SW_HIDE", use "SW_MAXIMIZE" to maximize the window to the dimensions of the parenting control (which, in this case, is the panel1).

    A useful tool for getting the names of window handles (for borderless, invisible windows) is ILSpy.

    Good luck with whatever you're doing, and I hope this helped :)
    - Minted

    [EDIT]: If you're not using C#, you can easily convert .NET languages from one to the other using tools such as Telerik Converter. If you're using a more low-level language such as C or C++, I may be able to help you out more if you contact me.
     
    Last edited: Dec 1, 2017
< Cam's Private Scripting | Buying a script need someone experienced! >

Users viewing this thread
1 guest


 
 
Adblock breaks this site