Refe 320 Postado Setembro 19, 2017 Share Postado Setembro 19, 2017 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: Spoiler function onSay(player, words, param) poke = player:getSummons()[1] poke:soltaMagia(pokes[poke:getName()][1].name) player:say(poke:getName().."use "..pokes[poke:getName()][1].name, TALKTYPE_ORANGE_1) end 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 Compartilhar em outros sites More sharing options...
Noninhouh 118 Postado Setembro 19, 2017 Share Postado Setembro 19, 2017 Poxa, legal. Deixa eu ver se entendi direito kk Essa spell seria da pasta "/spells/scripts/" ?? Link para o comentário Compartilhar em outros sites More sharing options...
DarkWore 112 Postado Setembro 19, 2017 Share Postado Setembro 19, 2017 Muito Bom, Obrigado por Postar. Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Setembro 19, 2017 Share Postado Setembro 19, 2017 10 minutos atrás, Noninhouh disse: Poxa, legal. Deixa eu ver se entendi direito kk Essa spell seria da pasta "/spells/scripts/" ?? é uma fuãnço, pode ser utilizada em qualquer script ._. Link para o comentário Compartilhar em outros sites More sharing options...
Noninhouh 118 Postado Setembro 19, 2017 Share Postado Setembro 19, 2017 (editado) 13 minutos atrás, Ceetros disse: é uma fuãnço, pode ser utilizada em qualquer script ._. Minha dúvida é se quando eu usar essa função, a spell que vai puxar, será dessa pasta que eu falei Editado Setembro 19, 2017 por Noninhouh Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Setembro 19, 2017 Share Postado Setembro 19, 2017 12 horas atrás, Noninhouh disse: Minha dúvida é se quando eu usar essa função, a spell que vai puxar, será dessa pasta que eu falei spells.xml Link para o comentário Compartilhar em outros sites More sharing options...
BananaFight 196 Postado Dezembro 18, 2017 Share Postado Dezembro 18, 2017 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 Compartilhar em outros sites More sharing options...
otavio101 15 Postado Março 2, 2018 Share Postado Março 2, 2018 (editado) @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 Março 4, 2018 por otavio101 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados