Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Sobre*

OBS: ISSO É UM INCREMENTO PARA QUEST/TASK.

Acabei desenvolvendo esse sisteminha(se é que da pra chamar de sistema euheu) quando fui ajudar um membro do fórum, o Npc dele setava(dava) ao player a mesma storage com valores diferentes, ai eu pensei um pouco e saiu isso aqui, achei legal e estou trazendo aqui :)

 

O sistema ocorre da seguinte maneira: Você deve procurar por itens no mapa e dar use neles, ao dar use você recebe um fragmento e depois usa esses fragmentos para outra função a qual você desejar, como liberar a entrada de uma quest por exemplo ou até mesmo trocar por outros itens.

 

Ex: Ao falar com um npc, ele te da a seguinte task. Procure este item pelo mapa Capturar.PNG.a3dc2c2733f9c2510555bbee29ee68c1.PNG ao encontrar recolha o item escondido dentro dele. Escolha o item que quiser, coloque mais de um item próximos assim a dificuldade aumenta (apenas um item terá a actionid, os demais seriam para confundir o jogador).

 

Exemplo da localização dos itens. Lembrando que você pode dificultar um pouco a procura por esses itens colocando eles em cidades diferentes, assim o player demora um tempinho até reunir todos os fragmentos.

Citar

locais.png.c729d13b5d68332b473e12bd4e7008e3.png

Instalando*

Em data/actions/scripts, crie um arquivo .lua com o nome que desejar e em seguida adicione o script abaixo dentro.

Citar

local t = {

    storage = 2548, -- Storage.
    fragments = {2159, 1}, -- Item que o player vai receber / Quantidade. 
    i1 = 2001, -- ActionID dos itens.
    i2 = 2002,
    i3 = 2003,
    i4 = 2004,
    i5 = 2005,
    i6 = 2006,
    i7 = 2007,
    i8 = 2008,
    i9 = 2009,
    i10 = 2010
}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if item.actionid == t.i1 then

if getPlayerStorageValue(cid, t.storage) == -1 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i2 then

if getPlayerStorageValue(cid, t.storage) == 0 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i3 then

if getPlayerStorageValue(cid, t.storage) == 1 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i4 then

if getPlayerStorageValue(cid, t.storage) == 2 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i5 then

if getPlayerStorageValue(cid, t.storage) == 3 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i6 then

if getPlayerStorageValue(cid, t.storage) == 4 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i7 then

if getPlayerStorageValue(cid, t.storage) == 5 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i8 then

if getPlayerStorageValue(cid, t.storage) == 6 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i9 then

if getPlayerStorageValue(cid, t.storage) == 7 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

if item.actionid == t.i10 then

if getPlayerStorageValue(cid, t.storage) == 8 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

    return true

end

Agora em data/actions, abra o arquivo actions.xml e adicione a seguinte tag nele. ( Coloque os ActionID's dos itens espalhados pelo mapa em sequência. Ex: 2001, 2002, 2003, 2004.... Assim fica mais facíl para registrar o script, pois basta colocar: fromaid = 2001, toaid = 2010)

Citar

<action fromaid="2001" toaid="2010" event="script" value="SEU ARQUIVO.lua"/>

Mais e menos itens*

 

Eu criei o script para 10 itens, ou seja, terá 10 itens espalhados pelo mapa. Para aumentar ou diminuir o número de itens, olhe explicações abaixo.

 

Mais itens*

Citar

Adicione uma virgula (,) no último número da tabela e abaixo dele adicione i11 ou i12 ou i13... e assim vai.

i1 = 2001,
i2 = 2002,
i3 = 2003,
i4 = 2004,
i5 = 2005,
i6 = 2006,
i7 = 2007,
i8 = 2008,
i9 = 2009,
i10 = 2010,
i11 = 2011

 

NÃO SE ESQUEÇA DE COLOCAR A ACTIONID DO ITEM.

 

Após ter adicionado o i11 e o actionID dele na sua tabela, você vai adicionar estas linhas no script.

-----------------------------------------------
if item.actionid == t.ixx then

if getPlayerStorageValue(cid, t.storage) == x then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end
-----------------------------------------------

 

Mas em que lugar coloco elas? Para deixar o código organizado e tudo mais, coloque-as antes de:

return true
end

 

Esta assim no script:
-----------------------
end

end

-- Aqui vão as linhas

return true

end
-----------------------

 

Mas é só adicionar elas e pronto? Não, nós vamos "configurar" elas.

 

if item.actionid == t.ixx then

if getPlayerStorageValue(cid, t.storage) == x then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

 

Onde tem t.ixx, você vai substituir o ixx por i11, i12 ou i13, depende do número de itens que você tem espalhados pelo mapa (i10 = 10 itens no mapa, i13 = 13 itens no mapa).

E no x, você vai ver qual é o número na mesma linha da função acima e vai somar 1. Ou vai pegar o i11 e fazer - 2. 

Não entendeu? Bom, no lugar do x, você vai colocar o resultado do ixx - 2.

 

Ex:
i10 - 2 = 8
i11 - 2 = 9
i12 - 2 = 10
i13 - 2 = 11

 

É isso, bem simples né? Caso não tenha entendido, leia de novo que não tem erro :).

