Ir para conteúdo
  • Cadastre-se

(Resolvido){Pedido} Criação de potion


Ir para solução Resolvido por xWhiteWolf,

Posts Recomendados

Olá Galera!

 

Hoje estava olhando meu servidor e estava pensando que legal seria os players criarem suas próprias potions, e não comprar no NPC.

 

Então estou aqui pedindo um script para fazer isso acontecer, tentarei explicar melhor:

 

O player terá que ter na backpack dois items. {Item1 = 15546 , Item2 = 2346}

Então ele terá que dar use em um caldeirão que ficará no chão. {cald1 = 1427}

Após dar use no cald1 ele se transformará em outro caldeirão. {cald2 = 1428}

Então após isso o player poderá pegar o frasco vazio, dar use nele e clicar sobre o cald2. {frasc = 7636}

 

Bom, não sei se alguém vai conseguir fazer do jeito que descrevi, mas se alguém conseguir fazer parecido também aceito.

 

Rep++

 

Agradecido.  ^^

 

 

Oi

Link para o post
Compartilhar em outros sites
  • Solução

Crie um arquivo.xml em data/mods chamado Alchemist.xml e cole isto dentro:

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Alchemist System" version="1.0" author="Leoxtibia" contact="none" enabled="yes">
<config name="alch_sys"><![CDATA[

counter = {x = 17, y = 56, z = 7}
efeitos = {x=17, y=53, z=7}

receitas = {
{items = {{2160,1}, {2157,2}} , itemgain = {{5878,100}}, storage = 56000},
{items = {{2148,5}, {2155,1}} , itemgain = {{2113,1}}, storage = 56001},
{items = {{2498,1}, {2113,1}} , itemgain = {{2472,1}}, storage = 56002}
}

function Caldeiron()
local B = {
{3693,{x=17, y=53, z=7, stackpos = 1}},
{3694,{x=18, y=53, z=7, stackpos = 1}}
}
for i = 1, #B do
doTransformItem(getThingfromPos(B[i][2]).uid,getTileItemById(B[i][2], B[i][1]).uid == 0 and B[i][1] or (B[i][1]-4))
end
end

function getItemsInPos(items, pos)
     for i = 1,#items do
     local stack = getTileItemById(pos, items[i][1])
         if stack.uid > 0 and math.max(1, stack.type) >= items[i][2] and i == #items then
         return true
         end
     end
return false
end

function doRemoveItensInPos(items, pos)
local items = type(items) == "table" and items or {items}
         for i = 1, table.maxn(items) do
     doRemoveItem(getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=2}).uid)
     end
     return nil
end

function effets(position,delay)
     local text = {"Ishhh!", "Kaboom", "Tic Tac", "BUM!", "Blop Blop!", "Cronch!"}
     local effects = {2, 6, 25, 31, 36,40, 54, 51, 65, 66, 67, 68}
