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

TFS 1.2 Game::playerMoveUpContainer crash?

SixNine

Active Member
Joined
Dec 12, 2018
Messages
442
Reaction score
40
Anyone got an idea how to fix it?

C++:
void Game::playerMoveUpContainer(uint32_t playerId, uint8_t cid)
{
    Player* player = getPlayerByID(playerId);
    if (!player) {
        return;
    }

    Container* container = player->getContainerByID(cid);
    if (!container) {
        return;
    }

    Container* parentContainer = dynamic_cast<Container*>(container->getRealParent());
    if (!parentContainer) {
        Tile* tile = container->getTile();
        if (!tile) {
            return;
        }
    }

    bool hasParent = (dynamic_cast<const Container*>(parentContainer->getParent()) != nullptr);
    player->addContainer(cid, parentContainer);
    player->sendContainer(cid, parentContainer, hasParent, player->getContainerIndex(cid));
}
 
Solution
Anyone got an idea how to fix it?

C++:
void Game::playerMoveUpContainer(uint32_t playerId, uint8_t cid)
{
    Player* player = getPlayerByID(playerId);
    if (!player) {
        return;
    }

    Container* container = player->getContainerByID(cid);
    if (!container) {
        return;
    }

    Container* parentContainer = dynamic_cast<Container*>(container->getRealParent());
    if (!parentContainer) {
        Tile* tile = container->getTile();
        if (!tile) {
            return;
        }
    }

    bool hasParent = (dynamic_cast<const Container*>(parentContainer->getParent()) != nullptr);
    player->addContainer(cid, parentContainer);
    player->sendContainer(cid, parentContainer...
Anyone got an idea how to fix it?

C++:
void Game::playerMoveUpContainer(uint32_t playerId, uint8_t cid)
{
    Player* player = getPlayerByID(playerId);
    if (!player) {
        return;
    }

    Container* container = player->getContainerByID(cid);
    if (!container) {
        return;
    }

    Container* parentContainer = dynamic_cast<Container*>(container->getRealParent());
    if (!parentContainer) {
        Tile* tile = container->getTile();
        if (!tile) {
            return;
        }
    }

    bool hasParent = (dynamic_cast<const Container*>(parentContainer->getParent()) != nullptr);
    player->addContainer(cid, parentContainer);
    player->sendContainer(cid, parentContainer, hasParent, player->getContainerIndex(cid));
}
C++:
void Game::playerMoveUpContainer(uint32_t playerId, uint8_t cid)
{
    Player* player = getPlayerByID(playerId);
    if (!player) {
        return;
    }

    Container* container = player->getContainerByID(cid);
    if (!container) {
        return;
    }

    Container* parentContainer = dynamic_cast<Container*>(container->getRealParent());
    if (!parentContainer) {
        return;
    }

    player->addContainer(cid, parentContainer);
    player->sendContainer(cid, parentContainer, parentContainer->hasParent(), player->getContainerIndex(cid));
}
 
Solution
C++:
void Game::playerMoveUpContainer(uint32_t playerId, uint8_t cid)
{
    Player* player = getPlayerByID(playerId);
    if (!player) {
        return;
    }

    Container* container = player->getContainerByID(cid);
    if (!container) {
        return;
    }

    Container* parentContainer = dynamic_cast<Container*>(container->getRealParent());
    if (!parentContainer) {
        return;
    }

    player->addContainer(cid, parentContainer);
    player->sendContainer(cid, parentContainer, parentContainer->hasParent(), player->getContainerIndex(cid));
}
Can you explain why you removed particular code parts?
 
container.cpp doesnt contain Container::hasParent()

overall in source there is no such think
okay add this in container.cpp
C++:
bool Container::hasParent() const
{
    return getID() != ITEM_BROWSEFIELD && dynamic_cast<const Player*>(getParent()) == nullptr;
}
then go container.h
call the code header and add this
C++:
bool hasParent() const;
 
okay add this in container.cpp
C++:
bool Container::hasParent() const
{
    return getID() != ITEM_BROWSEFIELD && dynamic_cast<const Player*>(getParent()) == nullptr;
}
then go container.h
call the code header and add this
C++:
bool hasParent() const;
 
Back
Top