DA
pedido

Systema fusão

Por damiaotorres, 31 de mar. de 2014 em Scripts

script
21
1.6k
31 de março de 2014 às 21:41

eu queria um systema de fusão que vc coloca 3 item em x local e ele fazia um item ,mais nesse mesmo script eu queria que ele tivese varios systema tipo com esse mesmo script ele ter 9 fusão diferente

GstvoLiberG
01 de abril de 2014 às 11:36

Vou tentar fazer para 1 fusão. Se der certo, mechemos no script para mais de 1.

 

Aguarde.

 

-GstavoLiber


Bom, fiz aqui mas não sei se vai funcionar tudo certinho. Presta atenção na hora de configurar, os nomes das variáveis estão muuuuuito sugestivas.

-- BY GUSTAVOLIBER FOR XTIBIA
local config = {
      [1] = {item1 = 2160, item2 = 2160, item3 = 2160, itemNew = 2466 }, -- item1, item2, item3 são os itens que serão retirados, e count1, count2, count3, são as qntidades dos items. itemNew é o item que será dado em troca.
      [2] = {pos1 = {x = 160, y = 54, z = 7}, pos2 = {x = 160, y = 54, z = 7}, pos3 = {x = 160, y = 54, z = 7}}
}

function onUse(cid, item, frompos, item2, topos)
         local getItem1 = getThingfromPos(pos1)
         local getItem2 = getThingfromPos(pos2)
         local getItem3 = getThingfromPos(pos3)
         
         --inicio do primeiro tipo de fusão
         if(getThingFromPos(config[2].pos1) == config[1].item1 ) then
            if(getThingFromPos(config[2].pos2) == config[1].item2)then
               if(getThingFromPos(config[2].pos3) == config[1].item3)then
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você ativou a primeira fusão! Você receberá um item.")
                  doRemoveItem(getItem1.uid, 1)
                  doSendMagicEffect(pos1, 2)
                  doRemoveItem(getItem2.uid, 1)
                  doSendMagicEffect(pos2, 2)
                  doRemoveItem(getItem3.uid, 1)
                  doSendMagicEffect(pos3, 2)
                  doPlayerAddItem(uid, config[1].itemNew, 1)
                  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
                  return true
               end
            end
         else
             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você não ativou nenhuma fusão. Por favor coloque os items na posição correta.")  
         end
         -- FIm do primeiro tipo de fusão
         
         -- inicio dos testes para o segundo tipo de fusão
         
         -- fim do segundo teste para fusão 
return true      
end

-- BY GSTAVOLIBER FOR XTIBIA

Mude apenas os numeros de cada posição, e o item em cada posição. Depois, adicione a tag a seguir em seu actions.xml:

<action actionid="2000" event="script" value="nomeDoArquivo.lua"/>

Mudando o valor da action id, e o nome do arquivo, depois, o mesmo número da action ID, coloca na alavanca no seu RME.

 

Após isso, reinicia seu servidor se estiver ligado, ou então liga-lo se estiver desativado.

 

Vá até a alavanca, e coloque os items corretos na posição correta, por exemplo: Item 1 poe na posição 1... e assim vai pros 3 items, depois puxa a alavanca, e ve se funciona tudo certinho sem dar erro no console. Após puxas a alavanca, deve aparecer efeitos nas posições dos items e remove-los do chão. Após isso, você receberá o item novo.

 

Ve se foi tudo certinho e me avisa. Ai te ensino a colocar mais quantas fusões quiser.

 

Se possível +REP

-GstavoLiber

Editado Abril 1 por GstavoLiber

01 de abril de 2014 às 12:03

Erro :/

 

[01/04/2014 12:01:40] [Error - Action Interface]
[01/04/2014 12:01:40] data/actions/scripts/fusao1.lua:onUse
[01/04/2014 12:01:40] Description:
[01/04/2014 12:01:40] attempt to index a nil value
[01/04/2014 12:01:40] stack traceback:
[01/04/2014 12:01:40] [C]: in function 'getThingfromPos'
[01/04/2014 12:01:40] data/actions/scripts/fusao1.lua:8: in function <data/actions/scripts/fusao1.lua:7>
ACHO QUE VC ESQUECEU A POSITION DO NOVO ITENS :/
eu tava usado essa aqui mais só da pra 1 :/,e tbm só pode 2 item eu queria uma de 3 se poder ajeita e coloca pra funcionar mais fusão agradeço icon1.gif
function onUse(cid, item, frompos, item2, topos)
item1pos = {x=1089, y=1091, z=9, stackpos=255} --item1pos
item2pos = {x=1091, y=1091, z=9, stackpos=255} --item2pos
item3pos = {x=1090, y=1091, z=9, stackpos=255} --item3pos
item1 = getThingfromPos(item1pos)
item2 = getThingfromPos(item2pos)
item3 = getThingfromPos(item3pos)
if item.itemid == 1945 and item1.itemid == 7838 and item2.itemid == 7839 or item1.itemid == 7839 and item2.itemid == 7838 then
doRemoveItem(item1.uid,1)
doSendMagicEffect(item1pos,13)
doRemoveItem(item2.uid,1)
doSendMagicEffect(item2pos,13)
doTransformItem(item.uid,item.itemid+1)
doCreateItem(2389,1, item3pos)
doSendMagicEffect(item3pos,13)
doPlayerSendTextMessage(cid,22,'Tcharam!')
elseif item.uid == 9010 and item.itemid == 1946 then
doTransformItem(item.uid,item.itemid-1)
else
return 0
end
return 1
end

Editado Abril 1 por damiaotorres

GstvoLiberG
01 de abril de 2014 às 12:30

Ops, erro meu rsrs

 

Troque..

         local getItem1 = getThingfromPos(pos1)
         local getItem2 = getThingfromPos(pos2)
         local getItem3 = getThingfromPos(pos3)

Por..

         local getItem1 = getThingfromPos(config[2].pos1)
         local getItem2 = getThingfromPos(config[2].pos2)
         local getItem3 = getThingfromPos(config[2].pos3)
01 de abril de 2014 às 12:56

eu coloco os itens la no canto e mostra isso

 

 

12:56 Você não ativou nenhuma fusão. Por favor coloque os items na posição correta.

Editado Abril 1 por damiaotorres

GstvoLiberG
01 de abril de 2014 às 13:04

O id do item que vc colocar no item1 tem que estar na posição pos1 você colocou corretamente os items na posição correta?

 

-Se são 3 items, o item1 tem que estar na posição pos1, o item2 na pos2, e item3 na pos3.

-Se você estive testando com 2160 mesmo, poe apenas 1 crystal lá e testa. se por mais pode ser que de erro.

 

Se mesmo assim, tudo certinho tiver dando o erro, me avisa, que eu fiz coisa errada na checagem dos items.

 

-GstavoLiber

01 de abril de 2014 às 13:07

Ta aqui do jeito que tou colocando,e onde o item novo vai aparecer acho que ta faltando isso

 

 

-- BY GUSTAVOLIBER FOR XTIBIA
local config = {
[1] = {item1 = 8901, item2 = 8901, item3 = 8901, itemNew = 8902}, -- item1, item2, item3 são os itens que serão retirados, e count1, count2, count3, são as qntidades dos items. itemNew é o item que será dado em troca.
[2] = {pos1 = {x = 1089, y = 1091, z = 9}, pos2 = {x = 1090, y = 1091, z = 9}, pos3 = {x = 1091, y = 1091, z = 9}}
}
function onUse(cid, item, frompos, item2, topos)
local getItem1 = getThingfromPos(config[2].pos1)
local getItem2 = getThingfromPos(config[2].pos2)
local getItem3 = getThingfromPos(config[2].pos3)
--inicio do primeiro tipo de fusão
if(getThingFromPos(config[2].pos1) == config[1].item1 ) then
if(getThingFromPos(config[2].pos2) == config[1].item2)then
if(getThingFromPos(config[2].pos3) == config[1].item3)then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você ativou a primeira fusão! Você receberá um item.")
doRemoveItem(getItem1.uid, 1)
doSendMagicEffect(pos1, 2)
doRemoveItem(getItem2.uid, 1)
doSendMagicEffect(pos2, 2)
doRemoveItem(getItem3.uid, 1)
doSendMagicEffect(pos3, 2)
doPlayerAddItem(uid, config[1].itemNew, 1)
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
return true
end
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você não ativou nenhuma fusão. Por favor coloque os items na posição correta.")
end
-- FIm do primeiro tipo de fusão
-- inicio dos testes para o segundo tipo de fusão
-- fim do segundo teste para fusão
return true
end

Editado Abril 1 por damiaotorres

GstvoLiberG
01 de abril de 2014 às 13:12

Não, então eu fiz cagada ali na hora de testar se os items estão nas posições.

Aguarda ai que vou ver se consigo arrumar outra forma de testar.

 

@EDIT

 

Uma dúvida, você ta pondo os items em cima de alguma coisa? Ou só em cima do chão ?

 

-GstavoLiber

Editado Abril 1 por GstavoLiber

01 de abril de 2014 às 13:15

ok rlx ,fico na aguarda bigsmile.gif

GstvoLiberG
01 de abril de 2014 às 13:21

@EDIT

 

Substitui por esse:

local config = {
      [1] = {item1 = 2160, item2 = 2160, item3 = 2160, itemNew = 2466 }, -- item1, item2, item3 são os itens que serão retirados, e count1, count2, count3, são as qntidades dos items. itemNew é o item que será dado em troca.
      [2] = {pos1 = {x = 160, y = 54, z = 7}, pos2 = {x = 160, y = 54, z = 7}, pos3 = {x = 160, y = 54, z = 7}}
}

function onUse(cid, item, frompos, item2, topos)
         local getItem1 = getThingfromPos(config[2].pos1)
         local getItem2 = getThingfromPos(config[2].pos2)
         local getItem3 = getThingfromPos(config[2].pos3)
         
         --inicio do primeiro tipo de fusão
         if(getTileItemById(config[2].pos1, config[1].item1) == config[1].item1) then
            if(getTileItemById(config[2].pos2, config[1].item2) == config[1].item2)then
               if(getTileItemById(config[2].pos3, config[1].item3) == config[1].item3)then
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você ativou a primeira fusão! Você receberá um item.")
                  doRemoveItem(getItem1.uid, 1)
                  doSendMagicEffect(pos1, 2)
                  doRemoveItem(getItem2.uid, 1)
                  doSendMagicEffect(pos2, 2)
                  doRemoveItem(getItem3.uid, 1)
                  doSendMagicEffect(pos3, 2)
                  doPlayerAddItem(uid, config[1].itemNew, 1)
                  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
                  return true
               end
            end
         else
             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você não ativou nenhuma fusão. Por favor coloque os items na posição correta.")  
         end
         -- FIm do primeiro tipo de fusão
         
         -- inicio dos testes para o segundo tipo de fusão
         
         -- fim do segundo teste para fusão
return true      
end


E testa. Acho que agora vai =D

 

-GstavoLiber

Editado Abril 1 por GstavoLiber

01 de abril de 2014 às 13:29

Em cima de um coisa la o ip do coisa é 1644

GstvoLiberG
01 de abril de 2014 às 13:31

Tenta sem nada em baixo do item. Só o tile. Utiliza esse script ai de cima que atualizei agora.

 

-GstavoLiber

01 de abril de 2014 às 13:41

Deu mesma coisa tirei as coisa e testei no chão e não deu certo :/

GstvoLiberG
01 de abril de 2014 às 13:47

Tenta esse:

local config = {
      [1] = {item1 = 2160, item2 = 2160, item3 = 2160, itemNew = 2466 }, -- item1, item2, item3 são os itens que serão retirados, e count1, count2, count3, são as qntidades dos items. itemNew é o item que será dado em troca.
      [2] = {pos1 = {x = 160, y = 54, z = 7}, pos2 = {x = 160, y = 54, z = 7}, pos3 = {x = 160, y = 54, z = 7}}
}

function onUse(cid, item, frompos, item2, topos)
         
         --inicio do primeiro tipo de fusão
         if(getTileItemById(config[2].pos1, config[1].item1) == config[1].item1) then
            if(getTileItemById(config[2].pos2, config[1].item2) == config[1].item2)then
               if(getTileItemById(config[2].pos3, config[1].item3) == config[1].item3)then
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você ativou a primeira fusão! Você receberá um item.")
                  doRemoveItem(pos1, 1)
                  doSendMagicEffect(pos1, 2)
                  doRemoveItem(pos2, 1)
                  doSendMagicEffect(pos2, 2)
                  doRemoveItem(pos3, 1)
                  doSendMagicEffect(pos3, 2)
                  doPlayerAddItem(uid, config[1].itemNew, 1)
                  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
                  return true
               end
            end 
         else
             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você não ativou nenhuma fusão. Por favor coloque os items na posição correta.")  
         end
         -- FIm do primeiro tipo de fusão
         
         -- inicio dos testes para o segundo tipo de fusão
         
         -- fim do segundo teste para fusão 
return true      
end

Lembre-se de abrir e fexar o server para atualizar os scripts corretamente.

Vou testar aqui num servidor meu e ver se funfa.

 

-GstavoLiber

01 de abril de 2014 às 13:52

Mesma coisa ,teste ae ver se ae funciona