Ir para conteúdo

The Necronomicon - o livro demoniaco


Killua

Posts Recomendados

 

Nome: The Necronomicon

Versao testada: tfs 0.4

 

 

PS: Meu teclado nao tem ascentos nem cedilha, nao reparem na grafia.

 

Eae XTibia_smile.gif , vou postar um script que eu fiz. Eu utilizava ele no meu antigo servidor, o Mell World, pois ja que o server esta fexado eu nao queria que esse script fosse esquecido.

 

Ele faz o seguinte: Quando usado, ele oferece 3 opcoes:

 

 

  • Ser teleportado para uma area exclusiva de hunt, onde se pode permanecer por no maximo 1 hora (configuravel), uma vez por dia
  • Sumonar um monstro diferente (no meu ot eu tinha criado a Alma Penada, que dropava itens exclusivos)
  • Simplesmente perder 500 vida.

Ele so pode ser usado a cada 15 minutos e, dependendo de qual opcao for sorteada, faz o player falar algo.

 

Script (actions/scripts/necronomicon.lua)


local hunt = {x=596, y=1037, z=4}
local options = {
      [1] = {name = "teleportar"},
      [2] = {name = "sefrodo"},
      [3] = {name = "summon"}
      }
      function onUse(cid, item, fromPosition, itemEx, toPosition)
          if isCreature(cid) then
              local fazer = options[math.random(1, #options)]
              if getPlayerStorageValue(cid, 12391) < os.time () then
                  setPlayerStorageValue(cid, 12391, os.time () + 15*60)
                  if fazer.name == "teleportar" then
                      if getPlayerStorageValue(cid, 12481) < os.time () then
                          setPlayerStorageValue(cid, 12481, os.time () + 60*60*24)
            addEvent(voltarprotemplo, 1000*60*60, cid)
            doTeleportThing(cid, hunt)
            setPlayerStorageValue(cid, 24739, 1)
            doSendMagicEffect(hunt, CONST_ME_TELEPORT)
            doCreatureSay(cid,"Aha! Consegui decifrar o caminho secreto!",TALKTYPE_ORANGE_1)
        else
            doPlayerSendCancel(cid,"Voce nao pode entrar na are 64 mais de uma vez por dia")
        end
    elseif fazer.name == "sefrodo" then
        doCreatureAddHealth(cid, -500)
        doCreatureSay(cid,"Cada coisa que esta escrita nesse livro... Nao consigo suportar!",TALKTYPE_ORANGE_1)
    elseif fazer.name == "summon" then
        doCreateMonster("Alma Penada",getCreaturePosition(cid))
        doCreatureSay(cid,"Nao era bem isso que eu queria, mas...",TALKTYPE_ORANGE_1)
        end
else
    doPlayerSendCancel(cid, "Você so consegue ler a cada 15 minutos! Espere.")
end
function voltarprotemplo(cid, pos)
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    setPlayerStorageValue(cid, 24739, -1)
    doPlayerSendTextMessage(cid, 22, "Voce ja atingiu seu limite de permanencia na Area 64, voce foi teleportado para o templo")
end
end
return true 
end
Editado por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Acho que do jeito que o script tá, se o cara for teleportado pra hunt e deslogar ou relogar lá, ele não vai ser teleportado depois dessa 1h e vai dar erro de creature not found.

Então você teria que colocar um onLogin pra se o cara tiver passado do tempo, devolver ele pro templo e, se não, colocar um addEvent de novo. Além disso, acho que você poderia colocar um isCreature na sua função de devolver pro templo.

Link para o comentário
Compartilhar em outros sites

Isso é verdade, quando eu escrevi o tópico eu tinha colocado a parte que ia no login.lua, e só agora vi que não apareceu --' o XTibia sempre come pedaços das respostas ou das edições. É por causa disso que o script adiciona um storage a mais, que é pro caso dele relogar.

 

Valeu por me avisar mano, quando eu voltar pra minha casa vou arrumar :)

 

E pq usar isCreature? Vc pode me explicar? Eu nao etendo ela mt bem

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

Isso é verdade, quando eu escrevi o tópico eu tinha colocado a parte que ia no login.lua, e só agora vi que não apareceu --' o XTibia sempre come pedaços das respostas ou das edições. É por causa disso que o script adiciona um storage a mais, que é pro caso dele relogar.

 

Valeu por me avisar mano, quando eu voltar pra minha casa vou arrumar :)

 

E pq usar isCreature? Vc pode me explicar? Eu nao etendo ela mt bem

 

Porque você vai usar um addEvent com um cid. O cid é único pra cada criatura e jogador. Daí, imagina se o jogador morre ou loga. O computador não sabe que é pra mudar o cid dele nesse caso, e quando (ou se) ele voltar, aquele cid que você usou já não existe mais. Então o computador lê um cid e tenta procurar uma criatura, mas não acha, ai aparece aquele erro no distro: creature not found. Por isso você usa if not isCreature(cid) then return true end em scripts desse tipo, porque se não for uma criatura, ele nem vai tentar fazer nada e não vai dar erro.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...