View difference between Paste ID: DsemVkfR and PgWzcU0f
SHOW: | | - or go back to the newest paste.
1
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
2
print(" this script was (NOT) edited by An ignorant / zach ")
3
warn(" credits goes to Dark eccentric and Mr steal yo bork ")
4
warn(" im too lazy to edit so here i only convert im tired")
5
warn(" you can just clone it and edit the color yourself")
6
warn(" im tired bruh ")
7-
local Player,game,owner = owner,game
7+
 if game:GetService("RunService"):IsClient()then error("Please run as a server script. Use h/ instead of hl/.")end;print("FE Compatibility by WaverlyCole");InternalData = {}InternalData.RealOwner = owner;InternalData.RealObjs = {};InternalData.SoundLoudness = {};
8-
local RealPlayer = Player
8+
9
    script.Parent = InternalData.RealOwner.Character
10-
    print("FE Compatibility code by Mokiros")
10+
    local Event = Instance.new("RemoteEvent");Event.Name = "UserInput";InternalData.Event = Event
11-
    print("This EDIT was made by Zach the script stealer / aka zach so please stop pretending that you made it")
11+
    local function createObject (connections, index)
12-
    local rp = RealPlayer
12+
        local proxy = newproxy (true);local meta = getmetatable (proxy);
13-
    script.Parent = rp.Character
13+
        local runbind = function (self, i, ...) connections[i]:Fire (...); end;
14-
   
14+
        while (#connections > 0) do connections[table.remove(connections, 1)] = Instance.new ('BindableEvent');end;
15-
    --RemoteEvent for communicating
15+
        meta.__index = function (self, i)
16-
    local Event = Instance.new("RemoteEvent")
16+
            if (i == 'TriggerEvent') then return runbind end;
17-
    Event.Name = "UserInput_Event"
17+
            return connections[i] and connections[i].Event or index[i];
18
        end;
19-
    --Fake event to make stuff like Mouse.KeyDown work
19+
        meta.__newindex = index;meta.__metatable = false;return proxy
20-
    local function fakeEvent()
20+
    end;
21-
        local t = {_fakeEvent=true,Functions={},Connect=function(self,f)table.insert(self.Functions,f) end}
21+
    local Mouse = createObject({"KeyUp","KeyDown","Button1Down","Button1Up"},{["Target"] = nil;["Hit"] = CFrame.new()})
22-
        t.connect = t.Connect
22+
    local UserInputService = createObject({"InputBegan","InputEnded"},{})
23-
        return t
23+
    local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
24
        self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
25
    end};ContextActionService.UnBindAction = ContextActionService.BindAction
26-
    --Creating fake input objects with fake variables
26+
    Event.OnServerEvent:Connect(function(FiredBy,Input)
27-
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
27+
        if FiredBy ~= InternalData.RealOwner then return end
28-
    local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
28+
        if Input.MouseEvent then
29-
    local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
29+
            Mouse.Target = Input.Target;Mouse.Hit = Input.Hit
30-
        CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
30+
        elseif Input.Sound then
31-
    end}
31+
            if InternalData.SoundLoudness[Input.Sound] then InternalData.SoundLoudness[Input.Sound] = Input.Loudness end
32-
    --Merged 2 functions into one by checking amount of arguments
32+
        else
33-
    CAS.UnbindAction = CAS.BindAction
33+
            local Begin = Input.UserInputState == Enum.UserInputState.Begin
34
            if Input.UserInputType == Enum.UserInputType.MouseButton1 then return Mouse:TriggerEvent(Begin and "Button1Down" or "Button1Up") end
35-
    --This function will trigger the events that have been :Connect()'ed
35+
            for _,Action in pairs(ContextActionService.Actions) do
36-
    local function te(self,ev,...)
36+
                for _,Key in pairs(Action.Keys) do if Key==Input.KeyCode then Action.Function(Action.Name,Input.UserInputState,Input) end end
37-
        local t = m[ev]
37+
38-
        if t and t._fakeEvent then
38+
            Mouse:TriggerEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower());UserInputService:TriggerEvent(Begin and "InputBegan" or "InputEnded",Input,false)
39-
            for _,f in pairs(t.Functions) do
39+
40-
                f(...)
40+
41
    InternalData["Mouse"] = Mouse;InternalData["ContextActionService"] = ContextActionService;InternalData["UserInputService"] = UserInputService
42
    Event.Parent = NLS([[
43
        local Player = owner;
44-
    m.TrigEvent = te
44+
        local Sounds = {};
45-
    UIS.TrigEvent = te
45+
        local Event = script:WaitForChild("UserInput");
46
        local UserInputService = game:GetService("UserInputService");
47-
    Event.OnServerEvent:Connect(function(plr,io)
47+
        local Mouse = Player:GetMouse();
48-
        if plr~=rp then return end
48+
        local Input = function(Input,gameProcessedEvent)
49-
        m.Target = io.Target
49+
            if gameProcessedEvent then return end
50-
        m.Hit = io.Hit
50+
            Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
51-
        if not io.isMouse then
51+
52-
            local b = io.UserInputState == Enum.UserInputState.Begin
52+
        Event.OnClientEvent:connect(function(Args)
53-
            if io.UserInputType == Enum.UserInputType.MouseButton1 then
53+
            if Args[1] == "NewSound" then table.insert(Sounds,Args[2]) end
54-
                return m:TrigEvent(b and "Button1Down" or "Button1Up")
54+
        end)
55
        UserInputService.InputBegan:Connect(Input);UserInputService.InputEnded:Connect(Input)
56-
            for _,t in pairs(CAS.Actions) do
56+
        local Hit,Target
57-
                for _,k in pairs(t.Keys) do
57+
        while wait(1/30) do
58-
                    if k==io.KeyCode then
58+
            for x,Sound in pairs(Sounds) do
59-
                        t.Function(t.Name,io.UserInputState,io)
59+
                if Sound.Parent then Event:FireServer({["Sound"]=Sound,["Loudness"]=Sound.PlaybackLoudness}) end
60
            end
61
            if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
62
                Hit = Mouse.Hit;Target = Mouse.Target;
63-
            m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
63+
                Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
64-
            UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
64+
65
        end
66
    ]],InternalData.RealOwner.Character)
67-
    Event.Parent = NLS([==[
67+
68-
    local Player = game:GetService("Players").LocalPlayer
68+
InternalData.NewOwner = setmetatable({},{
69-
    local Event = script:WaitForChild("UserInput_Event")
69+
    __index = function (self,Index)
70
            local Type = type(InternalData.RealOwner[Index])
71-
    local Mouse = Player:GetMouse()
71+
            if Type == "function" then
72-
    local UIS = game:GetService("UserInputService")
72+
                if Index:lower() == "getmouse" or Index:lower() == "mouse" then
73-
    local input = function(io,a)
73+
                return function (self)return InternalData["Mouse"] end
74-
        if a then return end
74+
75-
        --Since InputObject is a client-side instance, we create and pass table instead
75+
            return function (self,...)return InternalData.RealOwner[Index](InternalData.RealOwner,...) end
76-
        Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
76+
        elseif Index == "FakePlayer" then
77
            return true
78-
    UIS.InputBegan:Connect(input)
78+
79-
    UIS.InputEnded:Connect(input)
79+
        return InternalData.RealOwner[Index]
80
    end;
81-
    local h,t
81+
    __tostring = function(self) return tostring(InternalData.RealOwner) end
82-
    --Give the server mouse data 30 times every second, but only if the values changed
82+
})
83-
    --If player is not moving their mouse, client won't fire events
83+
--LoadLibrary("RbxUtility").Create
84-
    while wait(1/30) do
84+
rans=string.reverse'!321enirboreheibmoz yb edam'
85-
        if h~=Mouse.Hit or t~=Mouse.Target then
85+
InternalData.LoadLibrary = LoadLibrary;LoadLibrary = function(Library)
86-
            h,t=Mouse.Hit,Mouse.Target
86+
    if Library == "RbxUtility" then
87-
            Event:FireServer({isMouse=true,Target=t,Hit=h})
87+
        return setmetatable({},{
88
            __tostring = function() return "RbxUtility" end;
89-
    end]==],Player.Character)
89+
            __index = function(self, Index)
90
                if Index:lower() == "create" then
91-
    ----Sandboxed game object that allows the usage of client-side methods and services
91+
                    return function(Type)
92-
    --Real game object
92+
                        return function(Data)
93-
    local _rg = game
93+
                            Data = Data or {}
94
                            local Inst = Instance.new(Type)
95-
    --Metatable for fake service
95+
                            for x,y in pairs(Data) do
96-
    local fsmt = {
96+
                                if InternalData.RealObjs[y] then y = InternalData.RealObjs[y] end
97-
        __index = function(self,k)
97+
                                if y == owner then y = InternalData.RealOwner end
98-
            local s = rawget(self,"_RealService")
98+
                                Inst[x] = y
99-
            if s then return s[k] end
99+
                            end
100-
        end,
100+
                            return Inst
101-
        __newindex = function(self,k,v)
101+
                        end
102-
            local s = rawget(self,"_RealService")
102+
103-
            if s then s[k]=v end
103+
104-
        end,
104+
                return InternalData.LoadLibrary(Library)[Index]
105-
        __call = function(self,...)
105+
106-
            local s = rawget(self,"_RealService")
106+
        })
107-
            if s then return s(...) end
107+
108
    return InternalData.LoadLibrary(Library)
109-
    }
109+
110-
    local function FakeService(t,RealService)
110+
InternalData.RealInstance = Instance;Instance = setmetatable({},{
111-
        t._RealService = typeof(RealService)=="string" and _rg:GetService(RealService) or RealService
111+
    __index = function (self,Index)
112-
        return setmetatable(t,fsmt)
112+
        if Index:lower() == 'new' then
113
            return function (Type, Parent)
114
                if Parent == owner then Parent = InternalData.RealOwner end
115-
    --Fake game object
115+
                if InternalData.RealObjs[Parent] then Parent = InternalData.RealObjs[Parent] end
116-
    local g = {
116+
                local Real = InternalData.RealInstance.new(Type,Parent)
117-
        GetService = function(self,s)
117+
                if not Type then return end
118-
            return self[s]
118+
                if Type == "BillboardGui" then
119-
        end,
119+
                    local ToReturn = setmetatable({},{
120-
        Players = FakeService({
120+
                        __index = function (self,Index)
121-
            LocalPlayer = FakeService({GetMouse=function(self)return m end},Player)
121+
                            if type(Real[Index]) == "function" then
122-
        },"Players"),
122+
                                if Index:lower() == "clone" then
123-
        UserInputService = FakeService(UIS,"UserInputService"),
123+
                                    return function (self)
124-
        ContextActionService = FakeService(CAS,"ContextActionService"),
124+
                                        local Real = Real:Clone()
125-
    }
125+
                                        local ToReturn = setmetatable({RealObject = Real},{
126-
    rawset(g.Players,"localPlayer",g.Players.LocalPlayer)
126+
                                            __index = function (self,Index)
127-
    g.service = g.GetService
127+
                                                if type(Real[Index]) == "function" then return function (self,...) return Real[Index](Real,...)end end
128-
   
128+
                                                return Real[Index]
129-
    g.RunService = FakeService({
129+
                                            end;
130-
        RenderStepped = _rg:GetService("RunService").Heartbeat,
130+
                                            __newindex = function (self,Index,Value)
131-
        BindToRenderStep = function(self,name,_,fun)
131+
                                                if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
132
                                                if Value == owner then Value = InternalData.RealOwner end
133-
        end,
133+
                                                Real[Index] = Value
134-
        UnbindFromRenderStep = function(self,name)
134+
                                            end;
135-
            self._btrs[name]:Disconnect()
135+
                                            __tostring = function(self) return tostring(Real) end;
136-
        end,
136+
                                        })
137-
    },"RunService")
137+
                                        InternalData.RealObjs[ToReturn] = Real;return ToReturn;
138
                                    end
139-
    setmetatable(g,{
139+
                                end
140-
        __index=function(self,s)
140+
                                return function (self,...) return Real[Index](Real,...)end
141-
            return _rg:GetService(s) or typeof(_rg[s])=="function"
141+
                            end
142-
            and function(_,...)return _rg[s](_rg,...)end or _rg[s]
142+
                            return Real[Index]
143-
        end,
143+
                        end;
144-
        __newindex = fsmt.__newindex,
144+
                        __newindex = function (self,Index,Value)
145-
        __call = fsmt.__call
145+
                            if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
146-
    })
146+
                            if Value == owner then Value = InternalData.RealOwner end
147-
    --Changing owner to fake player object to support owner:GetMouse()
147+
                            Real[Index] = Value
148-
    game,owner = g,g.Players.LocalPlayer
148+
                        end;
149
                        __tostring = function(self) return tostring(Real) end;
150
                    })
151
                    InternalData.RealObjs[ToReturn] = Real;return ToReturn;
152
                elseif Type:lower() == "sound" then
153
                    Real.Parent = owner.Character;
154
                    local ToReturn = setmetatable({RealObject = Real},{
155
                        __index = function (self,Index)
156
                            if Index:lower() == "playbackloudness" then
157
                                return InternalData.SoundLoudness[Real] or 0
158
                            elseif type(Real[Index]) == "function" then
159
                                if Index:lower() == "clone" then
160
                                    return function (self)
161
                                        local Real = Real:Clone()
162
                                        local ToReturn = setmetatable({},{
163
                                            __index = function (self,Index)
164
                                                if type(Real[Index]) == "function" then return function (self,...) return Real[Index](Real,...)end end
165
                                                return Real[Index]
166
                                            end;
167
                                            __newindex = function (self,Index,Value)
168
                                                if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
169
                                                if Value == owner then Value = InternalData.RealOwner end
170
                                                Real[Index] = Value
171-
sign.BrickColor = BrickColor.new("Bright bluish green") 
171+
                                            end;
172
                                            __tostring = function(self) return tostring(Real) end;
173
                                        })
174
                                        InternalData.RealObjs[ToReturn] = Real;return ToReturn;
175
                                    end
176
                                end
177
                                return function (self,...) return Real[Index](Real,...)end
178
                            end
179
                            return Real[Index]
180
                        end;
181
                        __newindex = function (self,Index,Value)
182
                            if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
183
                            if Value == owner then Value = InternalData.RealOwner end
184
                            Real[Index] = Value
185
                        end;
186
                        __tostring = function(self) return tostring(Real) end;
187
                    })
188
                    InternalData.RealObjs[ToReturn] = Real;InternalData.SoundLoudness[Real] = 0;repeat wait() until InternalData.Event.Parent InternalData.Event:FireClient(InternalData.RealOwner,{"NewSound",Real}) return ToReturn;
189
                else
190
                    local ToReturn = setmetatable({RealObject = Real},{
191
                        __index = function (self,Index)
192
                            if type(Real[Index]) == "function" then
193
                                if Index:lower() == "clone" then
194
                                    return function (self)
195
                                        local Real = Real:Clone()
196
                                        local ToReturn = setmetatable({},{
197
                                            __index = function (self,Index)
198
                                                if type(Real[Index]) == "function" then return function (self,...) return Real[Index](Real,...)end end
199
                                                return Real[Index]
200
                                            end;
201
                                            __newindex = function (self,Index,Value)
202
                                                if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
203
                                                if Value == owner then Value = InternalData.RealOwner end
204
                                                Real[Index] = Value
205
                                            end;
206
                                            __tostring = function(self) return tostring(Real) end;
207
                                        })
208
                                        InternalData.RealObjs[ToReturn] = Real;return ToReturn;
209
                                    end
210
                                end
211
                                return function (self,...) return Real[Index](Real,...)end
212
                            end
213
                            return Real[Index]
214
                        end;
215
                        __newindex = function (self,Index,Value)
216
                            if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
217
                            if Value == owner then Value = InternalData.RealOwner end
218
                            Real[Index] = Value
219
                        end;
220
                        __tostring = function(self) return tostring(Real) end;
221
                    })
222
                    InternalData.RealObjs[ToReturn] = Real;return ToReturn;
223
                end
224
            end
225
        end
226
        return InternalData.RealInstance[Index]
227
    end;
228
    __tostring = function(self) return tostring(InternalData.RealInstance) end;
229
});
230
InternalData.RealGame = game;game = setmetatable({},{
231
    __index = function (self,Index)
232
        if InternalData.RealGame[Index] then
233
            local Type = type(InternalData.RealGame[Index])
234
            if Type == "function" then
235
                if Index:lower() == "getservice" or Index:lower() == "service" then
236
                    return function (self,Service)
237
                        local FakeServices = {
238
                            ["players"] = function()
239
                                return setmetatable({},{
240
                                    __index = function (self2,Index2)
241
                                        local RealService = InternalData.RealGame:GetService(Service)
242
                                        local Type2 = type(RealService[Index2])
243
                                        if Type2 == "function" then
244
                                            return function (self,...) return RealService[Index2](RealService,...)end
245
                                        else
246
                                            if Index2:lower() == "localplayer" then return InternalData.NewOwner end
247
                                            return RealService[Index2]
248
                                        end
249
                                    end;
250
                                    __tostring = function(self) return tostring(InternalData.RealGame:GetService(Service)) end
251
                                })
252
                            end;
253
                            ["contextactionservice"] = function() return InternalData["ContextActionService"] end;
254
                            ["userinputservice"] = function() return InternalData["UserInputService"] end;
255
                            ["debris"] = function()
256
                                return setmetatable({},{
257
                                    __index = function(self2,Index2)
258
                                        local RealService = InternalData.RealGame:GetService(Service)
259
                                        local Type2 = type(RealService[Index2])
260
                                        if Type2 == "function" then
261
                                            if Index2:lower() == "additem" then
262
                                                return function (self,Item,Time)
263
                                                    if InternalData.RealObjs[Item] then Item = InternalData.RealObjs[Item] end
264
                                                    return RealService:AddItem(Item,Time)
265
                                                end
266
                                            end
267
                                            return function (self,...) return RealService[Index2](RealService,...) end
268
                                        end
269
                                        return RealService[Index2]
270
                                    end;
271
                                    __tostring = function(self) return tostring(InternalData.RealGame:GetService("Debris")) end
272
                                })
273
                            end;
274
                            ["runservice"] = function()
275
                                return setmetatable({},{
276
                                    __index = function(self2,Index2)
277
                                        local RealService = InternalData.RealGame:GetService(Service)
278
                                        local Type2 = type(RealService[Index2])
279
                                        if Type2 == "function" then
280
                                            return function (self,...) return RealService[Index2](RealService,...) end
281
                                        else
282
                                            local RunServices = {
283
                                                ["bindtorenderstep"] = function() return function (self,Name,Priority,Function) return InternalData.RealGame:GetService("RunService").Stepped:Connect(Function) end end;
284
                                                ["renderstepped"] = function() return RealService["Stepped"] end
285
                                            }
286
                                            if RunServices[Index2:lower()] then return RunServices[Index2:lower()]() end
287
                                            return RealService[Index2]
288
                                        end
289
                                    end;
290
                                    __tostring = function(self) return tostring(InternalData.RealGame:GetService("RunService")) end
291
                                })
292
                            end
293
                        }
294
                        if FakeServices[Service:lower()] then return FakeServices[Service:lower()]() end
295
                        return InternalData.RealGame:GetService(Service)
296
                    end
297
                end
298
                return function (self,...) return InternalData.RealGame[Index](InternalData.RealGame,...) end
299
            else
300
                if game:GetService(Index) then return game:GetService(Index) end
301
                return InternalData.RealGame[Index]
302
            end
303
        end
304
        return nil
305
    end;
306
    __tostring = function(self) return tostring(InternalData.game) end
307
});Game = game;owner = game:GetService("Players").LocalPlayer;script = Instance.new("Script");print("Complete!")
308
309
p = game.Players.LocalPlayer
310
t = Instance.new("Tool") 
311
t.Parent = p.Backpack 
312
t.Name = "Sign lololo" 
313
local handlelol = Instance.new("Part") 
314
handlelol.Name = "Handle" 
315
handlelol.Parent = t 
316
handlelol.formFactor = "Plate" 
317
handlelol.BrickColor = BrickColor.new("Brown") 
318
handlelol.Size = Vector3.new(1, 4.5, .5) 
319
handlelol.TopSurface = "Smooth" 
320
handlelol.BottomSurface = "Smooth" 
321
handlelol.Reflectance = 0 
322
handlelol.Material = "Wood"
323
local sign = Instance.new("Part") 
324
sign.Name = "Part" 
325
sign.Parent = t 
326
sign.formFactor = "Plate" 
327
sign.BrickColor = BrickColor.new("Brown") 
328
sign.Size = Vector3.new(5, 4, 1) 
329
sign.TopSurface = "Smooth" 
330
sign.BottomSurface = "Smooth" 
331
sign.Reflectance = 0 
332
 
333
mesh123 = Instance.new("BlockMesh") 
334
mesh123.Parent = sign 
335
mesh123.Scale = Vector3.new(1.1, 1.1, 0.8) 
336
337
w2 = Instance.new("Weld")
338
w2.Parent = handlelol
339
w2.Part0 = sign
340
w2.Part1 = handlelol
341
w2.C0 = CFrame.fromEulerAnglesXYZ(0, 0, 0) + Vector3.new(0, -2.5, 0)
342
-----------------------------------------------------------------------
343
local SurfaceGui = Instance.new("SurfaceGui")
344
local TextBox = Instance.new("TextBox")
345
local ScreenGui = Instance.new("ScreenGui")
346
local TextLabel = Instance.new("TextBox")
347
ScreenGui.Parent = p.PlayerGui
348
TextBox.Parent = ScreenGui
349
TextBox.BackgroundColor3 = Color3.new(0.756863, 0.705882, 1)
350
TextBox.Position = UDim2.new(0, 74, 0, 374)
351
TextBox.Size = UDim2.new(0, 176, 0, 50)
352
TextBox.Font = Enum.Font.Highway
353
TextBox.FontSize = Enum.FontSize.Size28
354
TextBox.Text = "Type text you want here"
355
TextBox.TextSize = 10
356
TextBox.TextWrapped = true
357
TextBox.Visible = false
358
SurfaceGui.Parent = sign
359
SurfaceGui.Face = Enum.NormalId.Front
360
TextLabel.Parent = SurfaceGui
361
TextLabel.BackgroundColor3 = Color3.new(1, 1, 1)
362
TextLabel.BackgroundTransparency = 1
363
TextLabel.Size = UDim2.new(0, 800, 0, 600)
364
TextLabel.Font = Enum.Font.SourceSans
365
TextLabel.FontSize = Enum.FontSize.Size96
366
TextLabel.Text = "same"
367
TextLabel.TextColor3 = Color3.new(0.956863, 0.345098, 0.0588235)
368
TextLabel.TextSize = 100
369
TextLabel.TextWrapped = true
370
t.Equipped:connect(function()
371
	TextBox.Visible = true
372
end)
373
374
t.Unequipped:connect(function()
375
	TextBox.Visible = false
376
end)
377
wait(1)
378
TextBox.Changed:connect(function()
379
	TextLabel.Text = TextBox.Text
380
end)