Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Iai galera, to precisando de ajuda pra terminar um script, eh o seguinte:

To precisando de um script que de ao player um tipo de addon ao colocar os itens em uma, duas, três ou quatro coal basin e tocar em uma pedra ai ganhar o addon.
 

O player entra no lugar la e tem 2 coal basin, no primeiro tem q botar x chicken feather e no segundo x honey comb, ai dps q ele clicar numa pedra que ta no mesmo lugar ele ganharia o chapeu do citzen

 

.
 

Considerações:

Ao tocar a pedra, fazendo com que os itens desapareçam gostaria que eles desapareçam com o efeito de fogo em cima do coal basin, como se fossem queimados. E o player recebesse a msg: "Congratulations, you just earned the_____(staff) of the _____(mage) outfit.". Sendo que o que esta em negrito pode ser configurado.

 

 

[O QUE EU CONSEGUI ATE AGORA]

 

Usando um sistema de forja que achei na internet adaptei e deu isso:

 

local outfitmale = 145
local outfitfemale = 149
local addons = 1


function onUse(cid, item, item2,item3, item 4 frompos, topos, pos)
local config = {
["Wizard Helmet Addon"] = {t1=2536,t2=2492,t3=2488,t4=2123},
}

local r1 = {x = 182, y = 262, z = 9, stackpos= 2} -- Posição 1 ( NãO MEXA NO stackpos= 2 )
local r2 = {x = 183, y = 262, z = 9, stackpos= 2} -- Posição 2 ( NãO MEXA NO stackpos= 2 )
local r3 = {x = 185, y = 262, z = 9, stackpos= 2} -- Posição 3 ( NãO MEXA NO stackpos= 2 )
local r4 = {x = 186, y = 262, z = 9} -- Posição 4

local q1 = getThingfromPos(r1)
local q2 = getThingfromPos(r2)
local q3 = getThingfromPos(r3)
local q4 = getThingfromPos(r4)
for i, x in pairs(config) do
if (q1.itemid == x.t1 and q2.itemid == x.t2 and q3.itemid == x.t3 and q4.itemid == x.t4) then
doRemoveItem(q1.uid, 1)
doRemoveItem(q2.uid, 1)
doRemoveItem(q3.uid, 1)
doRemoveItem(q4.uid, 1)
if getPlayerStorageValue(cid, storage) == -1 then
doPlayerAddOutfit(cid, outfitmale, addons)
doPlayerAddOutfit(cid, outfitfemale, addons)
doPlayerSendTextMessage(cid, 21, "You just earned the helmet of the Wizard outfit!")
doSendMagicEffect(getCreaturePosition(cid), 28)
setPlayerStorageValue(cid, storage, 1)
else
doPlayerSendCancel(cid, "You already have this addon.")
end
return true
end

 

 

Como sei mt pouco sobre script ja tinha o pressentimento que ia dar errado e deu, aconteceu esse erro na hora de ligar o server:

 

'end' expected <to close 'for' at line 19> near ' <eof>

 

 

Alguma ajuda ai?

Valeu Galera

Link para o post
Compartilhar em outros sites

local config = {
   ["Wizard Helmet Addon"] = {t1 = 2536, t2 = 2492, t3 = 2488, t4 = 2123},
}
 
local outfitmale = 145
local outfitfemale = 149
local addons = 1
 
local r1 = {x = 182, y = 262, z = 9, stackpos = 2} -- Posição 1 ( NãO MEXA NO stackpos= 2 )
local r2 = {x = 183, y = 262, z = 9, stackpos = 2} -- Posição 2 ( NãO MEXA NO stackpos= 2 )
local r3 = {x = 185, y = 262, z = 9, stackpos = 2} -- Posição 3 ( NãO MEXA NO stackpos= 2 )
local r4 = {x = 186, y = 262, z = 9, stackpos = 2} -- Posição 4
 
function onUse(cid, item, frompos, item2, topos, pos)
   local q1 = getThingfromPos(r1)
   local q2 = getThingfromPos(r2)
   local q3 = getThingfromPos(r3)
   local q4 = getThingfromPos(r4)
 
   for i, x in pairs(config) do
      if q1.itemid == x.t1 and q2.itemid == x.t2 and q3.itemid == x.t3 and q4.itemid == x.t4 then
         if getPlayerStorageValue(cid, storage) == -1 then
            doRemoveItem(q1.uid, 1)
            doRemoveItem(q2.uid, 1)
            doRemoveItem(q3.uid, 1)
            doRemoveItem(q4.uid, 1)
 
            doPlayerAddOutfit(cid, outfitmale, addons)
            doPlayerAddOutfit(cid, outfitfemale, addons)
            doPlayerSendTextMessage(cid, 21, "You just earned the helmet of the Wizard outfit!")
            doSendMagicEffect(getCreaturePosition(cid), 28)
            setPlayerStorageValue(cid, storage, 1)
            break
         else
            doPlayerSendCancel(cid, "You already have this addon.")
            break
         end
      end
   end
   return true
end
 

 

