SHOW:
|
|
- or go back to the newest paste.
1 | local Settings={ | |
2 | UIName='Phantom Forces'; | |
3 | MainColor=Color3.fromRGB(255,100,100); | |
4 | - | ToggleKey='\'; |
4 | + | ToggleKey='Insert'; |
5 | }; | |
6 | ||
7 | local Storage=Instance.new'ScreenGui'; | |
8 | Storage.Parent=game:GetService'RunService':IsStudio()and (wait(2/3)and game:GetService'Players'.LocalPlayer.PlayerGui or nil) or game:GetService'CoreGui'; | |
9 | local OptionsForColors={ | |
10 | TEXT_='TextColor3'; | |
11 | BACKGROUND='BackgroundColor3'; | |
12 | }; | |
13 | local function Colorize(I) -- Great var name! | |
14 | for i,v in next,OptionsForColors do | |
15 | if I.Name:find(i) and I[v]then | |
16 | I[v]=Settings.MainColor; | |
17 | else | |
18 | -- print(I.Name, 'noped', i); | |
19 | end; | |
20 | end; | |
21 | I.ChildAdded:Connect(Colorize); | |
22 | end; | |
23 | Storage.ChildAdded:Connect(Colorize); | |
24 | ||
25 | local Main=Instance.new'Frame';Main.Name='MainFrame'; | |
26 | Main.BackgroundTransparency=1;Main.BorderSizePixel=0; | |
27 | Main.Size=UDim2.new(1,0,1,0); | |
28 | Main.Parent=Storage;Main.Visible=false; | |
29 | local HUD=Main:Clone(); | |
30 | HUD.Name='HUD'; | |
31 | HUD.Parent=Storage; | |
32 | HUD.Visible=true; | |
33 | ||
34 | local UILabel=Instance.new'TextLabel'; | |
35 | UILabel.Name='TEXT_UILabel'; | |
36 | UILabel.BackgroundTransparency=1;UILabel.BorderSizePixel=0; | |
37 | UILabel.Position=UDim2.new(0.05,0,0.85,0); | |
38 | UILabel.Size=UDim2.new(0.15,0,0.1,0); | |
39 | UILabel.Text=Settings.UIName; | |
40 | UILabel.TextScaled=true; | |
41 | UILabel.Font=Enum.Font.SourceSansLight; | |
42 | UILabel.Parent=Main; | |
43 | ||
44 | local Tabs={}; | |
45 | local Toggles={}; | |
46 | local ToggleSettings={}; | |
47 | local X=10; | |
48 | ||
49 | local function UpdateArrayList() | |
50 | local Y=0; | |
51 | for i,v in ipairs(HUD:GetChildren())do | |
52 | if v.Name:find'ARR_' then | |
53 | v:Destroy(); | |
54 | end; | |
55 | end; | |
56 | for i,v in ipairs(Main:GetDescendants())do | |
57 | if v.Name:find'TOGGLE_' then | |
58 | local P1,P2=v.Name:find'TOGGLE_'; | |
59 | local Name=v.Name:sub(P2+1); | |
60 | v.TextColor3=Toggles[Name]and Settings.MainColor or Color3.new(1,1,1); | |
61 | end; | |
62 | end; | |
63 | for i,v in next,Toggles do | |
64 | if v then | |
65 | local Label=Instance.new'TextLabel'; | |
66 | Label.Name='TEXT_ARR_'..i; | |
67 | Label.BackgroundTransparency=1;Label.BorderSizePixel=0; | |
68 | Label.Position=UDim2.new(0.1,-5,0,Y); | |
69 | Label.Size=UDim2.new(0.9,0,0,30); | |
70 | Label.Text=i; | |
71 | Label.TextScaled=true; | |
72 | Label.Font=Enum.Font.SourceSansLight; | |
73 | Label.TextXAlignment=Enum.TextXAlignment.Right; | |
74 | Label.Parent=HUD; | |
75 | Y=Y+30 | |
76 | end; | |
77 | end; | |
78 | end; | |
79 | ||
80 | local function CreateTab(TabName) | |
81 | Tabs[TabName]={}; | |
82 | Tabs[TabName].Toggles={}; | |
83 | local Frame=Instance.new'TextLabel'; | |
84 | Frame.Name='BACKGROUND_'..TabName; | |
85 | Frame.BorderSizePixel=0; | |
86 | Frame.Position=UDim2.new(0,X,0,10); | |
87 | Frame.Active=true; | |
88 | Frame.Draggable=true; | |
89 | Frame.Size=UDim2.new(0,250,0,30); | |
90 | Frame.TextColor3=Color3.fromRGB(84,84,84); | |
91 | Frame.TextSize=18; | |
92 | Frame.Font=Enum.Font.SourceSansLight; | |
93 | Frame.Text=TabName; | |
94 | Frame.Parent=Main; | |
95 | local Toggle=Instance.new'TextButton'; | |
96 | Toggle.Name=TabName..'Toggle'; | |
97 | Toggle.BackgroundTransparency=1; | |
98 | Toggle.BorderSizePixel=0; | |
99 | Toggle.Position=UDim2.new(0,220,0,0); | |
100 | Toggle.Size=UDim2.new(0,30,0,30); | |
101 | Toggle.TextColor3=Color3.fromRGB(84,84,84) | |
102 | Toggle.TextSize=16 | |
103 | Toggle.Text='-'; | |
104 | Toggle.Font=Enum.Font.SciFi; | |
105 | Toggle.Parent=Frame; | |
106 | local Y=0; | |
107 | local Frame2=Instance.new'Frame'; | |
108 | Frame2.Name=TabName..'Dropdown'; | |
109 | Frame2.BackgroundColor3=Color3.new(0,0,0); | |
110 | Frame2.BackgroundTransparency=0.5; | |
111 | Frame2.BorderSizePixel=0; | |
112 | Frame2.Position=UDim2.new(0,0,0,30); | |
113 | Frame2.Size=UDim2.new(0,250,0,0); | |
114 | Frame2.ClipsDescendants=true; | |
115 | Frame2.Parent=Frame; | |
116 | ||
117 | Tabs[TabName].OpenClose=function() | |
118 | if Frame2.Size==UDim2.new(0,250,0,Y)or Frame2.Size==UDim2.new(0,250,0,0)then | |
119 | Frame2:TweenSize(Toggle.Text=='+' and UDim2.new(0,250,0,Y)or UDim2.new(0,250,0,0), 'Out', 'Quad', 1/3); | |
120 | Toggle.Text=Toggle.Text=='-' and '+' or '-' | |
121 | end; | |
122 | end;Toggle.MouseButton1Click:Connect(Tabs[TabName].OpenClose); | |
123 | Tabs[TabName].AddToggle=function(ToggleName,Optional) | |
124 | if Tabs[TabName].ToggleName==nil then | |
125 | local Button=Instance.new'TextButton'; | |
126 | Button.Name='TOGGLE_'..ToggleName | |
127 | Button.BackgroundTransparency=1; | |
128 | Button.BorderSizePixel=0; | |
129 | Button.Position=UDim2.new(0,5,0,Y); | |
130 | Y=Y+25; | |
131 | Frame2.Size=Frame2.Size+UDim2.new(0,0,0,25); | |
132 | Button.Size=UDim2.new(0,245,0,25); | |
133 | Button.Text='> '..ToggleName; | |
134 | Button.TextColor3=Color3.new(1,1,1); | |
135 | Button.TextSize=16; | |
136 | Button.Font=Enum.Font.SourceSansSemibold | |
137 | Button.TextXAlignment=Enum.TextXAlignment.Left; | |
138 | Button.Parent=Frame2; | |
139 | Toggles[ToggleName]=false; | |
140 | ToggleSettings[ToggleName]=Optional; | |
141 | Button.MouseButton1Click:Connect(function() | |
142 | Toggles[ToggleName]=not Toggles[ToggleName]; | |
143 | UpdateArrayList(); | |
144 | end); | |
145 | return Button; | |
146 | end; | |
147 | end; | |
148 | ||
149 | ||
150 | X=X+300 | |
151 | end; | |
152 | ||
153 | game:GetService'UserInputService'.InputBegan:Connect(function(IO,GPE) | |
154 | if IO.KeyCode==Enum.KeyCode[Settings.ToggleKey]then | |
155 | Main.Visible=not Main.Visible; | |
156 | end; | |
157 | end); | |
158 | ||
159 | -------------------------------------------------------------- | |
160 | ||
161 | CreateTab'Tools'; | |
162 | Tabs.Tools.AddToggle'GunMod'; | |
163 | Tabs.Tools.AddToggle'InstaKill'; | |
164 | Tabs.Tools.AddToggle'NadeMod'; | |
165 | CreateTab'Render'; | |
166 | Tabs.Render.AddToggle'GlobalESP'; | |
167 | CreateTab'Utilities'; | |
168 | Tabs.Utilities.AddToggle'Credits'; | |
169 | Tabs.Utilities.AddToggle'UnlockAll'; | |
170 | Tabs.Utilities.AddToggle'NoFall'; | |
171 | ||
172 | ||
173 | local P = game:GetService'Players'.LocalPlayer; | |
174 | local Misc = game:GetService'ReplicatedStorage'.Misc; | |
175 | local PGUI = P.PlayerGui; | |
176 | local ChatGui = PGUI.ChatGame; | |
177 | ||
178 | local C = Color3.fromRGB(100, 100, 255); | |
179 | local CurrentTexts={}; | |
180 | ||
181 | spawn(function() | |
182 | repeat wait(); | |
183 | for H = 0, 1, 1/300 do wait(); | |
184 | for i, v in next, CurrentTexts do | |
185 | if v and v.Visible then | |
186 | v.TextColor3 = Color3.fromHSV(H, 1, 1); | |
187 | else | |
188 | table.remove(CurrentTexts, i); | |
189 | end; | |
190 | end; | |
191 | end; | |
192 | until nil; | |
193 | end); | |
194 | ||
195 | local function Console(String, Color) | |
196 | local Msg = Misc.Msger; | |
197 | local Message = Msg:Clone(); | |
198 | local MTag = Message.Tag; | |
199 | local Offset = 5; | |
200 | Message.Parent = ChatGui.GlobalChat; | |
201 | Message.Text = '[VIRGO]: '; | |
202 | table.insert(CurrentTexts, Message); | |
203 | Message.Msg.Text = String; | |
204 | Message.Msg.Position = UDim2.new(0, Message.TextBounds.x, 0, 0); | |
205 | if Color then | |
206 | Message.Msg.TextColor3 = Color; | |
207 | end; | |
208 | Message.Visible = true; | |
209 | Message.Msg.Visible = true; | |
210 | end; | |
211 | ||
212 | local secret953 = secret953 or debug.getupvalues; | |
213 | local secret500 = secret500 or debug.setupvalue; | |
214 | local getreg = getreg or debug.getregistry; | |
215 | ||
216 | local ScriptSettings = { | |
217 | ['firerate'] = 1500 | |
218 | }; | |
219 | local InitTime = tick(); | |
220 | ||
221 | local Client; | |
222 | local Functions; | |
223 | local Bypassed; | |
224 | ||
225 | do | |
226 | for i, v in next, getreg() do | |
227 | if type(v) == 'function' then | |
228 | local Upvalues = secret953(v); | |
229 | if not Client and Upvalues and Upvalues.network and Upvalues.char and Upvalues.gamelogic then | |
230 | Client = Upvalues; | |
231 | elseif not Bypassed and Upvalues and Upvalues.netkick then | |
232 | secret500(v, 'netkick', function() end); | |
233 | Bypassed = true; | |
234 | end; | |
235 | end; | |
236 | end; | |
237 | end; | |
238 | ||
239 | if Client then | |
240 | Console('[1/3] Hooked client' .. (Bypassed and ' and bypassed PF\'s anticheat.' or ' but failed to bypass PF\'s anticheat.')); | |
241 | else | |
242 | Console'[1/3] Could not access Framework.'; | |
243 | error'Stop using skidsploits without the debug library.'; | |
244 | end; | |
245 | ||
246 | local BlacklistedArguments = { | |
247 | ['closeconnection'] = true, | |
248 | ['logmessage'] = true | |
249 | }; | |
250 | ||
251 | do | |
252 | if Synapse then | |
253 | Console'[2/3] SIP detected, no need to bypass contextlevel check.'; | |
254 | Console'(Note: If you get a \'nice network\' ban it\'s not my fault, it\'s 3dsbob\'s. Complain to him not me.)'; | |
255 | elseif not secret500(Client.network.send, 'settings', error) then | |
256 | Console'[2/3] Failed to bypass contextlevel check, aborting for security purposes.'; | |
257 | P:Kick'Rejoin! (If this kick hadn\'t have happened you would have been banned so be grateful. -Classy.)'; | |
258 | else | |
259 | Console'[2/3] Bypassed contextlevel check.'; | |
260 | end; | |
261 | ||
262 | local Upvalues = secret953(Client.network.add); | |
263 | if Upvalues and Upvalues.funcs then | |
264 | Functions = Upvalues.funcs; | |
265 | Console'[3/3] Got functions.'; | |
266 | else | |
267 | Console'[3/3] Failed to init some dependencies, some features may not work as intended.'; | |
268 | end; | |
269 | end; | |
270 | ||
271 | local Succ, NoSucc = pcall(function() | |
272 | ||
273 | local Network = Client.network; | |
274 | local Char = Client.char; | |
275 | local GameLogic = Client.gamelogic; | |
276 | ||
277 | local Send = Network.send; | |
278 | local G = Char.loadgun; | |
279 | local GR = Char.loadgrenade; | |
280 | ||
281 | local V = Vector3.new(); | |
282 | ||
283 | Network.send = function(self, ...) | |
284 | local Args = {...}; | |
285 | if #Args > 0 then | |
286 | local Name = Args[1]; | |
287 | -- if not Name:find'ping' and not checkcaller'' then for i, v in next, Args do warn(i, v, typeof(v)) end end | |
288 | if Name == 'changehealthx' then | |
289 | if #Args > 4 and type(Args[5]) == 'string' and Args[5] == 'Falling' and Toggles.NoFall then | |
290 | Console'Nofall! Watch your legs next time :)'; | |
291 | return; | |
292 | end | |
293 | elseif Toggles.InstaKill and Name == 'bullethit' then | |
294 | if type(Args[3]) == 'number' and Args[3] > -100 then | |
295 | Args[3] = -100; | |
296 | return Send(self, unpack(Args)); | |
297 | end; | |
298 | elseif Name == 'logmessage' or Name == 'deploycheck' then return | |
299 | end; | |
300 | end; | |
301 | return Send(self, ...); | |
302 | end; | |
303 | ||
304 | ||
305 | -- Dysekts kewl function | |
306 | Char.loadgun = function(...) -- TODO: implement a self arg to make things look more tidy. | |
307 | if Toggles.GunMod then | |
308 | local Args = {...}; if #Args == 0 then return G(...); end; | |
309 | local GunData = Args[2]; | |
310 | Console(string.format('Modding %s (%s)', GunData.name, GunData.type)); | |
311 | GunData.hideflash = true; | |
312 | GunData.hideminimap = true; | |
313 | GunData.hiderange = 0; | |
314 | GunData.sparerounds = 9999; | |
315 | GunData.magsize = 9999; | |
316 | GunData.camkickmin = V; | |
317 | GunData.camkickmax = V; | |
318 | GunData.aimcamkickmin = V; | |
319 | GunData.aimcamkickmax = V; | |
320 | GunData.aimtranskickmin = V; | |
321 | GunData.aimtranskickmax = V; | |
322 | GunData.transkickmin = V; | |
323 | GunData.transkickmax = V; | |
324 | GunData.rotkickmin = V; | |
325 | GunData.rotkickmax = V; | |
326 | GunData.aimrotkickmin = V; | |
327 | GunData.aimrotkickmax = V; | |
328 | GunData.hipfirespread = 0; | |
329 | GunData.hipfirestability = 0; | |
330 | GunData.swayamp = 0; | |
331 | GunData.swayspeed = 0; | |
332 | GunData.steadyspeed = 0; | |
333 | GunData.breathspeed = 0; | |
334 | GunData.hipfirespreadrecover = 100; | |
335 | GunData.hipfirespreadrecover = 100; | |
336 | GunData.bulletspeed = 5000; | |
337 | GunData.crosssize = 2; | |
338 | GunData.crossexpansion = 0; | |
339 | GunData.firerate = ScriptSettings['firerate']; | |
340 | GunData.variablefirerate = false; | |
341 | GunData.range0 = 1000; | |
342 | GunData.range1 = 1000; | |
343 | GunData.penetrationdepth = 100; | |
344 | GunData.firemodes = {true, 3, 1}; | |
345 | GunData.requirechamber = false; | |
346 | GunData.animations.onfire = {}; | |
347 | Args[2] = GunData; | |
348 | return G(unpack(Args)); | |
349 | end; | |
350 | return G(...); | |
351 | end; | |
352 | ||
353 | -- Dysekts kewl function 2.0 | |
354 | Char.loadgrenade = function(...) -- TODO: implement a self arg to make things look more tidy. | |
355 | if Toggles.NadeMod then | |
356 | Console'Throwing grenade(s).'; | |
357 | GameLogic.gammo = math.huge; | |
358 | local Args = {...}; | |
359 | local Grenade = Args[2]; | |
360 | Grenade.animations.pull = {}; | |
361 | Grenade.animations.throw = {}; | |
362 | Args[2] = Grenade; | |
363 | Args[3][Grenade.mainpart].CFrame = P.Character.HumanoidRootPart.CFrame * CFrame.new(2,0,0); | |
364 | local ThrownGrenade = GR(unpack(Args)); | |
365 | ThrownGrenade:pull(); | |
366 | ThrownGrenade:throw(); | |
367 | Char.grenadehold = false; | |
368 | repeat wait(1000) until nil; | |
369 | return; | |
370 | end; | |
371 | return GR(...); | |
372 | end; | |
373 | ||
374 | local function ESP() | |
375 | local Spotted = {}; | |
376 | for i, v in ipairs(game:GetService'Players':GetPlayers'') do | |
377 | if v.TeamColor ~= P.TeamColor then | |
378 | table.insert(Spotted, v); | |
379 | end; | |
380 | end; | |
381 | Network:send('spotplayers', Spotted); | |
382 | end; | |
383 | ||
384 | spawn(function() | |
385 | repeat wait(1); | |
386 | if Toggles.GlobalESP then | |
387 | ESP(); | |
388 | end; | |
389 | until nil; | |
390 | end); | |
391 | ||
392 | spawn(function() | |
393 | repeat wait(.5); | |
394 | if Toggles.Credits then | |
395 | spawn(function() | |
396 | Toggles.Credits = false; | |
397 | UpdateArrayList(); | |
398 | Console('Giving infinite credits, these cannot be used to buy cases/keys.', C); | |
399 | Functions['updatemoney'](math.huge); | |
400 | end); | |
401 | end; | |
402 | ||
403 | if Toggles.UnlockAll then | |
404 | spawn(function() | |
405 | Toggles.UnlockAll=false; | |
406 | UpdateArrayList(); | |
407 | Console('Unlocking weapons and attachments.', C); | |
408 | local Attachments = require(game:GetService'ReplicatedStorage'.AttachmentModules.Info); | |
409 | local Guns = game:GetService'ReplicatedStorage'.GunModules:GetChildren(); | |
410 | for i, v in next, Attachments do | |
411 | v.unlockkills = 1000; | |
412 | end; | |
413 | for i, v in next, Guns do | |
414 | if v.ClassName:find'Module' then | |
415 | local GunModule = require(v); | |
416 | GunModule.unlockrank = 120; | |
417 | end; | |
418 | end; | |
419 | end); | |
420 | end; | |
421 | ||
422 | until nil; | |
423 | end); | |
424 | ||
425 | end); | |
426 | ||
427 | if not Succ then | |
428 | Console(NoSucc); | |
429 | end; | |
430 | Console("You're welcome for fixing Virgo's load UP. :)") | |
431 | Console(string.format('Fully loaded VIRGO! Init time: %s seconds', tostring(tick() - InitTime))); |