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)

Share this post


Link to post
Share on other sites

Share this post


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

Share this post


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 

Share this post


Link to post
Share on other sites

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.

Sign in to follow this  

  • Similar Content

    • By marcello cordeiro
      Olá galerinha do TK, venho aqui pedir uma ajuda para vocês...
      Estou precisando de um Castle que rola todos os dias 21:00 ate as 22:30...
      Até achei umas mas esta dando erro na hora que tomar o TRONO e passar encima movements....
      OBG PELA AJUDA REP+
    • By marcello cordeiro
      Olá galerinha do TK, venho aqui neste exato momento pedir uma ajuda para todos vocês...
      Eu vi em vários fóruns SISTEMAS INVASÃO, mas todos dão erros ao iniciar á INVASÃO no server mapper, começa a criar muitos bichos e parece os ERROS...
      Então peço para todos vocês do TK se podem me ajuda ou me passar SISTEMA INVASÃO completo que não de ERROS...
      Desde já OBRIGADO GALERINHA.... REP+
       
    • By marcello cordeiro
      Olá galerinha do TK, venho aqui pedir uma grande ajuda a todos vocês!!
      1: Eu adicionei Autoloot em meu server todo direito.
      2: Ele está adicionando todos os items e removendo normal.
      3: Ao adicionar e começar mata os Demon e tentar pegar os items adicionado, não esta pegando no Loots adicionado e nem se quer abrindo as BAGs.
      4: Preciso de suas Ajudas REP+ para quem me ajudar ou tentar OBG pela Atenção de todos.
    • By jeszao
      Bom Dia queria um script pra por em ot que eu estou criando,
      um script pros tps ficarem mostrando,
      testei alguns mais nenhum pegou, a versão é a mais nova 10.99 - 11
       
      Obrigado desde já
    • By vine96
      Olá pessoal, não sei se esta é a area correta, se não for mova obg.
      É o seguinte eu tenho um servidor Baiak, que estava rodando em TFS 0.3.6 v2 edited by cyko, Perfeitamente.

      Porém após 38-39 horas de uptime ele começou a dar varias travadas e debugs nos players, até que caiu... Eu não sei se foi algum player ou erro na configuração do distro mesmo. Sei que depois disso todas as vezes que eu iniciava, pouco tempo depois ele caia e sempre dava o mesmo erro no distro... Algo relacionado a C++
       
      Então decidi trocar de distro, coloquei um TFS 0.4 3777. Fiz várias adaptações para ficar compativel e talz, e claro o TFS 0.4 é muito melhor e superior ao 0.3.6.
      Só que de lá para cá vem ocorrendo alguns bugs no distro principalmente com o arquivo "init.lua" no globalevents.
      Já troquei várias vezes esse init de outros distros e talz e nada adianta, sempre ocorre o mesmo erro... Tentei colocar o start.lua também, mas ele inicia o server, também ocorre o erro e não dá para sequer logar algum character.
       
      Enfim esse erro não atrapalha em muito até agora... Só que a única coisa que percebi de mais encomodativo foi que sempre quando alguem morre, ou kila outro jogador aparece um erro no distro com esse init.lua relacionando a ids da database, como se ele não encontrasse... não entendi muito bem.
       
      Com isso os jogadores não ganham frag ao matar outro, e aquele sistema de frags no look também não muda nada, ou seja o player nunca ficará red ou ganhará frags... Será que alguem pode me ajudar? Vou mandar um anexo com a imagem do erro que aparece no distrom, quando inicia e quando algum player mata outro!


  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...