Maneiro Orochi Elf, continue trazendo bons conteúdos à comunidade ![]()
- Fórum
- OTServ
- Recursos
- Linguagens de Programação
- [C++] doCreatureCastSpell(creature, spellName)
TO
action
[C++] doCreatureCastSpell(creature, spellName)
Por Tony Araujo, 12 de abr. de 2015 em Linguagens de Programação
tibia
script
otserv
4
1.6k
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

12 de abril de 2015 às 00:03
12 de abril de 2015 às 18:33
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 ![]()
Obrigado pelo conteudo, espero ver mais destes seus bons trabalhos aqui no XTIBIA!
info
Grupo: Visconde
Registrado: 27/02/13
Posts: 446
Reputação: +282
Gênero: Masculino

12 de abril de 2015 às 19:39
Opa, só aguardar ![]()




info
Grupo: Visconde
Registrado: 27/02/13
Posts: 446
Reputação: +282
Gênero: Masculino
[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
Vá ao arquivo "LuaScript.cpp" e procure por:
E abaixo adicione:
Agora procure por:
int32_t LuaScriptInterface::luaDoPlayerSetSex(lua_State* L)
{
//doPlayerSetSex(cid, sex)
uint32_t newSex = popNumber(L);
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
player->setSex(newSex);
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
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:
E abaixo adicione:
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 endEsta função é muito requisitada para fazer servidores de pokémon, evitando gambiarras. Que foi o motivo para qual eu desenvolvi ela
Créditos.
Tony Araújo (OrochiElf) 100%
Editado Abril 12 por OrochiElf