Skulls 331 Postado Abril 7, 2016 Share Postado Abril 7, 2016 Bom dia galera, tudo bem? Hoje vou ensinar uma coisinha simples, porém bem útil: criar um novo tipo de combate. Tipos de combate representam o tipo do dano que você está causando naquele momento. Basicamente, eles são os responsáveis pelo efeito básico daquele tipo de combate (além do efeito e o efeito de distância que você pode adicionar) e também pela cor do texto de dano. Bom, vamos lá. 1. Criação do novo tipo no Enum O primeiro passo para a criação do novo tipo de combate é adicionar o referencial ao seu combate novo no enumerador (enum) de tipos de combate (CombatType_t). Para isso, vá até o arquivo de cabeçalho enums.h, procure por "enum CombatType_t" e, após o último enum, coloque o nome que quer dar ao seu tipo de combate. Eu escolhi chamar o meu de COMBAT_CRITICAL, para fazer um dano diferente quando o acerto for crítico. Ficou assim: enum CombatType_t { COMBAT_NONE = 0, COMBAT_PHYSICALDAMAGE = 1 << 0, COMBAT_ENERGYDAMAGE = 1 << 1, COMBAT_EARTHDAMAGE = 1 << 2, COMBAT_FIREDAMAGE = 1 << 3, COMBAT_UNDEFINEDDAMAGE = 1 << 4, COMBAT_LIFEDRAIN = 1 << 5, COMBAT_MANADRAIN = 1 << 6, COMBAT_HEALING = 1 << 7, COMBAT_DROWNDAMAGE = 1 << 8, COMBAT_ICEDAMAGE = 1 << 9, COMBAT_HOLYDAMAGE = 1 << 10, COMBAT_DEATHDAMAGE = 1 << 11, COMBAT_CRITICAL = 1 << 12, COMBAT_COUNT = 13}; 2. Adicionar "referências" Esse passo consiste em criar facilidades para acessar seu tipo de combate em alguns casos. Para isso, vamos até tools.cpp e vamos alterar o vetor combatTypeNames (que cria uma string que referencia o nosso combate) e a função combatTypeToIndex (indexa os combates), adicionando o nosso novo combate ao final de cada um deles de forma coerente. O meu ficou assim: CombatTypeNames combatTypeNames[] = { {"physical", COMBAT_PHYSICALDAMAGE}, {"energy", COMBAT_ENERGYDAMAGE}, {"earth", COMBAT_EARTHDAMAGE}, {"fire", COMBAT_FIREDAMAGE}, {"undefined", COMBAT_UNDEFINEDDAMAGE}, {"lifedrain", COMBAT_LIFEDRAIN}, {"manadrain", COMBAT_MANADRAIN}, {"healing", COMBAT_HEALING}, {"drown", COMBAT_DROWNDAMAGE}, {"ice", COMBAT_ICEDAMAGE}, {"holy", COMBAT_HOLYDAMAGE}, {"death", COMBAT_DEATHDAMAGE}, { "critical", COMBAT_CRITICAL },}; size_t combatTypeToIndex(CombatType_t combatType){ switch (combatType) { case COMBAT_PHYSICALDAMAGE: return 0; case COMBAT_ENERGYDAMAGE: return 1; case COMBAT_EARTHDAMAGE: return 2; case COMBAT_FIREDAMAGE: return 3; case COMBAT_UNDEFINEDDAMAGE: return 4; case COMBAT_LIFEDRAIN: return 5; case COMBAT_MANADRAIN: return 6; case COMBAT_HEALING: return 7; case COMBAT_DROWNDAMAGE: return 8; case COMBAT_ICEDAMAGE: return 9; case COMBAT_HOLYDAMAGE: return 10; case COMBAT_DEATHDAMAGE: return 11; case COMBAT_CRITICAL: return 12; default: return 0; }} 3. Definir o efeito e o dano do nosso combate Agora devemos definir como o nosso combate vai se comportar dizendo a cor do dano gerado e qual efeito associado a ele. Para isso, vamos até a função combatGetTypeInfo dentro de game.cpp. Dentro de switch (combatType), após o último combate e antes do default, vamos adicionar as características do nosso combate. O meu ficou assim: case COMBAT_CRITICAL: { color = TEXTCOLOR_MAYABLUE; effect = CONST_ME_NONE; break;} Isto é, meu tipo de combate crítico tem a cor azul maia e nenhum efeito. 4. Informar ao LUA seu novo tipo de combate O último passo é simplesmente enviar para o lua o novo tipo de combate. Para isso, vá até luascript.cpp e, logo abaixo de: registerEnum(COMBAT_DEATHDAMAGE) adicione: registerEnum(COMBAT_CRITICAL) Pronto, após seguir esses passos o seu novo tipo combate foi criado, referenciado, caracterizado e definido em lua. Para utilizá-lo basta chamá-lo no lugar certo COMBAT_CRITICAL. Bom, por hoje é só pessoal, espero que gostem. Abraços Link para o comentário Compartilhar em outros sites More sharing options...
Administrador Administrador 1435 Postado Abril 7, 2016 Administrador Share Postado Abril 7, 2016 É muito interessante ter alguém disponibilizando materiais desse tipo, são modificações ao meu ver complicadas de fazer. Parabéns @Skulls Link para o comentário Compartilhar em outros sites More sharing options...
Skulls 331 Postado Abril 7, 2016 Autor Share Postado Abril 7, 2016 3 hours ago, Daniel said: É muito interessante ter alguém disponibilizando materiais desse tipo, são modificações ao meu ver complicadas de fazer. Parabéns @Skulls Nem tanto, porém, bastante úteis! Obrigado @Daniel. Abraços! Link para o comentário Compartilhar em outros sites More sharing options...
HeelNox 71 Postado Abril 9, 2016 Share Postado Abril 9, 2016 Funciona na tfs 1.0 ? Link para o comentário Compartilhar em outros sites More sharing options...
Skulls 331 Postado Abril 15, 2016 Autor Share Postado Abril 15, 2016 On 4/9/2016 at 5:20 PM, HeelNox said: Funciona na tfs 1.0 ? Funciona sim, acredito eu. Link para o comentário Compartilhar em outros sites More sharing options...
julyo 0 Postado Setembro 1, 2019 Share Postado Setembro 1, 2019 sirve para tfs 0.3.6? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados