Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Game link: https://www.roblox.com/games/4109933355/alpha-House-Tycoon
- --Here's the script I made for the automatic door opening and closing.
- local player = game.Players.LocalPlayer
- function manageDoor(v,tycoon)
- door = v.door
- door.PrimaryPart = door.door
- v:WaitForChild('padFront').touched:Connect(function(hit)
- if hit.Parent:FindFirstChild("Humanoid") then
- if tycoon and tycoon.isLocked.Value == false or tycoon and game.Players[hit.Parent.Name] == tycoon.Owner.Value then
- local doorOpenedPosition = v.doorOpenedFront.Position
- local doorOpenedCFrame = v.doorOpenedFront.CFrame
- openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padFront)
- elseif not tycoon then
- local doorOpenedPosition = v.doorOpenedFront.Position
- local doorOpenedCFrame = v.doorOpenedFront.CFrame
- openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padFront)
- end
- end
- end)
- v:WaitForChild('padBack').touched:Connect(function(hit)
- if hit.Parent:FindFirstChild("Humanoid") then
- if tycoon and tycoon.isLocked.Value == false or tycoon and game.Players[hit.Parent.Name] == tycoon.Owner.Value then
- local doorOpenedPosition = v.doorOpenedBack.Position
- local doorOpenedCFrame = v.doorOpenedBack.CFrame
- openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padBack)
- elseif not tycoon then
- local doorOpenedPosition = v.doorOpenedBack.Position
- local doorOpenedCFrame = v.doorOpenedBack.CFrame
- openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padBack)
- end
- end
- end)
- spawn(function()
- local door = v.door
- local function swingDoor()
- if playerNearDoor == true then
- local goalCFrame = door.Parent.goalCFrame.Value
- if door ~= nil and goalCFrame ~= CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1) then
- door:SetPrimaryPartCFrame(door:GetPrimaryPartCFrame():lerp(goalCFrame,.15))
- wait()
- end
- end
- end
- game:GetService("RunService").RenderStepped:Connect(swingDoor)
- end)
- end
- function openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,Pad)
- if hit.Parent:FindFirstChild("Humanoid") then
- if hit.Parent.Humanoid.Health > 0 then
- playerNearDoor = true
- if v.isOpen.Value == false then
- v.isOpen.Value = true
- door.PrimaryPart.CanCollide = false
- local player = game.Players:GetPlayerFromCharacter(hit.Parent)
- local char = hit
- local door = v.door
- local doorClosedCFrame = v.doorClosed.CFrame
- local doorClosedPosition = v.doorClosed.Position
- local goalCFrame = v.goalCFrame
- goalCFrame.Value = doorOpenedCFrame
- local waitingTime = 0
- repeat waitingTime = waitingTime + wait() until player:DistanceFromCharacter(Pad.Position) > 9 or waitingTime > 3 and player:DistanceFromCharacter(Pad.Position) > 4
- goalCFrame.Value = doorClosedCFrame
- v.isOpen.Value = false
- spawn(function()
- repeat wait() until (door.PrimaryPart.Position - v.doorClosed.Position).Magnitude < .1
- door.PrimaryPart.CanCollide = true
- end)
- end
- else playerNearDoor = false
- end
- end
- end
- for q,c in pairs(workspace["Humza's Tycoon Kit"].Tycoons:GetChildren()) do
- for i,v in pairs(c.PurchasedObjects:GetChildren()) do
- if v:FindFirstChild('doorsingle') then
- manageDoor(v,c)
- elseif v:FindFirstChild('doorpackage') then
- for a,b in pairs(v:GetChildren()) do
- if b:FindFirstChild("door") then
- manageDoor(b,c)
- end
- end
- end
- end
- c.PurchasedObjects.ChildAdded:Connect(function(r)
- r.ChildAdded:Connect(function(p)
- if p.Name == 'doorsingle' then
- repeat wait() until r:WaitForChild('totalParts').Value <= #r:GetDescendants()
- manageDoor(r,c)
- elseif p.Name == 'doorpackage' then
- repeat wait() until r:WaitForChild('totalParts').Value <= #r:GetDescendants()
- for i,v in pairs(r:GetChildren()) do
- if v:FindFirstChild("door") then
- manageDoor(v,c)
- end
- end
- end
- end)
- end)
- end
Advertisement
Add Comment
Please, Sign In to add comment