Ir para conteúdo

Alguem Pode Me Dizer O Que Estas Funções Iram Retornar?


sabrina9292

Posts Recomendados

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
end

 

 

A 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))
end

 

 

 

Eu ate tentei identa-lo mas ai chegou nesta parte:

 

possible_gold = {{},{}} -- Nao entendi

 

E 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 por sabrina9292
Link para o comentário
Compartilhar em outros sites

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]
}
}

 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...