Postado Janeiro 4, 2015 10 anos Olá, eu gostária de tirar uma dúvida, ultimamente ando mechendo com scripts, gostaria de saber para que serve a função return 1, return 0, return false, return true, etc.. Procurei alguns tutoriais mas eles não explicam o porque. Des de já, grato. Deixei um script da obsidian knife para quem puder me explicar baseado nele function onUse(cid, item, frompos, item2, topos) if item2.itemid == 0 then return 0 end random = math.random(1,15) if getPlayerLevel(cid) >= 8 then if item2.itemid == 2881 and random == 1 then doTransformItem(cid,item2.uid,2660) doPlayerAddItem(cid,5948,1) elseif item2.itemid == 2881 and random == 2 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 3 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 4 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 5 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 6 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 7 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 8 then doTransformItem(item2.uid,2882) doPlayerAddItem(cid,5948,1) elseif item2.itemid == 2881 and random == 9 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 10 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 11 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 12 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 13 then doTransformItem(item2.uid,2882) doPlayerAddItem(cid,5948,1) elseif item2.itemid == 2881 and random == 14 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) elseif item2.itemid == 2881 and random == 15 then doTransformItem(item2.uid,2882) doSendMagicEffect(topos,3) end end return 1 end Editado Janeiro 4, 2015 10 anos por esnio12 (veja o histórico de edições)
Postado Janeiro 4, 2015 10 anos Return é um comando (uma função "disfarçada"). Ele é usado para retornar valores de uma função ou trecho, sempre sendo escrito no fim de um bloco. Em Lua, se você retornar 0, 1 ou qualquer valor, irá retornar 0, 1 ou esse valor. Para determinar o resultado de um callback, de modo que o mesmo possa ou não ser executado, o correto é fazer uso dos valores booleanos true / false (a menos que a função em questão seja para retornar um valor específico, como uma string/algarismo/tabela/variável/função/qualquer coisa). The corrupt fear us. The honest support us. The heroic join us.
Postado Janeiro 4, 2015 10 anos O @Suicide está correto. Mas se ainda sim você não entendeu, vou tentar simplificar. Eu tenho uma função: function minhaFuncao() return "TK" end O return atribui um valor á ela. Ou seja: a = minhaFuncao() b = "TK" a tem o mesmo valor de b. O return pode atribuir qualquer tipo de dado válido á uma função, até mesmo nil, que é "nada". Quanto ao uso do true, false, 1, 0. Geralmente é usado para saber se foi feito o esperado. 1 = true 0 = false false = Falso true = Verdadeiro. Editado Janeiro 4, 2015 10 anos por Gabrielbsales (veja o histórico de edições) Att. Featzen.
Postado Janeiro 5, 2015 10 anos O return pode atribuir qualquer tipo de dado válido á uma função, até mesmo nil, que é "nada". Quanto ao uso do true, false, 1, 0. Geralmente é usado para saber se foi feito o esperado. 1 = true 0 = false false = Falso true = Verdadeiro. Calma. nil significa nulo, é um valor nulo. Em outras linguagens de programação, 0 e 1 representam false e true (respectivamente), como você disse. Porém, em Lua, o correto é fazer uso dos valores booleanos true e false. O que acontece, é que provavelmente, alguns (ou a maioria) dos servidores de open tibia devem ter algo declarando que true = 1 e false = 0. Na linguagem Lua (em si), se você retornar 1, irá simplesmente resultar no número 1 (sem alterações provenientes disso). The corrupt fear us. The honest support us. The heroic join us.
Postado Janeiro 5, 2015 10 anos Calma. nil significa nulo, é um valor nulo. Em outras linguagens de programação, 0 e 1 representam false e true (respectivamente), como você disse. Porém, em Lua, o correto é fazer uso dos valores booleanos true e false. O que acontece, é que provavelmente, alguns (ou a maioria) dos servidores de open tibia devem ter algo declarando que true = 1 e false = 0. Na linguagem Lua (em si), se você retornar 1, irá simplesmente retornar o número 1 (sem alterações provenientes disso). Sim, mas no caso citado, é apenas o costume de quem programou. 1 - Inteiro. False - Booleano. Att. Featzen.
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.