mirror of
https://github.com/mangosfour/server.git
synced 2025-12-26 07:37:02 +00:00
[11701] Command .auction item and support auction without owner.
* New command allow place auction from chat/console and create auction without owner. * Same code can be used in other place when server code want create generated auction without need have associated player. Auction code update for support this case. * MailDraft::SendMailTo now allow "send" mails to non-players. It correcly drop items in like case.
This commit is contained in:
parent
78991c1131
commit
67f9c26d51
12 changed files with 210 additions and 86 deletions
|
|
@ -194,10 +194,10 @@ void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid sender_guid, Ob
|
|||
Player *receiver = sObjectMgr.GetPlayer(receiver_guid);
|
||||
|
||||
uint32 rc_account = 0;
|
||||
if(!receiver)
|
||||
if (!receiver)
|
||||
rc_account = sObjectMgr.GetPlayerAccountIdByGUID(receiver_guid);
|
||||
|
||||
if(!receiver && !rc_account) // sender not exist
|
||||
if (!receiver && !rc_account) // sender not exist
|
||||
{
|
||||
deleteIncludedItems(true);
|
||||
return;
|
||||
|
|
@ -206,17 +206,17 @@ void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid sender_guid, Ob
|
|||
// prepare mail and send in other case
|
||||
bool needItemDelay = false;
|
||||
|
||||
if(!m_items.empty())
|
||||
if (!m_items.empty())
|
||||
{
|
||||
// if item send to character at another account, then apply item delivery delay
|
||||
needItemDelay = sender_acc != rc_account;
|
||||
|
||||
// set owner to new receiver (to prevent delete item with sender char deleting)
|
||||
CharacterDatabase.BeginTransaction();
|
||||
for(MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
|
||||
for (MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
|
||||
{
|
||||
Item* item = mailItemIter->second;
|
||||
item->SaveToDB(); // item not in inventory and can be save standalone
|
||||
item->SaveToDB(); // item not in inventory and can be save standalone
|
||||
// owner in data will set at mail receive and item extracting
|
||||
CharacterDatabase.PExecute("UPDATE item_instance SET owner_guid = '%u' WHERE guid='%u'", receiver_guid.GetCounter(), item->GetGUIDLow());
|
||||
}
|
||||
|
|
@ -241,6 +241,16 @@ void MailDraft::SendMailTo(MailReceiver const& receiver, MailSender const& sende
|
|||
{
|
||||
Player* pReceiver = receiver.GetPlayer(); // can be NULL
|
||||
|
||||
uint32 pReceiverAccount = 0;
|
||||
if (!pReceiver)
|
||||
pReceiverAccount = sObjectMgr.GetPlayerAccountIdByGUID(receiver.GetPlayerGuid());
|
||||
|
||||
if (!pReceiver && !pReceiverAccount) // receiver not exist
|
||||
{
|
||||
deleteIncludedItems(true);
|
||||
return;
|
||||
}
|
||||
|
||||
bool has_items = !m_items.empty();
|
||||
|
||||
// generate mail template items for online player, for offline player items will generated at open
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue