Ir para conteúdo
  • Cadastre-se

(Resolvido)Bichos dando hit um no outro


Ir para solução Resolvido por tetheuscunha,

Posts Recomendados

Boa noite senhores !

 

Estou com um problema em meu ot, certos bichos (pelo menos identifiquei alguns) como por exemplo demon, ele da uma UE e esta hitando os outros em sua volta não só o player como deveria ser... ou seja um mata o outro.

Procurei na net uma solução e não consegui achar nada relacionado, se alguem puder me ajudar fico agradecido.

 

 

Segue Script do Demon.

 

 

<?xml version="1.0" encoding="UTF-8"?>
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000">
  <health now="8200" max="8200"/>
  <look type="35" corpse="5995"/>
  <targetchange interval="5000" chance="8"/>
  <strategy attack="90" defense="10"/>
  <flags>
    <flag summonable="0"/>
    <flag attackable="1"/>
    <flag hostile="1"/>
    <flag illusionable="0"/>
    <flag convinceable="0"/>
    <flag pushable="0"/>
    <flag canpushitems="1"/>
    <flag canpushcreatures="1"/>
    <flag targetdistance="1"/>
    <flag staticattack="90"/>
    <flag runonhealth="0"/>
  </flags>
  <attacks>
    <attack name="melee" interval="2000" skill="100" attack="110"/>
    <attack name="manadrain" interval="2000" chance="13" range="7" min="0" max="-120"/>
    <attack name="fire" interval="2000" chance="30" range="7" radius="7" target="1" min="-150" max="-250">
        <attribute key="shootEffect" value="fire"/>
        <attribute key="areaEffect" value="firearea"/>
    </attack>
    <attack name="firefield" interval="2000" chance="12" range="7" radius="1" target="1">
        <attribute key="shootEffect" value="fire"/>
    </attack>
    <attack name="lifedrain" interval="1000" chance="12" length="8" spread="0" min="-300" max="-467">
        <attribute key="areaEffect" value="purpleenergy"/>
    </attack>
    <attack name="speed" interval="2000" chance="15" target="1" speedchange="-750" duration="30000">
        <attribute key="shootEffect" value="suddendeath"/>
    </attack>
    <attack name="energy" interval="3000" chance="10" range="1" target="1" min="-210" max="-300">
        <attribute key="areaEffect" value="purpleenergy"/>
    </attack>
  </attacks>
  <defenses armor="55" defense="55">
    <defense name="healing" interval="2000" chance="15" min="130" max="240">
      <attribute key="areaEffect" value="blueshimmer"/>
    </defense>
    <defense name="speed" interval="1000" chance="8" speedchange="290" duration="5000">
      <attribute key="areaEffect" value="redshimmer"/>
    </defense>
  </defenses>
    <elements>
        <element physicalPercent="30"/>
        <element energyPercent="50"/>
        <element earthPercent="20"/>
        <element icePercent="-15"/>
        <element holyPercent="-15"/>
        <element deathPercent="20"/>
    </elements>
  <immunities>
    <immunity fire="1"/>
    <immunity drown="1"/>
    <immunity paralyze="1"/>
    <immunity invisible="1"/>
  </immunities>
  <summons maxSummons="1">
    <summon name="fire elemental" interval="1000" chance="12"/>
  </summons>
  <voices interval="5000" chance="10">
    <voice sentence="MUHAHAHAHA!" yell="1"/>
    <voice sentence="I SMELL FEEEEEAAAR!" yell="1"/>
    <voice sentence="CHAMEK ATH UTHUL ARAK!" yell="1"/>
    <voice sentence="Your resistance is futile!"/>
    <voice sentence="Your soul will be mine!" yell="0"/>
  </voices>
  <loot>
     <item id="2148" countmax="100" chance1="100000" chancemax="0"/> -- gold coins
     <item id="2148" countmax="100" chance1="100000" chancemax="0"/> -- gold coins
    <item id="2152" countmax="3" chance1="33333" chancemax="2000"/> --Plat
     <item id="2514" chance="1500"/> --mastermind shield
     <item id="2472" chance="1500"/> --magic plate armor
    <item id="2795" countmax="6" chance1="7500"/> --Fire Mushroom
    <item id="2164" chance="2100"/> --might ring
    <item id="1982" chance="1300"/> --purpel tome
    <item id="2165" chance="1000"/> --stealth ring
     <item id="1987" chance="100000">
        <inside>
             <item id="2393" chance="3800"/> --giantsword
             <item id="2432" chance="3800"/> --fire axe
            <item id="2396" chance="2600"/> --ice rapier
            <item id="2179" chance="1100"/> --golden ring
            <item id="2795" countmax="6" chance1="13000"/> --fire mushroom
            <item id="2678" countmax="3" chance1="10000" chancemax="0"/> --coconut
            <item id="2148" countmax="100" chance1="100000" chancemax="0"/> -- gold coin
            <item id="2151" countmax="4" chance1="5500" chancemax="0"/>
            <item id="2462" chance="3200"/> --devil helmet
            <item id="2149" countmax="3" chance1="11000" chancemax="0"/>
            <item id="2171" chance="2200"/> --platinum amulet
            <item id="2387" chance="32000"/> --double axe
            <item id="2470" chance="1600"/> --golden legs
            <item id="7382" chance="300"/> -- Demonrage Sword
            <item id="7393" chance="1700"/> -- Demon Trophy
            <item id="2520" chance="1600"/> --demon shield
            <item id="2418" chance="1500"/> --golden sickle
            <item id="2377" chance="6666"/> --two-handed sword
        </inside>
     </item>
</loot>
</monster>
 

Link para o post
Compartilhar em outros sites

Na verdade, você teria que colocar atributos como imunidade a fire nos outros bichos já existentes da hunt, ou fazer algo por script para que nenhum monstro ataque outro com magia em area... isso é uma duvida que ainda tenho (Até fiz tópico mas não obtive respostas). Porém, a imunidade é uma boa alternativa. 

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

pode cre... se for por imunidade alem do trampo de sair vendo monstro por monstro e alterando, tambem poderia prejudicar os mages com as wands ... melhor por script seria se alguem pudesse criar pra mim agradeço muito ! ... vlw pela resposta @pablobion

Link para o post
Compartilhar em outros sites

Bom perguntei pra um amigo, ele respondeu que sabe por scr, falou pra modificar o combarChangeHealth, but ainda não testei...
mas ta ai.

em game.cpp

 

Spoiler

bool Game::combatChangeHealth(CombatType_t combatType, Creature* attacker, Creature* target, int32_t healthChange,

    MagicEffect_t hitEffect/* = MAGIC_EFFECT_UNKNOWN*/, Color_t hitColor/* = COLOR_UNKNOWN*/, bool force/* = false*/)

{

    if (attacker->getMonster() && target->getMonster()) {

       return false;

    }

    const Position& targetPos = target->getPosition();

    if(healthChange > 0)

    {

        if(!force && target->getHealth() <= 0)

            return false;

 

        bool deny = false;

        CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE);

        for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it)

        {

            if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_HEALTHGAIN, combatType, healthChange))

                deny = true;

        }

 

        if(deny)

            return false;

 

        target->gainHealth(attacker, healthChange);

        if(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE) && !target->isGhost() &&

            (g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE_MONSTER) || !target->getMonster()))

        {

            char buffer[20];

            sprintf(buffer, "+%d", healthChange);

 

            const SpectatorVec& list = getSpectators(targetPos);

            if(combatType != COMBAT_HEALING)

                addMagicEffect(list, targetPos, MAGIC_EFFECT_WRAPS_BLUE);

 

            addAnimatedText(list, targetPos, COLOR_GREEN, buffer);

        }

    }

    else

    {

        const SpectatorVec& list = getSpectators(targetPos);

        if(!target->isAttackable() || Combat::canDoCombat(attacker, target) != RET_NOERROR)

        {

            addMagicEffect(list, targetPos, MAGIC_EFFECT_POFF);

            return true;

        }

 

        int32_t damage = -healthChange;

        if(damage != 0)

        {

            if(target->hasCondition(CONDITION_MANASHIELD) && combatType != COMBAT_UNDEFINEDDAMAGE)

            {

                int32_t manaDamage = std::min(target->getMana(), damage);

                damage = std::max((int32_t)0, damage - manaDamage);

                if(manaDamage != 0)

                {

                    bool deny = false;

                    CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE);

                    for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it)

                    {

                        if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_MANALOSS, combatType, manaDamage))

                            deny = true;

                    }

 

                    if(deny)

                        return false;

 

                    target->drainMana(attacker, combatType, manaDamage);

                    char buffer[20];

                    sprintf(buffer, "%d", manaDamage);

 

                    addMagicEffect(list, targetPos, MAGIC_EFFECT_LOSE_ENERGY);

                    addAnimatedText(list, targetPos, COLOR_BLUE, buffer);

                }

            }

 

            damage = std::min(target->getHealth(), damage);

            if(damage > 0)

            {

                bool deny = false;

                CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE);

                for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it)

                {

                    if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_HEALTHLOSS, combatType, damage))

                        deny = true;

                }

 

                if(deny)

                    return false;

 

                target->drainHealth(attacker, combatType, damage);

                addCreatureHealth(list, target);

 

                Color_t textColor = COLOR_NONE;

                MagicEffect_t magicEffect = MAGIC_EFFECT_NONE;

                switch(combatType)

                {

                    case COMBAT_PHYSICALDAMAGE:

                    {

                        Item* splash = NULL;

                        switch(target->getRace())

                        {

                            case RACE_VENOM:

                                textColor = COLOR_LIGHTGREEN;

                                magicEffect = MAGIC_EFFECT_POISON;

                                splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_GREEN);

                                break;

 

                            case RACE_BLOOD:

                                textColor = COLOR_RED;

                                magicEffect = MAGIC_EFFECT_DRAW_BLOOD;

                                splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_BLOOD);

                                break;

 

                            case RACE_UNDEAD:

                                textColor = COLOR_GREY;

                                magicEffect = MAGIC_EFFECT_HIT_AREA;

                                break;

 

                            case RACE_FIRE:

                                textColor = COLOR_ORANGE;

                                magicEffect = MAGIC_EFFECT_DRAW_BLOOD;

                                break;

 

                            case RACE_ENERGY:

                                textColor = COLOR_PURPLE;

                                magicEffect = MAGIC_EFFECT_PURPLEENERGY;

                                break;

 

                            default:

                                break;

                        }

 

                        if(splash)

                        {

                            internalAddItem(NULL, target->getTile(), splash, INDEX_WHEREEVER, FLAG_NOLIMIT);

                            startDecay(splash);

                        }

                        break;

                    }

 

                    case COMBAT_ENERGYDAMAGE:

                    {

                        textColor = COLOR_PURPLE;

                        magicEffect = MAGIC_EFFECT_ENERGY_DAMAGE;

                        break;

                    }

 

                    case COMBAT_EARTHDAMAGE:

                    {

                        textColor = COLOR_LIGHTGREEN;

                        magicEffect = MAGIC_EFFECT_POISON_RINGS;

                        break;

                    }

 

                    case COMBAT_DROWNDAMAGE:

                    {

                        textColor = COLOR_LIGHTBLUE;

                        magicEffect = MAGIC_EFFECT_LOSE_ENERGY;

                        break;

                    }

 

                    case COMBAT_FIREDAMAGE:

                    {

                        textColor = COLOR_ORANGE;

                        magicEffect = MAGIC_EFFECT_HITBY_FIRE;

                        break;

                    }

 

                    case COMBAT_ICEDAMAGE:

                    {

                        textColor = COLOR_TEAL;

                        magicEffect = MAGIC_EFFECT_ICEATTACK;

                        break;

                    }

 

                    case COMBAT_HOLYDAMAGE:

                    {

                        textColor = COLOR_YELLOW;

                        magicEffect = MAGIC_EFFECT_HOLYDAMAGE;

                        break;

                    }

 

                    case COMBAT_DEATHDAMAGE:

                    {

                        textColor = COLOR_DARKRED;

                        magicEffect = MAGIC_EFFECT_SMALLCLOUDS;

                        break;

                    }

 

                    case COMBAT_LIFEDRAIN:

                    {

                        textColor = COLOR_RED;

                        magicEffect = MAGIC_EFFECT_WRAPS_RED;

                        break;

                    }

 

                    default:

                        break;

                }

 

                if(hitEffect != MAGIC_EFFECT_UNKNOWN)

                    magicEffect = hitEffect;

 

                if(hitColor != COLOR_UNKNOWN)

                    textColor = hitColor;

 

                if(textColor < COLOR_NONE && magicEffect < MAGIC_EFFECT_NONE)

                {

                    char buffer[20];

                    sprintf(buffer, "%d", damage);

 

                    addMagicEffect(list, targetPos, magicEffect);

                    addAnimatedText(list, targetPos, textColor, buffer);

                }

            }

        }

    }

 

    return true;

}

 

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

