return getPlayerStorageValue(cid,102) < 0 and 0 or getPlayerStorageValue(cid,102)
Seria a mesma coisa que:
if getPlayerStorageValue(cid,102) < 0 then return 0 else return getPlayerStorageValue(cid,102) end
Quanto ao possible_gold, em lua você não precisa usar sempre o table.insert para inserir valores.
Sabendo que:
possible_gold = {{}, {}}
Seria o mesmo que:
possible_gold = {
[1] = {},
[2] = {}
}
Logo abaixo ele usa assim:
possible_gold[1][#possible_gold[1]+1] = configs.gold[h][1]
Interpretando isto, seria algo como:
possible_gold = {
[1] = {
[#possible_gold[1]+1] = configs.gold[h][1]
}
}




info
Grupo: Campones
Registrado: 02/02/08
Posts: 29
Reputação: +1
Bom pessoal...
Na verdade estou com duas dúvidas, as duas relacionadas a um trecho de um script...
Minhas duas dúvidas ocorreram enquanto eu tentava criar meu proprio script de mineraçao com base em outras eu estava tendo como base dois script, o primeiro era este:
O script eh este:
function onUse(cid, item, fromPosition, itemEx, toPosition) -- By Marcryzius local function skill(cid) return getPlayerStorageValue(cid,102) < 0 and 0 or getPlayerStorageValue(cid,102) end local function level(cid) return getPlayerStorageValue(cid,202) < 0 and 0 or getPlayerStorageValue(cid,202) end local valores ={ mine={1309,1327,1316,1312,382,371,373,379,380,5644,5645,5646,5648}, chao={351,352,353,354,392}, drops={{2143,25},{2144,30},{2145,5},{2146,6},{2147,4},{2148,80},{2149,10},{2150,5},{2157,1},{1294,40}} } if(isInArray(valores.chao, itemEx.itemid) == TRUE) then if math.random(1,10) <= 2 then doTransformItem(itemEx.uid, 392) doDecayItem(itemEx.uid) else doSendMagicEffect(toPosition, CONST_ME_POFF) end elseif(isInArray(valores.chao, itemEx.itemid) == TRUE)then doSendMagicEffect(toPosition, CONST_ME_POFF) else if(level(cid)*2 < skill(cid))then doSendMagicEffect(toPosition,3) setPlayerStorageValue(cid,202,levels+1) doPlayerSendTextMessage(cid, 20,"voce avançou para o nivel "..level(cid).." na profissao de (Minerador).") setPlayerStorageValue(cid,102,0) else local number,chance = math.random(1,400),math.random(1,#valores.drops) if(getPlayerStorageValue(cid,992) == 1)then if(isInArray(valores.mine, itemEx.itemid) == TRUE)then if(number <= level(cid))then if(skill(cid) > 10)then if(valores.drops[chance][2] >= number)then doSendMagicEffect(toPosition,14) doPlayerAddItem(cid,valores.drops[chance][1],1) end else doPlayerAddItem(cid,1293,1) end end setPlayerStorageValue(cid,102,skill(cid)+1) else doPlayerSendCancel(cid,"Este local não contém minério, use seu picareto em locais que contenha minério.") end end doSendMagicEffect(toPosition,3) end end return TRUE endA funçao eh esta (na verdade são duas que nao entendo, mas elas sao praticamente iguais):
local function skill(cid)
return getPlayerStorageValue(cid,102) < 0 and 0 or getPlayerStorageValue(cid,102)
end
local function level(cid)
return getPlayerStorageValue(cid,202) < 0 and 0 or getPlayerStorageValue(cid,202)
Será que alguem pode me dizer o que elas retornam e porque o Marcryzius as utilizou ?
A minha outra dúvida tambem eh em um script de mineraçao...
Este:
local configs = { sign = {{level = {1,99}, quant = {1,2}, percent = 25}, {level = {100,120}, quant = {1,2}, percent = 35}, {level = {121,130}, quant = {1,3}, percent = 30}, {level = {131,140}, quant = {1,3}, percent = 35}, {level = {141,149}, quant = {1,4}, percent = 35}, {level = {150}, quant = {1,4}, percent = 45}}, stones = {11535, 11534, 11536, 11537}, gold = {{8301, 'all'}}, stone_delay = 900, MaxLevel = 150 } function onUse(cid, item, fromPosition, itemEx, toPosition, onUse) local STORAGE_SKILL_LEVEL = 20000 local STORAGE_SKILL_TRY = 20001 local skillLevel = getPlayerStorageValue(cid,STORAGE_SKILL_LEVEL) local skillTry = getPlayerStorageValue(cid,STORAGE_SKILL_TRY) local objeto2 = getThingFromPos(toPosition) local player = getCreaturePosition(cid) print(#configs.gold) if getPlayerStorageValue(cid, 20000) == -1 then -- Verifica se o player tem o storage necessário para minerar setPlayerStorageValue(cid, 20000, 1) -- Insere o storage necessario para minerar end -- Finaliza a verificaçao do storage necessário para minerar for Q = 1, #configs.sign do -- Cria um loop e uma variavel para cada index da tabela configs.lua if configs.sign[Q].level[2] == nil then -- Verifica se o segundo index da subtabela "level" e nulo configs.sign[Q].level[2] = configs.sign[Q].level[1] -- Atribui o primeiro index da subtabela "level" à variavel "configs.sign[Q].level[2]" end -- Finaliza a verificaçao que compara a variavel "configs.sign[Q].level[2]" com nil if getPlayerStorageValue(cid,20000) >= configs.sign[Q].level[1] and getPlayerStorageValue(cid,20000) <= configs.sign[Q].level[2] then -- Verifica qual estagio de mineraçao o player se encontra quant = math.random(configs.sign[Q].quant[1],configs.sign[Q].quant[2]) -- Redeclara um valor aleatorio para variavel responsavel pela quantidade percent = configs.sign[Q].percent -- Cria uma variavel global com o valor da porcentagem do respectivo estagio que o player se encontra break -- Quebra o loop end -- Finaliza a verificaçao do estagio do player end -- Finaliza o loop Q for i = 1, #configs.stones do -- Cria um looping e uma variavel para cada index da sub tabela "stones" if getThingFromPos(toPosition).itemid == configs.stones[i] then -- Verifica se o item.itemid do item que se encontra na posiçao "toPosition" esta na sub tabela "stones" if math.random(20,100) <= percent then -- Verifica se o valor numerico randomizado e menor que o valor da porcentagem do estagio do player possible_gold = {{},{}} -- Nao entendi for h = 1, #configs.gold do -- Cria um looping e uma variavel para cada index da sub tabela "gold" if configs.gold[h][2] == getThingFromPos(toPosition).itemid then possible_gold[1][#possible_gold[1]+1] = configs.gold[h][1] else if configs.gold[h][2] == 'all' then possible_gold[2][#possible_gold[2]+1] = configs.gold[h][1] end end end if possible_gold[1][1] == nil and possible_gold[2][1] == nil then doPlayerSendTextMessage(cid,22,"This stone can not be mined.") elseif possible_gold[1][1] ~= nil then doPlayerAddItem(cid,possible_gold[1][math.random(1,#possible_gold[1])],quant) elseif possible_gold[1][1] == nil and possible_gold[2][1] ~= nil then doPlayerAddItem(cid,possible_gold[2][math.random(1,#possible_gold[2])],quant) end if possible_gold[1][1] ~= nil or possible_gold[2][1] ~= nil then if skillTry >= 0 then setPlayerStorageValue(cid,STORAGE_SKILL_TRY,skillTry + 1) else setPlayerStorageValue(cid,STORAGE_SKILL_TRY,1) end doSendMagicEffect(getCreaturePosition(cid), 12) doPlayerSendTextMessage(cid,22,"You got "..quant.." gold powder"..getItemNameById(objeto2.itemid)..".") doSendAnimatedText(getCreaturePosition(cid), ''..quant..'', 60, cid) doSendAnimatedText(getCreaturePosition(cid), 'Tack!', 35, cid) doItemSetAttribute(objeto2.uid, "name", "Remains of Gold Ore".. getItemNameById(objeto2.itemid) .."") doSendMagicEffect(toPosition, 3) addEvent(dostoneReturn,configs.stone_delay * 1000,toPosition,objeto2.itemid) doTransformItem(objeto2.uid, 11539) break end else doPlayerSendCancel(cid,"You got nothing") doSendMagicEffect(toPosition, 3) doItemSetAttribute(objeto2.uid, "name", "Remains of Gold Ore".. getItemNameById(objeto2.itemid) .."") doSendAnimatedText(getCreaturePosition(cid), 'Miss!', 180, cid) addEvent(dostoneReturn,configs.stone_delay * 1000,toPosition,objeto2.itemid) break end else doPlayerSendCancel(cid,"You can only gold ores") end end if skillTry >= ((skillLevel+1)*3) then if skillLevel == configs.MaxLevel then doPlayerSendTextMessage(cid, 22, "Max level reached in mining.") setPlayerStorageValue(cid,STORAGE_SKILL_TRY,0) else setPlayerStorageValue(cid,STORAGE_SKILL_LEVEL,skillLevel + 1) setPlayerStorageValue(cid,STORAGE_SKILL_TRY,0) doPlayerSendTextMessage(cid, 22, "You advanced from level ".. skillLevel .." to level ".. skillLevel + 1 .." in Mining.") doSendMagicEffect(getCreaturePosition(cid),14) doSendAnimatedText(getCreaturePosition(cid), 'LEVEL UP!', 18, cid) end end end function dostoneReturn(itemposition,oldid) local pos = getThingfromPos(itemposition) doTransformItem(pos.uid,oldid) doSetItemText(pos.uid, getItemNameById(oldid)) doSendMagicEffect(itemposition,math.random(28,30)) endEu ate tentei identa-lo mas ai chegou nesta parte:
possible_gold = {{},{}} -- Nao entendiE nao consegui entender mais nada... Pensei que o autor tinha criado uma tabela e iria inserir valores em seguida, mas não encontrei nenhuma função "table.insert"...
Alguem pode me explicar o que esta parte de vermelho significa?
Bom pessoal...
Eh isto ai...
Desde ja...
Muito Obrigada
Editado Janeiro 28 por sabrina9292