• 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!

C++ [TFS 0.4] - Using ammunition from containers

weapon.cpp
C++:
void Weapon::onUsedAmmo(Player* player, Item* item, Tile* destTile) const
{
    if(!g_config.getBool(ConfigManager::REMOVE_WEAPON_AMMO))
        return;

    switch(ammoAction)
    {
        case AMMOACTION_REMOVECOUNT:
            int32_t newCount = std::max((int32_t)0, ((int32_t)item->getItemCount()) - 1);
            if (newCount == 0) {
                int32_t ammoCount = std::max<int32_t>(1, std::min<int32_t>(100, player->__getItemTypeCount(item->getID())));
                g_game.transformItem(item, item->getID(), ammoCount);
                player->removeItemOfType(item->getID(), ammoCount, item->getSubType());
            } else {
                g_game.transformItem(item, item->getID(), newCount);
            }
            break;

        case AMMOACTION_REMOVECHARGE:
            g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getCharges()) - 1));
            break;

        case AMMOACTION_MOVE:
            g_game.internalMoveItem(player, item->getParent(), destTile, INDEX_WHEREEVER, item, 1, NULL, FLAG_NOLIMIT);
            break;

        case AMMOACTION_MOVEBACK:
            break;

        default:
            if(item->hasCharges())
                g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getCharges()) - 1));

            break;
    }
}
 
Error:
rnit2h.png
 
maybe try change:
C++:
player->removeItemOfType(item->getID(), ammoCount, item->getSubType());
to:
C++:
g_game.removeItemOfType(item->getParent(), item->getID(), ammoCount, item->getSubType());
 
Back
Top