OriGM 25 Postado Novembro 1, 2013 Share Postado Novembro 1, 2013 (editado) Olá galerinha,queria pedir um script. Script: Vocação x não pode atacar tais monstros. Função: Por exemplo,um druid não pode atacar os monstros x ,y e z ,onde fosse configuravel os monstros que não pode ser atacado. + REP quem puder ajudar. E tenho outro tópico tambem de duvida,quem souber e puder responder ai vai o link. http://www.xtibia.com/forum/topic/223360-talkaction-que-consiga-usar-item/ Editado Novembro 1, 2013 por OriGM Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/ Compartilhar em outros sites More sharing options...
0 zipter98 1102 Postado Novembro 1, 2013 Share Postado Novembro 1, 2013 (editado) Eu tentei fazer uma coisa meio louca aqui, fiz rapidinho, então não tenho a mínima ideia se vai funcionar :s function onTarget(cid, target) local voca_id = xxx --Coloque aqui o ID da vocation. local monsters = {"xxx", "yyy", "zzz"} --Monstros que não poderão ser atacados. for a, b in ipairs(monsters) do if isPlayer(cid) and getPlayerVocation(cid) == voca_id then if getCreatureTarget(cid) == b then return false end end end return true end Editado Novembro 1, 2013 por zipter98 Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578183 Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 1, 2013 Share Postado Novembro 1, 2013 Zipter, acho que você deveria incluir a tag do creaturescripts e mencionar que o cara deveria registrar no login.lua. Além disso, acho que fazer algo bem parecido com o seu, mas usando onCombat ficaria mais abrangente. -- Ids das vocations separadas por vírgulas (nesse exemplo 2 - druid e 6 - elder druid) local vocation_ids = {2, 6} -- nome dos monstros que não poderão ser atacados, separados por vírgulas e entre aspas local monsterNames = {"demon", "hydra", "rat"} function onCombat(cid, target) if not isPlayer(cid) or not isMonster(target) then return true end if isInArray(vocation_ids, getPlayerVocation(cid)) and isInArray(monsterNames, getCreatureName(target):lower()) then return false end return true end Cria um arquivo com esse código em creaturescripts/scripts, chamado vocnoattack.lua. Adicione essa tag em creaturescripts.xml: <event type="combat" name="VocNot" event="script" value="vocnoattack.lua"/> E adicione essa linha perto dos demais registerCreatureEvent no arquivo creaturescripts/scripts/login.lua registerCreatureEvent(cid, "VocNot") Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578192 Compartilhar em outros sites More sharing options...
0 zipter98 1102 Postado Novembro 1, 2013 Share Postado Novembro 1, 2013 Sobre a tag e registrar no login.lua, eu não achei muito necessário informar pq é algo, suponho eu, meio 'óbvio'. Mas tem razão, eu deveria ter incluído estas informações no meu comentário anterior :x E sobre o onTarget q coloquei, na verdade, como eu nunca fiz algo com onCombat e onTarget, não sabia o que seria mais adequado colocar. Ai tirei como base um script que encontrei aqui no fórum como base e.e De qualquer maneira, quais os erros que cometi no meu script? Saberia dizer? Pra não cometer o mesmo erro na próxima vez e.e Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578226 Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 É óbvio para muitos de nós, já acostumados com isso. Mas para iniciantes e OT-Admins sem intimidade com scripting, não é, infelizmente. O que você fez está certo, mas tem um furo: vai impedir que o jogador torne o monstro seu alvo, mas não vai impedir que ele dê dano no mesmo. Ele ainda poderia receber dano de magias de área. Já com onCombat, qualquer forma de combate é suprimida. Além disso, você limitou a uma vocação por script, deixando mais complicado de editar para as promotions (já que elder druid deriva de druid, creio que as mesmas regras serão aplicadas). Fora isso, só achei mais simples usar a função isInArray, que é basicamente esse loop que você fez. Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578268 Compartilhar em outros sites More sharing options...
0 Killua 389 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 Pra checar as vocaçoes tambem é facil usar, por exemplo, o isSorcerer(cid) que ja engloba sorcerer e master sorcerer. Ai como cada vocaçao vai ter restriçao a diferentes tipos de monstros, fica mais facil usar o if isSorcerer(cid) then elseif isDruid(cid) then.......... Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578286 Compartilhar em outros sites More sharing options...
0 fitaisolante 24 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 Zipter, tenta dar uma lida nas aulas do Roksas.. Lá você aprende o básico para se aplicar em um código: - Identação - Uso de tabelas e funções. Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578315 Compartilhar em outros sites More sharing options...
0 Skymagnum 234 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 Cara, o mais certo é usar onStatsChange, do que onCombat. Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578321 Compartilhar em outros sites More sharing options...
0 OriGM 25 Postado Novembro 2, 2013 Autor Share Postado Novembro 2, 2013 Zipter, acho que você deveria incluir a tag do creaturescripts e mencionar que o cara deveria registrar no login.lua. Além disso, acho que fazer algo bem parecido com o seu, mas usando onCombat ficaria mais abrangente. -- Ids das vocations separadas por vírgulas (nesse exemplo 2 - druid e 6 - elder druid) local vocation_ids = {2, 6} -- nome dos monstros que não poderão ser atacados, separados por vírgulas e entre aspas local monsterNames = {"demon", "hydra", "rat"} function onCombat(cid, target) if not isPlayer(cid) or not isMonster(target) then return true end if isInArray(vocation_ids, getPlayerVocation(cid)) and isInArray(monsterNames, getCreatureName(target):lower()) then return false end return true end Cria um arquivo com esse código em creaturescripts/scripts, chamado vocnoattack.lua. Adicione essa tag em creaturescripts.xml: <event type="combat" name="VocNot" event="script" value="vocnoattack.lua"/> E adicione essa linha perto dos demais registerCreatureEvent no arquivo creaturescripts/scripts/login.lua registerCreatureEvent(cid, "VocNot") Deu certinho o seu Omega,valeu mesmo! Eu tinha feito conseguido fazer sozinho um script,mas o problema era que se por exemplo se tivesse um "rat" me atacando,que é um monstro que eu nao podia atacar,e tivesse um outro monstro que nao fosse o rat,eu nao podia atacar. Nao sabia como colocar pra só nao atacar o monstro configurado,valeu agora eu sei! Ah e eu sei como registrar o codigo,pelo menos isso né. rsrs De precaução coloquei no script,onCombat ,onAttack e onTarget,só pra garantir que nao vai ter brexas para atacar,não tem nenhum problema né? Não deu erro nenhum por enquanto. rs Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578342 Compartilhar em outros sites More sharing options...
0 zipter98 1102 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 Keilost, identação eu faço bunitin e talz no notepad++, mas quando eu passo pra cá o script, ele volta ao 'normal'. Ai como sou meio nb, não sei como passar pra cá já identado ._. se alguém quiser me ajudar, ty Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578364 Compartilhar em outros sites More sharing options...
0 Killua 389 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 Usa o #####, ele identa automaticamente e quando passo pra ca vem certinho Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578476 Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 Tópico movido para a seção de dúvidas e pedidos resolvidos. De precaução coloquei no script,onCombat ,onAttack e onTarget,só pra garantir que nao vai ter brexas para atacar,não tem nenhum problema né? Não deu erro nenhum por enquanto. rs Tenta só com onCombat pra não abusar de creaturescripts, que são executados muitas e muitas vezes. Mas não, fora isso, não tem problema. Link para o comentário https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/#findComment-1578583 Compartilhar em outros sites More sharing options...
Pergunta
OriGM 25
Olá galerinha,queria pedir um script.
Script: Vocação x não pode atacar tais monstros.
Função: Por exemplo,um druid não pode atacar os monstros x ,y e z ,onde fosse configuravel os monstros que não pode ser atacado.
+ REP quem puder ajudar.
E tenho outro tópico tambem de duvida,quem souber e puder responder ai vai o link.
http://www.xtibia.com/forum/topic/223360-talkaction-que-consiga-usar-item/
Editado por OriGMLink para o comentário
https://xtibia.com/forum/topic/223390-voca%C3%A7%C3%A3o-x-n%C3%A3o-pode-atacar-tal-monstro/Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados