Ir para conteúdo
Entre para seguir isso  
Karyus

Sistema De Alquimia Versão 1.0

Recommended Posts

Karyus    2
Karyus

Procurei pelo forum e não achei um sistema parecido, então resolvi trazer para o fórum.

 

[spoiler=Alquimia]

 

Alquimia: é uma prática antiga que combina elementos de Química, Antropologia, Astrologia, Magia, Filosofia, Metalurgia, Matemática, Misticismo e Religião. Existem quatro objetivos principais na sua prática. Um deles seria a transmutação dos meta-metais inferiores ao ouro, o outro a obtenção do Elixir da Longa Vida, um remédio que curaria todas as coisas e daria vida longa àqueles que o ingerissem. Ambos os objetivos poderiam ser notas ao obter a pedra filosofal, uma substância mística.O terceiro objetivo era criar vida humana artificial, os homunculus. O quarto objetivo era fazer com que a realeza conseguisse enriquecer mais rapidamente. É reconhecido que, apesar de não ter caráter científico, a alquimia foi uma fase importante na qual se desenvolveram muitos dos procedimentos e conhecimentos que mais tarde foram utilizados pela química.

 

Texto retirado de: http://pt.wikipedia.org/wiki/Alquimia

 

 

 

[spoiler=Como funciona]

 

Como Funciona: O sistema é composto por uma talkaction e uma action. A talkaction serve para criar novas gemas, ou seja, fundir gemas já existentes e transformá-las em outras. Já a action serve para fundir a arma a gema, sendo que há um hierarquia entre as gemas e armas. A hierarquia é assim:

 

Há as gemas iniciais, que são pérolas, que podem refinar as armas escolhidas para o set1. Há as gemas secundárias e o gold nugget (item dado na fusão das perolas) que podem refinar armas de set2. Há as gemas terciárias e o small diamond (item dado na fusão dos diamantes) que refinam armas de set3. Há as gemas de nível 4, o life crystal e o crystal o Power, que refinam armas do set4. E por fim, há o gold ingot que refina armas do set5.

 

 

2h4hn4y.jpg

 

 

Action:

 

Armas a serem refinadas, facilmente editável. 30w5dep.png

 

Quanto irá ser adicionado em cada arma, facilmente editável. 30w5dep.png

 

Efeitos. 30w5dep.png

 

 

 

Talkaction:

 

Funcionamento. 30w5dep.png

 

Efeitos. 30w5dep.png

 

Id das gemas editável. 55f5y.png

 

 

Infelizmente, na versão 1.0 não é possível editar o id das gemas que irão refinar as armas.

 

 

 

Scripts:

 

Action:

function onUse(cid, item, fromPosition, itemEx, toPosition)
        local itens = {
        set1 = {2434, 7430, 2392, 7408, 2432},
        set2 = {7437, 7755, 2451, 7380},
        set3 = {7427, 7421, 7402, 2393, 2414, 7434},
        set4 = {7429, 7414, 8930, 6528, 2454},
        set5 = {2421, 8927, 2408, 2390, 2431, 2415}
        }
        local extra = getItemAttribute(item.uid, "extraattack") == nil and 0 or getItemAttribute(item.uid, "extraattack")
        local extrd = getItemAttribute(item.uid, "extradefense") == nil and 0 or getItemAttribute(item.uid, "extradefense")

        if isInArray({2143, 2144}, itemEx.itemid) and isInArray(itens.set1, item.itemid) then
           if math.random(1, 7) > extra/10 + 1 then
              doItemSetAttribute(item.uid, "extraattack", extra+10)
              doItemSetAttribute(item.uid, "extradefense", extrd+5)
              doSendMagicEffect(getPlayerPosition(cid), math.random(1, 32))
           else
              doPlayerSendCancel(cid, "Falhou.")
              doSendMagicEffect(getPlayerPosition(cid), 2)
           end
              doRemoveItem(itemEx.uid, 1)
        end

        if isInArray({2157, 2149, 2146, 2147}, itemEx.itemid) and isInArray(itens.set2, item.itemid) then
           if math.random(1, 7) > extra/20 + 2 then
              doItemSetAttribute(item.uid, "extraattack", extra+20)
              doItemSetAttribute(item.uid, "extradefense", extrd+10)
              doSendMagicEffect(getPlayerPosition(cid), math.random(1, 32))
           else
               doPlayerSendCancel(cid, "Falhou.")
               doSendMagicEffect(getPlayerPosition(cid), 2)
           end
              doRemoveItem(itemEx.uid, 1)
        end

        if isInArray({2145, 9941, 9942}, itemEx.itemid) and isInArray(itens.set3, item.itemid) then
           if math.random(1, 7) > extra/30 + 3 then
              doItemSetAttribute(item.uid, "extraattack", extra+30)
              doItemSetAttribute(item.uid, "extradefense", extrd+15)
              doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
           else
               doPlayerSendCancel(cid, "Falhou.")
               doSendMagicEffect(getPlayerPosition(cid), 2)
           end
              doRemoveItem(itemEx.uid, 1)
        end

        if isInArray({9980, 7315, 2158, 2153, 2154, 2155, 2156}, itemEx.itemid) and isInArray(itens.set4, item.itemid) then
           if math.random(1, 8) > extra/35 + 4 then
              doItemSetAttribute(item.uid, "extraattack", extra+35)
              doItemSetAttribute(item.uid, "extradefense", extrd+20)
              doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
           else
              doPlayerSendCancel(cid, "Falhou.")
              doSendMagicEffect(getPlayerPosition(cid), 2)
           end
              doRemoveItem(itemEx.uid, 1)
        end

        if itemEx.itemid == 9971 and isInArray(itens.set5, item.itemid) then
           if math.random(1, 9) > extra/50 + 5 then
              doItemSetAttribute(item.uid, "extraattack", extra+50)
              doItemSetAttribute(item.uid, "extradefense", extrd+30)
              doSendMagicEffect(getPlayerPosition(cid), 65)
           else
              doPlayerSendCancel(cid, "Falhou.")
              doSendMagicEffect(getPlayerPosition(cid), 2)
           end
              doRemoveItem(itemEx.uid, 1)
        end
        return true
end  

Tag:

<action itemid="2434;7430;2392;7408;2432;7437;7755;2451;7380;7427;7421;7402;2393;2414;7434;7429;7414;8930;6528;2454;2421;8927;2408;2390;2431;2415" event="script" value="nomeDoArquivo.lua"/>

Comentário:

Se for editar as armas a serem refinadas, edite no script e na tag, pois os ids da tag são os das armas.

Talkaction:

function onSay(cid, words, param)
        local tab = {2149, 2146, 2147}
        local t = {2158, 2154, 2155, 2156}
        local t2 = {
        [4295] = {item=2149, item2=2146},
        [4296] = {item=2149, item2=2147},
        [4293] = {item=2146, item2=2147}
        }
        local t3 = {
        [1] = {item=7315, msg="Você ganhou um life crystal."},
        [2] = {item=9980, msg="Você gnhou um crystal of power."}
        }
        local t4 = {
        [4309] = {item=2154, item2=2155},
        [4310] = {item=2154, item2=2156},
        [4311] = {item=2155, item2=2156},
        [4312] = {item=2158, item2=2154},
        [4313] = {item=2158, item2=2155},
        [4314] = {item=2158, item2=2156},
        }
        local maths = math.random(1, 2)

        if param == '' then
           doPlayerSendCancel(cid, "Param required.")
           doSendMagicEffect(getCreaturePosition(cid), 2)
        end

-- PEARL --

        if param == 'pearl' then
           if getPlayerItemCount(cid, 2143) > 0 and getPlayerItemCount(cid, 2144) > 0 then
              doPlayerRemoveItem(cid, 2143, 1)
              doPlayerRemoveItem(cid, 2144, 1)
              doPlayerAddItem(cid, 2157, 1)
              doPlayerSendTextMessage(cid, 4, "Você fez um gold nugget.")
              doSendMagicEffect(getPlayerPosition(cid), math.random(1, 32))
           else
               doPlayerSendCancel(cid, "Você não tem os itens necessários.")
               doSendMagicEffect(getCreaturePosition(cid), 2)
           end
        end

-- DIAMOND --

          if param == 'diamond' then
             pakaresult = 0
                         for i, itens in ipairs(tab) do
                              if getPlayerItemCount(cid, itens) > 0 and pakaresult < 2150 then
                                  pakaresult = pakaresult == 0 and itens or pakaresult + itens
                              end
                         end

                         if pakaresult > 4000 then
                            doPlayerRemoveItem(cid, t2[pakaresult].item, 1)
                            doPlayerRemoveItem(cid, t2[pakaresult].item2, 1)
                            doPlayerAddItem(cid, 2145, 1)
                            doPlayerSendTextMessage(cid, 4, "você fez um small diamond.")
                            doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
                            pakoresult = 0
                         else
                             doPlayerSendCancel(cid, "Você não tem os itens necessários.")
                             doSendMagicEffect(getCreaturePosition(cid), 2)
                         end
          end

-- CRYSTAL --


          if param == 'crystal' then
             if getPlayerItemCount(cid, 9941) > 0 and getPlayerItemCount(cid, 9942) > 0 then
                doPlayerRemoveItem(cid, 9942, 1)
                doPlayerRemoveItem(cid, 9941, 1)
                doPlayerAddItem(cid,t3[maths].item, 1)
                doPlayerSendTextMessage(cid, 4, t3[maths].msg)
                doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
             else
                doPlayerSendCancel(cid, "Você não tem os itens necessários.")
                doSendMagicEffect(getCreaturePosition(cid), 2)
             end
          end

-- GOLD --


       if param == 'gold' then
          pakoresult = 0
                     for n, iten in ipairs(t) do
                         if getPlayerItemCount(cid, iten) > 0 and pakoresult < 2159 then
                            pakoresult = pakoresult == 0 and iten or pakoresult + iten
                         end
                     end
                     if pakoresult > 4000 then
                        doPlayerRemoveItem(cid, t4[pakoresult].item, 1)
                        doPlayerRemoveItem(cid, t4[pakoresult].item2, 1)
                        doPlayerAddItem(cid, 9971, 1)
                        doPlayerSendTextMessage(cid, 4, "você fez um gold ingot.")
                        doSendMagicEffect(getPlayerPosition(cid), 65)
                        pakoresult = 0
                     else
                         doPlayerSendCancel(cid, "Você não tem os itens necessários.")
                         doSendMagicEffect(getCreaturePosition(cid), 2)
                     end
       end

end     

Tag:

<talkaction words="Words" event="script" value="nomeDoArquivo.lua"/>

Comentário:

 

Não é possível editar as gemas da talkaction, não tente se não for experiente.

De Scripter para Scripter:

Como o sistema foi feito - Entendendo o sistema:

A action foi muito fácil de ser feita, pode-se entende-la facilmente; cada nível de pérola refina armas de um certo nível, sendo o set1 o primeiro nível, e o set5 o ultimo nível.
Já a talkaction, a alquimia em si, me causou grandes problemas, pois para fundir algumas gemas, em certos casos, há mais de uma opção de itens, caso do diamante e do gold ingot. Então para não deixar o script longo, eu tive a idéia de somar o id dos itens que o jogador usou para fundir, assim, o script saberia quais itens remover.

Créditos: Demonbholder

Editado por Karyus

Compartilhar este post


Link para o post
iuniX    4
iuniX

Muito obrigado pela contribuição. Aprovado e movido.

Compartilhar este post


Link para o post
nailo    2
nailo

Ótimo merecia exclusivo :} Criatividade : 10 !!

Compartilhar este post


Link para o post
god_dreamer    1
god_dreamer

perfecto

 

ME UPA > dragonpixel_733768.png

 

 

ESSE TAMBEM > dragonanimated_707342.gif

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×