Menos itens*

Citar

Você tem essa tabela, nela tem 10 itens. Para diminuir o número de itens, primeiro você vai remover ele da tabela. Vamos remover o i10.

i1 = 2001,
i2 = 2002,
i3 = 2003,
i4 = 2004,
i5 = 2005,
i6 = 2006,
i7 = 2007,
i8 = 2008,
i9 = 2009,
i10 = 2010

 

Após remover o i10.

i1 = 2001,
i2 = 2002,
i3 = 2003,
i4 = 2004,
i5 = 2005,
i6 = 2006,
i7 = 2007,
i8 = 2008,
i9 = 2009

 

Para remover o item da tabela é só isso. Mas, temos que remover o item do script agora. Primeiro localize ele no script.

 

if item.actionid == t.i10 then

if getPlayerStorageValue(cid, t.storage) == 8 then

    doPlayerAddItem(cid, t.fragments[1], t.fragments[2])

        setPlayerStorageValue(cid, t.storage, (getPlayerStorageValue(cid, t.storage) + 1))

    end

end

 

Para que não de erro algum, você vai remover desta linha:

if item.actionid == t.i10 then,

até esta palavra

end


Note que dentro dessas linhas citadas acima deve ter mais 1 end.

Edit: Modifiquei algumas coisas no tópico, também arrumei o script para ficar melhor de compreender, e adicionei a ele o que o @Vodkart falou :).

Link para o post
Compartilhar em outros sites

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Talvez você queira ver:

BestBaiak

[FAQ]Remere's Map Editor - Dúvidas e soluções de bugs 

 

Contato:

1.png.dadb3fc3ee6ffd08292705b6a71e3d88.png Discord:

Link para o post
Compartilhar em outros sites

Ideia bacana!! Coloca para fazer a marcação no mapa de onde estiverem os itens,,, e tbm dá para usar tabelas no código... Abraços.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
Em 02/10/2018 em 15:33, Jovim disse:

Sobre*

OBS: ISSO É UM INCREMENTO PARA QUEST/TASK.

Acabei desenvolvendo esse sisteminha(se é que da pra chamar de sistema euheu) quando fui ajudar um membro do fórum, o Npc dele setava(dava) ao player a mesma storage com valores diferentes, ai eu pensei um pouco e saiu isso aqui, achei legal e estou trazendo aqui :)

 

O sistema ocorre da seguinte maneira: Você deve procurar por itens no mapa e dar use neles, ao dar use você recebe um fragmento e depois usa esses fragmentos para outra função a qual você desejar, como liberar a entrada de uma quest por exemplo ou até mesmo trocar por outros itens.

 

Ex: Ao falar com um npc, ele te da a seguinte task. Procure este item pelo mapa Capturar.PNG.a3dc2c2733f9c2510555bbee29ee68c1.PNG ao encontrar recolha o item escondido dentro dele. Escolha o item que quiser, coloque mais de um item próximos assim a dificuldade aumenta (apenas um item terá a actionid, os demais seriam para confundir o jogador).

 

Exemplo da localização dos itens. Lembrando que você pode dificultar um pouco a procura por esses itens colocando eles em cidades diferentes, assim o player demora um tempinho até reunir todos os fragmentos.

Instalando*

Em data/actions/scripts, crie um arquivo .lua com o nome que desejar e em seguida adicione o script abaixo dentro.

