Postado Setembro 12, 2013 11 anos 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 = 145local outfitfemale = 149local addons = 1function 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 4local q1 = getThingfromPos(r1)local q2 = getThingfromPos(r2)local q3 = getThingfromPos(r3)local q4 = getThingfromPos(r4)for i, x in pairs(config) doif (q1.itemid == x.t1 and q2.itemid == x.t2 and q3.itemid == x.t3 and q4.itemid == x.t4) thendoRemoveItem(q1.uid, 1)doRemoveItem(q2.uid, 1)doRemoveItem(q3.uid, 1)doRemoveItem(q4.uid, 1)if getPlayerStorageValue(cid, storage) == -1 thendoPlayerAddOutfit(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)elsedoPlayerSendCancel(cid, "You already have this addon.")endreturn trueend 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
Postado Setembro 12, 2013 11 anos 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 -
Postado Setembro 12, 2013 11 anos Autor 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 Setembro 12, 2013 11 anos por Cosmopolitan (veja o histórico de edições)
Postado Setembro 12, 2013 11 anos 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" 平(Não dou suporte por mensagem privada.)
Postado Setembro 12, 2013 11 anos Autor Mt obrigado pela ajuda amigo mas nada ainda cara, uniqueid na pedra, uniqueid nas actions.xml e clico e nao acontece nada. Alguma sugestao?
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.