Ir para conteúdo

Monster Hunter Event


Killua

Posts Recomendados

ai com horário tbm eu só troquei

 

function onThink(interval, lastExecution, thinkInterval)

 

para

 

function onTime()

 

 

e a tag para

 

<globalevent name="killevento" time="xx:xx" event="script" value="nomedoseuscript.lua"/>

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 4 years later...
Em 08/04/2014 em 12:57, Killua disse:

Monster Hunter Event

 

Como não tive tempo para trazer um script semana passada, criei um bem legal para essa semana. Para ver os outros scripts de terça, clique aqui.

 

Vídeo demonstrativo:

 

 

 

Explicação detalhada:

 

O evento possui duas versões: automática (globalevent) e manual (talkaction). Quando o evento inicia, é sorteado um monstro e um intervalo de tempo, por exemplo: Hydra e 15 minutos. Seguindo esse exemplo, os jogadores terão 15 minutos para matar hydras, no final dos 15 minutos, aquele que tiver matado mais hydras será o vencedor e receberá um prêmio. - É tudo configurável.

 

Instalação:

 

Crie Monster Hunter.lua em data/creaturescripts/scripts e coloque:



 

-- Monster Hunter Event feito por Killua, XTibia.com

function onKill(cid, target, lastHit)
    if isPlayer(cid) and isMonster(target) then
        if getCreatureMaster(target) ~= nil then
            return true
        end
        local name = getGlobalStorageValue(1919211)
        if string.lower(getCreatureName(target)) == string.lower(name) then
            doPlayerSetStorageValue(cid, 1814210, getPlayerStorageValue(cid, 1814210) + 1)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Monster Hunter Event] Voce ja matou "..getPlayerStorageValue(cid, 1814210).." "..name.."s! Continue matando para ser o vencedor!")
        end
    end
    return true
end

function onLogin(cid)
    if getGlobalStorageValue(1919211) == 0 then
        doPlayerSetStorageValue(cid, 1814210, 0)
    end
    registerCreatureEvent(cid, "Monster Hunter")
    return true
end

Em data/creaturescripts/creaturescripts.xml adicione essas TAGs:

 


<event type="kill" name="Monster Hunter" event="script" value="Monster Hunter.lua"/>
<event type="login" name="Monster Hunterl" event="script" value="Monster Hunter.lua"/>

A próxima parte irá depender de qual versão escolher

 

Versão manual (talkaction)

 

  Mostrar conteúdo oculto

 

Em data/talkactions/scripts crie Monster Hunter.lua e coloque:




 


-- Monster Hunter Event feito por Killua, XTibia.com

local monsters = {"Demon", "Rat", "Hydra", "Dragon Lord", "Ancient Scarab"} -- Monstros que podem ser sorteados
local time_min, max = 10, 15 -- Em minutos
local premios, gold = {{2160, 10}, {2157, 5}}, 10000 -- {id do item, quantidade} que o jogador ganha e quantia de gold

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("[Monster Hunter Event] O evento terminou e nao houve nenhum vencedor.")
    end 
    setGlobalStorageValue(1919211, 0)
end   


function onSay(cid, words, param, channel)
    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("[Monster Hunter Event] 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

Em data/talkactions/talkactions.xml coloque essa TAG:



<talkaction log="yes" access="5" words="/monsterhunter" event="script" value="Monster Hunter.lua"/>

 

 

 

Versão automática (globalevent)

 

  Mostrar conteúdo oculto

 

Em data/globalevents/scripts crie Monster Hunter.lua e coloque:




 


-- Monster Hunter Event feito por Killua, XTibia.com

local monsters = {"Demon", "Rat", "Hydra", "Dragon Lord", "Ancient Scarab"} -- Monstros que podem ser sorteados
local time_min, max = 10, 15 -- Em minutos
local premios, gold = {{2160, 10}, {2157, 5}}, 10000 -- {id do item, quantidade} que o jogador ganha e quantia de gold

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("[Monster Hunter Event] O evento terminou e nao houve nenhum vencedor.")
    end 
    setGlobalStorageValue(1919211, 0)
end   


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("[Monster Hunter Event] 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

Em data/globalevents/globalevents.xml coloque essa TAG:




 


<globalevent name="Monster Hunter Event" interval="60000" event="script" value="Monster Hunter.lua"/>

 

 

 

Configuração:


local monsters = {"Demon", "Rat", "Hydra", "Dragon Lord", "Ancient Scarab"} -- Monstros que podem ser sorteados
local time_min, max = 10, 15 -- Em minutos
local premios, gold = {{2160, 10}, {2157, 5}}, 10000 -- {id do item, quantidade} que o jogador ganha e quantia de gold
  • Em monsters, coloque o nome dos monstros que poderão ser sorteados no evento.
  • Em time_min, max, coloque o tempo mínimo e o tempo máximo de duração do evento.
  • em premios, gold adicione os itens e a quantidade de gold que o vencedor receberá (seguindo o modelo apresentado).

 

TAG no Globalevents.xml (versão automática):


<globalevent name="Monster Hunter Event" interval="3600000" event="script" value="Monster Hunter.lua"/>
  • interval é o intervalo entre as execuções do evento, coloquei 3600000, que equivale a 1 hora (1000 = 1 segundo). Se seu servidor NÃO for em milissegundos, use 1 = 1 segundo, logo 1 hora = 3600.

 

TAG no Talkactions.xml (versão manual):


<talkaction log="yes" access="5" words="/monsterhunter" event="script" value="Monster Hunter.lua"/>
  • Em access coloque o núemero de acesso mínimo para poder usar o comando. 5 = somente gods podem usar.

 

Para iniciar o evento na maneira manual, basta usar /monsterhunter

Para iniciar o evento na maneira automática, basta aguardar o tempo configurado.

Fiz tudo certinho como explicado, e não está contando os monstros mortos

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
×
×
  • Criar Novo...