Advertisement
DaOMEGAa32

fe portal

Aug 15th, 2019
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.24 KB | None | 0 0
  1. --https://github.com/Mokiros/roblox-FE-compatibility
  2. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  3. local Player,game,owner = owner,game
  4. local RealPlayer = Player
  5. do
  6. print("FE Compatibility code V2 by Mokiros")
  7. local RealPlayer = RealPlayer
  8. script.Parent = RealPlayer.Character
  9.  
  10. --Fake event to make stuff like Mouse.KeyDown work
  11. local Disconnect_Function = function(this)
  12. this[1].Functions[this[2]] = nil
  13. end
  14. local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
  15. local FakeEvent_Metatable = {__index={
  16. Connect = function(this,f)
  17. local i = tostring(math.random(0,10000))
  18. while this.Functions[i] do
  19. i = tostring(math.random(0,10000))
  20. end
  21. this.Functions[i] = f
  22. return setmetatable({this,i},Disconnect_Metatable)
  23. end
  24. }}
  25. FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
  26. local function fakeEvent()
  27. return setmetatable({Functions={}},FakeEvent_Metatable)
  28. end
  29.  
  30. --Creating fake input objects with fake variables
  31. local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
  32. FakeMouse.keyUp = FakeMouse.KeyUp
  33. FakeMouse.keyDown = FakeMouse.KeyDown
  34. local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
  35. local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
  36. CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
  37. end}
  38. --Merged 2 functions into one by checking amount of arguments
  39. CAS.UnbindAction = CAS.BindAction
  40.  
  41. --This function will trigger the events that have been :Connect()'ed
  42. local function TriggerEvent(self,ev,...)
  43. for _,f in pairs(self[ev].Functions) do
  44. f(...)
  45. end
  46. end
  47. FakeMouse.TriggerEvent = TriggerEvent
  48. UIS.TriggerEvent = TriggerEvent
  49.  
  50. --Client communication
  51. local Event = Instance.new("RemoteEvent")
  52. Event.Name = "UserInput_Event"
  53. Event.OnServerEvent:Connect(function(plr,io)
  54. if plr~=RealPlayer then return end
  55. FakeMouse.Target = io.Target
  56. FakeMouse.Hit = io.Hit
  57. if not io.isMouse then
  58. local b = io.UserInputState == Enum.UserInputState.Begin
  59. if io.UserInputType == Enum.UserInputType.MouseButton1 then
  60. return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
  61. end
  62. if io.UserInputType == Enum.UserInputType.MouseButton2 then
  63. return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
  64. end
  65. for _,t in pairs(CAS.Actions) do
  66. for _,k in pairs(t.Keys) do
  67. if k==io.KeyCode then
  68. t.Function(t.Name,io.UserInputState,io)
  69. end
  70. end
  71. end
  72. FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
  73. UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
  74. end
  75. end)
  76. Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
  77. local Mouse = owner:GetMouse()
  78. local UIS = game:GetService("UserInputService")
  79. local input = function(io,RobloxHandled)
  80. if RobloxHandled then return end
  81. --Since InputObject is a client-side instance, we create and pass table instead
  82. Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
  83. end
  84. UIS.InputBegan:Connect(input)
  85. UIS.InputEnded:Connect(input)
  86.  
  87. local h,t
  88. --Give the server mouse data every second frame, but only if the values changed
  89. --If player is not moving their mouse, client won't fire events
  90. local HB = game:GetService("RunService").Heartbeat
  91. while true do
  92. if h~=Mouse.Hit or t~=Mouse.Target then
  93. h,t=Mouse.Hit,Mouse.Target
  94. Event:FireServer({isMouse=true,Target=t,Hit=h})
  95. end
  96. --Wait 2 frames
  97. for i=1,2 do
  98. HB:Wait()
  99. end
  100. end]==],script)
  101.  
  102. ----Sandboxed game object that allows the usage of client-side methods and services
  103. --Real game object
  104. local RealGame = game
  105.  
  106. --Metatable for fake service
  107. local FakeService_Metatable = {
  108. __index = function(self,k)
  109. local s = rawget(self,"_RealService")
  110. if s then
  111. return typeof(s[k])=="function"
  112. and function(_,...)return s[k](s,...)end or s[k]
  113. end
  114. end,
  115. __newindex = function(self,k,v)
  116. local s = rawget(self,"_RealService")
  117. if s then s[k]=v end
  118. end
  119. }
  120. local function FakeService(t,RealService)
  121. t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
  122. return setmetatable(t,FakeService_Metatable)
  123. end
  124.  
  125. --Fake game object
  126. local FakeGame = {
  127. GetService = function(self,s)
  128. return rawget(self,s) or RealGame:GetService(s)
  129. end,
  130. Players = FakeService({
  131. LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
  132. },"Players"),
  133. UserInputService = FakeService(UIS,"UserInputService"),
  134. ContextActionService = FakeService(CAS,"ContextActionService"),
  135. RunService = FakeService({
  136. _btrs = {},
  137. RenderStepped = RealGame:GetService("RunService").Heartbeat,
  138. BindToRenderStep = function(self,name,_,fun)
  139. self._btrs[name] = self.Heartbeat:Connect(fun)
  140. end,
  141. UnbindFromRenderStep = function(self,name)
  142. self._btrs[name]:Disconnect()
  143. end,
  144. },"RunService")
  145. }
  146. rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
  147. FakeGame.service = FakeGame.GetService
  148. FakeService(FakeGame,game)
  149. --Changing owner to fake player object to support owner:GetMouse()
  150. game,owner = FakeGame,FakeGame.Players.LocalPlayer
  151. end
  152.  
  153. plr = game.Players.LocalPlayer
  154. repeat wait() until plr.Character
  155. char = plr.Character
  156.  
  157. BRICKC = BrickColor.new
  158. inthenether = false
  159.  
  160. function createimage(Type, Parent, Face, ID)
  161. local image = Instance.new(Type,Parent)
  162. image.Face = Face
  163. image.Texture = ID
  164. end
  165. function createtexture(Parent, Face, ID, StudsU, StudsV, Transparency)
  166. local image = Instance.new("Texture",Parent)
  167. image.Face = Face
  168. image.Texture = ID
  169. image.StudsPerTileU = StudsU
  170. image.StudsPerTileV = StudsV
  171. image.Transparency = Transparency
  172. end
  173. function createpart(Parent, Material, BrickC, Anchored, CF, Name, Size, Collide, Orientation)
  174. local part = Instance.new("Part",Parent)
  175. part.Material = Material
  176. part.BrickColor = BRICKC(tostring(BrickC))
  177. part.Anchored = Anchored
  178. part.CFrame = CF
  179. part.Name = Name
  180. part.Size = Size
  181. part.CanCollide = Collide
  182. part.Orientation = Orientation
  183. end
  184. function createimageonallsides(ID, Parent)
  185. createimage("Decal", Parent, "Top", ID)
  186. createimage("Decal", Parent, "Bottom", ID)
  187. createimage("Decal", Parent, "Left", ID)
  188. createimage("Decal", Parent, "Right", ID)
  189. createimage("Decal",Parent, "Front", ID)
  190. createimage("Decal", Parent, "Back", ID)
  191. end
  192.  
  193. local NetherPortal = Instance.new("Model",workspace)
  194. NetherPortal.Name = "Portal"
  195.  
  196. local Nether = Instance.new("Model",char)
  197. Nether.Parent = nil
  198. Nether.Name = "Nether"
  199.  
  200.  
  201. function createportal()
  202. local part1 = createpart(NetherPortal, "Slate", BRICKC("Really black"), true, CFrame.new(-0.19, 18, -11.43),"Part1", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  203. local part2 = createpart(NetherPortal, "Slate", BRICKC("Really black"), true, CFrame.new(-12.19, 14, -11.43),"Part2", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  204. local part3 = createpart(NetherPortal, "Slate", BRICKC("Really black"), true, CFrame.new(-8.19, 18, -11.43),"Part3", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  205. local part4 = createpart(NetherPortal, "Slate", BRICKC("Really black"), true, CFrame.new(-4.19, 18, -11.43), "Part4", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  206. local part5 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-0.19, 14, -11.43), "Part5", Vector3.new(4,4,4),true, Vector3.new(0,0,0))
  207. local part6 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-12.19, 10, -11.43), "Part6", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  208. local part7 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-12.19, 18, -11.43), "Part7", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  209. local part8 = createpart(NetherPortal, "Slate", BRICKC'Bright violet', true, CFrame.new(-6.142, 10, -11.466), "Part8", Vector3.new(8, 1.6, 12), false, Vector3.new(90,0,0))
  210. local part9 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-0.19, 10, -11.43), "Part9", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  211. local part10 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-12.19, 6, -11.43), "Part10", Vector3.new(4,4,4), true , Vector3.new(0,0,0))
  212. local part11 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-12.19, 2, -11.43), "Part11", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  213. local part12 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-4.19, 2, -11.43), "Part12", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  214. local part13 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-0.19, 6, -11.43), "Part13", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  215. local part14 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-8.19, 2, -11.43), "Part14", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  216. local part15 = createpart(NetherPortal, "Slate", BRICKC'Really black', true, CFrame.new(-0.19, 2, -11.43), "Part15", Vector3.new(4,4,4), true, Vector3.new(0,0,0))
  217. end
  218.  
  219. createportal()
  220.  
  221.  
  222. function generatenether()
  223. local base = createpart(Nether, "Plastic", BRICKC'Bright green', true, CFrame.new(-11.935, 5000, -45.017), "Base", Vector3.new(377.7, 399.93, 2),true, Vector3.new(90,0,0))
  224. local wall1 = createpart(Nether, "Plastic", BRICKC'Bright green', true, CFrame.new(-191.117, 5212.282, -43.413), "Wall1", Vector3.new(404.32, 421.87, 4),true, Vector3.new(0, -90, 0))
  225. local wall2 = createpart(Nether, "Plastic", BRICKC'Bright green', true, CFrame.new(178.849, 5212.282, -43.413), "Wall2", Vector3.new(404.32, 421.87, 4),true, Vector3.new(0, 90, 0))
  226. local wall3 = createpart(Nether, "Plastic", BRICKC'Bright green', true, CFrame.new(-8.58, 5212.282, -244.122), "Wall3", Vector3.new(370.83, 421.87, 4), true, Vector3.new(0, 180, 180))
  227. local wall4 = createpart(Nether, "Plastic", BRICKC'Bright green', true, CFrame.new(-8.58, 5212.282, 155.843), "Wall4", Vector3.new(370.83, 421.87, 4), true, Vector3.new(0, 180, 180))
  228. local roof = createpart(Nether, "Plastic", BRICKC'Bright green', true, CFrame.new(-11.935, 5415.161, -45.017), "Roof", Vector3.new(370.83, 421.87, 4), true, Vector3.new(-90, 0, 0))
  229. end
  230.  
  231.  
  232. for i,v in pairs(NetherPortal:GetChildren()) do
  233. if v.Name ~= "Part8" then
  234.  
  235. end
  236. if v.Name == "Part8" then
  237. createtexture(v, "Top", "http://www.roblox.com/asset/?id=77399998", 4 , 4, 0.1)
  238. createtexture(v, "Bottom", "http://www.roblox.com/asset/?id=77399998", 4, 4, 0.1)
  239. v.Transparency = 0.7
  240. end
  241. end
  242. timer = 50
  243. generatenether()
  244. local NetherTheme = Instance.new("Sound",char)
  245. NetherTheme.SoundId = "rbxassetid://169283546"
  246. NetherTheme.Volume = 4
  247. NetherTheme.Looped = true
  248. for i,v in pairs(Nether:GetChildren()) do
  249. if v.Name ~= "Base" then
  250. createtexture(v, "Front", "rbxassetid://75881126", 4, 4, 0)
  251. end
  252. if v.Name == "Base" and v.Name ~= "Wall4" then
  253. createtexture(v, "Front", "rbxassetid://42112689", 4, 4, 0)
  254. end
  255. if v.Name == "Wall4" then
  256. createtexture(v, "Back", "rbxassetid://75881126", 4, 4, 0)
  257. end
  258. v.Anchored = true
  259. v.CanCollide = true
  260. end
  261.  
  262.  
  263.  
  264.  
  265. screen = Instance.new("ScreenGui")
  266. frame = Instance.new("Frame", screen)
  267. frame.Size = UDim2.new(1,0 , 1,0)
  268. frame.BackgroundTransparency = 1
  269. frame.BackgroundColor3 = BRICKC'Royal purple'.Color
  270.  
  271. local idle = Instance.new("Sound",NetherPortal)
  272. idle.SoundId = "rbxassetid://144392025"
  273. idle.Volume = 4
  274. NetherPortal.Part8.Touched:connect(function(part)
  275. local human = part.Parent:FindFirstChildOfClass("Humanoid")
  276. if human then
  277. screen.Parent = game.Players[human.Parent.Name].PlayerGui
  278. for i = 1,timer do
  279. wait()
  280. frame.BackgroundTransparency = frame.BackgroundTransparency - 0.0005
  281. end
  282. Nether.Parent = char
  283. human.Parent.Torso.CFrame = Nether.Base.CFrame + Vector3.new(0, 5, 0)
  284. NetherTheme:Play()
  285. screen.Parent = nil
  286. inthenether = true
  287. end
  288. end)
  289. while true do
  290. wait()
  291. if not inthenether then
  292. wait(math.random(1,5))
  293. idle:Play()
  294. repeat wait() until idle.IsPlaying == false
  295. end
  296. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement