SHOW:
|
|
- or go back to the newest paste.
1 | -- This script has been converted to FE by iPxter | |
2 | ||
3 | ||
4 | if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end | |
5 | local Player,Mouse,mouse,UserInputService,ContextActionService = owner | |
6 | do | |
7 | print("FE Compatibility code by Mokiros | Translated to FE by iPxter") | |
8 | script.Parent = Player.Character | |
9 | ||
10 | --RemoteEvent for communicating | |
11 | local Event = Instance.new("RemoteEvent") | |
12 | Event.Name = "UserInput_Event" | |
13 | ||
14 | --Fake event to make stuff like Mouse.KeyDown work | |
15 | local function fakeEvent() | |
16 | local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end} | |
17 | t.connect = t.Connect | |
18 | return t | |
19 | end | |
20 | ||
21 | --Creating fake input objects with fake variables | |
22 | local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()} | |
23 | local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()} | |
24 | local CAS = {Actions={},BindAction=function(self,name,fun,touch,...) | |
25 | CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil | |
26 | end} | |
27 | --Merged 2 functions into one by checking amount of arguments | |
28 | CAS.UnbindAction = CAS.BindAction | |
29 | ||
30 | --This function will trigger the events that have been :Connect()'ed | |
31 | local function te(self,ev,...) | |
32 | - | local player = game:GetService("Players").LocalPlayer |
32 | + | local t = m[ev] |
33 | - | local pmouse = player:GetMouse() |
33 | + | if t and t._fakeEvent and t.Function then |
34 | t.Function(...) | |
35 | end | |
36 | end | |
37 | m.TrigEvent = te | |
38 | UIS.TrigEvent = te | |
39 | ||
40 | Event.OnServerEvent:Connect(function(plr,io) | |
41 | if plr~=Player then return end | |
42 | if io.isMouse then | |
43 | m.Target = io.Target | |
44 | m.Hit = io.Hit | |
45 | else | |
46 | local b = io.UserInputState == Enum.UserInputState.Begin | |
47 | if io.UserInputType == Enum.UserInputType.MouseButton1 then | |
48 | return m:TrigEvent(b and "Button1Down" or "Button1Up") | |
49 | end | |
50 | for _,t in pairs(CAS.Actions) do | |
51 | for _,k in pairs(t.Keys) do | |
52 | if k==io.KeyCode then | |
53 | t.Function(t.Name,io.UserInputState,io) | |
54 | end | |
55 | end | |
56 | end | |
57 | m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower()) | |
58 | UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false) | |
59 | end | |
60 | end) | |
61 | Event.Parent = NLS([==[ | |
62 | local Player = game:GetService("Players").LocalPlayer | |
63 | local Event = script:WaitForChild("UserInput_Event") | |
64 | ||
65 | local UIS = game:GetService("UserInputService") | |
66 | local input = function(io,a) | |
67 | if a then return end | |
68 | --Since InputObject is a client-side instance, we create and pass table instead | |
69 | Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState}) | |
70 | end | |
71 | UIS.InputBegan:Connect(input) | |
72 | UIS.InputEnded:Connect(input) | |
73 | ||
74 | local Mouse = Player:GetMouse() | |
75 | local h,t | |
76 | --Give the server mouse data 30 times every second, but only if the values changed | |
77 | --If player is not moving their mouse, client won't fire events | |
78 | while wait(1/30) do | |
79 | if h~=Mouse.Hit or t~=Mouse.Target then | |
80 | h,t=Mouse.Hit,Mouse.Target | |
81 | Event:FireServer({isMouse=true,Target=t,Hit=h}) | |
82 | end | |
83 | end]==],Player.Character) | |
84 | Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS | |
85 | end | |
86 | ||
87 | -- Created by 129K | |
88 | local animations = { | |
89 | requip = { | |
90 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, math.rad(-10)) * CFrame.new(1.5, -.5, 0); | |
91 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(180), 0, math.rad(-15)) * CFrame.new(1.5, -.5, 0); | |
92 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(210), 0, math.rad(-40)) * CFrame.new(1.5, -.5, 0); | |
93 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(180), 0, math.rad(-10)) * CFrame.new(1.5, -.5, 0); | |
94 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, 0) * CFrame.new(1.5, -.5, 0); | |
95 | }; | |
96 | lequip = { | |
97 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, math.rad(60)) * CFrame.new(-1, -.75, 0); | |
98 | }; | |
99 | runequip = { | |
100 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, math.rad(-10)) * CFrame.new(1.5, -.5, 0); | |
101 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(180), 0, math.rad(-15)) * CFrame.new(1.5, -.5, 0); | |
102 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(210), 0, math.rad(-40)) * CFrame.new(1.5, -.5, 0); | |
103 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(180), 0, math.rad(-10)) * CFrame.new(1.5, -.5, 0); | |
104 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, 0) * CFrame.new(1.5, -.5, 0); | |
105 | CFrame.new(1.5, 0, 0); | |
106 | }; | |
107 | rshoot = { | |
108 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(170), 0, 0) * CFrame.new(1.5, -.5, 0); | |
109 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, 0) * CFrame.new(1.5, -.5, 0); | |
110 | }; | |
111 | lshoot = { | |
112 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(170), 0, math.rad(60)) * CFrame.new(-1, -.75, 0); | |
113 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, math.rad(60)) * CFrame.new(-1, -.75, 0); | |
114 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, math.rad(80)) * CFrame.new(-.5, -.35, 0); | |
115 | CFrame.new(0, .5, 0) * CFrame.Angles(math.rad(90), 0, math.rad(60)) * CFrame.new(-1, -.75, 0); | |
116 | }; | |
117 | } | |
118 | local player = owner | |
119 | local char = player.Character | |
120 | local bin = Instance.new("HopperBin", player.Backpack) | |
121 | local barrelsize = .3 | |
122 | local handleweld = nil | |
123 | local temp = true | |
124 | local etemp = true | |
125 | bin.Name = "L96A1 Magnum" | |
126 | function weld(part0, part1, c0, c1, parent) | |
127 | local w = Instance.new("Weld", parent) | |
128 | w.Part0 = part0 | |
129 | w.Part1 = part1 | |
130 | w.C0 = c0 | |
131 | w.C1 = c1 | |
132 | w.Name = "NewWeld" | |
133 | return w | |
134 | end | |
135 | function interpolateCFrame(cf1, cf2) | |
136 | local t1 = {cf1:components()} | |
137 | local t2 = {cf2:components()} | |
138 | local newcf = {} | |
139 | for i, v in pairs(t1) do | |
140 | local dif = t2[i] - v | |
141 | if i < 4 then | |
142 | local newValue = nil | |
143 | if math.abs(dif) < .1 then | |
144 | newValue = t2[i] | |
145 | else | |
146 | newValue = v + ((dif/math.abs(dif)) * .1) | |
147 | end | |
148 | newcf[i] = newValue | |
149 | else | |
150 | local newValue = nil | |
151 | if math.abs(dif) < .1 then | |
152 | newValue = t2[i] | |
153 | else | |
154 | newValue = v + ((dif/math.abs(dif)) * .1) | |
155 | end | |
156 | newcf[i] = newValue | |
157 | end | |
158 | end | |
159 | return CFrame.new(unpack(newcf)) | |
160 | end | |
161 | function prop(name, sx, sy, sz, px, py, pz, anc, canc, col, par, mesh, meshtype, scalex, scaley, scalez, meshid, textureid) | |
162 | local part = Instance.new("Part", par) | |
163 | part.Name = name | |
164 | part.TopSurface = 0 | |
165 | part.BottomSurface = 0 | |
166 | part.formFactor = 3 | |
167 | part.Size = Vector3.new(sx, sy, sz) | |
168 | part.Position = Vector3.new(px, py, pz) | |
169 | part.Anchored = anc | |
170 | part.CanCollide = canc | |
171 | part.BrickColor = BrickColor.new(col) | |
172 | if mesh then | |
173 | local m = Instance.new("SpecialMesh", part) | |
174 | m.MeshType = meshtype | |
175 | m.MeshId = meshid | |
176 | m.Scale = Vector3.new(scalex, scaley, scalez) | |
177 | m.TextureId = textureid | |
178 | end | |
179 | return part | |
180 | end | |
181 | function fade(part, speed) | |
182 | for i = part.Transparency, 1, speed do | |
183 | part.Transparency = i | |
184 | wait() | |
185 | end | |
186 | part:Destroy() | |
187 | end | |
188 | function clearWelds(par) | |
189 | for i, v in pairs(par:GetChildren()) do | |
190 | if v.Name == "NewWeld" and v:IsA("Weld") then | |
191 | v:Destroy() | |
192 | end | |
193 | end | |
194 | end | |
195 | function sound(pitch, id, par) | |
196 | local s = Instance.new("Sound", par) | |
197 | s.Pitch = pitch | |
198 | s.SoundId = id | |
199 | return s | |
200 | end | |
201 | function traceRay(pos, pos2, col, trans) | |
202 | local distance = (pos - pos2).magnitude | |
203 | local trace = Instance.new("Part", char) | |
204 | trace.Anchored = true | |
205 | trace.CanCollide = false | |
206 | trace.TopSurface = 0 | |
207 | trace.BottomSurface = 0 | |
208 | trace.formFactor = 3 | |
209 | trace.Size = Vector3.new(.2, .2, distance) | |
210 | trace.BrickColor = BrickColor.new(col) | |
211 | trace.Transparency = trans | |
212 | trace.CFrame = CFrame.new(pos2, pos) * CFrame.new(0, 0, -distance/2) | |
213 | return trace | |
214 | end | |
215 | clearWelds(char.Torso) | |
216 | local back1 = prop("Part1", .1, .7, .5, 0, 0, 0, false, false, "Black", char, false) | |
217 | local back1weld = weld(char.Torso, back1, CFrame.new(1, -2, .6) * CFrame.Angles(math.rad(90), math.rad(20), math.rad(90)), CFrame.new(), char.Torso) | |
218 | local back2 = prop("Part2", .1, .2, .1, 0, 0, 0, false, false, "Grime", char, false) | |
219 | local back2weld = weld(back1, back2, CFrame.new(0, -.25, -.35), CFrame.new(), char.Torso) | |
220 | local back3 = prop("Part3", .1, .5, 1, 0, 0, 0, false, false, "Grime", char, false) | |
221 | local back3weld = weld(back1, back3, CFrame.new(0, .1, -.75), CFrame.new(), char.Torso) | |
222 | local back4 = prop("Part4", .1, .1, 1, 0, 0, 0, false, false, "Grime", char, false) | |
223 | local back4weld = weld(back3, back4, CFrame.new(0, .3, 0), CFrame.new(), char.Torso) | |
224 | local back5 = prop("Part5", .1, .1, .7, 0, 0, 0, false, false, "Grime", char, false) | |
225 | local back5weld = weld(back1, back5, CFrame.new(0, .4, -1.6), CFrame.new(), char.Torso) | |
226 | local trigger1 = prop("Part6", .1, .1, .6, 0, 0, 0, false, false, "Grime", char, false) | |
227 | local trigger1weld = weld(back4, trigger1, CFrame.new(0, -.6, -.4) * CFrame.Angles(-math.rad(30), 0, 0), CFrame.new(), char.Torso) | |
228 | local trigger2 = prop("Part7", .1, .1, .5, 0, 0, 0, false, false, "Grime", char, false) | |
229 | local trigger2weld = weld(back4, trigger2, CFrame.new(0, -.675, -.8) * CFrame.Angles(math.rad(15), 0, 0), CFrame.new(), char.Torso) | |
230 | local trigger3 = prop("Part8", .1, .1, .7, 0, 0, 0, false, false, "Grime", char, false) | |
231 | local trigger3weld = weld(back4, trigger3, CFrame.new(0, -.4, -.95) * CFrame.Angles(math.rad(90), 0, 0), CFrame.new(), char.Torso) | |
232 | local middle1 = prop("Part9", .1, .1, 1, 0, 0, 0, false, false, "Black", char, true, "Brick", .1, .0, .1, "", "") -- dis | |
233 | local middle1weld = weld(back5, middle1, CFrame.new(0, .05, -.8), CFrame.new(), char.Torso) | |
234 | local trigframe = prop("Part10", .1, .3, .3, 0, 0, 0, false, false, "Grime", char, true, "FileMesh", .3, .3, .3, "http://www.roblox.com/asset/?id=3270017", "") | |
235 | local trigframeweld = weld(back5, trigframe, CFrame.new(0, -.2, -.3) * CFrame.Angles(0, math.rad(90), 0), CFrame.new(), char.Torso) | |
236 | local middle2 = prop("Part11", .1, .3, 2, 0, 0, 0, false, false, "Grime", char, false) | |
237 | local middle2weld = weld(middle1, middle2, CFrame.new(0, -.1, -.4), CFrame.new(), char.Torso) | |
238 | local barrel = prop("Part12", .1, .1, 4, 0, 0, 0, false, false, "Black", char, true, "Brick", .5, .5, 1, "", "") | |
239 | local barrelweld = weld(middle1, barrel, CFrame.new(0, -.05, -2), CFrame.new(), char.Torso) | |
240 | local barrel2 = prop("Part13", barrelsize, 2, barrelsize, 0, 0, 0, false, false, "Black", char, false) Instance.new("CylinderMesh", barrel2) | |
241 | local barrel2weld = weld(barrel, barrel2, CFrame.new(0, 0, -2.5) * CFrame.Angles(math.rad(90), 0, 0), CFrame.new(), char.Torso) | |
242 | local scope1 = prop("Part14", .1, .2, .1, 0, 0, 0, false, false, "Black", char, true, "Brick", .5, .5, .5, "", "") | |
243 | local scope1weld = weld(middle1, scope1, CFrame.new(0, .1, .25), CFrame.new(), char.Torso) | |
244 | local scope2 = prop("Part14", .1, .2, .1, 0, 0, 0, false, false, "Black", char, true, "Brick", .5, .5, .5, "", "") | |
245 | local scope2weld = weld(middle1, scope2, CFrame.new(0, .1, -.25), CFrame.new(), char.Torso) | |
246 | local scope3 = prop("Part15", .1, 1.5, .1, 0, 0, 0, false, false, "Black", char, false) Instance.new("CylinderMesh", scope3) | |
247 | local scope3weld = weld(middle1, scope3, CFrame.new(0, .2, 0) * CFrame.Angles(math.rad(90), 0, 0), CFrame.new(), char.Torso) | |
248 | local scope4 = prop("Part16", .2, .3, .2, 0, 0, 0, false, false, "Black", char, true, "FileMesh", .2, .3, .2, "http://www.roblox.com/asset/?id=1033714", "") | |
249 | local scope4weld = weld(middle1, scope4, CFrame.new(0, .2, .7) * CFrame.Angles(math.rad(270), 0, 0), CFrame.new(), char.Torso) | |
250 | local scope5 = prop("Part17", .3, .35, .3, 0, 0, 0, false, false, "Black", char, true, "FileMesh", .3, .35, .3, "http://www.roblox.com/asset/?id=1033714", "") | |
251 | local scope5weld = weld(middle1, scope5, CFrame.new(0, .2, -.7) * CFrame.Angles(math.rad(-270), 0, 0), CFrame.new(), char.Torso) | |
252 | local rarmweld = weld(char.Torso, nil, CFrame.new(1.5, 0, 0), CFrame.new(), char.Torso) | |
253 | local larmweld = weld(char.Torso, nil, CFrame.new(-1.5, 0, 0), CFrame.new(), char.Torso) | |
254 | local gyro = Instance.new("BodyGyro", char.Torso) | |
255 | gyro.P = 10000 | |
256 | gyro.maxTorque = Vector3.new(math.huge, math.huge, math.huge) | |
257 | pmouse.Move:connect(function() | |
258 | gyro.cframe = CFrame.new(char.Torso.Position, Vector3.new(pmouse.Hit.p.X, char.Torso.Position.Y, pmouse.Hit.p.Z)) | |
259 | end) | |
260 | function onEquip(mouse) | |
261 | repeat wait() until etemp and temp | |
262 | etemp = false | |
263 | rarmweld.Part1 = char["Right Arm"] | |
264 | local frame = 1 | |
265 | coroutine.wrap(function() | |
266 | while rarmweld and animations.requip[frame] do | |
267 | rarmweld.C0 = interpolateCFrame(rarmweld.C0, animations.requip[frame]) | |
268 | if rarmweld.C0 == animations.requip[frame] then | |
269 | frame = frame + 1 | |
270 | else | |
271 | wait() | |
272 | end | |
273 | end | |
274 | end)() | |
275 | repeat wait() until frame == 3 | |
276 | back1weld.Part0 = nil | |
277 | handleweld = weld(char["Right Arm"], back1, CFrame.new(-.5, 1, -.3) * CFrame.Angles(math.rad(270), 0, 0), CFrame.new(), char.Torso) | |
278 | repeat wait() until frame == 5 | |
279 | larmweld.Part1 = char["Left Arm"] | |
280 | local frame2 = 1 | |
281 | coroutine.wrap(function() | |
282 | while larmweld and animations.lequip[frame2] do | |
283 | larmweld.C0 = interpolateCFrame(larmweld.C0, animations.lequip[frame2]) | |
284 | if larmweld.C0 == animations.lequip[frame2] then | |
285 | frame2 = frame2 + 1 | |
286 | else | |
287 | wait() | |
288 | end | |
289 | end | |
290 | etemp = true | |
291 | end)() | |
292 | repeat wait() until frame == 6 | |
293 | mouse.Button1Down:connect(function() | |
294 | if not temp then return end | |
295 | temp = false | |
296 | local frame3 = 1 | |
297 | coroutine.wrap(function() | |
298 | while rarmweld and animations.rshoot[frame3] do | |
299 | rarmweld.C0 = interpolateCFrame(rarmweld.C0, animations.rshoot[frame3]) | |
300 | if rarmweld.C0 == animations.rshoot[frame3] then | |
301 | frame3 = frame3 + 1 | |
302 | else | |
303 | wait() | |
304 | end | |
305 | end | |
306 | end)() | |
307 | local frame4 = 1 | |
308 | coroutine.wrap(function() | |
309 | while larmweld and animations.lshoot[frame4] do | |
310 | larmweld.C0 = interpolateCFrame(larmweld.C0, animations.lshoot[frame4]) | |
311 | if larmweld.C0 == animations.lshoot[frame4] then | |
312 | frame4 = frame4 + 1 | |
313 | else | |
314 | wait() | |
315 | end | |
316 | end | |
317 | wait(.1) | |
318 | temp = true | |
319 | end)() | |
320 | local ray = Ray.new(barrel2.Position, (mouse.Hit.p - barrel2.Position).unit * 500) | |
321 | sound(2, "http://www.roblox.com/Asset/?id=16211041", barrel2):play() | |
322 | local hit, pos = workspace:FindPartOnRay(ray, char) | |
323 | if hit and hit.Parent:FindFirstChild("Humanoid") then | |
324 | local dmg = math.random(70, 100) | |
325 | if hit.Name ~= "Head" then | |
326 | hit.Parent.Humanoid:TakeDamage(dmg) | |
327 | hit.Parent.Humanoid.Sit = true | |
328 | else | |
329 | hit.Parent:BreakJoints() | |
330 | sound(1, "http://www.roblox.com/asset/?id=1876552", workspace):play() | |
331 | end | |
332 | if game:GetService("Players"):GetPlayerFromCharacter(hit.Parent) == nil then return end | |
333 | local bl = Instance.new("Part", workspace) | |
334 | bl.Name = "Blood" | |
335 | bl.BrickColor = BrickColor.new("Really red") | |
336 | bl.FormFactor = 3 | |
337 | bl.TopSurface = 0 | |
338 | bl.BottomSurface = 0 | |
339 | bl.Size = Vector3.new(1, .1, 1) | |
340 | bl.Position = hit.Parent.Head.Position + Vector3.new(0, 3, 0) | |
341 | local bbg = Instance.new("BillboardGui", bl) | |
342 | bbg.Adornee = bl | |
343 | bbg.Size = UDim2.new(1, 0, 1, 0) | |
344 | bbg.StudsOffset = Vector3.new(0, 1, 0) | |
345 | local txt = Instance.new("TextLabel", bbg) | |
346 | txt.Position = UDim2.new(0.5, 0, 0.5, 0) | |
347 | txt.FontSize = "Size14" | |
348 | txt.TextColor3 = Color3.new(1, 1, 1) | |
349 | txt.Text = hit.Name ~= "Head" and dmg or "HEADSHOT" | |
350 | coroutine.wrap(fade)(bl, 0.005) | |
351 | end | |
352 | if hit and hit.Parent:IsA("Hat") then | |
353 | hit:BreakJoints() | |
354 | end | |
355 | Spawn(function() | |
356 | local tr = traceRay(barrel2.Position, pos, "White", .5) | |
357 | fade(tr, .01) | |
358 | end) | |
359 | repeat wait() until frame4 == 3 | |
360 | sound(1, "http://roblox.com/asset/?id=10209881", middle2):play() | |
361 | end) | |
362 | end | |
363 | function onUnequip() | |
364 | repeat wait() until etemp and temp | |
365 | etemp = false | |
366 | local frame = 1 | |
367 | coroutine.wrap(function() | |
368 | while rarmweld and animations.runequip[frame] do | |
369 | rarmweld.C0 = interpolateCFrame(rarmweld.C0, animations.runequip[frame]) | |
370 | if rarmweld.C0 == animations.runequip[frame] then | |
371 | frame = frame + 1 | |
372 | else | |
373 | wait() | |
374 | end | |
375 | end | |
376 | etemp = true | |
377 | end)() | |
378 | coroutine.wrap(function() | |
379 | while larmweld do | |
380 | larmweld.C0 = interpolateCFrame(larmweld.C0, CFrame.new(-1.5, 0, 0)) | |
381 | if larmweld.C0 == CFrame.new(-1.5, 0, 0) then | |
382 | break | |
383 | else | |
384 | wait() | |
385 | end | |
386 | end | |
387 | end)() | |
388 | repeat wait() until frame == 4 | |
389 | handleweld:Remove() | |
390 | back1weld:Remove() | |
391 | back1weld = weld(char.Torso, back1, CFrame.new(1, -2, .6) * CFrame.Angles(math.rad(90), math.rad(20), math.rad(90)), CFrame.new(), char.Torso) | |
392 | repeat wait() until frame == 7 | |
393 | rarmweld.Part1 = nil | |
394 | larmweld.Part1 = nil | |
395 | end | |
396 | bin.Selected:connect(onEquip) | |
397 | bin.Deselected:connect(onUnequip) |