diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-07-12 13:44:42 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-07-12 13:44:42 +0000 |
commit | a522db8a246bcac5c1aa82ee070db2c5453f0cb4 (patch) | |
tree | a72461ceca95948e0d7148b1c9846e7ba0a20f54 /src/map/chrif.c | |
parent | 1b2454dc416b9821b754879305bf22d74cae7ae0 (diff) | |
download | hercules-a522db8a246bcac5c1aa82ee070db2c5453f0cb4.tar.gz hercules-a522db8a246bcac5c1aa82ee070db2c5453f0cb4.tar.bz2 hercules-a522db8a246bcac5c1aa82ee070db2c5453f0cb4.tar.xz hercules-a522db8a246bcac5c1aa82ee070db2c5453f0cb4.zip |
- Fixed Cart Termination's damage.
- Added the missing check to remove character from memory when logging out and using the charsave_method which saves character map-server-side.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7631 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/chrif.c')
-rw-r--r-- | src/map/chrif.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/map/chrif.c b/src/map/chrif.c index 520ee4052..3f253d5a2 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -212,20 +212,23 @@ int chrif_save(struct map_session_data *sd, int flag) #ifndef TXT_ONLY
if(charsave_method){ //New 'Local' save
charsave_savechar(sd->char_id, &sd->status);
- if (flag == 1) chrif_char_offline(sd); //Tell char server that character went offline.
- }else{
-#endif
- WFIFOHEAD(char_fd, sizeof(sd->status) + 13);
- WFIFOW(char_fd,0) = 0x2b01;
- WFIFOW(char_fd,2) = sizeof(sd->status) + 13;
- WFIFOL(char_fd,4) = sd->bl.id;
- WFIFOL(char_fd,8) = sd->char_id;
- WFIFOB(char_fd,12) = (flag==1)?1:0; //Flag to tell char-server this character is quitting.
- memcpy(WFIFOP(char_fd,13), &sd->status, sizeof(sd->status));
- WFIFOSET(char_fd, WFIFOW(char_fd,2));
-#ifndef TXT_ONLY
+ if (flag) //Character final saved.
+ sd->state.finalsave = 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
+ WFIFOHEAD(char_fd, sizeof(sd->status) + 13);
+ WFIFOW(char_fd,0) = 0x2b01;
+ WFIFOW(char_fd,2) = sizeof(sd->status) + 13;
+ WFIFOL(char_fd,4) = sd->bl.id;
+ WFIFOL(char_fd,8) = sd->char_id;
+ WFIFOB(char_fd,12) = (flag==1)?1:0; //Flag to tell char-server this character is quitting.
+ memcpy(WFIFOP(char_fd,13), &sd->status, sizeof(sd->status));
+ WFIFOSET(char_fd, WFIFOW(char_fd,2));
if (flag)
sd->state.finalsave = 1; //Mark the last save as done.
return 0;
|