local Blocks = {}
local Folder
local FolderPlace
local Storage = script.Parent.Storage
local Block = Storage.ServerData.Blocks.PrototypeWool
local BlockProperties = Storage.ServerData.BlockProperties
local Prediction = Storage.ServerData.Blocks.BlockPrediction
local Outline = Storage.ServerData.Selection.BlockPlacement
local RandomName = math.random(1,5000)
local NewSelection = Outline:Clone()
NewSelection.Parent = workspace
NewSelection.Name = "Outline_"..RandomName.."_"
function Blocks:HoverBlocks(fold)
Folder = fold
for i, v in pairs(Folder:GetDescendants()) do
-- while true do
if v:IsA("Part") and v.Name == "Prediction2" then
local RBXEvent = v:FindFirstChild("RBXHover")
RBXEvent.MouseHoverEnter:Connect(function()
NewSelection.Adornee = v.Parent.BlockPlacement
end)
RBXEvent.MouseHoverLeave:Connect(function()
NewSelection.Adornee = nil
end)
--[@ELSEIF, For the top and bottom part]
elseif v:IsA("Part") and v.Name == "Prediction" then
local RBXEvent2 = v:FindFirstChild("RBXHover")
local PartToShow = v.Parent.Core
RBXEvent2.MouseHoverEnter:Connect(function()
NewSelection.Adornee = PartToShow
end)
RBXEvent2.MouseHoverLeave:Connect(function()
NewSelection.Adornee = nil
end)
--[@ELSEIF, For the top and bottom part]
elseif v:IsA("UnionOperation") and v.Name == "PredictionSide" then
local RBXEvent3 = v:FindFirstChild("RBXHover")
RBXEvent3.MouseHoverEnter:Connect(function()
NewSelection.Adornee = v
end)
RBXEvent3.MouseHoverLeave:Connect(function()
NewSelection.Adornee = nil
end)
end
-- wait(1)
-- end
end
end
function Blocks:Place(Fold)
FolderPlace = Fold
for i, v in pairs(FolderPlace:GetDescendants()) do
--while true do
if v:IsA("Part") and v.Name == "Prediction2" then
local NewBlock = Block:Clone()
local NewProperties = BlockProperties:Clone()
local NewBlockPrediction = Prediction:Clone()
local RBXEvent = v:FindFirstChild("RBXHover")
RBXEvent.MouseClick:Connect(function()
NewBlock.Parent = FolderPlace
NewBlock.CFrame = v.Parent.BlockPlacement.CFrame
NewProperties.Parent = NewBlock
NewBlockPrediction.Parent = NewBlock
NewBlock.Orientation = Vector3.new(0,0,0)
NewBlockPrediction.Core.Orientation = NewBlock.Orientation
NewBlockPrediction:SetPrimaryPartCFrame(NewBlock.CFrame)
v:Destroy()
end)
--[@ELSEIF, For the top and bottom part]
elseif v:IsA("Part") and v.Name == "Prediction" then
local NewBlock = Block:Clone()
local NewProperties = BlockProperties:Clone()
local NewBlockPrediction = Prediction:Clone()
local RBXEvent = v:FindFirstChild("RBXHover")
RBXEvent.MouseClick:Connect(function()
NewBlock.Parent = FolderPlace
NewBlock.CFrame = v.BlockPlacement.CFrame
NewProperties.Parent = NewBlock
NewBlockPrediction.Parent = NewBlock
NewBlock.Orientation = Vector3.new(0,0,0)
NewBlockPrediction.Core.Orientation = NewBlock.Orientation
NewBlockPrediction:SetPrimaryPartCFrame(NewBlock.CFrame)
v:Destroy()
end)
elseif v:IsA("UnionOperation") and v.Name == "PredictionSide" then
local NewBlock = Block:Clone()
local NewProperties = BlockProperties:Clone()
local NewBlockPrediction = Prediction:Clone()
local RBXEvent = v:FindFirstChild("RBXHover")
RBXEvent.MouseClick:Connect(function()
NewBlock.Parent = FolderPlace
NewBlock.CFrame = v.CFrame
NewProperties.Parent = NewBlock
NewBlockPrediction.Parent = NewBlock
NewBlock.Orientation = Vector3.new(0,0,0)
NewBlockPrediction.Core.Orientation = NewBlock.Orientation
NewBlockPrediction:SetPrimaryPartCFrame(NewBlock.CFrame)
v:Destroy()
end)
end
-- wait(1)
-- end
end
end
return Blocks
SERVER SCRIPT
local rs = game:GetService("ReplicatedStorage")
local block = require(rs.SkywarsX.BlockHitboxPrediction)
while true do
wait(0.03)
block:Place(workspace.ServerBlockStorage)
end
LOCAL SCRIPT
local rs = game:GetService("ReplicatedStorage")
local block = require(rs.SkywarsX.BlockHitboxPrediction)
while true do
wait(0.03)
block:HoverBlocks(workspace.ServerBlockStorage)
end