Advertisement
Guest User

Untitled

a guest
May 27th, 2015
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. local LaserEnabled=true local LaserPart,sp=Workspace.Laser.SelectionPartLasso,Workspace.Laser.Torso
  2. local Remote_Events=script:WaitForChild("Events")
  3. local MapStorage=game:GetService("ReplicatedStorage"):WaitForChild("Maps")
  4. local CurrentMap=nil
  5. local function FireClient(client,data) Remote_Events:FireClient(client,data) end
  6.  
  7.  
  8. LoadInProgress=false
  9. function LoadMap(Player,MapName)
  10. if LoadInProgress==true then print("Already going") FireClient(Player,{Type="Hint",Text="Loading already in progress."}) return end if not MapStorage:FindFirstChild(MapName) then return end
  11. if LoadInProgress==false then
  12. LoadInProgress=true
  13. if CurrentMap~=nil then DestroyMap() end
  14. local MapClone=RipParts(MapStorage[MapName]:Clone())
  15. local TotalParts=#MapClone:GetChildren()
  16. local PartsLoaded=0
  17. local newModel=Instance.new("Model",game.Workspace) CurrentMap=newModel
  18. local StartTick=tick()
  19. local k = 0
  20. local MapParts=MapClone:GetChildren()
  21. table.sort(MapParts,function(a,b) return a.Position.Y<b.Position.Y end)
  22. for _,v in pairs(MapParts) do
  23. PartsLoaded=PartsLoaded+1 k = k+1
  24. v.Anchored=true
  25. v.Parent=newModel
  26. Laser(v,v.BrickColor)
  27. --Fade(v)
  28. if k >= 20 then UpdateMapUI(MapName,PartsLoaded,TotalParts,true) k = 0 end
  29. coroutine.yield()
  30. --game:GetService("RunService").Stepped:wait()
  31. end
  32. Laser(nil)
  33. print("Finish time:",tick()-StartTick)
  34. UpdateMapUI(MapName,PartsLoaded,TotalParts)
  35. LoadInProgress=false
  36. end
  37. end
  38.  
  39. function Fade(Part)
  40. coroutine.resume(coroutine.create(function()
  41. local base=Part.Transparency
  42. for i = 1,base,-.1 do
  43. Part.Transparency=i
  44. wait()
  45. end
  46. end))
  47. end
  48.  
  49. function DestroyMap()
  50. local go=0
  51. local m=CurrentMap:GetChildren()
  52. table.sort(m,function(a,b) return a.Position.Y>b.Position.Y end)
  53. for _,v in pairs(m) do
  54. go=go+1
  55. Laser(v,BrickColor.new("Really red"))
  56. v:Destroy()
  57. if go>=5 then coroutine.yield() go=0 end
  58. end
  59. CurrentMap:Destroy()
  60. CurrentMap=nil
  61. end
  62.  
  63. function Laser(Part,color)
  64. if not LaserEnabled or LaserPart==nil then return end
  65. LaserPart.Part=Part
  66. if color then LaserPart.Color=color end
  67. end
  68.  
  69. function RipParts(Model)
  70. local Parts={}
  71. local NewModel=Instance.new("Model")
  72. local function Rip(p)
  73. for _,v in pairs(p:GetChildren()) do
  74. if v:IsA("BasePart") then
  75. table.insert(Parts,v)
  76. end
  77. Rip(v)
  78. end
  79. end
  80. Rip(Model)
  81. for _,v in pairs(Parts) do
  82. v.Parent=NewModel
  83. end
  84. return NewModel
  85. end
  86.  
  87. function UpdateMapUI(MapName,Loaded,Count,Visible)
  88. coroutine.resume(coroutine.create(function()
  89. if Visible==false then Remote_Events:FireAllClients("HideMapUI") return end
  90. Remote_Events:FireAllClients({Type="MapProgress",Name=MapName,Loaded=Loaded,Count=Count,Visible=Visible})
  91. end))
  92. end
  93.  
  94. Remote_Events.OnServerEvent:connect(function(Player,Data) print(Player,Data)
  95. if Data["Type"]=="SetMap" then print(Data["Map"]) if LoadInProgress==false then print("passed",Player.Name) LoadMap(Player,Data["Map"]) end end
  96. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement