RI

Limite de player por sala

Por RigBy, 25 de jun. de 2015 em Actions e Talkactions

otserv
tibia
script
12
4.4k
RigByR
25 de junho de 2015 às 16:57

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 Julho 29 por Poccnn

BrunoB
25 de junho de 2015 às 17:04

É um excelente script, parabéns!

 

Obrigado por compartilhar conosco.

RigByR
25 de junho de 2015 às 18:00

Obrigado :D

:hi:

HeelNoxH
25 de junho de 2015 às 18:26

Parabéns bro, evoluiu muito desde a época.

VodkartV
26 de junho de 2015 às 07:05

esse código é bom para quem gosta de fazer quest, exemplo a firewalk boots

RigByR
26 de junho de 2015 às 11:01

#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 Junho 26 por RigBy

2 meses depois...
System HardcoreS
04 de agosto de 2015 às 12:48

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.

RigByR
04 de agosto de 2015 às 13:37

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.

4 semanas depois...
MartelixM
26 de agosto de 2015 às 09:28

Simples, mas útil.

Deu uma vontade de volta a mexer com OT, pena que parei na versão 8.60 (0.4) kkk. Agora TFS 1.0+, tenho que desenferrujar...

Obrigado pelo script.

1 ano depois...
PedroshowP
29 de julho de 2017 às 17:04

Tem como fazer isso em portas ?

1 mês depois...
RajasR
08 de agosto de 2017 às 21:38
Em 29/07/2017 at 17:04, Pedroshow disse:

Tem como fazer isso em portas ?

@UP

2 anos depois...
KaboFlowK
25 de janeiro de 2020 às 22:43
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)