Sistema De Alquimia

Demonbholder
em Actions e Talkactions
  • 1
  • 2

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

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.

 

 

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. 30w5dep.png

 

 

 

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.

Oie :D

Kuro o Shiniga

avatar
Colaborador
Colaborador

INFOS

Grupo: ColaboradorRegistrado: 27/12/10Posts: 271Gênero: Masculino

Muito Bom Cara Perfeito Vou Usar Em Meu Ot Rep+ (:

pablo361

;D
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/04/08Posts: 24

o.O

Sistema perfeito ...

Parabéens =)

REP+

Att.

Pablo Schuab

Karislayer

♦ Retired ♦
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 31/07/10Posts: 247

Aff outra acc esqueci a senha, enfim sistema excelente como todos os outro que você faz.

Então deixo meu REP+ com você!

Abraços!!!

Ajudando a comunidade no Anonimato!

BryanModesto

leite dança, dança
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/03/11Posts: 24Char no Tibia: Vigilante Rodoviario

Muito bom cara, voce ta avançando cada vez mais

:)

Atenciosamente,

Bryan Modesto Sampaio

 

tumblr_lil0onSnB81qc7xc4o1_250.gif

 

[Denuncias/Reports] - Area de Scripting

victorpuntel

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/11/10Posts: 47Char no Tibia: Victor Dracul

Boa parceiro, Leva meu REP+ também :smile_positivo:

darkvelocityfanbar2.png

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

Ha bem manero seu script,e acho que ainda n existia um tão completinho igual o seu de alquimia neh?

rep + brother

abraços

bossisg.png

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Pois é, não sei se tem algum melhor aqui no xtibia, mas o meu ainda vai ser melhorado nas próximas versões. Valeu ai pelos comentários pessoal.

Oie :D

refi

Numa terra do faz de conta.
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/03/11Posts: 65

Very good.

Usando :smile_positivo:

Cara amada, você está me ouvindo?

Não me lembro de uma só palavra que você disse

Somos dementes?

ou sou perturbado?

O espaço que está entre insanidade e a insegurança.

 

OgAAAA1LLkJzdM-3bPMgF_oV_vErWuSwXbvSQg1js8ERbg4YZ-9UHGIdW2k1M-q9kFzrQkTXIkn1L80R109UU1JCw5wAm1T1UOw2aVKpnj7Gyxv0tLWw5SBnbvYd.jpg

 

Att: Refi.

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Valeu, em breve adicionarei a versão 1.2, vou fazer o id das gemas editável, e fazer com que possa se refinar a arma mais de uma vez.

Oie :D

Subwat

GAUCHO MACHO
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 27/07/09Posts: 1516Char no Tibia: Gean Riot

sistema fera pra caramba

flws

Entrem Server online desde o dia 22/02/2013 Monster 24HORAS dedicado!

IP: monster24h.com

PROTOCOL:8.60

PORT:7171

 

RATES:

Exp: 9999x~10x

Skills:800x

Magic:200x

Loot:2x

Pvp-e Advanced: 1.1x Ao matar players de level semelhante.

 

Accounts Pelo Account Manager!

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

A sua criatividade me impressiona, se você estudar mais um pouco de LUA, se tornará um grande scripter. Sistemas muito bem planejados, o que falta, é melhorar a construção do código.

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Opa, valeu pessoal, que bom que gostaram. Qualquer bug, se possível me contatem.

 

@Oneshot

 

Valeu. Quando eu fiz esse script eu ainda não tava sabendo manipular tabela e string, estou aprendendo pelo manual agora. Resumindo, meus últimos scripts costumam ser melhores que os anteriores. Se desejar, veja as Funções Matemáticas ou doOrderTable, são algumas funções as quais eu fiz por último. :smile_positivo:

Oie :D

Kuro o Shiniga

avatar
Colaborador
Colaborador

INFOS

Grupo: ColaboradorRegistrado: 27/12/10Posts: 271Gênero: Masculino

Ae demonbholder, coloca um limite pra que não possam refinar a mesma arma muitas vezes. vamos supor que o player refinou 2x a mesma arma então ele não podera refinar mais aquela arma!

  • 1
  • 2