Ir para conteúdo
  • Cadastre-se

Erro ao usar as eggs de experiência


Posts Recomendados

Boa noite, toda vez que eu tenta usar um egg de experiencia, ele não é consumido ou usado e aparece o seguinte erro no console ''[Error - Action Interface]
data/actions/scripts/exp_potion.lua:onUse
Description:
data/lib/exp_potion.lua:29: attempt to index field '?' (a nil value)
stack traceback:
        data/lib/exp_potion.lua:29: in function <data/lib/exp_potion.lua:16>
        (tail call): ?''

 

o lua da pagina data/lib/exp_potion vai estar logo a baixo

 

Spoiler

local potions = {
    [6542] = {needLevel = 2000, rate = 2.0, duration = 1800},
    [6543] = {needLevel = 3000, rate = 3.0, duration = 1800},
    [6544] = {needLevel = 4000, rate = 4.0, duration = 1800},
    [6545] = {needLevel = 5000, rate = 5.0, duration = 1800},
    [2328] = {needLevel = 6000, rate = 6.0, duration = 1800},
    [6541] = {needLevel = 7000, rate = 7.0, duration = 1800},
    [12599] = {needLevel = 8000, rate = 8.0, duration = 1800},
    [8300] = {needLevel = 10000, rate = 10.0, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar esta potion.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    local expData = self.playerData[guid][itemId]
    if not expData then
        -- caso alguma nova exp potion seja adicionada às configurações em tempo real
        -- alguns jogadores online que tentarem usar, precisarão relogar.
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'É necessário relogar para atualizar.')
        return true
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, string.diff(potion.duration, true)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Potion Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end
 

 

 

Desde já agradeço vossa colaboração e ajuda, sou novato na área 

 

Editado por Zedgast (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...
local potions = {
    [6542] = {needLevel = 2000, rate = 2.0, duration = 1800},
    [6543] = {needLevel = 3000, rate = 3.0, duration = 1800},
    [6544] = {needLevel = 4000, rate = 4.0, duration = 1800},
    [6545] = {needLevel = 5000, rate = 5.0, duration = 1800},
    [2328] = {needLevel = 6000, rate = 6.0, duration = 1800},
    [6541] = {needLevel = 7000, rate = 7.0, duration = 1800},
    [12599] = {needLevel = 8000, rate = 8.0, duration = 1800},
    [8300] = {needLevel = 10000, rate = 10.0, duration = 1800},
}

if not expPotions then
    expPotions = {playerData = {}}
end

function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition)
    local itemId = item.itemid
    local potion = potions[itemId]
    if not potion then
        return false
    end

    if getPlayerLevel(cid) < potion.needLevel then
        doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar esta potion.'):format(potion.needLevel))
        return true
    end
    
    local guid = getPlayerGUID(cid)
    
   
    if not self.playerData then
        self.playerData = {}
    end
    
    local expData = self.playerData[guid][itemId]
    if not expData then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'É necessário relogar para atualizar.')
        return true
    end

    local now = os.time()
    if expData.duration > now then
        doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid)
        return true
    end

    expData.rate = expData.rate + potion.rate
    expData.duration = potion.duration + now

    doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format(
        potion.rate * 100, string.diff(potion.duration, true)
    ))

    doRemoveItem(item.uid, 1)
    return true
end

function expPotions:onLogin(cid)
    local guid = getPlayerGUID(cid)

    self.playerData[guid] = {}
    for itemId in pairs(potions) do
        self.playerData[guid][itemId] = {rate = 0, duration = 0}
    end
    return true
end

function expPotions:getCombo(cid)
    local playerData = self.playerData[getPlayerGUID(cid)]
    local potionsCombo = 1

    if playerData then
        for itemId, expData in pairs(playerData) do
            potionsCombo = potionsCombo + expData.rate
        end
    end
    return potionsCombo
end

function expPotions:onSay(cid, words, param)
    local str = 'Experience Potion Combos:\n'

    local playerData = self.playerData[getPlayerGUID(cid)]
    if playerData then
        for itemId, expData in pairs(playerData) do
            str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
    return true
end

Amigo, na próxima vez que for postar um script com erro ou qualquer outra coisa, é importante informar a versão da TFS para que possamos entender e ajudar mais rapidamente.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por caionak
      Sabe aquele "error syntax" que pede o client.xml?
               É esse error que ensinarei a resolver blz?!
       
                                  Vamos Ao Tutorial
       
      1- Você precisa ter o RME (Remere's Map Editor) Extended.
       
      2- Agora abra a pasta "Remere's Map Editor" localizada no:
          [ Disco Local -> Program Files -> Remere's Map Editor ]
       
      3- Procure por "Client" dentro da Pasta.
       
      4- Mude o nome do "Client" para "Client.xml".
       
      5- Salve e feche a pasta.
       
      6- Agora você poderá abrir o RME Normalmente !
       
       
      Link do download e tutorial do RME Extended do Vudi:
       
        [ AJUDEI ? REP+ ]
       
       
       
       
    • Por themapa
      QUANDO USO "!jutsu" em qualquer personagem, até mesmo nos PLAYERS, da dbug no cliente.
      Alguém poderia ajudar.
       

    • Por Boush
      Olá eu gostaria de saber se é possível criar um báu de quest que ele pode ser aberto a cada 24 horas
    • Por felippepsa
      Eae galera do tk o problema e o seguinte: Fui abrir meu server para alpha fui mudar a imagem do client, Editei a imagem e coloquei em images com o nome background,Mas quando abro o OTC, continua com a imagem antiga, A imagem do client antiga e animada porem não é do jeito que o Avuenja achou na internet.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo