Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

attempt to index a field 'Character' (a nil value)?

Asked by 5 years ago

On youtube a video that is called Christmas Special! | How to make an snowman boss. at the script that he used in video i always get an error. Can somone fix the problem?

local Humanoid = script.Parent:WaitForChild("Humanoid")
local HumanoidRootPart = script.Parent:WaitForChild("HumanoidRootPart")

local WalkRange = 20
local AcidBallSpeed = 50

local Closest = nil

spawn(function()
    while true do
        wait()
        if Closest ~= nil then
            HumanoidRootPart.BodyGyro.CFrame = CFrame.new(HumanoidRootPart.Position,Vector3.new(Closest.Character.HumanoidRootPart.Position.X,HumanoidRootPart.Position.Y,Closest.Character.HumanoidRootPart.Position.Z))
        end
    end
end)

while true do
    wait(2)
    local RandomValue = math.random(0,10)
    local List = {}

    for i,v in pairs(game.Players:GetChildren()) do
        if v and v.Character then
            local Distance = (HumanoidRootPart.Position - v.Character.HumanoidRootPart.Position).Magnitude
            table.insert(List,{v,Distance})
        end
    end

    table.sort(List,function(A,B)
        return A[2] <= B[2]
    end)
    if #List >= 1 then
        Closest = List[1][1]
    if RandomValue > 0 and RandomValue < 6 then
        local RandomWalkPosition = Vector3.new(math.random(-WalkRange,WalkRange),0,math.random(-WalkRange,WalkRange))
        Humanoid:MoveTo(HumanoidRootPart.Position+RandomWalkPosition)
    else
        local AcidBall = Instance.new("Part")
        AcidBall.Anchored = false
        AcidBall.Shape = "Ball"
        AcidBall.Size = Vector3.new(4,4,4)
        AcidBall.TopSurface = Enum.SurfaceType.Smooth
        AcidBall.BottomSurface = Enum.SurfaceType.Smooth

        AcidBall.Material = Enum.Material.Neon
        AcidBall.BrickColor = BrickColor.new("Lime green")
        AcidBall.CFrame = HumanoidRootPart.CFrame*CFrame.new(0,0,-10)
        AcidBall.Parent = workspace
        AcidBall.CanCollide = false

        local BV = Instance.new("BodyVelocity")
        BV.MaxForce = Vector3.new(100000,100000,100000)

        local Origin = HumanoidRootPart.Position
        BV.Velocity = (List[1][1].Character.HumanoidRootPart.Position - Origin).unit * AcidBallSpeed
        BV.Parent = AcidBall
        spawn(function()
            wait(1)
            AcidBall.Touched:Connect(function(Hit)
                if Hit and Hit.Parent and Hit.Parent:FindFirstChild("Humanoid") then
                    Hit.Parent.Humanoid:TakeDamage(20)
                end
                AcidBall:Destroy()

            end)
        end)
        wait(2)
          end
    end
end
0
v.Character or v.CharacterAdded:Wait() DeceptiveCaster 3761 — 5y
0
what Princess_Fexi007 0 — 5y
0
What is the error exactly and at what line as I can't test rn? araltan2002 47 — 5y
0
v.Character or v.CharacterAdded:Wait() works like this: if the character already exists, the variable you assign the statement to is assigned to the character; however, if the character doesn't exist yet, it waits for CharacterAdded to fire, and then assigns the variable to the character argument that CharacterAdded passes DeceptiveCaster 3761 — 5y

Answer this question