Ir para conteúdo

Featured Replies

Postado

Esse sistema faz com que existam monstros que não atacam você, se você não atacar ou usar magias antes. Então vamos ao passo-a-passo.



Encontre em luascript.cpp

registerMethod("MonsterType", "isHostile", LuaScriptInterface::luaMonsterTypeIsHostile);

Coloque abaixo: 

registerMethod("MonsterType", "isHostileOnAttack", LuaScriptInterface::luaMonsterTypeIsHostileOnAttack);


Encontre em luascript.cpp

int LuaScriptInterface::luaMonsterTypeIsHostile(lua_State* L)
{
    // monsterType:isHostile()
    MonsterType* monsterType = getUserdata<MonsterType>(L, 1);
    if (monsterType) {
        pushBoolean(L, monsterType->isHostile);
    } else {
        lua_pushnil(L);
    }
    return 1;
} 

Coloque abaixo: 

int LuaScriptInterface::luaMonsterTypeIsHostileOnAttack(lua_State* L)
{
    // monsterType:isHostileOnAttack()
    MonsterType* monsterType = getUserdata<MonsterType>(L, 1);
    if (monsterType) {
        pushBoolean(L, monsterType->isHostileOnAttack);
    } else {
        lua_pushnil(L);
    }
    return 1;
}


Encontre em luascript.h:

static int luaMonsterTypeIsHostile(lua_State* L);

Coloque abaixo: 

static int luaMonsterTypeIsHostileOnAttack(lua_State* L);


Encontre em monster.cpp

    if (isHostile() || isSummon()) {
        if (setAttackedCreature(creature) && !isSummon()) {
            g_dispatcher.addTask(createTask(std::bind(&Game::checkCreatureAttack, &g_game, getID())));
        }
    }
    return setFollowCreature(creature);
} 

Substitua por: 

    if (isHostileOnAttack() && getHealth() >= getMaxHealth()) {
            return false;
    } else if (isHostile() || isSummon()) {
        if (setAttackedCreature(creature) && !isSummon()) {
            g_dispatcher.addTask(createTask(std::bind(&Game::checkCreatureAttack, &g_game, getID())));
        }
    }
    return setFollowCreature(creature);
}


Encontre em monster.h

        bool isHostile() const {
            return mType->isHostile;
        } 

Coloque abaixo: 

        bool isHostileOnAttack() const {
            return mType->isHostileOnAttack;
        }


Encontre em monsters.cpp

isHostile = true;

Coloque abaixo: 

isHostileOnAttack = false;


Encontre em monsters.cpp

            } else if (strcasecmp(attrName, "hostile") == 0) {
                mType->isHostile = attr.as_bool();
 

Coloque abaixo: 

            } else if (strcasecmp(attrName, "hostileonattack") == 0) {
                mType->isHostileOnAttack = attr.as_bool();


Encontre em monsters.h

         bool isHostile;

Coloque abaixo: 

         bool isHostileOnAttack;


Pronto, agora é só editar as flags no xml do monster que você que ataque apenas quando for atacado: 

<flag hostile="1"/>
<flag hostileonattack="1"/>

Todos os créditos são de fish04k.

Editado por luanluciano93 (veja o histórico de edições)

Postado

Bem legal,

nunca tinha parado pra pensar nisso...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Postado

Grande Luan!!! será possível isso em 0.4?

Precisa de ajuda? Poste a versão de seu TFS.

*************************************************************************************************************

 

Servidores? Eu indico:

logo2.png

Use o cupom TIBIAKING e receba 50% de desconto na primeira mensalidade!

Pague menos de R$ 19,00 no primeiro mês!

 

protecaoddos.jpg afiliados.jpg

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo