Ir para conteúdo

Pergunta

Fala ae galera, blz? Bem vamos lá.. eu to tentando adicionar novos elementos (Damage) no meu server de tibia, só que quando eu vou invocar a spell com a nova damage, ela simplesmente não aparece a cor do hit e nem o efeito, como uma damage normal (ex: Fire Damage). Eu queria sabe como faço pra essa nova damage funcionar 100%..

 

Uma observação: Quando eu troco o número da minha damage (COMBAT_BLUEFIREDAMAGE = 1993) para que uma já existente (Exemplo: COMBAT_ENERGYDAMAGE = 2), minha damage fica com o efeito e a cor do hit da Energy Damage, no arquivo 000-constant.lua.

Minha dúvida é, como eu crio uma "ID" ou "Numeração" própria pra minha damage, para ela se tornar original?

Obs²: Não ocorre erro na compilação do executável, The Forgotten Server 0.3.6 - Versão 8.54

Se alguém poder me esclarecer essa dúvida, vai ajudar muitas outras pessoas, pois quem não quer aprender a adicionar novos elementos no otserver? Até mesmo pra criar um ot de pokémon estável e do zero sem bugs.. seria daora default_biggrin.png

 

Foi assim que adicionei minha nova damage na source:

========================================================================================

combat.cpp 

Abaixo de:

case CONDITION_FIRE:
return COMBAT_FIREDAMAGE;

Adicione: 

case CONDITION_ELECTRIC:
return COMBAT_ELECTRICDAMAGE;

-----------------------------------------------------------------------------------------

Abaixo de: 

case COMBAT_FIREDAMAGE:
return CONDITION_FIRE;

Adicione: 

case COMBAT_ELECTRICDAMAGE:
return CONDITION_ELECTRIC;

========================================================================================

condition.cpp 

Abaixo de: 

case CONDITION_FIRE:

Adicione: 

case CONDITION_ELECTRIC:

-----------------------------------------------------------------------------------------

Abaixo de: 

case CONDITION_FIRE:
return ICON_BURN;

Adicione: 

case CONDITION_ELECTRIC:
return ICON_NONE;

========================================================================================

condition.h 

Abaixo de: 

CONDITION_HUNTING = 1 << 23,

Coloque a vírgula na linha de cima e adc a próxima sem a vírgula: 

CONDITION_ELECTRIC = 1 << 24

========================================================================================

const.h 

Abaixo de:

TEXTCOLOR_WHITE = 215,

Adicione: 

TEXTCOLOR_ELECTRIC = 210,

========================================================================================

enums.h 

Abaixo de:

COMBAT_DEATHDAMAGE = 1 << 11,

Adicione: 

COMBAT_ELECTRICDAMAGE = 1 << 12,

E em: COMBAT_LAST = COMBAT_DEATHDAMAGE
Você troca por: COMBAT_LAST = COMBAT_BLUEFIREDAMAGE

========================================================================================

game.cpp 

Abaixo de: 

case COMBAT_ENERGYDAMAGE:

Adicione:

case COMBAT_ELECTRICDAMAGE:

-----------------------------------------------------------------------------------------

Abaixo de: 

case COMBAT_ENERGYDAMAGE:
{
textColor = TEXTCOLOR_PSYCHIC;
magicEffect = MAGIC_EFFECT_DRAW_BLOOD;
break;
}

Adicione: 

case COMBAT_ELECTRICDAMAGE:
{
textColor = TEXTCOLOR_ELECTRIC;
magicEffect = MAGIC_EFFECT_DRAW_BLOOD;
break;
}

========================================================================================

monster.cpp 

Abaixo de:

else if(tmpName == "drown")
combat->setParam(COMBATPARAM_COMBATTYPE, COMBAT_DROWNDAMAGE);

Adicione:

else if(tmpName == "electric")
combat->setParam(COMBATPARAM_COMBATTYPE, COMBAT_ELECTRICDAMAGE);

-----------------------------------------------------------------------------------------

Abaixo de:

else if(tmpStrValue == "energy")
{
mType->damageImmunities |= COMBAT_ENERGYDAMAGE;
mType->conditionImmunities |= CONDITION_ENERGY;
}

Adicione:

else if(tmpStrValue == "electric")
{
mType->damageImmunities |= COMBAT_ELECTRICDAMAGE;
mType->conditionImmunities |= CONDITION_ELECTRIC;
}

-----------------------------------------------------------------------------------------

Abaixo de:

else if(readXMLString(tmpNode, "fire", strValue) && booleanString(strValue))
{
mType->damageImmunities |= COMBAT_FIREDAMAGE;
mType->conditionImmunities |= CONDITION_FIRE;
}

Adicione:

else if(readXMLString(tmpNode, "electric", strValue) && booleanString(strValue))
{
mType->damageImmunities |= COMBAT_ELECTRICDAMAGE;
mType->conditionImmunities |= CONDITION_ELECTRIC;
}

-----------------------------------------------------------------------------------------

Abaixo de:

else if(readXMLInteger(tmpNode, "energyPercent", intValue))
mType->elementMap[COMBAT_ENERGYDAMAGE] = intValue;

Adicione:

else if(readXMLInteger(tmpNode, "electricPercent", intValue))
mType->elementMap[COMBAT_ELECTRICDAMAGE] = intValue;

========================================================================================

player.cpp

Abaixo de:

case CONDITION_FIRE:
tmp = "burning";
break;

Adicione:

case CONDITION_ELECTRIC:
tmp = "dashing";
break;

========================================================================================

tools.cpp

Abaixo de:

{"fire", COMBAT_FIREDAMAGE},

Adicione:

{"electric", COMBAT_ELECTRICDAMAGE},

-----------------------------------------------------------------------------------------

Abaixo de:

case COMBAT_ENERGYDAMAGE:
return "energy";

Adicione:

case COMBAT_ELECTRICDAMAGE:
return "electric";
Editado por Flaah
Link para o comentário
https://xtibia.com/forum/topic/237360-help-new-damage-novo-elemento/
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

×
×
  • Criar Novo...