View difference between Paste ID: 6GtU04vt and 0ghdQeDd
SHOW: | | - or go back to the newest paste.
1-
--[[                                              
1+
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
2-
Script shared by ProFiGames KISS ME                                            ]]
2+
local Player,game,owner = owner,game
3
local RealPlayer = Player
4
do
5
	print("FE Compatibility code V2 by Mokiros")
6
	local RealPlayer = RealPlayer
7
	script.Parent = RealPlayer.Character
8
9
	--Fake event to make stuff like Mouse.KeyDown work
10
	local Disconnect_Function = function(this)
11
		this[1].Functions[this[2]] = nil
12
	end
13
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
14
	local FakeEvent_Metatable = {__index={
15
		Connect = function(this,f)
16
			local i = tostring(math.random(0,10000))
17
			while this.Functions[i] do
18
				i = tostring(math.random(0,10000))
19
			end
20
			this.Functions[i] = f
21
			return setmetatable({this,i},Disconnect_Metatable)
22
		end
23
	}}
24
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
25
	local function fakeEvent()
26
		return setmetatable({Functions={}},FakeEvent_Metatable)
27
	end
28
29
	--Creating fake input objects with fake variables
30
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
31
    FakeMouse.keyUp = FakeMouse.KeyUp
32
    FakeMouse.keyDown = FakeMouse.KeyDown
33
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
34
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
35
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
36
	end}
37
	--Merged 2 functions into one by checking amount of arguments
38
	CAS.UnbindAction = CAS.BindAction
39
40
	--This function will trigger the events that have been :Connect()'ed
41
	local function TriggerEvent(self,ev,...)
42
		for _,f in pairs(self[ev].Functions) do
43
			f(...)
44
		end
45
	end
46
	FakeMouse.TriggerEvent = TriggerEvent
47
	UIS.TriggerEvent = TriggerEvent
48
49
	--Client communication
50
	local Event = Instance.new("RemoteEvent")
51
	Event.Name = "UserInput_Event"
52
	Event.OnServerEvent:Connect(function(plr,io)
53
	    if plr~=RealPlayer then return end
54
		FakeMouse.Target = io.Target
55
		FakeMouse.Hit = io.Hit
56
		if not io.isMouse then
57
			local b = io.UserInputState == Enum.UserInputState.Begin
58
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
59
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
60
			end
61
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
62
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
63
			end
64
			for _,t in pairs(CAS.Actions) do
65
				for _,k in pairs(t.Keys) do
66
					if k==io.KeyCode then
67
						t.Function(t.Name,io.UserInputState,io)
68
					end
69
				end
70
			end
71
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
72
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
73
	    end
74
	end)
75
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
76
	local Mouse = owner:GetMouse()
77
	local UIS = game:GetService("UserInputService")
78
	local input = function(io,RobloxHandled)
79
		if RobloxHandled then return end
80
		--Since InputObject is a client-side instance, we create and pass table instead
81
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
82
	end
83
	UIS.InputBegan:Connect(input)
84
	UIS.InputEnded:Connect(input)
85
	local h,t
86
	--Give the server mouse data every second frame, but only if the values changed
87
	--If player is not moving their mouse, client won't fire events
88
	local HB = game:GetService("RunService").Heartbeat
89
	while true do
90
		if h~=Mouse.Hit or t~=Mouse.Target then
91
			h,t=Mouse.Hit,Mouse.Target
92
			Event:FireServer({isMouse=true,Target=t,Hit=h})
93
		end
94
		--Wait 2 frames
95
		for i=1,2 do
96
			HB:Wait()
97
		end
98
	end]==],script)
99
100
	----Sandboxed game object that allows the usage of client-side methods and services
101
	--Real game object
102
	local RealGame = game
103
104
	--Metatable for fake service
105
	local FakeService_Metatable = {
106
		__index = function(self,k)
107
			local s = rawget(self,"_RealService")
108
			if s then
109
				return typeof(s[k])=="function"
110
				and function(_,...)return s[k](s,...)end or s[k]
111
			end
112
		end,
113
		__newindex = function(self,k,v)
114
			local s = rawget(self,"_RealService")
115
			if s then s[k]=v end
116
		end
117
	}
118
	local function FakeService(t,RealService)
119
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
120
		return setmetatable(t,FakeService_Metatable)
121
	end
122
123
	--Fake game object
124
	local FakeGame = {
125
		GetService = function(self,s)
126
			return rawget(self,s) or RealGame:GetService(s)
127
		end,
128
		Players = FakeService({
129
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
130
		},"Players"),
131
		UserInputService = FakeService(UIS,"UserInputService"),
132
		ContextActionService = FakeService(CAS,"ContextActionService"),
133
		RunService = FakeService({
134
			_btrs = {},
135
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
136
			BindToRenderStep = function(self,name,_,fun)
137
				self._btrs[name] = self.Heartbeat:Connect(fun)
138
			end,
139
			UnbindFromRenderStep = function(self,name)
140
				self._btrs[name]:Disconnect()
141
			end,
142
		},"RunService")
143
	}
144
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
145
	FakeGame.service = FakeGame.GetService
146
	FakeService(FakeGame,game)
147
	--Changing owner to fake player object to support owner:GetMouse()
148
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
149
end
150
151
152
153
me = game.Players.LocalPlayer
154
155
if script.Parent.className ~= "HopperBin" then
156
h = Instance.new("HopperBin",me.Backpack)
157
h.Name = "Portal"
158
script.Parent = h
159
end
160
161
bin = script.Parent
162
mode = true
163
hold = false
164
165
function prop(part, parent, collide, tran, ref, x, y, z, color, anchor, form)
166
part.Parent = parent
167
part.formFactor = form
168
part.CanCollide = collide
169
part.Transparency = tran
170
part.Reflectance = ref
171
part.Size = Vector3.new(x,y,z)
172
part.BrickColor = BrickColor.new(color)
173
part.TopSurface = 0
174
part.BottomSurface = 0
175
part.Anchored = anchor
176
part:BreakJoints()
177
end
178
179
function weld(w, p, p0, p1, a, b, c, x, y, z)
180
w.Parent = p
181
w.Part0 = p0
182
w.Part1 = p1
183
w.C1 = CFrame.fromEulerAnglesXYZ(a,b,c) * CFrame.new(x,y,z)
184
end
185
186
function mesh(mesh, parent, x, y, z, type)
187
mesh.Parent = parent
188
mesh.Scale = Vector3.new(x, y, z)
189
mesh.MeshType = type
190
end
191
192
out = false
193
inn = false
194
195
function sel(mouse)
196
	local mk = nil
197
	local km = nil
198
	mouse.Button1Down:connect(function()
199
		if mode then
200
			if inn == false then
201
			inn = true
202
			mode = false
203
			hold = true
204
			local holdpos = mouse.Hit.p + Vector3.new(0,4,0)
205
			local portal = Instance.new("Model",workspace)
206
			portal.Name = "InPortal"
207
			local main = Instance.new("Part")
208
			prop(main, portal, false, 0.1, 0.1, 2.4, 2.4, 0.6, "Medium blue", true, "Custom")
209
			main.CFrame = CFrame.new(holdpos,mouse.Hit.p) * CFrame.new(0,3,0)
210
			local mes = Instance.new("SpecialMesh")
211
			mesh(mes,main,7,7,4,"FileMesh")
212
			mes.MeshId = "http://www.roblox.com/asset/?id=3270017"
213
			local f = Instance.new("Fire",main)
214
			f.Size = 7
215
			f.Heat = 0
216
			f.Color = Color3.new(0.1,0.2,1)
217
			f.SecondaryColor = Color3.new(0.4,0.4,0.6)
218
			while hold do
219
				wait()
220
				main.CFrame = CFrame.new(holdpos,mouse.Hit.p)
221
			end
222
			mk = main
223
			end
224
		else
225
			if inn == true and out == false then
226
			out = true
227
			mode = true
228
			hold = true
229
			local holdpos = mouse.Hit.p + Vector3.new(0,4,0)
230
			local portal = Instance.new("Model",workspace)
231
			portal.Name = "OutPortal"
232
			local main = Instance.new("Part")
233
			prop(main, portal, false, 0.1, 0.1, 2.4, 2.4, 0.6, "Neon orange", true, "Custom")
234
			main.CFrame = CFrame.new(holdpos,mouse.Hit.p) * CFrame.new(0,3,0)
235
			local mes = Instance.new("SpecialMesh")
236
			mesh(mes,main,7,7,4,"FileMesh")
237
			mes.MeshId = "http://www.roblox.com/asset/?id=3270017"
238
			local f = Instance.new("Fire",main)
239
			f.Size = 7
240
			f.Heat = 0
241
			f.Color = Color3.new(1,0.2,0.1)
242
			f.SecondaryColor = Color3.new(0.8,0.1,0.08)
243
			km = main
244
			hold = true
245
			while hold do
246
				wait()
247
				main.CFrame = CFrame.new(holdpos,mouse.Hit.p)
248
			end
249
			local tuch = true
250
			mk.Touched:connect(function(hit)
251
				local pla = game.Players:findFirstChild(hit.Parent.Name)
252
				if pla then
253
					if tuch then
254
						tuch = false
255
						local ff = Instance.new("Part")
256
						prop(ff,me.Character,false,1,0.2,2.3,2.3,1,"Medium blue",true,"Custom")
257
						local mag = (mk.Position - main.Position).magnitude
258
						ff.Size = Vector3.new(2.3,2.3,1)
259
						ff.CFrame = CFrame.new(mk.Position, main.Position) * CFrame.new(0,0,-mag/2)
260
						local mee = Instance.new("SpecialMesh",ff)
261
						mee.MeshType = "Brick"
262
						mee.Scale = Vector3.new(0.65,0.65,mag)
263
						for i=0.1, 1.1, 0.05 do
264
							mk.Transparency = i
265
							ff.Transparency = ff.Transparency - 0.04
266
							mee.Scale = Vector3.new(math.random(5,130)/100,math.random(5,130)/100,mag)
267
							wait()
268
						end
269
						pla.Character.Torso.CFrame = main.CFrame * CFrame.new(0,0,-3)
270
						for i=0.1,1.1,0.05 do
271
							main.Transparency = i
272
							ff.Transparency = ff.Transparency + 0.08
273
							mee.Scale = Vector3.new(math.random(30,120)/100,math.random(30,120)/100,mag)
274
							wait()
275
						end
276
						ff:remove()
277
						main:remove()
278
						mk:remove()
279
						mk = nil
280
						inn = false
281
						out = false
282
					end
283
				end
284
			end)
285
			end
286
		end
287
	end)
288
	mouse.Button1Up:connect(function()
289
		hold = false
290
	end)
291
	mouse.KeyDown:connect(function(key)
292
		key = key:lower()
293
		if (key == "q") then
294
			mode = true
295
			if mk ~= nil then
296
				mk:remove()
297
				mk = nil
298
				inn = false
299
			end
300
			if km ~= nil then
301
				km:remove()
302
				km = nil
303
				out = false
304
			end
305
		end
306
	end)
307
end
308
309
bin.Selected:connect(sel)
310
311
--mediafire