Wase Wiss 12 Postado Dezembro 1, 2016 Share Postado Dezembro 1, 2016 (editado) Bom galera, eu procurei um tutorial sobre isso aki para TFS 0.4 e não achei, e em outro fórum um membro postou, ae eu resolvi trazer para o fórum, então vamos começar, bom, irei explicar como mudar para Uint16 dessa vez nas Source, para quem não sabe. Irei explicar como aumentar em Magic Effects, para assim você seu Server usar mais de 255, e ShootEffects para usar mais de 41 Distance efeitos(muito mais). Existe Tópicos no um sitezinho qualquer, porém não é a mesma coisa, esse é diferente pois você irá alterá o valor dos uint's disparados para o Client, para assim então usar além do Padrão! Abaixo umas informações essenciais ! Spoiler Esse Tópico é especifico para TFS 0.4, para que assim você possa aumentar o limite de efeitos no Client, e usar mais de 255 efeitos, e mais de 41 efeitos em Distância. Vale lembra também que você não é obrigado a mudar em ambos, se você quiser apenas aumentar o Limite de Efeitos para mais de 255, então mude apenas ele, caso queria aumentar apenas os Efeitos que são lançados a distância(ShootEffects ou Distance Effects), caso queria os dois, use ambos. Vamos começar primeiramente com os Magic Effects: Spoiler Em protocolgame.cpp procure por:void ProtocolGame::sendMagicEffect(const Position& pos, uint8_t type) mude para:void ProtocolGame::sendMagicEffect(const Position& pos, uint16_t type)procure por:void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint8_t type){ msg->put<char>(0x83); msg->putPosition(pos); msg->put<char>(type + 1);} mude para:void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint16_t type){ msg->put<char>(0x83); msg->putPosition(pos); msg->put<uint16_t>(type + 1);} Em protocolgame.h procure por:void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint8_t type);mude para:void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint16_t type); procure porvoid sendMagicEffect(const Position& pos, uint8_t type);mude para:void sendMagicEffect(const Position& pos, uint16_t type); Em game.cpp procure por:void GameaddMagicEffect(const Position& pos, uint8_t effect, bool ghostMode/* = false*/) mude para:void GameaddMagicEffect(const Position& pos, uint16_t effect, bool ghostMode/* = false*/)procure por:void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, mude para: void GameaddMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, Em game.h procure por:void addMagicEffect(const Position& pos, uint8_t effect, bool ghostMode = false);mude para:void addMagicEffect(const Position& pos, uint16_t effect, bool ghostMode = false);procure por:void addMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode = false);mude para:void addMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode = false); Em player.h procure por:void sendMagicEffect(const Position& pos, uint8_t type) const mude para:void sendMagicEffect(const Position& pos, uint16_t type) const Um detalhe importante nessa parte pra não fazer você perde tempo em 1 em 1 efeito. Em outros tópicos, pedem que você adicione em 1 em 1 efeito, perda de tempo, pois você pode adicionar um em limite. Observe: Em const.h logo no começo terá:enum MagicEffect_tadicione depois do ultimo efeito:MAGIC_EFFECT_SEMFIM = 0xFFFE, //65534e em MAGIC_EFFECT_LAST você adicione o efeito adicionado ficando assim:MAGIC_EFFECT_LAST = MAGIC_EFFECT_SEMFIM,O detalhe é que FFFE em decimal é 65534 e então a Distro vai usar os efeitos de 0 á 65534para que você não precise adicionar em 1 em 1. O engrençado é que mesmo que você aumente apenas para 255, se você colocar FFFE, como o valor dele é 65534, o distro irá usar de 0 até 255, sem precisar adicionar em 1 em 1 os efeitos, o que poupar tempo. Em tools.cpp procure por:MagicEffectNames magicEffectNames[] =e no antes de finalizar a função adicione:{"semfim", MAGIC_EFFECT_SEMFIM}lembre-se o ultimo efeito deve está sem virgula no final e o penultimo deve conter virgula ficando assim, por exemplo: {"dragonhead", MAGIC_EFFECT_DRAGONHEAD}, {"semfim", MAGIC_EFFECT_SEMFIM} Agora para finalizar em data/lib abra o arquivo 000-constant.lua e procure por: antes de CONST_ME_NONE adicione CONST_ME_SEMFIM = 65534 e em CONST_ME_NONE mude para: CONST_ME_NONE = 65534e CONST_ME_LAST mude para CONST_ME_LAST = CONST_ME_SEMFIM Agora vamos mudar o ShootEffects para uint16. Spoiler Em Protocolgame.cpp procure por:void ProtocolGamesendDistanceShoot(const Position& from, const Position& to, uint8_t type) mude para:void ProtocolGamesendDistanceShoot(const Position& from, const Position& to, uint16_t type)procure porvoid ProtocolGameAddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint8_t type){ msg->put<char>(0x85); msg->putPosition(from); msg->putPosition(to); msg->put<char>(type + 1);}mude para:void ProtocolGameAddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint16_t type){ msg->put<char>(0x85); msg->putPosition(from); msg->putPosition(to); msg->put<uint16_t>(type + 1);} Em protocolgame.h procure por:void AddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint8_t type);mude para:void AddDistanceShoot(NetworkMessage_ptr msg, const Position& from, const Position& to, uint16_t type);procure por:void sendDistanceShoot(const Position& from, const Position& to, uint8_t type);mude para: void sendDistanceShoot(const Position& from, const Position& to, uint16_t type); Em game.cpp procure por:void GameaddDistanceEffect(const Position& fromPos, const Position& toPos, uint8_t effect) mude paravoid GameaddDistanceEffect(const Position& fromPos, const Position& toPos, uint16_t effect)procure por:void GameaddDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint8_t effect) mude para: void GameaddDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint16_t effect) Em game.h procure por:void addDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint8_t effect);mude para;void addDistanceEffect(const SpectatorVec& list, const Position& fromPos, const Position& toPos, uint16_t effect); procure por:void addDistanceEffect(const Position& fromPos, const Position& toPos, uint8_t effect);mude para;void addDistanceEffect(const Position& fromPos, const Position& toPos, uint16_t effect); Em player.h procure por:void sendDistanceShoot(const Position& from, const Position& to, uint8_t type) const mude para:void sendDistanceShoot(const Position& from, const Position& to, uint16_t type) const Em const.h procure por:enum ShootEffect_te depois do ultimo efeito adicione: SHOOT_EFFECT_SEMFIM = 0xFFFE, //65534e em SHOOT_EFFECT_LASTmude adione SHOOT_EFFECT_SEMFIM,ficando assimSHOOT_EFFECT_LAST = SHOOT_EFFECT_SEMFIM,O detalhe é que FFFE em decimal é 65534 e então a Distro vai usar os distance efeitos de 0 á 65534para que você não precise adicionar em 1 em 1. O engrençado é que mesmo que você aumente apenas para 255, se você colocar FFFE, como o valor dele é 65534, o distro irá usar de 0 até 255, sem precisar adicionar em 1 em 1 os efeitos, o que poupar tempo. Em tools.cpp procure por:ShootTypeNames shootTypeNames[] = no final da função antes da ultima chave };adicione{"semfim", SHOOT_EFFECT_SEMFIM}lembre-se o ultimo efeito deve está sem virgula no final e o penultimo deve conter virgual ficando assim: {"cake", SHOOT_EFFECT_CAKE}, {"semfim", SHOOT_EFFECT_SEMFIM} Agora para finalizar em data/lib abra o arquivo 000-constant.lua e procure por: antes de CONST_ANI_WEAPONTYPE adicione:CONST_ANI_SEMFIM = 65534em CONST_ANI_NONE mude para:CONST_ANI_NONE = 65534em CONST_ANI_LAST deixei assim:CONST_ANI_LAST = CONST_ANI_SEMFIM Bom, não adianta fazer isso na source, sem ter o cliente editado para que aceite mais de 255 effect e mais de sla quantos shoot effects XD Aki está o link do download do cliente já editado de uint18 para uint16 para aceitar mais de 255 effects e mais que o normal de shoot effects Download do Cliente Scan Créditos Spoiler Breno Neves Editado Dezembro 1, 2016 por Henrique Gomes Link para o comentário https://xtibia.com/forum/topic/242886-tutorial-aumentando-limite-de-magic-effects-e-shoot-effetcs-tfs-04/ Compartilhar em outros sites More sharing options...
sexosix 0 Postado Dezembro 1, 2016 Share Postado Dezembro 1, 2016 Fiz tudo certinho so a parte dos MaggicEffects porem na hora de compilar da esse ERRO... nao sei se e a source 0.4 que baixei esta com defeito se nao souber qual e o ERRO poderia me passar o download da sua? Link para o comentário https://xtibia.com/forum/topic/242886-tutorial-aumentando-limite-de-magic-effects-e-shoot-effetcs-tfs-04/#findComment-1708181 Compartilhar em outros sites More sharing options...
Wase Wiss 12 Postado Dezembro 1, 2016 Autor Share Postado Dezembro 1, 2016 Agora, sexosix disse: Fiz tudo certinho so a parte dos MaggicEffects porem na hora de compilar da esse ERRO... nao sei se e a source 0.4 que baixei esta com defeito se nao souber qual e o ERRO poderia me passar o download da sua? Link para o comentário https://xtibia.com/forum/topic/242886-tutorial-aumentando-limite-de-magic-effects-e-shoot-effetcs-tfs-04/#findComment-1708182 Compartilhar em outros sites More sharing options...
Poccnn 385 Postado Dezembro 17, 2016 Share Postado Dezembro 17, 2016 Caro membro, seu tópico foi movido de Tutoriais Otserv > Otserv > Tutoriais de Programação para Soluções > Recepção Xtibia > Lixeira Pública. Link para o comentário https://xtibia.com/forum/topic/242886-tutorial-aumentando-limite-de-magic-effects-e-shoot-effetcs-tfs-04/#findComment-1709259 Compartilhar em outros sites More sharing options...
Posts Recomendados