diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-02-21 00:13:56 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-02-21 00:13:56 +0000 |
commit | fd665092bbcd4be32f9d8319ffbb4aad30b40d08 (patch) | |
tree | 96fbf399d2704c89a5254a91994dd07a40fdfe39 /src/map/chrif.h | |
parent | 5870b45487fde3bc3fef54062aab5fcce4ce39ca (diff) | |
download | hercules-fd665092bbcd4be32f9d8319ffbb4aad30b40d08.tar.gz hercules-fd665092bbcd4be32f9d8319ffbb4aad30b40d08.tar.bz2 hercules-fd665092bbcd4be32f9d8319ffbb4aad30b40d08.tar.xz hercules-fd665092bbcd4be32f9d8319ffbb4aad30b40d08.zip |
- Fixed new guilds displaying online-connect member count at 0 rather than 1, and the guild master not knowing it is one (eg: it cannot edit the guild notice of a newly created guild until relogging).
- Fixed acc_reg2 parsing screwing up the char_id and subtracting 2 from it rather than passing it as it is.
- Extended the auth_node/auth_db system in chrif.c to handle log in/out and mapserver-change procedures. This way players are not in the main dbs when they are not "active", which blocks potential invalid accesses to them.
- Replaced states auth, waiting_disconnect and finalsave with active.
- Cleaned some the party/guild login and creation procedures, removed the party_sent/guild_sent states.
- Removed a redundant guild_check_member call which is beyond not-needed and into the realm of wasting resources.
- clif_parse will no longer process packets from !sd->state.active players, this also makes checking for finalsave uneccessary (since players re already removed from the maps and dbs by this point, so you can't access them in any other way)
- Separated the roles of unit_free and map_quit, the former will handle cleaning structures from the player so it can be free'd safely, while the latter performs additional routines which are unique to characters logging out normally (map-server changes will invoke unit_free and bypass map_quit).
- Removed pc_isplaying, quit_db, map_knowsaccount, MAPIT_PCISPLAYING among other functions/defines which are no longer needed due to the new login scheme.
- Cleand up a bit some code in the clif_send(_sub) functions.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12223 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/chrif.h')
-rw-r--r-- | src/map/chrif.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/map/chrif.h b/src/map/chrif.h index b440fcac6..bf1dbb108 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -7,12 +7,15 @@ #include "../common/cbasetypes.h" #include <time.h> -struct auth_node{ - int account_id, login_id1, login_id2, sex, fd; +enum sd_state { ST_LOGIN, ST_LOGOUT, ST_MAPCHANGE }; +struct auth_node { + int account_id, char_id; + int login_id1, login_id2, sex, fd; time_t connect_until_time; // # of seconds 1/1/1970 (timestamp): Validity limit of the account (0 = unlimited) struct map_session_data *sd; //Data from logged on char. struct mmo_charstatus *char_dat; //Data from char server. - unsigned int node_created; //For node auto-deleting + unsigned int node_created; //timestamp for node timeouts + enum sd_state state; //To track whether player was login in/out or changing maps. }; void chrif_setuserid(char* id); @@ -26,12 +29,17 @@ int chrif_isconnected(void); extern int chrif_connected; extern int other_mapserver_count; +struct auth_node* chrif_search(int account_id); +struct auth_node* chrif_auth_check(int account_id, int char_id, enum sd_state state); +bool chrif_auth_delete(int account_id, int char_id, enum sd_state state); +bool chrif_auth_finished(struct map_session_data* sd); + void chrif_authreq(struct map_session_data* sd); void chrif_authok(int fd); int chrif_scdata_request(int account_id, int char_id); int chrif_save(struct map_session_data* sd, int flag); int chrif_charselectreq(struct map_session_data* sd, uint32 s_ip); -int chrif_changemapserver(struct map_session_data* sd, short map, int x, int y, uint32 ip, uint16 port); +int chrif_changemapserver(struct map_session_data* sd, uint32 ip, uint16 port); int chrif_searchcharid(int char_id); int chrif_changegm(int id,const char *pass,int len); |