Ir para conteúdo
  • Cadastre-se

(Resolvido)Player passando dentro do outro


Ir para solução Resolvido por JonatasLucasf,

Posts Recomendados

@Up Precisando Tbm  :facepalm:  :facepalm:  ^^

Link para o post
Compartilhar em outros sites

@UP Estou precisando muito também cara se precisar das sources eu tenho aqui e sei mexer só preciso saber onde modificar :( , sempre quando tem perguntas desse tipo ninguém ajuda se alguém souber por favor nos ajude.

Link para o post
Compartilhar em outros sites

player.cpp, função canWalkthrough:

 

TFS 0.3.6:

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());
}

 

TFS 0.4:

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() == WORLDTYPE_OPTIONAL && !player->isEnemy(this, true) &&
        player->getVocation()->isAttackable()) || player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) || (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());
}

Link para o post
Compartilhar em outros sites

@EDIT KKKKK Perfeito Fireelement funcionou lindamente carai sou seu fan dps dessa mt tempo procurando.

 

 

Agora pra um player nao assaltar o depot do outro oq eu tenho q fazer? rep +

Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Onde coloco isso? Como mencionei la em cima não sei onde fica as source

 

 

O que é source?

Source é o nome dado ao conjunto de códigos que futuramente será um programa, em otserv nem sempre conseguimos esta source, mesmo sendo uma lei sua liberação, o servidor mais usado atualmente “TFS” tem seus códigos liberados e podemos conseguir na seção Download otserv procurando a versão desejada.

Como abrir uma source?

Como os códigos são apenas textos podemos abrir-los em um editor de texto normal, porem para facilitar o trabalho do programador usamos IDE, o mais popular no mundo dos otservs, Dev-cpp.

Como criar um executável (compilar)?

Criar um executável é um trabalho muito simples e existem muitos tutoriais sobre isso na sessão Tutoriais otserv.

O que é uma biblioteca (lib)?

São “arquivos” onde contem sistemas para ser usadas no seu programa, um bom exemplo é a libMySql onde contem funções para trabalhar com Mysql em seu programa.

O que são linguagens de programação?

Como o computador entende apenas 0 e 1 e é muito complica fazer programas usando apenas 0 e 1 foi inventada as linguagens de programação, onde se tem um complicador que transforma códigos em uma linguagem que o computador entenda.Essas linguagens devem seguir uma seqüência lógica, assim fazendo com que o compilador entenda o códigos.

O que é C++?

C++ é a linguagem de programação que é usada em OT.

O que é IDE?

São programas que ajudam o programador na hora de fazer o programa.

O que é um compilador?

É o programa primário onde sua função é transformar códigos feitos em linguagens de programação para uma linguagem compreendida pelo computador.

ca.png?1422745283

 

CONQUISTASdesigner-king.png   Designer.png    

 

Link para o post
Compartilhar em outros sites

@EDIT KKKKK Perfeito Fireelement funcionou lindamente carai sou seu fan dps dessa mt tempo procurando.

 

 

Agora pra um player nao assaltar o depot do outro oq eu tenho q fazer? rep +

Tem uma tag chamada walkStack, você usa na config do tile (items.xml):

<attribute key="walkStack" value="0" />

TFS 0.4 é só adicionar a tag, se for 0.3.6 tem que fazer isso aqui também:

items.cpp, procure por:

    moveable = true;

Troque para:

    moveable = walkStack = true;

Procure por:

            else if(tmpStrValue == "transformto")
            {
                if(readXMLInteger(itemAttributesNode, "value", intValue))
                    it.transformToFree = intValue;
            }

Adiciona logo a baixo:

            else if(tmpStrValue == "walkstack")
            {
                if(readXMLInteger(itemAttributesNode, "value", intValue))
                    it.walkStack = (intValue != 0);
            }

items.h, procure por:

lookThrough,

troque para:

lookThrough, walkStack,

Na função canWalkthrough (player.cpp), usa isso:

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 &&
        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());
}

Link para o post
Compartilhar em outros sites

Meu Tfs 0.4 Fireelement Muito bom mais tem alguns probleminhas:

 

Bom oque eu queria realmente era o seguinte qualquer Player de qualquer level pode se atravessar em Protection Zone, Mas Fora da protection Zone somente players que estejam abaixo do Protection Level, Por que eu testei aqui e players podem se atravessar fora da protection zone e dentro dependendo do nivel eles nao se atravessam.

Link para o post
Compartilhar em outros sites

Meu Tfs 0.4 Fireelement Muito bom mais tem alguns probleminhas:

 

Bom oque eu queria realmente era o seguinte qualquer Player de qualquer level pode se atravessar em Protection Zone, Mas Fora da protection Zone somente players que estejam abaixo do Protection Level, Por que eu testei aqui e players podem se atravessar fora da protection zone e dentro dependendo do nivel eles nao se atravessam.

Testei aqui e ta normal, depende do protectionLevel e só funciona se o player tiver vocação.

Link para o post
Compartilhar em outros sites

E Meio engraçado isso tem hora q nao da certo e tem hora que da mais por exemplo um char lvl 1 sendo q a protection zone e 150 tenta atravessar 1 lvl 1042 fora da pz nao da, e quando um player 899 tenta atravessar um 1042 nao da tambem mas testei agora e deu certo. so queria que qualquer um pudesse se atravessar dentro da protection zone mas fora so apenas players do lvl 1 ao 150 pudessem se atravessar.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo