本文整理汇总了C++中WorldSession::SendNotification方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldSession::SendNotification方法的具体用法?C++ WorldSession::SendNotification怎么用?C++ WorldSession::SendNotification使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldSession
的用法示例。
在下文中一共展示了WorldSession::SendNotification方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleGMChatCommand
// Enables or disables hiding of the staff badge
static bool HandleGMChatCommand(ChatHandler* handler, char const* args)
{
if (!*args)
{
WorldSession* session = handler->GetSession();
if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->isGMChat())
session->SendNotification(LANG_GM_CHAT_ON);
else
session->SendNotification(LANG_GM_CHAT_OFF);
return true;
}
std::string param = (char*)args;
if (param == "on")
{
handler->GetSession()->GetPlayer()->SetGMChat(true);
handler->GetSession()->SendNotification(LANG_GM_CHAT_ON);
return true;
}
if (param == "off")
{
handler->GetSession()->GetPlayer()->SetGMChat(false);
handler->GetSession()->SendNotification(LANG_GM_CHAT_OFF);
return true;
}
handler->SendSysMessage(LANG_USE_BOL);
handler->SetSentErrorMessage(true);
return false;
}
示例2: HandleLogCommand
static bool HandleLogCommand(ChatHandler* handler, const char* args)
{
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
uint32 RLimit = 10;
if((char*)args)
RLimit = atoi((char*)args);
if(RLimit == 0 || RLimit > 100)
RLimit = 10;
QueryResult result = WorldDatabase.PQuery("SELECT * FROM `anti-farm log` LIMIT %u", RLimit);
if(!result)
{
Session->SendNotification("There are no records");
return false;
}
Field * fields = NULL;
do{
fields = result->Fetch();
uint32 ID = fields[0].GetUInt32();
std::string Character = fields[1].GetString();
std::string Account = fields[2].GetString();
uint32 Warning = fields[3].GetUInt32();
char msg[250];
snprintf(msg, 250, "ID : %u Character : %s Account : %s Warning Level : %u \n" , ID, Character.c_str(), Account.c_str(), Warning);
handler->PSendSysMessage (msg);
handler->SetSentErrorMessage (true);
}
while(result->NextRow());
return true;
}
示例3: HandleDeleteAllCommand
static bool HandleDeleteAllCommand(ChatHandler* handler, const char* args)
{
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
WorldDatabase.Execute("DELETE FROM `anti-farm log`");
QueryResult result = WorldDatabase.Query("SELECT `ID` FROM `anti-farm log`");
if(result)
{
Session->SendNotification("Deletion failed");
return false;
}
else
{
Session->SendAreaTriggerMessage("Deletion successful!");
return true;
}
return true;
}
示例4: HandleDeleteIDCommand
static bool HandleDeleteIDCommand(ChatHandler* handler, const char* args)
{
if(!*args)
return false;
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
uint32 ID = atoi((char*)args);
QueryResult result = WorldDatabase.PQuery("SELECT * FROM `anti-farm log` WHERE `ID` = %u", ID);
if(!result)
{
char msg [250];
snprintf(msg, 250, "Log with Log ID : %u doesn't exist", ID);
Session->SendNotification(msg);
return false;
}
WorldDatabase.PExecute("DELETE FROM `anti-farm log` WHERE `ID` = %u", ID);
Session->SendAreaTriggerMessage("Deletion of Log ID : %u Successful!", ID);
return true;
}
示例5: HandleLogCommand
static bool HandleLogCommand(ChatHandler* handler, const char* args)
{
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
uint32 RLimit = 10;
if((char*)args)
RLimit = atoi((char*)args);
if(RLimit == 0 || RLimit > 100)
RLimit = 10;
QueryResult result = WorldDatabase.PQuery("SELECT * FROM `anti-farm log` LIMIT %u", RLimit);
if(!result)
{
Session->SendNotification("There are no records");
return false;
}
Field * fields = NULL;
do{
uint32 ID = (*result)[0].GetUInt32();
uint32 guid = (*result)[1].GetUInt32();
uint32 Warning = (*result)[2].GetUInt32();
QueryResult nameResult = CharacterDatabase.PQuery("SELECT name FROM characters WHERE guid = %u", guid);
if (nameResult)
{
const char * name = (*nameResult)[0].GetCString();
char msg[250];
snprintf(msg,250, "ID: %u Character: %s Warning Level: %u\n", ID, name, Warning);
handler->PSendSysMessage(msg);
handler->SetSentErrorMessage(true);
}
else
{
char msg[250];
snprintf(msg, 250, "ID: %u Character: %u Warning Level: %u \n" , ID, guid, Warning);
handler->PSendSysMessage (msg);
handler->SetSentErrorMessage (true);
}
}
while(result->NextRow());
return true;
}
示例6: OnGossipSelect
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
{
player->PlayerTalkClass->ClearMenus();
WorldSession* session = player->GetSession();
switch(sender)
{
case EQUIPMENT_SLOT_END: // Show items you can use
ShowTransmogItems(player, creature, action);
break;
case EQUIPMENT_SLOT_END+1: // Main menu
OnGossipHello(player, creature);
break;
case EQUIPMENT_SLOT_END+2: // Remove Transmogrifications
{
bool removed = false;
SQLTransaction trans = CharacterDatabase.BeginTransaction();
for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
{
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot))
{
if (!sT->GetFakeEntry(newItem->GetGUID()))
continue;
sT->DeleteFakeEntry(player, slot, newItem, &trans);
removed = true;
}
}
if (removed)
{
session->SendAreaTriggerMessage(GTS(LANG_ERR_UNTRANSMOG_OK));
CharacterDatabase.CommitTransaction(trans);
}
else
session->SendNotification(LANG_ERR_UNTRANSMOG_NO_TRANSMOGS);
OnGossipHello(player, creature);
} break;
case EQUIPMENT_SLOT_END+3: // Remove Transmogrification from single item
{
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, action))
{
if (sT->GetFakeEntry(newItem->GetGUID()))
{
sT->DeleteFakeEntry(player, action, newItem);
session->SendAreaTriggerMessage(GTS(LANG_ERR_UNTRANSMOG_OK));
}
else
session->SendNotification(LANG_ERR_UNTRANSMOG_NO_TRANSMOGS);
}
OnGossipSelect(player, creature, EQUIPMENT_SLOT_END, action);
} break;
#ifdef PRESETS
case EQUIPMENT_SLOT_END+4: // Presets menu
{
if (!sT->GetEnableSets())
{
OnGossipHello(player, creature);
return true;
}
if (sT->GetEnableSetInfo())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Book_11:30:30:-18:0|tHow sets work", EQUIPMENT_SLOT_END+10, 0);
for (Transmogrification::presetIdMap::const_iterator it = sT->presetByName[player->GetGUID()].begin(); it != sT->presetByName[player->GetGUID()].end(); ++it)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Statue_02:30:30:-18:0|t"+it->second, EQUIPMENT_SLOT_END+6, it->first);
if (sT->presetByName[player->GetGUID()].size() < sT->GetMaxSets())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/GuildBankFrame/UI-GuildBankFrame-NewTab:30:30:-18:0|tSave set", EQUIPMENT_SLOT_END+8, 0);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack..", EQUIPMENT_SLOT_END+1, 0);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
} break;
case EQUIPMENT_SLOT_END+5: // Use preset
{
if (!sT->GetEnableSets())
{
OnGossipHello(player, creature);
return true;
}
// action = presetID
for (Transmogrification::slotMap::const_iterator it = sT->presetById[player->GetGUID()][action].begin(); it != sT->presetById[player->GetGUID()][action].end(); ++it)
{
if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, it->first))
sT->PresetTransmog(player, item, it->second, it->first);
}
OnGossipSelect(player, creature, EQUIPMENT_SLOT_END+6, action);
} break;
case EQUIPMENT_SLOT_END+6: // view preset
{
if (!sT->GetEnableSets())
{
OnGossipHello(player, creature);
return true;
}
// action = presetID
for (Transmogrification::slotMap::const_iterator it = sT->presetById[player->GetGUID()][action].begin(); it != sT->presetById[player->GetGUID()][action].end(); ++it)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(it->second, 30, 30, -18, 0)+sT->GetItemLink(it->second, session), sender, action);
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Statue_02:30:30:-18:0|tUse set", EQUIPMENT_SLOT_END+5, action, "Using this set for transmogrify will bind transmogrified items to you and make them non-refundable and non-tradeable.\nDo you wish to continue?\n\n"+sT->presetByName[player->GetGUID()][action], 0, false);
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-LeaveItem-Opaque:30:30:-18:0|tDelete set", EQUIPMENT_SLOT_END+7, action, "Are you sure you want to delete "+sT->presetByName[player->GetGUID()][action]+"?", 0, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|tBack..", EQUIPMENT_SLOT_END+4, 0);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
} break;
case EQUIPMENT_SLOT_END+7: // Delete preset
{
//.........这里部分代码省略.........
示例7: OnGossipSelect
bool OnGossipSelect(Player* Player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
{
WorldSession* ws = Player->GetSession();
switch (uiAction)
{
case ACTION_TITLE_PRIVATE:
{
if (GetTotalKill(Player) >= 10)
Player->SetTitle(sCharTitlesStore.LookupEntry(1));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_CORPORAL:
{
if (GetTotalKill(Player) >= 50)
Player->SetTitle(sCharTitlesStore.LookupEntry(2));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_SERGEANT:
{
if (GetTotalKill(Player) >= 100)
Player->SetTitle(sCharTitlesStore.LookupEntry(3));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_MASTER_SERGEANT:
{
if (GetTotalKill(Player) >= 200)
Player->SetTitle(sCharTitlesStore.LookupEntry(4));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_SERGEANT_MAJOR:
{
if (GetTotalKill(Player) >= 400)
Player->SetTitle(sCharTitlesStore.LookupEntry(5));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_KNIGHT:
{
if (GetTotalKill(Player) >= 500)
Player->SetTitle(sCharTitlesStore.LookupEntry(6));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_KNIGHT_LIEUTENANT:
{
if (GetTotalKill(Player) >= 600)
Player->SetTitle(sCharTitlesStore.LookupEntry(7));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_KNIGHT_CAPTAIN:
{
if (GetTotalKill(Player) >= 800)
Player->SetTitle(sCharTitlesStore.LookupEntry(8));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_KNIGHT_CHAMPION:
{
if (GetTotalKill(Player) >= 1000)
Player->SetTitle(sCharTitlesStore.LookupEntry(9));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_LIEUTENANT_COMMANDER:
{
if (GetTotalKill(Player) >= 1500)
Player->SetTitle(sCharTitlesStore.LookupEntry(10));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_COMMANDER:
{
if (GetTotalKill(Player) >= 2500)
Player->SetTitle(sCharTitlesStore.LookupEntry(11));
else
ws->SendNotification("You dont have enough kills");
}
break;
case ACTION_TITLE_MARSHAL:
{
if (GetTotalKill(Player) >= 4000)
Player->SetTitle(sCharTitlesStore.LookupEntry(12));
else
ws->SendNotification("You dont have enough kills");
//.........这里部分代码省略.........
示例8: OnGossipSelect
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 uiAction)
{
WorldSession* session = player->GetSession();
player->PlayerTalkClass->ClearMenus();
switch(sender)
{
case EQUIPMENT_SLOT_END: // Show items you can use
{
if (Item* oldItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, uiAction))
{
uint32 lowGUID = player->GetGUIDLow();
_items[lowGUID].clear();
uint32 limit = 0;
uint32 price = 0;
switch (sTransmogrification->GetRequireGold())
{
case 1: { price = (unsigned int)(GetFakePrice(oldItem)*sTransmogrification->GetGoldModifier()); } break;
case 2: { price = (unsigned int)sTransmogrification->GetGoldCost(); } break;
}
char tokenCost[250] = "\n";
if(sTransmogrification->GetRequireToken())
snprintf(tokenCost, 250, "\n\n%u x %s", sTransmogrification->GetTokenAmount(), GetItemName(sObjectMgr->GetItemTemplate(sTransmogrification->GetTokenEntry()), session).c_str());
for (uint8 i = INVENTORY_SLOT_ITEM_START; i < INVENTORY_SLOT_ITEM_END; i++)
{
if (limit > 30)
break;
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i))
{
uint32 display = newItem->GetTemplate()->DisplayInfoID;
if (player->SuitableForTransmogrification(oldItem, newItem) == ERR_FAKE_OK)
{
if (_items[lowGUID].find(display) == _items[lowGUID].end())
{
limit++;
_items[lowGUID][display] = newItem;
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, GetItemName(newItem->GetTemplate(), session), uiAction, display, session->GetTrinityString(LANG_POPUP_TRANSMOGRIFY)+GetItemName(newItem->GetTemplate(), session)+tokenCost, price, false);
}
}
}
}
for (uint8 i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; i++)
{
if (Bag* bag = player->GetBagByPos(i))
{
for (uint32 j = 0; j < bag->GetBagSize(); j++)
{
if (limit > 30)
break;
if (Item* newItem = player->GetItemByPos(i, j))
{
uint32 display = newItem->GetTemplate()->DisplayInfoID;
if (player->SuitableForTransmogrification(oldItem, newItem) == ERR_FAKE_OK)
{
if (_items[lowGUID].find(display) == _items[lowGUID].end())
{
limit++;
_items[lowGUID][display] = newItem;
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, GetItemName(newItem->GetTemplate(), session), uiAction, display, session->GetTrinityString(LANG_POPUP_TRANSMOGRIFY)+GetItemName(newItem->GetTemplate(), session)+tokenCost, price, false);
}
}
}
}
}
}
char removeOnePopup[250];
snprintf(removeOnePopup, 250, session->GetTrinityString(LANG_POPUP_REMOVE_ONE), GetSlotName(uiAction, session));
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_INTERACT_1, session->GetTrinityString(LANG_OPTION_REMOVE_ONE), EQUIPMENT_SLOT_END+3, uiAction, removeOnePopup, 0, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, session->GetTrinityString(LANG_OPTION_BACK), EQUIPMENT_SLOT_END+1, 0);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
}
else
OnGossipHello(player, creature);
} break;
case EQUIPMENT_SLOT_END+1: // Back
{
OnGossipHello(player, creature);
} break;
case EQUIPMENT_SLOT_END+2: // Remove Transmogrifications
{
bool removed = false;
for (uint8 Slot = EQUIPMENT_SLOT_START; Slot < EQUIPMENT_SLOT_END; Slot++)
{
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, Slot))
{
if (newItem->DeleteFakeEntry() && !removed)
removed = true;
}
}
if (removed)
{
session->SendAreaTriggerMessage(session->GetTrinityString(LANG_REM_TRANSMOGRIFICATIONS_ITEMS));
player->PlayDirectSound(3337);
}
else
session->SendNotification(session->GetTrinityString(LANG_ERR_NO_TRANSMOGRIFICATIONS));
OnGossipHello(player, creature);
} break;
//.........这里部分代码省略.........
示例9: OnGossipSelect
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
{
WorldSession* session = player->GetSession();
player->PlayerTalkClass->ClearMenus();
switch(sender)
{
case SENDER_SELECT_VENDOR: // action = slot
{
Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, action);
if (!item)
{
if (const char* slotname = getSlotName(action))
session->SendNotification("No item equipped in %s slot", slotname);
OnGossipHello(player, creature);
return true;
}
const ItemTemplate * itemTemplate = item->GetTemplate();
optionData* oM = &optionMap[(itemTemplate->Class == ITEM_CLASS_WEAPON ? MAX_ITEM_SUBCLASS_WEAPON : 0)+itemTemplate->SubClass][getCorrectInvType(itemTemplate->InventoryType)];
if (!oM->size())
{
if (const char* slotname = getSlotName(action))
session->SendNotification("No transmogrifications available for %s", slotname);
OnGossipHello(player, creature);
return true;
}
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, (std::string)"Update selected; "+getItemName(itemTemplate, session), sender, action);
for(optionData::iterator it = oM->begin(); it != oM->end(); ++it)
{
if (!TransmogDisplayVendorMgr::AllowedQuality(it->first)) // skip not allowed qualities
continue;
for(uint32 count = 0; count*MAX_VENDOR_ITEMS < it->second.size(); ++count)
{
std::ostringstream ss;
ss << getQualityName(it->first);
if (count)
ss << " [" << count << "]";
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, ss.str().c_str(), it->first, count*MAX_VENDOR_ITEMS);
}
}
if (player->PlayerTalkClass->GetGossipMenu().GetMenuItemCount() <= 1)
{
if (const char* slotname = getSlotName(action))
session->SendNotification("No transmogrifications available for %s", slotname);
player->PlayerTalkClass->ClearMenus();
OnGossipHello(player, creature);
return true;
}
selDataStruct temp = {action, 0, 0}; // slot, offset, quality
selData[player->GetGUIDLow()] = temp;
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Back..", SENDER_BACK, 0);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
} break;
case SENDER_BACK: // Back
{
OnGossipHello(player, creature);
} break;
case SENDER_REMOVE_ALL: // Remove TransmogDisplayVendorMgrs
{
bool removed = false;
for (uint8 Slot = EQUIPMENT_SLOT_START; Slot < EQUIPMENT_SLOT_END; Slot++)
{
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, Slot))
{
if (TransmogDisplayVendorMgr::DeleteFakeEntry(newItem) && !removed)
removed = true;
}
}
if (removed)
{
session->SendAreaTriggerMessage("Transmogrifications removed from equipped items");
player->PlayDirectSound(3337);
}
else
session->SendNotification("You have no transmogrified items equipped");
OnGossipSelect(player, creature, SENDER_REMOVE_MENU, 0);
} break;
case SENDER_REMOVE_ONE: // Remove TransmogDisplayVendorMgr from single item
{
const char* slotname = getSlotName(action);
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, action))
{
if (TransmogDisplayVendorMgr::DeleteFakeEntry(newItem))
{
if (slotname)
session->SendAreaTriggerMessage("%s transmogrification removed", slotname);
player->PlayDirectSound(3337);
}
else if (slotname)
session->SendNotification("No transmogrification on %s slot", slotname);
}
else if (slotname)
session->SendNotification("No item equipped in %s slot", slotname);
OnGossipSelect(player, creature, SENDER_REMOVE_MENU, 0);
} break;
case SENDER_REMOVE_MENU:
{
for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; slot++)
{
const char* slotname = getSlotName(slot);
if (!slotname)
//.........这里部分代码省略.........
示例10: HandleTransmogrify
void TransmogDisplayVendorMgr::HandleTransmogrify(Player* player, Creature* creature, uint32 vendorslot, uint32 itemEntry)
{
selDataType::iterator data = selData.find(player->GetGUIDLow());
if (data == selData.end())
return; // cheat, no slot selected
const char* slotname = getSlotName(data->second.slot);
if (!slotname)
return;
WorldSession* session = player->GetSession();
Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, data->second.slot);
if (!item)
{
session->SendNotification("Equipment slot is empty");
return;
}
if (item->GetOwnerGUID() != player->GetGUID())
return;
ItemTemplate const * srcTemplate = sObjectMgr->GetItemTemplate(itemEntry);
ItemTemplate const * tarTemplate = item->GetTemplate();
optionDataList oM = optionMap[(tarTemplate->Class == ITEM_CLASS_WEAPON ? MAX_ITEM_SUBCLASS_WEAPON : 0)+tarTemplate->SubClass][getCorrectInvType(tarTemplate->InventoryType)][data->second.quality];
optionDataList::iterator it = oM.begin();
std::advance(it, data->second.offset + vendorslot);
if (it == oM.end() || (*it) != itemEntry)
{
session->SendNotification("Items do not match");
return; // either cheat or changed items (not found in correct place in transmog vendor view)
}
if (!TransmogDisplayVendorMgr::CanTransmogrify(tarTemplate, srcTemplate))
{
session->SendNotification("Items do not match");
return;
}
if (uint32 fakeEntry = GetFakeEntry(item->GetGUIDLow()))
{
if (const ItemTemplate* fakeItemTemplate = sObjectMgr->GetItemTemplate(fakeEntry))
{
if (fakeItemTemplate->DisplayInfoID == srcTemplate->DisplayInfoID)
{
session->SendAreaTriggerMessage("%s already transmogrified with %s", slotname, getItemName(tarTemplate, session).c_str());
return;
}
}
}
if (TransmogDisplayVendorMgr::RequireToken && player->GetItemCount(TransmogDisplayVendorMgr::TokenEntry) < TransmogDisplayVendorMgr::TokenAmount)
{
session->SendNotification("You don't have enough %ss", getItemName(sObjectMgr->GetItemTemplate(TransmogDisplayVendorMgr::TokenEntry), session).c_str());
return;
}
int32 price = 0;
if (TransmogDisplayVendorMgr::RequireGold)
price = getFakePrice(tarTemplate);
if (player->HasEnoughMoney(price))
player->ModifyMoney(-price);
else
{
session->SendNotification("You don't have enough money");
return;
}
if (TransmogDisplayVendorMgr::RequireToken)
player->DestroyItemCount(TransmogDisplayVendorMgr::TokenEntry, TransmogDisplayVendorMgr::TokenAmount, true);
TransmogDisplayVendorMgr::SetFakeEntry(item, itemEntry);
player->PlayDirectSound(3337);
session->SendAreaTriggerMessage("%s transmogrified", slotname);
}