summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/chrif.c4
-rw-r--r--src/map/map.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/src/map/chrif.c b/src/map/chrif.c
index b8990f87e..f4def8091 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -215,10 +215,8 @@ int chrif_save(struct map_session_data *sd, int flag)
charsave_savechar(sd->char_id, &sd->status);
if (flag) //Character final saved.
sd->state.finalsave = 1;
- if (flag == 1) {
+ if (flag == 1)
chrif_char_offline(sd); //Tell char server that character went offline.
- map_quit_ack(sd); //Remove from memory.
- }
return 0;
}
#endif
diff --git a/src/map/map.c b/src/map/map.c
index 70dc79cac..abcd26440 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -1706,6 +1706,13 @@ int map_quit(struct map_session_data *sd) {
sd->st = NULL;
sd->npc_id = 0;
}
+#ifndef TXT_ONLY
+ if(charsave_method)
+ { //Let player be free'd on closing the connection.
+ idb_remove(pc_db,sd->status.account_id);
+ return 0;
+ }
+#endif
if(sd->fd)
{ //Player will be free'd on save-ack. [Skotlex]
if (session[sd->fd])