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
|
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.
Can someone help me figure out what to disable in the client as well?Code:if (opcode == 16 || opcode == 18) // 16 world login decodeWorldLogin(new InputStream(d)); else if (opcode == 19) decodeLobbyLogin(new InputStream(d));
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
I think I have found the same thing in the 876 client.java, but do not understand it.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; }
Does this make sense?Code:if(0 == anInt11039 * 1421601765) { Class604.aSocket7894 = Class16.aClass6_169.method549(55669493); anInt11039 += 750017005; }
Last edited by The Stoned; 05-12-2020 at 10:09 PM.
Yea, you just have to recreate the constants in Loader (or any file really), nothing special;
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)Code:Class604.aSocket7894 = Loader.LOBBY_ENABLED ? IPAddress.createSocket(Loader.LOBBY_IP, Loader.LOBBY_PORT) : Class16.aClass6_169.method549(55669493);
It's just creating constants in Loader...
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.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
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:
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.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()); } }
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.
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |