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

How should I fix this code to work in playmode local head = char.Head "Minimap"?

Asked by 7 years ago

Hi I am making a game which needs a minimap. But it is not working because roblox developers console is saying Head is not a valid member of model. The script for the minimap works fine in Roblox Studio but it doesn't work in playmode. The error is in line 7.

local maptransparency = .1   -- set to a number between 1 and 0     Controls how transparent the map looks
local mapsize = 200 -- the size in pixels of your minimap 
local lagfactor = 10  -- I recommend 4   --- set this from 1-10, with 1 being the most detailed and the most laggy, and ten being the worst detail but least laggy (it can be set to more than ten, but I don't advise it)

local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local head = char.Head
local todestroy = {}


script.Parent.speck.Size = UDim2.new(0,lagfactor,0,lagfactor)
script.Parent.Size = UDim2.new(0,mapsize,0,mapsize)
script.Parent.you.Position = UDim2.new(0, (mapsize/2 - 5), 0, (mapsize/2 -5))

function Color(p)
    return Color3.new( (p.BrickColor.r),(p.BrickColor.g),(p.BrickColor.b))
end

function visible()

    for _, thing in pairs (script.Parent:GetChildren()) do
        if thing.ClassName ~= "LocalScript" then
            thing.Visible = true
        end
    end
    script.Parent.speck.Visible = false

end

function go()
    todestroy = {}
    local pos = head.Position + Vector3.new(0,1000,0)
    local a
    if lagfactor <= 2 then
        a = false
    end
    local x = (-.5 * mapsize)
    local z = (-.5 * mapsize)
    repeat 
        x = (-.5 * mapsize) 
        if a ~= nil then
            a = not a
            if a == false then
                wait()
            end
        else
            wait()
        end
        repeat 
            local newpos = pos + Vector3.new(x,0,z)
            local ray = Ray.new(newpos, ( (newpos - Vector3.new(0,1000,0) ) - newpos).unit * 3000)
            local part,p = workspace:FindPartOnRay(ray)
            local oldspeck = script.Parent:FindFirstChild(x .. z)
            if oldspeck ~= nil then 
                todestroy[#todestroy+1] = oldspeck
            end
            if part ~= nil then
                if part:IsA("BasePart") then
                    local speck = script.Parent.speck:Clone()
                    speck.BackgroundColor3 = Color(part)
                    speck.Position = UDim2.new(0,x + ((.5 * mapsize)),0,z + ((.5 * mapsize)))
                    speck.Name = x .. z
                    speck.Parent = script.Parent


                end
            end
            x = x + lagfactor

        until x >= (.5 * mapsize)
        z = z + lagfactor

    until z >= (.5 * mapsize)
end

function deleteold()

    for i = 1, # todestroy do
        todestroy[i]:Destroy()
    end

end

while true do
    go()
    --
    visible()
    --
    deleteold()
end
0
What line does the output say the script is stopping? The output normally tells what line the script stopped after the error message. Troidit 253 — 7y

Answer this question