• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Autoloot opening backpacks

grafit

New Member
Joined
Sep 11, 2008
Messages
71
Reaction score
2
Hi folks

I have autoloot script working perfectly, but some monsters drop some backpacks

otland.png

So my autoloot move them to player's backpack

Could someone help me change my autoloot system to open these backpacks and loot itens inside?

C++:
if (player->canOpenCorpse(corpseOwner) && player->autoLootList.size() != 0) {
                if (player->getCapacity() > 100 * 100) { //Minimum of Capacity for autoloot works. (100 CAP)
                    for (Item* item2 : container->getItemList()) {
                        if (player->getItemFromAutoLoot(item2->getID())) {
                            std::ostringstream msgAutoLoot;
                            msgAutoLoot << "You looted a " << item2->getItemCount() << "x " << item2->getName() << ".";
                            g_game.internalMoveItem(container, player, CONST_SLOT_WHEREEVER, item2, item2->getItemCount(), nullptr);
                            player->sendTextMessage(MESSAGE_INFO_DESCR, msgAutoLoot.str());
                        }
                    }
                }
                else {
                    player->sendTextMessage(MESSAGE_INFO_DESCR, "Sorry, you don't have enough capacity to use auto loot, so it has been disabled. (100+ capacity is required)");
                }
 
Last edited:
Just duplicate the "for":
C++:
if (corpseOwner != 0 && !player->canOpenCorpse(corpseOwner)) {
    return RETURNVALUE_YOUARENOTTHEOWNER;
} else {
    if (player->canOpenCorpse(corpseOwner) && player->autoLootList.size() != 0) {
        if (player->getCapacity() > 100 * 100) { //Minimum of Capacity for autoloot works. (100 CAP)
            for (Item* itemloot : container->getItemList()) {
                if (Container* containerbag = itemloot->getContainer()) {
                    for (Item* bagitem : containerbag->getItemList()) {
                        if (player->getItemFromAutoLoot(bagitem->getID())) {
                            std::ostringstream msgAutoLoot;
                            msgAutoLoot << "You looted a " << bagitem->getItemCount() << "x " << bagitem->getName() << ".";
                            g_game.internalMoveItem(containerbag, player, CONST_SLOT_WHEREEVER, bagitem, bagitem->getItemCount(), nullptr);
                            player->sendTextMessage(MESSAGE_INFO_DESCR, msgAutoLoot.str());
                        }
                    }
                }
                if (player->getItemFromAutoLoot(itemloot->getID())) {
                    std::ostringstream msgAutoLoot;
                    msgAutoLoot << "You looted a " << itemloot->getItemCount() << "x " << itemloot->getName() << ".";
                    g_game.internalMoveItem(container, player, CONST_SLOT_WHEREEVER, itemloot, itemloot->getItemCount(), nullptr);
                    player->sendTextMessage(MESSAGE_INFO_DESCR, msgAutoLoot.str());
                }
            }
        } else {
            player->sendTextMessage(MESSAGE_INFO_DESCR, "Sorry, you don't have enough capacity to use auto loot, so it has been disabled. (100+ capacity is required)");
        }
    }
}
 
Back
Top