Ir para conteúdo
  • Cadastre-se

[RESOLVIDO] [C++] -=[TFS]=- 0.3.6 - 8.60 - PROBLEMA ENCONTRADO FOI NO PLAYER.CPP


Posts Recomendados

[C++] -=[TFS]=- 0.3.6 - 8.60 - PROBLEMA ENCONTRADO FOI NO PLAYER.CPP

 

O ITEM AGORA CAI SLOT DO PLAYER NÃO CAI MAIS NO CHÃO AQUI ESTA PROBLEMA O ITEM CAI NO SLOT DO PLAYER ELE AGRUPA ITENS EMPILHA AUTOMATICAMENTE MAIS SÓ NO SLOT ELE NAO EMPILHA NA BACKPACK

Cylinder* Player::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t& flags)
{
    if (index == 0 /* drop to capacity window */ || index == INDEX_WHEREEVER)
    {
        *destItem = NULL;
        const Item* item = thing->getItem();
        if (!item)
            return this;

        // Tentar encontrar um slot apropriado no inventário
        for (int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i)
        {
            if (!inventory[i])
            {
                if (__queryAdd(i, item, item->getItemCount(), 0) == RET_NOERROR)
                {
                    index = i;
                    return this;
                }
            }
            else if (inventory[i] != tradeItem)
            {
                if (Item* inventoryItem = inventory[i])
                {
                    // Tentar empilhar itens
                    if (inventoryItem->getID() == item->getID() && inventoryItem->isStackable() && inventoryItem->getItemCount() < 100)
                    {
                        *destItem = inventoryItem;
                        index = i;
                        return this;
                    }
                }
            }
        }

        // Tentar adicionar aos containers do inventário
        std::list<std::pair<Container*, int32_t> > deepList;
        for (int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i)
        {
            if (inventory[i] == tradeItem)
                continue;

            if (Container* container = dynamic_cast<Container*>(inventory[i]))
            {
                if (container->__queryAdd(-1, item, item->getItemCount(), 0) == RET_NOERROR)
                {
                    index = INDEX_WHEREEVER;
                    *destItem = NULL;
                    return container;
                }
                deepList.push_back(std::make_pair(container, 0));
            }
        }

        // Verificar mais profundamente nos containers
        int32_t deepness = g_config.getNumber(ConfigManager::PLAYER_DEEPNESS);
        for (std::list<std::pair<Container*, int32_t> >::iterator dit = deepList.begin(); dit != deepList.end(); ++dit)
        {
            Container* c = (*dit).first;
            if (!c || c->empty())
                continue;

            int32_t level = (*dit).second;
            for (ItemList::const_iterator it = c->getItems(); it != c->getEnd(); ++it)
            {
                if ((*it) == tradeItem)
                    continue;

                if (Container* subContainer = dynamic_cast<Container*>(*it))
                {
                    if (subContainer->__queryAdd(-1, item, item->getItemCount(), 0) == RET_NOERROR)
                    {
                        index = INDEX_WHEREEVER;
                        *destItem = NULL;
                        return subContainer;
                    }

                    if (deepness < 0 || level < deepness)
                        deepList.push_back(std::make_pair(subContainer, (level + 1)));
                }
            }
        }

        // Se não encontrou lugar adequado, retorna this
        return this;
    }

    Thing* destThing = __getThing(index);
    if (destThing)
        *destItem = destThing->getItem();

    if (Cylinder* subCylinder = dynamic_cast<Cylinder*>(destThing))
    {
        index = INDEX_WHEREEVER;
        *destItem = NULL;
        return subCylinder;
    }

    return this;
}

 

Editado por Muvukaa (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Muvukaa mudou o título para [RESOLVIDO] [C++] -=[TFS]=- 0.3.6 - 8.60 - PROBLEMA ENCONTRADO FOI NO PLAYER.CPP

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo