Ir para conteúdo
  • 0

blaster_kid

Pergunta

Bom dia galera do Xtibia, estou com dificuldade em um script se alguém puder me ajudar fico muito grato.

 

O script é esse:

a1 = {x=390, y=618, z=6} --canto de cima do lado direito
a2 = {x=398, y=627, z=6} --canto de baixo do lado esquerdo

local id = 1543 
local config = {
a3 = {x = 399, y = 622, z = 6, stackpos=1},
a4 = {x = 399, y = 623, z = 6, stackpos=1},
a5 = {x = 399, y = 624, z = 6, stackpos=1},
a6 = {x = 524, y = 626, z = 6, stackpos=1},
a7 = {x = 524, y = 627, z = 6, stackpos=1},
a8 = {x = 524, y = 628, z = 6, stackpos=1},
a9 = {x = 529, y = 626, z = 6, stackpos=1}
}
function onStepIn(cid, item, frompos, item2, topos)
for x = a1.x, a2.x do
for y = a1.y, a2.y do
if isPlayer(getThingFromPos({x=x, y=y, z=a1.z, stackpos=253}).uid) then

grade1 = getThingFromPos(config.a3)
grade2 = getThingFromPos(config.a4)
grade3 = getThingFromPos(config.a5)
grade4 = getThingFromPos(config.a6)
grade5 = getThingFromPos(config.a7)
grade6 = getThingFromPos(config.a8)
field1 = getThingFromPos(config.a9)
doRemoveItem(grade1.uid,1)
doRemoveItem(grade2.uid,1)
doRemoveItem(grade3.uid,1)
doRemoveItem(grade4.uid,1)
doRemoveItem(grade5.uid,1)
doRemoveItem(grade6.uid,1)
doRemoveItem(field1.uid,1)

doPlayerSendTextMessage(cid, 22, 'LIBERADO.')
end
end
end
return 1
end

Ele faz a checagem se tem player em uma determinada área e remove as grades.

O problema é que ele só checa se tem player e eu preciso que cheque se tem uma quantidade x (Ex: só remova as grades depois que tiver 5 players na área)

Sera que alguém consegue acertar esto pra mim?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

teste isso...

 

local a1 = {x=390, y=618, z=6} --canto de cima do lado direito

local a2 = {x=398, y=627, z=6} --canto de baixo do lado esquerdo

local players = {}

 

local id = 1543

local config = {

a3 = {x = 399, y = 622, z = 6, stackpos=1},

a4 = {x = 399, y = 623, z = 6, stackpos=1},

a5 = {x = 399, y = 624, z = 6, stackpos=1},

a6 = {x = 524, y = 626, z = 6, stackpos=1},

a7 = {x = 524, y = 627, z = 6, stackpos=1},

a8 = {x = 524, y = 628, z = 6, stackpos=1},

a9 = {x = 529, y = 626, z = 6, stackpos=1}

}

function onStepIn(cid, item, frompos, item2, topos)

for x = a1.x, a2.x do

for y = a1.y, a2.y do

local sid = getThingFromPos({x=x, y=y, z=a1.z, stackpos=253}).uid

if isPlayer(sid) then

table.insert(players, sid)

end

end

end

 

if #players >= 5 then

for e, f in pairs(config) do

doRemoveItem(getThingFromPos(f).uid, 1)

end

doPlayerSendTextMessage(cid, 22, 'LIBERADO.')

end

return true

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Quase deu certo amigo.

 

o único problema é o seguinte:

 

Se o player entrar e sair 5 vezes no tile com a uniqueid mesmo com um único player na posição de checagem ele remove as grades

Link para o comentário
Compartilhar em outros sites

  • 0

hum.. interesante isso.. hehe tente esse...

 

local a1 = {x=390, y=618, z=6} --canto de cima do lado direito

local a2 = {x=398, y=627, z=6} --canto de baixo do lado esquerdo

local players = {}

 

local id = 1543

local config = {

a3 = {x = 399, y = 622, z = 6, stackpos=1},

a4 = {x = 399, y = 623, z = 6, stackpos=1},

a5 = {x = 399, y = 624, z = 6, stackpos=1},

a6 = {x = 524, y = 626, z = 6, stackpos=1},

a7 = {x = 524, y = 627, z = 6, stackpos=1},

a8 = {x = 524, y = 628, z = 6, stackpos=1},

a9 = {x = 529, y = 626, z = 6, stackpos=1}

}

function onStepIn(cid, item, frompos, item2, topos)

for x = a1.x, a2.x do

for y = a1.y, a2.y do

local sid = getThingFromPos({x=x, y=y, z=a1.z, stackpos=253}).uid

if isPlayer(sid) and not isInArray(players, sid) then

table.insert(players, sid)

end

end

end

 

if #players >= 5 then

for e, f in pairs(config) do

doRemoveItem(getThingFromPos(f).uid, 1)

end

doPlayerSendTextMessage(cid, 22, 'LIBERADO.')

else

players = {}

end

return true

end

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...