O quê acontecerá com os jogadores que estiverem na área do evento, quando o ADM usar o comando para fechá-lo? Serão teleportados, certo? Se sim, poderia dizer para onde?
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] [Pedido] Comando Evento
FL
[Encerrado] [Pedido] Comando Evento
Por FlamesAdmin, 23 de dez. de 2013 em Tópicos Sem Resposta
resolvido
7
617
23 de dezembro de 2013 às 23:07
info
Grupo: Infante
Registrado: 28/01/12
Posts: 1.6k
Reputação: +262
Gênero: Masculino

23 de dezembro de 2013 às 23:12
Sim, pro CP.
24 de dezembro de 2013 às 00:13
Primeiramente, em 050-function.lua, adicione a seguinte função:
function getPlayersInArea(pos1,pos2)
local players = {}
if pos1.x and pos1.y and pos2.x and pos2.y and pos1.z == pos2.z then
for a = pos1.x, pos2.x do
for b = pos1.y,pos2.y do
local pos = {x=a,y=b,z=pos1.z}
if isPlayer(getTopCreature(pos).uid) then
table.insert(players,getTopCreature(pos).uid)
end
end
end
return players
else
return false
end
end
Agora, em data/talkactions, abra o arquivo .xml e adicione a seguinte tag:
<talkaction words="!abrirevento;!irevento;!fecharevento" script="evento.lua"/>
Depois, crie um arquivo com extensão .lua (em data/talkactions/scripts), nomeie-o evento, e coloque o seguinte conteúdo:
local cfg = {
event_area = {x = x, y = y, z = z}, --Para onde os jogadores serão teleportados ao usar o comando !irevento.
inicial_pos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da área.
final_pos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da área.
id = xxx, --Group ID necessário para abrir/fechar o evento.
}
function onSay(cid, words)
if words == "!abrirevento" then
if getPlayerGroupId(cid) <= (cfg.id - 1) then
return doPlayerSendCancel(cid, "Sorry, not possible.")
elseif getGlobalStorageValue(98762) >= 1 then
return doPlayerSendCancel(cid, "O evento já está aberto!")
end
broadcastMessage("O evento foi aberto! Para participar, basta digitar !irevento.", 25)
doPlayerSendTextMessage(cid, 27, "Você abriu o evento. Para fechá-lo, digite !fecharevento.")
setGlobalStorageValue(98762, 1)
elseif words == "!irevento" then
if getGlobalStorageValue(98762) <= 0 then
return doPlayerSendCancel(cid, "Desculpe, o evento está fechado.")
elseif isInArea(getThingPos(cid), cfg.inicial_pos, cfg.final_pos) then
return doPlayerSendCancel(cid, "Você já está participando do evento!")
end
doPlayerSendTextMessage(cid, 27, "Bem vindo, e boa sorte!")
doTeleportThing(cid, cfg.event_area)
elseif words == "!fecharevento" then
if getPlayerGroupId(cid) <= (cfg.id - 1) then
return doPlayerSendCancel(cid, "Sorry, not possible.")
elseif getGlobalStorageValue(98762) <= 0 then
return doPlayerSendCancel(cid, "O evento já está fechado!")
end
broadcastMessage("O evento foi fechado! Todos os jogadores que estavam na área foram teleportados para o Centro Pokémon!")
doPlayerSendTextMessage(cid, 27, "Você fechou o evento. Para abrí-lo, digite !abrirevento.")
setGlobalStorageValue(98762, 0)
local jogadores = getPlayersInArea(cfg.inicial_pos, cfg.final_pos)
if #jogadores >= 1 then
for _, b in pairs(jogadores) do
doTeleportThing(b, getTownTemplePosition(getPlayerTown(b)))
end
end
end
return true
endEditado Dezembro 24 por zipter98
info
Grupo: Infante
Registrado: 28/01/12
Posts: 1.6k
Reputação: +262
Gênero: Masculino

24 de dezembro de 2013 às 00:25
Obrigado mais uma vez, Rep+
24 de dezembro de 2013 às 00:26
Tópico movido para a seção de dúvidas e pedidos resolvidos.
4 anos depois...
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

21 de abril de 2018 às 03:16
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.
+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.



info
Grupo: Infante
Registrado: 28/01/12
Posts: 1.6k
Reputação: +262
Gênero: Masculino
Gostaria de um comando para evento:
Exemplo: o Admin digita o comando !abrirevento, dai aparecera uma msg como broadcast verde, dai tal player digita !irevento, e ele irá para um certo lugar, dps disso, o Admin pode fechar o evento com !fecharevento .
Rep+