Ir para conteúdo
  • Cadastre-se

Erro ao Usar um Pokemon atraves da Pokebar


Ir para solução Resolvido por Aksz,

Posts Recomendados

Qual o motivo deste tópico? 

Estou tendo esse erro ao utilizar a Pokebar: Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/usesummon.lua:onSay
data/talkactions/scripts/usesummon.lua:4: attempt to index global 'ball' (a nil value)
stack traceback:
        [C]: in function '__index'
        data/talkactions/scripts/usesummon.lua:4: in function <data/talkactions/scripts/usesummon.lua:3>

 

Você tem o código disponível? Se tiver publique o aqui: Usesummons.lua:

function onSay(player, words, param)
    print("Tentando invocar Pokémon com a ball ID: " .. ball:getId())
    if player:isSummonBlocked() then return false end
    
    if doReleaseSummon(player:getId(), player:getPosition(), balls[ballKey].effectRelease, true, balls[ballKey].missile) then
        ball:transform(balls[ballKey].usedOff)
        ball:setSpecialAttribute("isBeingUsed", 1)
    else
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "Não foi possível usar este Pokémon.")
        ball:setSpecialAttribute("isBeingUsed", 0) -- Reseta o status da ball para garantir que possa ser usada novamente
    end


    local index = tonumber(param)
    if not index then return false end
    local exhaust = Condition(CONDITION_EXHAUST_WEAPON)
    if player:isDuelingWithNpc() then
        exhaust:setParameter(CONDITION_PARAM_TICKS, 10000)
    else
        exhaust:setParameter(CONDITION_PARAM_TICKS, 1000)
    end
    if player:getCondition(CONDITION_EXHAUST_WEAPON) then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_YOUAREEXHAUSTED))
        return false
    end
    
    local pokeballs = player:getPokeballs()
    local ball = pokeballs[index]
--    local ball = player:getSpecialStorage("pokes")[index]

    if not ball then
        print("WARNING! Player " .. player:getName() .. " had problems trying to use pokebar: selected ball not found.")
        player:refreshPokemonBar({}, {})
        return false
    end

    if player:canReleaseSummon(ball:getSummonLevel(), ball:getSummonBoost(), ball:getSummonOwner()) then
        if hasSummons(player) then
            local usingBall = player:getUsingBall()
            if not usingBall then
                print("WARNING! Player " .. player:getName() .. " had problems trying to use pokebar: doRemoveSummon.")
                player:refreshPokemonBar({}, {})
                return false
            end
            if usingBall:getId() == ball:getId() then
                local usingBallKey = getBallKey(usingBall:getId())
                doRemoveSummon(player:getId(), balls[usingBallKey].effectRelease, false, true, balls[usingBallKey].missile)
                usingBall:transform(balls[usingBallKey].usedOn)
                player:addCondition(exhaust)
                return false
            end
            local usingBallKey = getBallKey(usingBall:getId())
            doRemoveSummon(player:getId(), balls[usingBallKey].effectRelease, false, true, balls[usingBallKey].missile)
            usingBall:transform(balls[usingBallKey].usedOn)
            player:addCondition(exhaust)
        end

        local ballKey = getBallKey(ball:getId())
        ball:transform(balls[ballKey].usedOff)
        ball:setSpecialAttribute("isBeingUsed", 1)
        doReleaseSummon(player:getId(), player:getPosition(), balls[ballKey].effectRelease, true, balls[ballKey].missile)
        player:addCondition(exhaust)
    end

    return false
end
 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Link para o post
Compartilhar em outros sites
  • Moderador
  • Solução

Pelo que vi no script voce deu um print na função ball sem antes definir ela.

print("Tentando invocar Pokémon com a ball ID: " .. ball:getId())

Está bem no começo, e não tem nenhuma definição ali de ball, por isso o erro que está recebendo valor nulo

Link para o post
Compartilhar em outros sites
  Em 30/03/2025 em 12:38, Aksz disse:

Pelo que vi no script voce deu um print na função ball sem antes definir ela.

print("Tentando invocar Pokémon com a ball ID: " .. ball:getId())

Está bem no começo, e não tem nenhuma definição ali de ball, por isso o erro que está recebendo valor nulo

Expand   Mostrar mais  

Mt obg, retirei o print e o erro foi corrigido!

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.

  • Estatísticas dos Fóruns

    96842
    Tópicos
    519602
    Posts
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo