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

Placement preview for my furniture placement system not working. How to fix?

Asked by
2ndwann 131
4 years ago
Edited 4 years ago

I am making a basic furniture placement system for my game, and I am having trouble with hiding the selection box (for previewing) after the player has placed the structure.

After the player has placed the structure, it still shows the SelectionBox, but I intended to make it disappear when the player places the structure.

I am having the particular trouble in Line #35 of the Script for the server.

Script for the server:

-- Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local MousePositionEvent = Instance.new("RemoteEvent")
MousePositionEvent.Name = "MousePositionEvent"
MousePositionEvent.Parent = ReplicatedStorage

local MouseClickEvent = Instance.new("RemoteEvent")
MouseClickEvent.Name = "MouseClickEvent"
MouseClickEvent.Parent = ReplicatedStorage


-- Preview the placement
local function PreviewPlace(Owner, PositionBase, StructureBase)
    StructureBase.UserOwner.Value = Owner.Name -- Assign Owner

    local Position = CFrame.new(PositionBase)
    StructureBase:SetPrimaryPartCFrame(Position) -- Move the structure

    -- Make it look like it's being previewed
    local Selection = StructureBase.SelectionBox
    Selection.Color3 = Color3.new(0, 255, 0)
    Selection.Transparency = 0
end
MousePositionEvent.OnServerEvent:Connect(PreviewPlace) -- Mouse position event listener


-- Place the structure when the user clicks
local function Place(Owner, PositionBase, StructureBase, DestinationFolder)
    local NewStructure = StructureBase:Clone()

    NewStructure.Parent = DestinationFolder
    NewStructure.UserOwner.Value = Owner.Name -- Assign Owner

    -- Hide the selection box after player has placed structure [I AM HAVING TROUBLE WITH THIS!]
    local Selection = StructureBase.SelectionBox
    Selection.Transparency = 1

    print(Owner.Name .. " has ended placing a " .. NewStructure.Name .. "!")
end

MouseClickEvent.OnServerEvent:Connect(Place)

Script for the client:

-- LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MousePositionEvent = ReplicatedStorage:WaitForChild("MousePositionEvent")
local MouseClickEvent = ReplicatedStorage:WaitForChild("MouseClickEvent")

local Players = game:GetService("Players")
local Player = Players.LocalPlayer

local Mouse = Player:GetMouse()
local MouseCFrame
local MousePosition

local SelectedStructure = game.Workspace.OakWoodBeam -- The selected Strukchur
local SelectedStructureAmount = 3
local DestDir = game.Workspace -- Destination Folder for placed structures

local Placing = true -- Placing Status

Mouse.Button1Down:Connect(function() 
    SelectedStructureAmount = SelectedStructureAmount - 1

    if (SelectedStructureAmount == 0) then
        Placing = false
    end

    MouseClickEvent:FireServer(MousePosition, SelectedStructure, DestDir) -- Trigger function place() in server

    print (Placing)
    print (SelectedStructureAmount)
end)   

-- Updates the mouse CFrame, and updates server about it
function UpdatePosition()
    MouseCFrame = Mouse.Hit
    MousePosition = MouseCFrame.p

    if (SelectedStructureAmount >= 1 and Placing == true) then -- If structure amount is not yet 0
        MousePositionEvent:FireServer(MousePosition, SelectedStructure)
        return true
    else 

    if (Placing == false) then -- Place the Structure when the user clicks
        return false
        end
    end
end

-- Game loop [CLIENT]
while true do
    UpdatePosition()

    --print (Placing)
    wait()
end

How would I fix it?

0
I am sorry, but if you are going to put alot of code like that then it would be good for you to put way more explaination then what are you trying to accomplish RBLXNogin 187 — 4y
0
When you clone "StructureBase" on line 30, the SelectionBox may have been cloned too. You'll have to delete or hide it in the cloned object. User#20279 0 — 4y

1 answer

Log in to vote
0
Answered by 4 years ago

The selection box should be handled locally, as it's something only the player that it's relevant to should see. This would also significantly make the code cleaner and easier to manage.

Ad

Answer this question