Skip to content

Instantly share code, notes, and snippets.

@MajorTal
Created June 1, 2025 18:31
Show Gist options
  • Save MajorTal/37e2c59a7a3cf9a4a04968050b577c7d to your computer and use it in GitHub Desktop.
Save MajorTal/37e2c59a7a3cf9a4a04968050b577c7d to your computer and use it in GitHub Desktop.
local function loadPoles(player)
local previousDataSuccess, polesData = pcall(function()
return poleDataStore:GetAsync(player.UserId)
end)
if not previousDataSuccess or not polesData then
warn("No previous poles data found for player:", player.Name)
return
end
local newRoomName = player:GetAttribute("Room")
local newRoom = workspace.PlayerRooms:FindFirstChild(newRoomName)
if not newRoom then
warn("No new room found for player:", player.Name)
return
end
-- Compute previous room center
local prevRoomCenter = polesData.roomCenter
if not prevRoomCenter then
warn("Previous room center data missing. Cannot reposition poles.")
return
end
-- Current room center
local newRoomCenter = newRoom.Position
-- Clear any existing poles in the new room
for _, child in ipairs(newRoom:GetChildren()) do
if child:IsA("BasePart") then
child:Destroy()
end
end
-- Calculate offset between previous and new rooms
local offset = newRoomCenter - Vector3.new(prevRoomCenter.x, prevRoomCenter.y, prevRoomCenter.z)
-- Recreate poles at their new positions
for _, poleInfo in ipairs(polesData.poles) do
local poleTemplate = game.ServerStorage.Pole.Handle:Clone()
poleTemplate.Anchored = true
poleTemplate.CanCollide = true
-- Reposition pole relative to the new room
local newPolePosition = Vector3.new(poleInfo.x, poleInfo.y, poleInfo.z) + offset
poleTemplate.CFrame = CFrame.new(newPolePosition)
* CFrame.Angles(0, 0, math.rad(90))
poleTemplate.Parent = newRoom
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment