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

Why doesnt the Billboardgui show up?

Asked by 5 years ago

Hi, im trying to make a script that lets ppl place a model and after placing when you hover over the model a billboardgui should pop up. The model placing works but the gui doesnt show up. The script is in a local script in startergui

local ui = game:GetService("UserInputService")
local rs = game:GetService("ReplicatedStorage")

local plr = game.Players.LocalPlayer
local mouse = plr:GetMouse()
local m
local increment = 1
local d = false
local c = false
local mt

local function getCenter(model)
    local p = Vector3.new()
    local av = 0
    for i, v in pairs(model:GetChildren()) do
        if v:IsA('BasePart') then
            av = av + 1
            p = p + v.Position
        end
    end
    return p / av
end

local function ray(pos, object)
    local r = Ray.new(pos + Vector3.new(0, .1, 0), Vector3.new(0, -10, 0))
    local hit, pos = workspace:FindPartOnRay(r, object)
    return hit
end

local function checkDirections(center, size, object)
    local left, right = center - Vector3.new(size.X) / 2, center + Vector3.new(size.X) / 2
    local down = center - Vector3.new(0, size.Y) / 2
    local back, front = center - Vector3.new(0, 0, size.Z) / 2, center + Vector3.new(0, 0, size.Z) / 2
    if not ray(left, object) then return end
    if not ray(right, object) then return end
    if not ray(down, object) then return end
    if not ray(back, object) then return end
    if not ray(front, object) then return end
    return true
end

local function round(v3)
    local x = v3.X - (v3.X % increment)
    local y = v3.Y - (v3.Y % increment)
    local z = v3.Z - (v3.Z % increment)
    return Vector3.new(x, y, z)
end

local center
wait(0.2)

local bgui
mouse.Move:Connect(function()
    mt = mouse.Target
    if mt ~= nil then
        if mt.Parent.Name == "Box" then
            if mt.Parent.Active.Value == true then
                mt.Parent.BillboardGui.Enabled = true
                bgui = mt.Parent
            end
        else
            if bgui ~= nil then
                bgui.BillboardGui.Enabled = false
            end
        end
    end
end)

script.Parent.Shop.Frame.TextButton.MouseButton1Click:Connect(function()
    c = false
    m = rs.Stuff.Box:Clone()
    m.Parent = workspace
    m.Part.CanCollide = false
    mouse.TargetFilter = m
    m.Part.Anchored = true
    center = getCenter(m)
    mouse.Move:Connect(function()
        if c == false then
        if mouse.Target then
        if mouse.Target.Name == "UserBase" then
        local oldPosition = round(center)
        local newPos = round(mouse.Hit.p)
        m:MoveTo(newPos)
        if not checkDirections(getCenter(m), m:GetExtentsSize(), m) then
            --warn('Moving back')
            m:MoveTo(oldPosition)
        else
            --print('Moving forward')
            m:MoveTo(newPos)
            center = getCenter(m)
        end
        wait()
        mouse.Button1Down:Connect(function()
            if mouse.Target.Name == "UserBase" and d == false then
                d = true
                m.Active.Value = true
                m.Parent = workspace.Base
                c = true
                d = false
            end
        end)
        end
        end
        end
    end)
end)

Answer this question