Você está desconectado.

Conecte-se e veja nossos conteúdos exclusivos!
 

  



Curta-nos: Curtir

[TFS 0.3.6] Player::canWalkthrough

Compartilhe

Programador Wolf
Banido
Banido

King Coin(s) King Coin(s) : 79
Reputação : 64
Tópicos : 10
Data de Cadastro : 21/07/2016

[TFS 0.3.6] Player::canWalkthrough

Mensagem por Programador Wolf em Sex Set 23, 2016 11:08 pm

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

GOD Vitor
Administrador
Administrador

King Coin(s) King Coin(s) : 32
Reputação : 13014
Facebook : Facebook.com/Vitor.Eduardo.5567
OTServ Favorito : Pokémon Paraíso V3 - O Retorno
Meu Char : Zed Stars
Seção Favorita : Spriting
Eu sou : Scripter
Tópicos : 250
Data de Cadastro : 27/09/2015
Idade : 18
Localização : Florianópolis - SC

Re: [TFS 0.3.6] Player::canWalkthrough

Mensagem por GOD Vitor em Sab Set 24, 2016 12:10 am

Opa, irá ajudar muitos.
Você recebeu 1 REP+.


________________________________________



Dicas Importantes:
- Respeite as Regras.
- Não peça suporte por MP

    Data/hora atual: Ter Fev 28, 2017 6:26 am