@pablobion Obrigado pela ajuda! .... Isso que me mandou ja esta pronto ? é para substituir é isso ? Precisa compilar ne ?

Vou testar amanha pois agora vou dormir, depois volto para informar vlw aii !!

Link para o post
Compartilhar em outros sites

não sei porque não testei..

mas me parece que só acrescentou o 

 

  if (attacker->getMonster() && target->getMonster()) {

       return false;

    }

 

o que faz todo sentido...  alias não testei porque to com problemas no meu dev

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
Agora, ledcar disse:

cara tentei fazer o que me falow e compilar em seguida mas da um erro na hora de compilar no  " #include "databasepgsql.h"  


Bom ai já não posso te ajudar amigo... problemas de compilação não é comigo.. já compilou alguma vez? deu certo? porque vc so mexeu no game.cpp certo?

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

Compilei uma vez esse ot de teste concluiu abrir o ot tudo certo pelo menos ... fiz uma outra alteração em outro arquivo que preciso para arrumar o Fast Attack do ot em relação ao tempo de resposta mas pelo pouco que entendo acredito não ter ligação .... segui um tutorial do forum para compilar da outra vez q fiz e dessa vez tb

Link para o post
Compartilhar em outros sites
  • Solução
7 minutos atrás, ledcar disse:

@tetheuscunha aqui aparece que eu nao tenho permissao para ver seu post o.O

E que ele ainda não foi aprovado.

Ate amanha ele e aprovado, fique olhando.

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo