Você está desconectado.

Conecte-se e veja nossos conteúdos exclusivos!

Compartilhe
Ir em baixo
avatar
Banido
Banido
King Coins King Coins : 80
Reputação : 65
Tópicos : 10
Data de Cadastro : 21/07/2016
Ver perfil do usuário

[TFS 0.3.6] Player::canWalkthrough

em 23/9/2016, 18:08
Reputação da mensagem: 100% (2 votos)
Bom muita gente procura esse código, e ao olhar na internet só vi disponível em um fórum porém incompleto então decidi pegar o código e postá-lo com oque faltava.

Esse código é utilizado para que um player passe por outro player evitando tantas reclamações por "trapar" caminho ou algo parecido, vamos lá!

Player.cpp procure por:

Spoiler:
bool Player::canWalkthrough(const Creature* creature) const

Substitua todo o código por:

Spoiler:
bool Player::canWalkthrough(const Creature* creature) const
{
if(creature == this || hasCustomFlag(PlayerCustomFlag_CanWalkthrough) || 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() == WORLD_TYPE_NO_PVP &&
player->getVocation()->isAttackable()) || player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) || (player->getVocation()->isAttackable() &&
player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL))) && player->getTile()->ground) &&
(!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
|| player->getAccess() <= getAccess()))
return true;

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

Depois vá em const.h e procure por:

Spoiler:
PlayerCustomFlag_CanWearAllAddons, //2^23 = 8388608

E em baixo coloque:

Spoiler:
PlayerCustomFlag_IsWalkable, //2^24 = 16777216
PlayerCustomFlag_CanWalkthrough, //2^25 = 33554433

Provavelmente em muitas sources do tfs 0.3.6, dê não exatamente um erro mais um aviso no player.cpp na função:

Spoiler:
void Player::updateInventoryWeight()

Se o aviso ocorrer substitua a função citada acima por essa:

Spoiler:
void Player::updateInventoryWeight()
{
inventoryWeight = 0.00;

if(!hasFlag(PlayerFlag_HasInfiniteCapacity)){
for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){
Item* item = getInventoryItem((slots_t)i);
if(item){
inventoryWeight += item->getWeight();
}
}
}
}

Só utilize o código acima se ocorrer o "warning/aviso" sobre a função.

Spoiler:
Créditos: Lordbaxx;Zoro (Eu por trazer ao fórum)

Se Ajudei REP+

____________________________________________________________________________________________________________________________________________________
Não dou Suporte via PM
avatar
Administrador
Administrador
King Coins King Coins : -1241
Reputação : 11722
Eu sou : Scripter
Tópicos : 285
Data de Cadastro : 26/09/2015
Idade : 19
Ver perfil do usuáriohttp://pokeking7.forumeiros.com

Re: [TFS 0.3.6] Player::canWalkthrough

em 23/9/2016, 19:10
Opa, irá ajudar muitos.
Você recebeu 1 REP+.
Voltar ao Topo
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum