Ir para conteúdo
  • 0

evento automatico


mczx4ndinho

Pergunta

Spoiler

local THRONE_POS = {x = 2561, y = 2446, z = 5}

local STORAGE_EVENT = 83902

local STORAGE_PLAYER = 73289

local DUR = 15 -- in minutes

function OpenEvent()

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

setPlayerStorageValue(tid, STORAGE_PLAYER, 1)

end

setGlobalStorageValue(STORAGE_EVENT, 1)

doBroadcastMessage("O Evento castle foi aberto.", 25)

end

function getWinnerCastle(cid)

CastleWalls()

local player = getTopCreature(THRONE_POS).uid

if getGlobalStorageValue(STORAGE_EVENT) < 0 then

return true

end

if (isPlayer(player)) then

if (getPlayerStorageValue(player, STORAGE_PLAYER) > 0) then

pid = getPlayerGUID(cid)

setHouseOwner(6257, pid)

doPlayerAddPremiumDays(player, 7)

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

setPlayerStorageValue(cid, STORAGE_PLAYER, 0)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

end

doBroadcastMessage(getCreatureName(player) .. " ganhou o evento.", 25)

doTeleportThing(player, {x = 2531, y = 2460, z = 7})

doCreateItem(391, 1, {x = 2561, y = 2446, z = 5})

end

else

doBroadcastMessage("Ningúem ganhou o evento.", 27)

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

setPlayerStorageValue(pid, STORAGE_PLAYER, 0)

doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))

end

end

setGlobalStorageValue(STORAGE_EVENT, 0)

return db.executeQuery("DELETE FROM `player_storage` WHERE `key` = " .. STORAGE_PLAYER)

end

function CastleWalls()

local pedra = getTileItemById({ x = 2539, y = 2474, z = 7}, 1285)

local escada = getTileItemById({ x = 2539, y = 2474, z = 7}, 3687)

if pedra.uid > 0 then

return doRemoveItem(pedra.uid)

else

return doCreateItem(1285, 1, { x = 2539, y = 2474, z = 7})

end

if escada.uid > 0 then

return doRemoveItem(escada.uid)

else

return doCreateItem(3687, 1, {x = 2539, y = 2474, z = 7})

end

end

function onSay(cid, words, param, channel)

if ((param == "abrir") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then

doPlayerSendTextMessage(cid, 27, "O evento já esta aberto.") return true

elseif ((param == "fechar") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then

getWinnerCastle()

CastleWalls()

return true

end

doCreateItem(3687, 1, {x = 2539, y = 2474, z = 7})

OpenEvent()

CastleWalls()

addEvent(getWinnerCastle, DUR * 60 * 1000)

return true

end

 

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Em 01/09/2021 em 15:07, mczx4ndinho disse:
Versão do Servidor: TFS - 0.4
Tipo de Script: talkaction
Código:
  Ocultar conteúdo


como por meu evento de castelo automatico ele ta em talkactions
se conseguir envia a tag tbm pliz
  Ocultar conteúdo

local THRONE_POS = {x = 2561, y = 2446, z = 5}

local STORAGE_EVENT = 83902

local STORAGE_PLAYER = 73289

local DUR = 15 -- in minutes

function OpenEvent()

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

setPlayerStorageValue(tid, STORAGE_PLAYER, 1)

end

setGlobalStorageValue(STORAGE_EVENT, 1)

doBroadcastMessage("O Evento castle foi aberto.", 25)

end

function getWinnerCastle(cid)

CastleWalls()

local player = getTopCreature(THRONE_POS).uid

if getGlobalStorageValue(STORAGE_EVENT) < 0 then

return true

end

if (isPlayer(player)) then

if (getPlayerStorageValue(player, STORAGE_PLAYER) > 0) then

pid = getPlayerGUID(cid)

setHouseOwner(6257, pid)

doPlayerAddPremiumDays(player, 7)

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

setPlayerStorageValue(cid, STORAGE_PLAYER, 0)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

end

doBroadcastMessage(getCreatureName(player) .. " ganhou o evento.", 25)

doTeleportThing(player, {x = 2531, y = 2460, z = 7})

doCreateItem(391, 1, {x = 2561, y = 2446, z = 5})

end

else

doBroadcastMessage("Ningúem ganhou o evento.", 27)

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

setPlayerStorageValue(pid, STORAGE_PLAYER, 0)

doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))

end

end

setGlobalStorageValue(STORAGE_EVENT, 0)

return db.executeQuery("DELETE FROM `player_storage` WHERE `key` = " .. STORAGE_PLAYER)

end

function CastleWalls()

local pedra = getTileItemById({ x = 2539, y = 2474, z = 7}, 1285)

local escada = getTileItemById({ x = 2539, y = 2474, z = 7}, 3687)

if pedra.uid > 0 then

return doRemoveItem(pedra.uid)

else

return doCreateItem(1285, 1, { x = 2539, y = 2474, z = 7})

end

if escada.uid > 0 then

return doRemoveItem(escada.uid)

else

return doCreateItem(3687, 1, {x = 2539, y = 2474, z = 7})

end

end

function onSay(cid, words, param, channel)

if ((param == "abrir") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then

doPlayerSendTextMessage(cid, 27, "O evento já esta aberto.") return true

elseif ((param == "fechar") and (getGlobalStorageValue(STORAGE_EVENT) == 1)) then

getWinnerCastle()

CastleWalls()

return true

end

doCreateItem(3687, 1, {x = 2539, y = 2474, z = 7})

OpenEvent()

CastleWalls()

addEvent(getWinnerCastle, DUR * 60 * 1000)

return true

end

 

Você quer que o evento aconteça em um horário específico ou de tempo em tempo? 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Eu quero um script que apareça um teleport e dure 15m dps ele some 

Ex: toda segunda quinta e sabado as 20h

5 horas atrás, Yan Oliveira disse:

Você quer que o evento aconteça em um horário específico ou de tempo em tempo? 

 

 

Obs:o script q tá aí já tá correto só quero esse script de tp 

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

  • 0
4 horas atrás, mczx4ndinho disse:

Eu quero um script que apareça um teleport e dure 15m dps ele some 

Ex: toda segunda quinta e sabado as 20h

Obs:o script q tá aí já tá correto só quero esse script de tp 

No caso, esse teleport que você fala é automaticamente puxar todos os players para esse evento ou aparecer um teleport em uma parte do mapa (específica ou aleatória) na quinta-feira e no sábado?

Link para o comentário
Compartilhar em outros sites

  • 0
27 minutos atrás, Yan Oliveira disse:

No caso, esse teleport que você fala é automaticamente puxar todos os players para esse evento ou aparecer um teleport em uma parte do mapa (específica ou aleatória) na quinta-feira e no sábado?

aparece um teleport em uma parte do mapa especifica na segunda - quinta e sabado  e depois de 15m ele some

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

  • 0
14 horas atrás, mczx4ndinho disse:

aparece um teleport em uma parte do mapa especifica na segunda - quinta e sabado  e depois de 15m ele some

Entendi, vá em Data/Globalevents/scripts e crie um arquivo chamado Castle_Event.lua e coloque o seguinte código dentro:

-- TABELA COM AS CONFIGURAÇÕES DO TELEPORT --
local tabela_config = {
	id_teleport = 1387, -- ID DO TELEPORT
	duration = 15, -- minutos
	position_teleport = {x = 32500, y= 32471, z= 7, stackpos = 1}, -- POSIÇÃO ONDE O TELEPORT IRÁ APARECER
	position_go = {x = 32500, y= 32476, z= 7}, -- POSIÇÃO ONDE O TELEPORT IRÁ LEVAR AO ENTRAR (DESTINO)
}

-- FUNÇÃO QUE REMOVE O TELEPORT DO MAPA --
local function RemoveTeleport(position)
local teleport = getTileItemById(position, tabela_config.id_teleport) -- PEGA O ITEM DO TELEPORT PELA POSIÇÃO

	if not teleport then
		return true
	
	else
		doRemoveItem(teleport.uid, 1)
		doSendMagicEffect(position, 25)
		
		doCreateItem(3687, 1, {x = 2539, y = 2474, z = 7})
		getWinnerCastle()
	return true	
	end	
end

-- FUNÇÕES CASTLE EVENT --
local THRONE_POS = {x = 2561, y = 2446, z = 5}
local STORAGE_EVENT = 83902
local STORAGE_PLAYER = 73289

function getWinnerCastle(cid)
    CastleWalls()
    local player = getTopCreature(THRONE_POS).uid

    if getGlobalStorageValue(STORAGE_EVENT) < 0 then
        return true
    end

    if isPlayer(player) then
        if getPlayerStorageValue(player, STORAGE_PLAYER) > 0 then
            pid = getPlayerGUID(cid)

            setHouseOwner(6257, pid)
            doPlayerAddPremiumDays(player, 7)

            for _, cid in ipairs(getPlayersOnline()) do
                setPlayerStorageValue(cid, STORAGE_PLAYER, 0)
                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
            end

            doBroadcastMessage(getCreatureName(player) .. " ganhou o evento.", 25)
            doTeleportThing(player, {x = 2531, y = 2460, z = 7})
            doCreateItem(391, 1, {x = 2561, y = 2446, z = 5})    
        end

    else
        doBroadcastMessage("Ningúem ganhou o evento.", 27)

        for _, pid in ipairs(getPlayersOnline()) do
            setPlayerStorageValue(pid, STORAGE_PLAYER, 0)
            doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
        end
    end

    setGlobalStorageValue(STORAGE_EVENT, 0)

return db.executeQuery("DELETE FROM `player_storage` WHERE `key` = " .. STORAGE_PLAYER)
end

function CastleWalls()
local pedra = getTileItemById({ x = 2539, y = 2474, z = 7}, 1285)
local escada = getTileItemById({ x = 2539, y = 2474, z = 7}, 3687)

    if pedra.uid > 0 then
        return doRemoveItem(pedra.uid)
    else

return doCreateItem(1285, 1, { x = 2539, y = 2474, z = 7})
end

if escada.uid > 0 then
    return doRemoveItem(escada.uid)
else

return doCreateItem(3687, 1, {x = 2539, y = 2474, z = 7})
end

end

------------------------- CÓDIGO -------------------------
function onTime(cid, interval, lastExecution) 
	if (os.date("%A") == "Monday") or (os.date("%A") == "Thursday") or (os.date("%A") == "Saturday") then
		doCreateTeleport(tabela_config.id_teleport, tabela_config.position_go, tabela_config.position_teleport)	
		
		for _, tid in ipairs(getPlayersOnline()) do
			setPlayerStorageValue(tid, STORAGE_PLAYER, 1)
		end

		setGlobalStorageValue(STORAGE_EVENT, 1)
		doBroadcastMessage("O Evento castle foi aberto.", 25)
		
		addEvent(RemoveTeleport, 60000 * tabela_config.duration, tabela_config.position_teleport)
	end
return true
end

 

Agora abra o arquivo globalevents.xml e adicione a tag:

<globalevent name="Castle_Event" time="20:00" event="script" value="Castle_Event.lua"/>

 

Vamos as orientações:

 

Primeiro, no arquivo Castle_Event.lua você precisa configurar a tabela do teleport, colocando a coordenada que ele vai aparecer e a coordenada de destino ao entrar, o Id creio que não vá precisar alterar porque esse é global para o Tibia, e o tempo já deixei em 15 minutos. 

 

Tive que alterar algumas coisas no código porque ele está deixando de ser comando para virar um evento global, mas é para funcionar, pois não mexi na estrutura, apenas removi a função OpenEvent() porque como virou evento global não precisará mais disso. O resto eu não mexi.

 

E por fim, na tag xml, precisa colocar o horário que quer que o evento ocorrerá na segunda-feira, quinta-feira e sexta-feira. Eu deixei 20h só de exemplo. Lembrando que esse horário está programado para acontecer nos três dias, então será sempre no mesmo horário.

 

Teste e me fale se der algum erro ou problema.

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

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...