Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado
Versão do Servidor: TFS - 0.4
Tipo de Script: Talkaction

Código:

Spoiler

local quests = {
    ["vipquest"] = {
        min_level = 500,
        enter_pos = {x = 1285, 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  

 



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.

Resolvido por Vodkart

Ir para solução
  • Respostas 14
  • Visualizações 1.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • local quests = { ["vipquest"] = { min_level = 500, enter_pos = {x = 1285, y = 191, z = 7}, area = {fromPos = {x = 1263, y = 245, z = 7}, toPos = {x = 1525, y = 143, z = 7}

  • Thony D. Serv
    Thony D. Serv

    É continuarei aguardando para vê se encontro alguém q humildemente possa me ajudar ??

  • So volto tarde
    So volto tarde

    faz sentido, segue:    

Posted Images

Postado
  • Autor
1 hora atrás, underpunk disse:

ja tentou usar um if getPlayerPosition = X?

 

Bem tentei desta maneira e o script parou de funcionar olha abaixo

 

Spoiler

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 = 655, y = 423, 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 getPlayerPosition(cid).x == quests.position.x and getPlayerPosition(cid).y == quests.position.y and getPlayerPosition(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  

 

 

Editado por Thony D. Serv (veja o histórico de edições)

Postado
20 minutos atrás, Thony D. Serv disse:

 

Bem tentei desta maneira e o script parou de funcionar olha abaixo

 

  Mostrar conteúdo oculto


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 = 655, y = 423, 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 getPlayerPosition(cid).x == quests.position.x and getPlayerPosition(cid).y == quests.position.y and getPlayerPosition(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  

 

 

tentei aqui, porem nao sei os parametros corretos para usar o getplayerpositoin

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.6k

Informação Importante

Confirmação de Termo