===========================================================================
===========================================================================
DETAIL OF ADMINISTRATION PACKETS
---------------------------------------------------------------------------
---------------------------------------------------------------------------
===========================================================================
COMMON PACKETS FOR ALL SERVERS
---------------------------------------------------------------------------
S 7530 (void)
It's a request to obtain the version of the server.
Answer packet: 0x7531.
R 7531 <major_version>.B <minor_version>.B <revision>.B <release_flag>.B <official_flag>.B <server_type>.B <mod_version>.w
It's the reply to a request about the server version (0x7530).
It gives the information about the version of the server.
release_flag : 0 = release, 1 = debug
official_flag: 0 = official, 1 = mod
server_type: 1 = login, 2 = char, 4 = inter, 8 = map (add all values if the server have more than 1 type)
S 7532 (void)
End of connection (no reply is sended back)
===========================================================================
ADMINISTRATION PACKETS OF THE LOGIN-SERVER
---------------------------------------------------------------------------
NB: All information about an account can be obtain by an administration packet, except the password.
The login-server will never send back the password af an account.
If someone sniffs the password from the login-server, he can not obtain it.
But, it exists a packet to check the password.
It's to secure the password.
CONNECTION SYSTEM IN ADMINSTRATION MODE
S 7918 <encrypt_flag>.w <administration_password>.24(16)B
It's a request to obtain an (administration) connection on the login-server.
The packet size changes according to the encrypted password or not.
A non-encrypted password is sended with 24 bytes (plain text with NULL terminate),
and an encrypted password is sended with 16 bytes.
Answer packet: 0x7919.
encrypt_flag: 0 = plain text, 1 = md5 (key + password), 2 = md5 (password + key)
R 7919 <flag>.B
It's the reply to a request for an (administration) connection (0x7918).
Flag: 0 = accepted, 1 = refused
S 791a (void)
It's a request to obtain the encrypted key. This key is used to create the encrypted password.
This packet must be called before the packet 0x7918 if you want connect you with an encrypted password.
The reply is the packet 0x01dc, as like a player sends a connection request with the packet 0x01db.
PACKETS OF ADMINISTRATION MODE
R 791f (void)
Ready signal (no reply is sended back). NOT USED.
S 7920 <start_id>.l <end_id>.l
It's a request to obtain an accounts list.
start_id: 0 for begining of the list, or presumed start id value of the first account.
end_id: 0 to go until the last id, or the upper id limit value that you want.
If 'end_id' is lower to 'start_id', you give no limit for the last id.
Answer packet: 0x7921.
R 7921 <length>.w { <account_id>.l <GM_level>.B <account_name>.24B <sex>.B <count>.l <state>.l }.38B*
It's tje reply packet of the packet 0x7920.
It gives an accounts list.
If you receive at least an account, you must do an additional request (packet 0x7920 begining with the last received account id +1)
to be sure that you receive all asked accounts, because this packet is limited in size when it sends information.
if <state> is 7, there are 2 possibilities: banishement or state{Your are Prohibited to log in until %s}.
S 7930 <account_name>.24B <password>.24B <sex>.B <E-mail>.40B
It's a request to create a new account.
If e-mail is not valid, the e-mail is replaced by the default e-mail (a@a.com).
The default e-mail is like no e-mail to protect your characters against a deletion.
Answer packet: 0x7931.
R 7931 <account_id>.l <account_name>.24B
It's the reply to an account creation (0x7930).
If the account_id value is -1, the login-server fails to create the new account
(an account already exists with the same name, the request is invalid, etc.).
Otherwise, the account_id is the id of the new account.
S 7932 <account_name>.24B
It's a request to delete an account.
Answer packet: 0x7933.
R 7933 <account_id>.l <account_name>.24B
It's the reply to an account deletion (0x7932).
If the account_id value is -1, the login-server fails to delete the account (the account doesn't exist).
Otherwise, the account_id is the id of the deleted account.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7934 <account_name>.24B <password>.24B
It's a request to modify the password of an account.
Answer packet: 0x7935.
R 7935 <account_id>.l <account_name>.24B
It's the reply to an password modification (0x7934).
If the account_id value is -1, the login-server fails to modify the password (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have modified the password.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7936 <account_name>.24B <state>.l <error_message>.20B
It's a request to modify the state of an account.
State: It's the state like the packet 0x006a +1.
Error_message: it's the message of the error code #6 = Your are Prohibited to login until <error_message> (packet 0x006a).
If state is 7 (6+1), the error_message is saved in the account.
For another state, the error_message is deleted (voided) in the account.
Answer packet: 0x7937.
R 7937 <account_id>.l <account_name>.24B <state>.l
It's the reply to a state modification (0x7936).
If the account_id value is -1, the login-server fails to modify the state (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have modified the state.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7938 (void)
It's a request to obtain information about the servers connected to the login-server (servers list with details)
Answer packet: 0x7939.
R 7939 <length>.w {<IP>.l <port>.w <server_name>.20B <#_of_users>.w <maintenance>.w <new>.w}.32B*
It's the reply to an request to obtain servers information (0x7938).
It returns all information about the servers connected on the login-server.
S 793a <account_name>.24B <password>.24B
It's a request to test a password. REMEMBER: Never create a packet to send the password from the login-server.
Answer packet: 0x793b.
S 793b <account_id>.l <account_name>.24B
It's the reply to a password check (0x793a).
If the account_id value is -1, the login-server doesn't valid the password (the account doesn't exist or the password is not the correct one).
Otherwise, the account_id is the id of the account that the login-server have checked the password.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 793c <account_name>.24B <sex>.B
It's a request to modify the sex of an account.
Answer packet: 0x793d.
R 793d <account_id>.l <account_name>.24B
It's the reply to a request to modify a sex (0x793c).
If the account_id value is -1, the login-server fails to modify the sex (the account doesn't exist or the sex is already the good sex).
Otherwise, the account_id is the id of the account that the login-server have modified the sex.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 793e <account_name>.24B <GM_level>.B
It's a request to modify the GM level of an account.
Answer packet: 0x793f.
R 793f <account_id>.l <account_name>.24B
It's the reply to a request to modify a GM level (0x793e).
If the account_id value is -1, the login-server fails to modify the GM level (the account doesn't exist, or GM_account file can not be modified or the GM level is already the good sex).
Otherwise, the account_id is the id of the account that the login-server have modified the GM level.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7940 <account_name>.24B <e-mail>.40B
It's a request to modify the email of an account.
Answer packet: 0x7941.
R 7941 <account_id>.l <account_name>.24B
It's the reply to a request to modify an email (0x7940).
If the account_id value is -1, the login-server fails to modify the e-mail (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have modified the email.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7942 <account_name>.24B <length_of_memo>.w <memo>.(length_of_memo)B
It's a request to modify the memo of an account.
The length can be 0 to have a void memo.
Answer packet: 0x7943.
R 7943 <account_id>.l <account_name>.24B
It's the reply to an request to modify a memo (0x7942).
If the account_id value is -1, the login-server fails to modify the memo (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have modified the memo.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7944 <account_name>.24B
It's a request to obtain (by the name) the id of an account.
Answer packet: 0x7945.
R 7945 <account_id>.l <account_name>.24B
It's the reply to an request (by the name) to obtain an account id (0x7944).
If the account_id value is -1, the login-server fails to obtain the account id (the account doesn't exist).
Otherwise, the account_id is the id of the found account.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 7946 <account_id>.l
It's a request to obtain (by the id) the name of an account.
Answer packet: 0x7947.
R 7947 <account_id>.l <account_name>.24B
It's the reply to an request (by the id) to obtain an account name (0x7946).
If the account_name value is "" (void), the login-server fails to obtain the account name (the account id doesn't exist).
Otherwise, the account_name is the name of the found account.
S 7948 <account_name>.24B <validity>.l
It's a request to set the validity date of an account.
This packet fixes an absolute validity time.
Answer packet: 0x7949.
R 7949 <account_id>.l <account_name>.24B <validity>.l
It's the reply to an request to set the validity date of an account (0x7948).
If the account_id value is -1, the login-server fails to set the validity date (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have fixed the validity date.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 794a <account_name>.24B <end_date_of_banishment>.l
It's a request to set the final date of a banishment of an account.
This packet fixes an absolute time for the end of the banishment.
Answer packet: 0x794b.
R 794b <account_id>.l <account_name>.24B <end_date_of_banishment>.l
It's the reply to an request to set the final date of a banishment of an account (0x794a).
If the account_id value is -1, the login-server fails to set the final date of a banishment (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have fixed the final date of a banishment.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
S 794c <account_name>.24B <+/-years_modification>.w <+/-months_modification>.w <+/-days_modification>.w <+/-hours_modification>.w <+/-minutes_modification>.w <+/-seconds_modification>.w
It's a request to adjust the final date of a banishment of an account.
This packet modifies the final date of a banishment by add/sustract of some parameters.
If you adjust a non-banished account, you fix a banishment with actual time + adjustments.
Answer packet: 0x794d.
R 794d <account_id>.l <account_name>.24B <end_date_of_banishment>.l
It's the reply to an request to adjust the final date of a banishment of an account (0x794c).
If the account_id value is -1, the login-server fails to adjust the final date of a banishment (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have adjusted the final date of a banishment.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
Note: if value is impossible, the returned value is the (unchanged) value of the final date of the banishment.
S 794e <broadcast_type>.W <length_of_message>.L <message>.(length_of_message)B
It's a request to send a broadcast to all map-servers.
The length can not be 0.
broadcast_type:
0: normal (yellow)
0x10: blue
Answer packet: 794f.
R 794f <answaer>.W
It's the reply to an request to send a broadcast to all map-servers (794e).
If the answer value is -1, the login-server fails to send the message (no char-server are conected).
Otherwise, the answer is 0.
S 7950 <account_name>.24B <+/-years_modification>.w <+/-months_modification>.w <+/-days_modification>.w <+/-hours_modification>.w <+/-minutes_modification>.w <+/-seconds_modification>.w
It's a request to adjust the validity date of an account.
This packet modifies the validity date by add/sustract of some parameters.
You can not adjust an unlimited validity date.
Answer packet: 0x7951.
R 7951 <account_id>.l <account_name>.24B <validity>.l
It's the reply to an request to adjust the validity date of an account (0x7950).
If the account_id value is -1, the login-server fails to adjust the validity date (the account doesn't exist).
Otherwise, the account_id is the id of the account that the login-server have found to try the adjustement of the validity date.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
If the returned validity date is 0, the login-server haven't modify the validity date (the account have an unlimited validity,
the modification is impossible because the new date is too far in the future, etc...).
If the returned validity date is not 0, it's the new validity date of the account.
S 7952 <account_name>.24B
It's a request (by name) to obtain complete information about an account.
Answer packet: 0x7953.
R 7953 <account_id>.l <GM_level>.B <account_name>.24B <sex>.B <count>.l <state>.l <error_message>.20B <last_login_time>.24B <last_authorised_login_ip>.16B <email>.40B <validity_date>.l <until_ban_date>.l <length_of_memo>.w <memo>.(length_of_memo)B
It's the reply to an request to obtain complete information about an account (0x7952 and 0x7954).
It sends all informations about an account.
Reply of 0x7952:
If the account_id value is -1, the login-server fails to found the account (the account doesn't exist).
Otherwise, the account_id is the id of the found account.
The login-server returns the correct sensitive case account_name (use strcmpi to compare).
Reply of 0x7954:
If the account_name value is "" (void), the login-server fails to found the account (the account id doesn't exist).
Otherwise, the account_name is the name of the found account.
S 7954 <account_id>.l
It's a request (by id) to obtain complete information about an account.
Answer packet: 0x7953.
S 7955
It's a request to re-load GM file definition.
Answer packet: NONE.