if delay ~= 0 then
     doSendAnimatedText(position, text[math.random(1, #text)], math.random(1, 255))
     doSendMagicEffect(position, effects[math.random(1, #effects)])
     addEvent(effets, 1000, position, delay -1)
end
end]]></config>
<action actionid="4780" event="script"><![CDATA[
domodlib('alch_sys')
function onUse(cid, item, fromPosition, itemEx, toPosition)
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
for _, t in ipairs(receitas) do
         if getItemsInPos(t.items, counter) then
             doRemoveItensInPos(t.items, counter)
             effets(efeitos,6)
             Caldeiron()
             return setPlayerStorageValue(cid, t.storage, 1)
         end
end
return doPlayerSendCancel(cid, "You must put the correct items in the counter.")
end]]></action>
<action itemid="2567" event="script"><![CDATA[
domodlib('alch_sys')
function onUse(cid, item, fromPosition, itemEx, toPosition)
if itemEx.actionid == 4781 then
     for _, x in ipairs(receitas) do
         if getPlayerStorageValue(cid, x.storage) >= 0 then
             for i=1,#x.itemgain do
             doPlayerAddItem(cid, x.itemgain[i][1], x.itemgain[i][2])
             doPlayerPopupFYI(cid, "You have prepared ".. x.itemgain[i][2] .." ".. getItemNameById(x.itemgain[i][1]) ..".")
             end
             Caldeiron()
             setPlayerStorageValue(cid, x.storage, -1)
         end
     end
end
return true
end]]></action>
</mod>

Configuração:

Quote


counter = {x = 17, y = 56, z = 7} -- local do counter (balcão) onde os items estarão.
efeitos = {x=17, y=53, z=7} -- é a primeira posição mostrada no vídeo

receitas = {
{items = {{2160,1}, {2157,2}} , itemgain = {{5878,100}}, storage = 56000}, --- items = {ITEMS DA RECEITA}, itemgain={ITEMQUEGANHARÁ}
{items = {{2148,5}, {2155,1}} , itemgain = {{2113,1}}, storage = 56001},
{items = {{2498,1}, {2113,1}} , itemgain = {{2472,1}}, storage = 56002}
}

function Caldeiron() ----- [só EDITE AS POSIÇÕES]
local B = { 
{3693,{x=17, y=53, z=7, stackpos = 1}}, --- PRIMEIRA POSIÇÃO no vídeo -- não mexa no stackpos
{3694,{x=18, y=53, z=7, stackpos = 1}} -- segunda posição no vídeo -- n mexa no stackpos

Para adicionar mais receitas, é só adicionar mais uma linha, mudando o storage para +1. Lembrando que a última linha não tem vírgula no final.
{items = {{2666,1}, {2671,1}} , itemgain = {{2672,1}}, storage = 56003}


aqui tem um vídeo de como o sistema funciona:

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Crie um arquivo.xml em data/mods chamado Alchemist.xml e cole isto dentro:

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Alchemist System" version="1.0" author="Leoxtibia" contact="none" enabled="yes">
<config name="alch_sys"><![CDATA[

counter = {x = 17, y = 56, z = 7}
efeitos = {x=17, y=53, z=7}

receitas = {
{items = {{2160,1}, {2157,2}} , itemgain = {{5878,100}}, storage = 56000},
{items = {{2148,5}, {2155,1}} , itemgain = {{2113,1}}, storage = 56001},
{items = {{2498,1}, {2113,1}} , itemgain = {{2472,1}}, storage = 56002}
}

function Caldeiron()
local B = {
{3693,{x=17, y=53, z=7, stackpos = 1}},
{3694,{x=18, y=53, z=7, stackpos = 1}}
}
for i = 1, #B do
doTransformItem(getThingfromPos(B[i][2]).uid,getTileItemById(B[i][2], B[i][1]).uid == 0 and B[i][1] or (B[i][1]-4))
end
end

function getItemsInPos(items, pos)
     for i = 1,#items do
     local stack = getTileItemById(pos, items[i][1])
         if stack.uid > 0 and math.max(1, stack.type) >= items[i][2] and i == #items then
         return true
         end
     end
return false
end

function doRemoveItensInPos(items, pos)
local items = type(items) == "table" and items or {items}
         for i = 1, table.maxn(items) do
     doRemoveItem(getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=2}).uid)
     end
     return nil
end

function effets(position,delay)
     local text = {"Ishhh!", "Kaboom", "Tic Tac", "BUM!", "Blop Blop!", "Cronch!"}
     local effects = {2, 6, 25, 31, 36,40, 54, 51, 65, 66, 67, 68}
if delay ~= 0 then
     doSendAnimatedText(position, text[math.random(1, #text)], math.random(1, 255))
     doSendMagicEffect(position, effects[math.random(1, #effects)])
     addEvent(effets, 1000, position, delay -1)
end
end]]></config>
<action actionid="4780" event="script"><![CDATA[
domodlib('alch_sys')
function onUse(cid, item, fromPosition, itemEx, toPosition)
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
for _, t in ipairs(receitas) do
         if getItemsInPos(t.items, counter) then
             doRemoveItensInPos(t.items, counter)
             effets(efeitos,6)
             Caldeiron()
             return setPlayerStorageValue(cid, t.storage, 1)
         end
end
return doPlayerSendCancel(cid, "You must put the correct items in the counter.")
end]]></action>
<action itemid="2567" event="script"><![CDATA[
domodlib('alch_sys')
function onUse(cid, item, fromPosition, itemEx, toPosition)
if itemEx.actionid == 4781 then
     for _, x in ipairs(receitas) do
         if getPlayerStorageValue(cid, x.storage) >= 0 then
             for i=1,#x.itemgain do
             doPlayerAddItem(cid, x.itemgain[i][1], x.itemgain[i][2])
             doPlayerPopupFYI(cid, "You have prepared ".. x.itemgain[i][2] .." ".. getItemNameById(x.itemgain[i][1]) ..".")
             end
             Caldeiron()
             setPlayerStorageValue(cid, x.storage, -1)
         end
     end
end
return true
end]]></action>
</mod>

Configuração:

Quote

counter = {x = 17, y = 56, z = 7} -- local do counter (balcão) onde os items estarão.

efeitos = {x=17, y=53, z=7} -- é a primeira posição mostrada no vídeo

receitas = {

{items = {{2160,1}, {2157,2}} , itemgain = {{5878,100}}, storage = 56000}, --- items = {ITEMS DA RECEITA}, itemgain={ITEMQUEGANHARÁ}

{items = {{2148,5}, {2155,1}} , itemgain = {{2113,1}}, storage = 56001},

{items = {{2498,1}, {2113,1}} , itemgain = {{2472,1}}, storage = 56002}

}

function Caldeiron() ----- [só EDITE AS POSIÇÕES]

local B = { 

{3693,{x=17, y=53, z=7, stackpos = 1}}, --- PRIMEIRA POSIÇÃO no vídeo -- não mexa no stackpos

{3694,{x=18, y=53, z=7, stackpos = 1}} -- segunda posição no vídeo -- n mexa no stackpos

Para adicionar mais receitas, é só adicionar mais uma linha, mudando o storage para +1. Lembrando que a última linha não tem vírgula no final.

{items = {{2666,1}, {2671,1}} , itemgain = {{2672,1}}, storage = 56003}

aqui tem um vídeo de como o sistema funciona:

 

Não tem como fazer para os items estarem na bp não?

Oi

Link para o post
Compartilhar em outros sites

não precisa citar o tópico inteiro pra falar isso haha eu não to com tempo pra fazer isso pra ti, são pequenas alterações mas teria que ficar testando e to com 3 scripts grandes pra trazer pra cá até o final das minhas férias (daqui a 16 dias). O script é de autoria de outra pessoa e eu só postei aqui pra ajudar

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo