Ir para conteúdo

The Blacksmith System


Garou12

Posts Recomendados

Haha, pode deixar, não irei tirar ele não.

 

Qualquer sugestão para o sistema pode ser apresentada aqui.

Editado por Garou
Link para o comentário
Compartilhar em outros sites

[11/06/2011 11:59:36] [Error - Action Interface]

[11/06/2011 11:59:36] data/actions/scripts/iron hammer.lua:onUse

[11/06/2011 11:59:36] Description:

[11/06/2011 11:59:36] (luaDoItemSetAttribute) Item not found

 

olha o erro q fika dando quando eu transformo o item e tem sucesso, mais quando não tem sucesso de transforma o item não tem erro algum como eu arrumo isso ?

Editado por ManoPergunta
Link para o comentário
Compartilhar em outros sites

Funcionou perfeitamente, belo script. Rep++

--

Como fazer pra criar item em quantidade?

[2544, 100] = { -- o item que será feito
	recipe = {{5901, 50}}, -- a receita do item

Não deu certo assim. =/

--

Ahh, e o DoItemSetAttribute da erro também, como o do amigo acima.

Editado por Beto06
Link para o comentário
Compartilhar em outros sites

  • 1 month later...

@semruela

Mude a parte do iron hammer.lua, no final, por essa:

		if(chance >= math.random(1, 1000)) then
		local item = 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(item, "description", 'It has been forged by ' .. getCreatureName(cid) .. '.')
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Something went wrong.")
		doSendMagicEffect(toPosition, CONST_ME_POFF)
		doSendAnimatedText(toPosition, "Failure!", TEXTCOLOR_RED)
	end
	return true
end
return doPlayerSendCancel(cid, "This forge recipe doesn't exist.")
end

Aqui funcionou...

Editado por Beto06
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Eu consegui por no OT funciono...

Porém eu gostaria de fazer de mais itens exemplo: ai você fez o da Sov eu queria fazer do Sca etc..como eu faço? faço vários arquivos e só mudo o nome dele exemplo: 039-Blacksmith e o cod de dentro? ou tenho que fazer algo mais? tentei faze isso não deu certo.Tem algum lugar que eu tenho que modifica? eu mudei id dentro do arquivo lua ta tudo certinho mas na hora de Forja num da... :worriedsmiley:

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

 

Nome: The Blacksmith System

Autor: Garou

Testado em: The Forgotten Server rev3884

 

Olá,

 

Este é um sistema que eu fiz a um tempo atrás. Basicamente, é 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 motivo para desenvolver este sistema, foi olhar para outros genéricos que foram disponibilizados anteriormente que eu, particularmente, achei não conter nenhuma noção de RPG, afinal não é em todo jogo que você coloca itens em lugares específicos e numa ordem pré-determinada e puxa uma alavanca do mal para fundir os itens...

 

Sem mais enrolação, vamos ao que interessa.

 



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.


    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:


    local chance = nil
    
    function onUse(cid, item, fromPosition, itemEx, toPosition)
       if isInArray({0, 65535}, toPosition.x) then
           return false
       elseif getTileItemById(toPosition, 2555).uid < 1 then
           return doPlayerSendCancel(cid, 'You must put the ingredients on an anvil.')
       end
    
       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 > 0 and 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 == true and "\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
    	return true
    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.
     
    <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 do script, apenas nas informações do arquivo situado em data/lib. Veja abaixo:

 

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:

 

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:

 

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
       }
}

 

Espero que você tenha entendido todo esse sistema, rs. Assim que eu puder, irei postar vídeo e imagens do funcionamento do sistema.

 

p.s: Você pode tirar dúvidas aqui neste tópico e reportar erros.

 

Um grande abraço,

Garou.

 

 

Desculpe minha ignorancia, mas como que eu coloco isso no meu ot?!?

tipo, é pela lavanca?!? por comando?!?

 

da uma ajuda ae, valew

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...