mczx4ndinho 0 Postado Setembro 1, 2021 Share Postado Setembro 1, 2021 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 More sharing options...
0 Yan Oliveira 211 Postado Setembro 7, 2021 Share Postado Setembro 7, 2021 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 More sharing options...
0 mczx4ndinho 0 Postado Setembro 7, 2021 Autor Share Postado Setembro 7, 2021 (editado) 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 Setembro 7, 2021 por mczx4ndinho Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Setembro 7, 2021 Share Postado Setembro 7, 2021 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 More sharing options...
0 mczx4ndinho 0 Postado Setembro 7, 2021 Autor Share Postado Setembro 7, 2021 (editado) 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 Setembro 7, 2021 por mczx4ndinho Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Setembro 8, 2021 Share Postado Setembro 8, 2021 (editado) 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 Setembro 8, 2021 por Yan Oliveira Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mczx4ndinho 0
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