-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement part of the old client 127 protocol for Account Creation and Password Recovery #41
Comments
I tested dragging a replay onto the client while at that "Click here to login" screen, and luckily, it seems to work properly, just going directly to replay. :p |
More information: The FORGOT_PASSWORD opcode existed in mudclient 127. It is client opcode 4 there, which conflicts with CLIENT_CAST_ON_INVENTORY_ITEM in the 235 protocol. ALSO |
Will be divided by 3 segments (feature updates) very likely
|
Account Creation has been implemented in #51 |
Although was not present in the 127, would like to also get added the in-game option of "Change contact details", this game option was featured sometime between mudclient 127 and 204. This can be seen in the mudclient 175 The relevant code block concerning protocol part would be like:
For reference, the code block above had been from deob of mudclient175. It is important to also include it since having an email for the user may make it easier for servers to provide password recovery mechanism via email token. On the aesthetics part, having the 3 security settings (see bottom part of https://classic.runescape.wiki/w/Manual:Screenshots_(2003)) fills better the space |
OPCODE 197 - Change recovery questions request (mudclient 127 & mudclient 175) |
client opcode 197 is "Decline Duel" in RSC235 |
Change password request is Opcode 25 (after doing preliminary client side validations)
Client receives packet with opcode 224 after doing Change recovery questions request
Client receives packet with opcode 232 after doing Change contact details request
Fortunately the received opcodes 224 and 232 seem to be unused in RSC235. Hence can be placed accordingly in handleIncomingPacket() without charging much the client to demux them. |
All that's left is RSC175 opcode 196, to cancel Account Recovery questions "If you do not remember making this request" |
luckily there is no RSC235 client opcode 196 |
So here's my thoughts for the cancel Account recovery questions change, probably @Hubcapp can indicate better if wrong
|
All good to go for this issue, follow-up for any possible enhancements will be in #62 |
Background information:
mudclient 127 from March 18th 2002 has more advanced Account Manangement than later versions of the client, such as the one that RSC+ is based on.
These Account Management features include:
I'm not sure precisely when these features were removed, but by mudclient 192 (April 8th 2004), the features are gone, and the client instructs the user to use the website instead.
Objective:
It would be useful for private server use if these features were intact in the client, but RSC+ WILL NOT implement private server exclusive features. If this feature enters RSC+, it must behave identically to how it did in Client 127. This way, it is not a private server feature, it is just reintroducing past functionality, similar to the FPS counter already in RSC+.
This feature must look exactly like it did in Client 127, and the network protocol must be exactly the same as Client 127 (regarding opcode, packet structure, and encryption).
Here is some 127 deob code for the relevant packets to be implemented:
Account creation (client opcode 2)
Setting account recovery questions (client opcode 208)
Using account recovery questions (client opcode 8)
Challenges:
Although there is no client opcode 2 or client opcode 208 in the modern client, client opcode 8 is already
CLIENT_OPCODE_SEND_DUEL_SETTINGS
. Obviously there is no conflict on our side if the client just sending opcode 8 with all this "extra" data, but if a server were implementing the hybrid RSC127/RSC235 protocol we are looking to adapt here, they would have to write a small distinction to figure out which opcode 8 the client is talking about. It could be done either by seeing that there is no Player associated with the connection, or by checking if packet length is 4 bytes long or not (RSC235 client opcode 8 is always 4 bytes, and RSC127 client opcode 8 can never be 4 bytes). If it were not possible to distinguish the two opcodes, there would be a problem, but it works out.RSC+ currently automatically skips the first screen of the client with this line of code here:
rscplus/src/Game/Client.java
Line 457 in 398a715
This should probably have been an option in the first place. We skip this screen right now because:
a. After the removal of these Account Management options, the initial screen really serves no purpose.
b. Actually, it is a hindrance. Every time this screen is loaded, the saved Username and Password are cleared. And also it is an extra click before you get into the client.
This screen has been disabled in RSC+ since 2016 and all features of the client have been programmed assuming that it is skipped. The screen must be made functional again, it must be tested with replay compatibility (drag-n-drop & queue especially). It must actually be extended to work (currently, even if this one line of code is removed, the "Click here to login" button seems to be broken) and it must be extended further to implement the RSC127 interface.
Like all other things, this feature must be on a toggle. If the user desires to restore the original RSC+ functionality of always launching directly to login screen on start, that must be possible.
Furthermore, I would probably like it if this login screen is only shown at the beginning of client run. Once the user has "click here to login", the client should not show the screen again unless the user clicks "Cancel" or relaunches the client.
The text was updated successfully, but these errors were encountered: