Ir para conteúdo

Featured Replies

Postado

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)

 

 

Resolvido por Dwarfer

Ir para solução
Postado
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 ?

Postado
  • 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:

 

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo