Ir para conteúdo

Limite de player por sala


RigBy

Posts Recomendados

Limite de player por sala

 

Introdução:

Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos.

O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada.

 

Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe.

 

Caso a sala esteja lotada.

dLc4IlT.png

Caso não.

U6DSuK0.png

 

Em data/movement/script, crie 

LimiteArea.lua e adicione.

Spoiler
-- Do not remove the credits ---- [MOVEEVENT] Limite de player por sala ---- Developed by Rigby ---- Especially for the Xtibia.com -- function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)local config = {-- Config ---- [ACTIONID] = {area = getPlayersInArea(AREA QUE IRA CHECAR (FROMPOS,TOPOS)), amountOfPlayers = QUANTIDADE QUE CABE, teleport = PARA ONDE SERA TELEPORTADO}[213123] = {area = getPlayersInArea({x = 1030, y = 1020, z = 7}, {x = 1040, y = 1030, z = 7}), amountOfPlayers = 1, teleport = {x = 1037, y = 1025, z = 7}},[543543] = {area = getPlayersInArea({x = 1037, y = 1025, z = 7}, {x = 1041, y = 1025, z = 7}), amountOfPlayers = 2, teleport = {x = 1036, y = 1025, z = 7}},-- Config --}     if config[item.actionid] then        if #config[item.actionid].area < config[item.actionid].amountOfPlayers then            doTeleportThing(cid, config[item.actionid].teleport, false)            doPlayerSendTextMessage(cid, 25, "Welcome")        else            doPlayerSendTextMessage(cid, 25, "The room already reached its limit "..config[item.actionid].amountOfPlayers.." player 's wait someone out .")            doTeleportThing(cid, fromPosition)        end    endreturn trueend function getPlayersInArea(fromPos, toPos) -- Function made by Vodkartlocal players = {}    for _, pid in ipairs(getPlayersOnline()) do        if isInRange(getPlayerPosition(pid), fromPos, toPos) then            table.insert(players, pid)        end    end    return playersend

 

 
Em movement/movement.xml
Adicione essa tag
 
Spoiler
<movevent type="StepIn" actionid="213123;543543:ACTIONID" event="script" value="LimiteArea.lua"/>

 

 

E depois adicionar o actionid no piso ou teleport pelo mapa editor.
O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda.
Caso você adicione mais locais você terá que adicione na tag também.
 
 
 

 

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

#DarkHell

Obrigado :D

 

#Vodkart

Sim, pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro time acabe.

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

  • 1 month later...

Junto com a área de checagem, poderia ser posto uma contagem em segundos para remover o player da área. Evitando assim que se houver perda de conexão do player ele fique trapando a sala até que o char relogue.

 

De qualquer modo é um belo script.

Link para o comentário
Compartilhar em outros sites

Isso da para se resolve de varias maneiras como deixa a sala anti-logout ou adicionar uma storage no player para caso ele logue e tenha aquela storage ele seja expulso da sala.

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • 1 year later...
  • 2 weeks later...
  • 2 years later...
Em 25/06/2015 em 14:57, RigBy disse:

Limite de player por sala

 

Introdução:

Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos.

O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada.

 

Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe.

 

Caso a sala esteja lotada.

dLc4IlT.png

Caso não.

U6DSuK0.png

 

Em data/movement/script, crie 

LimiteArea.lua e adicione.

  Ocultar conteúdo


-- Do not remove the credits ---- [MOVEEVENT] Limite de player por sala ---- Developed by Rigby ---- Especially for the Xtibia.com -- function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)local config = {-- Config ---- [ACTIONID] = {area = getPlayersInArea(AREA QUE IRA CHECAR (FROMPOS,TOPOS)), amountOfPlayers = QUANTIDADE QUE CABE, teleport = PARA ONDE SERA TELEPORTADO}[213123] = {area = getPlayersInArea({x = 1030, y = 1020, z = 7}, {x = 1040, y = 1030, z = 7}), amountOfPlayers = 1, teleport = {x = 1037, y = 1025, z = 7}},[543543] = {area = getPlayersInArea({x = 1037, y = 1025, z = 7}, {x = 1041, y = 1025, z = 7}), amountOfPlayers = 2, teleport = {x = 1036, y = 1025, z = 7}},-- Config --}     if config[item.actionid] then        if #config[item.actionid].area < config[item.actionid].amountOfPlayers then            doTeleportThing(cid, config[item.actionid].teleport, false)            doPlayerSendTextMessage(cid, 25, "Welcome")        else            doPlayerSendTextMessage(cid, 25, "The room already reached its limit "..config[item.actionid].amountOfPlayers.." player 's wait someone out .")            doTeleportThing(cid, fromPosition)        end    endreturn trueend function getPlayersInArea(fromPos, toPos) -- Function made by Vodkartlocal players = {}    for _, pid in ipairs(getPlayersOnline()) do        if isInRange(getPlayerPosition(pid), fromPos, toPos) then            table.insert(players, pid)        end    end    return playersend

 

 
Em movement/movement.xml
Adicione essa tag
 
  Ocultar conteúdo


<movevent type="StepIn" actionid="213123;543543:ACTIONID" event="script" value="LimiteArea.lua"/>

 

 

E depois adicionar o actionid no piso ou teleport pelo mapa editor.
O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda.
Caso você adicione mais locais você terá que adicione na tag também.
 
 
 

 

 

 

[25/01/2020 19:42:38] [Warning - Event::loadScript] Event onStepIn not found (data/movements/scripts/Tower/Players 1.lua)

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...