Venho trazer um tutorial de sistema de forja.

Este é um sistema onde você posiciona uma certa combinação de itens em cima uma bigorna, usa um certo item em cima dessa combinação e se tudo ocorrer com sucesso, você terá um novo item para usar.

O motiv desse desenvolvimento é por ser uma forma unica que nao possui em outros RPG's, afinal não é em todo jogo que você coloca itens em lugares específicos e numa ordem pré-determinada e puxa uma alavanca para fundir os itens...

Vamos lá.

INSTALAÇÃO


1 - Crie um arquivo chamado 038-blacksmith.lua na sua pasta data/lib, após isso, abra o arquivo e cole este conteúdo abaixo:

Código:
config ={
        credits =true--Adicionar criado por na descrição do item?
}

forges ={     
        [2400]={-- o item que será feito
                recipe ={{2376,1}},-- a receita do item
                chance =1000-- chance do item dar certo (100%=1000,1%=10,0.5%=5 e etc)
        }
}
2 - O próximo passo é criar um arquivo chamado iron hammer.lua na sua pasta data/actions/scripts e então colar este código abaixo:

Código:
 local tmp, match ={}
 
    for ret, v in pairs(forges)do
        for i =1,#v.recipe do
            local g = getTileItemById(toPosition, v.recipe[i][1])
            if g.uid >0and math.max(1, g.type)== v.recipe[i][2]then
                table.insert(tmp, g.uid)
                if i ==#v.recipe then
                    match = ret
                                        chance = v.chance
                end
            else
                tmp ={}
                break
            end
        end
        if match then
            break
        end
    end
        
        if match then
                for i =1,#tmp do
                        doRemoveItem(tmp[i], forges[match].recipe[i][2])
                end
                if(chance >= math.random(1,1000))then
                        doCreateItem(match,1, toPosition)
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT,"You have created ".. getItemInfo(match).article .." ".. getItemNameById(match)..".")
                        doSendMagicEffect(toPosition, CONST_ME_MAGIC_RED)
                        doSendAnimatedText(toPosition,"Success!", TEXTCOLOR_GREEN)
                        doItemSetAttribute(create,"description","".. getItemInfo(match).description ..""..(config.credits ==trueand"\nIt has forged by ".. getCreatureName(cid).."."or""))
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT,"Something went wrong.")
                        doSendMagicEffect(toPosition, CONST_ME_POFF)
                        doSendAnimatedText(toPosition,"Failure!", TEXTCOLOR_RED)
                end
                returntrue
        end
        return doPlayerSendCancel(cid,"This forge recipe doesn't exist.")

end
3- Pronto! Você já tem o sistema instalado no seu servidor. Basta então registrar essa chave no seu arquivo actions.xml.

Código:
<action itemid="4846" event="script" value="iron hammer.lua"/>
CONFIGURAÇÃO


A configuração do sistema se faz bastante simples, você não precisa mexer EM NADA. apenas nas informações do arquivo situado em data/lib. Veja abaixo:

Código:
config ={
        credits =true--Adicionar criado por na descrição do item?
}

forges ={     
        [2400]={-- o item que será feito
                recipe ={{2376,1}},-- a receita do item
                chance =1000-- chance do item dar certo (100%=1000,1%=10,0.5%=5 e etc)
        }
}
As linhas comentadas já explicam toda a estruturação das informações do arquivo, se você quiser criar uma receita para um item, basta apenas ir adicionando os itens da receita e suas respectivas quantidades.
Veja abaixo como formatar a receita:


Código:
recipe = {{ITEM1, QUANT1}, {ITEM2, QUANT2}, {ITEM3, QUANT3}, {ITEM4, QUANT4}, ..., {ITEM99, QUANT99}},
O sistema foi criado para que o sistema identifique receitas de até N itens, onde (provavelmente) N tende ao infinito. E claro, o sistema irá identificar a receita do item, não importando a ordem que você dispor os itens na bigorna.

Vamos a um exemplo agora: "Quero uma receita de Golden Helmet que precise de 100 gold ingots e 1 iron helmet". Então:


Código:
config ={
credits =true--Adicionar criado por na descrição do item?
}

forges ={ 
[2400]={-- o item que será feito
recipe ={{2376,1}},-- a receita do item
chance =1000-- chance do item dar certo (100%=1000,1%=10,0.5%=5 e etc)
},-- note essa vírgula entre as diferentes receitas
[2471]={-- id do golden helmet
recipe ={{9971,100},{2459,1}}-- a receita do exemplo
chance =10--1% de chance hehe
}
}
Esta feito o Sistema qualquer duvida postem que tentarei ajudar.

Creditos: Garou
Fonte: xtibia