Ir para conteúdo

Maximo De Players Em Uma Area, Script Do Vodkart!


othereality

Posts Recomendados

Então eu tava procurando por algo que limitasse o numero de player em uma certa area e encontrei esse script do VodKart...

 

 

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 13731) then
for check_forjax = 217,223 do -- check X começo e final da sala
for check_forjay = 64,65 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.itemid > 0 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"Espere o Jogador sair da forja.")
return TRUE
end
end
end

 

 

 

O Unico problema é que eu queria que desse para ter até 4 player nesse espaço.

e quando eu edito isso:

 

 

if room_forja.itemid > 0 then

 

para isso

 

 

if room_forja.itemid > 3 then

 

 

Da algum bug que o script não funciona, entra quantos quiserem...

 

Alguém sabe porque?!

 

agredeço desde já TODAS as respostas!

Editado por OtheReality
Link para o comentário
Compartilhar em outros sites

entra quantas pessoas quizerem porque vc colocou o simbolo de mair que o >, para ser uma quantia deveria ter o sinal de 2 igual ==

 

tente assim!

 

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 13731) then
for check_forjax = 217,223 do -- check X começo e final da sala
for check_forjay = 64,65 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.itemid == 0 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"Espere o Jogador sair da forja.")
return TRUE
end
end
end

Link para o comentário
Compartilhar em outros sites

@mulizeu

 

Obrigado por tentar ajudar, mas é que funciona assim:

 

 

room_forja.itemid

isso(/\) verifica os players que estão na área indicada acima no script.

 

Então a linha:

if room_forja.itemid > 0 then

 

Cria a seguinte condição:

Se na área indicada tiver mais do que ninguém(zero) então:

Ai o que vem a seguir impede o player de passar pelo tile.

fazendo com que só tenha um player por vez na sala.

 

até ai está funcionando.

 

divisor.png

 

O problema é que tentei alterar para:

if room_forja.itemid > 3 then

 

Criando a seguinte condição:

Se na área indicada tiver mais do que 3 players(ou seja até 4) então:

...

Não funcionou o script parou de limitar os player na área.

 

 

Entende?!

Editado por OtheReality
Link para o comentário
Compartilhar em outros sites

coloca uma variável e vai aumentando ela cada vez que acha um player, ai cada vez que achar um player vc faz uma checagem se a variável ta >= 4 e pronto.

 

obs: não ta faltando uns ends ai no seu script? '-'

Editado por Demonbholder
Link para o comentário
Compartilhar em outros sites

kkk é ta faltando mesmo, aqui ta certinho é que eu peguei pela metade...

 

 

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 13731) then
for check_forjax = 217,223 do -- check X começo e final da sala
for check_forjay = 64,65 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.itemid == 0 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"Espere o Jogador sair da forja.")
return TRUE
end
end
end
end
return TRUE
end

agora acho que ta certinho né?

 

se pode fazer pra mim?

a alteração que você falou?

 

To aprende ainda de script eu consigo interpretar e dar umas editadas mas fazer ainda não...

Link para o comentário
Compartilhar em outros sites

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 13731) then
a = 0
for check_forjax = 217,223 do -- check X começo e final da sala
for check_forjay = 64,65 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.itemid == 0 then
a = a +1
if a >= 4 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"Espere o Jogador sair da forja.")
return TRUE
end
end
end
end
end
return TRUE
end

 

Tenta assim.

Link para o comentário
Compartilhar em outros sites

@Demonbholder

 

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 23036) then
a = 0
for check_forjax = 1035,1041 do -- check X começo e final da sala
for check_forjay = 1023,1027 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.itemid == 0 then
a = a +1
if a >= 4 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"já tem quatro jogadores na Dungeon.")
return TRUE
end
end
end
end
end
return TRUE
end

 

Eu só alterei as positions, a actionid e a frase do sendcancel.

 

Não deu certo mesmo não tendo ninguém ele fala que já ta cheio =/

Link para o comentário
Compartilhar em outros sites


function onStepIn(cid, item, position, fromPosition)
for x = 1035, 1041 do
for y = 1023, 1027 do
local m = getTopCreature({x=x, y=y, z=7}).uid 
if m ~= 0 and isPlayer(m) then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"Espere o Jogador sair da forja.")
end
end
end
return TRUE
end

Editado por GeBonazza
Link para o comentário
Compartilhar em outros sites


function onStepIn(cid, item, position, fromPosition)
for x = 1035, 1041 do
for y = 1023, 1027 do
local m = getTopCreature({x=x, y=y, z=7}).uid 
if isPlayer(m) and m >= 4 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"existe jogadores fazendo a quest.")
end
end
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

tenta usa a função Getuidsinarea(Extr1, Extr2) acho que ela vai servi bem para isso

http://www.xtibia.co...reaextr1-extr2/

tenta usa ela assim

Extr1 = ({x = 1035, y = 1023, z = 7 })
Extr2 = ({ x =1041, y = 1027, z = 7 })
local L = 0
local I = 0
R = Getuidsinarea(Extr1, Extr2)
while L <= #R do
L = L + 1
if isPlayer(R[L]) then
I = I + 1
end
end

acho que isso deve funcionar pra verificar os players,vol almoça depois eu volto(apenas lempbrado isso seria apenas para verificar quantos players tem la)

Editado por lordbug99
Link para o comentário
Compartilhar em outros sites

Ficaria assim?

 

 

function onStepIn(cid, item, position, fromPosition)

Extr1 = ({x = 1035, y = 1023, z = 7 })
Extr2 = ({ x =1041, y = 1027, z = 7 })
local L = 0
local I = 0
R = Getuidsinarea(Extr1, Extr2)
While L <= #R do
L = L + 1
if isPlayer(R[L]) then
I = I + 1
if I >= 4 then 
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"existe jogadores fazendo a quest.")
else doPlayerSendText(cid, 23, "Seja rapido,mas tome cuidado!")

end 
end 
end 
end 
return TRUE 
end

 

deu esse erro:

 

 

 

[25/01/2012 13:36:41] [Error - LuaScriptInterface::loadFile] data/movements/scripts/cha1tp2.lua:8: '=' expected near 'L'

[25/01/2012 13:36:41] [Warning - Event::loadScript] Cannot load script (data/movements/scripts/cha1tp2.lua)

[25/01/2012 13:36:41] data/movements/scripts/cha1tp2.lua:8: '=' expected near 'L'

Link para o comentário
Compartilhar em outros sites

sauashasuasusahus tinha posto while com letra maiuscula

ja corrigi la

 

edit

seu script tem um end a mais

Editado por lordbug99
Link para o comentário
Compartilhar em outros sites

cara, é maior que 0

 

 

function onStepIn(cid, item, position, fromPosition)

if (item.actionid == 23036) then
a = 0
for check_forjax = 1035,1041 do -- check X começo e final da sala
for check_forjay = 1023,1027 do -- check Y começo e final da sala
forjapos = {x=check_forjax, y=check_forjay, z=7, stackpos=253}
room_forja = getThingfromPos(forjapos )
if room_forja.uid > 0 then
a = a +1
if a >= 4 then
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doPlayerSendCancel(cid,"já tem quatro jogadores na Dungeon.")
return TRUE
end
end
end
end
end
return TRUE
end

 

Tenta assim.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...