Jump to content

Recommended Posts

Salve pessoal, eu amo tibia e a comunidade já me deu muito, hoje finalmente sinto que posso dar algo de volta e vou estar disponibilizando esse código pra evento que eu fiz pro meu servidor. Esse código pode ser melhorado bastante mas é funcional e acredito ter pensando em todas as possibilidades de abuso e ter corrigido, ainda assim caso você faça alguma melhora por favor compartilhe aqui nos comentários :). Vou disponibilizar também a hotkey de elfbot no fim do tópico.

 

Durante o evento (duração de 15 min que você pode diminuir/aumentar), quando um player clica no item ele vai receber x leveis e a cada 2 clicks ele vai ganhar um item (no meu caso, uma event coin). Tem um exhaust de 2 secs a cada click pra evitar abuso com elfbot/auto click e eu não recomendo tirar, embora você possa diminuir/aumentar tranquilamente

 

Em globalevents.xml adicione

<globalevent name="clickupstart" time="19:00" event="script" value="clickupstart.lua"/>
<globalevent name="clickupclose" time="19:15" event="script" value="clickupend.lua"/>

 

Em globalevents/scripts crie um novo arquivo e nomeie de clickupend.lua e cole isso dentro

local storage = 64242 -- storage
function onTime()

    setGlobalStorageValue (storage, -1)
    doBroadcastMessage("THE CLICK UP EVENT HAS ENDED")
    return true

end

Ainda em globalevents/scripts crie um novo arquivo e nomeie de clickupstart.lua e cole isso dentro

local storage = 64242 -- storage que você quer zerar.
function onTime()

    setGlobalStorageValue (storage, 1)
    doBroadcastMessage("THE CLICK UP EVENT HAS STARTED")
    return true

end

Agora em actions.xml adicione a tag

<action actionid="42113" script="clickup.lua"/>

Em actions/scripts crie um arquivo chamado clickup.lua e cole isso dentro

local tempo = 2 -- segundos para usar novamente

function onUse(cid, item, frompos, item2, topos)
if getGlobalStorageValue(64242) == 1 then

if getPlayerStorageValue(cid, 45890) > os.time() or getPlayerLevel(cid) >= 717217 then -- se estiver no cooldown ou se for level maximo
        return doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, 45890) - os.time()).. " segundos para usar novamente e nao pode ser nivel maximo.")
end

if getPlayerStorageValue(cid, 45891) < 1 then
 doPlayerAddLevel(cid, 32)
 doCreatureSay(cid, "LEVEL UP", TALKTYPE_ORANGE_1, true, cid) 
 setPlayerStorageValue(cid, 45890, 2 + os.time())
 local bah = getPlayerStorageValue(cid, 45891)
 doPlayerSetStorageValue(cid, 45891, bah+1)
return true
else
 doPlayerAddLevel(cid, 32)
 doCreatureSay(cid, "LEVEL UP + EVENT COIN", TALKTYPE_ORANGE_1, true, cid) 
 doPlayerAddItem(cid,10558,1)
 setPlayerStorageValue(cid, 45890, 2 + os.time())
 doPlayerSetStorageValue(cid, 45891, -1)
return true
end

else -- msg quando o evento não ta rolando
	return doPlayerSendCancel(cid, "The event haven't started yet.")
end
end

Agora você abre seu mapa, cria uma area pro evento e você coloca a actions 42113 na statua/pedra/cristal que o player vai precisar dar use pra ganhar os leveis (eu uso o id 9779)

NÃO SE ESQUEÇA QUE A HOTKEY DE ELFBOT VAI MUDAR SE VOCÊ NÃO USAR O MESMO ID QUE EU

auto 200 listas 'Evento' | usegrounditem 8865

 

Edited by Gabrieldsadaxas
erro gramatical (see edit history)
Link to post
Share on other sites

  • Director

Muito criativo, primeira vez que vejo um evento assim, obrigado!

Tutoriais, lives, suporte, desafios, classificados e freelancer você encontra na Academia de Otserver.

separa10.png

 

Conheça nossos grupos:

 

academiaicone1.png                        academiaicone2.png

Academia de Mapping!        Academia de Coding!

 

academiaicone3.png

Academia de Design!

---------------------------------------------

 

 

Precisando de Sprites?

 

 

Academia de Spriting

Academia de Spriting - Baixe Sprites gratuitas (FREE) em nosso blog!

 

 

---------------------------

« Mapas do Nolis »

 

 

 

 

Link to post
Share on other sites

Um cara no otland deu uma editada no código da action e deixou assim, sem usar nenhuma storage p armazenar tempo

local players = {}
local tempo = 2 -- exhaust to click again and get levels
local level_gain = 32
local event_coin = {10558, 1} -- itemid, amount

