Booooas galera! Eu estava com essa idéia na cabeça já faz um tempo, mas ai tava com um problema e não conseguia arrumar. Well, na madrugada passada, eu fui ver o script e descobri um jeito de consertar, assim, eu criei o sistema de alquimia. Então é isso ai, não quero ficar enrolando muito, vamos logo ao script...
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
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.
Action:
Armas a serem refinadas, facilmente editável.
Quanto irá ser adicionado em cada arma, facilmente editável.
Efeitos.
Talkaction:
Funcionamento.
Efeitos.
Id das gemas editável.
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 t3 = {{item=7315, msg="Você ganhou um life crystal."}, {item=9980, msg="Você gnhou um crystal of power."}} 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 = "" for i, itens in ipairs(tab) do if getPlayerItemCount(cid, itens) > 0 then pakaresult = pakaresult ~= "" and pakaresult .. "/" .. itens or "/" .. itens end end local ite = string.explode(pakaresult, "/") if #ite > 2 then doPlayerRemoveItem(cid, ite[2], 1) doPlayerRemoveItem(cid, ite[3], 1) doPlayerAddItem(cid, 2145, 1) doPlayerSendTextMessage(cid, 4, "Você fez um small diamond.") doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55)) 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 = "" for n, iten in ipairs(t) do if getPlayerItemCount(cid, iten) > 0 then pakoresult = pakoresult ~= "" and pakoresult .. "/" .. iten or "/" .. iten end end local ite = string.explode(pakoresult, "/") if #ite > 2 then doPlayerRemoveItem(cid, ite[2], 1) doPlayerRemoveItem(cid, ite[3], 1) doPlayerAddItem(cid, 9971, 1) doPlayerSendTextMessage(cid, 4, "Você fez um gold ingot.") doSendMagicEffect(getPlayerPosition(cid), 65) else doPlayerSendCancel(cid, "Você não tem os itens necessários.") doSendMagicEffect(getCreaturePosition(cid), 2) end end return true end
Tag:
<talkaction words="Words" event="script" value="nomeDoArquivo.lua"/>
Comentário:
Talkaction funcionando perfeitamente, se desejar, edite o id das gemas.
Então é isso galera, demorei 4 horas pra fazer, espero que gostem.