Example #1
0
bool BuyAction::Execute(Event event)
{
    string link = event.getParam();

    ItemIds itemIds = chat->parseItems(link);
    if (itemIds.empty())
        return false;

    Player* master = GetMaster();

    if (!master)
        return false;

    Unit* vendor = master->GetSelectedUnit();
    if (!vendor)
        return false;

    Creature *pCreature = bot->GetNPCIfCanInteractWith(vendor->GetGUID(), UNIT_NPC_FLAG_VENDOR);
    if (!pCreature)
    {
        ai->TellMaster("Cannot talk to vendor");
        return false;
    }

    VendorItemData const* tItems = pCreature->GetVendorItems();
    if (!tItems)
    {
        ai->TellMaster("This vendor has no items");
        return false;
    }

    for (ItemIds::iterator i = itemIds.begin(); i != itemIds.end(); i++)
    {
        for (uint32 slot = 0; slot < tItems->GetItemCount(); slot++)
        {
            if (tItems->GetItem(slot)->item == *i)
            {
                bot->BuyItemFromVendorSlot(vendor->GetGUID(), slot, *i, 1, NULL_BAG, NULL_SLOT);
                ai->TellMaster("Bought item");
            }
        }
    }

    return true;
}