Ir para conteúdo

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
https://xtibia.com/forum/topic/179061-maximo-de-players-em-uma-area-script-do-vodkart/
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

@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

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

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

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.

@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 =/


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

@GeBonazza

 

Mas eu quero que de para entrar até 4 player!

Sei que se veio pelo outro tópico, mas da uma olhada no primeiro post aqui desse...


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

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

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'

sauashasuasusahus tinha posto while com letra maiuscula

ja corrigi la

 

edit

seu script tem um end a mais

Editado por lordbug99

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.

×
×
  • Criar Novo...