function onUse(cid, item, frompos, item2, topos)
    if getGlobalStorageValue(64242) ~= 1 then
        doPlayerSendCancel(cid, "The event haven't started yet.")
        return true
    end
   
    local cur_time = os.time()
    if players[cid] and players[cid][1] > cur_time or getPlayerLevel(cid) >= 717217 then -- if the player is on cooldown or has already reached max level
        doPlayerSendCancel(cid, "You must wait " .. (players[cid][1] - cur_time) .. " seconds to use again or you have already reached maximum level.")
        return true
    end
   
    local text = "LEVEL UP"
    if players[cid] and players[cid][2] == 2 then
        text = text .. " + EVENT COIN"
        doPlayerAddItem(cid, event_coin[1], event_coin[2])
    end
   
    doPlayerAddLevel(cid, level_gain)
    doCreatureSay(cid, text, TALKTYPE_ORANGE_1, true, cid)
    players[cid] = {cur_time + tempo, players[cid] and players[cid][2] == 1 and 2 or 1}
    return true
end
Link to post
Share on other sites

1 hora atrás, Gabrieldsadaxas disse:

Um cara no otland deu uma editada no código da action e deixou assim, sem usar nenhuma storage p armazenar tempo

De uma maneira ou de outra a informação vai ficar na memoria, no caso de isso ser um evento massivo, eu iria optar pela sua versão com storage. 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link to post
Share on other sites

  • 5 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Diego Rosa
      Bom Dia, Alguem Poderia me Ajudar a Coloca a Caveira da Guild war em Um Evento de PVP. Quando vc Entra no Evento tem o Time Azul Vs Time Vermelho
      ex: Time azul Cai com a caverinha azul, e Time Vermelho cai com a Caverinha Vermelha
      Quando Entra no Evento Fica Assim
      Queria que Ficasse Assim 
      Alguem Poderia me da Uma Ajuda?
       
       
      Script (TVT
       
      Vai Na Pasta Lib e Copia o Script BattleLib.lua
       
      2- Vai Na Pasta Globalevents e Cole o Script TVTEvent
       
      3- Registrando em GlobalEvents.xml
      4- Agora em Movements Cole o Script BattleMovements
      5- Registrando em Movimentes.xml
       
    • By pabloxp
      gostaria que alguem me ajuda-se!! queria 1 sistema ou script que o trenó (Sled) se movimentase qnd o char fica-se em cima dele e ele controlase o trenó para as direçoes segurando CTRL + a direção desejada
      +rep pra qm ajudar
    • By gabriel luccera zika
      como vc leram no topico erri no meu globalevents
       

    • By baiakuda
      Boa noite.
       
      Gostaria de saber se é possivel editar esse script abaixo.
      Queria ao invez de ser por tempo (exemplo: 4 horas) fosse por dia e hora (exemplo: ["Monday"] ["12:00"] )
       
      Link do script
       http://www.tibiaking.com/forum/topic/36629-criar-teleport-de-evento-autom%C3%A1tico/ NOMEDOSCRIPT.lua
      function onThink(interval, lastExecution, thinkInterval) local config = { pos = {x=152, y=50, z=7}, -- Posição aonde sera criado o teleport topos = {x=1235, y=1197, z=7}, -- Posição pra onde o teleport ira levar o player tpid = 1387, -- id do teleport time = 5 -- tempo que o teleport ira sumir em minutos } function DelTp() local t = getTileItemById(config.pos, config.tpid) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(config.pos, CONST_ME_POFF) end end local time = 116 for i = 1,time do formula = time - 1*i addEvent(doSendAnimatedText,i*1000, config.pos, formula, 192) end doCreateTeleport(config.tpid, config.topos, config.pos) doBroadcastMessage("Evento VIP foi aberto!por favor os entereçados corram para o teleport que se localiza no templo e se fechara "..config.time.." minutos") addEvent(DelTp, config.time*60*1000) addEvent(doBroadcastMessage, config.time*60*1000, "Evento VIP. Proximo evento em 1h.") return true end em globalevents.xml
      <globalevent name="NOMEDOSCRIPT" interval="240000" event="script" value="NOMEDOSCRIPT.lua"/>
    • By jonei
      Olá Tibiakinguianos, meu OT tem uma coisa que eu não entendo pra que...
      Vip system
      Premmium system
       
      Pelo que eu sei o premmium system é aquele no qual tu pode tocar as spells, usar barco, comprar casa entre outros
       
      o Vip system... Ai é que esta o problema, eu não sei nem pra que serve o Vip system. então estou aqui pedindo pra que alguém me explique a diferença entre estes

      Desde já agradeço
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo