Ir para conteúdo
  • 0

Systema fusão


damiaotorres

Pergunta

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

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

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 por GstavoLiber
Link para o comentário
Compartilhar em outros sites

  • 0

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 por damiaotorres
Link para o comentário
Compartilhar em outros sites

  • 0

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)
Link para o comentário
Compartilhar em outros sites

  • 0

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 por damiaotorres
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por damiaotorres
Link para o comentário
Compartilhar em outros sites

  • 0

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 por GstavoLiber
Link para o comentário
Compartilhar em outros sites

  • 0

@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 por GstavoLiber
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0


function onUse(cid, item, fromPosition, itemEx, toPosition)

 

local pos1, itm1 = {x=1, y=1, z=1, stackpos=STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE} -- pos do item 1

local pos2, itm2 = {x=2, y=2, z=2, stackpos=STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE} -- pos do item 2

local pos3, itm3 = {x=3, y=3, z=3, stackpos=STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE} -- pos do item 3

 

local id1, id2, id3, newItem = 1111, 2222, 3333, 4444 -- id do item 1, id do item 2, id do item 3, id do novo item

local posNewItem = {x= 1, y= 2, z=3} -- pos do novo item

 

local it1= getThingFromPos(pos1)

local it2= getThingFromPos(pos2)

local it3= getThingFromPos(pos3)

 

if (it1.itemid == id1) and (it2.itemid == id2) and (it3.itemid == id3) then

doRemoveItem(it1.uid)

doRemoveItem(it2.uid)

doRemoveItem(it3.uid)

doCreateItem(newItem, 1, posNewItem)

doPlayerSendTextMessage(cid, 22, "Parabéns você fez a vusão dos item.") -- mensagem quando funciona

else

doPlayerSendCancel(cid, "Você não colocou os item no local correto.") -- mensagem quando não funciona

end

 

return true

end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...