Ir para conteúdo

Featured Replies

Postado

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 :wacko:

Editado por Flaah (veja o histórico de edições)

Resolvido por Wise

Ir para solução
  • Respostas 18
  • Visualizações 3.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • local config = { [3001] = {HP = 900}, -- [Storage] = {HP = Quantidade} [3002] = {HP = 780}, } function onUse(cid, item, frompos) local valor = config[getPlayerStorageValue(cid)]

  • Você não deu ouvidos ao que eu disse acima. Releia e depois observe:   local skey = 1234 -- storage key id local t = {     [3001] = 900, -- [valueId] = HP     [3002] = 780 }  

  • Veja: local valor = config[getPlayerStorageValue(cid)] Você se esqueceu de determinar o parâmetro referente ao id da key a ter o valor retornado, por isso o nil citado. getPlayerStorageValu

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

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

 

 

Só colocar o valor em questão

if tabela[x] then
   print("foi")
else
   print("n foi")
end

se X corresponder a algum índice da tabela, vai retornar algo, se não, nil, e nil é interpretado como false, no if do lua.

@Flaah, não esqueça de remover o item, ou modificar o storage, para que o player não possa usar de novo quantas vezes quiser.

Postado
20 horas atrás, Flaah disse:

data/actions/scripts/Classes/teste.lua:9: attempt to call global 'getPlayerStorage' (a nil value)

 

Veja:

local valor = config[getPlayerStorageValue(cid)]

Você se esqueceu de determinar o parâmetro referente ao id da key a ter o valor retornado, por isso o nil citado.

getPlayerStorageValue(cid, key)

Faça uso de um escopo como o que o membro acima fez, para evitar demais erros.

Editado por Wise (veja o histórico de edições)

Postado
  • Autor

Ocorreu esse erro:

[19/11/2015 22:20:53] [Error - Action Interface]
[19/11/2015 22:20:53] data/actions/scripts/Classes/guerreiro.lua:onUse
[19/11/2015 22:20:53] Description:
[19/11/2015 22:20:53] (luaGetCreatureStorage) Creature not found

 

#EDIT

 

Fiz uma pequena edição pra arrumar esse erro, só que agora o player mesmo com a storage, não da o HP referente a storage setada no player.

 

Script:

 

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

function onUse(cid, item, frompos)
    
    if valor then
    local valor = config[getPlayerStorageValue(cid)]

       setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +valor.HP)
       doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
       doSendMagicEffect(frompos, 10)
       doPlayerSendTextMessage(cid, 20, "Congratulations!")

    end
    return true
end

 

Editado por Flaah (veja o histórico de edições)

Postado
  • Solução
17 horas atrás, Flaah disse:

só que agora o player mesmo com a storage, não da o HP referente a storage setada no player.

Você não deu ouvidos ao que eu disse acima. Releia e depois observe:

 

local skey = 1234 -- storage key id
local t = {
    [3001] = 900, -- [valueId] = HP
    [3002] = 780
}

 

function onUse(cid, item, fromPos)
    local v = t[getPlayerStorageValue(cid, skey)]
    
    if v then
        setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + v)
        doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
        doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
        doPlayerSendTextMessage(cid, 20, "Congratulations!")
    end

 

    return true
end

Editado por Wise (veja o histórico de edições)

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo