Demonbholder 420 Postado Fevereiro 27, 2011 Share Postado Fevereiro 27, 2011 (editado) Faala pessoal do XTibia! Hoje venho aqui postar a primeira função que eu fiz, adicionei na lib e deu certo HAHA. Eu não encontrei nenhum erro, então vai lá a explicação: Utilidade: A função summona um monstro (que não ataca o jogador) e remove o monstro depois de tantos segundos. Foi bem fácil, em data/lib abre o arquivo functions e cola isto no final, ou em algum lugar dele: function doRemoveSummon(cid, name, time) if isMonster(getCreatureByName(name)) then if (type(time) == "number" and time) > 0 then doSummonMonster(cid, name) for _, monsters in ipairs(getCreatureSummons(cid)) do addEvent(doRemoveCreature, time*1000, monsters) end return TRUE end return error("Time must be a number higher than 0!") end return error("Creature not found!") end Então, bem fácil certo? Vamos aos exemplos de uso: Talkaction: function onSay(cid, words, param) if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return TRUE end return doRemoveSummon(cid, param, 10) end Action: function onUse(cid, item) local sec = 30 local mon = 'demon' if getPlayerStorageValue(cid, 15692) - os.time() <= 0 then doRemoveSummon(cid, mon, sec) doSendAnimatedText(getPlayerPosition(cid), "Your pet will die in "..sec.." seconds.", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid, 15692, sec + os.time()) end return TRUE end É isso, bem simples mesmo, espero que ainda não exista algo assim, e lembrando que vai remover todos os summons, porque a função que eu usei é getPlayerSummons. Valeu. Editado Março 1, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
pintopinto 0 Postado Fevereiro 27, 2011 Share Postado Fevereiro 27, 2011 Tem um bug nessa função caso o summon esteja morto retorna um erro: (luaDoRemoveCreature) Creature not found por causa do addEvent. Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Fevereiro 27, 2011 Autor Share Postado Fevereiro 27, 2011 É, assim como em qualquer script que tu use addEvent e a criatura morrer, mas só vai dizer que não achou a criatura, não acontece nada de mais. Se souber como eu poderia remover esse erro sem adicionar outra função, por favor, se manifeste. Link para o comentário Compartilhar em outros sites More sharing options...
godshiryu 0 Postado Fevereiro 27, 2011 Share Postado Fevereiro 27, 2011 MEU DEUS! VO USA! JA TO PUIS NOO MEU OT!! MUITO BOM MESMO MAN RECOMENDO AI EM GALERA! RULOU! Link para o comentário Compartilhar em outros sites More sharing options...
Hudsin 47 Postado Fevereiro 28, 2011 Share Postado Fevereiro 28, 2011 Ótimo Script Testado e aprovado! Muito legal para eventos :hi: Link para o comentário Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Fevereiro 28, 2011 Share Postado Fevereiro 28, 2011 em vez de print usa error(), so botar error(msg) Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Março 1, 2011 Autor Share Postado Março 1, 2011 Valeu pelo toque mkalo, editei lá ja. Link para o comentário Compartilhar em outros sites More sharing options...
thalia 280 Postado Março 1, 2011 Share Postado Março 1, 2011 Boa função Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Março 19, 2011 Share Postado Março 19, 2011 Faala pessoal do XTibia! Hoje venho aqui postar a primeira função que eu fiz, adicionei na lib e deu certo HAHA. Eu não encontrei nenhum erro, então vai lá a explicação: Utilidade: A função summona um monstro (que não ataca o jogador) e remove o monstro depois de tantos segundos. Foi bem fácil, em data/lib abre o arquivo functions e cola isto no final, ou em algum lugar dele: function doRemoveSummon(cid, name, time) if isMonster(getCreatureByName(name)) then if (type(time) == "number" and time) > 0 then doSummonMonster(cid, name) for _, monsters in ipairs(getCreatureSummons(cid)) do addEvent(doRemoveCreature, time*1000, monsters) end return TRUE end return error("Time must be a number higher than 0!") end return error("Creature not found!") end Então, bem fácil certo? Vamos aos exemplos de uso: Talkaction: function onSay(cid, words, param) if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return TRUE end return doRemoveSummon(cid, param, 10) end Action: function onUse(cid, item) local sec = 30 local mon = 'demon' if getPlayerStorageValue(cid, 15692) - os.time() <= 0 then doRemoveSummon(cid, mon, sec) doSendAnimatedText(getPlayerPosition(cid), "Your pet will die in "..sec.." seconds.", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid, 15692, sec + os.time()) end return TRUE end É isso, bem simples mesmo, espero que ainda não exista algo assim, e lembrando que vai remover todos os summons, porque a função que eu usei é getPlayerSummons. Valeu. Caso queira retirar essa mensagen de error por não encontrar o monstro devido a morte dele, faz o seguinte: retira isso da função(doremovesummon) "doSummonMonster(cid, name)" deixa isso na talkaction ou qualquer outro lugar que summone o monstro. Agora na talkaction ou qualquer outro que summone o monstro faça com que seja direcionado a função addevent() para a sua função(doremovesummon) nela você remove a função addevent() e deixa a doremovecreature() use a estrutura de controle if pra verificar se ainda está summonado o monstro. Além de que o nome da função é doremovesummon() e nela cria um summon pra depois remover o que não condiz com o nome da função. Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Março 19, 2011 Autor Share Postado Março 19, 2011 (editado) O nome da função realmente não importa, se desejar, troque. Segundo, não importa o lugar onde aparecerá o erro, se o erro existir, é claro. Obrigado pela sugestão, mas essa foi a minha idéia inicial e definitiva para esta função. OBS: Acho que é possível fazer o que você falou pela própria função doRemoveSummon. Depois eu tento. EDIT: Precisa quotar todo o tópico? Editado Março 19, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
lucashgas 53 Postado Março 23, 2011 Share Postado Março 23, 2011 Maravilhoso, graças a Deus, estava procurando isso mesmo... Nossa vai ser muito util... ganhou meu REP+ Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados