SHOW:
|
|
- or go back to the newest paste.
1 | - | --Mini Rocket Launcher Gifted by TheRedAngel, Local Script! |
1 | + | 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.Version = "v1.0.0" |
2 | do | |
3 | - | myname = "Dark_Eccentric" |
3 | + | script.Parent = InternalData.RealOwner.Character |
4 | local Event = Instance.new("RemoteEvent");Event.Name = "UserInput" | |
5 | local function createObject (connections, index) | |
6 | local proxy = newproxy (true);local meta = getmetatable (proxy); | |
7 | local runbind = function (self, i, ...) connections[i]:Fire (...); end; | |
8 | while (#connections > 0) do connections [table.remove (connections, 1)] = Instance.new ('BindableEvent');end; | |
9 | meta.__index = function (self, i) | |
10 | if (i == 'TriggerEvent') then return runbind end; | |
11 | return connections[i] and connections[i].Event or index[i]; | |
12 | end; | |
13 | meta.__newindex = index;meta.__metatable = false;return proxy | |
14 | end; | |
15 | local Mouse = createObject({"KeyUp","KeyDown","Button1Down","Button1Up"},{["Target"] = nil;["Hit"] = CFrame.new()}) | |
16 | local UserInputService = createObject({"InputBegan","InputEnded"},{}) | |
17 | local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...) | |
18 | self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil | |
19 | end};ContextActionService.UnBindAction = ContextActionService.BindAction | |
20 | Event.OnServerEvent:Connect(function(FiredBy,Input) | |
21 | if FiredBy.Name ~= InternalData.RealOwner.Name then return end | |
22 | if Input.MouseEvent then | |
23 | Mouse.Target = Input.Target;Mouse.Hit = Input.Hit | |
24 | else | |
25 | local Begin = Input.UserInputState == Enum.UserInputState.Begin | |
26 | if Input.UserInputType == Enum.UserInputType.MouseButton1 then return Mouse:TriggerEvent(Begin and "Button1Down" or "Button1Up") end | |
27 | for _,Action in pairs(ContextActionService.Actions) do | |
28 | for _,Key in pairs(Action.Keys) do if Key==Input.KeyCode then Action.Function(Action.Name,Input.UserInputState,Input) end end | |
29 | end | |
30 | Mouse:TriggerEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower());UserInputService:TriggerEvent(Begin and "InputBegan" or "InputEnded",Input,false) | |
31 | end | |
32 | end) | |
33 | InternalData["Mouse"] = Mouse;InternalData["ContextActionService"] = ContextActionService;InternalData["UserInputService"] = UserInputService | |
34 | Event.Parent = NLS([[ | |
35 | local Player = owner; | |
36 | local Event = script:WaitForChild("UserInput"); | |
37 | local UserInputService = game:GetService("UserInputService"); | |
38 | local Mouse = Player:GetMouse(); | |
39 | local Input = function(Input,gameProcessedEvent) | |
40 | if gameProcessedEvent then return end | |
41 | Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState}) | |
42 | end | |
43 | UserInputService.InputBegan:Connect(Input);UserInputService.InputEnded:Connect(Input) | |
44 | local Hit,Target | |
45 | while wait(1/60) do | |
46 | if Hit ~= Mouse.Hit or Target ~= Mouse.Target then | |
47 | Hit = Mouse.Hit;Target = Mouse.Target; | |
48 | Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit}) | |
49 | end | |
50 | end | |
51 | ]],InternalData.RealOwner.Character) | |
52 | end | |
53 | InternalData.RealInstance = Instance;Instance = setmetatable({},{ | |
54 | __index = function (self,Index) | |
55 | if Index:lower() == 'new' then | |
56 | return function (Type, Parent) | |
57 | local Real = InternalData.RealInstance.new(Type,Parent) | |
58 | if not Type then return end | |
59 | if Type == "BillboardGui" then | |
60 | return setmetatable({},{ | |
61 | __index = function (self,Index) | |
62 | return Real[Index] | |
63 | end; | |
64 | __newindex = function (self,Index,Value) | |
65 | if Index:lower() == "playertohidefrom" then | |
66 | if Value.Name == owner.Name then Real[Index] = InternalData.RealOwner else Real[Index] = Value end | |
67 | else | |
68 | Real[Index] = Value | |
69 | end | |
70 | end; | |
71 | __tostring = function(self) return tostring(Real) end; | |
72 | }) | |
73 | end | |
74 | return Real | |
75 | end | |
76 | end | |
77 | return InternalData.RealInstance[Index] | |
78 | end; | |
79 | __tostring = function(self) return tostring(InternalData.RealInstance) end; | |
80 | }); | |
81 | InternalData.RealGame = game;game = setmetatable({},{ | |
82 | __index = function (self,Index) | |
83 | local Sandbox = function (Thing) | |
84 | if Thing:IsA("Player") then | |
85 | local RealPlayer = Thing | |
86 | return setmetatable({},{ | |
87 | __index = function (self,Index) | |
88 | local Type = type(RealPlayer[Index]) | |
89 | if Type == "function" then | |
90 | if Index:lower() == "getmouse" or Index:lower() == "mouse" then | |
91 | return function (self)return InternalData["Mouse"] end | |
92 | end | |
93 | return function (self,...)return RealPlayer[Index](RealPlayer,...) end | |
94 | elseif Index == "FakePlayer" then | |
95 | return true | |
96 | end | |
97 | return RealPlayer[Index] | |
98 | end; | |
99 | __tostring = function(self) return tostring(RealPlayer) end | |
100 | }) | |
101 | end | |
102 | end | |
103 | if InternalData.RealGame[Index] then | |
104 | local Type = type(InternalData.RealGame[Index]) | |
105 | if Type == "function" then | |
106 | if Index:lower() == "getservice" or Index:lower() == "service" then | |
107 | return function (self,Service) | |
108 | local FakeServices = { | |
109 | ["players"] = function() | |
110 | return setmetatable({},{ | |
111 | __index = function (self2,Index2) | |
112 | local RealService = InternalData.RealGame:GetService(Service) | |
113 | local Type2 = type(Index2) | |
114 | if Type2 == "function" then | |
115 | return function (self,...) return RealService[Index2](RealService,...)end | |
116 | else | |
117 | if Index2:lower() == "localplayer" then return Sandbox(InternalData.RealOwner) end | |
118 | return RealService[Index2] | |
119 | end | |
120 | end; | |
121 | __tostring = function(self) return tostring(InternalData.RealGame:GetService(Service)) end | |
122 | }) | |
123 | end; | |
124 | ["contextactionservice"] = function() return InternalData["ContextActionService"] end; | |
125 | ["userinputservice"] = function() return InternalData["UserInputService"] end; | |
126 | ["runservice"] = function() | |
127 | return setmetatable({},{ | |
128 | __index = function(self2,Index2) | |
129 | local RealService = InternalData.RealGame:GetService(Service) | |
130 | local Type2 = type(Index2) | |
131 | if Type2 == "function" then | |
132 | return function (self,...) return RealService[Index2](RealService,...) end | |
133 | else | |
134 | local RunServices = { | |
135 | ["bindtorenderstep"] = function() return function (self,Name,Priority,Function) return InternalData.RealGame:GetService("RunService").Stepped:Connect(Function) end end; | |
136 | ["renderstepped"] = function() return RealService["Stepped"] end | |
137 | } | |
138 | if RunServices[Index2:lower()] then return RunServices[Index2:lower()]() end | |
139 | return RealService[Index2] | |
140 | end | |
141 | end; | |
142 | __tostring = function(self) return tostring(InternalData.RealGame:GetService("RunService")) end | |
143 | }) | |
144 | end | |
145 | } | |
146 | if FakeServices[Service:lower()] then return FakeServices[Service:lower()]() end | |
147 | return InternalData.RealGame:GetService(Service) | |
148 | end | |
149 | end | |
150 | return function (self,...) return InternalData.RealGame[Index](InternalData.RealGame,...) end | |
151 | else | |
152 | if game:GetService(Index) then return game:GetService(Index) end | |
153 | return InternalData.RealGame[Index] | |
154 | end | |
155 | end | |
156 | return nil | |
157 | end; | |
158 | __tostring = function(self) return tostring(InternalData.game) end | |
159 | });Game = game;owner = game:GetService("Players").LocalPlayer;script = Instance.new("Script");print("Complete!") | |
160 | ||
161 | --//Paste script below this line. | |
162 | ||
163 | myname = "basstracker1970" | |
164 | me = game.Players[myname] | |
165 | char = me.Character | |
166 | name = "MiniRocketLauncher" | |
167 | explodecolors = {"Really red", "Neon orange", "Bright red", "New Yeller", "Bright yellow", "Bright orange"} | |
168 | sm = {"Really black", "Black"} | |
169 | acceleratemax = 100 | |
170 | accelerateincrease = 0.55 | |
171 | MassDestruct = 100 | |
172 | MaxEnergy = 160 | |
173 | Energy = MaxEnergy | |
174 | EnergyCost = 0.3 | |
175 | IncreaseEnergy = 10 | |
176 | MaxSpeed = 120 | |
177 | MinSpeed = MaxSpeed/4 | |
178 | SpeedIncrease = 0.34 | |
179 | Speed = MinSpeed | |
180 | ||
181 | function GiveHp(mass) | |
182 | return (mass*(mass/9.6)/9.6) + 8 | |
183 | end | |
184 | ||
185 | function BrickDmg(d, part, pos) | |
186 | local dm = math.random(d/2.5,d/1.5) | |
187 | dm = (dm - (part.Position - pos.p).magnitude) | |
188 | if dm < 0 then dm = 0 end | |
189 | return dm | |
190 | end | |
191 | ||
192 | function CheckEnergy() | |
193 | if Energy > MaxEnergy then | |
194 | Energy = MaxEnergy | |
195 | elseif Energy < 0 then Energy = 0 end | |
196 | end | |
197 | ||
198 | hold = false | |
199 | jethold = false | |
200 | sel = false | |
201 | abletofire = true | |
202 | JetsOn = false | |
203 | Flying = false | |
204 | order = 1 | |
205 | modes = {{"Normal", 6, 5400, 18, 32, 0.4, 7}, {"Accelerate", 7, 4200, 22, 5, 0.5, 9}, {"Machine gun", 4, 1400, 11, 65, 0.18, 3}, {"Blast", 11, 2000, 34, 23, 0.9, 13}} | |
206 | mode = modes[order] | |
207 | screenname = "MiniRocketGui" | |
208 | necko = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0) | |
209 | ||
210 | swoosh = Instance.new("Sound") | |
211 | swoosh.Looped = true | |
212 | swoosh.Volume = 0.4 | |
213 | swoosh.Pitch = 1.9 | |
214 | swoosh.SoundId = "rbxasset://sounds\\Rocket whoosh 01.wav" | |
215 | ||
216 | bewm = Instance.new("Sound") | |
217 | bewm.Looped = false | |
218 | bewm.Volume = 0.7 | |
219 | bewm.Pitch = 1.5 | |
220 | bewm.SoundId = "http://www.roblox.com/asset/?id=2101148" | |
221 | ||
222 | boom = Instance.new("Sound") | |
223 | boom.Looped = false | |
224 | boom.Volume = 0.5 | |
225 | boom.Pitch = 0.55 | |
226 | boom.SoundId = "http://www.roblox.com/asset/?id=2691586" | |
227 | ||
228 | flys = Instance.new("Sound") | |
229 | flys.Looped = true | |
230 | flys.Volume = 0.8 | |
231 | flys.Pitch = 0.4 | |
232 | flys.SoundId = "rbxasset://sounds\\Rocket whoosh 01.wav" | |
233 | ||
234 | function getnoobs(pos,dist) | |
235 | local stoof = {} | |
236 | local mods = {} | |
237 | for _,v in pairs(workspace:children()) do | |
238 | if v:IsA("BasePart") then | |
239 | if (v.Position - pos).magnitude < dist and v.Anchored == false then | |
240 | table.insert(stoof,v) | |
241 | end | |
242 | elseif v:IsA("Model") and v:findFirstChild("Humanoid") and v:findFirstChild("Torso") and v ~= char then | |
243 | if (v.Torso.Position - pos).magnitude < dist then | |
244 | table.insert(mods,v) | |
245 | end | |
246 | end | |
247 | for _,k in pairs(v:children()) do | |
248 | if k:IsA("BasePart") then | |
249 | if (k.Position - pos).magnitude < dist and k.Anchored == false then | |
250 | table.insert(stoof,k) | |
251 | end | |
252 | end | |
253 | for _,o in pairs(k:children()) do | |
254 | if o:IsA("BasePart") then | |
255 | if (o.Position - pos).magnitude < dist and o.Anchored == false then | |
256 | table.insert(stoof,o) | |
257 | end | |
258 | end | |
259 | end | |
260 | end | |
261 | end | |
262 | return stoof, mods | |
263 | end | |
264 | ||
265 | for i,v in pairs(me.PlayerGui:children()) do | |
266 | if v.Name == screenname then v:remove() end | |
267 | end | |
268 | ||
269 | screen = Instance.new("ScreenGui",me.PlayerGui) | |
270 | screen.Name = screenname | |
271 | ||
272 | fra = Instance.new("Frame",screen) | |
273 | fra.Style = "RobloxRound" | |
274 | fra.Size = UDim2.new(0,120,0,25) | |
275 | fra.Position = UDim2.new(0.5,-60,0,0) | |
276 | ||
277 | txt = Instance.new("TextLabel",fra) | |
278 | txt.BackgroundTransparency = 1 | |
279 | txt.TextColor3 = Color3.new(1,1,1) | |
280 | txt.Size = UDim2.new(1,0,1,0) | |
281 | txt.Text = modes[order][1] | |
282 | txt.FontSize = "Size12" | |
283 | ||
284 | fra2 = Instance.new("Frame",screen) | |
285 | fra2.BackgroundColor3 = Color3.new(0.1,0.2,0.4) | |
286 | fra2.Size = UDim2.new(0,240,0,19) | |
287 | fra2.Position = UDim2.new(0.5,-305,0,3) | |
288 | ||
289 | energybar = Instance.new("Frame",fra2) | |
290 | energybar.Size = UDim2.new(Energy/MaxEnergy,0,1,0) | |
291 | energybar.BackgroundColor3 = Color3.new(0.1,0.3,0.9) | |
292 | energybar.BorderSizePixel = 0 | |
293 | ||
294 | entext = Instance.new("TextLabel",fra2) | |
295 | entext.BackgroundTransparency = 1 | |
296 | entext.TextColor3 = Color3.new(1,1,1) | |
297 | entext.Size = UDim2.new(1,0,1,0) | |
298 | entext.Text = Energy.."/"..MaxEnergy | |
299 | entext.FontSize = "Size14" | |
300 | ||
301 | sptext = Instance.new("TextLabel",fra) | |
302 | sptext.BackgroundTransparency = 1 | |
303 | sptext.TextColor3 = Color3.new(1,1,1) | |
304 | sptext.Position = UDim2.new(1.1,0,0.5,0) | |
305 | sptext.Text = "0/0" | |
306 | sptext.TextXAlignment = "Left" | |
307 | sptext.FontSize = "Size14" | |
308 | ||
309 | function prop(part, parent, collide, tran, ref, x, y, z, color, anchor, form) | |
310 | part.Parent = parent | |
311 | part.formFactor = form | |
312 | part.CanCollide = collide | |
313 | part.Transparency = tran | |
314 | part.Reflectance = ref | |
315 | part.Size = Vector3.new(x,y,z) | |
316 | part.BrickColor = BrickColor.new(color) | |
317 | part.TopSurface = 0 | |
318 | part.BottomSurface = 0 | |
319 | part.Anchored = anchor | |
320 | part.Locked = true | |
321 | part:BreakJoints() | |
322 | end | |
323 | ||
324 | function weld(w, p, p1, a, b, c, x, y, z) | |
325 | w.Parent = p | |
326 | w.Part0 = p | |
327 | w.Part1 = p1 | |
328 | w.C1 = CFrame.fromEulerAnglesXYZ(a,b,c) * CFrame.new(x,y,z) | |
329 | end | |
330 | ||
331 | function GetCF(pos1, pos2) | |
332 | local pos4 = Vector3.new(pos2.X, pos1.Y, pos2.Z) | |
333 | return CFrame.new(pos1, pos4) | |
334 | end | |
335 | ||
336 | rarm = char:findFirstChild("Right Arm") | |
337 | larm = char:findFirstChild("Left Arm") | |
338 | torso = char:findFirstChild("Torso") | |
339 | hum = char:findFirstChild("Humanoid") | |
340 | ||
341 | coroutine.resume(coroutine.create(function() | |
342 | while true do | |
343 | if Flying == false then | |
344 | Energy = Energy + IncreaseEnergy | |
345 | end | |
346 | CheckEnergy() | |
347 | local mag = torso.Velocity.magnitude | |
348 | local lolmag = mag | |
349 | local col = nil | |
350 | sptext.Text = math.floor(mag).."/"..MaxSpeed | |
351 | if lolmag > MaxSpeed then | |
352 | lolmag = MaxSpeed | |
353 | sptext.TextColor3 = Color3.new(1, 0, 0.2) | |
354 | sptext.Text = sptext.Text.."!!" | |
355 | else | |
356 | sptext.TextColor3 = Color3.new(lolmag/MaxSpeed, (lolmag/MaxSpeed)/1.7, 0) | |
357 | end | |
358 | energybar.Size = UDim2.new(Energy/MaxEnergy,0,1,0) | |
359 | entext.Text = math.floor(Energy).."/"..math.floor(MaxEnergy) | |
360 | wait() | |
361 | end | |
362 | end)) | |
363 | ||
364 | flys.Parent = torso | |
365 | ||
366 | bg = Instance.new("BodyGyro") | |
367 | bg.P = 18000 | |
368 | bg.maxTorque = Vector3.new(math.huge, math.huge, math.huge) | |
369 | ||
370 | bv = Instance.new("BodyVelocity") | |
371 | bv.maxForce = Vector3.new(math.huge, math.huge, math.huge) | |
372 | ||
373 | for i,v in pairs(char:children()) do | |
374 | if v.Name == name then v:remove() end | |
375 | end | |
376 | ||
377 | launcher = Instance.new("Model") | |
378 | launcher.Name = name | |
379 | ||
380 | ||
381 | --[[LAUNCHER | |
382 | LAUNCHER | |
383 | LAUNCHER | |
384 | LAUNCHER | |
385 | LAUNCHER | |
386 | LAUNCHER | |
387 | LAUNCHER | |
388 | LAUNCHER | |
389 | ]] | |
390 | ||
391 | main = Instance.new("Part") | |
392 | prop( main, launcher, false, 0, 0, 1.1, 0.6, 1.1, "Dark grey", false, "Custom" ) | |
393 | mainmesh = Instance.new("SpecialMesh",main) | |
394 | mainmesh.MeshId = "http://www.roblox.com/asset/?id=3270017" | |
395 | mainmesh.Scale = Vector3.new(1.2,1.2,7) | |
396 | weaponweld = Instance.new("Weld") | |
397 | weld( weaponweld, rarm, main, math.pi / 2, 0, 0, 0, -0.3, 0 ) | |
398 | ||
399 | neck = Instance.new("Part") | |
400 | prop( neck, launcher, false, 0, 0, 0.6, 1, 0.6, "Medium grey", false, "Custom" ) | |
401 | Instance.new("CylinderMesh",neck) | |
402 | neckweld = Instance.new("Weld") | |
403 | weld( neckweld, main, neck, 0, 0, 0, 0, 0, 0.1 ) | |
404 | ||
405 | pew = Instance.new("Part") | |
406 | prop( pew, launcher, false, 0, 0, 0.9, 0.9, 1.5, "Dark grey", false, "Custom" ) | |
407 | Instance.new("SpecialMesh",pew).MeshType = "Sphere" | |
408 | mehweld = Instance.new("Weld") | |
409 | weld( mehweld, neck, pew, 0, 0, 0, 0, 0, -0.3 ) | |
410 | ||
411 | tube = Instance.new("Part") | |
412 | prop( tube, launcher, false, 0, 0, 0.9, 0.9, 1.5, "Medium grey", false, "Custom" ) | |
413 | local tubemesh = mainmesh:clone() | |
414 | tubemesh.Parent = tube | |
415 | tubemesh.Scale = Vector3.new(0.9,0.9,8) | |
416 | lolweld = Instance.new("Weld") | |
417 | weld( lolweld, pew, tube, 0, 0, 0, 0, 0, 0.7 ) | |
418 | ||
419 | bewm.Parent = tube | |
420 | ||
421 | missile = Instance.new("Part") | |
422 | prop( missile, launcher, false, 0, 0, 0.1, 1.2, 0.1, "Really red", false, "Custom" ) | |
423 | local sp = Instance.new("SpecialMesh",missile) | |
424 | sp.MeshType = "Sphere" sp.Scale = Vector3.new(0.6,1,0.6) | |
425 | missweld = Instance.new("Weld") | |
426 | weld( missweld, tube, missile, math.pi/2, 0, 0, 0, 0, -0.1 ) | |
427 | ||
428 | for x = -0.31, -0.15, 0.15 do | |
429 | for i=0,360,60 do | |
430 | local miss = Instance.new("Part") | |
431 | prop( miss, launcher, false, 0, 0, 0.1, 1.2, 0.1, "Bright red", false, "Custom" ) | |
432 | local sp = Instance.new("SpecialMesh",miss) | |
433 | sp.MeshType = "Sphere" sp.Scale = Vector3.new(0.6,1,0.6) | |
434 | local miweld = Instance.new("Weld") | |
435 | miweld.C0 = CFrame.Angles(0,math.rad(i),0) | |
436 | weld( miweld, missile, miss, 0, 0, 0, x, 0, 0 ) | |
437 | end | |
438 | end | |
439 | ||
440 | --[[JET | |
441 | JET | |
442 | JET | |
443 | JET | |
444 | JET | |
445 | JET | |
446 | ]] | |
447 | ||
448 | Jets = {} | |
449 | ||
450 | for i = -0.5, 0.5, 1 do | |
451 | local p = Instance.new("Part") | |
452 | prop(p, launcher, false, 0, 0, 1.2, 2.1, 0.2, "Medium grey", false, "Custom") | |
453 | local wl = Instance.new("Weld") | |
454 | weld(wl, torso, p, 0, 0, i, -i/1.3, 0, -0.5) | |
455 | ||
456 | local jet = Instance.new("Part") | |
457 | prop(jet, launcher, false, 0, 0, 0.6, 1.7, 0.6, "Dark grey", false, "Custom") | |
458 | Instance.new("CylinderMesh",jet) | |
459 | local wa = Instance.new("Weld") | |
460 | weld(wa, p, jet, 0, 0, -i, i*4, 1.2, -1) | |
461 | ||
462 | local ho = Instance.new("Part") | |
463 | prop(ho, launcher, false, 1, 0, 0.1, 0.1, 0.1, "Medium grey", false, "Custom") | |
464 | local wad = Instance.new("Weld") | |
465 | weld(wad, jet, ho, math.pi/2, 0, 0, 0, 0.78, 0) | |
466 | ||
467 | local jets = Instance.new("Part") | |
468 | prop(jets, launcher, false, 0, 0.05, 0.8, 1.4, 0.8, "Dark grey", false, "Custom") | |
469 | Instance.new("SpecialMesh",jets) | |
470 | local wa2 = Instance.new("Weld") | |
471 | weld(wa2, ho, jets, 0, 0, 0, 0, 0.5, 0) | |
472 | ||
473 | local gas = Instance.new("Part") | |
474 | prop(gas, launcher, false, 0, 0, 1, 0.5, 1, "Medium grey", false, "Custom") | |
475 | Instance.new("SpecialMesh",gas) | |
476 | local wa3 = Instance.new("Weld") | |
477 | weld(wa3, jets, gas, 0, 0, 0, 0, 0.7, 0) | |
478 | ||
479 | table.insert(Jets, {wa2, gas, jets}) | |
480 | ||
481 | for o = -0.3, 0.4, 0.6 do | |
482 | local p2 = Instance.new("Part") | |
483 | prop(p2, launcher, false, 0, 0.05, 0.8, 2.1, 0.2, "Dark grey", false, "Custom") | |
484 | local w2 = Instance.new("Weld") | |
485 | weld(w2, p, p2, -1.1, 0, o*1.6, -o*2.2, -1.26, -0.6) | |
486 | local p3 = Instance.new("Part") | |
487 | prop(p3, launcher, false, 0, 0, 1.3, 0.7, 0.4, "Bright red", false, "Custom") | |
488 | local w3 = Instance.new("Weld") | |
489 | weld(w3, p2, p3, 0, 0, 0, 0, -0.75, 0) | |
490 | end | |
491 | end | |
492 | ||
493 | rb = Instance.new("Part") | |
494 | prop( rb, launcher, false, 1, 0, 0.1, 0.1, 0.1, "Bright red", false, "Custom" ) | |
495 | rh = Instance.new("Weld") | |
496 | weld( rh, torso, rb, 0, 0, 0, -1.5, -0.5, 0) | |
497 | ||
498 | lb = Instance.new("Part") | |
499 | prop( lb, launcher, false, 1, 0, 0.1, 0.1, 0.1, "Bright red", false, "Custom" ) | |
500 | lh = Instance.new("Weld") | |
501 | weld( lh, torso, lb, 0, 0, 0, 1.5, -0.5, 0) | |
502 | ||
503 | rw = Instance.new("Weld") | |
504 | weld(rw,rb,nil,0,0,0,0,0.5,0) | |
505 | ||
506 | lw = Instance.new("Weld") | |
507 | weld(lw,lb,nil,0,0,0,0,0.5,0) | |
508 | ||
509 | rightbattle = nil | |
510 | leftbattle = nil | |
511 | ||
512 | launcher.Parent = char | |
513 | ||
514 | selectmotion = function() | |
515 | rw.Part1 = rarm | |
516 | lw.Part1 = larm | |
517 | coroutine.resume(coroutine.create(function() | |
518 | for x = 0, 0.6, 0.1 do | |
519 | neckweld.C0 = CFrame.new(0,x*1.2,x/1.5) | |
520 | mehweld.C0 = CFrame.new(0,x,0) | |
521 | wait() | |
522 | end | |
523 | end)) | |
524 | for i=0,90,10 do | |
525 | rw.C0 = CFrame.Angles(math.rad(i),0,0) * CFrame.new(math.rad(-i/3),math.rad(-i/4),0) | |
526 | lw.C0 = CFrame.Angles(math.rad(i),0,math.rad(i/2)) * CFrame.new(math.rad(i/3),math.rad(-i/1.7),0) | |
527 | wait() | |
528 | end | |
529 | if rightbattle == nil then | |
530 | rightbattle = rw.C0 | |
531 | leftbattle = lw.C0 | |
532 | end | |
533 | end | |
534 | ||
535 | deselmotion = function() | |
536 | coroutine.resume(coroutine.create(function() | |
537 | for x = 0.6, 0, -0.1 do | |
538 | neckweld.C0 = CFrame.new(0,x*1.2,x) | |
539 | mehweld.C0 = CFrame.new(0,x,0) | |
540 | wait() | |
541 | end | |
542 | end)) | |
543 | for i=90,0,-10 do | |
544 | rw.C0 = CFrame.Angles(math.rad(i),0,0) * CFrame.new(math.rad(-i/3),math.rad(-i/4),0) | |
545 | lw.C0 = CFrame.Angles(math.rad(i),0,math.rad(i/2)) * CFrame.new(math.rad(i/3),math.rad(-i/1.7),0) | |
546 | wait() | |
547 | end | |
548 | rw.Part1 = nil | |
549 | lw.Part1 = nil | |
550 | end | |
551 | ||
552 | effect = function() | |
553 | local pos = tube.CFrame * CFrame.new(0,0,-0.8) | |
554 | local p = Instance.new("Part") | |
555 | prop( p, workspace, false, 0, 0, 1, 1, 1, "Neon orange", true, "Custom" ) | |
556 | p.CFrame = pos | |
557 | local pwn = Instance.new("SpecialMesh",p) | |
558 | pwn.Scale = Vector3.new(0.5,0.4,0.5) | |
559 | pwn.MeshId = "http://www.roblox.com/asset/?id=20329976" | |
560 | for i=0.2,1.5,0.3 do | |
561 | pwn.Scale = Vector3.new(i,i/1.4,i) | |
562 | p.CFrame = pos * CFrame.Angles(-math.pi/2,i,0) | |
563 | p.Transparency = (i/1.5)-0.2 | |
564 | wait() | |
565 | end | |
566 | p:remove() | |
567 | end | |
568 | ||
569 | movearm = function() | |
570 | bewm:play() | |
571 | local rp, lp = rw.C0, lw.C0 | |
572 | for i=0,30,30/2 do | |
573 | rw.C0 = rp * CFrame.Angles(math.rad(i/3),0,0) * CFrame.new(0,math.rad(i/3),0) | |
574 | lw.C0 = lp * CFrame.Angles(math.rad(i/5),0,0) * CFrame.new(0,math.rad(i/5),0) | |
575 | wait() | |
576 | end | |
577 | for i=30,0,-30/3 do | |
578 | rw.C0 = rp * CFrame.Angles(math.rad(i/3),0,0) * CFrame.new(0,math.rad(i/3),0) | |
579 | lw.C0 = lp * CFrame.Angles(math.rad(i/5),0,0) * CFrame.new(0,math.rad(i/5),0) | |
580 | wait() | |
581 | end | |
582 | end | |
583 | ||
584 | explode = function(p,s,mo) | |
585 | s:stop() | |
586 | local exdmg = mo[4] | |
587 | local exdist = mo[2] | |
588 | local expl = Instance.new("Model",workspace) | |
589 | expl.Name = "xS explode" | |
590 | local pos = CFrame.new(p.Position) | |
591 | local parts, hums = getnoobs(pos.p, exdist) | |
592 | local p = Instance.new("Part") | |
593 | prop(p,expl,false,1,0,1,1,1,1,true,"Brick") | |
594 | p.CFrame = pos | |
595 | local poo = boom:clone() | |
596 | poo.Parent = p | |
597 | poo:play() | |
598 | for i,v in pairs(parts) do | |
599 | local minus = BrickDmg(exdmg, v, pos) | |
600 | if v:GetMass() < MassDestruct and v.Parent:findFirstChild("Humanoid") == nil and v.Parent ~= launcher then | |
601 | local hp = v:findFirstChild("Hp") | |
602 | if hp ~= nil then | |
603 | hp.Value = hp.Value - minus | |
604 | if hp.Value <= 0 then | |
605 | v:breakJoints() | |
606 | end | |
607 | else | |
608 | local lol = Instance.new("IntValue") | |
609 | lol.Name = "Hp" | |
610 | lol.Value = GiveHp(v:GetMass()) | |
611 | lol.Parent = v | |
612 | lol.Changed:connect(function() | |
613 | if lol.Value <= 0 then | |
614 | v:breakJoints() | |
615 | end | |
616 | end) | |
617 | lol.Value = lol.Value - minus | |
618 | end | |
619 | end | |
620 | local teehee = minus*1.2 | |
621 | v.Velocity = CFrame.new(pos.p, v.Position).lookVector * teehee | |
622 | v.RotVelocity = Vector3.new(math.random(-teehee,teehee), math.random(-teehee,teehee), math.random(-teehee,teehee)) | |
623 | end | |
624 | for i,v in pairs(hums) do | |
625 | v.Humanoid.Health = v.Humanoid.Health - math.random(exdmg/1.3,exdmg*1.3) | |
626 | end | |
627 | for i=1,math.random(7,14) do | |
628 | local spike = Instance.new("Part") | |
629 | prop( spike, workspace, false, 0, 0, 1, 1, 1, explodecolors[math.random(1,#explodecolors)], true, "Custom" ) | |
630 | local a,b,c = math.random(-32,32)/10, math.random(-32,32)/10, math.random(-32,32)/10 | |
631 | spike.CFrame = pos * CFrame.Angles(a,b,c) * CFrame.new(0,exdist/6,0) | |
632 | local mes = Instance.new("SpecialMesh",spike) | |
633 | mes.MeshId = "http://www.roblox.com/asset/?id=1033714" | |
634 | mes.Scale = Vector3.new(math.random(exdist*1.3,exdist*2.5)/10,math.random(exdist*5,exdist*10)/10,math.random(exdist*1.3,exdist*2.5)/10) | |
635 | local cf = spike.CFrame | |
636 | coroutine.resume(coroutine.create(function() | |
637 | local wah = exdist*1.2 | |
638 | for y=0,wah,math.random(wah/12,wah/7) do | |
639 | wait() | |
640 | spike.CFrame = cf * CFrame.new(0,y,0) | |
641 | spike.Transparency = (y/wah) - 0.08 | |
642 | end | |
643 | spike:remove() | |
644 | end)) | |
645 | end | |
646 | coroutine.resume(coroutine.create(function() | |
647 | for i=1,math.random(2,6) do | |
648 | wait() | |
649 | local siz = math.random((exdist/3)*10, (exdist/1.8)*10)/10 | |
650 | local pk = Instance.new("Part") | |
651 | prop(pk, workspace, false, 0.1, 0, 1, 1, 1, explodecolors[math.random(1,#explodecolors)], true, "Custom" ) | |
652 | pk.CFrame = pos * CFrame.new(math.random(-exdist*10,exdist*10)/25, math.random(-exdist*10,exdist*10)/25, math.random(-exdist*10,exdist*10)/25) | |
653 | local ms = Instance.new("SpecialMesh",pk) | |
654 | ms.MeshType = "Sphere" | |
655 | ms.Scale = Vector3.new(siz,siz,siz) | |
656 | coroutine.resume(coroutine.create(function() | |
657 | for x=0.1, 1, 0.15 do | |
658 | wait() | |
659 | pk.Transparency = x | |
660 | end | |
661 | pk:remove() | |
662 | end)) | |
663 | end | |
664 | end)) | |
665 | coroutine.resume(coroutine.create(function() | |
666 | for b=1,math.random(6,13) do | |
667 | wait() | |
668 | local siz = math.random((exdist/4)*10, (exdist/2.8)*10)/10 | |
669 | local pk = Instance.new("Part") | |
670 | prop(pk, workspace, false, 0.1, 0, 1, 1, 1, sm[math.random(1,#sm)], true, "Custom" ) | |
671 | pk.CFrame = pos * CFrame.new(math.random(-exdist*10,exdist*10)/25, math.random(-exdist*10,exdist*10)/25, math.random(-exdist*10,exdist*10)/25) | |
672 | local ms = Instance.new("SpecialMesh",pk) | |
673 | ms.MeshType = "Sphere" | |
674 | ms.Scale = Vector3.new(siz,siz,siz) | |
675 | local trul = pk.CFrame | |
676 | coroutine.resume(coroutine.create(function() | |
677 | for x=0.1, 1, 0.2 do | |
678 | wait() | |
679 | pk.Transparency = x | |
680 | pk.CFrame = trul * CFrame.Angles(math.random(-35,35)/100,math.random(-35,35)/100,math.random(-35,35)/100) * CFrame.new(0,x*4,0) | |
681 | end | |
682 | pk:remove() | |
683 | end)) | |
684 | end | |
685 | end)) | |
686 | wait(1) | |
687 | expl:remove() | |
688 | end | |
689 | ||
690 | function smoke(p) | |
691 | while p.Parent ~= nil do | |
692 | wait(0.11) | |
693 | local siz = math.random(4,12)/10 | |
694 | local sp = Instance.new("Part") | |
695 | prop(sp,workspace,false,0.1,0,siz,siz,siz,sm[math.random(1,#sm)],true,"Custom") | |
696 | sp.CFrame = p.CFrame * CFrame.new(0,0,0.8) * CFrame.Angles(math.random(-6,6)/10, math.random(-6,6)/10, math.random(-6,6)/10) | |
697 | - | if script.Parent.className ~= "HopperBin" then |
697 | + | |
698 | - | h = Instance.new("HopperBin",me.Backpack) |
698 | + | |
699 | - | h.Name = "MiniRocket" |
699 | + | |
700 | - | script.Parent = h |
700 | + | |
701 | for i=0.1, 1, 0.2 do | |
702 | wait() | |
703 | - | bin = script.Parent |
703 | + | |
704 | sp.Transparency = i | |
705 | sme.Scale = Vector3.new(1+i,1+i,1+i) | |
706 | end | |
707 | sp:remove() | |
708 | end)) | |
709 | end | |
710 | end | |
711 | ||
712 | function smokejet(p) | |
713 | while Flying do | |
714 | wait(0.06) | |
715 | for _,v in pairs(p) do | |
716 | local siz = math.random(5,15)/10 | |
717 | local sp = Instance.new("Part") | |
718 | prop(sp,workspace,false,0.1,0,siz,siz,siz,sm[math.random(1,#sm)],true,"Custom") | |
719 | sp.CFrame = v[2].CFrame * CFrame.new(0,-0.3,0) * CFrame.Angles(math.random(-6,6)/10, math.random(-6,6)/10, math.random(-6,6)/10) | |
720 | local sme = Instance.new("SpecialMesh",sp) | |
721 | sme.MeshType = "Sphere" | |
722 | local fi = Instance.new("Part") | |
723 | prop(fi,workspace,false,0.1,0,siz,siz,siz,explodecolors[math.random(1,#explodecolors)],true,"Custom") | |
724 | fi.CFrame = v[2].CFrame * CFrame.new(0,-0.3,0)* CFrame.Angles(math.pi,0,0) * CFrame.Angles(math.random(-3,3)/10, math.random(-3,3)/10, math.random(-3,3)/10) | |
725 | local fmes = Instance.new("SpecialMesh",fi) | |
726 | fmes.Scale = Vector3.new(0.4,0.5,0.4) | |
727 | fmes.MeshId = "http://www.roblox.com/asset/?id=20329976" | |
728 | local c, c2 = sp.CFrame, fi.CFrame | |
729 | coroutine.resume(coroutine.create(function() | |
730 | for i=0.1, 2, 0.18 do | |
731 | wait() | |
732 | sp.CFrame = c * CFrame.new(0,-i*3,0) + Vector3.new(0,i*4,0) | |
733 | sp.Transparency = i/2.2 | |
734 | fi.Transparency = i/2 | |
735 | fi.CFrame = c2 * CFrame.new(0,i*2,0) | |
736 | fmes.Scale = Vector3.new(0.4+(i/1.8),0.5+(i/1.8),0.4+(i/1.8)) | |
737 | sme.Scale = Vector3.new(1+(i/1.4),1+(i/1.4),1+(i/1.4)) | |
738 | end | |
739 | sp:remove() | |
740 | fi:remove() | |
741 | end)) | |
742 | end | |
743 | end | |
744 | end | |
745 | ||
746 | fly = function() | |
747 | if Flying == false and JetsOn == false and Energy >= EnergyCost then | |
748 | bv.Parent = torso | |
749 | Flying = true | |
750 | coroutine.resume(coroutine.create(function() | |
751 | smokejet(Jets, Flying) | |
752 | end)) | |
753 | flys:play() | |
754 | Speed = MinSpeed | |
755 | while jethold do | |
756 | if Energy <= 0 then break end | |
757 | if Speed < MaxSpeed then | |
758 | Speed = Speed + SpeedIncrease | |
759 | else Speed = MaxSpeed end | |
760 | local cf = Jets[1][3].CFrame * CFrame.Angles(math.pi/2,0,0) | |
761 | bv.velocity = cf.lookVector * Speed | |
762 | Energy = Energy - EnergyCost | |
763 | wait() | |
764 | bv.velocity = Vector3.new(0,0,0) | |
765 | end | |
766 | local ha = math.random(1,2) if ha == 1 then flys:stop() else flys:pause() end | |
767 | bv.Parent = nil | |
768 | bv.velocity = Vector3.new(0,0,0) | |
769 | Speed = MinSpeed | |
770 | wait(0.3) | |
771 | Flying = false | |
772 | end | |
773 | end | |
774 | ||
775 | fire = function(mousepos, pos, target) | |
776 | ||
777 | local moda = mode | |
778 | ||
779 | if Energy >= moda[7] then | |
780 | Energy = Energy - moda[7] | |
781 | coroutine.resume(coroutine.create(effect)) | |
782 | local hitable = true | |
783 | local pewm = Instance.new("Part") | |
784 | prop( pewm, nil, false, 0, 0, 0.4, 0.4, 0.7, "Medium grey", false, "Custom" ) | |
785 | Instance.new("SpecialMesh",pewm).MeshType = "Sphere" | |
786 | ||
787 | local projectile = Instance.new("Part") | |
788 | prop( projectile, workspace, false, 0, 0, 0.3, 0.3, 1.3, "Bright red", false, "Custom" ) | |
789 | Instance.new("SpecialMesh",projectile).MeshType = "Sphere" | |
790 | ||
791 | local wi = Instance.new("Weld") | |
792 | weld(wi,projectile,nil,0,0,0,0,0,-0.4) | |
793 | ||
794 | local swo = swoosh:clone() | |
795 | swo.Parent = projectile | |
796 | swo:play() | |
797 | local bv = nil | |
798 | local sped = 0 | |
799 | ||
800 | coroutine.resume(coroutine.create(function() wait(0.8) smoke(projectile) end)) | |
801 | coroutine.resume(coroutine.create(function() wait(7) if projectile.Parent ~= nil then coroutine.resume(coroutine.create(function() explode(projectile, swo, moda) end)) projectile:remove() end end)) | |
802 | coroutine.resume(coroutine.create(movearm)) | |
803 | coroutine.resume(coroutine.create(function() | |
804 | repeat wait() until bv ~= nil | |
805 | if moda[1] == "Accelerate" then | |
806 | for i = moda[5], acceleratemax, accelerateincrease do | |
807 | sped = i | |
808 | wait() | |
809 | end | |
810 | else | |
811 | sped = moda[5] | |
812 | end | |
813 | end)) | |
814 | projectile.Touched:connect(function(hit) | |
815 | if hit.CanCollide == true and hit:GetMass() >= 3.5 and hitable then | |
816 | coroutine.resume(coroutine.create(function() hitable = false explode(projectile, swo, moda) end)) | |
817 | projectile:remove() | |
818 | end | |
819 | end) | |
820 | projectile.CFrame = pos * CFrame.new(0,0,-1) | |
821 | pewm.Parent = projectile | |
822 | pewm.CFrame = projectile.CFrame | |
823 | wi.Part1 = pewm | |
824 | local bg = Instance.new("BodyGyro") | |
825 | bg.maxTorque = Vector3.new(math.huge, math.huge, math.huge) | |
826 | bg.P = moda[3] | |
827 | bg.Parent = projectile | |
828 | bg.cframe = CFrame.new(projectile.Position, projectile.CFrame * CFrame.new(0,0,-10).p) | |
829 | bv = Instance.new("BodyVelocity") | |
830 | bv.maxForce = Vector3.new(math.huge,math.huge,math.huge) | |
831 | bv.velocity = projectile.CFrame.lookVector * sped | |
832 | bv.Parent = projectile | |
833 | if target ~= nil then | |
834 | local lolpos = target.CFrame:pointToObjectSpace(mousepos) | |
835 | repeat | |
836 | wait() | |
837 | bg.cframe = CFrame.new(projectile.Position, target.CFrame * CFrame.new(lolpos).p) | |
838 | bv.velocity = projectile.CFrame.lookVector * sped | |
839 | until (projectile.Position - target.CFrame * CFrame.new(lolpos).p).magnitude < 2 | |
840 | if hitable then | |
841 | hitable = false | |
842 | coroutine.resume(coroutine.create(function() explode(projectile, swo, moda) end)) | |
843 | projectile:remove() | |
844 | end | |
845 | else | |
846 | local lolaha = mousepos | |
847 | projectile.CFrame = CFrame.new(pos.p, mousepos) | |
848 | repeat | |
849 | wait() | |
850 | bv.velocity = projectile.CFrame.lookVector * sped | |
851 | bg.cframe = CFrame.new(projectile.Position, lolaha) | |
852 | until projectile.Parent == nil | |
853 | end | |
854 | end | |
855 | end | |
856 | ||
857 | ||
858 | ||
859 | bin = Instance.new("HopperBin",game.Players.LocalPlayer.Backpack) | |
860 | bin.Name = "Mini Rocket Launcher" | |
861 | ||
862 | function select(mouse) | |
863 | selectmotion() | |
864 | mouse.Icon = "http://www.roblox.com/asset/?id=45117007" | |
865 | sel = true | |
866 | coroutine.resume(coroutine.create(function() | |
867 | for i=1,4 do | |
868 | bg.Parent = nil | |
869 | wait() | |
870 | bg.Parent = torso | |
871 | end | |
872 | end)) | |
873 | coroutine.resume(coroutine.create(function() | |
874 | while sel do | |
875 | local po = torso.Position+Vector3.new(0,0.85,0) | |
876 | local offset=(po.Y-mouse.Hit.p.Y)/60 | |
877 | local mag=(po-mouse.Hit.p).magnitude/80 | |
878 | offset=offset/mag | |
879 | torso.Neck.C0 = necko * CFrame.Angles(offset,0,0) | |
880 | rw.C0 = rightbattle * CFrame.Angles(-offset, 0,0) | |
881 | lw.C0 = leftbattle * CFrame.Angles(-offset,0,0) | |
882 | for i,v in pairs(Jets) do | |
883 | v[1].C0 = CFrame.Angles(offset,0,0) | |
884 | end | |
885 | bg.cframe = GetCF(torso.Position, mouse.Hit.p) | |
886 | wait() | |
887 | end --Fenrier was here o3o | |
888 | rw.C0 = rightbattle | |
889 | lw.C0 = leftbattle | |
890 | torso.Neck.C0 = necko | |
891 | end)) | |
892 | mouse.Button1Down:connect(function() | |
893 | hold = true | |
894 | while hold do | |
895 | coroutine.resume(coroutine.create(function() fire(mouse.Hit.p, tube.CFrame, mouse.Target) end)) | |
896 | for i=0,mode[6],0.03 do | |
897 | if hold == false then break end | |
898 | wait() | |
899 | end | |
900 | end | |
901 | end) | |
902 | mouse.Button1Up:connect(function() hold = false end) | |
903 | mouse.KeyDown:connect(function(key) | |
904 | key = key:lower() | |
905 | if key == "e" then | |
906 | order = order + 1 | |
907 | if order > #modes then | |
908 | order = 1 | |
909 | end | |
910 | mode = modes[order] | |
911 | txt.Text = mode[1] | |
912 | elseif key == "q" then | |
913 | order = order - 1 | |
914 | if order < 1 then | |
915 | order = #modes | |
916 | end | |
917 | mode = modes[order] | |
918 | txt.Text = mode[1] | |
919 | elseif key == string.char(48) then | |
920 | jethold = true | |
921 | fly() | |
922 | end | |
923 | end) | |
924 | mouse.KeyUp:connect(function(key) | |
925 | key = key:lower() | |
926 | if key == string.char(48) then | |
927 | jethold = false | |
928 | end | |
929 | end) | |
930 | end | |
931 | ||
932 | function desel() | |
933 | sel = false | |
934 | bg.Parent = nil | |
935 | deselmotion() | |
936 | end | |
937 | ||
938 | bin.Selected:connect(select) | |
939 | bin.Deselected:connect(desel) |