Agora em data/actions, abra o arquivo actions.xml e adicione a seguinte tag nele. ( Coloque os ActionID's dos itens espalhados pelo mapa em sequência. Ex: 2001, 2002, 2003, 2004.... Assim fica mais facíl para registrar o script, pois basta colocar: fromaid = 2001, toaid = 2010)

Mais e menos itens*

 

Eu criei o script para 10 itens, ou seja, terá 10 itens espalhados pelo mapa. Para aumentar ou diminuir o número de itens, olhe explicações abaixo.

 

Mais itens*

Menos itens*

Edit: Modifiquei algumas coisas no tópico, também arrumei o script para ficar melhor de compreender, e adicionei a ele o que o @Vodkart falou :).

 

 

mano pra versao

8.54?

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Imperius
      Olá, pessoal! Acabei encontrando um script que tinha feito a um tempo atrás. Estou compartilhando aqui para quem quiser usar ou melhorar.
       
      É bem parecido com os outros sistemas de roleta, igual deste tópico: https://tibiaking.com/forums/topic/101557-action-cassino-roleta-de-items/
       
      Como funciona?
       
      O "Treasure Chest" é um item custom, onde o jogador têm a possibilidade de ganhar itens raros ou bem meia boca. Tudo dependerá da sorte.
       
      O jogador precisa tacar o treasure chest na bancada e acionar a alavanca. O treasure chest irá se transformar em vários itens de forma randômica no qual o jogador poderá ou não ganhar. No final, apenas um item é entregue ao jogador.
       
      Para entender melhor o seu funcionamento, segue o GIF abaixo:
       

       
       
      em data > actions > actions.xml
       
       
      em data > actions > scripts > crie um arquivo chamado leverTreasureChest.lua
       
       
      no banco de dados do servidor, adicione o seguinte código em "SQL":
       
       
       

      Também estou disponibilizando uma página PHP, para quem quiser usar no site do servidor. Na página tem informações sobre o funcionamento, quais são os possíveis prêmios e a lista de jogadores que ganharam os itens raros.
       

       
       
      Espero ter ajudado de alguma forma! : )
       
      treasure_chest.php
    • Por amoxicilina
      Action: Remover skull
       
       
    • Por Dono do WNA
      Andei procurando aqui pelo TK inteiro e não acho um script funcional para um boss room onde o player clica com direito num altar (parecido com uma alavanca) podendo ir sozinho ou com até 10 jogadores ele é teleportado para uma sala com o boss, podendo desafiar ele a cada 20 horas, toda vez que um jogador puxa a alavanca ele checa se tem player na sala e caso tenha, precisa esperar todos os jogadores sairem. Caso o boss esteja vivo sem players dentro da sala ele remove e adiciona um novo assim que puxam a alavanca.

      Achei scripts parecidos no forum porém são todos para TFS 1.x+ e eu uso o 0.4 e nenhum compatível que achei esta funcionando

      TFS 0.4 REV 3996
    • Por cssiqueira
      Bom , minha primeira contribuição aqui no fórum, espero que ajude o pessoal novato assim como me ajudou pois sempre acho scripts para servers antigos mas para esses novos que não usam XML fica difícil, aqui no meu OT funcionou corretamente  estou usando o sistema VIP que insere na database em Account o campo vipdays e viplastday 
       
      OT -> Canary 1.3.0 / Cliente 12.86
       
      Eu criei o arquivo Lua em .: data\scripts\movements\others , O nome vocês que escolhem pode ser televip.lua...viptele.lua....teleportvip.lua fica a seu gosto ?
       
      local config = { teleportActionId = Coloque Aqui o ACTION ID do item de teleport criado em seu RME } local teleVIP = MoveEvent('teleVIP') function teleVIP.onStepIn(player, item, position, fromPosition) if player:getVipDays() == 0 then player:teleportTo(fromPosition) player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce nao tem VIP.") return true end return true end teleVIP:aid(config.teleportActionId) teleVIP:register()  
       
    • Por aicilopmes123
      Gostaria de pedir script de boss em alavanca 8.60, onde o player pode ir solo ou em 4 pessoas. Assim que puxar a alavanca sumona um boss, caso o time morra ele é deletado para o próximo player que for entrar, tendo um exhaust de 20 horas. Agradeço desde já 
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo