Ir para conteúdo
  • 0

mudar esse sistema de onThink para onTime


leandrozera

Pergunta

Olá galerinha xtibia tenho um evento em meu server ele está programado em function onThink(interval, lastExecution, thinkInterval) , gostaria de programar ele em on Time() com seguintes horários

 

a base seria +ou- assim

local times = {
        ["Monday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
        ["Tuesday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
        ["Wednesday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
        ["Thursday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
        ["Friday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
        ["Saturday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
        ["Sunday"] = {
            ["13:00"],
            ["17:00"],
            ["23:00"],			
        },
}

evento


local monsters = {"Demon", "Frost Dragon", "Hydra", "Dragon Lord", "Dragon"} 
local time_min, max = 25, 60
local premios, gold = {{2160, 10}, {2157, 5}}, 10000

function winMonsterEvent()
    local max_sto, winner = 0, 0
    local monster = getGlobalStorageValue(1919211)
    for _, pid in pairs(getPlayersOnline()) do
        local sto = getPlayerStorageValue(pid, 1814210)
        if sto > max_sto then
            max_sto = sto
            winner = pid
        end
    end
    if isPlayer(winner) then
        local artigo = getPlayerSex(winner) == 0 and "A jogadora" or "O jogador"
        doBroadcastMessage(artigo.." "..getCreatureName(winner).." matou "..getPlayerStorageValue(winner, 1814210).." "..monster.."s e venceu o evento, parabens!")
        for _, prize in pairs(premios) do
            doPlayerAddItem(winner, prize[1], prize[2])
        end
        doPlayerAddMoney(winner, gold)
    else
        doBroadcastMessage("O evento terminou e nao houve nenhum vencedor.")
    end 
    setGlobalStorageValue(1919211, 0)
end   


-- como podem ver ele está programado em onThink

function onThink(interval, lastExecution, thinkInterval)
    local random = math.random(1, #monsters)
    local time = math.random(time_min, max)
    for _, pid in pairs(getPlayersOnline()) do
        doPlayerSetStorageValue(pid, 1814210, 0)
    end
    setGlobalStorageValue(1919211, monsters[random])
    doBroadcastMessage("O evento comecou e vai durar "..time.." minuto. O monstro sorteado foi "..monsters[random].."! Quem matar mais deles ate o fim sera o vencedor!")
    addEvent(winMonsterEvent, time*1000*60)    
    return true
end
Editado por leandrozera
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
local monsters = {"Demon", "Frost Dragon", "Hydra", "Dragon Lord", "Dragon"} 
local time_min, max = 25, 60
local premios, gold = {{2160, 10}, {2157, 5}}, 10000

function winMonsterEvent()
    local max_sto, winner = 0, 0
    local monster = getGlobalStorageValue(1919211)
    for _, pid in pairs(getPlayersOnline()) do
        local sto = getPlayerStorageValue(pid, 1814210)
        if sto > max_sto then
            max_sto = sto
            winner = pid
        end
    end
    if isPlayer(winner) then
        local artigo = getPlayerSex(winner) == 0 and "A jogadora" or "O jogador"
        doBroadcastMessage(artigo.." "..getCreatureName(winner).." matou "..getPlayerStorageValue(winner, 1814210).." "..monster.."s e venceu o evento, parabens!")
        for _, prize in pairs(premios) do
            doPlayerAddItem(winner, prize[1], prize[2])
        end
        doPlayerAddMoney(winner, gold)
    else
        doBroadcastMessage("O evento terminou e nao houve nenhum vencedor.")
    end 
    setGlobalStorageValue(1919211, 0)
end   


function onTime()
    local random = math.random(1, #monsters)
    local time = math.random(time_min, max)
    for _, pid in pairs(getPlayersOnline()) do
        doPlayerSetStorageValue(pid, 1814210, 0)
    end
    setGlobalStorageValue(1919211, monsters[random])
    doBroadcastMessage("O evento comecou e vai durar "..time.." minuto. O monstro sorteado foi "..monsters[random].."! Quem matar mais deles ate o fim sera o vencedor!")
    addEvent(winMonsterEvent, time*1000*60)    
    return true
end

Tags:

<globalevent name="Evento1" time="13:00" event="script" value="nome_do_arquivo.lua"/>
<globalevent name="Evento2" time="17:00" event="script" value="nome_do_arquivo.lua"/>
<globalevent name="Evento3" time="23:00" event="script" value="nome_do_arquivo.lua"/>
Link para o comentário
Compartilhar em outros sites

  • 0

Como o mesmo não se pronuncia a Dias estarei movendo, caso a duvida ainda persista entre em contato comigo.

 


Tópico Movido
Este tópico foi movido de "OTServSuporteSuporte Scripting"
para "OTServSuporteSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...