Postado Maio 25, 2014 11 anos Fiz um script que funciona da seguinte maneira, o player posiciona uma arma em uma mesa e um item que funcionaria com uma gema encantadora em outra mesa então puxa a alavanca os dois items somem e surge uma arma encantada, porém existem quatro locais diferentes para se fazer isso o local onde será encantada uma arma de fogo, um local para arma de gelo, para arma de tera e a de energy cada elemento terá uma chance diferente para ter sucesso no aprimoramento da arma, okay fiz tudo certinho ao meu ver porém na hora que fui testar fiz as devidas ações (posicionei os items e puxei alavanca) e aparece o erro da função getitem se alguém poder me ajudar agradeço. function onUse(cid, item, fromPos, itemEx, toPos) -- [[INICIO CONFIG - Beyond Sky]] armasfire = { [1] = {id = 2383, idfire = 7744, item = "spike sword"}, [2] = {id = 7383, idfire = 7748, item = "relic sword"}, [3] = {id = 7384, idfire = 7746, item = "mystic blade"}, [4] = {id = 7406, idfire = 7747, item = "blacksteel sword"}, [5] = {id = 7402, idfire = 7748, item = "dragon slayer"}, [6] = {id = 2423, idfire = 7754, item = "clerical mace"}, [7] = {id = 2445, idfire = 7755, item = "crystal mace"}, [8] = {id = 7415, idfire = 7756, item = "cranial basher"}, [9] = {id = 7392, idfire = 7757, item = "orcish maul"}, [10] = {id = 2391, idfire = 7758, item = "war hammer"}, [11] = {id = 2429, idfire = 7749, item = "barbarian axe"}, [12] = {id = 7402, idfire = 7750, item = "knight axe"}, [13] = {id = 7402, idfire = 7751, item = "heroic axe"}, [14] = {id = 7402, idfire = 7752, item = "headchopper"}, [15] = {id = 7402, idfire = 7753, item = "war axe"} } armasice = { [1] = {id = 2383, idice = 7763,item = "spike sword"}, [2] = {id = 7383, idice = 7764, item = "relic sword"}, [3] = {id = 7384, idice = 7765, item = "mystic blade"}, [4] = {id = 7406, idice = 7766, item = "blacksteel sword"}, [5] = {id = 7402, idice = 7767, item = "dragon slayer"}, [6] = {id = 2423, idice = 7773, item = "clerical mace"}, [7] = {id = 2445, idice = 7774, item = "crystal mace"}, [8] = {id = 7415, idice = 7775, item = "cranial basher"}, [9] = {id = 7392, idice = 7776, item = "orcish maul"}, [10] = {id = 2391, idice = 7777, item = "war hammer"}, [11] = {id = 2429, idice = 7768, item = "barbarian axe"}, [12] = {id = 7402, idice = 7769, item = "knight axe"}, [13] = {id = 7402, idice = 7770, item = "heroic axe"}, [14] = {id = 7402, idice = 7771, item = "headchopper"}, [15] = {id = 7402, idice = 7772, item = "war axe"} } armastera = { [1] = {id = 2383, idtera = 7854, item = "spike sword"}, [2] = {id = 7383, idtera = 7855, item = "relic sword"}, [3] = {id = 7384, idtera = 7856, item = "mystic blade"}, [4] = {id = 7406, idtera = 7857, item = "blacksteel sword"}, [5] = {id = 7402, idtera = 7858, item = "dragon slayer"}, [6] = {id = 2423, idtera = 7864, item = "clerical mace"}, [7] = {id = 2445, idtera = 7865, item = "crystal mace"}, [8] = {id = 7415, idtera = 7866, item = "cranial basher"}, [9] = {id = 7392, idtera = 7867, item = "orcish maul"}, [10] = {id = 2391, idtera = 7868, item = "war hammer"}, [11] = {id = 2429, idtera = 7859, item = "barbarian axe"}, [12] = {id = 7402, idtera = 7860, item = "knight axe"}, [13] = {id = 7402, idtera = 7861, item = "heroic axe"}, [14] = {id = 7402, idtera = 7862, item = "headchopper"}, [15] = {id = 7402, idtera = 7863, item = "war axe"} } armasenergy = { [1] = {id = 2383, idenergy = 7869, item = "spike sword"}, [2] = {id = 7383, idenergy = 7870, item = "relic sword"}, [3] = {id = 7384, idenergy = 7871, item = "mystic blade"}, [4] = {id = 7406, idenergy = 7872, item = "blacksteel sword"}, [5] = {id = 7402, idenergy = 7873, item = "dragon slayer"}, [6] = {id = 2423, idenergy = 7879, item = "clerical mace"}, [7] = {id = 2445, idenergy = 7880, item = "crystal mace"}, [8] = {id = 7415, idenergy = 7881, item = "cranial basher"}, [9] = {id = 7392, idenergy = 7882, item = "orcish maul"}, [10] = {id = 2391, idenergy = 7883, item = "war hammer"}, [11] = {id = 2429, idenergy = 7874, item = "barbarian axe"}, [12] = {id = 7402, idenergy = 7875, item = "knight axe"}, [13] = {id = 7402, idenergy = 7876, item = "heroic axe"}, [14] = {id = 7402, idenergy = 7877, item = "headchopper"}, [15] = {id = 7402, idenergy = 7878, item = "war axe"} } chancepos = { [1] = {idignitum = 6550, chance = 75, posignitum = {x=2229, y=2081, z=8, stackpos = 255}, posarma = {x=2229, y=2081, z=8, stackpos = 255}, spot = "fire"}, [2] = {idignitum = 6551, chance = 50, posignitum = {x=2229, y=2081, z=8, stackpos = 255}, posarma = {x=2229, y=2081, z=8, stackpos = 255}, spot = "ice"}, [3] = {idignitum = 6549, chance = 25, posignitum = {x=2229, y=2081, z=8, stackpos = 255}, posarma = {x=2229, y=2081, z=8, stackpos = 255}, spot = "tera"}, [4] = {idignitum = 6548, chance = 15, posignitum = {x=2229, y=2081, z=8, stackpos = 255}, posarma = {x=2229, y=2081, z=8, stackpos = 255}, spot = "energy"}, } local uniqid = 9999 -- [[FIM CONFIG - Beyond Sky]] for i = 1, 15 do getitemfire = getThingfromPos(chancepos[1].posignitum) getitemice = getThingfromPos(chancepos[2].posignitum) getitemtera = getThingfromPos(chancepos[3].posignitum) getitemenergy = getThingfromPos(chancepos[4].posignitum) getitemfire2 = getThingfromPos(chancepos[1].posarma) getitemice2 = getThingfromPos(chancepos[2].posarma) getitemtera2 = getThingfromPos(chancepos[3].posarma) getitemenergy2 = getThingfromPos(chancepos[4].posarma) if item.uid == uniqid and item.itemid == 9825 then if (chancepos[i].chance >= math.random(1, 100)) then if (getitemfire.itemid == (chancepos[1].idignitum)) and (getitemfire2.itemid == (armasfire[i].id)) then doRemoveItem(getitemfire.uid,1) doRemoveItem(getitemfire2.uid,1) doSendMagicEffect(getitemfire, CONST_ME_MAGIC_RED) doCreateItem(armasfire[i].idfire, 1, getitemfire2) doSendMagicEffect(getitemfire2, CONST_ME_FIREAREA) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "His weapon was successfully improved.") elseif (getitemice.itemid == (chancepos[2].idignitum)) and (getitemice2.itemid == (armasice[i].id)) then doRemoveItem(getitemice.uid,1) doRemoveItem(getitemice2.uid,1) doSendMagicEffect(getitemice, CONST_ME_MAGIC_BLUE) doCreateItem(armasice[i].idice, 1, getitemice2) doSendMagicEffect(getitemice2, CONST_ME_ICEAREA) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "His weapon was successfully improved.") elseif (getitemtera.itemid == (chancepos[1].idignitum)) and (getitemtera2.itemid == (armastera[i].id)) then doRemoveItem(getitemtera.uid,1) doRemoveItem(getitemtera2.uid,1) doSendMagicEffect(getitemtera, CONST_ME_MAGIC_GREEN) doCreateItem(armastera[i].idtera, 1, getitemtera2) doSendMagicEffect(getitemtera2, CONST_ANI_EARTH) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "His weapon was successfully improved.") elseif (getitemenergy.itemid == (chancepos[1].idignitum)) and (getitemenergy22.itemid == (armasenergy[i].id)) then doRemoveItem(getitemenergy.uid,1) doRemoveItem(getitemenergy2.uid,1) doSendMagicEffect(getitemenergy, CONST_ME_ENERGYHIT) doCreateItem(armasfire[i].idenergy, 1, getitemenergy2) doSendMagicEffect(getitemenergy2, CONST_ME_ENERGYAREA) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "His weapon was successfully improved.") else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are not using the necessary items or the items are not positioned correctly.") return TRUE end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Failed, not succeeded in improve its weapon. You lost both items.") end elseif item.uid == uniqid and item.itemid == 9826 then doTransformItem(item.uid, item.itemid - 1) end end end Medalhas:1, 2
Postado Maio 26, 2014 11 anos o for 1,15 tá executando tudo que tá dentro dele 15 vezes.. na primeira ele faz isso:getitemfire = getThingfromPos(chancepos[1].posignitum) ou seja, ele pega a coisa que tá nessa posição. Porém, na segunda vez já não tem nada nessa posição então o getitemfire vai resultador nil (valor nulo). e todas as vezes seguintes tb vão resultar nulo. Você tem que fazer uma condicional if getitemfire ~= 0 então vale tudo a seguir Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Maio 26, 2014 11 anos Autor Existe uma forma melhor de eu usar o for então parceiro? está seria uma? Daí no caso eu iria dar um for para cada função ... for _, v in pairs(armasenergy) do Editado Maio 26, 2014 11 anos por Beyond Sky (veja o histórico de edições) Medalhas:1, 2
Postado Maio 26, 2014 11 anos eu não sei porque não to acostumado com tanta tabela, acho melhor vc pedir ajuda pro Max porque eu to ficando confuso só de olhar kkk eu faria de outra forma: [iD do item] = id dele com a transformação. pegar o item na posição, se for [iD do item] e pegar a gema na outra posição e for capaz de remover ela, então transform o [id do Item] pra id com transformação. Faria isso dividindo por posições já que vc mesmo falou q seriam 4 locais Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
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.