Postado Fevereiro 24, 2020 5 anos function convertTime(minutes,seconds) local hours = 0 repeat if seconds >= 60 then minutes = minutes + 1; seconds = seconds - 60 elseif minutes >= 60 then hours = hours + 1; minutes = minutes - 60 end until seconds < 60 and minutes < 60 return {hours = hours, seconds = seconds, minutes = minutes} end function doTeleportTimer(pos, seconds) local t = convertTime(0, seconds) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, 145) if seconds ~= 1 then addEvent(doTeleportTimer, 1000, pos, seconds-1) end end local storage, minutos = 48748, 10 -- 10 minutos local level = 130 local redo = {status = false, storageValue = 61111} -- true para ilimitado, false para somente uma vez local config = { { vocations = {3, 7}, playerPos = {x=1117, y=1150, z=6}, -- Initial position in the Stone tile newPos = {x=1114, y=1142, z=8}, -- Position of the reward room. }, { vocations = {2, 6}, playerPos = {x=1123, y=1157, z=6}, -- Initial position in the Stone tile newPos = {x=1114, y=1142, z=8}, -- Position of the reward room. }, { vocations = {1, 5}, playerPos = {x=1127, y=1155, z=6}, -- Initial position in the Stone tile newPos = {x=1114, y=1142, z=8}, -- Position of the reward room. }, { vocations = {4, 8}, playerPos = {x=1123, y=1147, z=6}, -- Initial position in the Stone tile newPos = {x=1114, y=1142, z=8}, --Position of the reward room. } } local msgs = { [1] = "Todos os jogadores devem estar em seus respectivos pisos!", [2] = "Todos os players devem ser level " .. level .. " ou maior.", [3] = "Um jogador em seu time ja fez a Fishing Rod and Pick Quest!", [4] = "Não há jogadores suficientes." } function onUse(cid, item, fromPosition, itemEx, toPosition) if getGlobalStorageValue(storage) - os.time() > 0 then doPlayerSendTextMessage(cid, 25, "Você não pode usar a alavanca agora.") return true end local players, msgID = {}, 0 for i, v in pairs(config) do local player = getTopCreature(v.playerPos).uid if player ~= 0 and isPlayer(player) then if not isInArray(v.vocations, getPlayerVocation(player)) then msgID = 1 break elseif getPlayerLevel(player) < level then msgID = 2 break elseif not redo.status then if getPlayerStorageValue(player, redo.storageValue) ~= -1 then msgID = 3 break end end table.insert(players, {player = player, newPos = v.newPos}) end end if msgID ~= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, msgs[msgID]) return true end if #players ~= #config then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, msgs[4]) return true end for i = 1, #players do local p = players if not redo.status then end doSendMagicEffect(getPlayerPosition(p.player), CONST_ME_POFF) doTeleportThing(p.player, p.newPos) doSendMagicEffect(p.newPos, CONST_ME_TELEPORT) end setGlobalStorageValue(storage, os.time() + minutos*60) doTeleportTimer(toPosition, minutos*60) return true end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 24, 2020 5 anos Autor @Vodkart Oi. Deu o seguinte erro: Citar [24/02/2020 17:31:12] [Error - Action Interface] [24/02/2020 17:31:12] data/actions/scripts/quest/rodquest.lua:onUse [24/02/2020 17:31:12] Description: [24/02/2020 17:31:12] (luaGetThingPosition) Thing not found [24/02/2020 17:31:12] [Error - Action Interface] [24/02/2020 17:31:12] data/actions/scripts/quest/rodquest.lua:onUse [24/02/2020 17:31:12] Description: [24/02/2020 17:31:12] attempt to index a nil value [24/02/2020 17:31:12] stack traceback: [24/02/2020 17:31:12] [C]: in function 'doTeleportThing' [24/02/2020 17:31:12] data/actions/scripts/quest/rodquest.lua:88: in function <data/actions/scripts/quest/rodquest.lua:52>
Postado Fevereiro 24, 2020 5 anos @OfWar mas não é da função que eu coloquei não, está dando erro na hora de teleportar os jogadores. na verdade eu vou refazer esse código ai que está bem feio e já te mando assim que tiver tempo kk [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 25, 2020 5 anos ------------------ local storage, minutos = 48748, 10 -- 10 minutos local lvl = 130 local t = { {vocations = {1, 5}, Pos = {{x=1127, y=1155, z=6},{x=1114, y=1142, z=8}}}, --primeira pos é onde o jogador tem que estar e a segunda para onde ele vai ser teleportado {vocations = {2, 6}, Pos = {{x=1123, y=1157, z=6},{x=1114, y=1142, z=8}}}, {vocations = {3, 7}, Pos = {{x=1117, y=1150, z=6},{x=1114, y=1142, z=8}}}, {vocations = {4, 8}, Pos = {{x=1123, y=1147, z=6},{x=1114, y=1142, z=8}}} } function convertTime(minutes,seconds) local hours = 0 repeat if seconds >= 60 then minutes = minutes + 1; seconds = seconds - 60 elseif minutes >= 60 then hours = hours + 1; minutes = minutes - 60 end until seconds < 60 and minutes < 60 return {hours = hours, seconds = seconds, minutes = minutes} end function doTeleportTimer(pos, seconds) local t = convertTime(0, seconds) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, 145) if seconds ~= 1 then addEvent(doTeleportTimer, 1000, pos, seconds-1) end end function onUse(cid, item, fromPosition, itemEx, toPosition) local check = {} for _, k in ipairs(t) do local x = getTopCreature(k.Pos[1]).uid if x == 0 or not isPlayer(x) then doPlayerSendCancel(cid, 'Não há jogadores suficientes.') return true elseif not isInArray(k.vocations, getPlayerVocation(x)) then doPlayerSendCancel(cid, 'Todos os jogadores devem estar em seus respectivos pisos!') return true elseif getPlayerLevel(x) < lvl then doPlayerSendCancel(cid, 'Todos os players devem ser level ' .. lvl .. ' ou maior.') return true end table.insert(check, x) end for k, tid in ipairs(check) do doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF) doTeleportThing(tid, t[k].Pos[2]) doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT) end setGlobalStorageValue(storage, os.time() + minutos*60) doTeleportTimer(toPosition, minutos*60) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 26, 2020 5 anos Autor @Vodkart Eae cara, boa tarde. A script teleportou e fez a contagem, mas continua entrando um team atrás do outro antes do tempo acabar. É possível deixar a contagem em segundos? Ela está assim: 9:59, 9:58... se possível em segundos, exemplo: 600, 599... Obrigado pela ajuda.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.