
Xurumela
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Xurumela deu reputação a Jhonjhon775 em Qual a melhor vps?OVH com certeza é a melhor e mais usada.
-
Xurumela deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsDEV C++, aprenda a compila uma source TFS!
Downloads(Baixe de acordo as configurações do seu windows):
DEV C++ CONFIGURADO PARA 32BITS
DEV C++ CONFIGURADO PARA 64BITS
REV 3884 TFS 0.4
Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
======================================
Abra o DEV C++:
======================================
======================================
Abra a Source:
======================================
======================================
Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
======================================
=============================================================
======================================
Aguarde carregar todos os arquivos:
======================================
======================================
Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
======================================
======================================
Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
======================================
======================================
Se der tudo certo em Log vai estar como mostra a imagem abaixo:
======================================
======================================
Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
======================================
===========================================
Só isso galera tutorial rápido resumido e útil!
Créditos Natanael Beckman!
===========================================
Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
Abra o DEV-C++, clique em File> New> Project:
Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
-D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
-lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSSL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
Clica aqui \/ -
Xurumela deu reputação a Bizzle em (Resolvido)Onde aumentar o número de efeitosRespondi à um tópico com a mesma questão que o seu..enfim, vamos lá.
Primeiramente, você precisará da source do distro usado em seu servidor ou uma source compatível com a versão do seu servidor.
Tendo elas, abra o arquivo .dev (com o Dev-C++, é claro), ou se apenas possuir arquivos .cpp e .h e você não sabe como criar um projeto para ser compilado, veja um tutorial aqui. Vamos dar continuidade..
No arquivo const.h, procure por:
enum MagicEffect_t
Você poderá notar que o código só estará configurado até o último efeito (no caso, 68):
enum MagicEffect_t { MAGIC_EFFECT_DRAW_BLOOD = 0x00, MAGIC_EFFECT_LOSE_ENERGY = 0x01, MAGIC_EFFECT_POFF = 0x02, MAGIC_EFFECT_BLOCKHIT = 0x03, MAGIC_EFFECT_EXPLOSION_AREA = 0x04, MAGIC_EFFECT_EXPLOSION_DAMAGE = 0x05, MAGIC_EFFECT_FIRE_AREA = 0x06, MAGIC_EFFECT_YELLOW_RINGS = 0x07, MAGIC_EFFECT_POISON_RINGS = 0x08, MAGIC_EFFECT_HIT_AREA = 0x09, MAGIC_EFFECT_TELEPORT = 0x0A, //10 MAGIC_EFFECT_ENERGY_DAMAGE = 0x0B, //11 MAGIC_EFFECT_WRAPS_BLUE = 0x0C, //12 MAGIC_EFFECT_WRAPS_RED = 0x0D, //13 MAGIC_EFFECT_WRAPS_GREEN = 0x0E, //14 MAGIC_EFFECT_HITBY_FIRE = 0x0F, //15 MAGIC_EFFECT_POISON = 0x10, //16 MAGIC_EFFECT_MORT_AREA = 0x11, //17 MAGIC_EFFECT_SOUND_GREEN = 0x12, //18 MAGIC_EFFECT_SOUND_RED = 0x13, //19 MAGIC_EFFECT_POISON_AREA = 0x14, //20 MAGIC_EFFECT_SOUND_YELLOW = 0x15, //21 MAGIC_EFFECT_SOUND_PURPLE = 0x16, //22 MAGIC_EFFECT_SOUND_BLUE = 0x17, //23 MAGIC_EFFECT_SOUND_WHITE = 0x18, //24 MAGIC_EFFECT_BUBBLES = 0x19, //25 MAGIC_EFFECT_CRAPS = 0x1A, //26 MAGIC_EFFECT_GIFT_WRAPS = 0x1B, //27 MAGIC_EFFECT_FIREWORK_YELLOW = 0x1C, //28 MAGIC_EFFECT_FIREWORK_RED = 0x1D, //29 MAGIC_EFFECT_FIREWORK_BLUE = 0x1E, //30 MAGIC_EFFECT_STUN = 0x1F, //31 MAGIC_EFFECT_SLEEP = 0x20, //32 MAGIC_EFFECT_WATERCREATURE = 0x21, //33 MAGIC_EFFECT_GROUNDSHAKER = 0x22, //34 MAGIC_EFFECT_HEARTS = 0x23, //35 MAGIC_EFFECT_FIREATTACK = 0x24, //36 MAGIC_EFFECT_ENERGY_AREA = 0x25, //37 MAGIC_EFFECT_SMALLCLOUDS = 0x26, //38 MAGIC_EFFECT_HOLYDAMAGE = 0x27, //39 MAGIC_EFFECT_BIGCLOUDS = 0x28, //40 MAGIC_EFFECT_ICEAREA = 0x29, //41 MAGIC_EFFECT_ICETORNADO = 0x2A, //42 MAGIC_EFFECT_ICEATTACK = 0x2B, //43 MAGIC_EFFECT_STONES = 0x2C, //44 MAGIC_EFFECT_SMALLPLANTS = 0x2D, //45 MAGIC_EFFECT_CARNIPHILA = 0x2E, //46 MAGIC_EFFECT_PURPLEENERGY = 0x2F, //47 MAGIC_EFFECT_YELLOWENERGY = 0x30, //48 MAGIC_EFFECT_HOLYAREA = 0x31, //49 MAGIC_EFFECT_BIGPLANTS = 0x32, //50 MAGIC_EFFECT_CAKE = 0x33, //51 MAGIC_EFFECT_GIANTICE = 0x34, //52 MAGIC_EFFECT_WATERSPLASH = 0x35, //53 MAGIC_EFFECT_PLANTATTACK = 0x36, //54 MAGIC_EFFECT_TUTORIALARROW = 0x37, //55 MAGIC_EFFECT_TUTORIALSQUARE = 0x38, //56 MAGIC_EFFECT_MIRRORHORIZONTAL = 0x39, //57 MAGIC_EFFECT_MIRRORVERTICAL = 0x3A, //58 MAGIC_EFFECT_SKULLHORIZONTAL = 0x3B, //59 MAGIC_EFFECT_SKULLVERTICAL = 0x3C, //60 MAGIC_EFFECT_ASSASSIN = 0x3D, //61 MAGIC_EFFECT_STEPSHORIZONTAL = 0x3E, //62 MAGIC_EFFECT_BLOODYSTEPS = 0x3F, //63 MAGIC_EFFECT_STEPSVERTICAL = 0x40, //64 MAGIC_EFFECT_YALAHARIGHOST = 0x41, //65 MAGIC_EFFECT_BATS = 0x42, //66 MAGIC_EFFECT_SMOKE = 0x43, //67 MAGIC_EFFECT_INSECTS = 0x44, //68 MAGIC_EFFECT_LAST = MAGIC_EFFECT_INSECTS, //for internal use, dont send to client MAGIC_EFFECT_NONE = 0xFF, MAGIC_EFFECT_UNKNOWN = 0xFFFF };
Agora basta dar continuidade, configurando novos efeitos, como desejar. Por exemplo, aqui está configurado até o efeito 90 (source de NTO):
enum MagicEffect_t { MAGIC_EFFECT_DRAW_BLOOD = 0x00, MAGIC_EFFECT_LOSE_ENERGY = 0x01, MAGIC_EFFECT_POFF = 0x02, MAGIC_EFFECT_BLOCKHIT = 0x03, MAGIC_EFFECT_EXPLOSION_AREA = 0x04, MAGIC_EFFECT_EXPLOSION_DAMAGE = 0x05, MAGIC_EFFECT_FIRE_AREA = 0x06, MAGIC_EFFECT_YELLOW_RINGS = 0x07, MAGIC_EFFECT_POISON_RINGS = 0x08, MAGIC_EFFECT_HIT_AREA = 0x09, MAGIC_EFFECT_TELEPORT = 0x0A, //10 MAGIC_EFFECT_ENERGY_DAMAGE = 0x0B, //11 MAGIC_EFFECT_WRAPS_BLUE = 0x0C, //12 MAGIC_EFFECT_WRAPS_RED = 0x0D, //13 MAGIC_EFFECT_WRAPS_GREEN = 0x0E, //14 MAGIC_EFFECT_HITBY_FIRE = 0x0F, //15 MAGIC_EFFECT_POISON = 0x10, //16 MAGIC_EFFECT_MORT_AREA = 0x11, //17 MAGIC_EFFECT_SOUND_GREEN = 0x12, //18 MAGIC_EFFECT_SOUND_RED = 0x13, //19 MAGIC_EFFECT_POISON_AREA = 0x14, //20 MAGIC_EFFECT_SOUND_YELLOW = 0x15, //21 MAGIC_EFFECT_SOUND_PURPLE = 0x16, //22 MAGIC_EFFECT_SOUND_BLUE = 0x17, //23 MAGIC_EFFECT_SOUND_WHITE = 0x18, //24 MAGIC_EFFECT_BUBBLES = 0x19, //25 MAGIC_EFFECT_CRAPS = 0x1A, //26 MAGIC_EFFECT_GIFT_WRAPS = 0x1B, //27 MAGIC_EFFECT_FIREWORK_YELLOW = 0x1C, //28 MAGIC_EFFECT_FIREWORK_RED = 0x1D, //29 MAGIC_EFFECT_FIREWORK_BLUE = 0x1E, //30 MAGIC_EFFECT_STUN = 0x1F, //31 MAGIC_EFFECT_SLEEP = 0x20, //32 MAGIC_EFFECT_WATERCREATURE = 0x21, //33 MAGIC_EFFECT_GROUNDSHAKER = 0x22, //34 MAGIC_EFFECT_HEARTS = 0x23, //35 MAGIC_EFFECT_FIREATTACK = 0x24, //36 MAGIC_EFFECT_ENERGY_AREA = 0x25, //37 MAGIC_EFFECT_SMALLCLOUDS = 0x26, //38 MAGIC_EFFECT_HOLYDAMAGE = 0x27, //39 MAGIC_EFFECT_BIGCLOUDS = 0x28, //40 MAGIC_EFFECT_ICEAREA = 0x29, //41 MAGIC_EFFECT_ICETORNADO = 0x2A, //42 MAGIC_EFFECT_ICEATTACK = 0x2B, //43 MAGIC_EFFECT_STONES = 0x2C, //44 MAGIC_EFFECT_SMALLPLANTS = 0x2D, //45 MAGIC_EFFECT_CARNIPHILA = 0x2E, //46 MAGIC_EFFECT_PURPLEENERGY = 0x2F, //47 MAGIC_EFFECT_YELLOWENERGY = 0x30, //48 MAGIC_EFFECT_HOLYAREA = 0x31, //49 MAGIC_EFFECT_BIGPLANTS = 0x32, //50 MAGIC_EFFECT_CAKE = 0x33, //51 MAGIC_EFFECT_GIANTICE = 0x34, //52 MAGIC_EFFECT_WATERSPLASH = 0x35, //53 MAGIC_EFFECT_PLANTATTACK = 0x36, //54 MAGIC_EFFECT_TUTORIALARROW = 0x37, //55 MAGIC_EFFECT_TUTORIALSQUARE = 0x38, //56 MAGIC_EFFECT_MIRRORHORIZONTAL = 0x39, //57 MAGIC_EFFECT_MIRRORVERTICAL = 0x3A, //58 MAGIC_EFFECT_SKULLHORIZONTAL = 0x3B, //59 MAGIC_EFFECT_SKULLVERTICAL = 0x3C, //60 MAGIC_EFFECT_ASSASSIN = 0x3D, //61 MAGIC_EFFECT_STEPSHORIZONTAL = 0x3E, //62 MAGIC_EFFECT_BLOODYSTEPS = 0x3F, //63 MAGIC_EFFECT_STEPSVERTICAL = 0x40, //64 MAGIC_EFFECT_YALAHARIGHOST = 0x41, //65 MAGIC_EFFECT_BATS = 0x42, //66 MAGIC_EFFECT_SMOKE = 0x43, //67 MAGIC_EFFECT_EFEITO69 = 0x44, //69 MAGIC_EFFECT_EFEITO70 = 0x45, //70 MAGIC_EFFECT_EFEITO71 = 0x46, //71 MAGIC_EFFECT_EFEITO72 = 0x47, //72 MAGIC_EFFECT_EFEITO73 = 0x48, //73 MAGIC_EFFECT_EFEITO74 = 0x49, //74 MAGIC_EFFECT_EFEITO75 = 0x50, //75 MAGIC_EFFECT_EFEITO76 = 0x51, //76 MAGIC_EFFECT_EFEITO77 = 0x52, //77 MAGIC_EFFECT_EFEITO78 = 0x53, //78 MAGIC_EFFECT_EFEITO79 = 0x54, //79 MAGIC_EFFECT_EFEITO80 = 0x55, //80 MAGIC_EFFECT_EFEITO81 = 0x56, //81 MAGIC_EFFECT_EFEITO82 = 0x57, //82 MAGIC_EFFECT_EFEITO83 = 0x58, //83 MAGIC_EFFECT_EFEITO84 = 0x59, //84 MAGIC_EFFECT_EFEITO85 = 0x60, //85 MAGIC_EFFECT_EFEITO86 = 0x61, //86 MAGIC_EFFECT_EFEITO87 = 0x62, //87 MAGIC_EFFECT_EFEITO88 = 0x63, //88 MAGIC_EFFECT_EFEITO89 = 0x64, //89 MAGIC_EFFECT_EFEITO90 = 0x65, //90 MAGIC_EFFECT_LAST = MAGIC_EFFECT_EFEITO90, //for internal use, dont send to client MAGIC_EFFECT_NONE = 0xFF, MAGIC_EFFECT_UNKNOWN = 0xFFFF };
Não esqueça de deixar MAGIC_EFFECT_LAST, sempre como sendo o último efeito configurado. Por exemplo, se o meu último efeito configurado é MAGIC_EFFECT_EFEITO71 = 0x46, //71, então, ficará como:
MAGIC_EFFECT_LAST = MAGIC_EFFECT_EFEITO71,
No arquivo tools.cpp, procure por:
MagicEffectNames magicEffectNames[] =
Basta configurar os efeitos novamente, assim como no arquivo anterior (const.h). Ficando assim (no caso, também até o 90):
MagicEffectNames magicEffectNames[] = { {"redspark", MAGIC_EFFECT_DRAW_BLOOD}, {"bluebubble", MAGIC_EFFECT_LOSE_ENERGY}, {"poff", MAGIC_EFFECT_POFF}, {"yellowspark", MAGIC_EFFECT_BLOCKHIT}, {"explosionarea", MAGIC_EFFECT_EXPLOSION_AREA}, {"explosion", MAGIC_EFFECT_EXPLOSION_DAMAGE}, {"firearea", MAGIC_EFFECT_FIRE_AREA}, {"yellowbubble", MAGIC_EFFECT_YELLOW_RINGS}, {"greenbubble", MAGIC_EFFECT_POISON_RINGS}, {"blackspark", MAGIC_EFFECT_HIT_AREA}, {"teleport", MAGIC_EFFECT_TELEPORT}, {"energy", MAGIC_EFFECT_ENERGY_DAMAGE}, {"blueshimmer", MAGIC_EFFECT_WRAPS_BLUE}, {"redshimmer", MAGIC_EFFECT_WRAPS_RED}, {"greenshimmer", MAGIC_EFFECT_WRAPS_GREEN}, {"fire", MAGIC_EFFECT_HITBY_FIRE}, {"greenspark", MAGIC_EFFECT_POISON}, {"mortarea", MAGIC_EFFECT_MORT_AREA}, {"greennote", MAGIC_EFFECT_SOUND_GREEN}, {"rednote", MAGIC_EFFECT_SOUND_RED}, {"poison", MAGIC_EFFECT_POISON_AREA}, {"yellownote", MAGIC_EFFECT_SOUND_YELLOW}, {"purplenote", MAGIC_EFFECT_SOUND_PURPLE}, {"bluenote", MAGIC_EFFECT_SOUND_BLUE}, {"whitenote", MAGIC_EFFECT_SOUND_WHITE}, {"bubbles", MAGIC_EFFECT_BUBBLES}, {"dice", MAGIC_EFFECT_CRAPS}, {"giftwraps", MAGIC_EFFECT_GIFT_WRAPS}, {"yellowfirework", MAGIC_EFFECT_FIREWORK_YELLOW}, {"redfirework", MAGIC_EFFECT_FIREWORK_RED}, {"bluefirework", MAGIC_EFFECT_FIREWORK_BLUE}, {"stun", MAGIC_EFFECT_STUN}, {"sleep", MAGIC_EFFECT_SLEEP}, {"watercreature", MAGIC_EFFECT_WATERCREATURE}, {"groundshaker", MAGIC_EFFECT_GROUNDSHAKER}, {"hearts", MAGIC_EFFECT_HEARTS}, {"fireattack", MAGIC_EFFECT_FIREATTACK}, {"energyarea", MAGIC_EFFECT_ENERGY_AREA}, {"smallclouds", MAGIC_EFFECT_SMALLCLOUDS}, {"holydamage", MAGIC_EFFECT_HOLYDAMAGE}, {"bigclouds", MAGIC_EFFECT_BIGCLOUDS}, {"icearea", MAGIC_EFFECT_ICEAREA}, {"icetornado", MAGIC_EFFECT_ICETORNADO}, {"iceattack", MAGIC_EFFECT_ICEATTACK}, {"stones", MAGIC_EFFECT_STONES}, {"smallplants", MAGIC_EFFECT_SMALLPLANTS}, {"carniphila", MAGIC_EFFECT_CARNIPHILA}, {"purpleenergy", MAGIC_EFFECT_PURPLEENERGY}, {"yellowenergy", MAGIC_EFFECT_YELLOWENERGY}, {"holyarea", MAGIC_EFFECT_HOLYAREA}, {"bigplants", MAGIC_EFFECT_BIGPLANTS}, {"cake", MAGIC_EFFECT_CAKE}, {"giantice", MAGIC_EFFECT_GIANTICE}, {"watersplash", MAGIC_EFFECT_WATERSPLASH}, {"plantattack", MAGIC_EFFECT_PLANTATTACK}, {"tutorialarrow", MAGIC_EFFECT_TUTORIALARROW}, {"tutorialsquare", MAGIC_EFFECT_TUTORIALSQUARE}, {"mirrorhorizontal", MAGIC_EFFECT_MIRRORHORIZONTAL}, {"mirrorvertical", MAGIC_EFFECT_MIRRORVERTICAL}, {"skullhorizontal", MAGIC_EFFECT_SKULLHORIZONTAL}, {"skullvertical", MAGIC_EFFECT_SKULLVERTICAL}, {"assassin", MAGIC_EFFECT_ASSASSIN}, {"stepshorizontal", MAGIC_EFFECT_STEPSHORIZONTAL}, {"bloodysteps", MAGIC_EFFECT_BLOODYSTEPS}, {"stepsvertical", MAGIC_EFFECT_STEPSVERTICAL}, {"yalaharighost", MAGIC_EFFECT_YALAHARIGHOST}, {"bats", MAGIC_EFFECT_BATS}, {"smoke", MAGIC_EFFECT_SMOKE}, {"efeito69", MAGIC_EFFECT_EFEITO69}, {"efeito70", MAGIC_EFFECT_EFEITO70}, {"efeito71", MAGIC_EFFECT_EFEITO71}, {"efeito72", MAGIC_EFFECT_EFEITO72}, {"efeito73", MAGIC_EFFECT_EFEITO73}, {"efeito74", MAGIC_EFFECT_EFEITO74}, {"efeito75", MAGIC_EFFECT_EFEITO75}, {"efeito76", MAGIC_EFFECT_EFEITO76}, {"efeito77", MAGIC_EFFECT_EFEITO77}, {"efeito78", MAGIC_EFFECT_EFEITO78}, {"efeito79", MAGIC_EFFECT_EFEITO79}, {"efeito80", MAGIC_EFFECT_EFEITO80}, {"efeito81", MAGIC_EFFECT_EFEITO81}, {"efeito82", MAGIC_EFFECT_EFEITO82}, {"efeito83", MAGIC_EFFECT_EFEITO83}, {"efeito84", MAGIC_EFFECT_EFEITO84}, {"efeito85", MAGIC_EFFECT_EFEITO85}, {"efeito86", MAGIC_EFFECT_EFEITO86}, {"efeito87", MAGIC_EFFECT_EFEITO87}, {"efeito88", MAGIC_EFFECT_EFEITO88}, {"efeito89", MAGIC_EFFECT_EFEITO89}, {"efeito90", MAGIC_EFFECT_EFEITO90} };
Não esqueça de configurar exatamente como em const.h. Por exemplo, se no arquivo anterior o efeito 71 está configurado como:
MAGIC_EFFECT_EFEITO71 = 0x46, //71
Então, você terá que configurar o mesmo efeito com os mesmos caracteres do nome desse efeito em tools.cpp (no código, digo configurar os caracteres exatamente iguais aos do arquivo anterior, após a vírgula >):
{"efeito71", MAGIC_EFFECT_EFEITO71}, Compile e adicione o executável do distro à seu servidor.
Vamos a configuração no seu servidor. Vá até o diretório da pasta lib (data/lib) e abra o arquivo 000-constant.lua. Nele, procure por:
CONST_ME_
E então configure, logo após o último efeito (no caso, 68 seria: CONST_ME_INSECTS = 68), todos os efeitos com os mesmos caracteres dos quais você adicionou na source em const.h e tools.cpp. Se você configurou por exemplo, até o efeito número 80 nos arquivos anteriores, então no script da lib ficaria dessa forma:
CONST_ME_DRAWBLOOD = 0 CONST_ME_LOSEENERGY = 1 CONST_ME_POFF = 2 CONST_ME_BLOCKHIT = 3 CONST_ME_EXPLOSIONAREA = 4 CONST_ME_EXPLOSIONHIT = 5 CONST_ME_FIREAREA = 6 CONST_ME_YELLOW_RINGS = 7 CONST_ME_GREEN_RINGS = 8 CONST_ME_HITAREA = 9 CONST_ME_TELEPORT = 10 CONST_ME_ENERGYHIT = 11 CONST_ME_MAGIC_BLUE = 12 CONST_ME_MAGIC_RED = 13 CONST_ME_MAGIC_GREEN = 14 CONST_ME_HITBYFIRE = 15 CONST_ME_HITBYPOISON = 16 CONST_ME_MORTAREA = 17 CONST_ME_SOUND_GREEN = 18 CONST_ME_SOUND_RED = 19 CONST_ME_POISONAREA = 20 CONST_ME_SOUND_YELLOW = 21 CONST_ME_SOUND_PURPLE = 22 CONST_ME_SOUND_BLUE = 23 CONST_ME_SOUND_WHITE = 24 CONST_ME_BUBBLES = 25 CONST_ME_CRAPS = 26 CONST_ME_GIFT_WRAPS = 27 CONST_ME_FIREWORK_YELLOW = 28 CONST_ME_FIREWORK_RED = 29 CONST_ME_FIREWORK_BLUE = 30 CONST_ME_STUN = 31 CONST_ME_SLEEP = 32 CONST_ME_WATERCREATURE = 33 CONST_ME_GROUNDSHAKER = 34 CONST_ME_HEARTS = 35 CONST_ME_FIREATTACK = 36 CONST_ME_ENERGYAREA = 37 CONST_ME_SMALLCLOUDS = 38 CONST_ME_HOLYDAMAGE = 39 CONST_ME_BIGCLOUDS = 40 CONST_ME_ICEAREA = 41 CONST_ME_ICETORNADO = 42 CONST_ME_ICEATTACK = 43 CONST_ME_STONES = 44 CONST_ME_SMALLPLANTS = 45 CONST_ME_CARNIPHILA = 46 CONST_ME_PURPLEENERGY = 47 CONST_ME_YELLOWENERGY = 48 CONST_ME_HOLYAREA = 49 CONST_ME_BIGPLANTS = 50 CONST_ME_CAKE = 51 CONST_ME_GIANTICE = 52 CONST_ME_WATERSPLASH = 53 CONST_ME_PLANTATTACK = 54 CONST_ME_TUTORIALARROW = 55 CONST_ME_TUTORIALSQUARE = 56 CONST_ME_MIRRORHORIZONTAL = 57 CONST_ME_MIRRORVERTICAL = 58 CONST_ME_SKULLHORIZONTAL = 59 CONST_ME_SKULLVERTICAL = 60 CONST_ME_ASSASSIN = 61 CONST_ME_STEPSHORIZONTAL = 62 CONST_ME_BLOODYSTEPS = 63 CONST_ME_STEPSVERTICAL = 64 CONST_ME_YALAHARIGHOST = 65 CONST_ME_BATS = 66 CONST_ME_SMOKE = 67 CONST_ME_INSECTS = 68 CONST_ME_EFEITO69 = 69 CONST_ME_EFEITO70 = 70 CONST_ME_EFEITO71 = 71 CONST_ME_EFEITO72 = 72 CONST_ME_EFEITO73 = 73 CONST_ME_EFEITO74 = 74 CONST_ME_EFEITO75 = 75 CONST_ME_EFEITO76 = 76 CONST_ME_EFEITO77 = 77 CONST_ME_EFEITO78 = 78 CONST_ME_EFEITO79 = 79 CONST_ME_EFEITO80 = 80 CONST_ME_EFEITO81 = 81 CONST_ME_EFEITO82 = 82 CONST_ME_EFEITO83 = 83 CONST_ME_EFEITO84 = 84 CONST_ME_EFEITO85 = 85 CONST_ME_EFEITO86 = 86 CONST_ME_EFEITO87 = 87 CONST_ME_EFEITO88 = 88 CONST_ME_EFEITO89 = 89 CONST_ME_EFEITO90 = 90 CONST_ME_NONE = 255 CONST_ME_LAST = CONST_ME_EFEITO90
Independete de usar o /z ou não para ver os efeitos, você terá que fazer essa configuração na source e na lib para que possa adicionar os parâmetros dos novos efeitos em suas spells também.
-
Xurumela deu reputação a BrunoMaia 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...
-
Xurumela deu reputação a Tricoder em (Resolvido)[ERRO] erro item novo narutibia!!@Xurumela
Você não registrou no movements.xml, né?
<movevent event="DeEquip" itemid="11394" slot="body" function="onDeEquipItem"/> <movevent event="Equip" itemid="11394" slot="body" function="onEquipItem"/>