Ir para conteúdo

Monster Hunter Event


Killua

Posts Recomendados

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)

 

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)

 

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.

Editado por Killua
Link para o comentário
Compartilhar em outros sites

nossa curti, com certeza irei usar, qualquer problema ou ideia eu posto de novo, vlw!

 

EDIT:

ta funcionando legal, só achei uma coisa ruim, se o player n tiver cap ou espaço o premio cai no chão, vc poderia colocar pra caso n conseguisse dar o item mandar direto pro dp

 

 

EDIT2:

 

uma ideia legal seria ter grupo de monstro, tipo minotaurs, ai o player poderia matar qualquer tipo de mino

 

 

EDIT3:

 

vc esqueceu de checar se o monstro é summon! xD

Editado por Diihbran
Link para o comentário
Compartilhar em outros sites

Como o Diihbran falou, você esqueceu de checar se o monstro é summon. E outra coisa que seria interessante acrescentar seria: Verificar se o evento já está acontecendo, pois o que eu acho mais certo é utilizar tanto o movo automatico(global events) quanto o modo manual(talk actions), o ADM pode querer fazer um evento manualmente em uma determinada hora e pode coincidir que o evento automatico começará, assim zerando o evento que foi começado manualmente.
O Script é muito bom, e achei a ideia surpreendente, o seu trabalho aqui tem sido muito bom, gostei muito de alguns scripts seus, parabéns!
Um grande abraço e continue assim! REP+

Link para o comentário
Compartilhar em outros sites

Na realidade eu nem pensei na possibilidade de o monstro ser summon... Eu fiz pensando em usar somente monstros mais fortes.

De qualquer forma, atualizei o tópico com a checagem, obrigado pela sugestão.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Cara eu gostei d ++ do event mais estoou com uma duvida onde os monstros aparecem??

 

pode deixar ja entendi oq tem que fazer vc tem que procurar hunts com o monstro sorteado e quem mata mais ganha...

Editado por Masterzikka
Link para o comentário
Compartilhar em outros sites

Cara eu gostei d ++ do event mais estoou com uma duvida onde os monstros aparecem??

 

pode deixar ja entendi oq tem que fazer vc tem que procurar hunts com o monstro sorteado e quem mata mais ganha...

É isso ai kkkk

Link para o comentário
Compartilhar em outros sites

bem interessante este script show de bola testando

 

 

 

eu testei o evento so que ninguem ganha

 

[Monster Hunter Event] O evento terminou e nao houve nenhum vencedor.

Editado por CoyoteStark
Link para o comentário
Compartilhar em outros sites

bem interessante este script show de bola testando

 

 

 

eu testei o evento so que ninguem ganha

 

[Monster Hunter Event] O evento terminou e nao houve nenhum vencedor.

Se ninguém ganhou é pq ninguém matou um monstro sorteado...

Link para o comentário
Compartilhar em outros sites

claro que matou, para testar eu me certifiquei que tinha um jogador na cave que tinha este monstro, tinha, entao ativei o evento e nao deu nada.

 

Reisntale o evento seguindo com exatidão o que foi explicado no tópico... Não existem motivos para ele não funcionar, a não ser que você tenha instalado errado.

Link para o comentário
Compartilhar em outros sites

  • 1 year later...
×
×
  • Criar Novo...