Added a mapflag to block RODEX (#6291)

Fixes #6286

Thanks to @gabrieldosprazeres
This commit is contained in:
Lemongrass3110 2021-10-06 10:00:40 +02:00 committed by GitHub
parent 53e25aa462
commit f9d4eeb4a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 2 deletions

View File

@ -871,7 +871,10 @@
// @reloadattendancedb
795: Attendance database has been reloaded.
//796-899 free
// NoRODEX Mapflag
796: You cannot use RODEX on this map.
//797-899 free
//------------------------------------
// More atcommands message

View File

@ -15820,6 +15820,10 @@ void clif_Mail_refreshinbox(struct map_session_data *sd,enum mail_inbox_type typ
/// 0ac0 <mail id>.Q <unknown>.16B (CZ_OPEN_MAILBOX2)
/// 0ac1 <mail id>.Q <unknown>.16B (CZ_REQ_REFRESH_MAIL_LIST2)
void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd){
if( mail_invalid_operation( sd ) ){
return;
}
#if PACKETVER < 20150513
struct mail_data* md = &sd->mail.inbox;
@ -16034,6 +16038,10 @@ void clif_parse_Mail_beginwrite( int fd, struct map_session_data *sd ){
safestrncpy(name, RFIFOCP(fd, 2), NAME_LENGTH);
if( mail_invalid_operation( sd ) ){
return;
}
if( sd->state.storage_flag || sd->state.mail_writing || sd->trade_partner ){
clif_send_Mail_beginwrite_ack(sd, name, false);
return;
@ -16072,6 +16080,10 @@ void clif_Mail_Receiver_Ack( struct map_session_data* sd, uint32 char_id, short
void clif_parse_Mail_Receiver_Check(int fd, struct map_session_data *sd) {
static char name[NAME_LENGTH];
if( mail_invalid_operation( sd ) ){
return;
}
safestrncpy(name, RFIFOCP(fd, 2), NAME_LENGTH);
intif_mail_checkreceiver(sd, name);
@ -16270,6 +16282,10 @@ void clif_parse_Mail_setattach(int fd, struct map_session_data *sd){
if (sd->inventory_data[server_index(idx)] == nullptr)
return;
if( mail_invalid_operation( sd ) ){
return;
}
flag = mail_setitem(sd, idx, amount);
if( flag == MAIL_ATTACH_EQUIPSWITCH ){
@ -16352,6 +16368,10 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd){
return;
}
if( mail_invalid_operation( sd ) ){
return;
}
// Forged request without a begin writing packet?
if( !sd->state.mail_writing ){
return; // Ignore it

View File

@ -396,9 +396,14 @@ bool mail_invalid_operation(struct map_session_data *sd)
ShowWarning("clif_parse_Mail: char '%s' trying to do invalid mail operations.\n", sd->status.name);
return true;
}
#endif
#else
if( map_getmapflag( sd->bl.m, MF_NORODEX ) ){
clif_displaymessage( sd->fd, msg_txt( sd, 796 ) ); // You cannot use RODEX on this map.
return true;
}
return false;
#endif
}
/**

View File

@ -610,6 +610,7 @@ enum e_mapflag : int16 {
MF_PRIVATEAIRSHIP_DESTINATION,
MF_SKILL_DURATION,
MF_NOCASHSHOP,
MF_NORODEX,
MF_MAX
};

View File

@ -479,6 +479,7 @@
export_constant(MF_PRIVATEAIRSHIP_DESTINATION);
export_constant(MF_SKILL_DURATION);
export_constant(MF_NOCASHSHOP);
export_constant(MF_NORODEX);
/* setcell types */
export_constant(CELL_WALKABLE);