[8442] Fixed displaying return button in mails Author: arrai
--HG-- branch : trunk
This commit is contained in:
+10
-9
@@ -37,8 +37,8 @@ enum MailShowFlags
|
|||||||
MAIL_SHOW_UNK0 = 0x0001,
|
MAIL_SHOW_UNK0 = 0x0001,
|
||||||
MAIL_SHOW_DELETE = 0x0002, // forced show delete button instead return button
|
MAIL_SHOW_DELETE = 0x0002, // forced show delete button instead return button
|
||||||
MAIL_SHOW_AUCTION = 0x0004, // from old comment
|
MAIL_SHOW_AUCTION = 0x0004, // from old comment
|
||||||
MAIL_SHOW_COD = 0x0008, // show subject prefix
|
MAIL_SHOW_UNK2 = 0x0008, // unknown, COD will be shown even without that flag
|
||||||
MAIL_SHOW_UNK4 = 0x0010,
|
MAIL_SHOW_RETURN = 0x0010,
|
||||||
};
|
};
|
||||||
|
|
||||||
void MailItem::deleteItem( bool inDB )
|
void MailItem::deleteItem( bool inDB )
|
||||||
@@ -321,14 +321,15 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data )
|
|||||||
Mail *m = _player->GetMail(mailId);
|
Mail *m = _player->GetMail(mailId);
|
||||||
if(m)
|
if(m)
|
||||||
{
|
{
|
||||||
if (m->COD > 0)
|
// delete shouldn't show up for COD mails
|
||||||
|
if (m->COD)
|
||||||
|
{
|
||||||
|
pl->SendMailResult(mailId, MAIL_DELETED, MAIL_ERR_INTERNAL_ERROR);
|
||||||
return;
|
return;
|
||||||
m->state = MAIL_STATE_DELETED;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Player* pl = _player;
|
m->state = MAIL_STATE_DELETED;
|
||||||
pl->m_mailsUpdated = true;
|
}
|
||||||
|
|
||||||
pl->SendMailResult(mailId, MAIL_DELETED, MAIL_OK);
|
pl->SendMailResult(mailId, MAIL_DELETED, MAIL_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -605,8 +606,8 @@ void WorldSession::HandleGetMailList(WorldPacket & recv_data )
|
|||||||
show_flags |= MAIL_SHOW_DELETE;
|
show_flags |= MAIL_SHOW_DELETE;
|
||||||
if ((*itr)->messageType == MAIL_AUCTION)
|
if ((*itr)->messageType == MAIL_AUCTION)
|
||||||
show_flags |= MAIL_SHOW_AUCTION;
|
show_flags |= MAIL_SHOW_AUCTION;
|
||||||
if ((*itr)->COD)
|
if ((*itr)->HasItems() && (*itr)->messageType == MAIL_NORMAL)
|
||||||
show_flags |= MAIL_SHOW_COD;
|
show_flags |= MAIL_SHOW_RETURN;
|
||||||
|
|
||||||
data << (uint16) 0x0040; // unknown 2.3.0, different values
|
data << (uint16) 0x0040; // unknown 2.3.0, different values
|
||||||
data << (uint32) (*itr)->messageID; // Message ID
|
data << (uint32) (*itr)->messageID; // Message ID
|
||||||
|
|||||||
@@ -192,3 +192,42 @@ bool Database::DirectPExecute(const char * format,...)
|
|||||||
return DirectExecute(szQuery);
|
return DirectExecute(szQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Database::CheckRequiredField( char const* table_name, char const* required_name )
|
||||||
|
{
|
||||||
|
// check required field
|
||||||
|
QueryResult* result = PQuery("SELECT %s FROM %s LIMIT 1",required_name,table_name);
|
||||||
|
if(result)
|
||||||
|
{
|
||||||
|
delete result;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check fail, prepare readabale error message
|
||||||
|
|
||||||
|
// search current required_* field in DB
|
||||||
|
QueryNamedResult* result2 = PQueryNamed("SELECT * FROM %s LIMIT 1",table_name);
|
||||||
|
if(result2)
|
||||||
|
{
|
||||||
|
QueryFieldNames const& namesMap = result2->GetFieldNames();
|
||||||
|
std::string reqName;
|
||||||
|
for(QueryFieldNames::const_iterator itr = namesMap.begin(); itr != namesMap.end(); ++itr)
|
||||||
|
{
|
||||||
|
if(itr->substr(0,9)=="required_")
|
||||||
|
{
|
||||||
|
reqName = *itr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete result;
|
||||||
|
|
||||||
|
if(!reqName.empty())
|
||||||
|
{
|
||||||
|
sLog.outErrorDb("Table `%s` have field `%s` but expected `%s`! Not all sql updates applied?",table_name,reqName.c_str(),required_name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sLog.outErrorDb("Table `%s` not have required_* field but expected `%s`! Not all sql updates applied?",table_name,required_name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class TRINITY_DLL_SPEC Database
|
|||||||
// sets the result queue of the current thread, be careful what thread you call this from
|
// sets the result queue of the current thread, be careful what thread you call this from
|
||||||
void SetResultQueue(SqlResultQueue * queue);
|
void SetResultQueue(SqlResultQueue * queue);
|
||||||
|
|
||||||
|
bool CheckRequiredField(char const* table_name, char const* required_name);
|
||||||
private:
|
private:
|
||||||
bool m_logSQL;
|
bool m_logSQL;
|
||||||
std::string m_logsDir;
|
std::string m_logsDir;
|
||||||
|
|||||||
Reference in New Issue
Block a user