Postado Dezembro 10, 2014 10 anos Fiz esse script que quando o player ataca um monstro, sai um efeito no player e preciso que quando, por exemplo, um knight que está olhando para cima e quando ele ataca um bixo atras ou de um lado ou do outro ele automaticamente vira para onde o bixo está.. Mas esse script que fiz tem um problema, por exemplo, eu sou knight e quando eu pego o target ele já solta o efeito a uma distancia de varios sqms, e seria ideal que só quando atacasse grudado com distancia de 1 sqm ou só quando saísse o melee (ataque físico) saísse o efeito e ele virasse.. function onAttack(cid, var)if getPlayerVocation(cid) == 1 then doSendMagicEffect(getPlayerPosition(cid), 10) end return true end Umas variáveis assim seriam legais, eu n sei coloca-las: \/ uma suposição if meleeAttack(cid, vocation, melee ehxaust, sqms) then doSendMagicEffect(getPlayerPosition(cid), 10) elseif ...dai vem a parte da variável de virar o player pro lado que atacou o monstro... end end return true end E nas outras a mesma coisa, n sei se da certo de ficar tudo dentro do mesmo script, acho que não.. As possíveis variáveis de distanceAttack \/ uma suposição if distanceAttack(cid, vocation, distance ehxaust, sqms) then doSendMagicEffect(getPlayerPosition(cid), 10) elseif ...dai vem a parte da variável de virar o player pro lado que atacou o monstro... end end return true end As possíveis variáveis de magicSkill \/ uma suposição if magicSkill(cid, vocation, skill ehxaust, sqms) then doSendMagicEffect(getPlayerPosition(cid), 10) elseif ...dai vem a parte da variável de virar o player pro lado que atacou o monstro... end end return true end A função onAttack e onCombat funcionam mesmo só de atacar e mesmo só de soltar uma magia.. Eu n entendo muito bem ainda de mexer nessas variaveis, mas se existisse uma função onMelee ou onSpell, seria legal pra uma biblioteca(LIB). Editado Dezembro 10, 2014 10 anos por aq snuff (veja o histórico de edições)
Postado Dezembro 10, 2014 10 anos Tente assim: vá em data/creaturescripts/target crie um arquivo chamado target cole isso: local effect = 30 -- id do magic effect function onAttack(cid, target) if meleeAttack(cid, vocation, melee ehxaust, sqms) then if isCreature(cid) and isCreature(target) then dir = getDirectionTo(getCreaturePosition(cid), getCreaturePosition(target)) doSendMagicEffect(getCreaturePosition(cid), effect) doCreatureSetLookDirection(cid, dir) endreturn trueend agóra em creaturescripts.xml <event type="attack" name="targetCreature" script="target.lua"/> adiciona éssa linha em login.lua: registerCreatureEvent(cid, "targetCreature") OBS: apenas peguei o script do @xWhiteWolf e editei, mas não testei. Editado Dezembro 10, 2014 10 anos por Dieguiin XP (veja o histórico de edições) Att,Dieguiin XP »»http://baiakfull.com/««
Postado Dezembro 10, 2014 10 anos Autor Testarei. Eu uso tfs 036 8.54 1º erro: Consegui fazer funcionar com esse script "crú" para testar mas o player vira só quando estiver na reta, se eu tiver em qualquer diagonal, o player n vira.. E falta também as váriaveis de distancia, pq quando eu ataco de longe ele já muda de outfit, inves de ser soh no ataque na mão(melee) de distancia 1(sqm)function onAttack(cid, target) if isCreature(cid) and isCreature(target) then dir = getDirectionTo(getCreaturePosition(cid), getCreaturePosition(target)) doCreatureSetLookDirection(cid, dir) endreturn trueend Editado Dezembro 10, 2014 10 anos por aq snuff (veja o histórico de edições)
Postado Dezembro 10, 2014 10 anos não tem como virar na diagonal champz, o dieguin esqueceu do then na terceira linha e if melee não existe, o certo seria getDistanceBetween(firstPosition, secondPosition) entre as posições do cid e do target > ou < que alguma coisa. Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Dezembro 10, 2014 10 anos Autor Eu sei que n da pra virar na diagonal vou dar um exemplo: E como que ficaria esse getDistanceBetween(firstPosition, secondPosition) entre as posições do cid e do target? Com as variaveis editaveis de sqm e vocation e ehxaust? function getDistanceBetween(fromPosition, toPosition) local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y) local diff = math.max(x, y) if(fromPosition.z ~= toPosition.z) then diff = diff + 9 + 6 end /\ n entendo como usar essa tabela.. Editado Dezembro 10, 2014 10 anos por aq snuff (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.