Ir para conteúdo
Entre para seguir isso  
Lwkass

Evento Automático~

Recommended Posts

Lwkass    1
Lwkass

┌────────────────────────────────────────┐

Nome: Evento Automático

Versão: 8.4x

Tipo do script: Movement e Global Event

Servidor Testado: The Forgotten Server 0.3.3

Autor: Lwkass

────────────────────────────────────────┘

 

Comentário: Nenhum.

Esse script serve para ajudar a fazer eventos nos server para diversão, deste modo o gm não precisa ficar online para fazer os eventos de itens.

Abra a pasta data/movements/scripts e adicione isso em um arquivo lua (Sugestão: eventos.lua) :

 

Lua:

--Feito por: Lwkass
--Evento Item
local rand = math.random(1,100)
local valores = {
   evento_items = {
   [color=DarkOrange][b]2153[/b][/color], --simple
   [color=DarkOrange][b]2154[/b][/color], --medium
   [b][color=DarkOrange]2155[/color][/b], --high
   [b][color=DarkOrange]2156[/color][/b]  --extreme
   },
   [b]simple[/b] = {
   [b][color=Red]ids[/color][/b] = {2386, 2689, 2148},
   [color=Blue][b]quant[/b][/color] = {1, [b][color=Indigo]rand[/color][/b], [color=Indigo][b]rand[/b][/color]}
   },
   [b]medium[/b] = {
   [color=Red][b]ids[/b][/color] = {2491, 2152, 2486},
   [b][color=Blue]quant[/color][/b] = {1, [color=Indigo][b]rand[/b][/color], 1}
   },
   [b]high[/b] = {
   [b][color=Red]ids[/color][/b] = {2498, 2160, 2494}, 
   [color=Blue][b]quant[/b][/color] = {1, [color=Indigo][b]rand[/b][/color], 1}
   },
   [b]extreme[/b] = {
   [color=Red][b]ids[/b][/color] = {2522, 2506, 2507},
   [color=Blue][b]quant[/b][/color] = {1, 1, 1}
   }
}

function onAddItem(moveitem, tileitem, position, cid)

   if getGlobalStorageValue(2200) == 1 then
       if getItemName(moveitem.uid) == "gem of the event" then
           if moveitem.itemid == valores.evento_items[1] then
           doRemoveItem(moveitem.uid, 1)
           local randomize = math.random(1,3)
           doPlayerAddItem(cid, valores.simple.ids[randomize], valores.simple.quant[randomize])
           doSendMagicEffect(getThingPos(cid), 12)
           doSendMagicEffect(position, 12)
           doBroadcastMessage('Evento: '..getCreatureName(cid)..' venceu o evento e ganhou '..valores.simple.quant[randomize]..' '..getItemNameById(valores.simple.ids[randomize])..' !', MESSAGE_INFO_DESCR)
           doBroadcastMessage('[color=DarkRed][u]Evento: Proximo evento em 2 horas.[/u][/color]', MESSAGE_EVENT_ORANGE)
           params = {[1]=cid}
           addEvent(fim,[color=DarkRed][b]7200000[/b][/color],params)
           return TRUE

           elseif moveitem.itemid == valores.evento_items[2] then
           doRemoveItem(moveitem.uid, 1)
           local randomize = math.random(1,3)
           doPlayerAddItem(cid, valores.medium.ids[randomize], valores.medium.quant[randomize])
           doSendMagicEffect(getThingPos(cid), 12)
           doSendMagicEffect(position, 12)
           doBroadcastMessage('Evento: '..getCreatureName(cid)..' venceu o evento e ganhou '..valores.medium.quant[randomize]..' '..getItemNameById(valores.medium.ids[randomize])..' !', MESSAGE_INFO_DESCR)
           doBroadcastMessage('[u][color=DarkRed]Evento: Proximo evento em 2 horas.[/color][/u]', MESSAGE_EVENT_ORANGE)
           params = {[1]=cid}
           addEvent(fim,[color=DarkRed][b]7200000[/b][/color],params)
           return TRUE

           elseif moveitem.itemid == valores.evento_items[3] then
           doRemoveItem(moveitem.uid, 1)
           local randomize = math.random(1,3)
           doPlayerAddItem(cid, valores.high.ids[randomize], valores.high.quant[randomize])
           doSendMagicEffect(getThingPos(cid), 12)
           doSendMagicEffect(position, 12)
           doBroadcastMessage('Evento: '..getCreatureName(cid)..' venceu o evento e ganhou '..valores.high.quant[randomize]..' '..getItemNameById(valores.high.ids[randomize])..' !', MESSAGE_INFO_DESCR)
           doBroadcastMessage('[color=DarkRed][u]Evento: Proximo evento em 2 horas.[/u][/color]', MESSAGE_EVENT_ORANGE)
           params = {[1]=cid}
           addEvent(fim,[color=DarkRed][b]7200000[/b][/color],params)
           return TRUE

           elseif moveitem.itemid == valores.evento_items[4] then
           doRemoveItem(moveitem.uid, 1)
           local randomize = math.random(1,3)
           doPlayerAddItem(cid, valores.extreme.ids[randomize], valores.extreme.quant[randomize])
           doSendMagicEffect(getThingPos(cid), 12)
           doSendMagicEffect(position, 12)
           doBroadcastMessage('Evento: '..getCreatureName(cid)..' venceu o evento e ganhou '..valores.extreme.quant[randomize]..' '..getItemNameById(valores.extreme.ids[randomize])..' !', MESSAGE_INFO_DESCR)
           doBroadcastMessage('[u][color=DarkRed]Evento: Proximo evento em 2 horas.[/color][/u]', MESSAGE_EVENT_ORANGE)
           params = {[1]=cid}
           addEvent(fim,[color=DarkRed][b]7200000[/b][/color],params)
           return TRUE
           end
       end
   end
--Feito por: Lwkass
end


function fim(params)
setGlobalStorageValue(2200,0)
end

Legenda Lua:

Esses são os niveis de valor dos items, sendo que "Simple", são os itens sem valor alto, como gold coins, axe etc... "Medium", são os items que já tem um pouco de valor, noble armor, platinum coins... "High", são os items que tem um alto valor, royal helmet, demon armor, crystal coins... e "Extreme", são os items raros, dragon scale helmet, great shield...

Esses são os IDs dos items que podem ser ganhados como recompensa.

Essa é a quantidade que pode ser ganho.

Esse "rand" é para ser utilizado em itens que podem ser agrupados(exemplo: Gold coins, platinum coins, talons, rubys, breads), esse rand vai sortiar de 1 à 100 para ver quanto daquele item a pessoa vai ganhar.

O que está em negrito é o tempo de espera entre um evento e otro e oque está sublinhado é a mensagem que vai ser mandada, mas alguns podem estar perguntando, porque eu coloquei o tempo de espera ai envez de deixar no global events configurado isso, pelo simples fato de que vai que as pessoas não terminaram o evento nesse tempo, ai vão ter q esperar mais duas horas ainda, por isso eu coloquei ai o tempo de espera, assim que colocarem o item na mesa começa a contagem.

Os items que vão ser necessários colocar na mesa(obs: esses items são gems).

 

Adicione essa linha no movements.xml

 

Xml:

    <movevent type="AddItem" tileitem="1" actionid="[b][color=Red]850[/color][/b]" event="script" value="[color=RoyalBlue][b]eventos[/b][/color].lua"/>

 

LegendaXml::

Não se esqueça de colocar na mesa que vai ser o lugar aonde vai ser colocado a gema, a actionid numero 850, eu axaria melhor colocar no templo, mas caso queira colocar em mais de 1 cidade, seria até mais interessante.

Nome do arquivo lua do script.

---

Pronto, Movement adicionado, agora vamos ao global event

---

 

