Tonyyx 0 Posted March 20, 2022 Share Posted March 20, 2022 Tenho este script de teleport por tempo, porem queria que só pudesse usar ele numa determinada pos (configuravel). ex position errada: voce precisa estar dentro da quest para usar este comando. Link to comment Share on other sites More sharing options...
0 Marshmello 270 Posted March 23, 2022 Share Posted March 23, 2022 manda o script Link to comment Share on other sites More sharing options...
0 Tonyyx 0 Posted March 25, 2022 Author Share Posted March 25, 2022 (edited) Em 23/03/2022 em 10:22, Marshmello disse: manda o script Citar local quests = { ["vipquest"] = { min_level = 500, enter_pos = {x = 1283, y = 191, z = 7}, area = {fromPos = {x = 1263, y = 245, z = 7}, toPos = {x = 1525, y = 143, z = 7}}, time_to_finish = {15, "min"}, time_to_make_again = {15, "min"} -- }, -- ["dragon"] = { -- min_level = 10, -- enter_pos = {x = 1, y = 1, z = 1}, -- area = {fromPos = {x = 1, y = 1, z = 1}, toPos = {x = 1, y = 1, z = 1}}, -- time_to_finish = {10, "min"}, -- time_to_make_again = {1, "hour"} } } local time_storage = 87871 -- só modifique se necessário function onSay(cid, words, param, channel) local param, p, check = param:lower(), getPlayerPosition(cid), false if not param or param == "" then local str, n = '~~ [Available Quests] ~~\n\n', 1 for quest, info in pairs(quests) do str = str .. n .. " - " .. Fupper(quest) .. " (Level: "..info.min_level..")\n" n = n + 1 end doShowTextDialog(cid, 1955, str) return true end local t = quests[param] if not t then return doPlayerSendCancel(cid, "Quest not found.") end if getPlayerLevel(cid) < t.min_level then return doPlayerSendCancel(cid, "Only players level "..t.min_level.." or higher can go the "..param.." quest.") end if isInRange(p, t.area.fromPos, t.area.toPos) then return doPlayerSendCancel(cid, "You are already inside the "..param.." quest area.") end for quest, info in pairs(quests) do if isInRange(p, info.area.fromPos, info.area.toPos) then check = true end end if check then return doPlayerSendCancel(cid, "You cannot go to another quest inside a quest.") end local stor = getPlayerStorageValue(cid, time_storage) if stor > os.time() then return doPlayerSendCancel(cid, "Voce so podera entrar novamente na quest "..os.date("%d %B %Y %X", stor)..".") end doSendMagicEffect(p, CONST_ME_POFF) local destination = t.enter_pos doTeleportThing(cid, destination) doSendMagicEffect(destination, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Good luck in "..param.." quest! You have "..getStrTime(t.time_to_finish).." to finish or you will be kicked.") setPlayerStorageValue(cid, time_storage, mathtime(t.time_to_make_again) + os.time()) addEvent(function() if isPlayer(cid) then if isInRange(getPlayerPosition(cid), t.area.fromPos, t.area.toPos) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) local temple = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, temple) doSendMagicEffect(temple, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Your time is over!") end end end, mathtime(t.time_to_finish) * 1000) return true end function mathtime(table) -- by dwarfer local unit = {"sec", "min", "hour", "day"} for i, v in pairs(unit) do if v == table[2] then return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1) end end return error("Bad declaration in mathtime function.") end function getStrTime(table) -- by dwarfer local unit = {["sec"] = "second",["min"] = "minute",["hour"] = "hour",["day"] = "day"} return tostring(table[1].." "..unit[table[2]]..(table[1] > 1 and "s" or "")) end function Fupper(str) return (str:gsub("^%l", string.upper)) end Edited March 25, 2022 by Tonyyx Link to comment Share on other sites More sharing options...
0 Marshmello 270 Posted March 25, 2022 Share Posted March 25, 2022 Citar local quests = { ["vipquest"] = { min_level = 500, enter_pos = {x = 1283, y = 191, z = 7}, area = {fromPos = {x = 1263, y = 245, z = 7}, toPos = {x = 1525, y = 143, z = 7}}, time_to_finish = {15, "min"}, time_to_make_again = {15, "min"} -- }, -- ["dragon"] = { -- min_level = 10, -- enter_pos = {x = 1, y = 1, z = 1}, -- area = {fromPos = {x = 1, y = 1, z = 1}, toPos = {x = 1, y = 1, z = 1}}, -- time_to_finish = {10, "min"}, -- time_to_make_again = {1, "hour"} } position = {x = 1038, y = 1043, z = 7} -- Posição que o Player precisa para usar o comando } local time_storage = 87871 -- só modifique se necessário function onSay(cid, words, param, channel) local param, p, check = param:lower(), getPlayerPosition(cid), false if not param or param == "" then local str, n = '~~ [Available Quests] ~~\n\n', 1 for quest, info in pairs(quests) do str = str .. n .. " - " .. Fupper(quest) .. " (Level: "..info.min_level..")\n" n = n + 1 end doShowTextDialog(cid, 1955, str) return true end local t = quests[param] if not t then return doPlayerSendCancel(cid, "Quest not found.") end if getPlayerLevel(cid) < t.min_level then return doPlayerSendCancel(cid, "Only players level "..t.min_level.." or higher can go the "..param.." quest.") end if isInRange(p, t.area.fromPos, t.area.toPos) then return doPlayerSendCancel(cid, "You are already inside the "..param.." quest area.") end for quest, info in pairs(quests) do if isInRange(p, info.area.fromPos, info.area.toPos) then check = true end end if check then return doPlayerSendCancel(cid, "You cannot go to another quest inside a quest.") end local stor = getPlayerStorageValue(cid, time_storage) if stor > os.time() then return doPlayerSendCancel(cid, "Voce so podera entrar novamente na quest "..os.date("%d %B %Y %X", stor)..".") end if getCreaturePosition(cid).x == quests.position.x and getCreaturePosition(cid).y == quests.position.y and getCreaturePosition(cid).z == quests.position.z then doSendMagicEffect(p, CONST_ME_POFF) local destination = t.enter_pos doTeleportThing(cid, destination) doSendMagicEffect(destination, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Good luck in "..param.." quest! You have "..getStrTime(t.time_to_finish).." to finish or you will be kicked.") setPlayerStorageValue(cid, time_storage, mathtime(t.time_to_make_again) + os.time()) addEvent(function() if isPlayer(cid) then if isInRange(getPlayerPosition(cid), t.area.fromPos, t.area.toPos) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) local temple = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, temple) doSendMagicEffect(temple, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Your time is over!") end end end, mathtime(t.time_to_finish) * 1000) else doPlayerSendTextMessage(cid, 25, "wrong position") end return true end function mathtime(table) -- by dwarfer local unit = {"sec", "min", "hour", "day"} for i, v in pairs(unit) do if v == table[2] then return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1) end end return error("Bad declaration in mathtime function.") end function getStrTime(table) -- by dwarfer local unit = {["sec"] = "second",["min"] = "minute",["hour"] = "hour",["day"] = "day"} return tostring(table[1].." "..unit[table[2]]..(table[1] > 1 and "s" or "")) end function Fupper(str) return (str:gsub("^%l", string.upper)) end Link to comment Share on other sites More sharing options...
0 Tonyyx 0 Posted March 26, 2022 Author Share Posted March 26, 2022 Em 25/03/2022 em 00:33, Marshmello disse: Dei Rep Ai De Agradecimento Não Havia Testado Ainda O Script, Fui Testar Agora E Ele Não Está Funcionando, Tipo O Script Parou Simplesmente A Tfs É 0.4 Link to comment Share on other sites More sharing options...
Question
Tonyyx 0
Tenho este script de teleport por tempo, porem queria que só pudesse usar ele numa determinada pos (configuravel).
ex position errada: voce precisa estar dentro da quest para usar este comando.
Link to comment
Share on other sites
4 answers to this question
Recommended Posts