Não é muito comum ver alguém que está iniciando usando o for desta maneira. Dei só umas corrigidas na sintaxe que estava errada :)

 

Se outros outfits também fossem obtidos por esse modo, eu faria esse código assim:

 

local config = {
   ["Wizard Helmet Addon"] = {
      storage = 21000,
 
      outfit = {
         sex = {
            [0] = 149, -- Sex 0
            [1] = 145, -- Sex 1
         },
 
         addons = 1
      },
 
      items = {
         [2536] = {count = 1, pos = {x = 182, y = 262, z = 9}}, -- [Item1] = {posição 1}
         [2492] = {count = 1, pos = {x = 183, y = 262, z = 9}}, -- [Item2] = {posição 2}
         [2488] = {count = 1, pos = {x = 185, y = 262, z = 9}}, -- [Item3] = {posição 3}
         [2123] = {count = 1, pos = {x = 186, y = 262, z = 9}}, -- [Item4] = {posição 4}
      }
      -- Caso tenha a necessidade de usar mais itens é só ir adicionando mais à tabela
   },
}
 
function onUse(cid, item, frompos, item2, topos, pos)
   for i, v in pairs(config) do
      local ok = true
 
      for item_id, c in pairs(v.items) do
         local item = getTileItemById(c.pos, item_id)
 
         if item.uid < 100 or item.type < c.count then
            ok = false
            break
         end
 
      end
 
      if ok then
         if getPlayerStorageValue(cid, v.storage) > 0 then
            return doPlayerSendCancel(cid, "You already have this addon.")
         end
 
         for item_id, c in pairs(v.items) do
            local item = getTileItemById(c.pos, item_id)
            doRemoveItem(item.uid, c.count)
         end
 
         setPlayerStorageValue(cid, v.storage, 1)
         doPlayerSendTextMessage(cid, 21, "You just earned the ".. i ..".")
         doSendMagicEffect(getThingPos(cid), 28)
         doPlayerAddOutfit(cid, v.outfit.sex[getPlayerSex(cid)], v.outfit.addons)
         return true
      end
 
   end
 
   return true
end
 

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Cara nao sei nem como te agradecer, muito obrigado mesmo! Mas estou tendo um problema ainda, usei o script que voce fez, mas quando tento clicar na pedra pra ganhar o addon, ja com os items nos locais certos nao acontece nada.. coloquei assim no actions.xml

 

<action uniqueid="9876" event="script" value="addons/wizard1.lua"/>

E obviamente coloquei o uniqueid na pedra.

 

Se nao fosse muito incomodo eu pensei em quando os items fossem retirados surgisse um efeito de fogo em cima deles como se estivessem sido "queimados", sabe do que eu to falando? Como faria isso nesse script?
Pensei em adicionar o "doSendMagicEffect" depois do "doRemoveItem" ia dar certo?
Desde ja, mt obrigado!

Editado por Cosmopolitan (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bem, eu analisei, porém não sei se vai dar certo, tente o mesmo script modificado por mim para que haja efeito desejado :

local config = {
   ["Wizard Helmet Addon"] = {
      storage = 21000,
 
      outfit = {
         sex = {
            [0] = 149, -- Sex 0
            [1] = 145, -- Sex 1
         },
 
         addons = 1
      },
 
      items = {
         [2536] = {count = 1, pos = {x = 182, y = 262, z = 9}}, -- [Item1] = {posição 1}
         [2492] = {count = 1, pos = {x = 183, y = 262, z = 9}}, -- [Item2] = {posição 2}
         [2488] = {count = 1, pos = {x = 185, y = 262, z = 9}}, -- [Item3] = {posição 3}
         [2123] = {count = 1, pos = {x = 186, y = 262, z = 9}}, -- [Item4] = {posição 4}
      }
      -- Caso tenha a necessidade de usar mais itens é só ir adicionando mais à tabela
   },
}
 
function onUse(cid, item, frompos, item2, topos, pos)
   for i, v in pairs(config) do
      local ok = true
 
      for item_id, c in pairs(v.items) do
         local item = getTileItemById(c.pos, item_id)
 
         if item.uid < 100 or item.type < c.count then
            ok = false
            break
         end
 
      end
 
      if ok then
         if getPlayerStorageValue(cid, v.storage) > 0 then
            return doPlayerSendCancel(cid, "You already have this addon.")
         end
 
         for item_id, c in pairs(v.items) do
            local item = getTileItemById(c.pos, item_id)
            doRemoveItem(item.uid, c.count)
            doSendMagicEffect(c.pos, 6)
         end
 
         setPlayerStorageValue(cid, v.storage, 1)
         doPlayerSendTextMessage(cid, 21, "You just earned the ".. i ..".")
         doSendMagicEffect(getThingPos(cid), 28)
         doPlayerAddOutfit(cid, v.outfit.sex[getPlayerSex(cid)], v.outfit.addons)
         return true
      end
 
   end
 
   return true
end

Certifique-se se você colocou o UniqueID através do MapEditor na pedra.

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo