Ir para conteúdo

creature:soltaMagia("name") PARA TFS 1.x


Posts Recomendados

Olá, hoje eu vim postar a função

creature:soltaMagia("nomedamagia")

Para o TFS 1.X.

 

Bom, eu estou fazendo um Poketibia com base no TFS 1.3 e vou postar essa função para quem quiser seguir o mesmo.

Segue um exemplo de uso:

  Mostrar conteúdo oculto

Em LUASCRIPT.CPP

Abaixo de

	registerMethod("Player", "addExperience", LuaScriptInterface::luaPlayerAddExperience);

Adicione:

	registerMethod("Creature", "soltaMagia", LuaScriptInterface::luaSoltaMagia);

Logo abaixo da função:

int LuaScriptInterface::luaCreatureGetEvents(lua_State* L)

Adicione:

int LuaScriptInterface::luaSoltaMagia(lua_State* L)
{
    //creature:soltaMagia("name")
    const std::string& spellName = getString(L, 2);

    if(Creature* creature = getUserdata<Creature>(L, 1))
    {
        InstantSpell* spell = g_spells->getInstantSpellByName(spellName);
        if(!spell)
        {
            lua_pushboolean(L, false);
            return 1;
        }
        Creature* target = creature->getAttackedCreature();

        if(target)
            spell->castSpell(creature, target);
        else
            spell->castSpell(creature, creature);

        lua_pushboolean(L, true);
    }
    else
    {
        lua_pushboolean(L, false);
    }
    return 1;
}

Em luascript.h registre:

        static int luaSoltaMagia(lua_State* L);

		static int luaSoltaMagia(lua_State* L);

Agora é só compilar a proveitar :)

Link para o comentário
https://xtibia.com/forum/topic/246243-creaturesoltamagianame-para-tfs-1x/
Compartilhar em outros sites

  Em 19/09/2017 em 02:29, Ceetros disse:

é uma fuãnço, pode ser utilizada em qualquer script ._.

 

Expand  

Minha dúvida é se quando eu usar essa função, a spell que vai puxar, será dessa pasta que eu falei

Editado por Noninhouh
Link para o comentário
https://xtibia.com/forum/topic/246243-creaturesoltamagianame-para-tfs-1x/#findComment-1722114
Compartilhar em outros sites

  • 2 months later...

Só algumas dicas de convenção, utilize a nomenclatura em inglês para manter o seus códigos organizados.

Você também pode melhorar a estrutura do seu código, por exemplo, não tem sentido alocar espaço para o nome da magia e depois verificar se a creature existe, pq se a creature não existir vc esta alocando espaço para o nome da magia sem necessidade, isso só vai gastar processamento e memoria do seu servidor, então vc primeiro verifica se a creature existe, caso ela exista vc vai para o segundo passo que é verificar se a spell existe, caso as 2 condições sejam verdadeiras vc executa o resto do código.

 

int LuaScriptInterface::luaCreatureCastSpell(lua_State* L)
{
    //creature:castSpell(name)
    Creature* creature = getUserdata<Creature>(L, 1)
    if(!creature) {
        lua_pushboolean(L, false);
        return 1;
    }

    const std::string& spellName = getString(L, 2);
    InstantSpell* spell = g_spells->getInstantSpellByName(spellName);
    if(!spell) {
        lua_pushboolean(L, false);
        return 1;
    }

    Creature* target = creature->getAttackedCreature();
    if(target)
        spell->castSpell(creature, target);
    else
        spell->castSpell(creature, creature);

    lua_pushboolean(L, true);     

    return 1;
}

 

 

Link para o comentário
https://xtibia.com/forum/topic/246243-creaturesoltamagianame-para-tfs-1x/#findComment-1725900
Compartilhar em outros sites

  • 2 months later...

@Ceetros Me parece que não funciona na atual versão do TFS confirma?

 

 

  player:soltaMagia("magia1")

edit.: funciona, só que uma magia como avalanche precisa de target.
 
 

Editado por otavio101
Link para o comentário
https://xtibia.com/forum/topic/246243-creaturesoltamagianame-para-tfs-1x/#findComment-1726741
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...