Guest User

Untitled

a guest
Dec 19th, 2019
4,196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.87 KB | None | 0 0
  1. --Game link: https://www.roblox.com/games/4109933355/alpha-House-Tycoon
  2.  
  3. --Here's the script I made for the automatic door opening and closing.
  4.  
  5. local player = game.Players.LocalPlayer
  6. function manageDoor(v,tycoon)
  7.     door = v.door
  8.     door.PrimaryPart = door.door
  9.     v:WaitForChild('padFront').touched:Connect(function(hit)
  10.         if hit.Parent:FindFirstChild("Humanoid") then
  11.             if tycoon and tycoon.isLocked.Value == false or tycoon and game.Players[hit.Parent.Name] == tycoon.Owner.Value then
  12.                 local doorOpenedPosition = v.doorOpenedFront.Position
  13.                 local doorOpenedCFrame = v.doorOpenedFront.CFrame
  14.                 openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padFront)
  15.             elseif not tycoon then
  16.                 local doorOpenedPosition = v.doorOpenedFront.Position
  17.                 local doorOpenedCFrame = v.doorOpenedFront.CFrame
  18.                 openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padFront)
  19.             end
  20.         end
  21.     end)
  22.     v:WaitForChild('padBack').touched:Connect(function(hit)
  23.         if hit.Parent:FindFirstChild("Humanoid") then
  24.             if tycoon and tycoon.isLocked.Value == false or tycoon and game.Players[hit.Parent.Name] == tycoon.Owner.Value then
  25.                 local doorOpenedPosition = v.doorOpenedBack.Position
  26.                 local doorOpenedCFrame = v.doorOpenedBack.CFrame
  27.                 openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padBack)
  28.             elseif not tycoon then
  29.                 local doorOpenedPosition = v.doorOpenedBack.Position
  30.                 local doorOpenedCFrame = v.doorOpenedBack.CFrame
  31.                 openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,v.padBack)
  32.             end
  33.         end
  34.     end)
  35.     spawn(function()
  36.         local door = v.door
  37.         local function swingDoor()
  38.             if playerNearDoor == true then
  39.                 local goalCFrame = door.Parent.goalCFrame.Value
  40.                 if door ~= nil and goalCFrame ~= CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1) then
  41.                     door:SetPrimaryPartCFrame(door:GetPrimaryPartCFrame():lerp(goalCFrame,.15))
  42.                     wait()
  43.                 end
  44.             end
  45.         end
  46.         game:GetService("RunService").RenderStepped:Connect(swingDoor)
  47.     end)
  48. end
  49. function openCloseDoor(hit,v,doorOpenedPosition,doorOpenedCFrame,Pad)
  50.     if hit.Parent:FindFirstChild("Humanoid") then
  51.         if hit.Parent.Humanoid.Health > 0 then
  52.             playerNearDoor = true
  53.             if v.isOpen.Value == false then
  54.                 v.isOpen.Value = true
  55.                 door.PrimaryPart.CanCollide = false
  56.                 local player = game.Players:GetPlayerFromCharacter(hit.Parent)
  57.                 local char = hit
  58.                 local door = v.door
  59.                 local doorClosedCFrame = v.doorClosed.CFrame
  60.                 local doorClosedPosition = v.doorClosed.Position
  61.                 local goalCFrame = v.goalCFrame
  62.                 goalCFrame.Value = doorOpenedCFrame
  63.                 local waitingTime = 0
  64.                 repeat waitingTime = waitingTime + wait() until player:DistanceFromCharacter(Pad.Position) > 9 or waitingTime > 3 and player:DistanceFromCharacter(Pad.Position) > 4
  65.                 goalCFrame.Value = doorClosedCFrame
  66.                 v.isOpen.Value = false
  67.                 spawn(function()
  68.                     repeat wait() until (door.PrimaryPart.Position - v.doorClosed.Position).Magnitude < .1
  69.                     door.PrimaryPart.CanCollide = true
  70.                 end)
  71.             end
  72.             else playerNearDoor = false
  73.         end
  74.     end
  75. end
  76. for q,c in pairs(workspace["Humza's Tycoon Kit"].Tycoons:GetChildren()) do
  77.     for i,v in pairs(c.PurchasedObjects:GetChildren()) do
  78.         if v:FindFirstChild('doorsingle') then
  79.             manageDoor(v,c)
  80.         elseif v:FindFirstChild('doorpackage') then
  81.             for a,b in pairs(v:GetChildren()) do
  82.                 if b:FindFirstChild("door") then
  83.                     manageDoor(b,c)
  84.                 end
  85.             end
  86.         end
  87.     end
  88.     c.PurchasedObjects.ChildAdded:Connect(function(r)
  89.         r.ChildAdded:Connect(function(p)
  90.             if p.Name == 'doorsingle' then
  91.                 repeat wait() until r:WaitForChild('totalParts').Value <= #r:GetDescendants()
  92.                 manageDoor(r,c)
  93.             elseif p.Name == 'doorpackage' then
  94.                 repeat wait() until r:WaitForChild('totalParts').Value <= #r:GetDescendants()
  95.                 for i,v in pairs(r:GetChildren()) do
  96.                     if v:FindFirstChild("door") then
  97.                         manageDoor(v,c)
  98.                     end
  99.                 end
  100.             end
  101.         end)
  102.     end)
  103. end
Advertisement
Add Comment
Please, Sign In to add comment