Ir para conteúdo

Featured Replies

Postado

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 por aq snuff (veja o histórico de edições)

Resolvido por xWhiteWolf

Ir para solução
  • Respostas 12
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Tente assim: vá em data/creaturescripts/target crie um arquivo chamado target  cole isso: agóra em creaturescripts.xml adiciona éssa linha em login.lua: OBS: apenas peguei o script do @xWhiteWol

  • cara não entendi nada doque vc falou/fez, ele não vira na diagonal pq não dá e não é bug porque se vc estiver com um player normal o bixo vai se movimentar ao seu redor e fazer você virar. Quando eu f

  • Ok, brigado.. Acho que da pra por se o player tiver em x sqm de distancia executar o scrpit todo, se nao, soh a mensagem de not possible ou simplesmente nada(que eh melhor melhor). De qualquer forma a

Postado

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)
    end
return true
end

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 por Dieguiin XP (veja o histórico de edições)

Att,
Dieguiin XP

 

»»http://baiakfull.com/««

Postado
  • Autor

Testarei. Eu uso tfs 036 8.54 
1º erro:

242z8ec.jpg


 


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)
    end
return true
end

Editado por aq snuff (veja o histórico de edições)

Postado

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

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

Eu sei que n da pra virar na diagonal vou dar um exemplo:

x2m04p.jpg

 

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 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo