Histórico de Curtidas
- 		
			
				 BrunoMaia recebeu reputação de braianlomas em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de braianlomas em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de El mano tchacoo em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de El mano tchacoo em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de zLockey9 em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de zLockey9 em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de rizen em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de rizen em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de VaizardX em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de VaizardX em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de Xurumela em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de Xurumela em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de FabiiioH em (Resolvido)[ALGUEM ?] para compilar e aumentar limites de Effects do client (Irei pagar)Dizer que ninguém consegue é muito precipitado, mas por que você quer esconder seu client? quando ele vai para memória, não importa o que você tente esconder, vai está desprotegido, se for o Old Client... se quer realmente proteger seu client de alguma coisa, use o VMProtect, é um pouco mais difícil de fazer unpacking, mas dependendo da proteção que você vai utilizar, o anti virus pode detectar alguns falsos positivos. BrunoMaia recebeu reputação de FabiiioH em (Resolvido)[ALGUEM ?] para compilar e aumentar limites de Effects do client (Irei pagar)Dizer que ninguém consegue é muito precipitado, mas por que você quer esconder seu client? quando ele vai para memória, não importa o que você tente esconder, vai está desprotegido, se for o Old Client... se quer realmente proteger seu client de alguma coisa, use o VMProtect, é um pouco mais difícil de fazer unpacking, mas dependendo da proteção que você vai utilizar, o anti virus pode detectar alguns falsos positivos.
 
- 		
			
				 BrunoMaia recebeu reputação de cleitonbandeira em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de cleitonbandeira em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de Developer Berg em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de Developer Berg em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de sdnjaks em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de sdnjaks em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia deu reputação a KotZletY em Aumentando a quantidade de effects permitida - 8.60Salve galera, recentemente um Membro postou um Tópico de como tirar o Limite de Efeitos do Old-Client(Client da Cipsfot ), só que somente para a versão 8.54, então devido ao numero de pedidos dos membros que utilizam Client na versão 8.6, resolvi criar esse Tópico ensinando a fazer isso, porém ele criou um Programa para Sobre-Escrever o Endereço, o meu Tutorial será na raça. Kkkkk Vamos nessa, a baixo citarei o Programa que iremos utilizar para essa mudança, e uns requisitos! BrunoMaia deu reputação a KotZletY em Aumentando a quantidade de effects permitida - 8.60Salve galera, recentemente um Membro postou um Tópico de como tirar o Limite de Efeitos do Old-Client(Client da Cipsfot ), só que somente para a versão 8.54, então devido ao numero de pedidos dos membros que utilizam Client na versão 8.6, resolvi criar esse Tópico ensinando a fazer isso, porém ele criou um Programa para Sobre-Escrever o Endereço, o meu Tutorial será na raça. Kkkkk Vamos nessa, a baixo citarei o Programa que iremos utilizar para essa mudança, e uns requisitos!
 
 Informações e Requisitos!
 Vamos colocar a mão na massa, abra o Debugador que faz a leita em Hexadecimal, para isso usaremos o OllyDbg, que deixarei o Link dele no final do Tópico. Após baixado abra ele. E no icone da pastinha no canto superior esquerdo, clique na pastinha e selecione O diretório do Client.
 Obs: Lembre-se de deixa o Client junto com a SPR e Dat, pois irá precisa runnar o Client para ele mostrar os Endereços!
 
 Apos ter carregado completamente, irá aparecer na metade a barra de rolagem, então suba para cima até o fim.
 
 Feito isso de um Ctrl+S para abrir a função Find Command, e então digite essa chamada CALL 00410450 e de um enter.
 OBS, lembre-se de desmarca a função Entire Block, e então achará a função, impossível dar erro, afinal só existe uma chamada como esse Code.
 
 
 Depois de ter achado ela, de um Enter com a função selecionada, e irá até outro Endereço.
 WTF, aja endereço nessa poxa! Kkkkk
 
 
 E agora é hora da mágica, iremos mudar para Uint_16 finalmente. Kkkkkk,
 Ali em baixo mais precisamente em cima dos Args, terá duas funções que você irá alterá, como mostra os próximos passos.
 
 Click na primeira chamada, e aperte espaço ou aperte duas vezes com o botão esquerdo do mause, para que você possa alterá o endereço.
 Irá vim a função CALL 004F9A60 então mude por completo para CALL 004F9C00 e click em assembly:
 
 Agora fazemos isso na segunda função, abaixo da primeira, click duas vezes ou aperte espaço, e virá a função MOVZX EAX,AL, e então mude para
 MOVZX EAX, AX e depois click em assembly:
 
 
 Pronto, só isso seu Client agora passará a Ler em Uint_16 o que significa que você poderá usar até 65534 Effects no seu Old-Client, mais ainda não acabou, precisamos salvar. Após ter mudado, click com o Botão auxiliar(esquerdo) do mause, em cima em cima de uma das funções, qualquer uma, e vá em Copy to executable > All Modifications:
 
 
 E depois Click em Copy All:
 
 Irá aparecer outra janela, agora nessa nova janela, click novamente com o botão esquerdo do mause, E click em Save file e salve o Exe modificado na pasta desejada:
 
 
 Pronto, seu Client foi Modificado com Sucesso, e como falei anteriormente, não esqueça de configurar seu Server em Uint_16, e ter liberado os efeitos para mais de 255, coloque quantos quiser, brincks tem um limite, de 65534, e fim, seja feliz.
 Antes de mais nada vamos testa ? Veja no meu Dat, tem efeitos até 259, então irei usar o 259 para mostra que está tudo certo.
 
 
 
 Isso ae Galera, tudo nosso nada deles. Bom Uso do Uint_16, é algo que presenciei muitos pedindo, e muitos cobrando para fazer essa Alteração, bem, ta ae, e vou nessa. E agora claro o Link do Download.
 
 
 Gostaria de Informa que o Vírus Detectado, não é nada mais nada menos que um Falso-Positivo, por se tratar que Programa, faça uma Alteração Interna dentro de Outro programa. Caso você não saiba modificar a source para uint16 siga esse Tutorial aqui!
 
 Download do OllyDbg Versão 1.10
 Scan do OllyDbg Versão 1.10
 
 
 Créditos: {
 Breno Neves (Eu),
 Fernando Prado (Parça que me passou o Ultimo endereço)
 }
 Peço desculpas pelos erros de Escrita nas imgs. Sorry! xD
 Conteúdo Exclusivo para o Tk, não é permitido levar para outro site, blog ou fórum!
 
 
 
- 		
			
				 BrunoMaia recebeu reputação de Nto Wise em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de Nto Wise em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de KotZletY em Old Tibia tirando limite de 255 efeitosFoi testado no TheForgottenServer 0.3.6 no Tibia 8.54 BrunoMaia recebeu reputação de KotZletY em Old Tibia tirando limite de 255 efeitosFoi 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...
 
- 		
			
				 BrunoMaia recebeu reputação de NighteyeTV em (Resolvido)Como trocar porta do OldCliente para 7272Como não tenho nenhum servidor de tibia no meu computador, não testei. BrunoMaia recebeu reputação de NighteyeTV em (Resolvido)Como trocar porta do OldCliente para 7272Como não tenho nenhum servidor de tibia no meu computador, não testei.
 Teste e veja se está funcionando normalmente.
 Quando baixar e testar, avise o resultado, porque vou invalidar o link do download se tudo ocorrer bem.
 Download do client, aqui vai somente o client, troque pelo seu client.
 
- 		
			
				 BrunoMaia recebeu reputação de NighteyeTV em (Resolvido)Como trocar porta do OldCliente para 7272Testei aqui e está abrindo BrunoMaia recebeu reputação de NighteyeTV em (Resolvido)Como trocar porta do OldCliente para 7272Testei aqui e está abrindo
 Você já tem que ter o tibia.spr, tibia.pic, tibia.dat na pasta.
 Ele apresenta algum erro?
 Testei link e executável no windows 10 e estão funcionando...
 
- 		
			
				 BrunoMaia recebeu reputação de TapxurebA em Erro ao entrar de admin no siteA tabela "global.reports" não existe no banco de dados BrunoMaia recebeu reputação de TapxurebA em Erro ao entrar de admin no siteA tabela "global.reports" não existe no banco de dados
 
- 		
			
				 BrunoMaia recebeu reputação de davidvietro em O que seria esse erro no console?Isto é um erro de syntax, você esqueceu de digitar o "<" em algum local do código BrunoMaia recebeu reputação de davidvietro em O que seria esse erro no console?Isto é um erro de syntax, você esqueceu de digitar o "<" em algum local do código
 
- 		
			
				 BrunoMaia recebeu reputação de lenardo88 em Launcher Auto Update [Preciso de ajuda]Estude um pouco sobre thread, isso vai resolver seu problema com o travamento BrunoMaia recebeu reputação de lenardo88 em Launcher Auto Update [Preciso de ajuda]Estude um pouco sobre thread, isso vai resolver seu problema com o travamento
 
- 		
			
				 BrunoMaia recebeu reputação de brunooarantes em Ajuda pra nao ser banido por uso de mcUm de vocês podem usar um proxy para jogar o tibia, isso vai esconder seu ip, existem vários programas que fazem isso, só procurar BrunoMaia recebeu reputação de brunooarantes em Ajuda pra nao ser banido por uso de mcUm de vocês podem usar um proxy para jogar o tibia, isso vai esconder seu ip, existem vários programas que fazem isso, só procurar
 
 
     
     
     
     
			
				 
				 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	