Postado Outubro 2, 2018 6 anos 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 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 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 .
Postado Outubro 2, 2018 6 anos 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: Discord:
Postado Outubro 3, 2018 6 anos 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. [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Maio 17, 2020 5 anos 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 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?
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.