kevinsz 3 Postado Março 21, 2010 Share Postado Março 21, 2010 (editado) Pessoal.. tava tentando fazer um script que só pode ser executado em uma determinada area.. Olhe as areas.. function onSay(cid) local area = { {x=181, y=28, z=7}, {x=182, y=28, z=7}, {x=182, y=29, z=7}, {x=183, y=28, z=7}, {x=183, y=29, z=7}, {x=183, y=30, z=7}, {x=182, y=30, z=7}, {x=181, y=30, z=7}, {x=181, y=29, z=7} } Como que eu faço pra fazer uma verificação se ta em uma dessas posições? Editado Março 21, 2010 por Focost Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/ Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Março 21, 2010 Share Postado Março 21, 2010 (editado) se tem que fazer isso, eu nao sei se da pra fazer um que cheque todos os sqm mais voce pode fazer varios com essas areas playerposition = {x=181, y=28, z=7}pp = getPlayerPosition(cid) if pp.x == playerposition.x and pp.y == playerposition.y and pp.z == playerposition.z then .... ai se vai fazendo quadradinho por quadradinho por quadradinho Editado Março 21, 2010 por MatheusMkalo Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/#findComment-854874 Compartilhar em outros sites More sharing options...
Kydrai 146 Postado Março 21, 2010 Share Postado Março 21, 2010 (editado) Faz um teste: function onSay(cid) local playerPos = getCreaturePosition(cid) if isInRange(playerPos, {x=181, y=28, z=7}, {x=183, y=30, z=7}) then ta na posição else não ta end return TRUE end A função isInRange verifica se a posição está em uma área. Editado Março 21, 2010 por kydrai Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/#findComment-854989 Compartilhar em outros sites More sharing options...
kevinsz 3 Postado Março 22, 2010 Autor Share Postado Março 22, 2010 (editado) @MatheusMkalo Isso ai eu sei.. Porém o código fica muito extenso.. =/ Mesmo assim valeu por tentar ajudar.. @Kydrai Faz um teste: function onSay(cid) local playerPos = getCreaturePosition(cid) if isInRange(playerPos, {x=181, y=28, z=7}, {x=183, y=30, z=7}) then ta na posição else não ta end return TRUE end A função isInRange verifica se a posição está em uma área. Na hora de fazer funcionar não deu certo =/ [Error - TalkAction Interface] data/talkactions/scripts/teste.lua:onSay Description: data/lib/032-position.lua:2: attempt to index global 'position' (a nil value) stack traceback: data/lib/032-position.lua:2: in function 'isInRange' data/talkactions/scripts/teste.lua:27: in function <data/talkactions/scripts/teste.lua:1> Editado Março 22, 2010 por Focost Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/#findComment-855039 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Março 22, 2010 Share Postado Março 22, 2010 Tenta esse: local area = { {x=181, y=28, z=7}, {x=182, y=28, z=7}, {x=182, y=29, z=7}, {x=183, y=28, z=7}, {x=183, y=29, z=7}, {x=183, y=30, z=7}, {x=182, y=30, z=7}, {x=181, y=30, z=7}, {x=181, y=29, z=7} } function onSay(cid, words) if isInArray(area, getCreaturePosition(cid)) then doPlayerSendTextMessage(cid,20,"Pode.") else doPlayerSendTextMessage(cid,20,"Não pode;") end return TRUE end flw Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/#findComment-855151 Compartilhar em outros sites More sharing options...
kevinsz 3 Postado Março 22, 2010 Autor Share Postado Março 22, 2010 @Apocarai Eu já tinha testado assim, porém no seu script só vai ficar aparecendo Não pode; Mesmo estando em umas das posições.. Fiz até o teste só do seu script.. e mesmo tando na posição aparece não pode; Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/#findComment-855176 Compartilhar em outros sites More sharing options...
satan666 12 Postado Março 26, 2010 Share Postado Março 26, 2010 seria isso. function onSay(cid) local pos,area = getCreaturePosition(cid), local minx,maxx = 181,183 local miny,maxy = 28,30 local z = 7 if (pos.z == z) and (pos.x >= minx and maxx <= pos.x)and (pos.y >= miny and maxy <= pos.y)then return TRUE else return FALSE end return TRUE end Link para o comentário https://xtibia.com/forum/topic/129740-talkaction-s%C3%B3-pode-executar-se-estiver-na-area-correta/#findComment-856090 Compartilhar em outros sites More sharing options...
Posts Recomendados