Old Tibia tirando o limite de 255 efeitos

BrunoMaia
em Tutoriais de Clients
  • 1
  • 2

BrunoMaia

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/16Posts: 9

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 ProtocolGameAddMagicEffect(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 ProtocolGameAddMagicEffect(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 ProtocolGamesendMagicEffect(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 ProtocolGamesendMagicEffect(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 GameaddMagicEffect(const Position& pos, uint8_t effect, bool ghostMode /* = false */){    if(ghostMode)        return;    const SpectatorVec& list = getSpectators(pos);    addMagicEffect(list, pos, effect);}void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode/* = false*/){    if(ghostMode)        return;    Player* player = NULL;    for(SpectatorVecconst_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 GameaddMagicEffect(const Position& pos, uint16_t effect, bool ghostMode /* = false */){    if(ghostMode)        return;    const SpectatorVec& list = getSpectators(pos);    addMagicEffect(list, pos, effect);}void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode/* = false*/){    if(ghostMode)        return;    Player* player = NULL;    for(SpectatorVecconst_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 feitas 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.

 

Não deixe de agradecer...

Wase Wiss

Thug Life
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 16/03/16Posts: 327Gênero: Masculino

Muito bom, Obrigado de verdade mano

BrunoMaia

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/16Posts: 9

Qualquer dúvida estarei respondendo...

Wase Wiss

Thug Life
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 16/03/16Posts: 327Gênero: Masculino
2 minutos atrás, BrunoMaia disse:

Qualquer dúvida estarei respondendo...

Esses cliente ae já estão todos modificados para aceitar mais de 255 efeitos né

BrunoMaia

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/16Posts: 9

Correto, só testar...

Developer Berg

Ricardo Berg
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 12/04/15Posts: 655Gênero: MasculinoChar no Tibia: Developer Berg

cara, tá de parabéns :D obrigado mesmo, agr só falta eu conseguir injetar a dll de extended client que vou poder deixar oldclient no meu server, testado e aprovado, coloquei até 430 effect e pegou normal, ah sim, se n for pedir demais, tem como vc ensinar como fez a modificação no exe do oldclient ? para ele aceitar os effects ? pq tenho um exe que já modifiquei umas coisas nele, dai queria colocar ele, se der para ensinar, agradeço muito :D rep+++

leozinpbb

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 14/05/15Posts: 129Gênero: Masculino

Eu testei 100 % funcional realmente cara obrigado, isso vai ajudar muita gente mesmo .!! +REP

kttallan

Lord Sorte
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 06/03/13Posts: 1574Gênero: MasculinoChar no Tibia: Lord Sorte

Muito bom mano, se conseguir fazer extended do old cliente vai facilitar bastante a nossa vida ^^.

                                                                Scripter em Treinamento

 

Codigos

 

Simples Pet Sistema < New

 

Assim que possivel mais codigos, com criatividade.

Drakopoulos

Pra mim, tudo é um desafio que pode ser descoberto.
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 20/03/14Posts: 367Gênero: Masculino

Ótimo tutorial :P: 

BrunoMaia

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/16Posts: 9
Em 10/30/2016 at 11:01, ricardoberg disse:

cara, tá de parabéns :D obrigado mesmo, agr só falta eu conseguir injetar a dll de extended client que vou poder deixar oldclient no meu server, testado e aprovado, coloquei até 430 effect e pegou normal, ah sim, se n for pedir demais, tem como vc ensinar como fez a modificação no exe do oldclient ? para ele aceitar os effects ? pq tenho um exe que já modifiquei umas coisas nele, dai queria colocar ele, se der para ensinar, agradeço muito :D rep+++

 

Em 10/30/2016 at 13:53, kttallan disse:

Muito bom mano, se conseguir fazer extended do old cliente vai facilitar bastante a nossa vida ^^.

 

Fiz um software que tira o limite de 255 effect com a dll que fiz tibiaedit.dll, e aumenta o limite de sprites usando essa dll extended.dll

Post do software

xSONYx

Prostituto
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/12/07Posts: 272Char no Tibia: [ADM]Sony
Em 29/10/2016 at 12:42, BrunoMaia disse:

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 ProtocolGameAddMagicEffect(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 ProtocolGameAddMagicEffect(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 ProtocolGamesendMagicEffect(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 ProtocolGamesendMagicEffect(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 GameaddMagicEffect(const Position& pos, uint8_t effect, bool ghostMode /* = false */){    if(ghostMode)        return;    const SpectatorVec& list = getSpectators(pos);    addMagicEffect(list, pos, effect);}void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode/* = false*/){    if(ghostMode)        return;    Player* player = NULL;    for(SpectatorVecconst_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 GameaddMagicEffect(const Position& pos, uint16_t effect, bool ghostMode /* = false */){    if(ghostMode)        return;    const SpectatorVec& list = getSpectators(pos);    addMagicEffect(list, pos, effect);}void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode/* = false*/){    if(ghostMode)        return;    Player* player = NULL;    for(SpectatorVecconst_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 feitas 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.

 

Não deixe de agradecer...

Problema no ao linkar no fim da compilação

Spoiler
  1. obj-console//beds.o:beds.cpp:(.text+0xeb3): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  2. obj-console//beds.o:beds.cpp:(.text+0x10d8): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  3. obj-console//combat.o:combat.cpp:(.text+0x2aa9): undefined reference to `Game::addMagicEffect(std::list<Creature*, std::allocator<Creature*> > const&, Position const&, unsigned char, bool)'
  4. obj-console//combat.o:combat.cpp:(.text+0x3beb): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  5. obj-console//combat.o:combat.cpp:(.text+0x3da3): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  6. obj-console//combat.o:combat.cpp:(.text+0x3efd): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  7. obj-console//combat.o:combat.cpp:(.text+0x4057): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  8. obj-console//combat.o:combat.cpp:(.text+0x41c7): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  9. obj-console//house.o:house.cpp:(.text+0x3fc): more undefined references to `Game::addMagicEffect(Position const&, unsigned char, bool)' follow
  10. obj-console//luascript.o:luascript.cpp:(.text+0xb538): undefined reference to `Game::addMagicEffect(std::list<Creature*, std::allocator<Creature*> > const&, Position const&, unsigned char, bool)'
  11. obj-console//luascript.o:luascript.cpp:(.text+0xb55e): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  12. obj-console//luascript.o:luascript.cpp:(.text+0x22ba5): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  13. obj-console//monster.o:monster.cpp:(.text+0x979): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  14. obj-console//monster.o:monster.cpp:(.text+0x9b1): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  15. obj-console//monster.o:monster.cpp:(.text+0x1aed): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  16. obj-console//monster.o:monster.cpp:(.text+0x217f): more undefined references to `Game::addMagicEffect(Position const&, unsigned char, bool)' follow
  17. obj-console//talkaction.o:talkaction.cpp:(.text+0xa5c7): undefined reference to `ProtocolGame::sendMagicEffect(Position const&, unsigned char)'
  18. obj-console//talkaction.o:talkaction.cpp:(.text+0xa6d6): undefined reference to `ProtocolGame::sendMagicEffect(Position const&, unsigned char)'
  19. obj-console//teleport.o:teleport.cpp:(.text+0x29e): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  20. obj-console//trashholder.o:trashholder.cpp:(.text+0x27f): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  21. obj-console//weapons.o:weapons.cpp:(.text+0x2c7e): undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
  22. collect2: ld returned 1 exit status
  23.  
  24. mingw32-make: *** [TheForgottenServer-console.exe] Error 1
  25.  
  26. Execution terminated

RESOLVIDO APÓS APAGAR MAKEFILE, OBJ E COMPILAR DNV

eu uso oculos no show porque elas querem minha alma

BrunoMaia

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/16Posts: 9

Você modificou algum arquivo além do que eu citei? me responde por mensagem privada... vai ser melhor para te ajudar, e aproveito e ajudo você sobre o erro ao abrir o software.

hallanehallex

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 08/09/15Posts: 11Gênero: MasculinoChar no Tibia: [GOD] Sophia e [GOD] Alici

Bruno tem alguma modificação nas source que tenho que fazer se eu quiser aumentar as sprites invés dos effect ??

Weeky19

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/03/17Posts: 1Gênero: Masculino
Em 29/10/2016 at 12:54, BrunoMaia disse:

Qualquer dúvida estarei respondendo...

Pode me ensinar a compilar a source?

 

Mudrock

Eternal Liers
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 24/12/09Posts: 1002Gênero: MasculinoChar no Tibia: Necromanser
9 minutos atrás, Weeky19 disse:

Pode me ensinar a compilar a source?

 

http://www.xtibia.com/forum/topic/190672-tutorial-compilando-source-tfs/

Antenciosamente, Mudrock

Mensagens privadas somente sobre outros assuntos!

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 
 

tumblr_ntxzlfQp3v1uyo57xo8_500.gif (500×225)

 

MudrockAprova#

- EkzGuard

 

  • 1
  • 2