Abra a pasta data/globalevents/scripts e adicione isso em um arquivo lua (Sugestão: eventoini.lua) :

 

Lua:

function onThink(interval, lastExecution)
local valor = {
   gem_pos = {
   {x=[b][color=Red]121[/color][/b],y=[b][color=DarkRed]418[/color][/b],z=[b][color=Green]7[/color][/b],stackpos=1},
   {x=[b][color=Red]164[/color][/b],y=[b][color=DarkRed]393[/color][/b],z=[b][color=Green]7[/color][/b],stackpos=1},
   {x=[b][color=Red]189[/color][/b],y=[b][color=DarkRed]379[/color][/b],z=[b][color=Green]7[/color][/b],stackpos=1},
   {x=[b][color=Red]179[/color][/b],y=[b][color=DarkRed]398[/color][/b],z=[b][color=Green]8[/color][/b],stackpos=1}
   },
   evento_items = {
   [color=DarkOrange][b]2153[/b][/color], --simple
   [b][color=DarkOrange]2154[/color][/b], --medium
   [b][color=DarkOrange]2155[/color][/b], --high
   [b][color=DarkOrange]2156[/color][/b]  --extreme
   }
}


   if getGlobalStorageValue(2200) == -1 or getGlobalStorageValue(2200) == 0 then
   local rand = math.random(1,4)
   local sorx = math.random(1,100)
   doBroadcastMessage('Evento: Esta começando mais um evento de item, ache a gema escondida e leve até a mesa no templo para ganhar sua recompensa !', MESSAGE_EVENT_ADVANCE)
   if sorx > 0 and sorx < 3 then
   doAddContainerItem(doCreateItem(1987, 1, valor.gem_pos[rand]), valor.evento_items[4], 1)
   elseif sorx > 2 and sorx < 11 then
   doAddContainerItem(doCreateItem(1987, 1, valor.gem_pos[rand]), valor.evento_items[3], 1)
   elseif sorx > 10 and sorx < 42 then
   doAddContainerItem(doCreateItem(1987, 1, valor.gem_pos[rand]), valor.evento_items[2], 1)
   elseif sorx > 41 and sorx < 101 then
   doAddContainerItem(doCreateItem(1987, 1, valor.gem_pos[rand]), valor.evento_items[1], 1)
   end
   local bag = getThingFromPos(valor.gem_pos[rand])
   setItemName(getContainerItem(bag.uid, 0).uid,"gem of the event")
   setGlobalStorageValue(2200,1)
   return TRUE
   end
return TRUE
end

Legenda Lua:

As Posições X que o item pode aparecer(Sugestão: Mudar todo dia, para que os players não decorem os lugares).

As Posições Y que o item pode aparecer(Sugestão: Mudar todo dia, para que os players não decorem os lugares).

As Posições Z que o item pode aparecer(Sugestão: Mudar todo dia, para que os players não decorem os lugares).

Mesma coisa do outro script, são as gems que vão ser criadas(se for mudar, dos dois scripts tem que ser iguais)

 

Obs: As gems ficam dentro de bags e com nomes diferentes para não ter como chegar com uma gem do mesmo id e colocar na mesa para ganhar, o nome das gems é "gem of the event".

Adicione essa linha no globalevents.xml

 

Xml:

 <globalevent name="evento" interval="[b][color=Red]5[/color][/b]" event="script" value="[color=RoyalBlue][b]eventoini[/b][/color].lua"/>

 

LegendaXml::

Não mude o tempo, deixe 5, o tempo de espera é para ser adicionado no movement.

Nome do arquivo lua do script.

 

---

Pretendo adicionar mais eventos "automáticos", sugestões e criticas construtivas são sempre bem-vindas e favor não retirar os créditos e nem postar em nenhum outro lugar !!!

 

By: Lwkass,

Grato~

Compartilhar este post


Link para o post
Mock    32
Mock

Comentario: ._.

 

Aprovadoico_aprovado.png & Movidoicon_movido.giffechado22xnux7.gif

 

mock.png

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

Não to afim de ler o script.

COMO, exatamente, o evento funciona/é ativado/e tralálá ?

 

Fora isso, adorei a formatação do tópico. :)

Compartilhar este post


Link para o post
Lwkass    1
Lwkass

Assim que um evento começar, até o fim dele ou seja até algum player colocar o item na mesa e ganhar a recompensa, só depois disso que tem o tempo de espera entre um evento e outro, para não ficar muito evento seguido, eu coloquei o tempo para 2 horas que tem no tópico como configurar ele.

O Evento funciona da seguinte maneira, é mandada uma mensagem avisando que começou o evento e explicando oque se deve fazer, é sortiado uma posição pré-definida no script aonde o item será criado, será criada uma bag, dentro dele que estará a gem com o nome de "gem of the event", para não ter como as pessoas chegarem com gems que não sejam do evento e assim ganharem prêmios também.

Compartilhar este post


Link para o post
Eroz    0
Eroz

Mas qual é o evento?

Compartilhar este post


Link para o post
Nighandy    0
Nighandy

Legal o script,talvez eu use

Compartilhar este post


Link para o post
Fereu    0
Fereu

seria legal se criasse junto uma action pra essa gem pra que ela se transformasse em um item, parecido com aqueles itens que usa o rust remover, ai não precisaria levar ao gm/god..

Compartilhar este post


Link para o post
Lwkass    1
Lwkass

@Fereu

Como já está no tópico, não precisa de gm/god ninguém, o próprio script dá a recompensa colocando a gem encima da mesa.

Compartilhar este post


Link para o post
Lyu Elite    0
Lyu Elite

O ruim e configurar o script , todo dia mudar de mapa (Opicional)

Em fim ~Ta bom o script

Gostei colocado no meu serv~

AprovadO

Compartilhar este post


Link para o post
FeKilleR    0
FeKilleR

Fico bom...

Mas o lugar aonde a bag vai ser criada é aleatoriamente?

Compartilhar este post


Link para o post
Kerooker    0
Kerooker

eu naum entendi exatamente como funciona, vc pode me esplicar?

sempre quis botar no meu ot evento automatico, mais naum sei como, (agora sei mais ainda naum sei) se naum entendeu essa frase, me esplique como funciona seu script q eu t espliko a frase ^^ =D

Compartilhar este post


Link para o post
kako_loko    0
kako_loko

Olha Gostei do script...

adicionado no meu serv~

 

~Aprovado~

Compartilhar este post


Link para o post
shurtup    0
shurtup

[08/09/2009 22:21:43] Lua Script Error: [GlobalEvent Interface]

[08/09/2009 22:21:43] data/globalevents/scripts/eventoini.lua:onThink

 

[08/09/2009 22:21:43] luaGetContainerItem(). Container not found

 

[08/09/2009 22:21:43] Lua Script Error: [GlobalEvent Interface]

[08/09/2009 22:21:43] data/globalevents/scripts/eventoini.lua:onThink

 

[08/09/2009 22:21:43] luaSetItemName(). Item not found

 

Aparece esse erro.!

comoa geito?

Compartilhar este post


Link para o post
alecao    0
alecao

primeira vez fucionou mais depois não pego mais o evento

Compartilhar este post


Link para o post
Nighandy    0
Nighandy
[08/09/2009 22:21:43] Lua Script Error: [GlobalEvent Interface]

[08/09/2009 22:21:43] data/globalevents/scripts/eventoini.lua:onThink

 

[08/09/2009 22:21:43] luaGetContainerItem(). Container not found

 

[08/09/2009 22:21:43] Lua Script Error: [GlobalEvent Interface]

[08/09/2009 22:21:43] data/globalevents/scripts/eventoini.lua:onThink

 

[08/09/2009 22:21:43] luaSetItemName(). Item not found

 

Aparece esse erro.!

comoa geito?

 

Você não deve ter instalado direto,

repita passo-a-passo.

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×