Ir para conteúdo

[C++] doCreatureCastSpell(creature, spellName)


Posts Recomendados

[C++] doCreatureCastSpell (0.3.6pl1)

Escrito e testado: 0.3.6PL1 [8.54 - 8.60]


Salve galera da Eks, eu fui procurar na internet sobre essa função e vi que já tentaram cria-la, porém não conseguiram, ou se conseguiram nunca postaram. Então eu resolvi faze-la para vocês, e eu percebi que ninguém nunca tinha feito, por causa de uma dúvida, e um certo grau de dificuldade. Certamente, eu tive uma dificuldade no começo, porém ao desenvolver da função eu percebi que não era nada de mais.

Então eu trago aqui pra vocês esta função, cuja a ideia é fazer com que a criatura (jogador ou monstro) a utilize uma magia pelo nome dela, importante lembrar que o nome da magia, não é as palavras mágicas, exemplo: "utani hur" é a palavra mágica e "haste" é o nome da magia. Enfim, sem mais delongas e vamos aos códigos smile.png



Vá ao arquivo "LuaScript.cpp" e procure por:

//doPlayerAddExperience(cid, amount) 
lua_register(m_luaState, "doPlayerAddExperience", LuaScriptInterface::luaDoPlayerAddExperience);

E abaixo adicione:

//doCreatureCastSpell // by OrochiElf. 
lua_register(m_luaState, "doCreatureCastSpell", LuaScriptInterface::luaDoCreatureCastSpell);

Agora procure por:

 

  Mostrar conteúdo oculto


E abaixo adicione:

int32_t LuaScriptInterface::luaDoCreatureCastSpell(lua_State* L) // by OrochiElf.
{ //doCreatureCastSpell(cid, spellname) 
    std::string spellName = popString(L); 
    ScriptEnviroment* env = getEnv(); 
    if(Creature* creature = env->getCreatureByUID(popNumber(L))) 
    { 
         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 
    { 
        errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); 
        lua_pushboolean(L, false); 
    } 
    return 1;
}

Agora vá ao arquivo "LuaScript.h" e procure por:

static int32_t luaDoPlayerAddItem(lua_State* L);

E abaixo adicione:

static int32_t luaDoCreatureCastSpell(lua_State* L); // by OrochiElf

Exemplo, eu tenho um pet, e quero que ele utilize a magia de "utani hur" - "haste".

Talkaction Code:

function onSay(cid, words, param, channel) 
    local summon = getCreatureSummons(cid)[1] 

    if isCreature(summon) then 
         doCreatureCastSpell(summon, "haste") 
    end 
    return true
end

Esta função é muito requisitada para fazer servidores de pokémon, evitando gambiarras. Que foi o motivo para qual eu desenvolvi ela smile.png

 

Créditos.

Tony Araújo (OrochiElf) 100%

Editado por OrochiElf
Link para o comentário
Compartilhar em outros sites

Gostei do conteudo. Essa função vai deixar os scritps mais limpos e organizados, facilitando na hora da criação.

Confesso que eu demorei um pouco pra intender, mais não tenho muito conhecimento em script, então isso já era de se esperar mdr.gif

 

Obrigado pelo conteudo, espero ver mais destes seus bons trabalhos aqui no XTIBIA!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...