Postado Novembro 29, 2012 12 anos Ae galera, anônimo da OTbr mais uma vez aqui. Brinks :B Bom galera, hoje falarei sobre o RETURN, que todos acham que é um bicho de sete cabeças mas que na verdade não passa de algo simples e bem útil em alguns casos. Utilização: Exemplo 1: function getPlayerSet(cid) local items = {} for i = 1,10 do local item = getPlayerSlotItem(cid, i) if item.uid > 0 then table.insert(item, items) end end return items end Como podem ver nessa função, eu criei uma função que cria um loop e verifica todos os items do corpo do player e ela usa o return para retornar essa tabela com os items. Com isso se eu precisar pegar todos os items do player é só usar essa função que ela retornara uma com os items do player. (Função não testada) Exemplo 2: function isTroll (cid) if string.lower(getCreatureName(cid)) == "troll" then return true else return false end end Essa é uma função que irá verificar se o cid vai ter o nome de "Troll" e se for ela vai retornar true e se não for vai retornar false. Return true e false em callbacks Exemplo 3: local config = { daily = "no", -- allow only one enter per day? (like in global Tibia) level = 100, storage = 30015 entry = { {x = 247, y = 659, z = 13}, {x = 247, y = 660, z = 13}, {x = 247, y = 661, z = 13}, {x = 247, y = 662, z = 13} }, destination = { {x = 189, y = 650, z = 13}, {x = 189, y = 651, z = 13}, {x = 189, y = 652, z = 13}, {x = 189, y = 653, z = 13} } } config.daily = getBooleanFromString(config.daily) function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 1946) then if(config.daily) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) else doTransformItem(item.uid, item.itemid - 1) end return true end if(item.itemid ~= 1945) then return true end local players = {} for _, position in ipairs(config.entry) do local pid = getTopCreature(position).uid if(pid == 0 or not isPlayer(pid) or getCreatureStorage(pid, config.storage) > 0 or getPlayerLevel(pid) < config.level) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) return true end table.insert(players, pid) end for i, pid in ipairs(players) do doSendMagicEffect(config.entry[i], CONST_ME_POFF) doTeleportThing(pid, config.destination[i], false) doSendMagicEffect(config.destination[i], CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid + 1) return true end Dá para ver claramente que existem umas verificações checam valores e se eles forem verdadeiros então vai dar um return true que vai parar o script ali, assim evitando que ele execute o resto do script. Curiosidade: Bom galera eu sempre vejo scripts de alavanca usando verificação para ver o id da alavanca e para transformar a alavanca. Porém se vocês não colocarem essa verificação, a função de transformar o item e colocar um return false no final a alavanca irá se transformar da maneira padrão :] Creditos : IuniX Contato; god.marinii ryzor@tibiaking.com
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.