Thread: 876 Disable Lobby

Page 1 of 3 123 LastLast
Results 1 to 10 of 23
  1. #1 876 Disable Lobby 
    Donator
    The Stoned's Avatar
    Join Date
    Jan 2013
    Posts
    647
    Thanks given
    62
    Thanks received
    82
    Rep Power
    62
    I am working with Nocturne's 876 project, and would like to disable the lobby functionality on login.

    In LoginPacketsDecoder, I have found this, but begin to get errors when altering opcode 19.
    Code:
    		if (opcode == 16 || opcode == 18) // 16 world login
    			decodeWorldLogin(new InputStream(d));
    		else if (opcode == 19)
    			decodeLobbyLogin(new InputStream(d));
    Can someone help me figure out what to disable in the client as well?
    Reply With Quote  
     

  2. #2  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    You don't really have to disable it in the server, just remove it from the client in the first place. Check out other clients like 718 matrix to see how they did it. Assuming it's similar on 876
    Project thread
    Reply With Quote  
     

  3. #3  
    Donator
    The Stoned's Avatar
    Join Date
    Jan 2013
    Posts
    647
    Thanks given
    62
    Thanks received
    82
    Rep Power
    62
    Quote Originally Posted by clem585 View Post
    You don't really have to disable it in the server, just remove it from the client in the first place. Check out other clients like 718 matrix to see how they did it. Assuming it's similar on 876
    After looking through a 718 client with the LOBBY_ENABLED feature, there are 3 files involved with the lobby (client, class497, class78) . Now the game is to figure out what is the same between the 2 versions.

    the section that interests me the most is from the 718 client.java
    Code:
    if (0 == anInt8692 * -333700189) {
    			Class423.aSocket5355 = Loader.LOBBY_ENABLED ? IPAddress.createSocket(Loader.LOBBY_IP, Loader.LOBBY_PORT) : Class474.aClass471_5979.method6056(295506052);
    			anInt8692 += -244111349;
    		    }
    I think I have found the same thing in the 876 client.java, but do not understand it.
    Code:
     if(0 == anInt11039 * 1421601765) {
                   Class604.aSocket7894 = Class16.aClass6_169.method549(55669493);
                   anInt11039 += 750017005;
                }
    Does this make sense?
    Last edited by The Stoned; 05-12-2020 at 10:09 PM.
    Reply With Quote  
     

  4. #4  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Quote Originally Posted by The Stoned View Post
    After looking through a 718 client with the LOBBY_ENABLED feature, there are 3 files involved with the lobby (client, class497, class78) . Now the game is to figure out what is the same between the 2 versions.

    the section that interests me the most is from the 718 client.java
    Code:
    if (0 == anInt8692 * -333700189) {
    			Class423.aSocket5355 = Loader.LOBBY_ENABLED ? IPAddress.createSocket(Loader.LOBBY_IP, Loader.LOBBY_PORT) : Class474.aClass471_5979.method6056(295506052);
    			anInt8692 += -244111349;
    		    }
    I think I have found the same thing in the 876 client.java, but do not understand it.
    Code:
     if(0 == anInt11039 * 1421601765) {
                   Class604.aSocket7894 = Class16.aClass6_169.method549(55669493);
                   anInt11039 += 750017005;
                }
    Does this make sense?
    Yea, you just have to recreate the constants in Loader (or any file really), nothing special;

    Code:
    Class604.aSocket7894 = Loader.LOBBY_ENABLED ? IPAddress.createSocket(Loader.LOBBY_IP, Loader.LOBBY_PORT) : Class16.aClass6_169.method549(55669493);
    This just manually creates the socket that points to the lobby if it's enabled, otherwise it uses the default server one (the IP that is specified in the client parameters)
    Project thread
    Reply With Quote  
     

  5. #5  
    Donator
    The Stoned's Avatar
    Join Date
    Jan 2013
    Posts
    647
    Thanks given
    62
    Thanks received
    82
    Rep Power
    62
    Quote Originally Posted by clem585 View Post
    Yea, you just have to recreate the constants in Loader (or any file really), nothing special;

    Code:
    Class604.aSocket7894 = Loader.LOBBY_ENABLED ? IPAddress.createSocket(Loader.LOBBY_IP, Loader.LOBBY_PORT) : Class16.aClass6_169.method549(55669493);
    This just manually creates the socket that points to the lobby if it's enabled, otherwise it uses the default server one (the IP that is specified in the client parameters)
    Unfortunately, RS3 Client work is very unfamiliar to me. Do you know how I can pull this off?

    How does the "Play Now" button inside the lobby know to load into the world?
    Last edited by The Stoned; 05-13-2020 at 03:54 AM.
    Reply With Quote  
     

  6. #6  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Quote Originally Posted by The Stoned View Post
    Unfortunately, RS3 Client work is very unfamiliar to me. Do you know how I can pull this off?

    How does the "Play Now" button inside the lobby know to load into the world?
    It's just creating constants in Loader...

    Code:
    public static final boolean LOBBY_ENABLED  = true;
    public static final String LOBBY_IP = "127.0.0.1";
    public static final int LOBBY_PORT = 43594; // or w/e your port is
    The play now button selects the default world (sent on lobby login) from the world list sent to the client. When lobby is disabled, it will directly send the world login request to the server instead of a lobby login request, so that's how it logs you directly into the world.
    Project thread
    Reply With Quote  
     

  7. #7  
    Donator
    The Stoned's Avatar
    Join Date
    Jan 2013
    Posts
    647
    Thanks given
    62
    Thanks received
    82
    Rep Power
    62
    Quote Originally Posted by clem585 View Post
    It's just creating constants in Loader...

    Code:
    public static final boolean LOBBY_ENABLED  = true;
    public static final String LOBBY_IP = "127.0.0.1";
    public static final int LOBBY_PORT = 43594; // or w/e your port is
    The play now button selects the default world (sent on lobby login) from the world list sent to the client. When lobby is disabled, it will directly send the world login request to the server instead of a lobby login request, so that's how it logs you directly into the world.
    I think we are on different pages here. My client only has 1 pathway when executing a login (expects the lobby). There isn't any integration for the LOBBY_ENABLED functionality. I would have to find the code that connects directly to the world in my 876 client, which is the problem. If I knew what executed the world login, I would point straight to that.

    The code snippet I provided earlier was from a 718 client. Only a 718 client has loader.java I am using an 876 client that is built completely different.
    Reply With Quote  
     

  8. #8  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Quote Originally Posted by The Stoned View Post
    I think we are on different pages here. My client only has 1 pathway when executing a login (expects the lobby). There isn't any integration for the LOBBY_ENABLED functionality. I would have to find the code that connects directly to the world in my 876 client, which is the problem. If I knew what executed the world login, I would point straight to that.

    The code snippet I provided earlier was from a 718 client. Only a 718 client has loader.java I am using an 876 client that is built completely different.
    It doesn't have to be Loader, you can put your constants in any class. You're right, there is more changes to make in the client for it to work, but you have everything you need to implement the first part with the socket. The 2nd part you need to change, is some random class/int that is defined somewhere in your client:

    Code:
     // modified version
    static void method6208(String string, String string_2_, int i) {
    		try {
    			Class360.anInt3868 = Loader.LOBBY_ENABLED ? -1058684408 : 471358088;
    			Class360.aClass25_3905 = Loader.LOBBY_ENABLED ? client.aClass25_8693 : client.aClass25_8711;
    			Class460.method5981(false, false, string, string_2_, -1L);
    		} catch (RuntimeException runtimeexception) {
    			throw Class346.method4175(runtimeexception, new StringBuilder()
    					.append("um.z(").append(')').toString());
    		}
    	}
    
    //what it probably looks like right now
    
    static void method6208(String string, String string_2_, int i) {
    		try {
    			Class360.anInt3868 = 471358088;
    			Class360.aClass25_3905 = client.aClass25_8711;
    			Class460.method5981(false, false, string, string_2_, -1L);
    		} catch (RuntimeException runtimeexception) {
    			throw Class346.method4175(runtimeexception, new StringBuilder()
    					.append("um.z(").append(')').toString());
    		}
    	}
    Once you found this part, you can try looking for references to whatever "client.aClass25_8711" is in your client, and you should find the other class/obs. int pretty easily.
    Project thread
    Reply With Quote  
     

  9. #9  
    Donator
    The Stoned's Avatar
    Join Date
    Jan 2013
    Posts
    647
    Thanks given
    62
    Thanks received
    82
    Rep Power
    62
    Quote Originally Posted by clem585 View Post
    It doesn't have to be Loader, you can put your constants in any class. You're right, there is more changes to make in the client for it to work, but you have everything you need to implement the first part with the socket. The 2nd part you need to change, is some random class/int that is defined somewhere in your client:

    Code:
     // modified version
    static void method6208(String string, String string_2_, int i) {
    		try {
    			Class360.anInt3868 = Loader.LOBBY_ENABLED ? -1058684408 : 471358088;
    			Class360.aClass25_3905 = Loader.LOBBY_ENABLED ? client.aClass25_8693 : client.aClass25_8711;
    			Class460.method5981(false, false, string, string_2_, -1L);
    		} catch (RuntimeException runtimeexception) {
    			throw Class346.method4175(runtimeexception, new StringBuilder()
    					.append("um.z(").append(')').toString());
    		}
    	}
    
    //what it probably looks like right now
    
    static void method6208(String string, String string_2_, int i) {
    		try {
    			Class360.anInt3868 = 471358088;
    			Class360.aClass25_3905 = client.aClass25_8711;
    			Class460.method5981(false, false, string, string_2_, -1L);
    		} catch (RuntimeException runtimeexception) {
    			throw Class346.method4175(runtimeexception, new StringBuilder()
    					.append("um.z(").append(')').toString());
    		}
    	}
    Once you found this part, you can try looking for references to whatever "client.aClass25_8711" is in your client, and you should find the other class/obs. int pretty easily.
    Since the classes, methods, and ints are renamed in the client, it is very difficult to figure out the references. I will continue looking for any similarities to discover how to log directly into the world. If anyone knows how I can do this, I would appreciate the help.

    I have seen this been done in another rs3 client, but it is not a released client.
    Reply With Quote  
     

  10. #10  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Quote Originally Posted by The Stoned View Post
    Since the classes, methods, and ints are renamed in the client, it is very difficult to figure out the references. I will continue looking for any similarities to discover how to log directly into the world. If anyone knows how I can do this, I would appreciate the help.

    I have seen this been done in another rs3 client, but it is not a released client.
    Try looking for;

    Code:
    (false, false,
    or

    Code:
    -1L);
    Also the 2 classes should be defined in the static block of your client in a class array (I think):

    Code:
    static {
    ...
    aClass25Array8679 = new Class25[] { aClass25_8711, aClass25_8693 };
    ...
    }
    Project thread
    Reply With Quote  
     

Page 1 of 3 123 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Replies: 5
    Last Post: 11-21-2016, 01:44 AM
  2. Disabling Lobby
    By boric in forum Help
    Replies: 0
    Last Post: 08-16-2013, 01:39 AM
  3. How to disable lobby in 718 server?
    By rockarocka in forum Help
    Replies: 5
    Last Post: 05-24-2013, 08:08 PM
  4. 645 how to disable lobby
    By brain090 in forum Snippets
    Replies: 4
    Last Post: 05-16-2011, 05:40 AM
  5. Disabling the "Ancient" SideBar
    By Ninja Cat in forum Tutorials
    Replies: 10
    Last Post: 08-25-2007, 12:46 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •