View difference between Paste ID: tSPYki71 and PvL8WfvZ
SHOW: | | - or go back to the newest paste.
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
Player = game:GetService("Players").LocalPlayer
153
Character = Player.Character 
154
PlayerGui = Player.PlayerGui 
155
Backpack = Player.Backpack 
156
Torso = Character.Torso 
157
Head = Character.Head 
158
LeftArm = Character["Left Arm"] 
159
LeftLeg = Character["Left Leg"] 
160
RightArm = Character["Right Arm"] 
161
RightLeg = Character["Right Leg"] 
162
LS = Torso["Left Shoulder"] 
163
LH = Torso["Left Hip"] 
164
RS = Torso["Right Shoulder"] 
165
RH = Torso["Right Hip"] 
166
 
167
if (script.Parent.className ~= "HopperBin") then 
168
Tool = Instance.new("HopperBin") 
169
Tool.Parent = Backpack 
170
Tool.Name = "Painis" 
171
script.Parent = Tool 
172
end 
173
Bin = script.Parent 
174
 
175
so = function(id,par,vol,pit) 
176
coroutine.resume(coroutine.create(function()
177
local sou = Instance.new("Sound",par or workspace)
178
sou.Volume=vol
179
sou.Pitch=pit or 1
180
sou.SoundId=id
181
wait() 
182
sou:play() 
183
wait(6) 
184
sou:Remove() 
185
end))
186
end
187
 
188
function ob1d(mouse) 
189
size=0.5
190
mode=1
191
color=BrickColor.new(Color3.new(math.random(),math.random(),math.random())) 
192
mo=Instance.new("Model") 
193
mo.Name="EEEEUGH HA HA HAAAAA" 
194
mo.Parent=workspace 
195
game.Debris:AddItem(mo,10)
196
p=Instance.new("Seat") 
197
p.Name="Torso" 
198
p.Size=Vector3.new(14,50,14)*size
199
p.BrickColor=color
200
m=Instance.new("SpecialMesh") 
201
m.Parent=p 
202
p.Name="Torso" 
203
p.Parent=mo 
204
p=Instance.new("Seat") 
205
p.Shape="Ball" 
206
p.Size=Vector3.new(24,24,24)*size
207
p.BrickColor=color
208
p.Name="Legball" 
209
for i=1, 10 do 
210
lol=Instance.new("Seat") 
211
lol.BrickColor=BrickColor:Black() 
212
lol.Name="SEE?" 
213
lol.Parent=mo 
214
lol.Size=Vector3.new(1,math.random(30,40),1) *size
215
w=Instance.new("Weld") 
216
w.Part0=p 
217
w.Part1=lol 
218
w.C0=CFrame.new(0,0,0)*CFrame.fromEulerAnglesXYZ(math.random(-10,10),math.random(-10,10),math.random(-10,10)) 
219
w.Parent=w.Part0 
220
end 
221
p.Parent=mo 
222
w=Instance.new("Weld") 
223
w.Part0=mo.Torso 
224
w.Part1=p 
225
w.C0=CFrame.new(16*(size/2),-48*(size/2),0) 
226
w.Parent=w.Part0 
227
p=Instance.new("Seat") 
228
p.Shape="Ball" 
229
p.Size=Vector3.new(24,24,24)*size
230
p.BrickColor=color
231
p.Name="Legball" 
232
for i=1, 10 do 
233
lol=Instance.new("Seat") 
234
lol.BrickColor=BrickColor:Black() 
235
lol.Name="SEE?" 
236
lol.Parent=mo 
237
lol.Size=Vector3.new(1,math.random(30,40),1) *size
238
w=Instance.new("Weld") 
239
w.Part0=p 
240
w.Part1=lol 
241
w.C0=CFrame.new(0,0,0)*CFrame.fromEulerAnglesXYZ(math.random(-10,10),math.random(-10,10),math.random(-10,10)) 
242
w.Parent=w.Part0 
243
end 
244
p.Parent=mo 
245
w=Instance.new("Weld") 
246
w.Part0=mo.Torso 
247
w.Part1=p 
248
w.C0=CFrame.new(-16*(size/2),-48*(size/2),0) 
249
w.Parent=w.Part0 
250
p=Instance.new("Seat") 
251
p.Shape="Ball" 
252
p.Size=Vector3.new(21,15,21)*size
253
p.BrickColor=color
254
p.Name="Legball" 
255
for i=1, 10 do 
256
lol=Instance.new("Seat") 
257
lol.BrickColor=BrickColor:Black() 
258
lol.Name="SEE?" 
259
lol.Parent=mo 
260
lol.Size=Vector3.new(1,math.random(30,40),1) *size
261
w=Instance.new("Weld") 
262
w.Part0=p 
263
w.Part1=lol 
264
w.C0=CFrame.new(0,0,0)*CFrame.fromEulerAnglesXYZ(math.random(-10,10),math.random(-10,10),math.random(-10,10)) 
265
w.Parent=w.Part0 
266
end 
267
p.Parent=mo 
268
w=Instance.new("Weld") 
269
w.Part0=mo.Torso 
270
w.Part1=p 
271
w.C0=CFrame.new(0,60*(size/2),0) 
272
m=Instance.new("SpecialMesh") 
273
m.Parent=p 
274
p.Name="Head" 
275
w.Parent=w.Part0 
276
s=Instance.new("Sound")
277
s.Parent=mo.Torso
278
s.Volume=100
279
s.Pitch=1
280
s.SoundId="http://www.roblox.com/asset/?id=149779810"
281
s.Looped=true
282
s:play()
283
coroutine.resume(coroutine.create(function(Part)
284
while Part.Parent~=nil do
285
wait(math.random())
286
--[[derp=math.random(1,11)
287
if derp==1 then
288
so("http://www.roblox.com/asset/?id=151172618",Part,100,math.random(0,2)+math.random()) --PINGAS
289
elseif derp==2 then
290
so("http://www.roblox.com/asset/?id=148636758",Part,100,math.random(0,2)+math.random()) --POOTIS
291
elseif derp==3 then
292
so("http://www.roblox.com/asset/?id=132026302",Part,100,math.random(0,2)+math.random()) --MEEM
293
elseif derp==4 then
294
so("http://www.roblox.com/asset/?id=131228548",Part,100,math.random(0,2)+math.random()) --GET OVER HERE
295
elseif derp==5 then
296
so("http://www.roblox.com/asset/?id=131554451",Part,100,math.random(0,2)+math.random()) --DED
297
elseif derp==6 then
298
so("http://www.roblox.com/asset/?id=130818264",Part,0.5,math.random(0,2)+math.random()) --ALL TOASTERS
299
elseif derp==7 then
300
so("http://www.roblox.com/asset/?id=131313234",Part,100,math.random(0,2)+math.random()) --BOOM HEDSHOT
301
elseif derp==8 then
302
so("http://www.roblox.com/asset/?id=130770819",Part,100,math.random(0,2)+math.random()) --I SELL PROPANE
303
elseif derp==9 then
304
so("http://www.roblox.com/asset/?id=130776108",Part,100,math.random(0,2)+math.random()) --OM NOM NOM
305
elseif derp==10 then
306
so("http://www.roblox.com/asset/?id=130768126",Part,100,math.random(0,2)+math.random()) --DRINK YO PRUNE JUICE
307
elseif derp==11 then
308
so("http://www.roblox.com/asset/?id=130815729",Part,100,math.random(0,2)+math.random()) --NOPE.AVI
309
end]]
310
so("http://www.roblox.com/asset/?id=148636758",Part,100,1) --GOTTA GO FAST
311
end
312
end),mo.Torso)
313
--[[mo:MoveTo(Vector3.new(math.random(-300,300),60,math.random(-300,300))) 
314
mo.Torso.CFrame=mo.Torso.CFrame*CFrame.fromEulerAnglesXYZ(math.random(-50,50),math.random(-50,50),math.random(-50,50))
315
]]
316
--mo:MoveTo(Vector3.new(0,60,0)) 
317
mo.Torso.CFrame=mo.Torso.CFrame*Torso.CFrame*CFrame.new(0,0,-50*size)*CFrame.fromEulerAnglesXYZ(-1.57,0,0)
318
mo.Torso.Velocity=mouse.Hit.lookVector * 400
319
coroutine.resume(coroutine.create(function(Part)
320
while true do
321
wait(math.random(0,1)+math.random())
322
Part.RotVelocity=Vector3.new(math.random(-40,40),math.random(-40,40),math.random(-40,40)) 
323
--Part.RotVelocity=Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5)) 
324
end
325
end),mo.Torso)
326
end 
327
 
328
function ob1u(mouse) 
329
end 
330
 
331
buttonhold = false 
332
 
333
function key(key,mouse) 
334
end 
335
 
336
function key2(key,mouse) 
337
end 
338
 
339
function s(mouse) 
340
mouse.Button1Down:connect(function() ob1d(mouse) end) 
341
mouse.Button1Up:connect(function() ob1u(mouse) end) 
342
mouse.KeyDown:connect(key) 
343
mouse.KeyUp:connect(key2) 
344
end 
345
 
346
function ds(mouse) 
347
end 
348
 
349
Bin.Selected:connect(s) 
350
Bin.Deselected:connect(ds)