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

Compiling Walkthrough mobs on GM

Sun

Knowledge is power - France is bacon
Joined
Jan 26, 2015
Messages
334
Solutions
22
Reaction score
249
Code:
bool Player::canWalkthrough(const Creature* creature) const
{       
    if(creature->getNpc())
        return true;
       
    if(creature == this || creature->isWalkable() ||
        (creature->getMaster() && creature->getMaster() != this && canWalkthrough(creature->getMaster())))
        return true;

    const Player* player = creature->getPlayer();
    if(!player)
        return false;
   
    if(((((
    player->getVocation()->isAttackable() &&
        player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL)
        )|| (player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) &&
        !player->getTile()->hasFlag(TILESTATE_HOUSE)))) && player->getTile()->ground &&
        player->getTile()->ground->getID() != 11063) && (!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
        || player->getAccess() <= getAccess()))
    return true;

       
    if((((g_game.getWorldType() == WORLDTYPE_OPTIONAL &&
#ifdef __WAR_SYSTEM__
        !player->isEnemy(this, true) &&
#endif
        player->getVocation()->isAttackable()) || (player->getVocation()->isAttackable() &&
        player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL))) && player->getTile()->ground &&
        Item::items[player->getTile()->ground->getID()].walkStack) && (!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
        || player->getAccess() <= getAccess()))
        return true;

    return (player->isGhost() && getGhostAccess() < player->getGhostAccess())
        || (isGhost() && getGhostAccess() > player->getGhostAccess());
}

What do I add/edit to make it possible for gms+ to walkthrough monsters?
 
Code:
bool Player::canWalkthrough(const Creature* creature) const
{     
    if(creature->getNpc())
        return true;
     
    if(creature == this || creature->isWalkable() ||
        (creature->getMaster() && creature->getMaster() != this && canWalkthrough(creature->getMaster())))
        return true;

    const Player* player = creature->getPlayer();
    if(!player)
        return false;
 
    if(((((
    player->getVocation()->isAttackable() &&
        player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL)
        )|| (player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) &&
        !player->getTile()->hasFlag(TILESTATE_HOUSE)))) && player->getTile()->ground &&
        player->getTile()->ground->getID() != 11063) && (!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
        || player->getAccess() <= getAccess()))
    return true;

     
    if((((g_game.getWorldType() == WORLDTYPE_OPTIONAL &&
#ifdef __WAR_SYSTEM__
        !player->isEnemy(this, true) &&
#endif
        player->getVocation()->isAttackable()) || (player->getVocation()->isAttackable() &&
        player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL))) && player->getTile()->ground &&
        Item::items[player->getTile()->ground->getID()].walkStack) && (!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
        || player->getAccess() <= getAccess()))
        return true;

    return (player->isGhost() && getGhostAccess() < player->getGhostAccess())
        || (isGhost() && getGhostAccess() > player->getGhostAccess());
}

What do I add/edit to make it possible for gms+ to walkthrough monsters?

"(!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)" This is similar to what you need to use. You also need to make an enum for the flag.

The rest you have to figure out yourself :)
 
Back
Top