diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-04-16 07:48:53 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-04-16 07:48:53 +0000 |
commit | 226d526a49322d1fa755645801254703dfd90476 (patch) | |
tree | b616c8aec2c30bc90d771953838c566ba5daad62 /src/char/char.c | |
parent | 1e560981e0c0dfff9cc0ae4c8cb3eb7e59438745 (diff) | |
download | hercules-226d526a49322d1fa755645801254703dfd90476.tar.gz hercules-226d526a49322d1fa755645801254703dfd90476.tar.bz2 hercules-226d526a49322d1fa755645801254703dfd90476.tar.xz hercules-226d526a49322d1fa755645801254703dfd90476.zip |
Fixed an issue in r12575 where 'not setting char offline when going from mapserver to charserver' also caused a permanent account lockout if the player pressed 'cancel' in the char select screen.
Merged some recent changes from SQL to TXT, as someone didn't bother to do it.
Ifdefed the quest data request code as SQL-only (this was causing server disconnects whenver someone logged in).
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12606 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/char/char.c')
-rw-r--r-- | src/char/char.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/char/char.c b/src/char/char.c index 9a1a87bee..76312ac0d 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -241,15 +241,19 @@ void set_char_offline(int char_id, int account_id) if( character->server > -1 ) server[character->server].users--; - character->char_id = -1; - character->server = -1; if(character->waiting_disconnect != -1){ delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); character->waiting_disconnect = -1; } + + //If user is NOT at char screen, delete entry [Kevin] + if(character->char_id != -1) + { + idb_remove(online_char_db, account_id); + } } - if (login_fd > 0 && !session[login_fd]->flag.eof) + if (login_fd > 0 && !session[login_fd]->flag.eof && (char_id == -1 || character == NULL || character->char_id != -1)) { WFIFOHEAD(login_fd,6); WFIFOW(login_fd,0) = 0x272c; @@ -2335,7 +2339,7 @@ int parse_fromlogin(int fd) set_eof(i); } else //Shouldn't happen, but just in case. - set_char_offline(99, aid); + set_char_offline(-1, aid); } } } |