GA

The Blacksmith System

Por Garou12, 04 de jun. de 2011 em Actions e Talkactions

16
3.9k
Garou12G
04 de junho de 2011 às 13:01

re-re

Editado Setembro 3 por Garou

05 de junho de 2011 às 16:42

Genial, ótimo sistema, gostei muito! Vê se não tira esse.

 

Abraços. :button_ok:

Editado Junho 5 por Demonbholder

Garou12G
05 de junho de 2011 às 17:15

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

 

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

Editado Junho 5 por Garou

eliteviniE
11 de junho de 2011 às 11:41

[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 Junho 11 por ManoPergunta

camcamC
11 de junho de 2011 às 13:19

Muito Bom Este Scripter, Não Tou Tendo Tempo Agora Mais Depos eu Testo.

Editado Junho 11 por camcam

beto06B
12 de junho de 2011 às 11:30

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 Junho 13 por Beto06

1 mês depois...
SanfS
16 de julho de 2011 às 22:05

Kra os creditos não tão funcionando (DoSetItemAtribute como ajeitar isso?

VodkartV
16 de julho de 2011 às 22:08

Belo sistema lobão (:

está de parabéns,obrigado por trazer ao xistebea

abraços

SanfS
17 de julho de 2011 às 00:58

Ei Vodkart da uma ajuda ae, pra min vc é o melhor quando se esta falando de scripts aki no Xtibia.. como arrumo isso.

beto06B
17 de julho de 2011 às 11:48

@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 Julho 17 por Beto06

1 mês depois...
pauloestoreP
04 de agosto de 2011 às 17:53

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:

fazepaoF
07 de agosto de 2011 às 20:06

Ae vlw, ajudo mt, ja tava projetando as coisa aki, agora com esse script vai fika muito mais facil ;D

 

REP+

 

vlw ;D

laravitaL
13 de agosto de 2011 às 20:48

Ótimo script, já adicionei ele o meu ot. REP+

mappernetoM
18 de agosto de 2011 às 08:43

Lol parece ser muito legal, funciona em 9.10?

+Rep

2 semanas depois...
hique86H
29 de agosto de 2011 às 05:35

 

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