Jump to content
Close
JoviM

Action [8.6] Reunindo Fragmentos

Recommended Posts

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


Edited by JoviM (see edit history)

Share this post


Link to post
Share on other 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: Werner#2974

Share this post


Link to post
Share on other 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

 

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.


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!

×
×
  • Create New...