Ir para conteúdo

[Talkaction] Só Pode Executar Se Estiver Na Area Correta...


kevinsz

Posts Recomendados

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 por Focost
Link para o comentário
Compartilhar em outros sites

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 por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

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 por kydrai
Link para o comentário
Compartilhar em outros sites

@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 por Focost
Link para o comentário
Compartilhar em outros sites

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
Compartilhar em outros sites

@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
Compartilhar em outros sites

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
Compartilhar em outros sites

×
×
  • Criar Novo...