Ir para conteúdo
  • 0

Teleport Limit Player


RodriigoRobson

Pergunta

- Boa noite Galera, eu estou querendo um Script de Tile-Teleport com um Limite de Player ,tipo o Teleport de Eventos que precisa de 20 Players Para começar o Evento.

 

- Mas eu Quero que no Teleport fica Aparecendo um "doSendAnimatedText&quot" Mostrando o Numero de Players que estao dentro dessa Area .

 

- E igual esse aki \/ Mais nao esta Funcionando o Script =s

 

 

function onStepIn(cid, item, position, fromPosition)

local from,to,players,limit = {x=, y=, z=}, {x=, y=, z=},{},8

for _, pid in ipairs(getPlayersOnline()) do

if isInRange(getCreaturePosition(pid), from, to) then

table.insert(player, pid)

end

end

if #players >= limit then

doTeleportThing(cid, fromPosition, true)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"This training room is already full!")

doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)

return true

end

return true

end

 

 

- Se Alguem Ajudar +Rep

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

5 respostass a esta questão

Posts Recomendados

  • 0

o Evento e um evento de invasão?! se sim utilize um Mods fica mais leve e simples!

 

Vá na pasta Mods e faça um arquivo Arena.xml e ponha isto dentro!

 

 

 

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Arena" version="1.0" author="DrakyLucas" contact="XTibia" enabled="yes">
<config name="arena_config"><![CDATA[
config = {
delay = 30, -- tempo de um level para o outro
posicaoPlayer = {x = 387,y = 25,z = 7}, -- posição q o player vai cair dps de entra no TP
posicaoArena = {{x = 380,y = 19,z = 7},{x = 394,y = 32,z = 7}},
premio = {
{10127,1},
{5785,1},
}, -- ID, Quantidade... só aceita de 1 a 100 por vez, e você pode adicionar quantos itens quiser.
storage = 15444, -- não mecha..
posicaoTp = {x = 243, y = 46, z = 7}, -- posicao que o teleporte vai aparecer
acesso = 3, -- acesso minimo para ser ignorado pelo evento, e o mesmo acesso para poder inicializa-lo
}
-- você pode adicionar quantos leveis desejar
-- [NumeroDoLevel] = {{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade}},
leveis = {
[1] = {{"Morgaroth",2}},
[2] = {{"ghazbaran",2},{"ferumbras",2}},
[3] = {{"Infernatil",2}},
[4] = {{"infernatil",1},{"ferumbras",2}},
[5] = {{"ghazbaran",2},{"morgaroth",2},{"Ferumbras",2}},
}
function abrirTeleport(n)
doItemSetAttribute(doCreateItem(1387, config.posicaoTp), "aid", 2941) -- cria o tp e deixa aid 2941
doBroadcastMessage("O Evento arena vai começar! teleport foi aberto e faltam ".. n .. " pessoas para o evento iniciar!")
doSetStorage(config.storage, n)
end
function fecharTPeAguardarEvento()
doRemoveItem(getTileItemById(config.posicaoTp, 1387).uid,100)
doBroadcastMessage("O evento ja concluiu " .. #getPlayersInArena() .. " players e começará em " .. config.delay .. " segundos!")
addEvent(evento,config.delay*1000,1)
end
function getPlayerHealth(cid)
doPlayerSave(cid)
local PlayerInfo = db.getResult("SELECT `health` FROM `players` WHERE `id` = " .. getPlayerGUID(cid))
return PlayerInfo:getDataInt("health")
end
function HaveCreatureArena(area, remove, clean) -- função do Vodkart
for x = area[1].x - 1, area[2].x + 1 do
for y = area[1].y - 1, area[2].y + 1 do
local pos = {x=x, y=y, z=area[1].z}
local m = getTopCreature(pos).uid
if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end
if clean ~= false then doCleanTile(pos, false) end
end
end
end
function resetEvento()
doSetStorage(config.storage, -1)
end
function criarMonstros(lv)
local monstro = leveis[lv]
local area = {config.posicaoArena[1],config.posicaoArena[2]}
for i = 1,#monstro do
for k=1,monstro[2]do
pos = {x=math.random(area[1].x,area[2].x), y=math.random(area[1].y,area[2].y), z=area[1].z}
monstrinho = doCreateMonster(monstro[1], pos)
registerCreatureEvent(monstrinho, "removerCorpse")
end
end
end
function evento(i)
if #getPlayersInArena() == 0 then
doBroadcastMessage("Ninguém sobreviveu a arena =/")
doBroadcastMessage("O evento acabou!")
HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) -- remove monstros, itens da arena
resetEvento()
return true
end
if i == (#leveis +1) then
HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true)
doBroadcastMessage("Evento finalizado, " .. #getPlayersInArena() .. " sobreviveram ao evento!")
for _, pid in ipairs(getPlayersInArena()) do
doPlayerSendTextMessage(pid,22,"Parabéns, você sobreviveu ao evento!")
addItens(pid)
doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid)))
end
resetEvento()
return true
end
for _, pid in ipairs(getPlayersInArena()) do
doPlayerSendTextMessage(pid,22,"Nivel " .. i .. " !!!")
end
criarMonstros(i)
addEvent(evento,config.delay*1000,i+1)
end
function addItens(pid)
for i=1,#config.premio do
doPlayerAddItem(pid,config.premio[1],config.premio[2])
end
doPlayerSendTextMessage(pid,22,"Parabéns, você recebeu seus premios!")
end
function getPlayersInArena()
local t = {}
for _, pid in pairs(getPlayersOnline()) do
if getPlayerAccess(pid) < config.acesso then
if isInRange(getCreaturePosition(pid), config.posicaoArena[1], config.posicaoArena[2]) then
table.insert(t, pid)
end
end
end
return t
end
]]></config>
<talkaction words="/arena" event="buffer"><![CDATA[
domodlib('arena_config')
if getPlayerAccess(cid) < config.acesso then
return doPlayerSendCancel(cid,"Você nao tem acesso para esse comando")
end
if tonumber(param) ~= nil then -- se o parametro é numerico
if tonumber(param) > 0 then
doSetStorage(config.storage, param)
abrirTeleport(param)
end
else
doPlayerSendTextMessage(cid,19,"Digite /arena e um numero.. \n exemplo: \n/arena 5")
end
]]></talkaction>
<movevent type="StepIn" actionid="2941" event="script"><![CDATA[
domodlib('arena_config')
if getPlayerAccess(cid) > config.acesso then doTeleportThing(cid, config.posicaoPlayer) return false end -- GM nao conta
doSetStorage(config.storage,getStorage(config.storage) - 1)
doTeleportThing(cid, config.posicaoPlayer)
registerCreatureEvent(cid, "naoAtacarPlayer")
registerCreatureEvent(cid, "morrerNaArena")
if getStorage(config.storage) <= 0 then
fecharTPeAguardarEvento()
end
return true
]]></movevent>
<event type="login" name="VerSeTaNaArenaEExpulsa" event="script"><![CDATA[
domodlib('arena_config')
if isInRange(getCreaturePosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
end
return true
]]></event>
<event type="combat" name="naoAtacarPlayer" event="script"><![CDATA[
domodlib('arena_config')
if isPlayer(cid) and isPlayer(target) then
if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) and isInRange(getPlayerPosition(target), config.posicaoArena[1], config.posicaoArena[2]) then
doPlayerSendCancel(cid, "Nao ataque seus amigos.")
return false
end
end
return true
]]></event>
<event type="death" name="removerCorpse" event="script"><![CDATA[
domodlib('arena_config')
doCreatureSay(cid,"Ninguém terá meu loot! Buaahahahha",1)
pos = getCreaturePosition(cid)
addEvent(doCleanTile,1,pos, false)
return true
]]></event>
<event type="statschange" name="morrerNaArena" event="script"><![CDATA[
domodlib('arena_config')
if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then
if type == STATSCHANGE_HEALTHLOSS then
if isPlayer(cid) then
if value >= getPlayerHealth(cid) then
doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)))
doPlayerSendTextMessage(pid,22,"Você morreu na arena =/.. veja pelo lado positivo, você nao perdeu nada!")
doCreatureAddHealth(cid,getCreatureMaxHealth(cid) - getPlayerHealth(cid))
return false
end
end
end
end
return true
]]></event>
</mod>

Utilize se for evento de invasão para iniciar o evento basta dizer exemplo /arena 10, o evento só deixará entrar 10 players, tem que configurar a onde os portal vai aparecer, e os monstros, ele avisa qnts players falta!
Creditos: Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

Nao tipo e de Time e estilo Battlefield ai o Proprio Jogador pode Escolher o Time desejado ate o Limite de Players Desse Tp !

@Edit: sao 9 TPS cada tp Pode entra 30 Players .

@Edit²: Eu estou querendo Fazer um Servidor de Pokemon no Modo (Enforced) Clan x Clan por isso Que Pedi um Limite de Player para Cada TP

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

  • 0

tenta configurar está linha: local from,to,players,limit = {x=, y=, z=}, {x=, y=, z=},{},8

 

Local from: {x=, y=, z=},

 

Players: exemplo {2}

 

Limite: 8 -- numero de players que poderá entrar!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...