Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Bom, todos acham 255 efeitos muito pouco, né? Então tá aí, pra quem quiser aumentar esse limite pra 65,535.

Mas como nem tudo é perfeito, pra fazer isso você precisará estar usando OTClient e também ter as sources do seu servidor.

 

PS: Só testei em 8.54

 

Vamos ás edições do servidor:

 

No protocolgame.cpp:

Substituir:

 

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

por:

 

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

 

Substituir:

 

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

por:

 

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

 

 

No protocolgame.h:

Substituir:

 

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

por:

 

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

 

Substituir:

 

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

por:

 

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

 

 

No game.cpp:

Substituir:

 

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

por:

 

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

 

No game.h:

Substituir:

 

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

por:

 

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

 

No player.h:

Substituir:

 

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

Por:

 

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

 

Bom, agora falta editar no const.h:

Para cada efeito novo no servidor, deve-se adicionar no enum MagicEffect_t.

No caso, a base que eu peguei de teste, o último é MAGIC_EFFECT_INSECTS4dz.

Assim:

 

MAGIC_EFFECT_INSECTS4dz = 0x13B, //220
 

O próximo precisa ter outro nome, e deve ter o valor 221, mas em hexadecimal.

 

Pra isso, usem algum sitem de conversão de Decimal para Hexadecimal(Usei este).

Basta pegar o resultado, e adicionar 0x0 antes.

 

No caso, deu DD, ficando:

 

MAGIC_EFFECT_INSECTS4ea = 0xDD, //221
 

E mude o valor de MAGIC_EFFECT_LAST, para seu último efeito adicionado.

 

MAGIC_EFFECT_LAST = MAGIC_EFFECT_INSECTS4ea,
 

Também não esqueçam de mudar os valores de MAGIC_EFFECT_NONE e MAGIC_EFFECT_UNKNOWN para estes:

MAGIC_EFFECT_NONE = 0xFFFE,

MAGIC_EFFECT_UNKNOWN = 0xFFFF

 

 

Está quase pronto, agora, falta fazer o client aceitar esses dados, pra isso, em otclient/modules/game_things/things.lua, em baixo de:

 

local version = g_game.getClientVersion()
Adicine:

 

g_game.enableFeature(GameMagicEffectU16)
 

Pronto, se fizer tudo corretamente, funcionará \o

 

 

Bom, Lordbaxx disponibilizou a sua source(de poketibia) com o limite extendido:

Versão: 8.54(0.3.6 pl1)

Scan

Download

 

Créditos: 

Featzen(100%)

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

Att. Featzen.

  • Respostas 29
  • Visualizações 12.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • msg->put<uint16_t>(type + 1);  

  • Funcionou perfeitamente, Rep+ ir Obrigado.

  • manda error cuando da compilacao   [Linker error] undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'   [Linker error] undefined reference to `Game::addMagicEffec

Posted Images

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