• 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++ Crash Party OpenTibia 0.5.0

primate

Member
Joined
Apr 14, 2009
Messages
68
Solutions
1
Reaction score
5
Location
Colombia, Medellín.
They showed me a bug that they do with 2 characters in party, Those 2 characters start to logout does this cause my server to crash. "Someone so kind and can help me?"

Example:
C++:
#ifdef __PARTYSYSTEM__
void Protocol81::parseInviteParty(NetworkMessage &msg)
{
    unsigned long creatureid = msg.GetU32();
    Creature* creature = g_game.getCreatureByID(creatureid);
    Player* target = dynamic_cast<Player*>(creature);

    if(!target)
        return;
    if(!player->party){
        Party::createParty(player, target);
        return;
    }
    if(player->party->getLeader() != player)
        return;

    player->party->invitePlayer(target);
}

void Protocol81::parseRevokeParty(NetworkMessage &msg)
{
    unsigned long cid = msg.GetU32();
    Player* target = g_game.getPlayerByID(cid);
    if(target && player->party)
        player->party->revokeInvitation(target);
}

void Protocol81::parseJoinParty(NetworkMessage &msg)
{
    unsigned long cid = msg.GetU32();
    Player* target = g_game.getPlayerByID(cid);
    
    if(target && target->party)
        target->party->acceptInvitation(player);
}

void Protocol81::parsePassLeadership(NetworkMessage &msg)
{
    unsigned long cid = msg.GetU32();
    Player* target = g_game.getPlayerByID(cid);
    if(target && player->party && player->party->getLeader() == player)
        player->party->passLeadership(target);
}

void Protocol81::parseLeaveParty()
{
    if(player->party)
        player->party->kickPlayer(player);
}
#endif

Thanks for your time.
 
C++:
#ifdef __PARTYSYSTEM__
void Protocol81::parseInviteParty(NetworkMessage &msg)
{
    unsigned long creatureid = msg.GetU32();
    Creature* creature = g_game.getCreatureByID(creatureid);
    Player* target = dynamic_cast<Player*>(creature);

    if (creatureid == player->getID())
        return;
    if(!target)
        return;
    if(!player->party){
        Party::createParty(player, target);
        return;
    }
    if(player->party->getLeader() != player)
        return;

    player->party->invitePlayer(target);
}

void Protocol81::parseRevokeParty(NetworkMessage &msg)
{
    unsigned long cid = msg.GetU32();
    Player* target = g_game.getPlayerByID(cid);
    if(target && player->party)
        player->party->revokeInvitation(target);
}

void Protocol81::parseJoinParty(NetworkMessage &msg)
{
    unsigned long cid = msg.GetU32();
    Player* target = g_game.getPlayerByID(cid);
    
    if(target && target->party)
        target->party->acceptInvitation(player);
}

void Protocol81::parsePassLeadership(NetworkMessage &msg)
{
    unsigned long cid = msg.GetU32();
    Player* target = g_game.getPlayerByID(cid);
    if(target && player->party && player->party->getLeader() == player)
        player->party->passLeadership(target);
}

void Protocol81::parseLeaveParty()
{
    if(player->party)
        player->party->kickPlayer(player);
}
#endif
 
Back
Top