Here is my LOCAL script:
local Players = game:GetService("Players")
local Camera = workspace.CurrentCamera
local UIS = game:GetService("UserInputService")
local rs = game:GetService("RunService").RenderStepped
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Ghost = ReplicatedStorage.ItemIndicator
local buildmode = true
local Item = "Plastic Test Brick"
Ghost.Parent = workspace
local mousePos
local mouseTarget
local gridPos
local canPlace
function GetMousePoint(X, Y)
print("a")
local RayMag1 = Camera:ScreenPointToRay(X, Y) --Hence the var name, the magnitude of this is 1.
local NewRay = Ray.new(RayMag1.Origin, RayMag1.Direction * 1000)
local Target, Position = workspace:FindPartOnRayWithWhitelist(NewRay, workspace.Parts:GetChildren())
return Position
end
function snap(num) return math.floor(num/4+0.5)*4 end
rs:Connect(function()
print("b")
if buildmode then
print("c")
Ghost.Parent = workspace
mousePos = GetMousePoint(UIS:GetMouseLocation().X, UIS:GetMouseLocation().Y)
gridPos = Vector3.new(snap(mousePos.X), snap(mousePos.Y), snap(mousePos.Z))
Ghost.CFrame = CFrame.new(gridPos)
print("d")
local region = Region3.new(Ghost.Position+Ghost.Size/2.1, Ghost.Position-Ghost.Size/2.1)
print("l")
local parts = workspace:FindPartsInRegion3(region, Ghost)
if #parts > 0 then
print("e")
Ghost.Color = Color3.fromRGB(255, 89, 89)
canPlace = false
else
print("f")
Ghost.Color = Color3.fromRGB(123, 255, 93)
canPlace = true
end
else
print("g")
Ghost.Parent = nil
end
end)
UIS.InputBegan:Connect(function(input)
print("h")
if input.UserInputType == Enum.InputType.MouseButton1 then
if canPlace then
buildmode = false
ReplicatedStorage.PlacePart:FireServer(Ghost.Position, Item)
buildmode = true
print("i")
end
print("j")
end
print("k")
end)
Here is my SERVER script, but I don't think the problem is it:
local rs = game:GetService("ReplicatedStorage")
local ss = game:GetService("ServerStorage")
rs.PlacePart.OnServerEvent:Connect(function(player, position, partType)
local part = ss:WaitForChild(partType, 5):Clone()
if part then
part.Position = position
part.Parent = workspace
else
error("Part Failed to Load")
end
end)
P.S. There are no errors in the output.
The problem I have is that when using the grid movement, these three things happen:
- Parts fail to go to the right area
- Ghost part fails to turn red when region3 detects a problem
- Bricks do not get placed
Here's a gif if it makes it easier: https://gyazo.com/cdb07c9616926c4bdd99ce4a5eca1d51
I've tried countless times to make this work, but I can't seem to get it right, thank you if you can solve it!
