Postado Agosto 9, 2018 6 anos Eai galera to TK queria pedir pra voces o seguinte script + Quando o player usar o comando ele vai para dentro de uma quest (ex: !quest Demon) + Ele tera um tempo para fazer a quest, se o tempo terminar e ele estiver dentro da area da quest ele vai ser teleportado pro templo + A quest pode ser feita a cada 1 hora (Eu ja vi um script parecido no TK mas quando o player sai da quest o script continua contando e teleporta ele pro templo, as vezes o player ja terminou a quest e mesmo assim quando o tempo acaba ele é teleportado)
Postado Agosto 9, 2018 6 anos 51 minutos atrás, Sonark disse: Eai galera to TK queria pedir pra voces o seguinte script + Quando o player usar o comando ele vai para dentro de uma quest (ex: !quest Demon) + Ele tera um tempo para fazer a quest, se o tempo terminar e ele estiver dentro da area da quest ele vai ser teleportado pro templo + A quest pode ser feita a cada 1 hora (Eu ja vi um script parecido no TK mas quando o player sai da quest o script continua contando e teleporta ele pro templo, as vezes o player ja terminou a quest e mesmo assim quando o tempo acaba ele é teleportado) TFS ? Meus trabalhos: [Movements] TFS 1.1+ Area Hardcore [Movements] TFS 1.1+ Tile Party [Action] TFS 1.1+ Bau diário [Action] TFS 1.1+ Guild Dungeon Lever [Talkactions] TFS 0.3.6 / 0.4 Quest Hunt por Tempo Contato: Discord: Tataboy67#4934
Postado Agosto 9, 2018 6 anos Solução Este é um post popular. Caso seja tfs 0.4: Em talkactions/scripts crie um arquivo.lua: local quests = { ["demon"] = { 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"} }, ["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 = 87870 -- 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, "You can go to a quest again at "..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 Em talkactions.xml, adicione a tag: <talkaction words="!quest" event="script" value="NOMEDOARQUIVO.lua"/> Configuração: ["demon"] = { -- nome da quest min_level = 10, -- level mínimo para ir para a quest enter_pos = {x = 1, y = 1, z = 1}, -- posição de entrada na quest area = { fromPos = {x = 1, y = 1, z = 1}, -- posição do canto superior esquerdo da área toPos = {x = 1, y = 1, z = 1} -- posição do canto inferior direito da área }, time_to_finish = {10, "min"}, -- tempo que o player terá para finalizar a quest ("sec", "min", "hour", "day") time_to_make_again = {1, "hour"} -- tempo para poder fazer uma quest novamente }, Utilização: !quest -> mostra as quests disponíveis !quest nome da quest -> leva o player para a quest Ex.: !quest demon Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 11, 2018 6 anos Autor Em 09/08/2018 em 12:55, tataboy67 disse: TFS ? 0.4 Desculpa esqueci de mencionar ? @Dwarfer Obg mano! Ficou mt bom (tu é dms colocou até pra adicionar outras quests no script, eu tinha até esquecido de pedir) Obg!! Editado Agosto 11, 2018 6 anos por Sonark (veja o histórico de edições)
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.