Monster Hunter Event

Killua
Por Killua
em Mods, funções e outros
  • 1
  • 2

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

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.

DuuhCarvalho

:)
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 19/01/12Posts: 988Gênero: MasculinoChar no Tibia: Xerife Woody

Ficou perfeito o evento *---*

bisosonho

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/11/10Posts: 43

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

Mateusoo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/03/14Posts: 78

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+

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

jeanflamengo

[> ObservandU essa bagaÇa <]
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 31/07/09Posts: 205Gênero: Masculino

@kill teria como você fazer esse evento para poketibia? pq eu dei uma testada aki e não funfo não.

duasrodas

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 90

Killua ficou lindo cara!!Valew por compartilhar com o Xtibia!!

Reputado!

Masterzikka

nunca desista de seus sonhos..
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/02/14Posts: 20Char no Tibia: Master zikka

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

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

coyotestark

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/02/11Posts: 259Char no Tibia: Aias Laf Du

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.

385417_122391137880813_100003297811828_101325_1909172176_n.jpg

Nao sou Gigante mas grande o suficiente para entender tudo a minha volta.

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

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

coyotestark

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/02/11Posts: 259Char no Tibia: Aias Laf Du

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.

385417_122391137880813_100003297811828_101325_1909172176_n.jpg

Nao sou Gigante mas grande o suficiente para entender tudo a minha volta.

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

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.

coyotestark

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/02/11Posts: 259Char no Tibia: Aias Laf Du

vejamos, colocar parada no creature/scripts depois registrar no creatures xml

depois talk,

belesa fiz tudo isso.

vou testar o automatico para ver se funciona

385417_122391137880813_100003297811828_101325_1909172176_n.jpg

Nao sou Gigante mas grande o suficiente para entender tudo a minha volta.

julhinhuu

Sempre em busca de novidades
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 28/06/11Posts: 352Char no Tibia: Akor Rysea

Aqui não conta os monstros que matei .. porque?

  • 1
  • 2