• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Compiling GM/CM/GOD canWalkthrough monsters/NPCs

gmstrikker

Well-Known Member
Joined
Jul 30, 2014
Messages
458
Solutions
1
Reaction score
50
How to change to, GMs/GODs/CMs can enter in monsters/npcs?

without lock the players enter itself in PZ area

Code:
bool Player::canWalkthrough(const Creature* creature) const
{
  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(
   (
   (
   (
   (
   g_game.getWorldType() == WORLDTYPE_OPTIONAL &&
   #ifdef __WAR_SYSTEM__
       !player->isEnemy(this, true) &&
   #endif
   
   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->getTile()->ground->getID() != 426 &&
   player->getTile()->ground->getID() != 425 &&
   player->getTile()->ground->getID() != 3216 &&
   player->getTile()->ground->getID() != 3217 &&
   player->getTile()->ground->getID() != 416 &&
   player->getTile()->ground->getID() != 417 &&
   player->getTile()->ground->getID() != 446 &&
   player->getTile()->ground->getID() != 447
   ) && (
   !player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
   || player->getAccess() <= getAccess()
   )
   ) return true;

   return (player->isGhost() && getGhostAccess() < player->getGhostAccess())
   || (isGhost() && getGhostAccess() > player->getGhostAccess());
}
 
if you change it:
Code:
  if(creature == this || creature->isWalkable() ||
  (creature->getMaster() && creature->getMaster() != this && canWalkthrough(creature->getMaster())))
  return true;

To it
Code:
  if(creature == this || hasCustomFlag(PlayerCustomFlag_CanWalkthrough) || creature->isWalkable() ||
     (creature->getMaster() && creature->getMaster() != this && canWalkthrough(creature->getMaster())))
     return true;

Gods can enter on monsters and npcs, but it will bug, players will can't walk on PZ zone
 
You can't just post a piece of code and expect everyone to know where it came from especially with all the different distro's floating around.
Make it a habit to post the distro and your posts won't be overlooked.
 
How to change to, GMs/GODs/CMs can enter in monsters/npcs?

without lock the players enter itself in PZ area

Code:
bool Player::canWalkthrough(const Creature* creature) const
{
  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(
   (
   (
   (
   (
   g_game.getWorldType() == WORLDTYPE_OPTIONAL &&
   #ifdef __WAR_SYSTEM__
       !player->isEnemy(this, true) &&
   #endif
  
   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->getTile()->ground->getID() != 426 &&
   player->getTile()->ground->getID() != 425 &&
   player->getTile()->ground->getID() != 3216 &&
   player->getTile()->ground->getID() != 3217 &&
   player->getTile()->ground->getID() != 416 &&
   player->getTile()->ground->getID() != 417 &&
   player->getTile()->ground->getID() != 446 &&
   player->getTile()->ground->getID() != 447
   ) && (
   !player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
   || player->getAccess() <= getAccess()
   )
   ) return true;

   return (player->isGhost() && getGhostAccess() < player->getGhostAccess())
   || (isGhost() && getGhostAccess() > player->getGhostAccess());
}
I doesn't understand what you want? ;o
 
Back
Top