OT

Maximo De Players Em Uma Area, Script Do Vodkart!

Por othereality, 24 de jan. de 2012 em Archived

ajuda ae!
script
18
1.9k
otherealityO
24 de janeiro de 2012 às 23:40

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 Janeiro 25 por OtheReality

MulizeuM
25 de janeiro de 2012 às 00:15

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

otherealityO
25 de janeiro de 2012 às 00:43

@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 Janeiro 25 por OtheReality

25 de janeiro de 2012 às 00:58

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 Janeiro 25 por Demonbholder

otherealityO
25 de janeiro de 2012 às 01:05

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

25 de janeiro de 2012 às 01:23

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.

otherealityO
25 de janeiro de 2012 às 01:38

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

bonazza20B
25 de janeiro de 2012 às 10:58
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 Janeiro 25 por GeBonazza

otherealityO
25 de janeiro de 2012 às 11:07

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

bonazza20B
25 de janeiro de 2012 às 12:32
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

otherealityO
25 de janeiro de 2012 às 12:58

Veio lê o tópico ai por favor...

Já tentei assim, não funciona.

VincV
25 de janeiro de 2012 às 13:14

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 Janeiro 25 por lordbug99

otherealityO
25 de janeiro de 2012 às 13:39

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'

VincV
25 de janeiro de 2012 às 13:49

sauashasuasusahus tinha posto while com letra maiuscula

ja corrigi la

 

edit

seu script tem um end a mais

Editado Janeiro 25 por lordbug99

25 de janeiro de 2012 às 13:52

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.