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
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";
info
Grupo: Barão
Registrado: 26/12/11
Posts: 201
Reputação: +18
Char no Tibia: Flaah
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
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 Outubro 13 por Flaah