Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Foi testado no TheForgottenServer 0.3.6 no Tibia 8.54

 

Como o client já está modificado, precisamos modificar a parte do servidor que envia os dados para o client.
Vamos modificar dois métodos, addMagicEffect e sendMagicEffect.

Entre na sua source 0.3.6

Encontre o arquivo protocolgamer.cpp
Você vai encontrar esse código

void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint8_t type)
{
    msg->AddByte(0x83);
    msg->AddPosition(pos);
    msg->AddByte(type + 1);
}

Percebeu esse parametro uint8_t type?
Vamos modificar para uint16_t type.
Mas isso não vai adiantar nada se o msg->AddByte(type + 1) continuar desse jeito...
Modifique ele para msg->AddU16(type + 1).

O código modificado deve ficar desse jeito
 

void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint16_t type)
{
    msg->AddByte(0x83);
    msg->AddPosition(pos);
    msg->AddU16(type + 1);
}

Você já deve ter pegado a lógica...
Onde tiver um método addMagicEffect com o parametro uint8_t type, tem que trocar por uint16_t type, o mesmo serve para sendMagicEffect.
Mas como sei que tem pessoas que não gostam de trabalhar um pouco, vamos continuar com os arquivos para modificar.

No mesmo arquivo procure por esse código

void ProtocolGame::sendMagicEffect(const Position& pos, uint8_t type)
{
    if(type > MAGIC_EFFECT_LAST || !canSee(pos))
        return;

    NetworkMessage_ptr msg = getOutputBuffer();
    if(msg)
    {
        TRACK_MESSAGE(msg);
        AddMagicEffect(msg, pos, type);
    }
}

Temos alguém conhecido nos parametros, o uint8_t type, já sabemos o que devemos fazer, modifique ele para uint16_t type,

Código deve está desse jeito

void ProtocolGame::sendMagicEffect(const Position& pos, uint16_t type)
{
    if(type > MAGIC_EFFECT_LAST || !canSee(pos))
        return;

    NetworkMessage_ptr msg = getOutputBuffer();
    if(msg)
    {
        TRACK_MESSAGE(msg);
        AddMagicEffect(msg, pos, type);
    }
}

As alterações desse arquivos terminaram, salva as alterações.

Vamos para outro arquivo, o protocolgamer.h

Procure por esse código

void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint8_t type);

Novamente troque o uint8_t type por uint16_t type
Código devera ficar desse jeito

void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint16_t type);

Procure por esse código
 

void sendMagicEffect(const Position& pos, uint8_t type);

Troque o uint8_t type por uint16_t type
Código devera ficar desse jeito

void sendMagicEffect(const Position& pos, uint16_t type);

Salve as alterações e vamos para o outro arquivo, está cançado de modificar os códigos? é assim mesmo, se quer alguma coisa tem que se esforçar por ela.

Vamos para o arquivo game.cpp

Procure por esses códigos

void Game::addMagicEffect(const Position& pos, uint8_t effect, bool ghostMode /* = false */)
{
    if(ghostMode)
        return;

    const SpectatorVec& list = getSpectators(pos);
    addMagicEffect(list, pos, effect);
}

void Game::addMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode/* = false*/)
{
    if(ghostMode)
        return;

    Player* player = NULL;
    for(SpectatorVec::const_iterator it = list.begin(); it != list.end(); ++it)
    {
        if((player = (*it)->getPlayer()))
            player->sendMagicEffect(pos, effect);
    }
}

Troque os parametros uint8_t effect por uint16_t effect

Dexando-os assim

void Game::addMagicEffect(const Position& pos, uint16_t effect, bool ghostMode /* = false */)
{
    if(ghostMode)
        return;

    const SpectatorVec& list = getSpectators(pos);
    addMagicEffect(list, pos, effect);
}

void Game::addMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode/* = false*/)
{
    if(ghostMode)
        return;

    Player* player = NULL;
    for(SpectatorVec::const_iterator it = list.begin(); it != list.end(); ++it)
    {
        if((player = (*it)->getPlayer()))
            player->sendMagicEffect(pos, effect);
    }
}

Salve as alterações e vamos para o outro arquivo, game.h

Procure por esse códigos, está ficando repetitivo, mas é assim mesmo

void addMagicEffect(const Position& pos, uint8_t effect, bool ghostMode = false);
void addMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode = false);

Troque o uint8_t effect por uint16_t effect

Código tem que ficar desse jeito

void addMagicEffect(const Position& pos, uint16_t effect, bool ghostMode = false);
void addMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode = false);

Essa foi rápido, salve as alterações e vamos para o outro arquivo, player.h

Procure por esse código

void sendMagicEffect(const Position& pos, uint8_t type) const

Troque por esse código

void sendMagicEffect(const Position& pos, uint16_t type) const

Salve as alterações, esse foi o último arquivo

Agora compile!

Uma coisa que você deve saber, se você tentar entrar com o client que não esteja esperando valores do tipo uint16 e algum efeito for executado, vai da um erro no client, não da para jogar...

Vamos baixar o client modificado.

 

Download cliente com as seguintes configurações.

Port:      7171

IP:         127.0.0.1

Version: 8.54

Clique aqui para baixar esse cliente

Virus total desse client

 

Download cliente com as seguintes configurações.

Port:      7272

IP:         127.0.0.1

Version: 8.54

Clique aqui para baixar esse cliente

Virus total desse client

 

Modificações dos clientes foram feitos por mim.

Reporte qualquer bug que ocorrer.

Esse tutorial ensina como tirar o limite de 255 efeitos do tibia, se você não tiver mais de 255 efeitos colocados em sua source, então coloque para testar, não precisa colocar agora, e se você quiser pode colocar depois e já deixar seu client preparado para suporta mais de 255 efeitos.

Tutorial para adicionar efeitos na sua source.

 

Não deixe de agradecer...

Editado por BrunoMaia (veja o histórico de edições)

  • 3 weeks later...
  • Respostas 20
  • Visualizações 4.6k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Então o seu tfs é versão 0.4, no entanto mude para: msg->put<uint16_t>(type + 1); Mais detalhes de como alterar sem erro nessa versão:  

Posted Images

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Postado

Como faço pra editar meu client 8.60 e botar pra aceitar valores do tipo uint16? 

Só Resta isso.

Conteúdos Tragos Por Mim ao Fórum:

Venda de Vocações [Modern Aac] •

• Comando !Saga 

• [Modern Aac] DragonBall 

• Esconder •

• Naruto 2018

• • •

• •

'NtoProject - Breve'

[Show OFF] Disponível

Postado

Uint_8 

CALL 004F9A60
MOVZX EAX,AL

Uint_16 

CALL 004F9C00
MOVZX EAX,AX

Ta ae o endereço, e o novo Assembly para mudar para o Uint_16 no 8.60 e poder usar mais de 255 efeito, e usar até seus 65535 efeitos, agora pega um Client 8.60 e faça a mágica acontecer pra a Galera que precisa do 8.60!

 

@Tópico: Belo tutorial. Rep++

 

 

xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Postado

Não encontrei ambos pode me dizer aonde acho dei Ctrl+f Mais nada

Conteúdos Tragos Por Mim ao Fórum:

Venda de Vocações [Modern Aac] •

• Comando !Saga 

• [Modern Aac] DragonBall 

• Esconder •

• Naruto 2018

• • •

• •

'NtoProject - Breve'

[Show OFF] Disponível

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo