PA

Sistema De Forja

Por pablo361, 12 de mar. de 2011 em Actions e Talkactions

otserv
tibia
script
26
15.8k
pablo361P
12 de março de 2011 às 00:25

Meu Novo sistema de Forja,
Procurei aqui no Xtibia e não achei um Sistema de Forja Completo e Facil de Configurar.
Meu Segundo Script *-*

Versão Testada: TFS 0.4 (8.60)
Sistema de Forja V1.0
Vamos la

Video:




em Actions.xml Adicione:
<action uniqueid="16451" event="script" value="forjar.lua" />



Crie um Arquivo LUA em Actions>Scripts com o nome de "forjar.lua" e adicione isso dentro:

function onUse(cid, item, item2, frompos, topos, pos)local config = {["Magic Plate Armor"] = {t1=2476,t2=2464,t3=2472}, -- t1 = ID do ITEM 1 |---| t2 = ID do ITEM 2 |---| t3 = ID do ITEM a ser FORJADO --["Dragon Scale Mail"] = {t1=2489,t2=2487,t3=2492},}local r1 = {x = 222, y = 217, z = 7, stackpos= 2} -- Posição 1 ( NÃO MEXA NO stackpos= 2 )local r2 = {x = 224, y = 217, z = 7, stackpos= 2} -- Posição 2 ( NÃO MEXA NO stackpos= 2 )local r3 = {x = 223, y = 217, z = 7} -- Posição do Item a Ser Criadolocal q1 = getThingfromPos(r1)local q2 = getThingfromPos(r2)for i, x in pairs(config) doif (q1.itemid == x.t1 and q2.itemid == x.t2) or (q1.itemid == x.t2 and q2.itemid == x.t1) thendoRemoveItem(q1.uid, 1)doRemoveItem(q2.uid, 1)addEvent(doCreateItem, 1000, x.t3, 1, r3)doSendMagicEffect(r3, 47)addEvent(doSendMagicEffect, 900, r3, 39)doPlayerSendTextMessage(cid, 22, "Parabéns, Você Forjou Um " .. i .. ".")breakendendreturn TRUEend



na Alavanca Colocar a UniqueID: 16451

Configurando:
["Magic Plate Armor] = {t1=2476,t2=2464,t3=2472},

Vermelho: Nome do Item a Ser Forjado
Azul: ID do Item1 necessário para forjar o item Vermelho
Roxo: ID do Item2 necessário para forjar o item Vermelho
Verde: ID do Item Vermelho

Você Também Pode Adicionar Novas "Receitas" para Forjas !!
Só Adicionar só 1 Linha a Mais Iguais a Outras mudando as Configurações

Posição:
local r1 = {x = 222, y = 217, z = 7, stackpos= 2} -- Posição do Item1 ( NÃO MEXA NO stackpos= 2 )
local r2 = {x = 224, y = 217, z = 7, stackpos= 2} -- Posição do Item2 ( NÃO MEXA NO stackpos= 2 )
local r3 = {x = 223, y = 217, z = 7} -- Posição do Item Vermelho


Talkaction para mostrar os Itens de Forja

talkactions.xml Adicione isso:

<talkaction words="!forjas" script="forjas.lua"/>



Crie um arquivo forjas.lua na pasta talkactions>scripts e adicione isso dentro:

function onSay(cid, words, param)file = io.open('forjas.txt','r')notice = file:read(-1)doShowTextDialog(cid,9004,notice)file:close()end



Agora na Pasta Principal do Seu OT, onde tem a pasta DATA, as DLLs e o .exe do seu ot
Crie um Arquivo .txt ( arquivo de texto ), renomeie para forjas.txt

e dentro dele adicione os materiais de Forjas para os seus Players não se perderem.


Bom é Isso, Gostou ? REP+ =)

Aprendii usar in pairs(table) *--*
Créditos: Eu Pelo Script, Idéia sei la quem teve '-', e aos meus amigos que estão me ajudando bastante =)

Editado Julho 12 por Frenvius

12 de março de 2011 às 13:23

Este sistema é parecido com o de Fusao de Itens, porem, com uma facilidade muito maior para edita-lo.

Otimo script, parabens =)

pablo361P
12 de março de 2011 às 21:49

é, essa foi minha idéia, pois sabia que ja existia um script semelhante a este,

só que não tinha complexidade para configurar...

então criei esse =)

2 meses depois...
milbradtM
10 de maio de 2011 às 20:39

Muito Bom Pablo, está de Parabens ^^

 

Eu Ainda Vou aprender como fazer scripts :tongue2:

 

Rep :button_ok:

1 mês depois...
eliteviniE
11 de junho de 2011 às 14:08

sera q teria como fazer para colocar todos os itens da formula para só precisar de 1 sqm ? q eu queria fazer mais de 2 itens para fusão queria poder colocar 6 itens da formula em 1 sqm sera q tem como ?

1 mês depois...
7496767
13 de julho de 2011 às 09:26

muito bom msm, parabens !

1 mês depois...
17 de agosto de 2011 às 15:12

talkactions nem pego :/

 

 [17/08/2011 15:11:18] data/talkactions/scripts/forjas.lua:3: attempt to index global 'file' (a nil value)
[17/08/2011 15:11:18] stack traceback:
[17/08/2011 15:11:18] 	data/talkactions/scripts/forjas.lua:3: in function <data/talkactions/scripts/forjas.lua:1> 

 

EDIT- deixa pra lá , eu que tinha feito errado :D

 

REP+,obrigado

Editado Agosto 17 por LipeFioravanti

angeldoidoA
22 de agosto de 2011 às 01:29

modifica o script pra 9.10 ?--(te do 5+rep)

 

Thanks

2 semanas depois...
styflerzinS
31 de agosto de 2011 às 17:20

como faz pra determinar uma quantidade de item?

por exemplo:

25 red piece of cloth

angeldoidoA
31 de agosto de 2011 às 18:17

como faz pra determinar uma quantidade de item?

por exemplo:

25 red piece of cloth

 

facil cara so coloka assim {t1=2476,25,

 

acho q é assim no casso id 2476 e presissa ter 25 '-'

 

n sei se vai da acho q é assim

styflerzinS
31 de agosto de 2011 às 18:36

Obrigado :D

mas agora, eu to com outra duvida :S

o item q eu vo usar pra fusao é um liquido.

Vial of Milk.

o id dele é 2006

igual qualquer outro liquido q venha em vials...

descobri q para criar ele eu presiso digitar /i 2006,6,5

dai eu coloquei ele pra dropar dos monstros e tals.. pelo id 2006,6,5

mas o mostro dropa um vial vazio...

entao provavelmente... se alguem colocar um vial vazio na hora da fusão, vai dar certo?

outra coisa... (fugindo do tópico), como eu coloco esse item pra ficar "agrupavel"?

angeldoidoA
31 de agosto de 2011 às 20:21

Obrigado :D

mas agora, eu to com outra duvida :S

o item q eu vo usar pra fusao é um liquido.

Vial of Milk.

o id dele é 2006

igual qualquer outro liquido q venha em vials...

descobri q para criar ele eu presiso digitar /i 2006,6,5

dai eu coloquei ele pra dropar dos monstros e tals.. pelo id 2006,6,5

mas o mostro dropa um vial vazio...

entao provavelmente... se alguem colocar um vial vazio na hora da fusão, vai dar certo?

outra coisa... (fugindo do tópico), como eu coloco esse item pra ficar "agrupavel"?

Certamente se coloka 1 pod ser q funciona sim pq vc quer liquido cheio e no id ele ta vazio, bom agora n sei tenta ae

2 meses depois...
wesleykunW
09 de outubro de 2011 às 19:26

Teria como colocar 3 itens para fundir

 

exemplo: iron ore+hammer+staff= War hammer

 

se tiver me passa o script

2 semanas depois...
19 de outubro de 2011 às 15:39

Affs aki eu nao consegui

;(:

OneshotO
25 de outubro de 2011 às 11:14

Nada mal, o código está bem básico. Gostei que você usou tabelas, for e pairs().

 

É realmente muito chato esse negócio de stackpos, sugiro que você use a função getTileItemById(), os resultados são bem melhores, pois ela verifica se tal item existe em todos os stackpos de um tile, sendo não necessária a especificação de um.

 

Seu script pode ser encurtado ainda mais para a função que ele desempenha. Estude um pouco mais, há uma maneira de substituir isso:

 

if (q1.itemid == x.t1 and q2.itemid == x.t2) or (q1.itemid == x.t2 and q2.itemid == x.t1) then

 

Tornando o script mais dinâmico.

 

Um abraço