Ir para conteúdo
Close
JoviM

Action [8.6] Reunindo Fragmentos

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 :).


Editado por JoviM (veja o histórico de edições)

Compartilhar este post


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.

 


Compartilhar este post


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.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Compartilhar este post


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.


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 partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade 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! A publicação do seu anuncio é instantânea!

×
×
  • Criar Novo...