Ir para conteúdo
  • 0

Como faz pra checar storage em tabela?


Flaah

Pergunta

Como faz pra um checar uma storage em tabela? exemplo:

 

Fiz um item que ao usar ele checa a storage do player e se ele tiver X storage, ele ganha uma certa quantidade de HP.

 

Só que da esse erro ao checar a storage pela tabela:

[18/11/2015 23:50:00] data/actions/scripts/Classes/teste.lua:9: attempt to call global 'getPlayerStorage' (a nil value)

local config = {

    [3001] = {HP = 900}, -- [Storage] = {HP = Quantidade}
    [3002] = {HP = 780},
}

function onUse(cid, item, frompos)

local valor = config[getPlayerStorageValue(cid)]

setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +valor.HP)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))

doSendMagicEffect(frompos, 10)
doPlayerSendTextMessage(cid, 20, "Congratulations!")

return true
end

Como faço pra não ocorrer esse erro e checar a storage? pliz confused.gif

 

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

rapaz, o erro que deu foi porque vc não passou parâmetro na função getPlayerStorageValue.. ela tinha que receber um creature id e o storage à ser checado. Mas eu acho que entendi oque vc tentou fazer, vc quer que ele cheque todos os storages da tabela e caso tenha valor >= 1 praquele determido storage aumente a vida, certo? Porque aqui você tá checando o valor de um storage inexistente

local valor = config[getPlayerStorageValue(cid)]

e além disso vc tá pegando o valor dele pra verificar na tabela, ou seja, esse 3001 e 3002 são os values que o storage não definido poderá assumir, era isso mesmo que você queria?


Fiz duas versões, elas são ligeiramente diferentes. A primeira checa storages 3001 e 3002, a segunda checa se o valor de um storage é 3001 ou 3002:

 

local config = {

    [3001] = {HP = 900}, -- [Storage] = {HP = Quantidade}
    [3002] = {HP = 780},
}

function onUse(cid, item, frompos)

	for stg, value in ipairs (config) do
		if getPlayerStorageValue(cid, stg) >= 1
			setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +value.HP)
			doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
		end
	end
	doSendMagicEffect(frompos, 10)
	doPlayerSendTextMessage(cid, 20, "Congratulations!")
return true
end


--------------- VERSAO 2 ABAIXO --------------------------



local config = {
    [3001] = {HP = 900}, -- [Storage] = {HP = Quantidade}
    [3002] = {HP = 780},
	storage = 39102 -- storage que salva os valores acima
}

function onUse(cid, item, frompos)
	local valor = config[getPlayerStorageValue(cid, storage)]
	if valor and valor.HP ~= nil then
		setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +valor.HP)
		doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
		doSendMagicEffect(frompos, 10)
		doPlayerSendTextMessage(cid, 20, "Congratulations!")
	end
return true
end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

pela forma q vc fez eu não entendi se vc queria pegar o valor de 1 storage ou se queria checar entre vários storages. A diferença do primeiro pro segundo é que o primeiro se vc tiver todos os storages vc vai ganhar todas as vidas somadas

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...