diff options
Diffstat (limited to 'src/map/intif.c')
-rw-r--r-- | src/map/intif.c | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/src/map/intif.c b/src/map/intif.c index 211edfe2d..629f1f5d1 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -1690,54 +1690,49 @@ int intif_Mail_send(int account_id, struct mail_message *msg) return 0; } -int intif_parse_Mail_send(int fd) +static void intif_parse_Mail_send(int fd) { struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); int mail_id = RFIFOL(fd,6); bool fail = false; - if( mail_id > 0 ) + if( mail_id == 0 ) + fail = true; + else { if( sd == NULL ) fail = true; if( !mail_checkattach(sd) ) { - fail = true; - mail_removeitem(sd, 0); mail_removezeny(sd, 0); + fail = true; } + // confirmation message WFIFOHEAD(inter_fd,7); WFIFOW(inter_fd,0) = 0x304e; WFIFOL(inter_fd,2) = mail_id; WFIFOB(inter_fd,6) = fail; WFIFOSET(inter_fd,7); - - clif_Mail_send(sd->fd, fail); } - else - clif_Mail_send(sd->fd, true); - - return 0; + + clif_Mail_send(sd->fd, fail); } -int intif_parse_Mail_new(int fd) +static void intif_parse_Mail_new(int fd) { struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); - if( sd != NULL ) - { - char sender_name[NAME_LENGTH], title[MAIL_TITLE_LENGTH]; - int mail_id = RFIFOL(fd,6); - - safestrncpy(sender_name, RFIFOP(fd,10), NAME_LENGTH); - safestrncpy(title, RFIFOP(fd,34), MAIL_TITLE_LENGTH); + int mail_id = RFIFOL(fd,6); + const char* sender_name = (char*)RFIFOP(fd,10); + const char* title = (char*)RFIFOP(fd,34); - clif_Mail_new(sd, mail_id, sender_name, title); - } + if( sd == NULL ) + return; - return 0; + sd->mail.inbox.changed = true; + clif_Mail_new(sd->fd, mail_id, sender_name, title); } #endif |