es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intento de indexar nil con ‘leaderstats’

Básicamente, quería hacer un juego de defensa de torres. Agregué un botón que, al hacer clic, genera torres / robots con inteligencia artificial (el script es local). Siempre me da un error que dice Intento de indexar nil con ‘leaderstats’. (Sé que esto significa que el juego no sabe qué es leaderstats). Hice un script que crea la carpeta llamada leaderstats dentro del jugador con las monedas y demás dentro, pero aun así no sabe que hay una carpeta leaderstats. También intenté con FindFirstChild(), pero solo dijo Intento de indexar nil con ‘FindFirstChild’. ¿Alguien puede ayudarme?

“`
local button = script.Parent

button.MouseButton1Click:Connect(function(player)
local spawner = game.Workspace.ts1
local money = player.leaderstats.Cash.Value
if money >= 250 then
money = money – 250
local clone = game.ReplicatedStorage.Allies.Guard:Clone()
clone.Parent = workspace
clone.HumanoidRootPart.CFrame = spawner.HumanoidRootPart.CFrame
else
if money <= 250 then
button.BackgroundColor3 = Color3.new(1, 0, 0)
button.Text = “Muy caro”
wait(0.5)
button.Text = “Guardia [250$]”
button.BackgroundColor3 = Color3.new(0.603922, 0.603922, 0.603922)

    end
end

end)

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el script está intentando acceder a la propiedad “leaderstats” del objeto “player”, pero aparece como nulo. Esto podría ser porque el objeto “player” no tiene una carpeta “leaderstats” o porque el script se está ejecutando antes de que se cree la carpeta.

    Para solucionar este problema, puede intentar mover el script que crea la carpeta “leaderstats” a otra parte de su código, tal vez en un script separado que se ejecuta cuando el jugador se une al juego. De esta manera, la carpeta existirá antes de que se ejecute el script del botón.

    Alternativamente, puede usar el método “FindFirstChild” para verificar si la carpeta “leaderstats” existe antes de intentar acceder a sus propiedades. Aquí hay un ejemplo:

    local button = script.Parent
    
    button.MouseButton1Click:Connect(function(player)
        local spawner = game.Workspace.ts1
        local leaderstats = player:FindFirstChild("leaderstats")
        if leaderstats then
            local money = leaderstats.Cash.Value
            if money >= 250 then
                money = money - 250
                local clone = game.ReplicatedStorage.Allies.Guard:Clone()
                clone.Parent = workspace
                clone.HumanoidRootPart.CFrame = spawner.HumanoidRootPart.CFrame
            else
                button.BackgroundColor3 = Color3.new(1, 0, 0)
                button.Text = "Muy caro"
                wait(0.5)
                button.Text = "Guardia [250$]"
                button.BackgroundColor3 = Color3.new(0.603922, 0.603922, 0.603922)
            end
        end
    end)
    

    Este código verifica si la carpeta “leaderstats” existe usando el método “FindFirstChild” antes de acceder al valor “Cash”. Si la carpeta no se encuentra, el script omitirá el código de colocación de la torre.

Comments are closed.