SHOW:
|
|
- or go back to the newest paste.
| 1 | ||
| 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,game,owner = owner,game | |
| 6 | local RealPlayer = Player | |
| 7 | do | |
| 8 | print("FE Compatibility code by retram")
| |
| 9 | warn("Bypassed audio")
| |
| 10 | local rp = RealPlayer | |
| 11 | script.Parent = rp.Character | |
| 12 | ||
| 13 | --RemoteEvent for communicating | |
| 14 | local Event = Instance.new("RemoteEvent")
| |
| 15 | Event.Name = "UserInput_Event" | |
| 16 | ||
| 17 | --Fake event to make stuff like Mouse.KeyDown work | |
| 18 | local function fakeEvent() | |
| 19 | local t = {_fakeEvent=true,Functions={},Connect=function(self,f)table.insert(self.Functions,f) end}
| |
| 20 | t.connect = t.Connect | |
| 21 | return t | |
| 22 | end | |
| 23 | ||
| 24 | --Creating fake input objects with fake variables | |
| 25 | local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
| |
| 26 | local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
| |
| 27 | local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
| |
| 28 | CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
| |
| 29 | end} | |
| 30 | --Merged 2 functions into one by checking amount of arguments | |
| 31 | CAS.UnbindAction = CAS.BindAction | |
| 32 | ||
| 33 | --This function will trigger the events that have been :Connect()'ed | |
| 34 | local function te(self,ev,...) | |
| 35 | local t = m[ev] | |
| 36 | if t and t._fakeEvent then | |
| 37 | for _,f in pairs(t.Functions) do | |
| 38 | f(...) | |
| 39 | end | |
| 40 | end | |
| 41 | end | |
| 42 | m.TrigEvent = te | |
| 43 | UIS.TrigEvent = te | |
| 44 | ||
| 45 | Event.OnServerEvent:Connect(function(plr,io) | |
| 46 | if plr~=rp then return end | |
| 47 | m.Target = io.Target | |
| 48 | m.Hit = io.Hit | |
| 49 | if not io.isMouse then | |
| 50 | local b = io.UserInputState == Enum.UserInputState.Begin | |
| 51 | if io.UserInputType == Enum.UserInputType.MouseButton1 then | |
| 52 | return m:TrigEvent(b and "Button1Down" or "Button1Up") | |
| 53 | end | |
| 54 | if io.UserInputType == Enum.UserInputType.MouseButton2 then | |
| 55 | return m:TrigEvent(b and "Button2Down" or "Button2Up") | |
| 56 | end | |
| 57 | for _,t in pairs(CAS.Actions) do | |
| 58 | for _,k in pairs(t.Keys) do | |
| 59 | if k==io.KeyCode then | |
| 60 | t.Function(t.Name,io.UserInputState,io) | |
| 61 | end | |
| 62 | end | |
| 63 | end | |
| 64 | m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower()) | |
| 65 | UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false) | |
| 66 | end | |
| 67 | end) | |
| 68 | Event.Parent = NLS([==[ | |
| 69 | local Player = game:GetService("Players").LocalPlayer
| |
| 70 | local Event = script:WaitForChild("UserInput_Event")
| |
| 71 | local Mouse = Player:GetMouse() | |
| 72 | local UIS = game:GetService("UserInputService")
| |
| 73 | local input = function(io,a) | |
| 74 | if a then return end | |
| 75 | --Since InputObject is a client-side instance, we create and pass table instead | |
| 76 | Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
| |
| 77 | end | |
| 78 | UIS.InputBegan:Connect(input) | |
| 79 | UIS.InputEnded:Connect(input) | |
| 80 | local h,t | |
| 81 | --Give the server mouse data 30 times every second, but only if the values changed | |
| 82 | --If player is not moving their mouse, client won't fire events | |
| 83 | while wait(1/30) do | |
| 84 | if h~=Mouse.Hit or t~=Mouse.Target then | |
| 85 | h,t=Mouse.Hit,Mouse.Target | |
| 86 | Event:FireServer({isMouse=true,Target=t,Hit=h})
| |
| 87 | end | |
| 88 | end]==],Player.Character) | |
| 89 | ||
| 90 | ----Sandboxed game object that allows the usage of client-side methods and services | |
| 91 | --Real game object | |
| 92 | local _rg = game | |
| 93 | ||
| 94 | --Metatable for fake service | |
| 95 | local fsmt = {
| |
| 96 | __index = function(self,k) | |
| 97 | local s = rawget(self,"_RealService") | |
| 98 | if s then | |
| 99 | return typeof(s[k])=="function" | |
| 100 | and function(_,...)return s[k](s,...)end or s[k] | |
| 101 | end | |
| 102 | end, | |
| 103 | __newindex = function(self,k,v) | |
| 104 | local s = rawget(self,"_RealService") | |
| 105 | if s then s[k]=v end | |
| 106 | end | |
| 107 | } | |
| 108 | local function FakeService(t,RealService) | |
| 109 | t._RealService = typeof(RealService)=="string" and _rg:GetService(RealService) or RealService | |
| 110 | return setmetatable(t,fsmt) | |
| 111 | end | |
| 112 | ||
| 113 | --Fake game object | |
| 114 | local g = {
| |
| 115 | GetService = function(self,s) | |
| 116 | return rawget(self,s) or _rg:GetService(s) | |
| 117 | end, | |
| 118 | Players = FakeService({
| |
| 119 | LocalPlayer = FakeService({GetMouse=function(self)return m end},Player)
| |
| 120 | },"Players"), | |
| 121 | UserInputService = FakeService(UIS,"UserInputService"), | |
| 122 | ContextActionService = FakeService(CAS,"ContextActionService"), | |
| 123 | RunService = FakeService({
| |
| 124 | _btrs = {},
| |
| 125 | RenderStepped = _rg:GetService("RunService").Heartbeat,
| |
| 126 | BindToRenderStep = function(self,name,_,fun) | |
| 127 | self._btrs[name] = self.Heartbeat:Connect(fun) | |
| 128 | end, | |
| 129 | UnbindFromRenderStep = function(self,name) | |
| 130 | self._btrs[name]:Disconnect() | |
| 131 | end, | |
| 132 | },"RunService") | |
| 133 | } | |
| 134 | rawset(g.Players,"localPlayer",g.Players.LocalPlayer) | |
| 135 | g.service = g.GetService | |
| 136 | FakeService(g,game) | |
| 137 | --Changing owner to fake player object to support owner:GetMouse() | |
| 138 | game,owner = g,g.Players.LocalPlayer | |
| 139 | end | |
| 140 | --Made by 1ndrew "Steamed Hams" | |
| 141 | function sandbox(var,func) | |
| 142 | local env = getfenv(func) | |
| 143 | local newenv = setmetatable({},{
| |
| 144 | __index = function(self,k) | |
| 145 | if k=="script" then | |
| 146 | return var | |
| 147 | else | |
| 148 | return env[k] | |
| 149 | end | |
| 150 | end, | |
| 151 | }) | |
| 152 | setfenv(func,newenv) | |
| 153 | return func | |
| 154 | end | |
| 155 | cors = {}
| |
| 156 | mas = Instance.new("Model",game:GetService("Lighting"))
| |
| 157 | Tool0 = Instance.new("Tool")
| |
| 158 | Part1 = Instance.new("Part")
| |
| 159 | CylinderMesh2 = Instance.new("CylinderMesh")
| |
| 160 | Part3 = Instance.new("Part")
| |
| 161 | CylinderMesh4 = Instance.new("CylinderMesh")
| |
| 162 | Part5 = Instance.new("Part")
| |
| 163 | CylinderMesh6 = Instance.new("CylinderMesh")
| |
| 164 | Part7 = Instance.new("Part")
| |
| 165 | CylinderMesh8 = Instance.new("CylinderMesh")
| |
| 166 | Part9 = Instance.new("Part")
| |
| 167 | CylinderMesh10 = Instance.new("CylinderMesh")
| |
| 168 | Part11 = Instance.new("Part")
| |
| 169 | CylinderMesh12 = Instance.new("CylinderMesh")
| |
| 170 | Part13 = Instance.new("Part")
| |
| 171 | SpecialMesh14 = Instance.new("SpecialMesh")
| |
| 172 | Part15 = Instance.new("Part")
| |
| 173 | CylinderMesh16 = Instance.new("CylinderMesh")
| |
| 174 | Part17 = Instance.new("Part")
| |
| 175 | Part18 = Instance.new("Part")
| |
| 176 | PointLight19 = Instance.new("PointLight")
| |
| 177 | BillboardGui20 = Instance.new("BillboardGui")
| |
| 178 | ImageLabel21 = Instance.new("ImageLabel")
| |
| 179 | CylinderMesh22 = Instance.new("CylinderMesh")
| |
| 180 | Part23 = Instance.new("Part")
| |
| 181 | Sound24 = Instance.new("Sound")
| |
| 182 | Sound25 = Instance.new("Sound")
| |
| 183 | Part26 = Instance.new("Part")
| |
| 184 | CylinderMesh27 = Instance.new("CylinderMesh")
| |
| 185 | Part28 = Instance.new("Part")
| |
| 186 | SpecialMesh29 = Instance.new("SpecialMesh")
| |
| 187 | Part30 = Instance.new("Part")
| |
| 188 | SpecialMesh31 = Instance.new("SpecialMesh")
| |
| 189 | Decal32 = Instance.new("Decal")
| |
| 190 | Decal33 = Instance.new("Decal")
| |
| 191 | Part34 = Instance.new("Part")
| |
| 192 | SpecialMesh35 = Instance.new("SpecialMesh")
| |
| 193 | Part36 = Instance.new("Part")
| |
| 194 | SpecialMesh37 = Instance.new("SpecialMesh")
| |
| 195 | Part38 = Instance.new("Part")
| |
| 196 | CylinderMesh39 = Instance.new("CylinderMesh")
| |
| 197 | Part40 = Instance.new("Part")
| |
| 198 | CylinderMesh41 = Instance.new("CylinderMesh")
| |
| 199 | Part42 = Instance.new("Part")
| |
| 200 | CylinderMesh43 = Instance.new("CylinderMesh")
| |
| 201 | Part44 = Instance.new("Part")
| |
| 202 | SpecialMesh45 = Instance.new("SpecialMesh")
| |
| 203 | Part46 = Instance.new("Part")
| |
| 204 | CylinderMesh47 = Instance.new("CylinderMesh")
| |
| 205 | Part48 = Instance.new("Part")
| |
| 206 | SpecialMesh49 = Instance.new("SpecialMesh")
| |
| 207 | Decal50 = Instance.new("Decal")
| |
| 208 | Decal51 = Instance.new("Decal")
| |
| 209 | Part52 = Instance.new("Part")
| |
| 210 | SpecialMesh53 = Instance.new("SpecialMesh")
| |
| 211 | Part54 = Instance.new("Part")
| |
| 212 | SpecialMesh55 = Instance.new("SpecialMesh")
| |
| 213 | Part56 = Instance.new("Part")
| |
| 214 | CylinderMesh57 = Instance.new("CylinderMesh")
| |
| 215 | Part58 = Instance.new("Part")
| |
| 216 | CylinderMesh59 = Instance.new("CylinderMesh")
| |
| 217 | Part60 = Instance.new("Part")
| |
| 218 | SpecialMesh61 = Instance.new("SpecialMesh")
| |
| 219 | Part62 = Instance.new("Part")
| |
| 220 | CylinderMesh63 = Instance.new("CylinderMesh")
| |
| 221 | Part64 = Instance.new("Part")
| |
| 222 | CylinderMesh65 = Instance.new("CylinderMesh")
| |
| 223 | Part66 = Instance.new("Part")
| |
| 224 | SpecialMesh67 = Instance.new("SpecialMesh")
| |
| 225 | Part68 = Instance.new("Part")
| |
| 226 | SpecialMesh69 = Instance.new("SpecialMesh")
| |
| 227 | Part70 = Instance.new("Part")
| |
| 228 | CylinderMesh71 = Instance.new("CylinderMesh")
| |
| 229 | Part72 = Instance.new("Part")
| |
| 230 | SpecialMesh73 = Instance.new("SpecialMesh")
| |
| 231 | Part74 = Instance.new("Part")
| |
| 232 | CylinderMesh75 = Instance.new("CylinderMesh")
| |
| 233 | Part76 = Instance.new("Part")
| |
| 234 | CylinderMesh77 = Instance.new("CylinderMesh")
| |
| 235 | Part78 = Instance.new("Part")
| |
| 236 | CylinderMesh79 = Instance.new("CylinderMesh")
| |
| 237 | Part80 = Instance.new("Part")
| |
| 238 | CylinderMesh81 = Instance.new("CylinderMesh")
| |
| 239 | Part82 = Instance.new("Part")
| |
| 240 | CylinderMesh83 = Instance.new("CylinderMesh")
| |
| 241 | Part84 = Instance.new("Part")
| |
| 242 | CylinderMesh85 = Instance.new("CylinderMesh")
| |
| 243 | Part86 = Instance.new("Part")
| |
| 244 | CylinderMesh87 = Instance.new("CylinderMesh")
| |
| 245 | Decal88 = Instance.new("Decal")
| |
| 246 | Decal89 = Instance.new("Decal")
| |
| 247 | Part90 = Instance.new("Part")
| |
| 248 | SpecialMesh91 = Instance.new("SpecialMesh")
| |
| 249 | Part92 = Instance.new("Part")
| |
| 250 | SpecialMesh93 = Instance.new("SpecialMesh")
| |
| 251 | Part94 = Instance.new("Part")
| |
| 252 | CylinderMesh95 = Instance.new("CylinderMesh")
| |
| 253 | Part96 = Instance.new("Part")
| |
| 254 | SpecialMesh97 = Instance.new("SpecialMesh")
| |
| 255 | Part98 = Instance.new("Part")
| |
| 256 | SpecialMesh99 = Instance.new("SpecialMesh")
| |
| 257 | Part100 = Instance.new("Part")
| |
| 258 | CylinderMesh101 = Instance.new("CylinderMesh")
| |
| 259 | Part102 = Instance.new("Part")
| |
| 260 | CylinderMesh103 = Instance.new("CylinderMesh")
| |
| 261 | Decal104 = Instance.new("Decal")
| |
| 262 | Part105 = Instance.new("Part")
| |
| 263 | CylinderMesh106 = Instance.new("CylinderMesh")
| |
| 264 | Part107 = Instance.new("Part")
| |
| 265 | CylinderMesh108 = Instance.new("CylinderMesh")
| |
| 266 | Part109 = Instance.new("Part")
| |
| 267 | CylinderMesh110 = Instance.new("CylinderMesh")
| |
| 268 | Part111 = Instance.new("Part")
| |
| 269 | CylinderMesh112 = Instance.new("CylinderMesh")
| |
| 270 | Part113 = Instance.new("Part")
| |
| 271 | CylinderMesh114 = Instance.new("CylinderMesh")
| |
| 272 | Part115 = Instance.new("Part")
| |
| 273 | CylinderMesh116 = Instance.new("CylinderMesh")
| |
| 274 | Decal117 = Instance.new("Decal")
| |
| 275 | Part118 = Instance.new("Part")
| |
| 276 | CylinderMesh119 = Instance.new("CylinderMesh")
| |
| 277 | Decal120 = Instance.new("Decal")
| |
| 278 | Part121 = Instance.new("Part")
| |
| 279 | CylinderMesh122 = Instance.new("CylinderMesh")
| |
| 280 | Part123 = Instance.new("Part")
| |
| 281 | CylinderMesh124 = Instance.new("CylinderMesh")
| |
| 282 | Decal125 = Instance.new("Decal")
| |
| 283 | Decal126 = Instance.new("Decal")
| |
| 284 | Part127 = Instance.new("Part")
| |
| 285 | SpecialMesh128 = Instance.new("SpecialMesh")
| |
| 286 | Part129 = Instance.new("Part")
| |
| 287 | CylinderMesh130 = Instance.new("CylinderMesh")
| |
| 288 | Part131 = Instance.new("Part")
| |
| 289 | CylinderMesh132 = Instance.new("CylinderMesh")
| |
| 290 | Decal133 = Instance.new("Decal")
| |
| 291 | Part134 = Instance.new("Part")
| |
| 292 | CylinderMesh135 = Instance.new("CylinderMesh")
| |
| 293 | Part136 = Instance.new("Part")
| |
| 294 | CylinderMesh137 = Instance.new("CylinderMesh")
| |
| 295 | Part138 = Instance.new("Part")
| |
| 296 | SpecialMesh139 = Instance.new("SpecialMesh")
| |
| 297 | Part140 = Instance.new("Part")
| |
| 298 | SpecialMesh141 = Instance.new("SpecialMesh")
| |
| 299 | Part142 = Instance.new("Part")
| |
| 300 | CylinderMesh143 = Instance.new("CylinderMesh")
| |
| 301 | Part144 = Instance.new("Part")
| |
| 302 | CylinderMesh145 = Instance.new("CylinderMesh")
| |
| 303 | Part146 = Instance.new("Part")
| |
| 304 | SpecialMesh147 = Instance.new("SpecialMesh")
| |
| 305 | Part148 = Instance.new("Part")
| |
| 306 | CylinderMesh149 = Instance.new("CylinderMesh")
| |
| 307 | Part150 = Instance.new("Part")
| |
| 308 | CylinderMesh151 = Instance.new("CylinderMesh")
| |
| 309 | Part152 = Instance.new("Part")
| |
| 310 | CylinderMesh153 = Instance.new("CylinderMesh")
| |
| 311 | Part154 = Instance.new("Part")
| |
| 312 | CylinderMesh155 = Instance.new("CylinderMesh")
| |
| 313 | Part156 = Instance.new("Part")
| |
| 314 | SpecialMesh157 = Instance.new("SpecialMesh")
| |
| 315 | Part158 = Instance.new("Part")
| |
| 316 | SpecialMesh159 = Instance.new("SpecialMesh")
| |
| 317 | Part160 = Instance.new("Part")
| |
| 318 | CylinderMesh161 = Instance.new("CylinderMesh")
| |
| 319 | Part162 = Instance.new("Part")
| |
| 320 | SpecialMesh163 = Instance.new("SpecialMesh")
| |
| 321 | Part164 = Instance.new("Part")
| |
| 322 | CylinderMesh165 = Instance.new("CylinderMesh")
| |
| 323 | Part166 = Instance.new("Part")
| |
| 324 | CylinderMesh167 = Instance.new("CylinderMesh")
| |
| 325 | Part168 = Instance.new("Part")
| |
| 326 | SpecialMesh169 = Instance.new("SpecialMesh")
| |
| 327 | Part170 = Instance.new("Part")
| |
| 328 | SpecialMesh171 = Instance.new("SpecialMesh")
| |
| 329 | Part172 = Instance.new("Part")
| |
| 330 | SpecialMesh173 = Instance.new("SpecialMesh")
| |
| 331 | Part174 = Instance.new("Part")
| |
| 332 | SpecialMesh175 = Instance.new("SpecialMesh")
| |
| 333 | Part176 = Instance.new("Part")
| |
| 334 | CylinderMesh177 = Instance.new("CylinderMesh")
| |
| 335 | Part178 = Instance.new("Part")
| |
| 336 | SpecialMesh179 = Instance.new("SpecialMesh")
| |
| 337 | Part180 = Instance.new("Part")
| |
| 338 | CylinderMesh181 = Instance.new("CylinderMesh")
| |
| 339 | Part182 = Instance.new("Part")
| |
| 340 | CylinderMesh183 = Instance.new("CylinderMesh")
| |
| 341 | Part184 = Instance.new("Part")
| |
| 342 | SpecialMesh185 = Instance.new("SpecialMesh")
| |
| 343 | Part186 = Instance.new("Part")
| |
| 344 | SpecialMesh187 = Instance.new("SpecialMesh")
| |
| 345 | IntValue188 = Instance.new("IntValue")
| |
| 346 | IntValue189 = Instance.new("IntValue")
| |
| 347 | IntValue190 = Instance.new("IntValue")
| |
| 348 | IntValue191 = Instance.new("IntValue")
| |
| 349 | IntValue192 = Instance.new("IntValue")
| |
| 350 | Script193 = Instance.new("Script")
| |
| 351 | ObjectValue194 = Instance.new("ObjectValue")
| |
| 352 | RemoteFunction195 = Instance.new("RemoteFunction")
| |
| 353 | RemoteFunction196 = Instance.new("RemoteFunction")
| |
| 354 | RemoteFunction197 = Instance.new("RemoteFunction")
| |
| 355 | RemoteEvent198 = Instance.new("RemoteEvent")
| |
| 356 | RemoteFunction199 = Instance.new("RemoteFunction")
| |
| 357 | RemoteFunction200 = Instance.new("RemoteFunction")
| |
| 358 | RemoteFunction201 = Instance.new("RemoteFunction")
| |
| 359 | LocalScript202 = Instance.new("LocalScript")
| |
| 360 | IntValue203 = Instance.new("IntValue")
| |
| 361 | RemoteEvent204 = Instance.new("RemoteEvent")
| |
| 362 | RemoteEvent205 = Instance.new("RemoteEvent")
| |
| 363 | RemoteEvent206 = Instance.new("RemoteEvent")
| |
| 364 | RemoteEvent207 = Instance.new("RemoteEvent")
| |
| 365 | LocalScript208 = Instance.new("LocalScript")
| |
| 366 | IntValue209 = Instance.new("IntValue")
| |
| 367 | Folder210 = Instance.new("Folder")
| |
| 368 | ScreenGui211 = Instance.new("ScreenGui")
| |
| 369 | ImageLabel212 = Instance.new("ImageLabel")
| |
| 370 | NumberValue213 = Instance.new("NumberValue")
| |
| 371 | Frame214 = Instance.new("Frame")
| |
| 372 | ImageLabel215 = Instance.new("ImageLabel")
| |
| 373 | TextLabel216 = Instance.new("TextLabel")
| |
| 374 | Frame217 = Instance.new("Frame")
| |
| 375 | TextLabel218 = Instance.new("TextLabel")
| |
| 376 | Frame219 = Instance.new("Frame")
| |
| 377 | TextLabel220 = Instance.new("TextLabel")
| |
| 378 | Frame221 = Instance.new("Frame")
| |
| 379 | TextLabel222 = Instance.new("TextLabel")
| |
| 380 | Frame223 = Instance.new("Frame")
| |
| 381 | TextLabel224 = Instance.new("TextLabel")
| |
| 382 | Frame225 = Instance.new("Frame")
| |
| 383 | Frame226 = Instance.new("Frame")
| |
| 384 | TextLabel227 = Instance.new("TextLabel")
| |
| 385 | TextLabel228 = Instance.new("TextLabel")
| |
| 386 | TextLabel229 = Instance.new("TextLabel")
| |
| 387 | TextLabel230 = Instance.new("TextLabel")
| |
| 388 | TextLabel231 = Instance.new("TextLabel")
| |
| 389 | Frame232 = Instance.new("Frame")
| |
| 390 | TextLabel233 = Instance.new("TextLabel")
| |
| 391 | TextLabel234 = Instance.new("TextLabel")
| |
| 392 | TextLabel235 = Instance.new("TextLabel")
| |
| 393 | Frame236 = Instance.new("Frame")
| |
| 394 | TextLabel237 = Instance.new("TextLabel")
| |
| 395 | Frame238 = Instance.new("Frame")
| |
| 396 | Frame239 = Instance.new("Frame")
| |
| 397 | Frame240 = Instance.new("Frame")
| |
| 398 | Frame241 = Instance.new("Frame")
| |
| 399 | Frame242 = Instance.new("Frame")
| |
| 400 | Frame243 = Instance.new("Frame")
| |
| 401 | Frame244 = Instance.new("Frame")
| |
| 402 | Frame245 = Instance.new("Frame")
| |
| 403 | Frame246 = Instance.new("Frame")
| |
| 404 | Frame247 = Instance.new("Frame")
| |
| 405 | Frame248 = Instance.new("Frame")
| |
| 406 | Frame249 = Instance.new("Frame")
| |
| 407 | Frame250 = Instance.new("Frame")
| |
| 408 | Frame251 = Instance.new("Frame")
| |
| 409 | Frame252 = Instance.new("Frame")
| |
| 410 | Frame253 = Instance.new("Frame")
| |
| 411 | Frame254 = Instance.new("Frame")
| |
| 412 | Frame255 = Instance.new("Frame")
| |
| 413 | Frame256 = Instance.new("Frame")
| |
| 414 | Frame257 = Instance.new("Frame")
| |
| 415 | Frame258 = Instance.new("Frame")
| |
| 416 | Frame259 = Instance.new("Frame")
| |
| 417 | Frame260 = Instance.new("Frame")
| |
| 418 | Frame261 = Instance.new("Frame")
| |
| 419 | Frame262 = Instance.new("Frame")
| |
| 420 | Frame263 = Instance.new("Frame")
| |
| 421 | TextLabel264 = Instance.new("TextLabel")
| |
| 422 | TextLabel265 = Instance.new("TextLabel")
| |
| 423 | Frame266 = Instance.new("Frame")
| |
| 424 | Frame267 = Instance.new("Frame")
| |
| 425 | ImageLabel268 = Instance.new("ImageLabel")
| |
| 426 | TextLabel269 = Instance.new("TextLabel")
| |
| 427 | TextLabel270 = Instance.new("TextLabel")
| |
| 428 | Frame271 = Instance.new("Frame")
| |
| 429 | ImageLabel272 = Instance.new("ImageLabel")
| |
| 430 | TextLabel273 = Instance.new("TextLabel")
| |
| 431 | TextLabel274 = Instance.new("TextLabel")
| |
| 432 | Frame275 = Instance.new("Frame")
| |
| 433 | TextLabel276 = Instance.new("TextLabel")
| |
| 434 | TextLabel277 = Instance.new("TextLabel")
| |
| 435 | TextLabel278 = Instance.new("TextLabel")
| |
| 436 | Frame279 = Instance.new("Frame")
| |
| 437 | Frame280 = Instance.new("Frame")
| |
| 438 | ImageLabel281 = Instance.new("ImageLabel")
| |
| 439 | ImageLabel282 = Instance.new("ImageLabel")
| |
| 440 | Frame283 = Instance.new("Frame")
| |
| 441 | TextLabel284 = Instance.new("TextLabel")
| |
| 442 | Frame285 = Instance.new("Frame")
| |
| 443 | ImageLabel286 = Instance.new("ImageLabel")
| |
| 444 | ImageLabel287 = Instance.new("ImageLabel")
| |
| 445 | Frame288 = Instance.new("Frame")
| |
| 446 | Frame289 = Instance.new("Frame")
| |
| 447 | LocalScript290 = Instance.new("LocalScript")
| |
| 448 | TextLabel291 = Instance.new("TextLabel")
| |
| 449 | Part292 = Instance.new("Part")
| |
| 450 | SpecialMesh293 = Instance.new("SpecialMesh")
| |
| 451 | Weld294 = Instance.new("Weld")
| |
| 452 | Weld295 = Instance.new("Weld")
| |
| 453 | Weld296 = Instance.new("Weld")
| |
| 454 | Weld297 = Instance.new("Weld")
| |
| 455 | Weld298 = Instance.new("Weld")
| |
| 456 | Weld299 = Instance.new("Weld")
| |
| 457 | Weld300 = Instance.new("Weld")
| |
| 458 | Weld301 = Instance.new("Weld")
| |
| 459 | Weld302 = Instance.new("Weld")
| |
| 460 | Weld303 = Instance.new("Weld")
| |
| 461 | Weld304 = Instance.new("Weld")
| |
| 462 | Weld305 = Instance.new("Weld")
| |
| 463 | Weld306 = Instance.new("Weld")
| |
| 464 | Weld307 = Instance.new("Weld")
| |
| 465 | Weld308 = Instance.new("Weld")
| |
| 466 | Weld309 = Instance.new("Weld")
| |
| 467 | Weld310 = Instance.new("Weld")
| |
| 468 | Weld311 = Instance.new("Weld")
| |
| 469 | Weld312 = Instance.new("Weld")
| |
| 470 | Weld313 = Instance.new("Weld")
| |
| 471 | Weld314 = Instance.new("Weld")
| |
| 472 | Weld315 = Instance.new("Weld")
| |
| 473 | Weld316 = Instance.new("Weld")
| |
| 474 | Weld317 = Instance.new("Weld")
| |
| 475 | Weld318 = Instance.new("Weld")
| |
| 476 | Weld319 = Instance.new("Weld")
| |
| 477 | Weld320 = Instance.new("Weld")
| |
| 478 | Weld321 = Instance.new("Weld")
| |
| 479 | Weld322 = Instance.new("Weld")
| |
| 480 | Weld323 = Instance.new("Weld")
| |
| 481 | Weld324 = Instance.new("Weld")
| |
| 482 | Weld325 = Instance.new("Weld")
| |
| 483 | Weld326 = Instance.new("Weld")
| |
| 484 | Weld327 = Instance.new("Weld")
| |
| 485 | Weld328 = Instance.new("Weld")
| |
| 486 | Weld329 = Instance.new("Weld")
| |
| 487 | Weld330 = Instance.new("Weld")
| |
| 488 | Weld331 = Instance.new("Weld")
| |
| 489 | Weld332 = Instance.new("Weld")
| |
| 490 | Weld333 = Instance.new("Weld")
| |
| 491 | Weld334 = Instance.new("Weld")
| |
| 492 | Weld335 = Instance.new("Weld")
| |
| 493 | Weld336 = Instance.new("Weld")
| |
| 494 | Weld337 = Instance.new("Weld")
| |
| 495 | Weld338 = Instance.new("Weld")
| |
| 496 | Weld339 = Instance.new("Weld")
| |
| 497 | Weld340 = Instance.new("Weld")
| |
| 498 | Weld341 = Instance.new("Weld")
| |
| 499 | Weld342 = Instance.new("Weld")
| |
| 500 | Weld343 = Instance.new("Weld")
| |
| 501 | Weld344 = Instance.new("Weld")
| |
| 502 | Weld345 = Instance.new("Weld")
| |
| 503 | Weld346 = Instance.new("Weld")
| |
| 504 | Weld347 = Instance.new("Weld")
| |
| 505 | Weld348 = Instance.new("Weld")
| |
| 506 | Weld349 = Instance.new("Weld")
| |
| 507 | Weld350 = Instance.new("Weld")
| |
| 508 | Weld351 = Instance.new("Weld")
| |
| 509 | Weld352 = Instance.new("Weld")
| |
| 510 | Weld353 = Instance.new("Weld")
| |
| 511 | Weld354 = Instance.new("Weld")
| |
| 512 | Weld355 = Instance.new("Weld")
| |
| 513 | Weld356 = Instance.new("Weld")
| |
| 514 | Weld357 = Instance.new("Weld")
| |
| 515 | Weld358 = Instance.new("Weld")
| |
| 516 | Weld359 = Instance.new("Weld")
| |
| 517 | Weld360 = Instance.new("Weld")
| |
| 518 | Weld361 = Instance.new("Weld")
| |
| 519 | Weld362 = Instance.new("Weld")
| |
| 520 | Weld363 = Instance.new("Weld")
| |
| 521 | Weld364 = Instance.new("Weld")
| |
| 522 | Weld365 = Instance.new("Weld")
| |
| 523 | Weld366 = Instance.new("Weld")
| |
| 524 | Part367 = Instance.new("Part")
| |
| 525 | Sound368 = Instance.new("Sound")
| |
| 526 | Sound369 = Instance.new("Sound")
| |
| 527 | Part370 = Instance.new("Part")
| |
| 528 | Sound371 = Instance.new("Sound")
| |
| 529 | Sound372 = Instance.new("Sound")
| |
| 530 | Model373 = Instance.new("Model")
| |
| 531 | Part374 = Instance.new("Part")
| |
| 532 | Decal375 = Instance.new("Decal")
| |
| 533 | Part376 = Instance.new("Part")
| |
| 534 | Decal377 = Instance.new("Decal")
| |
| 535 | Motor378 = Instance.new("Motor")
| |
| 536 | Motor379 = Instance.new("Motor")
| |
| 537 | Motor380 = Instance.new("Motor")
| |
| 538 | Motor381 = Instance.new("Motor")
| |
| 539 | Motor382 = Instance.new("Motor")
| |
| 540 | Part383 = Instance.new("Part")
| |
| 541 | Part384 = Instance.new("Part")
| |
| 542 | Part385 = Instance.new("Part")
| |
| 543 | Part386 = Instance.new("Part")
| |
| 544 | SpecialMesh387 = Instance.new("SpecialMesh")
| |
| 545 | Decal388 = Instance.new("Decal")
| |
| 546 | Decal389 = Instance.new("Decal")
| |
| 547 | Humanoid390 = Instance.new("Humanoid")
| |
| 548 | Script391 = Instance.new("Script")
| |
| 549 | Shirt392 = Instance.new("Shirt")
| |
| 550 | Pants393 = Instance.new("Pants")
| |
| 551 | Part394 = Instance.new("Part")
| |
| 552 | Tool0.Name = "Steamer" | |
| 553 | Tool0.Parent = mas | |
| 554 | Part1.Parent = Tool0 | |
| 555 | Part1.Material = Enum.Material.SmoothPlastic | |
| 556 | Part1.Transparency = 1 | |
| 557 | Part1.Rotation = Vector3.new(-60, 0, 165) | |
| 558 | Part1.Anchored = true | |
| 559 | Part1.CanCollide = false | |
| 560 | Part1.FormFactor = Enum.FormFactor.Custom | |
| 561 | Part1.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 562 | Part1.CFrame = CFrame.new(1435.38062, 48.6328773, -1311.01868, -0.965924263, -0.258825004, -6.07067022e-07, 0.12940903, -0.482951164, 0.866032064, -0.22415106, 0.836521268, 0.499988496) | |
| 563 | Part1.BottomSurface = Enum.SurfaceType.Smooth | |
| 564 | Part1.TopSurface = Enum.SurfaceType.Smooth | |
| 565 | Part1.Position = Vector3.new(1435.38062, 48.6328773, -1311.01868) | |
| 566 | Part1.Orientation = Vector3.new(-60, 0, 165) | |
| 567 | CylinderMesh2.Parent = Part1 | |
| 568 | CylinderMesh2.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277) | |
| 569 | CylinderMesh2.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277) | |
| 570 | Part3.Parent = Tool0 | |
| 571 | Part3.Material = Enum.Material.SmoothPlastic | |
| 572 | Part3.BrickColor = BrickColor.new("Nougat")
| |
| 573 | Part3.Transparency = 1 | |
| 574 | Part3.Rotation = Vector3.new(180, 0, 90) | |
| 575 | Part3.Anchored = true | |
| 576 | Part3.CanCollide = false | |
| 577 | Part3.FormFactor = Enum.FormFactor.Custom | |
| 578 | Part3.Size = Vector3.new(0.39847663, 0.339129031, 0.423911244) | |
| 579 | Part3.CFrame = CFrame.new(1434.30396, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 580 | Part3.BottomSurface = Enum.SurfaceType.Smooth | |
| 581 | Part3.TopSurface = Enum.SurfaceType.Smooth | |
| 582 | Part3.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 583 | Part3.Position = Vector3.new(1434.30396, 48.923233, -1310.87183) | |
| 584 | Part3.Orientation = Vector3.new(0, -180, -90) | |
| 585 | Part3.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 586 | CylinderMesh4.Parent = Part3 | |
| 587 | Part5.Parent = Tool0 | |
| 588 | Part5.Material = Enum.Material.SmoothPlastic | |
| 589 | Part5.BrickColor = BrickColor.new("Dark stone grey")
| |
| 590 | Part5.Transparency = 1 | |
| 591 | Part5.Rotation = Vector3.new(133.479996, 38.0400009, -171.679993) | |
| 592 | Part5.Anchored = true | |
| 593 | Part5.CanCollide = false | |
| 594 | Part5.FormFactor = Enum.FormFactor.Custom | |
| 595 | Part5.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 596 | Part5.CFrame = CFrame.new(1435.09131, 49.0662308, -1311.1488, -0.779332995, 0.114002213, 0.616152287, -0.342794985, 0.745554209, -0.571524739, -0.524529994, -0.656622052, -0.54195559) | |
| 597 | Part5.BottomSurface = Enum.SurfaceType.Smooth | |
| 598 | Part5.TopSurface = Enum.SurfaceType.Smooth | |
| 599 | Part5.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 600 | Part5.Position = Vector3.new(1435.09131, 49.0662308, -1311.1488) | |
| 601 | Part5.Orientation = Vector3.new(34.8600006, 131.330002, -24.6899986) | |
| 602 | Part5.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 603 | CylinderMesh6.Parent = Part5 | |
| 604 | CylinderMesh6.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 605 | CylinderMesh6.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 606 | Part7.Parent = Tool0 | |
| 607 | Part7.Material = Enum.Material.SmoothPlastic | |
| 608 | Part7.BrickColor = BrickColor.new("Black")
| |
| 609 | Part7.Transparency = 1 | |
| 610 | Part7.Rotation = Vector3.new(-105, 75, 90) | |
| 611 | Part7.Anchored = true | |
| 612 | Part7.CanCollide = false | |
| 613 | Part7.FormFactor = Enum.FormFactor.Custom | |
| 614 | Part7.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 615 | Part7.CFrame = CFrame.new(1434.85657, 49.1090851, -1311.08801, 0, -0.258817911, 0.965926111, -0.258811951, 0.93301481, 0.249999404, -0.96592778, -0.24999322, -0.0669851676) | |
| 616 | Part7.BottomSurface = Enum.SurfaceType.Smooth | |
| 617 | Part7.TopSurface = Enum.SurfaceType.Smooth | |
| 618 | Part7.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 619 | Part7.Position = Vector3.new(1434.85657, 49.1090851, -1311.08801) | |
| 620 | Part7.Orientation = Vector3.new(-14.4799995, 93.9700012, -15.5) | |
| 621 | Part7.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 622 | CylinderMesh8.Parent = Part7 | |
| 623 | CylinderMesh8.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277) | |
| 624 | CylinderMesh8.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277) | |
| 625 | Part9.Parent = Tool0 | |
| 626 | Part9.Material = Enum.Material.SmoothPlastic | |
| 627 | Part9.BrickColor = BrickColor.new("Dark stone grey")
| |
| 628 | Part9.Transparency = 1 | |
| 629 | Part9.Rotation = Vector3.new(15.0099993, 62.4199982, 2.98000002) | |
| 630 | Part9.Anchored = true | |
| 631 | Part9.CanCollide = false | |
| 632 | Part9.FormFactor = Enum.FormFactor.Custom | |
| 633 | Part9.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 634 | Part9.CFrame = CFrame.new(1435.07556, 49.067543, -1310.66211, 0.462388188, -0.0240549594, 0.886351287, 0.2793791, 0.95266664, -0.119890675, -0.841513276, 0.303064078, 0.447222203) | |
| 635 | Part9.BottomSurface = Enum.SurfaceType.Smooth | |
| 636 | Part9.TopSurface = Enum.SurfaceType.Smooth | |
| 637 | Part9.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 638 | Part9.Position = Vector3.new(1435.07556, 49.067543, -1310.66211) | |
| 639 | Part9.Orientation = Vector3.new(6.88999987, 63.2299995, 16.3400002) | |
| 640 | Part9.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 641 | CylinderMesh10.Parent = Part9 | |
| 642 | CylinderMesh10.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 643 | CylinderMesh10.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 644 | Part11.Parent = Tool0 | |
| 645 | Part11.Material = Enum.Material.SmoothPlastic | |
| 646 | Part11.BrickColor = BrickColor.new("Dark stone grey")
| |
| 647 | Part11.Transparency = 1 | |
| 648 | Part11.Rotation = Vector3.new(180, 0, 90) | |
| 649 | Part11.Anchored = true | |
| 650 | Part11.CanCollide = false | |
| 651 | Part11.FormFactor = Enum.FormFactor.Custom | |
| 652 | Part11.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 653 | Part11.CFrame = CFrame.new(1433.61292, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 654 | Part11.BottomSurface = Enum.SurfaceType.Smooth | |
| 655 | Part11.TopSurface = Enum.SurfaceType.Smooth | |
| 656 | Part11.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 657 | Part11.Position = Vector3.new(1433.61292, 48.9232292, -1310.87183) | |
| 658 | Part11.Orientation = Vector3.new(0, -180, -90) | |
| 659 | Part11.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 660 | CylinderMesh12.Parent = Part11 | |
| 661 | CylinderMesh12.Scale = Vector3.new(0.303541601, 0.0314008482, 0.523347139) | |
| 662 | CylinderMesh12.Scale = Vector3.new(0.303541601, 0.0314008482, 0.523347139) | |
| 663 | Part13.Parent = Tool0 | |
| 664 | Part13.Material = Enum.Material.SmoothPlastic | |
| 665 | Part13.BrickColor = BrickColor.new("Really black")
| |
| 666 | Part13.Transparency = 1 | |
| 667 | Part13.Rotation = Vector3.new(0, 90, 0) | |
| 668 | Part13.Anchored = true | |
| 669 | Part13.CanCollide = false | |
| 670 | Part13.FormFactor = Enum.FormFactor.Custom | |
| 671 | Part13.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 672 | Part13.CFrame = CFrame.new(1436.875, 48.5038071, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 673 | Part13.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 674 | Part13.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 675 | Part13.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 676 | Part13.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 677 | Part13.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 678 | Part13.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 679 | Part13.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 680 | Part13.Position = Vector3.new(1436.875, 48.5038071, -1310.87622) | |
| 681 | Part13.Orientation = Vector3.new(0, 90, 0) | |
| 682 | Part13.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 683 | SpecialMesh14.Parent = Part13 | |
| 684 | SpecialMesh14.Scale = Vector3.new(0.167988077, 0.439353347, 0.245521545) | |
| 685 | SpecialMesh14.MeshType = Enum.MeshType.Brick | |
| 686 | SpecialMesh14.Scale = Vector3.new(0.167988077, 0.439353347, 0.245521545) | |
| 687 | Part15.Parent = Tool0 | |
| 688 | Part15.Material = Enum.Material.SmoothPlastic | |
| 689 | Part15.BrickColor = BrickColor.new("Brick yellow")
| |
| 690 | Part15.Transparency = 1 | |
| 691 | Part15.Rotation = Vector3.new(-60, 0, 135) | |
| 692 | Part15.Anchored = true | |
| 693 | Part15.CanCollide = false | |
| 694 | Part15.FormFactor = Enum.FormFactor.Custom | |
| 695 | Part15.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 696 | Part15.CFrame = CFrame.new(1435.32275, 48.6293831, -1311.01672, -0.707099199, -0.707114458, 1.28547924e-06, 0.353550076, -0.353540927, 0.866031885, -0.612383127, 0.612370908, 0.499988824) | |
| 697 | Part15.BottomSurface = Enum.SurfaceType.Smooth | |
| 698 | Part15.TopSurface = Enum.SurfaceType.Smooth | |
| 699 | Part15.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 700 | Part15.Position = Vector3.new(1435.32275, 48.6293831, -1311.01672) | |
| 701 | Part15.Orientation = Vector3.new(-60, 0, 135) | |
| 702 | Part15.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 703 | CylinderMesh16.Parent = Part15 | |
| 704 | CylinderMesh16.Scale = Vector3.new(0.291783929, 0.705144346, 0.170207277) | |
| 705 | CylinderMesh16.Scale = Vector3.new(0.291783929, 0.705144346, 0.170207277) | |
| 706 | Part17.Name = "AimPart" | |
| 707 | Part17.Parent = Tool0 | |
| 708 | Part17.Material = Enum.Material.SmoothPlastic | |
| 709 | Part17.Transparency = 1 | |
| 710 | Part17.Rotation = Vector3.new(90, 87.8300018, -90) | |
| 711 | Part17.Anchored = true | |
| 712 | Part17.CanCollide = false | |
| 713 | Part17.FormFactor = Enum.FormFactor.Custom | |
| 714 | Part17.Size = Vector3.new(0.300000012, 0.200000003, 0.200000003) | |
| 715 | Part17.CFrame = CFrame.new(1436.29102, 49.267807, -1310.8728, 0, 0.0378389955, 0.99928385, 0, 0.99928385, -0.0378389955, -1, 0, 0) | |
| 716 | Part17.BottomSurface = Enum.SurfaceType.Smooth | |
| 717 | Part17.TopSurface = Enum.SurfaceType.Smooth | |
| 718 | Part17.Position = Vector3.new(1436.29102, 49.267807, -1310.8728) | |
| 719 | Part17.Orientation = Vector3.new(2.16999984, 90, 0) | |
| 720 | Part18.Name = "Main" | |
| 721 | Part18.Parent = Tool0 | |
| 722 | Part18.Material = Enum.Material.SmoothPlastic | |
| 723 | Part18.BrickColor = BrickColor.new("Really black")
| |
| 724 | Part18.Transparency = 1 | |
| 725 | Part18.Rotation = Vector3.new(0, 0, 90) | |
| 726 | Part18.Anchored = true | |
| 727 | Part18.CanCollide = false | |
| 728 | Part18.FormFactor = Enum.FormFactor.Custom | |
| 729 | Part18.Size = Vector3.new(0.25, 0.25, 0.25) | |
| 730 | Part18.CFrame = CFrame.new(1433.32568, 48.9478035, -1310.8728, 0, -1, 0, 1, 0, -0, 0, 0, 1) | |
| 731 | Part18.BottomSurface = Enum.SurfaceType.Smooth | |
| 732 | Part18.TopSurface = Enum.SurfaceType.Smooth | |
| 733 | Part18.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 734 | Part18.Position = Vector3.new(1433.32568, 48.9478035, -1310.8728) | |
| 735 | Part18.Orientation = Vector3.new(0, 0, 90) | |
| 736 | Part18.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 737 | PointLight19.Name = "FlashFX" | |
| 738 | PointLight19.Parent = Part18 | |
| 739 | PointLight19.Color = Color3.new(0.211765, 1, 0.054902) | |
| 740 | PointLight19.Enabled = false | |
| 741 | PointLight19.Brightness = 10 | |
| 742 | PointLight19.Range = 6 | |
| 743 | PointLight19.Shadows = true | |
| 744 | PointLight19.Color = Color3.new(0.211765, 1, 0.054902) | |
| 745 | BillboardGui20.Name = "FlashGui" | |
| 746 | BillboardGui20.Parent = Part18 | |
| 747 | BillboardGui20.Size = UDim2.new(1.10000002, 0, 1.10000002, 0) | |
| 748 | BillboardGui20.Enabled = false | |
| 749 | ImageLabel21.Name = "Label" | |
| 750 | ImageLabel21.Parent = BillboardGui20 | |
| 751 | ImageLabel21.Transparency = 1 | |
| 752 | ImageLabel21.Size = UDim2.new(1, 0, 1, 0) | |
| 753 | ImageLabel21.BackgroundTransparency = 1 | |
| 754 | ImageLabel21.Image = "http://www.roblox.com/asset/?id=192664810" | |
| 755 | ImageLabel21.ImageColor3 = Color3.new(0, 1, 0.00392157) | |
| 756 | CylinderMesh22.Parent = Part18 | |
| 757 | CylinderMesh22.Offset = Vector3.new(0, -0.248999998, 0) | |
| 758 | CylinderMesh22.Scale = Vector3.new(0.600000024, 1, 0.600000024) | |
| 759 | CylinderMesh22.Scale = Vector3.new(0.600000024, 1, 0.600000024) | |
| 760 | Part23.Name = "Handle" | |
| 761 | Part23.Parent = Tool0 | |
| 762 | Part23.Material = Enum.Material.SmoothPlastic | |
| 763 | Part23.Transparency = 1 | |
| 764 | Part23.Rotation = Vector3.new(0, 90, 0) | |
| 765 | Part23.Anchored = true | |
| 766 | Part23.CanCollide = false | |
| 767 | Part23.FormFactor = Enum.FormFactor.Custom | |
| 768 | Part23.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003) | |
| 769 | Part23.CFrame = CFrame.new(1435.87061, 48.4373131, -1310.86279, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 770 | Part23.BottomSurface = Enum.SurfaceType.Smooth | |
| 771 | Part23.TopSurface = Enum.SurfaceType.Smooth | |
| 772 | Part23.Position = Vector3.new(1435.87061, 48.4373131, -1310.86279) | |
| 773 | Part23.Orientation = Vector3.new(0, 90, 0) | |
| 774 | Sound24.Name = "FireSound" | |
| 775 | Sound24.Parent = Part23 | |
| 776 | Sound24.Pitch = 0.20000000298023 | |
| 777 | Sound24.SoundId = "rbxassetid://823426534" | |
| 778 | Sound24.Volume = 10 | |
| 779 | Sound25.Name = "ReloadSound" | |
| 780 | Sound25.Parent = Part23 | |
| 781 | Sound25.Pitch = 0.20000000298023 | |
| 782 | Sound25.SoundId = "rbxassetid://811242564" | |
| 783 | Sound25.Volume = 10 | |
| 784 | Part26.Parent = Tool0 | |
| 785 | Part26.Material = Enum.Material.SmoothPlastic | |
| 786 | Part26.BrickColor = BrickColor.new("Nougat")
| |
| 787 | Part26.Transparency = 1 | |
| 788 | Part26.Rotation = Vector3.new(180, 0, 90) | |
| 789 | Part26.Anchored = true | |
| 790 | Part26.CanCollide = false | |
| 791 | Part26.FormFactor = Enum.FormFactor.Custom | |
| 792 | Part26.Size = Vector3.new(0.27978155, 0.822387338, 0.423911244) | |
| 793 | Part26.CFrame = CFrame.new(1435.18982, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 794 | Part26.BottomSurface = Enum.SurfaceType.Smooth | |
| 795 | Part26.TopSurface = Enum.SurfaceType.Smooth | |
| 796 | Part26.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 797 | Part26.Position = Vector3.new(1435.18982, 48.9232292, -1310.87183) | |
| 798 | Part26.Orientation = Vector3.new(0, -180, -90) | |
| 799 | Part26.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 800 | CylinderMesh27.Parent = Part26 | |
| 801 | Part28.Name = "Smooth Block Model" | |
| 802 | Part28.Parent = Tool0 | |
| 803 | Part28.Material = Enum.Material.SmoothPlastic | |
| 804 | Part28.BrickColor = BrickColor.new("Dark stone grey")
| |
| 805 | Part28.Transparency = 1 | |
| 806 | Part28.Rotation = Vector3.new(-90, -15, -90) | |
| 807 | Part28.Anchored = true | |
| 808 | Part28.CanCollide = false | |
| 809 | Part28.FormFactor = Enum.FormFactor.Custom | |
| 810 | Part28.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 811 | Part28.CFrame = CFrame.new(1435.97473, 48.6492271, -1310.87183, 0, 0.965925872, -0.258818984, 0, 0.258818984, 0.965925872, 1, 0, 0) | |
| 812 | Part28.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 813 | Part28.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 814 | Part28.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 815 | Part28.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 816 | Part28.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 817 | Part28.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 818 | Part28.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 819 | Part28.Position = Vector3.new(1435.97473, 48.6492271, -1310.87183) | |
| 820 | Part28.Orientation = Vector3.new(-75, -90, 0) | |
| 821 | Part28.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 822 | SpecialMesh29.Parent = Part28 | |
| 823 | SpecialMesh29.Scale = Vector3.new(0.291783631, 0.170207217, 0.437675893) | |
| 824 | SpecialMesh29.MeshType = Enum.MeshType.Wedge | |
| 825 | SpecialMesh29.Scale = Vector3.new(0.291783631, 0.170207217, 0.437675893) | |
| 826 | Part30.Name = "Mag" | |
| 827 | Part30.Parent = Tool0 | |
| 828 | Part30.Material = Enum.Material.SmoothPlastic | |
| 829 | Part30.BrickColor = BrickColor.new("Dark stone grey")
| |
| 830 | Part30.Transparency = 1 | |
| 831 | Part30.Rotation = Vector3.new(0, 90, 0) | |
| 832 | Part30.Anchored = true | |
| 833 | Part30.CanCollide = false | |
| 834 | Part30.FormFactor = Enum.FormFactor.Custom | |
| 835 | Part30.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 836 | Part30.CFrame = CFrame.new(1435.36523, 48.273735, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 837 | Part30.BottomSurface = Enum.SurfaceType.Smooth | |
| 838 | Part30.TopSurface = Enum.SurfaceType.Smooth | |
| 839 | Part30.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 840 | Part30.Position = Vector3.new(1435.36523, 48.273735, -1310.88025) | |
| 841 | Part30.Orientation = Vector3.new(0, 90, 0) | |
| 842 | Part30.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 843 | SpecialMesh31.Parent = Part30 | |
| 844 | SpecialMesh31.Scale = Vector3.new(0.630397201, 0.190620154, 0.390246093) | |
| 845 | SpecialMesh31.MeshType = Enum.MeshType.Brick | |
| 846 | SpecialMesh31.Scale = Vector3.new(0.630397201, 0.190620154, 0.390246093) | |
| 847 | Decal32.Parent = Part30 | |
| 848 | Decal32.Texture = "http://www.roblox.com/asset/?id=2276240" | |
| 849 | Decal32.Face = Enum.NormalId.Right | |
| 850 | Decal33.Parent = Part30 | |
| 851 | Decal33.Texture = "http://www.roblox.com/asset/?id=2276240" | |
| 852 | Decal33.Face = Enum.NormalId.Left | |
| 853 | Part34.Name = "Mag" | |
| 854 | Part34.Parent = Tool0 | |
| 855 | Part34.Material = Enum.Material.SmoothPlastic | |
| 856 | Part34.BrickColor = BrickColor.new("Dark stone grey")
| |
| 857 | Part34.Transparency = 1 | |
| 858 | Part34.Rotation = Vector3.new(0, 90, 0) | |
| 859 | Part34.Anchored = true | |
| 860 | Part34.CanCollide = false | |
| 861 | Part34.FormFactor = Enum.FormFactor.Custom | |
| 862 | Part34.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 863 | Part34.CFrame = CFrame.new(1435.31006, 48.3118896, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 864 | Part34.BottomSurface = Enum.SurfaceType.Smooth | |
| 865 | Part34.TopSurface = Enum.SurfaceType.Smooth | |
| 866 | Part34.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 867 | Part34.Position = Vector3.new(1435.31006, 48.3118896, -1310.88025) | |
| 868 | Part34.Orientation = Vector3.new(0, 90, 0) | |
| 869 | Part34.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 870 | SpecialMesh35.Parent = Part34 | |
| 871 | SpecialMesh35.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234) | |
| 872 | SpecialMesh35.MeshType = Enum.MeshType.Brick | |
| 873 | SpecialMesh35.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234) | |
| 874 | Part36.Name = "Mag" | |
| 875 | Part36.Parent = Tool0 | |
| 876 | Part36.Material = Enum.Material.SmoothPlastic | |
| 877 | Part36.BrickColor = BrickColor.new("Dark stone grey")
| |
| 878 | Part36.Transparency = 1 | |
| 879 | Part36.Rotation = Vector3.new(0, 90, 0) | |
| 880 | Part36.Anchored = true | |
| 881 | Part36.CanCollide = false | |
| 882 | Part36.FormFactor = Enum.FormFactor.Custom | |
| 883 | Part36.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 884 | Part36.CFrame = CFrame.new(1435.42041, 48.3114662, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 885 | Part36.BottomSurface = Enum.SurfaceType.Smooth | |
| 886 | Part36.TopSurface = Enum.SurfaceType.Smooth | |
| 887 | Part36.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 888 | Part36.Position = Vector3.new(1435.42041, 48.3114662, -1310.88025) | |
| 889 | Part36.Orientation = Vector3.new(0, 90, 0) | |
| 890 | Part36.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 891 | SpecialMesh37.Parent = Part36 | |
| 892 | SpecialMesh37.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234) | |
| 893 | SpecialMesh37.MeshType = Enum.MeshType.Brick | |
| 894 | SpecialMesh37.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234) | |
| 895 | Part38.Name = "Mag" | |
| 896 | Part38.Parent = Tool0 | |
| 897 | Part38.Material = Enum.Material.SmoothPlastic | |
| 898 | Part38.BrickColor = BrickColor.new("Cool yellow")
| |
| 899 | Part38.Transparency = 1 | |
| 900 | Part38.Rotation = Vector3.new(0, 90, 0) | |
| 901 | Part38.Anchored = true | |
| 902 | Part38.CanCollide = false | |
| 903 | Part38.FormFactor = Enum.FormFactor.Custom | |
| 904 | Part38.Size = Vector3.new(1, 1, 1) | |
| 905 | Part38.CFrame = CFrame.new(1435.36523, 48.3523445, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 906 | Part38.BottomSurface = Enum.SurfaceType.Smooth | |
| 907 | Part38.TopSurface = Enum.SurfaceType.Smooth | |
| 908 | Part38.Color = Color3.new(0.992157, 0.917647, 0.552941) | |
| 909 | Part38.Position = Vector3.new(1435.36523, 48.3523445, -1310.88025) | |
| 910 | Part38.Orientation = Vector3.new(0, 90, 0) | |
| 911 | Part38.Color = Color3.new(0.992157, 0.917647, 0.552941) | |
| 912 | CylinderMesh39.Parent = Part38 | |
| 913 | CylinderMesh39.Scale = Vector3.new(0.178042755, 0.203477502, 0.194999233) | |
| 914 | CylinderMesh39.Scale = Vector3.new(0.178042755, 0.203477502, 0.194999233) | |
| 915 | Part40.Name = "Mag" | |
| 916 | Part40.Parent = Tool0 | |
| 917 | Part40.Material = Enum.Material.SmoothPlastic | |
| 918 | Part40.BrickColor = BrickColor.new("Dark stone grey")
| |
| 919 | Part40.Transparency = 1 | |
| 920 | Part40.Rotation = Vector3.new(0, 90, 0) | |
| 921 | Part40.Anchored = true | |
| 922 | Part40.CanCollide = false | |
| 923 | Part40.FormFactor = Enum.FormFactor.Custom | |
| 924 | Part40.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 925 | Part40.CFrame = CFrame.new(1435.36523, 48.373539, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 926 | Part40.BottomSurface = Enum.SurfaceType.Smooth | |
| 927 | Part40.TopSurface = Enum.SurfaceType.Smooth | |
| 928 | Part40.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 929 | Part40.Position = Vector3.new(1435.36523, 48.373539, -1310.88025) | |
| 930 | Part40.Orientation = Vector3.new(0, 90, 0) | |
| 931 | Part40.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 932 | CylinderMesh41.Parent = Part40 | |
| 933 | CylinderMesh41.Scale = Vector3.new(0.240739763, 0.0314008482, 0.240739793) | |
| 934 | CylinderMesh41.Scale = Vector3.new(0.240739763, 0.0314008482, 0.240739793) | |
| 935 | Part42.Name = "Mag" | |
| 936 | Part42.Parent = Tool0 | |
| 937 | Part42.Material = Enum.Material.SmoothPlastic | |
| 938 | Part42.BrickColor = BrickColor.new("Bright red")
| |
| 939 | Part42.Transparency = 1 | |
| 940 | Part42.Rotation = Vector3.new(0, 90, 0) | |
| 941 | Part42.Anchored = true | |
| 942 | Part42.CanCollide = false | |
| 943 | Part42.FormFactor = Enum.FormFactor.Custom | |
| 944 | Part42.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 945 | Part42.CFrame = CFrame.new(1435.36523, 48.3438797, -1310.88013, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 946 | Part42.BottomSurface = Enum.SurfaceType.Smooth | |
| 947 | Part42.TopSurface = Enum.SurfaceType.Smooth | |
| 948 | Part42.Color = Color3.new(0.768628, 0.156863, 0.109804) | |
| 949 | Part42.Position = Vector3.new(1435.36523, 48.3438797, -1310.88013) | |
| 950 | Part42.Orientation = Vector3.new(0, 90, 0) | |
| 951 | Part42.Color = Color3.new(0.768628, 0.156863, 0.109804) | |
| 952 | CylinderMesh43.Parent = Part42 | |
| 953 | CylinderMesh43.Scale = Vector3.new(0.640904009, 0.0300189275, 0.690435052) | |
| 954 | CylinderMesh43.Scale = Vector3.new(0.640904009, 0.0300189275, 0.690435052) | |
| 955 | Part44.Name = "Mag" | |
| 956 | Part44.Parent = Tool0 | |
| 957 | Part44.Material = Enum.Material.SmoothPlastic | |
| 958 | Part44.BrickColor = BrickColor.new("Dark stone grey")
| |
| 959 | Part44.Transparency = 1 | |
| 960 | Part44.Rotation = Vector3.new(90, 0, -90) | |
| 961 | Part44.Anchored = true | |
| 962 | Part44.CanCollide = false | |
| 963 | Part44.FormFactor = Enum.FormFactor.Custom | |
| 964 | Part44.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 965 | Part44.CFrame = CFrame.new(1435.36548, 48.474556, -1310.88025, 0, 1, 0, 0, 0, -1, -1, 0, 0) | |
| 966 | Part44.BottomSurface = Enum.SurfaceType.Smooth | |
| 967 | Part44.TopSurface = Enum.SurfaceType.Smooth | |
| 968 | Part44.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 969 | Part44.Position = Vector3.new(1435.36548, 48.474556, -1310.88025) | |
| 970 | Part44.Orientation = Vector3.new(90, 90, 0) | |
| 971 | Part44.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 972 | SpecialMesh45.Parent = Part44 | |
| 973 | SpecialMesh45.Scale = Vector3.new(0.319065601, 0.31906575, 0.191439345) | |
| 974 | SpecialMesh45.MeshType = Enum.MeshType.Sphere | |
| 975 | SpecialMesh45.Scale = Vector3.new(0.319065601, 0.31906575, 0.191439345) | |
| 976 | Part46.Name = "Mag" | |
| 977 | Part46.Parent = Tool0 | |
| 978 | Part46.Material = Enum.Material.SmoothPlastic | |
| 979 | Part46.BrickColor = BrickColor.new("Dark stone grey")
| |
| 980 | Part46.Transparency = 1 | |
| 981 | Part46.Rotation = Vector3.new(0, 90, 0) | |
| 982 | Part46.Anchored = true | |
| 983 | Part46.CanCollide = false | |
| 984 | Part46.FormFactor = Enum.FormFactor.Custom | |
| 985 | Part46.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 986 | Part46.CFrame = CFrame.new(1435.36523, 48.4667969, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 987 | Part46.BottomSurface = Enum.SurfaceType.Smooth | |
| 988 | Part46.TopSurface = Enum.SurfaceType.Smooth | |
| 989 | Part46.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 990 | Part46.Position = Vector3.new(1435.36523, 48.4667969, -1310.88025) | |
| 991 | Part46.Orientation = Vector3.new(0, 90, 0) | |
| 992 | Part46.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 993 | CylinderMesh47.Parent = Part46 | |
| 994 | CylinderMesh47.Scale = Vector3.new(0.219805866, 0.0314008482, 0.240739793) | |
| 995 | CylinderMesh47.Scale = Vector3.new(0.219805866, 0.0314008482, 0.240739793) | |
| 996 | Part48.Name = "Mag" | |
| 997 | Part48.Parent = Tool0 | |
| 998 | Part48.Material = Enum.Material.SmoothPlastic | |
| 999 | Part48.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1000 | Part48.Transparency = 1 | |
| 1001 | Part48.Rotation = Vector3.new(0, 90, 0) | |
| 1002 | Part48.Anchored = true | |
| 1003 | Part48.CanCollide = false | |
| 1004 | Part48.FormFactor = Enum.FormFactor.Custom | |
| 1005 | Part48.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 1006 | Part48.CFrame = CFrame.new(1435.36108, 48.4771957, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1007 | Part48.BottomSurface = Enum.SurfaceType.Smooth | |
| 1008 | Part48.TopSurface = Enum.SurfaceType.Smooth | |
| 1009 | Part48.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1010 | Part48.Position = Vector3.new(1435.36108, 48.4771957, -1310.87622) | |
| 1011 | Part48.Orientation = Vector3.new(0, 90, 0) | |
| 1012 | Part48.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1013 | SpecialMesh49.Parent = Part48 | |
| 1014 | SpecialMesh49.Scale = Vector3.new(0.660416245, 0.190620154, 0.180113614) | |
| 1015 | SpecialMesh49.MeshType = Enum.MeshType.Brick | |
| 1016 | SpecialMesh49.Scale = Vector3.new(0.660416245, 0.190620154, 0.180113614) | |
| 1017 | Decal50.Parent = Part48 | |
| 1018 | Decal50.Texture = "http://www.roblox.com/asset/?id=2276263" | |
| 1019 | Decal50.Face = Enum.NormalId.Right | |
| 1020 | Decal51.Parent = Part48 | |
| 1021 | Decal51.Texture = "http://www.roblox.com/asset/?id=2276263" | |
| 1022 | Decal51.Face = Enum.NormalId.Left | |
| 1023 | Part52.Parent = Tool0 | |
| 1024 | Part52.Material = Enum.Material.SmoothPlastic | |
| 1025 | Part52.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1026 | Part52.Transparency = 1 | |
| 1027 | Part52.Rotation = Vector3.new(-90, 0, 90) | |
| 1028 | Part52.Anchored = true | |
| 1029 | Part52.CanCollide = false | |
| 1030 | Part52.FormFactor = Enum.FormFactor.Custom | |
| 1031 | Part52.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188) | |
| 1032 | Part52.CFrame = CFrame.new(1435.20679, 48.6519432, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 1033 | Part52.BottomSurface = Enum.SurfaceType.Smooth | |
| 1034 | Part52.TopSurface = Enum.SurfaceType.Smooth | |
| 1035 | Part52.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1036 | Part52.Position = Vector3.new(1435.20679, 48.6519432, -1310.87183) | |
| 1037 | Part52.Orientation = Vector3.new(-90, 90, 0) | |
| 1038 | Part52.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1039 | SpecialMesh53.Parent = Part52 | |
| 1040 | SpecialMesh53.Scale = Vector3.new(0.236344978, 2.93461728, 0.17725873) | |
| 1041 | SpecialMesh53.MeshType = Enum.MeshType.Brick | |
| 1042 | SpecialMesh53.Scale = Vector3.new(0.236344978, 2.93461728, 0.17725873) | |
| 1043 | Part54.Parent = Tool0 | |
| 1044 | Part54.Material = Enum.Material.SmoothPlastic | |
| 1045 | Part54.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1046 | Part54.Transparency = 1 | |
| 1047 | Part54.Rotation = Vector3.new(0, 90, 0) | |
| 1048 | Part54.Anchored = true | |
| 1049 | Part54.CanCollide = false | |
| 1050 | Part54.FormFactor = Enum.FormFactor.Custom | |
| 1051 | Part54.Size = Vector3.new(1, 1, 1) | |
| 1052 | Part54.CFrame = CFrame.new(1436.06531, 48.6182861, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1053 | Part54.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1054 | Part54.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1055 | Part54.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1056 | Part54.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1057 | Part54.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1058 | Part54.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1059 | Part54.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1060 | Part54.Position = Vector3.new(1436.06531, 48.6182861, -1310.87183) | |
| 1061 | Part54.Orientation = Vector3.new(0, 90, 0) | |
| 1062 | Part54.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1063 | SpecialMesh55.Parent = Part54 | |
| 1064 | SpecialMesh55.Scale = Vector3.new(0.0339129046, 0.0423911363, 0.593476057) | |
| 1065 | SpecialMesh55.MeshType = Enum.MeshType.Brick | |
| 1066 | SpecialMesh55.Scale = Vector3.new(0.0339129046, 0.0423911363, 0.593476057) | |
| 1067 | Part56.Parent = Tool0 | |
| 1068 | Part56.Material = Enum.Material.SmoothPlastic | |
| 1069 | Part56.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1070 | Part56.Transparency = 1 | |
| 1071 | Part56.Rotation = Vector3.new(180, 0, 90) | |
| 1072 | Part56.Anchored = true | |
| 1073 | Part56.CanCollide = false | |
| 1074 | Part56.FormFactor = Enum.FormFactor.Custom | |
| 1075 | Part56.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 1076 | Part56.CFrame = CFrame.new(1433.85034, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1077 | Part56.BottomSurface = Enum.SurfaceType.Smooth | |
| 1078 | Part56.TopSurface = Enum.SurfaceType.Smooth | |
| 1079 | Part56.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1080 | Part56.Position = Vector3.new(1433.85034, 48.923233, -1310.87183) | |
| 1081 | Part56.Orientation = Vector3.new(0, -180, -90) | |
| 1082 | Part56.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1083 | CylinderMesh57.Parent = Part56 | |
| 1084 | CylinderMesh57.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521) | |
| 1085 | CylinderMesh57.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521) | |
| 1086 | Part58.Parent = Tool0 | |
| 1087 | Part58.Material = Enum.Material.SmoothPlastic | |
| 1088 | Part58.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1089 | Part58.Transparency = 1 | |
| 1090 | Part58.Rotation = Vector3.new(180, 0, 90) | |
| 1091 | Part58.Anchored = true | |
| 1092 | Part58.CanCollide = false | |
| 1093 | Part58.FormFactor = Enum.FormFactor.Custom | |
| 1094 | Part58.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857) | |
| 1095 | Part58.CFrame = CFrame.new(1435.21533, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1096 | Part58.BottomSurface = Enum.SurfaceType.Smooth | |
| 1097 | Part58.TopSurface = Enum.SurfaceType.Smooth | |
| 1098 | Part58.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1099 | Part58.Position = Vector3.new(1435.21533, 48.9020348, -1310.87183) | |
| 1100 | Part58.Orientation = Vector3.new(0, -180, -90) | |
| 1101 | Part58.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1102 | CylinderMesh59.Parent = Part58 | |
| 1103 | CylinderMesh59.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052) | |
| 1104 | CylinderMesh59.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052) | |
| 1105 | Part60.Parent = Tool0 | |
| 1106 | Part60.Material = Enum.Material.SmoothPlastic | |
| 1107 | Part60.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1108 | Part60.Transparency = 1 | |
| 1109 | Part60.Rotation = Vector3.new(90, 75, -90) | |
| 1110 | Part60.Anchored = true | |
| 1111 | Part60.CanCollide = false | |
| 1112 | Part60.FormFactor = Enum.FormFactor.Custom | |
| 1113 | Part60.Size = Vector3.new(1, 1, 1) | |
| 1114 | Part60.CFrame = CFrame.new(1436.37439, 48.852356, -1310.87183, 0, 0.258818984, 0.965925872, 0, 0.965925872, -0.258818984, -1, 0, 0) | |
| 1115 | Part60.BottomSurface = Enum.SurfaceType.Smooth | |
| 1116 | Part60.TopSurface = Enum.SurfaceType.Smooth | |
| 1117 | Part60.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1118 | Part60.Position = Vector3.new(1436.37439, 48.852356, -1310.87183) | |
| 1119 | Part60.Orientation = Vector3.new(15, 90, 0) | |
| 1120 | Part60.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1121 | SpecialMesh61.Parent = Part60 | |
| 1122 | SpecialMesh61.Scale = Vector3.new(0.0339129046, 0.050869368, 0.568041325) | |
| 1123 | SpecialMesh61.MeshType = Enum.MeshType.Brick | |
| 1124 | SpecialMesh61.Scale = Vector3.new(0.0339129046, 0.050869368, 0.568041325) | |
| 1125 | Part62.Parent = Tool0 | |
| 1126 | Part62.Material = Enum.Material.SmoothPlastic | |
| 1127 | Part62.BrickColor = BrickColor.new("Medium green")
| |
| 1128 | Part62.Reflectance = 0.40000000596046 | |
| 1129 | Part62.Transparency = 1 | |
| 1130 | Part62.Rotation = Vector3.new(-90, 0, -90) | |
| 1131 | Part62.Anchored = true | |
| 1132 | Part62.CanCollide = false | |
| 1133 | Part62.FormFactor = Enum.FormFactor.Custom | |
| 1134 | Part62.Size = Vector3.new(1, 1, 1) | |
| 1135 | Part62.CFrame = CFrame.new(1436.0885, 48.923233, -1310.96509, 0, 1, 0, 0, 0, 1, 1, 0, 0) | |
| 1136 | Part62.BottomSurface = Enum.SurfaceType.Smooth | |
| 1137 | Part62.TopSurface = Enum.SurfaceType.Smooth | |
| 1138 | Part62.Color = Color3.new(0.631373, 0.768628, 0.54902) | |
| 1139 | Part62.Position = Vector3.new(1436.0885, 48.923233, -1310.96509) | |
| 1140 | Part62.Orientation = Vector3.new(-90, -90, 0) | |
| 1141 | Part62.Color = Color3.new(0.631373, 0.768628, 0.54902) | |
| 1142 | CylinderMesh63.Parent = Part62 | |
| 1143 | CylinderMesh63.Scale = Vector3.new(0.101738736, 0.754562199, 0.0339129157) | |
| 1144 | CylinderMesh63.Scale = Vector3.new(0.101738736, 0.754562199, 0.0339129157) | |
| 1145 | Part64.Parent = Tool0 | |
| 1146 | Part64.Material = Enum.Material.SmoothPlastic | |
| 1147 | Part64.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1148 | Part64.Transparency = 1 | |
| 1149 | Part64.Rotation = Vector3.new(-150.599991, 32.2399979, -23.1999989) | |
| 1150 | Part64.Anchored = true | |
| 1151 | Part64.CanCollide = false | |
| 1152 | Part64.FormFactor = Enum.FormFactor.Custom | |
| 1153 | Part64.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 1154 | Part64.CFrame = CFrame.new(1434.84216, 49.1045074, -1310.66235, 0.777458727, 0.333219469, 0.533406675, 0.102508962, -0.903908193, 0.415261477, 0.620523751, -0.268169731, -0.73690933) | |
| 1155 | Part64.BottomSurface = Enum.SurfaceType.Smooth | |
| 1156 | Part64.TopSurface = Enum.SurfaceType.Smooth | |
| 1157 | Part64.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1158 | Part64.Position = Vector3.new(1434.84216, 49.1045074, -1310.66235) | |
| 1159 | Part64.Orientation = Vector3.new(-24.539999, 144.099991, 173.529999) | |
| 1160 | Part64.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1161 | CylinderMesh65.Parent = Part64 | |
| 1162 | CylinderMesh65.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 1163 | CylinderMesh65.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 1164 | Part66.Parent = Tool0 | |
| 1165 | Part66.Material = Enum.Material.SmoothPlastic | |
| 1166 | Part66.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1167 | Part66.Transparency = 1 | |
| 1168 | Part66.Rotation = Vector3.new(-90, 0, 90) | |
| 1169 | Part66.Anchored = true | |
| 1170 | Part66.CanCollide = false | |
| 1171 | Part66.FormFactor = Enum.FormFactor.Custom | |
| 1172 | Part66.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 1173 | Part66.CFrame = CFrame.new(1435.35938, 48.60532, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 1174 | Part66.BottomSurface = Enum.SurfaceType.Smooth | |
| 1175 | Part66.TopSurface = Enum.SurfaceType.Smooth | |
| 1176 | Part66.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1177 | Part66.Position = Vector3.new(1435.35938, 48.60532, -1310.87183) | |
| 1178 | Part66.Orientation = Vector3.new(-90, 90, 0) | |
| 1179 | Part66.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1180 | SpecialMesh67.Parent = Part66 | |
| 1181 | SpecialMesh67.Scale = Vector3.new(0.188405082, 0.450078517, 0.177938163) | |
| 1182 | SpecialMesh67.MeshType = Enum.MeshType.Brick | |
| 1183 | SpecialMesh67.Scale = Vector3.new(0.188405082, 0.450078517, 0.177938163) | |
| 1184 | Part68.Parent = Tool0 | |
| 1185 | Part68.Material = Enum.Material.SmoothPlastic | |
| 1186 | Part68.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1187 | Part68.Transparency = 1 | |
| 1188 | Part68.Rotation = Vector3.new(0, 90, 0) | |
| 1189 | Part68.Anchored = true | |
| 1190 | Part68.CanCollide = false | |
| 1191 | Part68.FormFactor = Enum.FormFactor.Custom | |
| 1192 | Part68.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 1193 | Part68.CFrame = CFrame.new(1436.875, 48.6733971, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1194 | Part68.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1195 | Part68.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1196 | Part68.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1197 | Part68.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1198 | Part68.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1199 | Part68.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1200 | Part68.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1201 | Part68.Position = Vector3.new(1436.875, 48.6733971, -1310.87622) | |
| 1202 | Part68.Orientation = Vector3.new(0, 90, 0) | |
| 1203 | Part68.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1204 | SpecialMesh69.Parent = Part68 | |
| 1205 | SpecialMesh69.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072) | |
| 1206 | SpecialMesh69.MeshType = Enum.MeshType.Brick | |
| 1207 | SpecialMesh69.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072) | |
| 1208 | Part70.Parent = Tool0 | |
| 1209 | Part70.Material = Enum.Material.SmoothPlastic | |
| 1210 | Part70.BrickColor = BrickColor.new("Black")
| |
| 1211 | Part70.Transparency = 1 | |
| 1212 | Part70.Rotation = Vector3.new(50.7299995, 45.0399971, -40.1399994) | |
| 1213 | Part70.Anchored = true | |
| 1214 | Part70.CanCollide = false | |
| 1215 | Part70.FormFactor = Enum.FormFactor.Custom | |
| 1216 | Part70.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1217 | Part70.CFrame = CFrame.new(1435.48877, 48.9965515, -1310.62427, 0.540129244, 0.455500901, 0.707657695, 0.0107550053, 0.837061286, -0.547003508, -0.841513395, 0.303063482, 0.447222352) | |
| 1218 | Part70.BottomSurface = Enum.SurfaceType.Smooth | |
| 1219 | Part70.TopSurface = Enum.SurfaceType.Smooth | |
| 1220 | Part70.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1221 | Part70.Position = Vector3.new(1435.48877, 48.9965515, -1310.62427) | |
| 1222 | Part70.Orientation = Vector3.new(33.1599998, 57.7099991, 0.74000001) | |
| 1223 | Part70.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1224 | CylinderMesh71.Parent = Part70 | |
| 1225 | CylinderMesh71.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277) | |
| 1226 | CylinderMesh71.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277) | |
| 1227 | Part72.Parent = Tool0 | |
| 1228 | Part72.Material = Enum.Material.SmoothPlastic | |
| 1229 | Part72.BrickColor = BrickColor.new("Black")
| |
| 1230 | Part72.Transparency = 1 | |
| 1231 | Part72.Rotation = Vector3.new(90, 0, 90) | |
| 1232 | Part72.Anchored = true | |
| 1233 | Part72.CanCollide = false | |
| 1234 | Part72.FormFactor = Enum.FormFactor.Custom | |
| 1235 | Part72.Size = Vector3.new(1, 1, 1) | |
| 1236 | Part72.CFrame = CFrame.new(1435.60107, 48.9062729, -1310.87183, 0, -1, 0, 0, 0, -1, 1, 0, 0) | |
| 1237 | Part72.BottomSurface = Enum.SurfaceType.Smooth | |
| 1238 | Part72.TopSurface = Enum.SurfaceType.Smooth | |
| 1239 | Part72.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1240 | Part72.Position = Vector3.new(1435.60107, 48.9062729, -1310.87183) | |
| 1241 | Part72.Orientation = Vector3.new(90, -90, 0) | |
| 1242 | Part72.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1243 | SpecialMesh73.Parent = Part72 | |
| 1244 | SpecialMesh73.Scale = Vector3.new(0.440867633, 0.186521009, 0.432389498) | |
| 1245 | SpecialMesh73.MeshType = Enum.MeshType.Sphere | |
| 1246 | SpecialMesh73.Scale = Vector3.new(0.440867633, 0.186521009, 0.432389498) | |
| 1247 | Part74.Parent = Tool0 | |
| 1248 | Part74.Material = Enum.Material.SmoothPlastic | |
| 1249 | Part74.Transparency = 1 | |
| 1250 | Part74.Rotation = Vector3.new(-90, -30, -90) | |
| 1251 | Part74.Anchored = true | |
| 1252 | Part74.CanCollide = false | |
| 1253 | Part74.FormFactor = Enum.FormFactor.Custom | |
| 1254 | Part74.Size = Vector3.new(1, 1, 1) | |
| 1255 | Part74.CFrame = CFrame.new(1436.73303, 48.074337, -1310.87183, 0, 0.866025388, -0.500000238, 0, 0.500000238, 0.866025388, 1, 0, 0) | |
| 1256 | Part74.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1257 | Part74.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1258 | Part74.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1259 | Part74.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1260 | Part74.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1261 | Part74.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1262 | Part74.Position = Vector3.new(1436.73303, 48.074337, -1310.87183) | |
| 1263 | Part74.Orientation = Vector3.new(-60, -90, 0) | |
| 1264 | CylinderMesh75.Parent = Part74 | |
| 1265 | CylinderMesh75.Scale = Vector3.new(0.101738736, 0.127173409, 0.0339129157) | |
| 1266 | CylinderMesh75.Scale = Vector3.new(0.101738736, 0.127173409, 0.0339129157) | |
| 1267 | Part76.Parent = Tool0 | |
| 1268 | Part76.Material = Enum.Material.SmoothPlastic | |
| 1269 | Part76.BrickColor = BrickColor.new("Brick yellow")
| |
| 1270 | Part76.Transparency = 1 | |
| 1271 | Part76.Rotation = Vector3.new(-0.870000005, -12.9499998, -157.62999) | |
| 1272 | Part76.Anchored = true | |
| 1273 | Part76.CanCollide = false | |
| 1274 | Part76.FormFactor = Enum.FormFactor.Custom | |
| 1275 | Part76.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1276 | Part76.CFrame = CFrame.new(1435.48877, 48.7422256, -1311.07788, -0.901220024, 0.370889217, -0.224151224, -0.383668005, -0.923353195, 0.0147557557, -0.201498002, 0.0992978215, 0.97444272) | |
| 1277 | Part76.BottomSurface = Enum.SurfaceType.Smooth | |
| 1278 | Part76.TopSurface = Enum.SurfaceType.Smooth | |
| 1279 | Part76.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1280 | Part76.Position = Vector3.new(1435.48877, 48.7422256, -1311.07788) | |
| 1281 | Part76.Orientation = Vector3.new(-0.849999964, -12.9499998, -157.440002) | |
| 1282 | Part76.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1283 | CylinderMesh77.Parent = Part76 | |
| 1284 | CylinderMesh77.Scale = Vector3.new(0.291783929, 0.525211275, 0.170207277) | |
| 1285 | CylinderMesh77.Scale = Vector3.new(0.291783929, 0.525211275, 0.170207277) | |
| 1286 | Part78.Parent = Tool0 | |
| 1287 | Part78.Material = Enum.Material.SmoothPlastic | |
| 1288 | Part78.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1289 | Part78.Transparency = 1 | |
| 1290 | Part78.Rotation = Vector3.new(180, 0, 90) | |
| 1291 | Part78.Anchored = true | |
| 1292 | Part78.CanCollide = false | |
| 1293 | Part78.FormFactor = Enum.FormFactor.Custom | |
| 1294 | Part78.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857) | |
| 1295 | Part78.CFrame = CFrame.new(1434.98645, 48.9189987, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1296 | Part78.BottomSurface = Enum.SurfaceType.Smooth | |
| 1297 | Part78.TopSurface = Enum.SurfaceType.Smooth | |
| 1298 | Part78.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1299 | Part78.Position = Vector3.new(1434.98645, 48.9189987, -1310.87183) | |
| 1300 | Part78.Orientation = Vector3.new(0, -180, -90) | |
| 1301 | Part78.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1302 | CylinderMesh79.Parent = Part78 | |
| 1303 | CylinderMesh79.Scale = Vector3.new(1.55653632, 0.185301825, 1.85301888) | |
| 1304 | CylinderMesh79.Scale = Vector3.new(1.55653632, 0.185301825, 1.85301888) | |
| 1305 | Part80.Parent = Tool0 | |
| 1306 | Part80.Material = Enum.Material.SmoothPlastic | |
| 1307 | Part80.BrickColor = BrickColor.new("Brick yellow")
| |
| 1308 | Part80.Transparency = 1 | |
| 1309 | Part80.Rotation = Vector3.new(43.0599976, 7.44000006, -165.119995) | |
| 1310 | Part80.Anchored = true | |
| 1311 | Part80.CanCollide = false | |
| 1312 | Part80.FormFactor = Enum.FormFactor.Custom | |
| 1313 | Part80.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1314 | Part80.CFrame = CFrame.new(1435.44849, 48.841629, -1311.05676, -0.958352566, 0.25458324, 0.129413933, -0.272977144, -0.683412135, -0.677075565, -0.0839290544, -0.684204161, 0.724445105) | |
| 1315 | Part80.BottomSurface = Enum.SurfaceType.Smooth | |
| 1316 | Part80.TopSurface = Enum.SurfaceType.Smooth | |
| 1317 | Part80.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1318 | Part80.Position = Vector3.new(1435.44849, 48.841629, -1311.05676) | |
| 1319 | Part80.Orientation = Vector3.new(42.6199989, 10.1300001, -158.229996) | |
| 1320 | Part80.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1321 | CylinderMesh81.Parent = Part80 | |
| 1322 | CylinderMesh81.Scale = Vector3.new(0.291783929, 0.316099197, 0.170207277) | |
| 1323 | CylinderMesh81.Scale = Vector3.new(0.291783929, 0.316099197, 0.170207277) | |
| 1324 | Part82.Parent = Tool0 | |
| 1325 | Part82.Material = Enum.Material.SmoothPlastic | |
| 1326 | Part82.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1327 | Part82.Transparency = 1 | |
| 1328 | Part82.Rotation = Vector3.new(-90, 75, 90) | |
| 1329 | Part82.Anchored = true | |
| 1330 | Part82.CanCollide = false | |
| 1331 | Part82.FormFactor = Enum.FormFactor.Custom | |
| 1332 | Part82.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 1333 | Part82.CFrame = CFrame.new(1435.99597, 48.211853, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0) | |
| 1334 | Part82.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1335 | Part82.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1336 | Part82.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1337 | Part82.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1338 | Part82.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1339 | Part82.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1340 | Part82.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1341 | Part82.Position = Vector3.new(1435.99597, 48.211853, -1310.87183) | |
| 1342 | Part82.Orientation = Vector3.new(-15, 90, 0) | |
| 1343 | Part82.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1344 | CylinderMesh83.Parent = Part82 | |
| 1345 | CylinderMesh83.Scale = Vector3.new(0.360227078, 0.180113435, 0.390246034) | |
| 1346 | CylinderMesh83.Scale = Vector3.new(0.360227078, 0.180113435, 0.390246034) | |
| 1347 | Part84.Parent = Tool0 | |
| 1348 | Part84.Material = Enum.Material.SmoothPlastic | |
| 1349 | Part84.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1350 | Part84.Transparency = 1 | |
| 1351 | Part84.Rotation = Vector3.new(180, 0, 90) | |
| 1352 | Part84.Anchored = true | |
| 1353 | Part84.CanCollide = false | |
| 1354 | Part84.FormFactor = Enum.FormFactor.Custom | |
| 1355 | Part84.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 1356 | Part84.CFrame = CFrame.new(1433.5498, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1357 | Part84.BottomSurface = Enum.SurfaceType.Smooth | |
| 1358 | Part84.TopSurface = Enum.SurfaceType.Smooth | |
| 1359 | Part84.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1360 | Part84.Position = Vector3.new(1433.5498, 48.9232292, -1310.87183) | |
| 1361 | Part84.Orientation = Vector3.new(0, -180, -90) | |
| 1362 | Part84.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1363 | CylinderMesh85.Parent = Part84 | |
| 1364 | CylinderMesh85.Scale = Vector3.new(0.031400837, 0.124556653, 0.1674712) | |
| 1365 | CylinderMesh85.Scale = Vector3.new(0.031400837, 0.124556653, 0.1674712) | |
| 1366 | Part86.Parent = Tool0 | |
| 1367 | Part86.Material = Enum.Material.SmoothPlastic | |
| 1368 | Part86.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1369 | Part86.Transparency = 1 | |
| 1370 | Part86.Rotation = Vector3.new(90, 90, 0) | |
| 1371 | Part86.Anchored = true | |
| 1372 | Part86.CanCollide = false | |
| 1373 | Part86.FormFactor = Enum.FormFactor.Custom | |
| 1374 | Part86.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188) | |
| 1375 | Part86.CFrame = CFrame.new(1434.89648, 48.9697227, -1310.87622, 0, 0, 1, 1, 0, 0, 0, 1, 0) | |
| 1376 | Part86.BottomSurface = Enum.SurfaceType.Smooth | |
| 1377 | Part86.TopSurface = Enum.SurfaceType.Smooth | |
| 1378 | Part86.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1379 | Part86.Position = Vector3.new(1434.89648, 48.9697227, -1310.87622) | |
| 1380 | Part86.Orientation = Vector3.new(0, 90, 90) | |
| 1381 | Part86.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1382 | CylinderMesh87.Parent = Part86 | |
| 1383 | CylinderMesh87.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948) | |
| 1384 | CylinderMesh87.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948) | |
| 1385 | Decal88.Parent = Part86 | |
| 1386 | Decal88.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1387 | Decal88.Face = Enum.NormalId.Bottom | |
| 1388 | Decal89.Parent = Part86 | |
| 1389 | Decal89.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1390 | Decal89.Face = Enum.NormalId.Top | |
| 1391 | Part90.Parent = Tool0 | |
| 1392 | Part90.Material = Enum.Material.SmoothPlastic | |
| 1393 | Part90.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1394 | Part90.Transparency = 1 | |
| 1395 | Part90.Rotation = Vector3.new(-90, 60, 90) | |
| 1396 | Part90.Anchored = true | |
| 1397 | Part90.CanCollide = false | |
| 1398 | Part90.FormFactor = Enum.FormFactor.Custom | |
| 1399 | Part90.Size = Vector3.new(1, 1, 1) | |
| 1400 | Part90.CFrame = CFrame.new(1436.48157, 48.7061806, -1310.87183, 0, -0.499998987, 0.866025984, 0, 0.866025984, 0.499998987, -1, 0, 0) | |
| 1401 | Part90.BottomSurface = Enum.SurfaceType.Smooth | |
| 1402 | Part90.TopSurface = Enum.SurfaceType.Smooth | |
| 1403 | Part90.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1404 | Part90.Position = Vector3.new(1436.48157, 48.7061806, -1310.87183) | |
| 1405 | Part90.Orientation = Vector3.new(-30, 90, 0) | |
| 1406 | Part90.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1407 | SpecialMesh91.Parent = Part90 | |
| 1408 | SpecialMesh91.Scale = Vector3.new(0.0339129046, 0.033912912, 0.356085896) | |
| 1409 | SpecialMesh91.MeshType = Enum.MeshType.Brick | |
| 1410 | SpecialMesh91.Scale = Vector3.new(0.0339129046, 0.033912912, 0.356085896) | |
| 1411 | Part92.Parent = Tool0 | |
| 1412 | Part92.Material = Enum.Material.SmoothPlastic | |
| 1413 | Part92.BrickColor = BrickColor.new("Black")
| |
| 1414 | Part92.Transparency = 1 | |
| 1415 | Part92.Rotation = Vector3.new(-90, 0, 90) | |
| 1416 | Part92.Anchored = true | |
| 1417 | Part92.CanCollide = false | |
| 1418 | Part92.FormFactor = Enum.FormFactor.Custom | |
| 1419 | Part92.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 1420 | Part92.CFrame = CFrame.new(1434.32935, 48.9232292, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 1421 | Part92.BottomSurface = Enum.SurfaceType.Smooth | |
| 1422 | Part92.TopSurface = Enum.SurfaceType.Smooth | |
| 1423 | Part92.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1424 | Part92.Position = Vector3.new(1434.32935, 48.9232292, -1310.87183) | |
| 1425 | Part92.Orientation = Vector3.new(-90, 90, 0) | |
| 1426 | Part92.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1427 | SpecialMesh93.Parent = Part92 | |
| 1428 | SpecialMesh93.Scale = Vector3.new(0.797663748, 0.701944053, 0.175486133) | |
| 1429 | SpecialMesh93.MeshType = Enum.MeshType.Brick | |
| 1430 | SpecialMesh93.Scale = Vector3.new(0.797663748, 0.701944053, 0.175486133) | |
| 1431 | Part94.Parent = Tool0 | |
| 1432 | Part94.Material = Enum.Material.SmoothPlastic | |
| 1433 | Part94.BrickColor = BrickColor.new("Black")
| |
| 1434 | Part94.Transparency = 1 | |
| 1435 | Part94.Rotation = Vector3.new(180, 0, 90) | |
| 1436 | Part94.Anchored = true | |
| 1437 | Part94.CanCollide = false | |
| 1438 | Part94.FormFactor = Enum.FormFactor.Custom | |
| 1439 | Part94.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 1440 | Part94.CFrame = CFrame.new(1434.4989, 48.9062729, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1441 | Part94.BottomSurface = Enum.SurfaceType.Smooth | |
| 1442 | Part94.TopSurface = Enum.SurfaceType.Smooth | |
| 1443 | Part94.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1444 | Part94.Position = Vector3.new(1434.4989, 48.9062729, -1310.87183) | |
| 1445 | Part94.Orientation = Vector3.new(0, -180, -90) | |
| 1446 | Part94.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1447 | CylinderMesh95.Parent = Part94 | |
| 1448 | CylinderMesh95.Scale = Vector3.new(1.53096449, 0.180113405, 1.50094533) | |
| 1449 | CylinderMesh95.Scale = Vector3.new(1.53096449, 0.180113405, 1.50094533) | |
| 1450 | Part96.Parent = Tool0 | |
| 1451 | Part96.Material = Enum.Material.SmoothPlastic | |
| 1452 | Part96.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1453 | Part96.Transparency = 1 | |
| 1454 | Part96.Rotation = Vector3.new(0, 90, 0) | |
| 1455 | Part96.Anchored = true | |
| 1456 | Part96.CanCollide = false | |
| 1457 | Part96.FormFactor = Enum.FormFactor.Custom | |
| 1458 | Part96.Size = Vector3.new(1, 1, 1) | |
| 1459 | Part96.CFrame = CFrame.new(1436.85803, 48.7793694, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1460 | Part96.BottomSurface = Enum.SurfaceType.Smooth | |
| 1461 | Part96.TopSurface = Enum.SurfaceType.Smooth | |
| 1462 | Part96.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1463 | Part96.Position = Vector3.new(1436.85803, 48.7793694, -1310.87183) | |
| 1464 | Part96.Orientation = Vector3.new(0, 90, 0) | |
| 1465 | Part96.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1466 | SpecialMesh97.Parent = Part96 | |
| 1467 | SpecialMesh97.Scale = Vector3.new(0.0339129046, 0.050869368, 0.466302693) | |
| 1468 | SpecialMesh97.MeshType = Enum.MeshType.Brick | |
| 1469 | SpecialMesh97.Scale = Vector3.new(0.0339129046, 0.050869368, 0.466302693) | |
| 1470 | Part98.Parent = Tool0 | |
| 1471 | Part98.Material = Enum.Material.SmoothPlastic | |
| 1472 | Part98.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1473 | Part98.Transparency = 1 | |
| 1474 | Part98.Rotation = Vector3.new(-90, 75, 90) | |
| 1475 | Part98.Anchored = true | |
| 1476 | Part98.CanCollide = false | |
| 1477 | Part98.FormFactor = Enum.FormFactor.Custom | |
| 1478 | Part98.Size = Vector3.new(1, 1, 1) | |
| 1479 | Part98.CFrame = CFrame.new(1437.1134, 48.5151291, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0) | |
| 1480 | Part98.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1481 | Part98.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1482 | Part98.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1483 | Part98.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1484 | Part98.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1485 | Part98.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1486 | Part98.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1487 | Part98.Position = Vector3.new(1437.1134, 48.5151291, -1310.87183) | |
| 1488 | Part98.Orientation = Vector3.new(-15, 90, 0) | |
| 1489 | Part98.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1490 | SpecialMesh99.Parent = Part98 | |
| 1491 | SpecialMesh99.Scale = Vector3.new(0.0339129046, 0.584997475, 0.127173796) | |
| 1492 | SpecialMesh99.MeshType = Enum.MeshType.Brick | |
| 1493 | SpecialMesh99.Scale = Vector3.new(0.0339129046, 0.584997475, 0.127173796) | |
| 1494 | Part100.Parent = Tool0 | |
| 1495 | Part100.Material = Enum.Material.SmoothPlastic | |
| 1496 | Part100.BrickColor = BrickColor.new("Medium green")
| |
| 1497 | Part100.Reflectance = 0.40000000596046 | |
| 1498 | Part100.Transparency = 1 | |
| 1499 | Part100.Rotation = Vector3.new(-90, 30, -90) | |
| 1500 | Part100.Anchored = true | |
| 1501 | Part100.CanCollide = false | |
| 1502 | Part100.FormFactor = Enum.FormFactor.Custom | |
| 1503 | Part100.Size = Vector3.new(1, 1, 1) | |
| 1504 | Part100.CFrame = CFrame.new(1436.54248, 48.8766403, -1310.96448, 0, 0.866027117, 0.499997079, 0, -0.49999705, 0.866027176, 1, 0, 0) | |
| 1505 | Part100.BottomSurface = Enum.SurfaceType.Smooth | |
| 1506 | Part100.TopSurface = Enum.SurfaceType.Smooth | |
| 1507 | Part100.Color = Color3.new(0.631373, 0.768628, 0.54902) | |
| 1508 | Part100.Position = Vector3.new(1436.54248, 48.8766403, -1310.96448) | |
| 1509 | Part100.Orientation = Vector3.new(-60, 90, 180) | |
| 1510 | Part100.Color = Color3.new(0.631373, 0.768628, 0.54902) | |
| 1511 | CylinderMesh101.Parent = Part100 | |
| 1512 | CylinderMesh101.Scale = Vector3.new(0.101738736, 0.194999218, 0.0339129157) | |
| 1513 | CylinderMesh101.Scale = Vector3.new(0.101738736, 0.194999218, 0.0339129157) | |
| 1514 | Part102.Parent = Tool0 | |
| 1515 | Part102.Material = Enum.Material.SmoothPlastic | |
| 1516 | Part102.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1517 | Part102.Transparency = 1 | |
| 1518 | Part102.Rotation = Vector3.new(-90, -90, 0) | |
| 1519 | Part102.Anchored = true | |
| 1520 | Part102.CanCollide = false | |
| 1521 | Part102.FormFactor = Enum.FormFactor.Custom | |
| 1522 | Part102.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 1523 | Part102.CFrame = CFrame.new(1435.24072, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0) | |
| 1524 | Part102.BottomSurface = Enum.SurfaceType.Smooth | |
| 1525 | Part102.TopSurface = Enum.SurfaceType.Smooth | |
| 1526 | Part102.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1527 | Part102.Position = Vector3.new(1435.24072, 48.6010742, -1310.87183) | |
| 1528 | Part102.Orientation = Vector3.new(0, -90, 90) | |
| 1529 | Part102.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1530 | CylinderMesh103.Parent = Part102 | |
| 1531 | CylinderMesh103.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103) | |
| 1532 | CylinderMesh103.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103) | |
| 1533 | Decal104.Parent = Part102 | |
| 1534 | Decal104.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1535 | Decal104.Face = Enum.NormalId.Bottom | |
| 1536 | Part105.Parent = Tool0 | |
| 1537 | Part105.Material = Enum.Material.SmoothPlastic | |
| 1538 | Part105.BrickColor = BrickColor.new("Black")
| |
| 1539 | Part105.Transparency = 1 | |
| 1540 | Part105.Rotation = Vector3.new(-150.599991, 32.2399979, -23.1999989) | |
| 1541 | Part105.Anchored = true | |
| 1542 | Part105.CanCollide = false | |
| 1543 | Part105.FormFactor = Enum.FormFactor.Custom | |
| 1544 | Part105.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1545 | Part105.CFrame = CFrame.new(1434.84009, 49.1090317, -1310.6604, 0.777458727, 0.333219469, 0.533406675, 0.102508962, -0.903908193, 0.415261477, 0.620523751, -0.268169731, -0.73690933) | |
| 1546 | Part105.BottomSurface = Enum.SurfaceType.Smooth | |
| 1547 | Part105.TopSurface = Enum.SurfaceType.Smooth | |
| 1548 | Part105.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1549 | Part105.Position = Vector3.new(1434.84009, 49.1090317, -1310.6604) | |
| 1550 | Part105.Orientation = Vector3.new(-24.539999, 144.099991, 173.529999) | |
| 1551 | Part105.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1552 | CylinderMesh106.Parent = Part105 | |
| 1553 | CylinderMesh106.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277) | |
| 1554 | CylinderMesh106.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277) | |
| 1555 | Part107.Parent = Tool0 | |
| 1556 | Part107.Material = Enum.Material.SmoothPlastic | |
| 1557 | Part107.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1558 | Part107.Transparency = 1 | |
| 1559 | Part107.Rotation = Vector3.new(180, 0, 90) | |
| 1560 | Part107.Anchored = true | |
| 1561 | Part107.CanCollide = false | |
| 1562 | Part107.FormFactor = Enum.FormFactor.Custom | |
| 1563 | Part107.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857) | |
| 1564 | Part107.CFrame = CFrame.new(1435.56287, 48.897789, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1565 | Part107.BottomSurface = Enum.SurfaceType.Smooth | |
| 1566 | Part107.TopSurface = Enum.SurfaceType.Smooth | |
| 1567 | Part107.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1568 | Part107.Position = Vector3.new(1435.56287, 48.897789, -1310.87183) | |
| 1569 | Part107.Orientation = Vector3.new(0, -180, -90) | |
| 1570 | Part107.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1571 | CylinderMesh108.Parent = Part107 | |
| 1572 | CylinderMesh108.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052) | |
| 1573 | CylinderMesh108.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052) | |
| 1574 | Part109.Parent = Tool0 | |
| 1575 | Part109.Material = Enum.Material.SmoothPlastic | |
| 1576 | Part109.BrickColor = BrickColor.new("Black")
| |
| 1577 | Part109.Transparency = 1 | |
| 1578 | Part109.Rotation = Vector3.new(133.479996, 38.0400009, -171.679993) | |
| 1579 | Part109.Anchored = true | |
| 1580 | Part109.CanCollide = false | |
| 1581 | Part109.FormFactor = Enum.FormFactor.Custom | |
| 1582 | Part109.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1583 | Part109.CFrame = CFrame.new(1435.08655, 49.0373726, -1311.1228, -0.779332995, 0.114002213, 0.616152287, -0.342794985, 0.745554209, -0.571524739, -0.524529994, -0.656622052, -0.54195559) | |
| 1584 | Part109.BottomSurface = Enum.SurfaceType.Smooth | |
| 1585 | Part109.TopSurface = Enum.SurfaceType.Smooth | |
| 1586 | Part109.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1587 | Part109.Position = Vector3.new(1435.08655, 49.0373726, -1311.1228) | |
| 1588 | Part109.Orientation = Vector3.new(34.8600006, 131.330002, -24.6899986) | |
| 1589 | Part109.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 1590 | CylinderMesh110.Parent = Part109 | |
| 1591 | CylinderMesh110.Scale = Vector3.new(0.170207247, 0.899666727, 0.170207277) | |
| 1592 | CylinderMesh110.Scale = Vector3.new(0.170207247, 0.899666727, 0.170207277) | |
| 1593 | Part111.Parent = Tool0 | |
| 1594 | Part111.Material = Enum.Material.SmoothPlastic | |
| 1595 | Part111.BrickColor = BrickColor.new("Nougat")
| |
| 1596 | Part111.Transparency = 1 | |
| 1597 | Part111.Rotation = Vector3.new(180, 0, 90) | |
| 1598 | Part111.Anchored = true | |
| 1599 | Part111.CanCollide = false | |
| 1600 | Part111.FormFactor = Enum.FormFactor.Custom | |
| 1601 | Part111.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188) | |
| 1602 | Part111.CFrame = CFrame.new(1435.56287, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1603 | Part111.BottomSurface = Enum.SurfaceType.Smooth | |
| 1604 | Part111.TopSurface = Enum.SurfaceType.Smooth | |
| 1605 | Part111.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 1606 | Part111.Position = Vector3.new(1435.56287, 48.9020348, -1310.87183) | |
| 1607 | Part111.Orientation = Vector3.new(0, -180, -90) | |
| 1608 | Part111.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 1609 | CylinderMesh112.Parent = Part111 | |
| 1610 | CylinderMesh112.Scale = Vector3.new(1.0241611, 0.17725873, 1.02416098) | |
| 1611 | CylinderMesh112.Scale = Vector3.new(1.0241611, 0.17725873, 1.02416098) | |
| 1612 | Part113.Parent = Tool0 | |
| 1613 | Part113.Material = Enum.Material.SmoothPlastic | |
| 1614 | Part113.BrickColor = BrickColor.new("Brick yellow")
| |
| 1615 | Part113.Transparency = 1 | |
| 1616 | Part113.Rotation = Vector3.new(-60, 0, 165) | |
| 1617 | Part113.Anchored = true | |
| 1618 | Part113.CanCollide = false | |
| 1619 | Part113.FormFactor = Enum.FormFactor.Custom | |
| 1620 | Part113.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1621 | Part113.CFrame = CFrame.new(1435.49927, 48.6328773, -1311.01025, -0.965924263, -0.258825004, -6.07067022e-07, 0.12940903, -0.482951164, 0.866032064, -0.22415106, 0.836521268, 0.499988496) | |
| 1622 | Part113.BottomSurface = Enum.SurfaceType.Smooth | |
| 1623 | Part113.TopSurface = Enum.SurfaceType.Smooth | |
| 1624 | Part113.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1625 | Part113.Position = Vector3.new(1435.49927, 48.6328773, -1311.01025) | |
| 1626 | Part113.Orientation = Vector3.new(-60, 0, 165) | |
| 1627 | Part113.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1628 | CylinderMesh114.Parent = Part113 | |
| 1629 | CylinderMesh114.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277) | |
| 1630 | CylinderMesh114.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277) | |
| 1631 | Part115.Parent = Tool0 | |
| 1632 | Part115.Material = Enum.Material.SmoothPlastic | |
| 1633 | Part115.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1634 | Part115.Transparency = 1 | |
| 1635 | Part115.Rotation = Vector3.new(90, 90, 0) | |
| 1636 | Part115.Anchored = true | |
| 1637 | Part115.CanCollide = false | |
| 1638 | Part115.FormFactor = Enum.FormFactor.Custom | |
| 1639 | Part115.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 1640 | Part115.CFrame = CFrame.new(1435.43909, 48.8383217, -1310.84216, 0, 0, 1, 1, 0, 0, 0, 1, 0) | |
| 1641 | Part115.BottomSurface = Enum.SurfaceType.Smooth | |
| 1642 | Part115.TopSurface = Enum.SurfaceType.Smooth | |
| 1643 | Part115.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1644 | Part115.Position = Vector3.new(1435.43909, 48.8383217, -1310.84216) | |
| 1645 | Part115.Orientation = Vector3.new(0, 90, 90) | |
| 1646 | Part115.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1647 | CylinderMesh116.Parent = Part115 | |
| 1648 | CylinderMesh116.Scale = Vector3.new(0.16747117, 0.533814311, 0.167471215) | |
| 1649 | CylinderMesh116.Scale = Vector3.new(0.16747117, 0.533814311, 0.167471215) | |
| 1650 | Decal117.Parent = Part115 | |
| 1651 | Decal117.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1652 | Decal117.Face = Enum.NormalId.Top | |
| 1653 | Part118.Parent = Tool0 | |
| 1654 | Part118.Material = Enum.Material.SmoothPlastic | |
| 1655 | Part118.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1656 | Part118.Transparency = 1 | |
| 1657 | Part118.Rotation = Vector3.new(-90, -90, 0) | |
| 1658 | Part118.Anchored = true | |
| 1659 | Part118.CanCollide = false | |
| 1660 | Part118.FormFactor = Enum.FormFactor.Custom | |
| 1661 | Part118.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 1662 | Part118.CFrame = CFrame.new(1435.35938, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0) | |
| 1663 | Part118.BottomSurface = Enum.SurfaceType.Smooth | |
| 1664 | Part118.TopSurface = Enum.SurfaceType.Smooth | |
| 1665 | Part118.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1666 | Part118.Position = Vector3.new(1435.35938, 48.6010742, -1310.87183) | |
| 1667 | Part118.Orientation = Vector3.new(0, -90, 90) | |
| 1668 | Part118.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1669 | CylinderMesh119.Parent = Part118 | |
| 1670 | CylinderMesh119.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103) | |
| 1671 | CylinderMesh119.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103) | |
| 1672 | Decal120.Parent = Part118 | |
| 1673 | Decal120.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1674 | Decal120.Face = Enum.NormalId.Bottom | |
| 1675 | Part121.Parent = Tool0 | |
| 1676 | Part121.Material = Enum.Material.SmoothPlastic | |
| 1677 | Part121.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1678 | Part121.Transparency = 1 | |
| 1679 | Part121.Rotation = Vector3.new(50.7299995, 45.0399971, -40.1399994) | |
| 1680 | Part121.Anchored = true | |
| 1681 | Part121.CanCollide = false | |
| 1682 | Part121.FormFactor = Enum.FormFactor.Custom | |
| 1683 | Part121.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 1684 | Part121.CFrame = CFrame.new(1435.49548, 49.0076942, -1310.61987, 0.540129244, 0.455500901, 0.707657695, 0.0107550053, 0.837061286, -0.547003508, -0.841513395, 0.303063482, 0.447222352) | |
| 1685 | Part121.BottomSurface = Enum.SurfaceType.Smooth | |
| 1686 | Part121.TopSurface = Enum.SurfaceType.Smooth | |
| 1687 | Part121.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1688 | Part121.Position = Vector3.new(1435.49548, 49.0076942, -1310.61987) | |
| 1689 | Part121.Orientation = Vector3.new(33.1599998, 57.7099991, 0.74000001) | |
| 1690 | Part121.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1691 | CylinderMesh122.Parent = Part121 | |
| 1692 | CylinderMesh122.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 1693 | CylinderMesh122.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 1694 | Part123.Parent = Tool0 | |
| 1695 | Part123.Material = Enum.Material.SmoothPlastic | |
| 1696 | Part123.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1697 | Part123.Transparency = 1 | |
| 1698 | Part123.Rotation = Vector3.new(90, 90, 0) | |
| 1699 | Part123.Anchored = true | |
| 1700 | Part123.CanCollide = false | |
| 1701 | Part123.FormFactor = Enum.FormFactor.Custom | |
| 1702 | Part123.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188) | |
| 1703 | Part123.CFrame = CFrame.new(1435.07629, 48.9167862, -1310.87622, 0, 0, 1, 1, 0, 0, 0, 1, 0) | |
| 1704 | Part123.BottomSurface = Enum.SurfaceType.Smooth | |
| 1705 | Part123.TopSurface = Enum.SurfaceType.Smooth | |
| 1706 | Part123.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1707 | Part123.Position = Vector3.new(1435.07629, 48.9167862, -1310.87622) | |
| 1708 | Part123.Orientation = Vector3.new(0, 90, 90) | |
| 1709 | Part123.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1710 | CylinderMesh124.Parent = Part123 | |
| 1711 | CylinderMesh124.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948) | |
| 1712 | CylinderMesh124.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948) | |
| 1713 | Decal125.Parent = Part123 | |
| 1714 | Decal125.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1715 | Decal125.Face = Enum.NormalId.Bottom | |
| 1716 | Decal126.Parent = Part123 | |
| 1717 | Decal126.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1718 | Decal126.Face = Enum.NormalId.Top | |
| 1719 | Part127.Parent = Tool0 | |
| 1720 | Part127.Material = Enum.Material.SmoothPlastic | |
| 1721 | Part127.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1722 | Part127.Transparency = 1 | |
| 1723 | Part127.Rotation = Vector3.new(0, 90, 0) | |
| 1724 | Part127.Anchored = true | |
| 1725 | Part127.CanCollide = false | |
| 1726 | Part127.FormFactor = Enum.FormFactor.Custom | |
| 1727 | Part127.Size = Vector3.new(1, 1, 1) | |
| 1728 | Part127.CFrame = CFrame.new(1436.00879, 48.9263649, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1729 | Part127.BottomSurface = Enum.SurfaceType.Smooth | |
| 1730 | Part127.TopSurface = Enum.SurfaceType.Smooth | |
| 1731 | Part127.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1732 | Part127.Position = Vector3.new(1436.00879, 48.9263649, -1310.87183) | |
| 1733 | Part127.Orientation = Vector3.new(0, 90, 0) | |
| 1734 | Part127.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1735 | SpecialMesh128.Parent = Part127 | |
| 1736 | SpecialMesh128.Scale = Vector3.new(0.0339129046, 0.0508693606, 0.194999248) | |
| 1737 | SpecialMesh128.MeshType = Enum.MeshType.Brick | |
| 1738 | SpecialMesh128.Scale = Vector3.new(0.0339129046, 0.0508693606, 0.194999248) | |
| 1739 | Part129.Parent = Tool0 | |
| 1740 | Part129.Material = Enum.Material.SmoothPlastic | |
| 1741 | Part129.BrickColor = BrickColor.new("Nougat")
| |
| 1742 | Part129.Transparency = 1 | |
| 1743 | Part129.Rotation = Vector3.new(180, 0, 90) | |
| 1744 | Part129.Anchored = true | |
| 1745 | Part129.CanCollide = false | |
| 1746 | Part129.FormFactor = Enum.FormFactor.Custom | |
| 1747 | Part129.Size = Vector3.new(1, 1, 1) | |
| 1748 | Part129.CFrame = CFrame.new(1435.26624, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1749 | Part129.BottomSurface = Enum.SurfaceType.Smooth | |
| 1750 | Part129.TopSurface = Enum.SurfaceType.Smooth | |
| 1751 | Part129.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 1752 | Part129.Position = Vector3.new(1435.26624, 48.9020348, -1310.87183) | |
| 1753 | Part129.Orientation = Vector3.new(0, -180, -90) | |
| 1754 | Part129.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 1755 | CylinderMesh130.Parent = Part129 | |
| 1756 | CylinderMesh130.Scale = Vector3.new(0.440867692, 0.194999263, 0.440867722) | |
| 1757 | CylinderMesh130.Scale = Vector3.new(0.440867692, 0.194999263, 0.440867722) | |
| 1758 | Part131.Parent = Tool0 | |
| 1759 | Part131.Material = Enum.Material.SmoothPlastic | |
| 1760 | Part131.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1761 | Part131.Transparency = 1 | |
| 1762 | Part131.Rotation = Vector3.new(-90, -90, 0) | |
| 1763 | Part131.Anchored = true | |
| 1764 | Part131.CanCollide = false | |
| 1765 | Part131.FormFactor = Enum.FormFactor.Custom | |
| 1766 | Part131.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 1767 | Part131.CFrame = CFrame.new(1435.47815, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0) | |
| 1768 | Part131.BottomSurface = Enum.SurfaceType.Smooth | |
| 1769 | Part131.TopSurface = Enum.SurfaceType.Smooth | |
| 1770 | Part131.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1771 | Part131.Position = Vector3.new(1435.47815, 48.6010742, -1310.87183) | |
| 1772 | Part131.Orientation = Vector3.new(0, -90, 90) | |
| 1773 | Part131.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1774 | CylinderMesh132.Parent = Part131 | |
| 1775 | CylinderMesh132.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103) | |
| 1776 | CylinderMesh132.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103) | |
| 1777 | Decal133.Parent = Part131 | |
| 1778 | Decal133.Texture = "http://www.roblox.com/asset/?id=78474663" | |
| 1779 | Decal133.Face = Enum.NormalId.Bottom | |
| 1780 | Part134.Parent = Tool0 | |
| 1781 | Part134.Material = Enum.Material.SmoothPlastic | |
| 1782 | Part134.Transparency = 1 | |
| 1783 | Part134.Rotation = Vector3.new(-90, 60, 90) | |
| 1784 | Part134.Anchored = true | |
| 1785 | Part134.CanCollide = false | |
| 1786 | Part134.FormFactor = Enum.FormFactor.Custom | |
| 1787 | Part134.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1788 | Part134.CFrame = CFrame.new(1436.03064, 48.1612701, -1310.87183, 0, -0.499998987, 0.866025984, 0, 0.866025984, 0.499998987, -1, 0, 0) | |
| 1789 | Part134.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1790 | Part134.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1791 | Part134.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1792 | Part134.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1793 | Part134.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1794 | Part134.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1795 | Part134.Position = Vector3.new(1436.03064, 48.1612701, -1310.87183) | |
| 1796 | Part134.Orientation = Vector3.new(-30, 90, 0) | |
| 1797 | CylinderMesh135.Parent = Part134 | |
| 1798 | CylinderMesh135.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277) | |
| 1799 | CylinderMesh135.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277) | |
| 1800 | Part136.Parent = Tool0 | |
| 1801 | Part136.Material = Enum.Material.SmoothPlastic | |
| 1802 | Part136.Transparency = 1 | |
| 1803 | Part136.Rotation = Vector3.new(0, 90, 0) | |
| 1804 | Part136.Anchored = true | |
| 1805 | Part136.CanCollide = false | |
| 1806 | Part136.FormFactor = Enum.FormFactor.Custom | |
| 1807 | Part136.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002) | |
| 1808 | Part136.CFrame = CFrame.new(1435.36523, 48.5261421, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1809 | Part136.BottomSurface = Enum.SurfaceType.Smooth | |
| 1810 | Part136.TopSurface = Enum.SurfaceType.Smooth | |
| 1811 | Part136.Position = Vector3.new(1435.36523, 48.5261421, -1310.88025) | |
| 1812 | Part136.Orientation = Vector3.new(0, 90, 0) | |
| 1813 | CylinderMesh137.Parent = Part136 | |
| 1814 | CylinderMesh137.Scale = Vector3.new(0.219805866, 0.0314008482, 0.136070341) | |
| 1815 | CylinderMesh137.Scale = Vector3.new(0.219805866, 0.0314008482, 0.136070341) | |
| 1816 | Part138.Parent = Tool0 | |
| 1817 | Part138.Material = Enum.Material.SmoothPlastic | |
| 1818 | Part138.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1819 | Part138.Transparency = 1 | |
| 1820 | Part138.Rotation = Vector3.new(90, 45, -90) | |
| 1821 | Part138.Anchored = true | |
| 1822 | Part138.CanCollide = false | |
| 1823 | Part138.FormFactor = Enum.FormFactor.Custom | |
| 1824 | Part138.Size = Vector3.new(1, 1, 1) | |
| 1825 | Part138.CFrame = CFrame.new(1436.54016, 48.4395027, -1310.87183, 0, 0.707106829, 0.707106829, 0, 0.707106829, -0.707106829, -1, 0, 0) | |
| 1826 | Part138.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1827 | Part138.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1828 | Part138.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1829 | Part138.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1830 | Part138.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1831 | Part138.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1832 | Part138.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1833 | Part138.Position = Vector3.new(1436.54016, 48.4395027, -1310.87183) | |
| 1834 | Part138.Orientation = Vector3.new(45, 90, 0) | |
| 1835 | Part138.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1836 | SpecialMesh139.Parent = Part138 | |
| 1837 | SpecialMesh139.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549) | |
| 1838 | SpecialMesh139.MeshType = Enum.MeshType.Brick | |
| 1839 | SpecialMesh139.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549) | |
| 1840 | Part140.Parent = Tool0 | |
| 1841 | Part140.Material = Enum.Material.SmoothPlastic | |
| 1842 | Part140.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1843 | Part140.Transparency = 1 | |
| 1844 | Part140.Rotation = Vector3.new(0, 90, 0) | |
| 1845 | Part140.Anchored = true | |
| 1846 | Part140.CanCollide = false | |
| 1847 | Part140.FormFactor = Enum.FormFactor.Custom | |
| 1848 | Part140.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 1849 | Part140.CFrame = CFrame.new(1436.87463, 48.5038033, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1850 | Part140.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1851 | Part140.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1852 | Part140.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1853 | Part140.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1854 | Part140.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1855 | Part140.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1856 | Part140.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1857 | Part140.Position = Vector3.new(1436.87463, 48.5038033, -1310.87622) | |
| 1858 | Part140.Orientation = Vector3.new(0, 90, 0) | |
| 1859 | Part140.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1860 | SpecialMesh141.Parent = Part140 | |
| 1861 | SpecialMesh141.Scale = Vector3.new(0.164111391, 0.555652738, 0.237768203) | |
| 1862 | SpecialMesh141.MeshType = Enum.MeshType.Brick | |
| 1863 | SpecialMesh141.Scale = Vector3.new(0.164111391, 0.555652738, 0.237768203) | |
| 1864 | Part142.Parent = Tool0 | |
| 1865 | Part142.Material = Enum.Material.SmoothPlastic | |
| 1866 | Part142.BrickColor = BrickColor.new("Lime green")
| |
| 1867 | Part142.Reflectance = 0.40000000596046 | |
| 1868 | Part142.Transparency = 1 | |
| 1869 | Part142.Rotation = Vector3.new(180, 0, 90) | |
| 1870 | Part142.Anchored = true | |
| 1871 | Part142.CanCollide = false | |
| 1872 | Part142.FormFactor = Enum.FormFactor.Custom | |
| 1873 | Part142.Size = Vector3.new(0.228912294, 0.534128368, 0.423911244) | |
| 1874 | Part142.CFrame = CFrame.new(1433.87573, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 1875 | Part142.BottomSurface = Enum.SurfaceType.Smooth | |
| 1876 | Part142.TopSurface = Enum.SurfaceType.Smooth | |
| 1877 | Part142.Color = Color3.new(0, 1, 0) | |
| 1878 | Part142.Position = Vector3.new(1433.87573, 48.923233, -1310.87183) | |
| 1879 | Part142.Orientation = Vector3.new(0, -180, -90) | |
| 1880 | Part142.Color = Color3.new(0, 1, 0) | |
| 1881 | CylinderMesh143.Parent = Part142 | |
| 1882 | Part144.Parent = Tool0 | |
| 1883 | Part144.Material = Enum.Material.SmoothPlastic | |
| 1884 | Part144.Transparency = 1 | |
| 1885 | Part144.Rotation = Vector3.new(-90, 0, 90) | |
| 1886 | Part144.Anchored = true | |
| 1887 | Part144.CanCollide = false | |
| 1888 | Part144.FormFactor = Enum.FormFactor.Custom | |
| 1889 | Part144.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 1890 | Part144.CFrame = CFrame.new(1436.42542, 48.0573769, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 1891 | Part144.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1892 | Part144.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1893 | Part144.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1894 | Part144.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1895 | Part144.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1896 | Part144.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1897 | Part144.Position = Vector3.new(1436.42542, 48.0573769, -1310.87183) | |
| 1898 | Part144.Orientation = Vector3.new(-90, 90, 0) | |
| 1899 | CylinderMesh145.Parent = Part144 | |
| 1900 | CylinderMesh145.Scale = Vector3.new(0.360227078, 2.0112679, 0.180113524) | |
| 1901 | CylinderMesh145.Scale = Vector3.new(0.360227078, 2.0112679, 0.180113524) | |
| 1902 | Part146.Parent = Tool0 | |
| 1903 | Part146.Material = Enum.Material.SmoothPlastic | |
| 1904 | Part146.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1905 | Part146.Transparency = 1 | |
| 1906 | Part146.Rotation = Vector3.new(0, 90, 0) | |
| 1907 | Part146.Anchored = true | |
| 1908 | Part146.CanCollide = false | |
| 1909 | Part146.FormFactor = Enum.FormFactor.Custom | |
| 1910 | Part146.Size = Vector3.new(1, 1, 1) | |
| 1911 | Part146.CFrame = CFrame.new(1436.98523, 48.2367706, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 1912 | Part146.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1913 | Part146.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1914 | Part146.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1915 | Part146.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1916 | Part146.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1917 | Part146.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1918 | Part146.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1919 | Part146.Position = Vector3.new(1436.98523, 48.2367706, -1310.87183) | |
| 1920 | Part146.Orientation = Vector3.new(0, 90, 0) | |
| 1921 | Part146.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1922 | SpecialMesh147.Parent = Part146 | |
| 1923 | SpecialMesh147.Scale = Vector3.new(0.0339129046, 0.033912912, 0.517172039) | |
| 1924 | SpecialMesh147.MeshType = Enum.MeshType.Brick | |
| 1925 | SpecialMesh147.Scale = Vector3.new(0.0339129046, 0.033912912, 0.517172039) | |
| 1926 | Part148.Parent = Tool0 | |
| 1927 | Part148.Material = Enum.Material.SmoothPlastic | |
| 1928 | Part148.Transparency = 1 | |
| 1929 | Part148.Rotation = Vector3.new(-90, -60, -90) | |
| 1930 | Part148.Anchored = true | |
| 1931 | Part148.CanCollide = false | |
| 1932 | Part148.FormFactor = Enum.FormFactor.Custom | |
| 1933 | Part148.Size = Vector3.new(1, 1, 1) | |
| 1934 | Part148.CFrame = CFrame.new(1436.81775, 48.1568336, -1310.87183, 0, 0.499998987, -0.866025984, 0, 0.866025984, 0.499998987, 1, 0, 0) | |
| 1935 | Part148.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1936 | Part148.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1937 | Part148.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1938 | Part148.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1939 | Part148.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1940 | Part148.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 1941 | Part148.Position = Vector3.new(1436.81775, 48.1568336, -1310.87183) | |
| 1942 | Part148.Orientation = Vector3.new(-30, -90, 0) | |
| 1943 | CylinderMesh149.Parent = Part148 | |
| 1944 | CylinderMesh149.Scale = Vector3.new(0.101738736, 0.161086336, 0.0339129157) | |
| 1945 | CylinderMesh149.Scale = Vector3.new(0.101738736, 0.161086336, 0.0339129157) | |
| 1946 | Part150.Parent = Tool0 | |
| 1947 | Part150.Material = Enum.Material.SmoothPlastic | |
| 1948 | Part150.BrickColor = BrickColor.new("Brick yellow")
| |
| 1949 | Part150.Transparency = 1 | |
| 1950 | Part150.Rotation = Vector3.new(43.0599976, 7.44000006, -165.119995) | |
| 1951 | Part150.Anchored = true | |
| 1952 | Part150.CanCollide = false | |
| 1953 | Part150.FormFactor = Enum.FormFactor.Custom | |
| 1954 | Part150.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 1955 | Part150.CFrame = CFrame.new(1435.27368, 48.9770622, -1311.07397, -0.958352566, 0.25458324, 0.129413933, -0.272977144, -0.683412135, -0.677075565, -0.0839290544, -0.684204161, 0.724445105) | |
| 1956 | Part150.BottomSurface = Enum.SurfaceType.Smooth | |
| 1957 | Part150.TopSurface = Enum.SurfaceType.Smooth | |
| 1958 | Part150.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1959 | Part150.Position = Vector3.new(1435.27368, 48.9770622, -1311.07397) | |
| 1960 | Part150.Orientation = Vector3.new(42.6199989, 10.1300001, -158.229996) | |
| 1961 | Part150.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 1962 | CylinderMesh151.Parent = Part150 | |
| 1963 | CylinderMesh151.Scale = Vector3.new(0.291783929, 0.389045268, 0.170207277) | |
| 1964 | CylinderMesh151.Scale = Vector3.new(0.291783929, 0.389045268, 0.170207277) | |
| 1965 | Part152.Parent = Tool0 | |
| 1966 | Part152.Material = Enum.Material.SmoothPlastic | |
| 1967 | Part152.BrickColor = BrickColor.new("Medium green")
| |
| 1968 | Part152.Reflectance = 0.40000000596046 | |
| 1969 | Part152.Transparency = 1 | |
| 1970 | Part152.Rotation = Vector3.new(-90, 30, -105) | |
| 1971 | Part152.Anchored = true | |
| 1972 | Part152.CanCollide = false | |
| 1973 | Part152.FormFactor = Enum.FormFactor.Custom | |
| 1974 | Part152.Size = Vector3.new(1, 1, 1) | |
| 1975 | Part152.CFrame = CFrame.new(1436.76379, 48.7488365, -1310.92346, -0.224138901, 0.836518228, 0.499998987, 0.129404947, -0.482963115, 0.866025984, 0.965927541, 0.258812487, 1.22192728e-06) | |
| 1976 | Part152.BottomSurface = Enum.SurfaceType.Smooth | |
| 1977 | Part152.TopSurface = Enum.SurfaceType.Smooth | |
| 1978 | Part152.Color = Color3.new(0.631373, 0.768628, 0.54902) | |
| 1979 | Part152.Position = Vector3.new(1436.76379, 48.7488365, -1310.92346) | |
| 1980 | Part152.Orientation = Vector3.new(-60, 90, 165) | |
| 1981 | Part152.Color = Color3.new(0.631373, 0.768628, 0.54902) | |
| 1982 | CylinderMesh153.Parent = Part152 | |
| 1983 | CylinderMesh153.Scale = Vector3.new(0.101738736, 0.330650836, 0.0339129157) | |
| 1984 | CylinderMesh153.Scale = Vector3.new(0.101738736, 0.330650836, 0.0339129157) | |
| 1985 | Part154.Parent = Tool0 | |
| 1986 | Part154.Material = Enum.Material.SmoothPlastic | |
| 1987 | Part154.BrickColor = BrickColor.new("Dark stone grey")
| |
| 1988 | Part154.Transparency = 1 | |
| 1989 | Part154.Rotation = Vector3.new(-105, 75, 90) | |
| 1990 | Part154.Anchored = true | |
| 1991 | Part154.CanCollide = false | |
| 1992 | Part154.FormFactor = Enum.FormFactor.Custom | |
| 1993 | Part154.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975) | |
| 1994 | Part154.CFrame = CFrame.new(1434.85571, 49.1141472, -1311.08923, 0, -0.258817911, 0.965926111, -0.258811951, 0.93301481, 0.249999404, -0.96592778, -0.24999322, -0.0669851676) | |
| 1995 | Part154.BottomSurface = Enum.SurfaceType.Smooth | |
| 1996 | Part154.TopSurface = Enum.SurfaceType.Smooth | |
| 1997 | Part154.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 1998 | Part154.Position = Vector3.new(1434.85571, 49.1141472, -1311.08923) | |
| 1999 | Part154.Orientation = Vector3.new(-14.4799995, 93.9700012, -15.5) | |
| 2000 | Part154.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2001 | CylinderMesh155.Parent = Part154 | |
| 2002 | CylinderMesh155.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 2003 | CylinderMesh155.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092) | |
| 2004 | Part156.Parent = Tool0 | |
| 2005 | Part156.Material = Enum.Material.SmoothPlastic | |
| 2006 | Part156.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2007 | Part156.Transparency = 1 | |
| 2008 | Part156.Rotation = Vector3.new(90, 90, 0) | |
| 2009 | Part156.Anchored = true | |
| 2010 | Part156.CanCollide = false | |
| 2011 | Part156.FormFactor = Enum.FormFactor.Custom | |
| 2012 | Part156.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 2013 | Part156.CFrame = CFrame.new(1433.8822, 48.9214859, -1310.87183, 0, 0, 1, 1, 0, 0, 0, 1, 0) | |
| 2014 | Part156.BottomSurface = Enum.SurfaceType.Smooth | |
| 2015 | Part156.TopSurface = Enum.SurfaceType.Smooth | |
| 2016 | Part156.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2017 | Part156.Position = Vector3.new(1433.8822, 48.9214859, -1310.87183) | |
| 2018 | Part156.Orientation = Vector3.new(0, 90, 90) | |
| 2019 | Part156.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2020 | SpecialMesh157.Parent = Part156 | |
| 2021 | SpecialMesh157.Scale = Vector3.new(0.0300189219, 0.84052968, 1.8611728) | |
| 2022 | SpecialMesh157.MeshType = Enum.MeshType.Brick | |
| 2023 | SpecialMesh157.Scale = Vector3.new(0.0300189219, 0.84052968, 1.8611728) | |
| 2024 | Part158.Parent = Tool0 | |
| 2025 | Part158.Material = Enum.Material.SmoothPlastic | |
| 2026 | Part158.Transparency = 1 | |
| 2027 | Part158.Rotation = Vector3.new(-90, 0, 90) | |
| 2028 | Part158.Anchored = true | |
| 2029 | Part158.CanCollide = false | |
| 2030 | Part158.FormFactor = Enum.FormFactor.Custom | |
| 2031 | Part158.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 2032 | Part158.CFrame = CFrame.new(1434.66418, 48.9062729, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 2033 | Part158.BottomSurface = Enum.SurfaceType.Smooth | |
| 2034 | Part158.TopSurface = Enum.SurfaceType.Smooth | |
| 2035 | Part158.Position = Vector3.new(1434.66418, 48.9062729, -1310.87183) | |
| 2036 | Part158.Orientation = Vector3.new(-90, 90, 0) | |
| 2037 | SpecialMesh159.Parent = Part158 | |
| 2038 | SpecialMesh159.Scale = Vector3.new(0.180113494, 1.29081011, 1.53096449) | |
| 2039 | SpecialMesh159.MeshType = Enum.MeshType.Brick | |
| 2040 | SpecialMesh159.Scale = Vector3.new(0.180113494, 1.29081011, 1.53096449) | |
| 2041 | Part160.Parent = Tool0 | |
| 2042 | Part160.Material = Enum.Material.SmoothPlastic | |
| 2043 | Part160.Transparency = 1 | |
| 2044 | Part160.Rotation = Vector3.new(-90, 30, 90) | |
| 2045 | Part160.Anchored = true | |
| 2046 | Part160.CanCollide = false | |
| 2047 | Part160.FormFactor = Enum.FormFactor.Custom | |
| 2048 | Part160.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 2049 | Part160.CFrame = CFrame.new(1436.1012, 48.0875969, -1310.87183, 0, -0.866025388, 0.500000238, 0, 0.500000238, 0.866025388, -1, 0, 0) | |
| 2050 | Part160.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2051 | Part160.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2052 | Part160.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2053 | Part160.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2054 | Part160.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2055 | Part160.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2056 | Part160.Position = Vector3.new(1436.1012, 48.0875969, -1310.87183) | |
| 2057 | Part160.Orientation = Vector3.new(-60, 90, 0) | |
| 2058 | CylinderMesh161.Parent = Part160 | |
| 2059 | CylinderMesh161.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277) | |
| 2060 | CylinderMesh161.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277) | |
| 2061 | Part162.Parent = Tool0 | |
| 2062 | Part162.Material = Enum.Material.SmoothPlastic | |
| 2063 | Part162.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2064 | Part162.Transparency = 1 | |
| 2065 | Part162.Rotation = Vector3.new(0, 90, 0) | |
| 2066 | Part162.Anchored = true | |
| 2067 | Part162.CanCollide = false | |
| 2068 | Part162.FormFactor = Enum.FormFactor.Custom | |
| 2069 | Part162.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 2070 | Part162.CFrame = CFrame.new(1436.875, 48.33424, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 2071 | Part162.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2072 | Part162.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2073 | Part162.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2074 | Part162.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2075 | Part162.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2076 | Part162.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2077 | Part162.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2078 | Part162.Position = Vector3.new(1436.875, 48.33424, -1310.87622) | |
| 2079 | Part162.Orientation = Vector3.new(0, 90, 0) | |
| 2080 | Part162.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2081 | SpecialMesh163.Parent = Part162 | |
| 2082 | SpecialMesh163.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072) | |
| 2083 | SpecialMesh163.MeshType = Enum.MeshType.Brick | |
| 2084 | SpecialMesh163.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072) | |
| 2085 | Part164.Parent = Tool0 | |
| 2086 | Part164.Material = Enum.Material.SmoothPlastic | |
| 2087 | Part164.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2088 | Part164.Transparency = 1 | |
| 2089 | Part164.Rotation = Vector3.new(180, 0, 90) | |
| 2090 | Part164.Anchored = true | |
| 2091 | Part164.CanCollide = false | |
| 2092 | Part164.FormFactor = Enum.FormFactor.Custom | |
| 2093 | Part164.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 2094 | Part164.CFrame = CFrame.new(1435.66467, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 2095 | Part164.BottomSurface = Enum.SurfaceType.Smooth | |
| 2096 | Part164.TopSurface = Enum.SurfaceType.Smooth | |
| 2097 | Part164.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2098 | Part164.Position = Vector3.new(1435.66467, 48.9020348, -1310.87183) | |
| 2099 | Part164.Orientation = Vector3.new(0, -180, -90) | |
| 2100 | Part164.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2101 | CylinderMesh165.Parent = Part164 | |
| 2102 | CylinderMesh165.Scale = Vector3.new(0.494551927, 0.175486088, 0.861476958) | |
| 2103 | CylinderMesh165.Scale = Vector3.new(0.494551927, 0.175486088, 0.861476958) | |
| 2104 | Part166.Parent = Tool0 | |
| 2105 | Part166.Material = Enum.Material.SmoothPlastic | |
| 2106 | Part166.BrickColor = BrickColor.new("Brick yellow")
| |
| 2107 | Part166.Transparency = 1 | |
| 2108 | Part166.Rotation = Vector3.new(-0.870000005, -12.9499998, -157.62999) | |
| 2109 | Part166.Anchored = true | |
| 2110 | Part166.CanCollide = false | |
| 2111 | Part166.FormFactor = Enum.FormFactor.Custom | |
| 2112 | Part166.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 2113 | Part166.CFrame = CFrame.new(1435.34644, 48.8009377, -1311.09277, -0.901220024, 0.370889217, -0.224151224, -0.383668005, -0.923353195, 0.0147557557, -0.201498002, 0.0992978215, 0.97444272) | |
| 2114 | Part166.BottomSurface = Enum.SurfaceType.Smooth | |
| 2115 | Part166.TopSurface = Enum.SurfaceType.Smooth | |
| 2116 | Part166.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 2117 | Part166.Position = Vector3.new(1435.34644, 48.8009377, -1311.09277) | |
| 2118 | Part166.Orientation = Vector3.new(-0.849999964, -12.9499998, -157.440002) | |
| 2119 | Part166.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 2120 | CylinderMesh167.Parent = Part166 | |
| 2121 | CylinderMesh167.Scale = Vector3.new(0.291783929, 0.889940858, 0.170207277) | |
| 2122 | CylinderMesh167.Scale = Vector3.new(0.291783929, 0.889940858, 0.170207277) | |
| 2123 | Part168.Name = "Smooth Block Model" | |
| 2124 | Part168.Parent = Tool0 | |
| 2125 | Part168.Material = Enum.Material.SmoothPlastic | |
| 2126 | Part168.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2127 | Part168.Transparency = 1 | |
| 2128 | Part168.Rotation = Vector3.new(90, 15, 90) | |
| 2129 | Part168.Anchored = true | |
| 2130 | Part168.CanCollide = false | |
| 2131 | Part168.FormFactor = Enum.FormFactor.Custom | |
| 2132 | Part168.Size = Vector3.new(1, 1, 1) | |
| 2133 | Part168.CFrame = CFrame.new(1435.82715, 48.8071632, -1310.87183, 0, -0.965925872, 0.258818984, 0, -0.258818984, -0.965925872, 1, 0, 0) | |
| 2134 | Part168.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2135 | Part168.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2136 | Part168.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2137 | Part168.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2138 | Part168.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2139 | Part168.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2140 | Part168.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2141 | Part168.Position = Vector3.new(1435.82715, 48.8071632, -1310.87183) | |
| 2142 | Part168.Orientation = Vector3.new(75, 90, 180) | |
| 2143 | Part168.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2144 | SpecialMesh169.Parent = Part168 | |
| 2145 | SpecialMesh169.Scale = Vector3.new(0.0339129046, 0.245868579, 0.22891213) | |
| 2146 | SpecialMesh169.MeshType = Enum.MeshType.Wedge | |
| 2147 | SpecialMesh169.Scale = Vector3.new(0.0339129046, 0.245868579, 0.22891213) | |
| 2148 | Part170.Name = "Smooth Block Model" | |
| 2149 | Part170.Parent = Tool0 | |
| 2150 | Part170.Material = Enum.Material.SmoothPlastic | |
| 2151 | Part170.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2152 | Part170.Transparency = 1 | |
| 2153 | Part170.Rotation = Vector3.new(-90, -15, 90) | |
| 2154 | Part170.Anchored = true | |
| 2155 | Part170.CanCollide = false | |
| 2156 | Part170.FormFactor = Enum.FormFactor.Custom | |
| 2157 | Part170.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188) | |
| 2158 | Part170.CFrame = CFrame.new(1435.77759, 48.6315002, -1310.87183, 0, -0.965925872, -0.258818984, 0, -0.258818984, 0.965925872, -1, 0, 0) | |
| 2159 | Part170.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2160 | Part170.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2161 | Part170.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2162 | Part170.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2163 | Part170.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2164 | Part170.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2165 | Part170.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2166 | Part170.Position = Vector3.new(1435.77759, 48.6315002, -1310.87183) | |
| 2167 | Part170.Orientation = Vector3.new(-75, -90, 180) | |
| 2168 | Part170.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2169 | SpecialMesh171.Parent = Part170 | |
| 2170 | SpecialMesh171.Scale = Vector3.new(0.236344978, 0.177258641, 0.196954101) | |
| 2171 | SpecialMesh171.MeshType = Enum.MeshType.Wedge | |
| 2172 | SpecialMesh171.Scale = Vector3.new(0.236344978, 0.177258641, 0.196954101) | |
| 2173 | Part172.Parent = Tool0 | |
| 2174 | Part172.Material = Enum.Material.SmoothPlastic | |
| 2175 | Part172.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2176 | Part172.Transparency = 1 | |
| 2177 | Part172.Rotation = Vector3.new(-90, 0, 90) | |
| 2178 | Part172.Anchored = true | |
| 2179 | Part172.CanCollide = false | |
| 2180 | Part172.FormFactor = Enum.FormFactor.Custom | |
| 2181 | Part172.Size = Vector3.new(1, 1, 1) | |
| 2182 | Part172.CFrame = CFrame.new(1436.74353, 48.5165329, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 2183 | Part172.BackSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2184 | Part172.BottomSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2185 | Part172.FrontSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2186 | Part172.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2187 | Part172.RightSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2188 | Part172.TopSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 2189 | Part172.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2190 | Part172.Position = Vector3.new(1436.74353, 48.5165329, -1310.87183) | |
| 2191 | Part172.Orientation = Vector3.new(-90, 90, 0) | |
| 2192 | Part172.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2193 | SpecialMesh173.Parent = Part172 | |
| 2194 | SpecialMesh173.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549) | |
| 2195 | SpecialMesh173.MeshType = Enum.MeshType.Brick | |
| 2196 | SpecialMesh173.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549) | |
| 2197 | Part174.Parent = Tool0 | |
| 2198 | Part174.Material = Enum.Material.SmoothPlastic | |
| 2199 | Part174.Transparency = 1 | |
| 2200 | Part174.Rotation = Vector3.new(90, 75, -90) | |
| 2201 | Part174.Anchored = true | |
| 2202 | Part174.CanCollide = false | |
| 2203 | Part174.FormFactor = Enum.FormFactor.Custom | |
| 2204 | Part174.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 2205 | Part174.CFrame = CFrame.new(1435.75964, 48.5609169, -1310.87622, 0, 0.258818984, 0.965925872, 0, 0.965925872, -0.258818984, -1, 0, 0) | |
| 2206 | Part174.BottomSurface = Enum.SurfaceType.Smooth | |
| 2207 | Part174.TopSurface = Enum.SurfaceType.Smooth | |
| 2208 | Part174.Position = Vector3.new(1435.75964, 48.5609169, -1310.87622) | |
| 2209 | Part174.Orientation = Vector3.new(15, 90, 0) | |
| 2210 | SpecialMesh175.Parent = Part174 | |
| 2211 | SpecialMesh175.Scale = Vector3.new(0.0300189164, 0.540340722, 0.0900567546) | |
| 2212 | SpecialMesh175.MeshType = Enum.MeshType.Brick | |
| 2213 | SpecialMesh175.Scale = Vector3.new(0.0300189164, 0.540340722, 0.0900567546) | |
| 2214 | Part176.Parent = Tool0 | |
| 2215 | Part176.Material = Enum.Material.SmoothPlastic | |
| 2216 | Part176.BrickColor = BrickColor.new("Nougat")
| |
| 2217 | Part176.Transparency = 1 | |
| 2218 | Part176.Rotation = Vector3.new(180, 0, 90) | |
| 2219 | Part176.Anchored = true | |
| 2220 | Part176.CanCollide = false | |
| 2221 | Part176.FormFactor = Enum.FormFactor.Custom | |
| 2222 | Part176.Size = Vector3.new(0.415433139, 0.313694388, 0.423911244) | |
| 2223 | Part176.CFrame = CFrame.new(1434.67273, 48.9062729, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 2224 | Part176.BottomSurface = Enum.SurfaceType.Smooth | |
| 2225 | Part176.TopSurface = Enum.SurfaceType.Smooth | |
| 2226 | Part176.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 2227 | Part176.Position = Vector3.new(1434.67273, 48.9062729, -1310.87183) | |
| 2228 | Part176.Orientation = Vector3.new(0, -180, -90) | |
| 2229 | Part176.Color = Color3.new(0.8, 0.556863, 0.411765) | |
| 2230 | CylinderMesh177.Parent = Part176 | |
| 2231 | Part178.Parent = Tool0 | |
| 2232 | Part178.Material = Enum.Material.SmoothPlastic | |
| 2233 | Part178.BrickColor = BrickColor.new("Brick yellow")
| |
| 2234 | Part178.Transparency = 1 | |
| 2235 | Part178.Rotation = Vector3.new(-90, 0, 90) | |
| 2236 | Part178.Anchored = true | |
| 2237 | Part178.CanCollide = false | |
| 2238 | Part178.FormFactor = Enum.FormFactor.Custom | |
| 2239 | Part178.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 2240 | Part178.CFrame = CFrame.new(1434.84229, 48.626503, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 2241 | Part178.BottomSurface = Enum.SurfaceType.Smooth | |
| 2242 | Part178.TopSurface = Enum.SurfaceType.Smooth | |
| 2243 | Part178.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 2244 | Part178.Position = Vector3.new(1434.84229, 48.626503, -1310.87183) | |
| 2245 | Part178.Orientation = Vector3.new(-90, 90, 0) | |
| 2246 | Part178.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 2247 | SpecialMesh179.Parent = Part178 | |
| 2248 | SpecialMesh179.Scale = Vector3.new(0.287159115, 0.781710386, 0.175486133) | |
| 2249 | SpecialMesh179.MeshType = Enum.MeshType.Brick | |
| 2250 | SpecialMesh179.Scale = Vector3.new(0.287159115, 0.781710386, 0.175486133) | |
| 2251 | Part180.Parent = Tool0 | |
| 2252 | Part180.Material = Enum.Material.SmoothPlastic | |
| 2253 | Part180.BrickColor = BrickColor.new("Black")
| |
| 2254 | Part180.Transparency = 1 | |
| 2255 | Part180.Rotation = Vector3.new(15.0099993, 62.4199982, 2.98000002) | |
| 2256 | Part180.Anchored = true | |
| 2257 | Part180.CanCollide = false | |
| 2258 | Part180.FormFactor = Enum.FormFactor.Custom | |
| 2259 | Part180.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838) | |
| 2260 | Part180.CFrame = CFrame.new(1435.07532, 49.0545235, -1310.66675, 0.462388188, -0.0240549594, 0.886351287, 0.2793791, 0.95266664, -0.119890675, -0.841513276, 0.303064078, 0.447222203) | |
| 2261 | Part180.BottomSurface = Enum.SurfaceType.Smooth | |
| 2262 | Part180.TopSurface = Enum.SurfaceType.Smooth | |
| 2263 | Part180.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 2264 | Part180.Position = Vector3.new(1435.07532, 49.0545235, -1310.66675) | |
| 2265 | Part180.Orientation = Vector3.new(6.88999987, 63.2299995, 16.3400002) | |
| 2266 | Part180.Color = Color3.new(0.105882, 0.164706, 0.207843) | |
| 2267 | CylinderMesh181.Parent = Part180 | |
| 2268 | CylinderMesh181.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277) | |
| 2269 | CylinderMesh181.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277) | |
| 2270 | Part182.Parent = Tool0 | |
| 2271 | Part182.Material = Enum.Material.SmoothPlastic | |
| 2272 | Part182.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2273 | Part182.Transparency = 1 | |
| 2274 | Part182.Rotation = Vector3.new(180, 0, 90) | |
| 2275 | Part182.Anchored = true | |
| 2276 | Part182.CanCollide = false | |
| 2277 | Part182.FormFactor = Enum.FormFactor.Custom | |
| 2278 | Part182.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516) | |
| 2279 | Part182.CFrame = CFrame.new(1433.90967, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1) | |
| 2280 | Part182.BottomSurface = Enum.SurfaceType.Smooth | |
| 2281 | Part182.TopSurface = Enum.SurfaceType.Smooth | |
| 2282 | Part182.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2283 | Part182.Position = Vector3.new(1433.90967, 48.9232292, -1310.87183) | |
| 2284 | Part182.Orientation = Vector3.new(0, -180, -90) | |
| 2285 | Part182.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2286 | CylinderMesh183.Parent = Part182 | |
| 2287 | CylinderMesh183.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521) | |
| 2288 | CylinderMesh183.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521) | |
| 2289 | Part184.Parent = Tool0 | |
| 2290 | Part184.Material = Enum.Material.SmoothPlastic | |
| 2291 | Part184.BrickColor = BrickColor.new("Dark stone grey")
| |
| 2292 | Part184.Transparency = 1 | |
| 2293 | Part184.Rotation = Vector3.new(-90, 75, 90) | |
| 2294 | Part184.Anchored = true | |
| 2295 | Part184.CanCollide = false | |
| 2296 | Part184.FormFactor = Enum.FormFactor.Custom | |
| 2297 | Part184.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 2298 | Part184.CFrame = CFrame.new(1435.92761, 48.4653969, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0) | |
| 2299 | Part184.BottomSurface = Enum.SurfaceType.Smooth | |
| 2300 | Part184.TopSurface = Enum.SurfaceType.Smooth | |
| 2301 | Part184.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2302 | Part184.Position = Vector3.new(1435.92761, 48.4653969, -1310.87183) | |
| 2303 | Part184.Orientation = Vector3.new(-15, 90, 0) | |
| 2304 | Part184.Color = Color3.new(0.388235, 0.372549, 0.384314) | |
| 2305 | SpecialMesh185.Parent = Part184 | |
| 2306 | SpecialMesh185.Scale = Vector3.new(0.19143942, 0.909336686, 0.239299268) | |
| 2307 | SpecialMesh185.MeshType = Enum.MeshType.Brick | |
| 2308 | SpecialMesh185.Scale = Vector3.new(0.19143942, 0.909336686, 0.239299268) | |
| 2309 | Part186.Parent = Tool0 | |
| 2310 | Part186.Material = Enum.Material.SmoothPlastic | |
| 2311 | Part186.Transparency = 1 | |
| 2312 | Part186.Rotation = Vector3.new(-90, 0, 90) | |
| 2313 | Part186.Anchored = true | |
| 2314 | Part186.CanCollide = false | |
| 2315 | Part186.FormFactor = Enum.FormFactor.Custom | |
| 2316 | Part186.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973) | |
| 2317 | Part186.CFrame = CFrame.new(1434.48193, 49.1648102, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0) | |
| 2318 | Part186.BottomSurface = Enum.SurfaceType.Smooth | |
| 2319 | Part186.TopSurface = Enum.SurfaceType.Smooth | |
| 2320 | Part186.Position = Vector3.new(1434.48193, 49.1648102, -1310.87183) | |
| 2321 | Part186.Orientation = Vector3.new(-90, 90, 0) | |
| 2322 | SpecialMesh187.Parent = Part186 | |
| 2323 | SpecialMesh187.Scale = Vector3.new(0.0319065675, 0.0319065675, 0.223345816) | |
| 2324 | SpecialMesh187.MeshType = Enum.MeshType.Brick | |
| 2325 | SpecialMesh187.Scale = Vector3.new(0.0319065675, 0.0319065675, 0.223345816) | |
| 2326 | IntValue188.Name = "Ammo" | |
| 2327 | IntValue188.Parent = Tool0 | |
| 2328 | IntValue188.Value = 25 | |
| 2329 | IntValue189.Name = "ClipSize" | |
| 2330 | IntValue189.Parent = Tool0 | |
| 2331 | IntValue189.Value = 25 | |
| 2332 | IntValue190.Name = "LethalGrenades" | |
| 2333 | IntValue190.Parent = Tool0 | |
| 2334 | IntValue190.Value = 15 | |
| 2335 | IntValue191.Name = "StoredAmmo" | |
| 2336 | IntValue191.Parent = Tool0 | |
| 2337 | IntValue191.Value = 400 | |
| 2338 | IntValue192.Name = "TacticalGrenades" | |
| 2339 | IntValue192.Parent = Tool0 | |
| 2340 | IntValue192.Value = 15 | |
| 2341 | Script193.Name = "serverMain" | |
| 2342 | Script193.Parent = Tool0 | |
| 2343 | table.insert(cors,sandbox(Script193,function() | |
| 2344 | local Plyr = script:WaitForChild("Plyr")
| |
| 2345 | ||
| 2346 | local Gun = script.Parent | |
| 2347 | local Handle = Gun:WaitForChild("Handle")
| |
| 2348 | ||
| 2349 | local V3 = Vector3.new | |
| 2350 | local CF, CFANG = CFrame.new, CFrame.Angles | |
| 2351 | ||
| 2352 | local RAD = math.rad | |
| 2353 | ||
| 2354 | local numLerp = function(A, B, Alpha) | |
| 2355 | return A + (B - A) * Alpha | |
| 2356 | end | |
| 2357 | ||
| 2358 | local inList = function(Element, List) | |
| 2359 | for _, v in pairs(List) do | |
| 2360 | if v == Element then | |
| 2361 | return true | |
| 2362 | end | |
| 2363 | end | |
| 2364 | return false | |
| 2365 | end | |
| 2366 | ||
| 2367 | local getObject = function(Model, Class, Name) | |
| 2368 | for _, v in pairs(Model:GetChildren()) do | |
| 2369 | if v:IsA(Class) and v.Name == Name then | |
| 2370 | return v | |
| 2371 | end | |
| 2372 | end | |
| 2373 | return nil | |
| 2374 | end | |
| 2375 | ||
| 2376 | ---------------------------------------------------------------------- | |
| 2377 | --------------------[ IGNORE MODEL HANDLING ]------------------------- | |
| 2378 | ---------------------------------------------------------------------- | |
| 2379 | ||
| 2380 | wait(math.random(0, 20) / 40) --This is to prevent more than one ignoreModel from being created | |
| 2381 | ||
| 2382 | if _G.ignoreCode then --If the ignoreCode already exists, then the script creates the ignoreModel | |
| 2383 | --[[ | |
| 2384 | The purpose of this is so that every gun in a game that uses this gun kit will share one ignoreModel. That way, | |
| 2385 | bullet trails, bullet holes, and other fake arms will be ignored by the gun which makes the bullets more likely to | |
| 2386 | hit a character part | |
| 2387 | --]] | |
| 2388 | if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
| |
| 2389 | local ignoreModel = Instance.new("Model")
| |
| 2390 | ignoreModel.Name = "ignoreModel_".._G.ignoreCode | |
| 2391 | ignoreModel.Parent = game.Workspace | |
| 2392 | ||
| 2393 | local grenadeFolder = Instance.new("Model")
| |
| 2394 | grenadeFolder.Name = "grenadeFolder" | |
| 2395 | grenadeFolder.Parent = ignoreModel | |
| 2396 | ||
| 2397 | spawn(function() | |
| 2398 | while true do | |
| 2399 | ignoreModel.Parent = game.Workspace | |
| 2400 | grenadeFolder.Parent = ignoreModel | |
| 2401 | wait(1 / 20) | |
| 2402 | end | |
| 2403 | end) | |
| 2404 | end | |
| 2405 | ||
| 2406 | script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
| |
| 2407 | else | |
| 2408 | --[[ | |
| 2409 | If there isn't already an ignoreCode, then this creates one. The purpose of it being random is so that if there is | |
| 2410 | an ignoreModel for something else in the game, the script won't end up placing the ignored objects in that ignoreModel | |
| 2411 | --]] | |
| 2412 | _G.ignoreCode = math.random(1, 1e4) | |
| 2413 | ||
| 2414 | if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
| |
| 2415 | local ignoreModel = Instance.new("Model")
| |
| 2416 | ignoreModel.Name = "ignoreModel_".._G.ignoreCode | |
| 2417 | ignoreModel.Parent = game.Workspace | |
| 2418 | ||
| 2419 | local grenadeFolder = Instance.new("Model")
| |
| 2420 | grenadeFolder.Name = "grenadeFolder" | |
| 2421 | grenadeFolder.Parent = ignoreModel | |
| 2422 | ||
| 2423 | spawn(function() | |
| 2424 | while true do | |
| 2425 | ignoreModel.Parent = game.Workspace | |
| 2426 | grenadeFolder.Parent = ignoreModel | |
| 2427 | wait(1 / 20) | |
| 2428 | end | |
| 2429 | end) | |
| 2430 | end | |
| 2431 | ||
| 2432 | script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
| |
| 2433 | end | |
| 2434 | ||
| 2435 | spawn(function() | |
| 2436 | --[[ | |
| 2437 | This function deletes any Player Folders that were left in the ignoreModel because the player left the game without | |
| 2438 | deselecting the Gun first | |
| 2439 | --]] | |
| 2440 | repeat wait() until _G.ignoreCode | |
| 2441 | local ignoreModel = game.Workspace:WaitForChild("ignoreModel_".._G.ignoreCode)
| |
| 2442 | while true do | |
| 2443 | for _, gunIgnore in pairs(ignoreModel:GetChildren()) do | |
| 2444 | if gunIgnore.Name ~= "grenadeFolder" then | |
| 2445 | if (not game.Players:FindFirstChild(gunIgnore.Name:sub(11))) then | |
| 2446 | gunIgnore:Destroy() | |
| 2447 | end | |
| 2448 | end | |
| 2449 | end | |
| 2450 | wait(1 / 20) | |
| 2451 | end | |
| 2452 | end) | |
| 2453 | ||
| 2454 | ---------------------------------------------------------------------- | |
| 2455 | --------------------[ RESET CAMERA ]---------------------------------- | |
| 2456 | ---------------------------------------------------------------------- | |
| 2457 | ||
| 2458 | Gun.ChildRemoved:connect(function(Child) | |
| 2459 | if Child == Handle and Plyr.Value then | |
| 2460 | local ignoreCode = Gun:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value
| |
| 2461 | local resetCam = script:WaitForChild("resetCam")
| |
| 2462 | resetCam:WaitForChild("ignoreCode").Value = ignoreCode
| |
| 2463 | resetCam.Parent = Plyr.Value.PlayerGui | |
| 2464 | end | |
| 2465 | end) | |
| 2466 | ||
| 2467 | ---------------------------------------------------------------------- | |
| 2468 | --------------------[ GET WELD CFRAMES ]------------------------------ | |
| 2469 | ---------------------------------------------------------------------- | |
| 2470 | ||
| 2471 | for _, v in pairs(Gun:GetChildren()) do | |
| 2472 | if v:IsA("BasePart") and v ~= Handle then
| |
| 2473 | if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
| |
| 2474 | if (not v:FindFirstChild("weldCF")) then
| |
| 2475 | local weldCF = Instance.new("CFrameValue")
| |
| 2476 | weldCF.Name = "weldCF" | |
| 2477 | weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame) | |
| 2478 | weldCF.Parent = v | |
| 2479 | end | |
| 2480 | if string.sub(v.Name, 1, 3) == "Mag" then | |
| 2481 | if (not v:FindFirstChild("magTrans")) then
| |
| 2482 | local magTrans = Instance.new("NumberValue")
| |
| 2483 | magTrans.Name = "magTrans" | |
| 2484 | magTrans.Value = v.Transparency | |
| 2485 | magTrans.Parent = v | |
| 2486 | end | |
| 2487 | end | |
| 2488 | v.Anchored = true | |
| 2489 | v.CanCollide = false | |
| 2490 | end | |
| 2491 | end | |
| 2492 | Handle.Anchored = false | |
| 2493 | Handle.CanCollide = true | |
| 2494 | ||
| 2495 | ---------------------------------------------------------------------- | |
| 2496 | --------------------[ GUNSETUP HANDLING ]----------------------------- | |
| 2497 | ---------------------------------------------------------------------- | |
| 2498 | ||
| 2499 | local gunSetup = script:WaitForChild("gunSetup")
| |
| 2500 | function gunSetup.OnServerInvoke(Player, Vars) | |
| 2501 | ||
| 2502 | --------------------[ CREATING IGNORE MODELS ]-------------------------------- | |
| 2503 | ||
| 2504 | local gunIgnore = Instance.new("Model")
| |
| 2505 | gunIgnore.Name = "gunIgnore_"..Player.Name | |
| 2506 | gunIgnore.Parent = Vars.ignoreModel | |
| 2507 | ||
| 2508 | --------------------[ MODIFYING THE PLAYER ]---------------------------------- | |
| 2509 | ||
| 2510 | Vars.Humanoid.AutoRotate = false | |
| 2511 | ||
| 2512 | Vars.Shoulders.Right.Part1 = nil | |
| 2513 | Vars.Shoulders.Left.Part1 = nil | |
| 2514 | ||
| 2515 | local playerFolder = Instance.new("Model")
| |
| 2516 | playerFolder.Name = "playerFolder" | |
| 2517 | playerFolder.Parent = gunIgnore | |
| 2518 | ||
| 2519 | local headBase = Instance.new("Part")
| |
| 2520 | headBase.Transparency = 1 | |
| 2521 | headBase.Name = "headBase" | |
| 2522 | headBase.CanCollide = false | |
| 2523 | headBase.FormFactor = Enum.FormFactor.Custom | |
| 2524 | headBase.Size = V3(0.2, 0.2, 0.2) | |
| 2525 | headBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 2526 | headBase.TopSurface = Enum.SurfaceType.Smooth | |
| 2527 | headBase.Parent = playerFolder | |
| 2528 | ||
| 2529 | local headWeld = Instance.new("Weld")
| |
| 2530 | headWeld.Part0 = Vars.Torso | |
| 2531 | headWeld.Part1 = headBase | |
| 2532 | headWeld.C0 = CF(0, 1.5, 0) | |
| 2533 | headWeld.Parent = Vars.Torso | |
| 2534 | ||
| 2535 | local headWeld2 = Instance.new("Weld")
| |
| 2536 | headWeld2.Part0 = headBase | |
| 2537 | headWeld2.Part1 = Vars.Head | |
| 2538 | headWeld2.Parent = headBase | |
| 2539 | ||
| 2540 | local animBase = Instance.new("Part")
| |
| 2541 | animBase.Transparency = 1 | |
| 2542 | animBase.Name = "animBase" | |
| 2543 | animBase.CanCollide = false | |
| 2544 | animBase.FormFactor = Enum.FormFactor.Custom | |
| 2545 | animBase.Size = V3(0.2, 0.2, 0.2) | |
| 2546 | animBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 2547 | animBase.TopSurface = Enum.SurfaceType.Smooth | |
| 2548 | animBase.Parent = playerFolder | |
| 2549 | ||
| 2550 | local animWeld = Instance.new("Weld")
| |
| 2551 | animWeld.Part0 = animBase | |
| 2552 | animWeld.Part1 = headBase | |
| 2553 | animWeld.Parent = animBase | |
| 2554 | ||
| 2555 | local armBase = Instance.new("Part")
| |
| 2556 | armBase.Transparency = 1 | |
| 2557 | armBase.Name = "ArmBase" | |
| 2558 | armBase.CanCollide = false | |
| 2559 | armBase.FormFactor = Enum.FormFactor.Custom | |
| 2560 | armBase.Size = V3(0.2, 0.2, 0.2) | |
| 2561 | armBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 2562 | armBase.TopSurface = Enum.SurfaceType.Smooth | |
| 2563 | armBase.Parent = playerFolder | |
| 2564 | ||
| 2565 | local ABWeld = Instance.new("Weld")
| |
| 2566 | ABWeld.Part0 = armBase | |
| 2567 | ABWeld.Part1 = animBase | |
| 2568 | ABWeld.Parent = armBase | |
| 2569 | ||
| 2570 | local LArmBase = Instance.new("Part")
| |
| 2571 | LArmBase.Transparency = 1 | |
| 2572 | LArmBase.Name = "LArmBase" | |
| 2573 | LArmBase.CanCollide = false | |
| 2574 | LArmBase.FormFactor = Enum.FormFactor.Custom | |
| 2575 | LArmBase.Size = V3(0.2, 0.2, 0.2) | |
| 2576 | LArmBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 2577 | LArmBase.TopSurface = Enum.SurfaceType.Smooth | |
| 2578 | LArmBase.Parent = playerFolder | |
| 2579 | ||
| 2580 | local RArmBase = Instance.new("Part")
| |
| 2581 | RArmBase.Transparency = 1 | |
| 2582 | RArmBase.Name = "RArmBase" | |
| 2583 | RArmBase.CanCollide = false | |
| 2584 | RArmBase.FormFactor = Enum.FormFactor.Custom | |
| 2585 | RArmBase.Size = V3(0.2, 0.2, 0.2) | |
| 2586 | RArmBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 2587 | RArmBase.TopSurface = Enum.SurfaceType.Smooth | |
| 2588 | RArmBase.Parent = playerFolder | |
| 2589 | ||
| 2590 | local LWeld = Instance.new("Weld")
| |
| 2591 | LWeld.Name = "LWeld" | |
| 2592 | LWeld.Part0 = armBase | |
| 2593 | LWeld.Part1 = LArmBase | |
| 2594 | LWeld.C0 = Vars.armC0[1] | |
| 2595 | LWeld.C1 = Vars.leftArmC1 | |
| 2596 | LWeld.Parent = armBase | |
| 2597 | ||
| 2598 | local RWeld = Instance.new("Weld")
| |
| 2599 | RWeld.Name = "RWeld" | |
| 2600 | RWeld.Part0 = armBase | |
| 2601 | RWeld.Part1 = RArmBase | |
| 2602 | RWeld.C0 = Vars.armC0[2] | |
| 2603 | RWeld.C1 = Vars.rightArmC1 | |
| 2604 | RWeld.Parent = armBase | |
| 2605 | ||
| 2606 | local LWeld2 = Instance.new("Weld")
| |
| 2607 | LWeld2.Name = "LWeld" | |
| 2608 | LWeld2.Part0 = LArmBase | |
| 2609 | LWeld2.Part1 = Vars.LArm | |
| 2610 | LWeld2.Parent = LArmBase | |
| 2611 | ||
| 2612 | local RWeld2 = Instance.new("Weld")
| |
| 2613 | RWeld2.Name = "RWeld" | |
| 2614 | RWeld2.Part0 = RArmBase | |
| 2615 | RWeld2.Part1 = Vars.RArm | |
| 2616 | RWeld2.Parent = RArmBase | |
| 2617 | ||
| 2618 | local LLegWeld = Instance.new("Weld")
| |
| 2619 | LLegWeld.Name = "LLegWeld" | |
| 2620 | LLegWeld.Part0 = Vars.Torso | |
| 2621 | LLegWeld.Part1 = nil | |
| 2622 | LLegWeld.C0 = CF(-0.5, -2, 0) | |
| 2623 | LLegWeld.Parent = Vars.Torso | |
| 2624 | ||
| 2625 | local RLegWeld = Instance.new("Weld")
| |
| 2626 | RLegWeld.Name = "RLegWeld" | |
| 2627 | RLegWeld.Part0 = Vars.Torso | |
| 2628 | RLegWeld.Part1 = nil | |
| 2629 | RLegWeld.C0 = CF(0.5, -2, 0) | |
| 2630 | RLegWeld.Parent = Vars.Torso | |
| 2631 | ||
| 2632 | for _, Tab in pairs(Vars.gunParts) do | |
| 2633 | Tab.Obj.Anchored = false | |
| 2634 | local Weld = Instance.new("Weld")
| |
| 2635 | Weld.Name = "mainWeld" | |
| 2636 | Weld.Part0 = Vars.Handle | |
| 2637 | Weld.Part1 = Tab.Obj | |
| 2638 | Weld.C0 = Tab.Obj.weldCF.Value | |
| 2639 | Weld.Parent = Vars.Handle | |
| 2640 | Tab.Weld = Weld | |
| 2641 | end | |
| 2642 | ||
| 2643 | return gunIgnore, playerFolder, headWeld, headWeld2, animWeld, ABWeld, LWeld, RWeld, LWeld2, RWeld2, LLegWeld, RLegWeld, Vars.gunParts | |
| 2644 | end | |
| 2645 | ||
| 2646 | ---------------------------------------------------------------------- | |
| 2647 | --------------------[ TWEENJOINT HANDLING ]--------------------------- | |
| 2648 | ---------------------------------------------------------------------- | |
| 2649 | ||
| 2650 | local createTweenIndicator = script:WaitForChild("createTweenIndicator")
| |
| 2651 | function createTweenIndicator.OnServerInvoke(_, Joint, newCode) | |
| 2652 | local tweenIndicator = nil | |
| 2653 | if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
| |
| 2654 | tweenIndicator = Instance.new("IntValue")
| |
| 2655 | tweenIndicator.Name = "tweenCode" | |
| 2656 | tweenIndicator.Value = newCode | |
| 2657 | tweenIndicator.Parent = Joint | |
| 2658 | else | |
| 2659 | tweenIndicator = Joint.tweenCode | |
| 2660 | tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop | |
| 2661 | end | |
| 2662 | return tweenIndicator | |
| 2663 | end | |
| 2664 | ||
| 2665 | local lerpCF = script:WaitForChild("lerpCF")
| |
| 2666 | function lerpCF.OnServerInvoke(_, Joint, Prop, startCF, endCF, Alpha) | |
| 2667 | spawn(function() | |
| 2668 | Joint[Prop] = startCF:lerp(endCF, Alpha) | |
| 2669 | end) | |
| 2670 | end | |
| 2671 | ||
| 2672 | local deleteTweenIndicator = script:WaitForChild("deleteTweenIndicator")
| |
| 2673 | function deleteTweenIndicator.OnServerInvoke(_, tweenIndicator, newCode) | |
| 2674 | if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code | |
| 2675 | tweenIndicator:Destroy() | |
| 2676 | end | |
| 2677 | end | |
| 2678 | ||
| 2679 | ---------------------------------------------------------------------- | |
| 2680 | --------------------[ BULLET IMPACT HANDLING ]------------------------ | |
| 2681 | ---------------------------------------------------------------------- | |
| 2682 | ||
| 2683 | local createBulletImpact = script:WaitForChild("createBulletImpact")
| |
| 2684 | createBulletImpact.OnServerEvent:connect(function(_, H, P, N, D, humanoidFound, gunIgnore, S) | |
| 2685 | local surfaceCF = CF(P, P + N) | |
| 2686 | ---------------------------------------------------------------------------------- | |
| 2687 | --Creating the bullet hole-------------------------------------------------------- | |
| 2688 | ---------------------------------------------------------------------------------- | |
| 2689 | if S.bulletHoles and (not humanoidFound) then | |
| 2690 | local Hole = Instance.new("Part")
| |
| 2691 | Hole.Transparency = 1 | |
| 2692 | Hole.Anchored = true | |
| 2693 | Hole.CanCollide = false | |
| 2694 | Hole.FormFactor = "Custom" | |
| 2695 | Hole.Size = V3(1, 1, 0.2) | |
| 2696 | Hole.TopSurface = 0 | |
| 2697 | Hole.BottomSurface = 0 | |
| 2698 | local Mesh = Instance.new("BlockMesh")
| |
| 2699 | Mesh.Offset = V3(0, 0, -0.05) | |
| 2700 | Mesh.Scale = V3(S.holeSettings.Size, S.holeSettings.Size, 0) | |
| 2701 | Mesh.Parent = Hole | |
| 2702 | local Decal = Instance.new("Decal")
| |
| 2703 | Decal.Face = Enum.NormalId.Front | |
| 2704 | Decal.Texture = S.holeSettings.Texture | |
| 2705 | Decal.Parent = Hole | |
| 2706 | Hole.Parent = gunIgnore | |
| 2707 | Hole.CFrame = surfaceCF | |
| 2708 | if (not H.Anchored) then | |
| 2709 | local Weld = Instance.new("Weld", Hole)
| |
| 2710 | Weld.Part0 = H | |
| 2711 | Weld.Part1 = Hole | |
| 2712 | Weld.C0 = H.CFrame:toObjectSpace(surfaceCF) | |
| 2713 | Hole.Anchored = false | |
| 2714 | end | |
| 2715 | delay(S.holeSettings.visibleTime, function() | |
| 2716 | if S.holeSettings.disappearTime > 0 then | |
| 2717 | local t0 = tick() | |
| 2718 | while true do | |
| 2719 | local Alpha = math.min((tick() - t0) / S.holeSettings.disappearTime, 1) | |
| 2720 | Decal.Transparency = numLerp(0, 1, Alpha) | |
| 2721 | if Alpha == 1 then break end | |
| 2722 | wait() | |
| 2723 | end | |
| 2724 | Hole:Destroy() | |
| 2725 | else | |
| 2726 | Hole:Destroy() | |
| 2727 | end | |
| 2728 | end) | |
| 2729 | end | |
| 2730 | ---------------------------------------------------------------------------------- | |
| 2731 | --Creating the spark effect------------------------------------------------------- | |
| 2732 | ---------------------------------------------------------------------------------- | |
| 2733 | if S.bulletSparks and (not humanoidFound) and inList(H.Material, S.sparkSettings.Materials) then | |
| 2734 | local Sparks = Instance.new("Part")
| |
| 2735 | Sparks.Transparency = 1 | |
| 2736 | Sparks.Anchored = true | |
| 2737 | Sparks.CanCollide = false | |
| 2738 | Sparks.FormFactor = "Custom" | |
| 2739 | Sparks.Size = V3(1, 1, 1) | |
| 2740 | Sparks.TopSurface = 0 | |
| 2741 | Sparks.BottomSurface = 0 | |
| 2742 | ||
| 2743 | local Particles = nil | |
| 2744 | if S.customSparks then | |
| 2745 | Particles = getObject(game.ServerStorage, "ParticleEmitter", "bulletSpark"):Clone() | |
| 2746 | else | |
| 2747 | Particles = Instance.new("ParticleEmitter")
| |
| 2748 | Particles.Color = ColorSequence.new(S.sparkSettings.Color.Start, S.sparkSettings.Color.End) | |
| 2749 | Particles.LightEmission = 1 | |
| 2750 | Particles.Size = NumberSequence.new( | |
| 2751 | {
| |
| 2752 | NumberSequenceKeypoint.new(0, S.sparkSettings.Size, 0.25); | |
| 2753 | NumberSequenceKeypoint.new(1, 0); | |
| 2754 | } | |
| 2755 | ) | |
| 2756 | Particles.Texture = S.sparkSettings.Texture | |
| 2757 | Particles.Transparency = NumberSequence.new(0) | |
| 2758 | Particles.Acceleration = V3(0, -196.2, 0) | |
| 2759 | Particles.EmissionDirection = Enum.NormalId.Front | |
| 2760 | Particles.Lifetime = NumberRange.new(S.sparkSettings.Lifetime - 0.05, S.sparkSettings.Lifetime + 0.05) | |
| 2761 | Particles.Rate = S.sparkSettings.Rate | |
| 2762 | Particles.Rotation = NumberRange.new(0, 360) | |
| 2763 | Particles.Speed = NumberRange.new(S.sparkSettings.Speed - 5, S.sparkSettings.Speed + 5) | |
| 2764 | Particles.VelocitySpread = S.sparkSettings.Spread | |
| 2765 | end | |
| 2766 | Particles.Parent = Sparks | |
| 2767 | ||
| 2768 | Sparks.Parent = gunIgnore | |
| 2769 | Sparks.CFrame = surfaceCF | |
| 2770 | if (not H.Anchored) then | |
| 2771 | local Weld = Instance.new("Weld", Sparks)
| |
| 2772 | Weld.Part0 = H | |
| 2773 | Weld.Part1 = Sparks | |
| 2774 | Weld.C0 = H.CFrame:toObjectSpace(surfaceCF) | |
| 2775 | Sparks.Anchored = false | |
| 2776 | end | |
| 2777 | delay(0.1, function() | |
| 2778 | Particles.Enabled = false | |
| 2779 | wait(Particles.Lifetime.Max) | |
| 2780 | Sparks:Destroy() | |
| 2781 | end) | |
| 2782 | end | |
| 2783 | ---------------------------------------------------------------------------------- | |
| 2784 | --Creating the smoke effect------------------------------------------------------- | |
| 2785 | ---------------------------------------------------------------------------------- | |
| 2786 | if S.bulletSmoke and (not humanoidFound) then | |
| 2787 | local Smoke = Instance.new("Part")
| |
| 2788 | Smoke.Transparency = 1 | |
| 2789 | Smoke.Anchored = true | |
| 2790 | Smoke.CanCollide = false | |
| 2791 | Smoke.FormFactor = "Custom" | |
| 2792 | Smoke.Size = V3(1, 1, 1) | |
| 2793 | Smoke.TopSurface = 0 | |
| 2794 | Smoke.BottomSurface = 0 | |
| 2795 | ||
| 2796 | local Particles = Instance.new("ParticleEmitter")
| |
| 2797 | Particles.Color = ColorSequence.new(S.smokeSettings.objColor and H.Color or S.smokeSettings.Color) | |
| 2798 | Particles.LightEmission = 0 | |
| 2799 | Particles.Size = NumberSequence.new( | |
| 2800 | {
| |
| 2801 | NumberSequenceKeypoint.new(0, S.smokeSettings.Size.Start); | |
| 2802 | NumberSequenceKeypoint.new(1, S.smokeSettings.Size.End); | |
| 2803 | } | |
| 2804 | ) | |
| 2805 | Particles.Texture = S.smokeSettings.Texture | |
| 2806 | Particles.Transparency = NumberSequence.new( | |
| 2807 | {
| |
| 2808 | NumberSequenceKeypoint.new(0, S.smokeSettings.startTransparency); | |
| 2809 | NumberSequenceKeypoint.new(0.5, 0.75 * S.smokeSettings.startTransparency + 0.25); | |
| 2810 | NumberSequenceKeypoint.new(1, 1); | |
| 2811 | } | |
| 2812 | ) | |
| 2813 | Particles.Acceleration = V3(0, -196.2, 0) | |
| 2814 | Particles.EmissionDirection = Enum.NormalId.Front | |
| 2815 | Particles.Lifetime = NumberRange.new(S.smokeSettings.Lifetime - 0.05, S.smokeSettings.Lifetime + 0.05) | |
| 2816 | Particles.Rate = S.smokeSettings.Rate | |
| 2817 | Particles.Rotation = NumberRange.new(0, 360) | |
| 2818 | Particles.RotSpeed = NumberRange.new(10) | |
| 2819 | Particles.Speed = NumberRange.new(S.smokeSettings.Speed - 5, S.smokeSettings.Speed + 5) | |
| 2820 | Particles.VelocitySpread = S.smokeSettings.Spread | |
| 2821 | Particles.Parent = Smoke | |
| 2822 | ||
| 2823 | Smoke.Parent = gunIgnore | |
| 2824 | Smoke.CFrame = surfaceCF | |
| 2825 | if (not H.Anchored) then | |
| 2826 | local Weld = Instance.new("Weld", Smoke)
| |
| 2827 | Weld.Part0 = H | |
| 2828 | Weld.Part1 = Smoke | |
| 2829 | Weld.C0 = H.CFrame:toObjectSpace(surfaceCF) | |
| 2830 | Smoke.Anchored = false | |
| 2831 | end | |
| 2832 | delay(0.1, function() | |
| 2833 | Particles.Enabled = false | |
| 2834 | wait(S.smokeSettings.Lifetime + 0.05) | |
| 2835 | Smoke:Destroy() | |
| 2836 | end) | |
| 2837 | end | |
| 2838 | end) | |
| 2839 | ||
| 2840 | ---------------------------------------------------------------------- | |
| 2841 | --------------------[ SHOCKWAVE HANDLING ]---------------------------- | |
| 2842 | ---------------------------------------------------------------------- | |
| 2843 | ||
| 2844 | local createShockwave = script:WaitForChild("createShockwave")
| |
| 2845 | createShockwave.OnServerEvent:connect(function(_, Center, Radius, gunIgnore, S) | |
| 2846 | local Shockwave = Instance.new("Part")
| |
| 2847 | Shockwave.BrickColor = S.shockwaveSettings.Color | |
| 2848 | Shockwave.Material = Enum.Material.SmoothPlastic | |
| 2849 | Shockwave.Name = "Shockwave" | |
| 2850 | Shockwave.Anchored = true | |
| 2851 | Shockwave.CanCollide = false | |
| 2852 | Shockwave.FormFactor = Enum.FormFactor.Symmetric | |
| 2853 | Shockwave.Size = V3(1, 1, 1) | |
| 2854 | Shockwave.BottomSurface = Enum.SurfaceType.Smooth | |
| 2855 | Shockwave.TopSurface = Enum.SurfaceType.Smooth | |
| 2856 | local Mesh = Instance.new("SpecialMesh")
| |
| 2857 | Mesh.MeshType = Enum.MeshType.Sphere | |
| 2858 | Mesh.Scale = V3() | |
| 2859 | Mesh.Parent = Shockwave | |
| 2860 | Shockwave.Parent = gunIgnore | |
| 2861 | Shockwave.CFrame = CF(Center) | |
| 2862 | spawn(function() | |
| 2863 | local t0 = tick() | |
| 2864 | while true do | |
| 2865 | local Alpha = math.min((tick() - t0) / S.shockwaveSettings.Duration, 1) | |
| 2866 | local Scale = 2 * Radius * Alpha | |
| 2867 | Mesh.Scale = V3(Scale, Scale, Scale) | |
| 2868 | Shockwave.Transparency = Alpha | |
| 2869 | if Alpha == 1 then break end | |
| 2870 | wait() | |
| 2871 | end | |
| 2872 | Shockwave:Destroy() | |
| 2873 | end) | |
| 2874 | end) | |
| 2875 | ||
| 2876 | ---------------------------------------------------------------------- | |
| 2877 | --------------------[ BLOOD HANDLING ]-------------------------------- | |
| 2878 | ---------------------------------------------------------------------- | |
| 2879 | ||
| 2880 | local createBlood = script:WaitForChild("createBlood")
| |
| 2881 | createBlood.OnServerEvent:connect(function(_, H, P, D, gunIgnore, S) | |
| 2882 | local bloodCF = CF(P, P + D) * CFANG(RAD(-90), 0, 0) | |
| 2883 | local Blood = Instance.new("Part")
| |
| 2884 | Blood.Transparency = 1 | |
| 2885 | Blood.Anchored = true | |
| 2886 | Blood.CanCollide = false | |
| 2887 | Blood.FormFactor = "Custom" | |
| 2888 | Blood.Size = V3(0.2, 1, 0.2) | |
| 2889 | Blood.TopSurface = 0 | |
| 2890 | Blood.BottomSurface = 0 | |
| 2891 | ||
| 2892 | local Particles = Instance.new("ParticleEmitter")
| |
| 2893 | Particles.Color = ColorSequence.new(S.bloodSettings.Color) | |
| 2894 | Particles.LightEmission = 0 | |
| 2895 | Particles.Size = NumberSequence.new(S.bloodSettings.Size) | |
| 2896 | Particles.Texture = S.bloodSettings.Texture | |
| 2897 | Particles.Transparency = NumberSequence.new( | |
| 2898 | {
| |
| 2899 | NumberSequenceKeypoint.new(0, S.bloodSettings.startTransparency); | |
| 2900 | NumberSequenceKeypoint.new(1, 1); | |
| 2901 | } | |
| 2902 | ) | |
| 2903 | Particles.EmissionDirection = Enum.NormalId.Top | |
| 2904 | Particles.Lifetime = NumberRange.new(S.bloodSettings.Lifetime - 0.05, S.bloodSettings.Lifetime + 0.05) | |
| 2905 | Particles.Rate = S.bloodSettings.Rate | |
| 2906 | Particles.Rotation = NumberRange.new(0, 90) | |
| 2907 | Particles.Speed = NumberRange.new(S.bloodSettings.Speed) | |
| 2908 | Particles.VelocitySpread = S.bloodSettings.Spread | |
| 2909 | Particles.Parent = Blood | |
| 2910 | ||
| 2911 | Blood.Parent = gunIgnore | |
| 2912 | Blood.CFrame = bloodCF | |
| 2913 | if (not H.Anchored) then | |
| 2914 | local Weld = Instance.new("Weld", Blood)
| |
| 2915 | Weld.Part0 = H | |
| 2916 | Weld.Part1 = Blood | |
| 2917 | Weld.C0 = H.CFrame:toObjectSpace(bloodCF) | |
| 2918 | Blood.Anchored = false | |
| 2919 | end | |
| 2920 | delay(0.15, function() | |
| 2921 | Particles.Enabled = false | |
| 2922 | wait(S.bloodSettings.Lifetime + 0.05) | |
| 2923 | Blood:Destroy() | |
| 2924 | end) | |
| 2925 | end) | |
| 2926 | ||
| 2927 | ---------------------------------------------------------------------- | |
| 2928 | --------------------[ TRAIL HANDLING ]-------------------------------- | |
| 2929 | ---------------------------------------------------------------------- | |
| 2930 | ||
| 2931 | local createTrail = script:WaitForChild("createTrail")
| |
| 2932 | createTrail.OnServerEvent:connect(function(_, Origin, P, gunIgnore, S) | |
| 2933 | local Trail = Instance.new("Part")
| |
| 2934 | Trail.BrickColor = S.trailSettings.Color | |
| 2935 | Trail.Transparency = S.trailSettings.Transparency | |
| 2936 | Trail.Anchored = true | |
| 2937 | Trail.CanCollide = false | |
| 2938 | Trail.Size = V3(1, 1, 1) | |
| 2939 | local Mesh = Instance.new("CylinderMesh")
| |
| 2940 | Mesh.Offset = V3(0, -(P - Origin).magnitude / 2, 0) | |
| 2941 | Mesh.Scale = V3(S.trailSettings.Thickness, (P - Origin).magnitude, S.trailSettings.Thickness) | |
| 2942 | Mesh.Parent = Trail | |
| 2943 | Trail.Parent = gunIgnore | |
| 2944 | Trail.CFrame = CF(Origin, P) * CFANG(RAD(90), 0, 0) | |
| 2945 | delay(S.trailSettings.visibleTime, function() | |
| 2946 | if S.trailSettings.disappearTime > 0 then | |
| 2947 | local t0 = tick() | |
| 2948 | while true do | |
| 2949 | local Alpha = math.min((tick() - t0) / S.trailSettings.disappearTime, 1) | |
| 2950 | Trail.Transparency = numLerp(S.trailSettings.Transparency, 1, Alpha) | |
| 2951 | if Alpha == 1 then break end | |
| 2952 | wait() | |
| 2953 | end | |
| 2954 | Trail:Destroy() | |
| 2955 | else | |
| 2956 | Trail:Destroy() | |
| 2957 | end | |
| 2958 | end) | |
| 2959 | end) | |
| 2960 | end)) | |
| 2961 | ObjectValue194.Name = "Plyr" | |
| 2962 | ObjectValue194.Parent = Script193 | |
| 2963 | RemoteFunction195.Name = "getWeldCF" | |
| 2964 | RemoteFunction195.Parent = Script193 | |
| 2965 | RemoteFunction196.Name = "gunSetup" | |
| 2966 | RemoteFunction196.Parent = Script193 | |
| 2967 | RemoteFunction197.Name = "tweenJoint" | |
| 2968 | RemoteFunction197.Parent = Script193 | |
| 2969 | RemoteEvent198.Name = "onRenderStep" | |
| 2970 | RemoteEvent198.Parent = Script193 | |
| 2971 | RemoteFunction199.Name = "createTweenIndicator" | |
| 2972 | RemoteFunction199.Parent = Script193 | |
| 2973 | RemoteFunction200.Name = "deleteTweenIndicator" | |
| 2974 | RemoteFunction200.Parent = Script193 | |
| 2975 | RemoteFunction201.Name = "lerpCF" | |
| 2976 | RemoteFunction201.Parent = Script193 | |
| 2977 | LocalScript202.Name = "resetCam" | |
| 2978 | LocalScript202.Parent = Script193 | |
| 2979 | table.insert(cors,sandbox(LocalScript202,function() | |
| 2980 | repeat wait() until game.Players.LocalPlayer.Character | |
| 2981 | ||
| 2982 | local Player = game.Players.LocalPlayer | |
| 2983 | local Char = Player.Character | |
| 2984 | local Humanoid = Char:WaitForChild("Humanoid")
| |
| 2985 | ||
| 2986 | local Cam = game.Workspace.CurrentCamera | |
| 2987 | local UIS = game:GetService("UserInputService")
| |
| 2988 | ||
| 2989 | local ignoreCode = script:WaitForChild("ignoreCode")
| |
| 2990 | repeat wait() until ignoreCode.Value ~= 0 | |
| 2991 | local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
| |
| 2992 | local gunIgnore = ignoreModel:FindFirstChild("gunIgnore_"..Player.Name)
| |
| 2993 | ||
| 2994 | Cam.FieldOfView = 70 | |
| 2995 | Cam.CameraType = Enum.CameraType.Custom | |
| 2996 | Cam:ClearAllChildren() | |
| 2997 | ||
| 2998 | UIS.MouseBehavior = Enum.MouseBehavior.Default | |
| 2999 | UIS.MouseIconEnabled = true | |
| 3000 | ||
| 3001 | Player.CameraMode = Enum.CameraMode.Classic | |
| 3002 | ||
| 3003 | Humanoid.WalkSpeed = 16 | |
| 3004 | Humanoid.AutoRotate = true | |
| 3005 | ||
| 3006 | if gunIgnore then gunIgnore:Destroy() end | |
| 3007 | end)) | |
| 3008 | IntValue203.Name = "ignoreCode" | |
| 3009 | IntValue203.Parent = LocalScript202 | |
| 3010 | RemoteEvent204.Name = "createBulletImpact" | |
| 3011 | RemoteEvent204.Parent = Script193 | |
| 3012 | RemoteEvent205.Name = "createShockwave" | |
| 3013 | RemoteEvent205.Parent = Script193 | |
| 3014 | RemoteEvent206.Name = "createBlood" | |
| 3015 | RemoteEvent206.Parent = Script193 | |
| 3016 | RemoteEvent207.Name = "createTrail" | |
| 3017 | RemoteEvent207.Parent = Script193 | |
| 3018 | LocalScript208.Name = "clientMain" | |
| 3019 | LocalScript208.Parent = Tool0 | |
| 3020 | table.insert(cors,sandbox(LocalScript208,function() | |
| 3021 | --[[ | |
| 3022 | Kit By TurboFusion | |
| 3023 | Remake By MuYhEt & Xander521 | |
| 3024 | --]] | |
| 3025 | -------------------------------------------------------------------------------------- | |
| 3026 | --------------------[ CHARACTER LOADING ]--------------------------------------------- | |
| 3027 | -------------------------------------------------------------------------------------- | |
| 3028 | ||
| 3029 | repeat wait() until game.Players.LocalPlayer.Character | |
| 3030 | repeat wait() until game.Players.LocalPlayer.Character:IsDescendantOf(game.Workspace) | |
| 3031 | wait(1 / 20) | |
| 3032 | ||
| 3033 | -------------------------------------------------------------------------------------- | |
| 3034 | --------------------[ IGNORE MODEL ]-------------------------------------------------- | |
| 3035 | -------------------------------------------------------------------------------------- | |
| 3036 | ||
| 3037 | local ignoreCode = script:WaitForChild("ignoreCode")
| |
| 3038 | ||
| 3039 | repeat wait() until ignoreCode.Value ~= 0 | |
| 3040 | ||
| 3041 | local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
| |
| 3042 | ||
| 3043 | local grenadeFolder = ignoreModel:WaitForChild("grenadeFolder")
| |
| 3044 | ||
| 3045 | -------------------------------------------------------------------------------------- | |
| 3046 | --------------------[ CONSTANTS ]----------------------------------------------------- | |
| 3047 | -------------------------------------------------------------------------------------- | |
| 3048 | ||
| 3049 | local Gun = script.Parent | |
| 3050 | local serverMain = Gun:WaitForChild("serverMain")
| |
| 3051 | local Handle = Gun:WaitForChild("Handle")
| |
| 3052 | local AimPart = Gun:WaitForChild("AimPart")
| |
| 3053 | local Main = Gun:WaitForChild("Main")
| |
| 3054 | ||
| 3055 | local Ammo = Gun:WaitForChild("Ammo")
| |
| 3056 | local ClipSize = Gun:WaitForChild("ClipSize")
| |
| 3057 | local StoredAmmo = Gun:WaitForChild("StoredAmmo")
| |
| 3058 | ||
| 3059 | local createTweenIndicator = serverMain:WaitForChild("createTweenIndicator")
| |
| 3060 | local deleteTweenIndicator = serverMain:WaitForChild("deleteTweenIndicator")
| |
| 3061 | local getWeldCF = serverMain:WaitForChild("getWeldCF")
| |
| 3062 | local gunSetup = serverMain:WaitForChild("gunSetup")
| |
| 3063 | local lerpCF = serverMain:WaitForChild("lerpCF")
| |
| 3064 | local createBlood = serverMain:WaitForChild("createBlood")
| |
| 3065 | local createBulletImpact = serverMain:WaitForChild("createBulletImpact")
| |
| 3066 | local createShockwave = serverMain:WaitForChild("createShockwave")
| |
| 3067 | local createTrail = serverMain:WaitForChild("createTrail")
| |
| 3068 | ||
| 3069 | local Particle = {}
| |
| 3070 | function Particle.new(Prop) | |
| 3071 | ----------[ CONSTANTS ]-------------------- | |
| 3072 | ||
| 3073 | local Cam = workspace.CurrentCamera | |
| 3074 | local rayIgnore = Prop.rayIgnore or {} --If the property doesn't exist, then set it to it's default
| |
| 3075 | local Color = Prop.Color or Color3.new(1, 1, 1) | |
| 3076 | local Length = Prop.Length or 1 | |
| 3077 | local Width = Prop.Width or 1 | |
| 3078 | local p0 = Prop.p0 or error("Particle.new requires a p0 (origin position) property!", 0) --Give an error message if you don't this
| |
| 3079 | local v0 = Prop.v0 or error("Particle.new requires a v0 (initial velocity) property!", 0)
| |
| 3080 | local a0 = Prop.a0 or error("Particle.new requires an a0 (initial acceleration) property!", 0)
| |
| 3081 | ||
| 3082 | ----------[ VARIABLES ]-------------------- | |
| 3083 | ||
| 3084 | local Deleted = false | |
| 3085 | local p = p0 --Set the position, velocity, and acceleration as the intial conditions | |
| 3086 | local v = v0 | |
| 3087 | local a = a0 | |
| 3088 | local t = 0 | |
| 3089 | ||
| 3090 | ----------[ FUNCTIONS ]-------------------- | |
| 3091 | ||
| 3092 | local function worldWidthToScreenWidth(Width, Depth) --A function I made that gives you a screen width given a world width and depth | |
| 3093 | local Center = Cam.CoordinateFrame * CFrame.new(0, 0, -Depth) | |
| 3094 | local wp1 = (Center * CFrame.new(0, Width / 2, 0)).p | |
| 3095 | local wp2 = (Center * CFrame.new(0, -Width / 2, 0)).p | |
| 3096 | local sp1 = Cam:WorldToScreenPoint(wp1) --Use the WorldToScreenPoint method of the camera to get the screen width from the world width | |
| 3097 | local sp2 = Cam:WorldToScreenPoint(wp2) | |
| 3098 | return (sp1 - sp2).magnitude | |
| 3099 | end | |
| 3100 | ||
| 3101 | ----------[ MAIN PROGRAM ]----------------- | |
| 3102 | ||
| 3103 | local Container = Instance.new("Frame")
| |
| 3104 | Container.BackgroundTransparency = 1 | |
| 3105 | Container.Position = UDim2.new() | |
| 3106 | Container.Size = UDim2.new() | |
| 3107 | local Line = Instance.new("Frame")
| |
| 3108 | Line.BackgroundColor3 = Color | |
| 3109 | Line.BorderSizePixel = 0 | |
| 3110 | Line.Position = UDim2.new() | |
| 3111 | Line.Size = UDim2.new() | |
| 3112 | Line.Parent = Container | |
| 3113 | ||
| 3114 | return setmetatable( | |
| 3115 | {
| |
| 3116 | delete = function() --This function safely removes the particle | |
| 3117 | Container:Destroy() | |
| 3118 | Deleted = true | |
| 3119 | end | |
| 3120 | }, | |
| 3121 | {
| |
| 3122 | __index = function(_, Index) | |
| 3123 | if Index == "p" or Index == "position" then --Return the world position of the particle | |
| 3124 | return (Deleted and nil or p) | |
| 3125 | elseif Index == "v" or Index == "velocity" then --Return the world velocity of the particle | |
| 3126 | return (Deleted and nil or v) | |
| 3127 | elseif Index == "obj" or Index == "object" then --Return the particle frame itself | |
| 3128 | return (Deleted and nil or Container) | |
| 3129 | else | |
| 3130 | error(Index.." is not a member of Particle!", 0) --Give an error message if any other index is called | |
| 3131 | end | |
| 3132 | end; | |
| 3133 | ||
| 3134 | __newindex = function(_, Index, Value) | |
| 3135 | if Index == "t" or Index == "time" and (not Deleted) then --Render the particle given a time value | |
| 3136 | t = Value | |
| 3137 | p = p0 + (v0 * t) + (0.5 * a0 * t * t) --update the position given the time | |
| 3138 | v = v0 + (a0 * t) --update the velocity given the time | |
| 3139 | ||
| 3140 | local testRay1 = Ray.new(Cam.CoordinateFrame.p, (p + (v.unit * Length) / 2) - Cam.CoordinateFrame.p) | |
| 3141 | local testRay2 = Ray.new(Cam.CoordinateFrame.p, (p - (v.unit * Length) / 2) - Cam.CoordinateFrame.p) | |
| 3142 | local H1, _ = workspace:FindPartOnRayWithIgnoreList(testRay1, rayIgnore) | |
| 3143 | local H2, _ = workspace:FindPartOnRayWithIgnoreList(testRay2, rayIgnore) | |
| 3144 | ||
| 3145 | if H1 and H2 then | |
| 3146 | Line.Visible = false | |
| 3147 | else | |
| 3148 | local face1 = Cam:WorldToScreenPoint(p + (v.unit * Length) / 2) --Get the 2 endpoints of the particle in screen space | |
| 3149 | local face2 = Cam:WorldToScreenPoint(p - (v.unit * Length) / 2) | |
| 3150 | local Center, isVisible = Cam:WorldToScreenPoint(p) --Get the center of the particle in screen space | |
| 3151 | ||
| 3152 | local screenLength = (face1 - face2).magnitude | |
| 3153 | local screenWidth = worldWidthToScreenWidth(Width, Center.Z) | |
| 3154 | local Ang = math.atan2(face1.Y - face2.Y, face1.X - face2.X) --Get the angle the particle needs to be at in order to line up | |
| 3155 | ||
| 3156 | Line.Position = UDim2.new(0, 0, 0, -screenWidth / 2) | |
| 3157 | Line.Size = UDim2.new(1, 0, 0, screenWidth) | |
| 3158 | Line.Visible = isVisible --Make the particle invisible if the world point isn't on screen | |
| 3159 | ||
| 3160 | Container.Position = UDim2.new( | |
| 3161 | 0, | |
| 3162 | face2.X + (math.cos(Ang) - 1) * screenLength / 2, --Yay trig! | |
| 3163 | 0, | |
| 3164 | face2.Y + math.sin(Ang) * screenLength / 2 | |
| 3165 | ) | |
| 3166 | Container.Size = UDim2.new(0, screenLength, 0, 0) | |
| 3167 | Container.Rotation = math.deg(Ang) | |
| 3168 | end | |
| 3169 | else | |
| 3170 | error(Index.." is not a member of Particle!", 0) --Give an error message if any other index is being changed | |
| 3171 | end | |
| 3172 | end | |
| 3173 | } | |
| 3174 | ) | |
| 3175 | end | |
| 3176 | local Spring = {}
| |
| 3177 | function Spring.new(Initial) | |
| 3178 | local t0 = tick() | |
| 3179 | local p0 = Initial or 0 | |
| 3180 | local v0 = Initial and Vector3.new() or 0 | |
| 3181 | local t = Initial or 0 | |
| 3182 | local d = 1 | |
| 3183 | local s = 1 | |
| 3184 | ||
| 3185 | local function positionVelocity(Tick) | |
| 3186 | local x = Tick - t0 | |
| 3187 | local c0 = p0 - t | |
| 3188 | if s == 0 then | |
| 3189 | return p0, 0 | |
| 3190 | elseif d < 1 then | |
| 3191 | local c = math.sqrt(1 - d ^ 2) | |
| 3192 | local c1 = (v0 / s + d * c0) / c | |
| 3193 | local co = math.cos(c * s * x) | |
| 3194 | local si = math.sin(c * s * x) | |
| 3195 | local e = math.exp(d * s * x) | |
| 3196 | local p = t + (c0 * co + c1 * si) / e | |
| 3197 | local v = s * ((c * c1 - d * c0) * co - (c * c0 + d * c1) * si) / e | |
| 3198 | return p, v | |
| 3199 | else | |
| 3200 | local c1 = v0 / s + c0 | |
| 3201 | local e = math.exp(s * x) | |
| 3202 | local p = t + (c0 + c1 * s * x) / e | |
| 3203 | local v = s * (c1 - c0 - c1 * s * x) / e | |
| 3204 | return p, v | |
| 3205 | end | |
| 3206 | end | |
| 3207 | ||
| 3208 | return setmetatable( | |
| 3209 | {
| |
| 3210 | accelerate = function(_, acceleration) | |
| 3211 | local T = tick() | |
| 3212 | local p, v = positionVelocity(T) | |
| 3213 | p0 = p | |
| 3214 | v0 = v + acceleration | |
| 3215 | t0 = T | |
| 3216 | end; | |
| 3217 | }, | |
| 3218 | {
| |
| 3219 | __index = function(_, index) | |
| 3220 | if index == "value" or index == "position" or index == "p" then | |
| 3221 | local p, v = positionVelocity(tick()) | |
| 3222 | return p | |
| 3223 | elseif index == "velocity" or index == "v" then | |
| 3224 | local p, v = positionVelocity(tick()) | |
| 3225 | return v | |
| 3226 | elseif index == "acceleration" or index == "a" then | |
| 3227 | local x = tick() - t0 | |
| 3228 | local c0 = p0 - t | |
| 3229 | if s == 0 then | |
| 3230 | return 0 | |
| 3231 | elseif d < 1 then | |
| 3232 | local c = math.sqrt(1 - d ^ 2) | |
| 3233 | local c1 = (v0 / s + d * c0) / c | |
| 3234 | local cs = (c0 * d ^ 2 - 2 * c * d * c1 - c0 * c ^ 2) * math.cos(c * s * x) | |
| 3235 | local sn = (c1 * d ^ 2 + 2 * c * d * c0 - c1 * c ^ 2) * math.sin(c * s * x) | |
| 3236 | return s ^ 2 *(cs + sn) / math.exp(d * s * x) | |
| 3237 | else | |
| 3238 | local c1 = v0 / s + c0 | |
| 3239 | return s ^ 2 * (c0 - 2 * c1 + c1 * s * x) / math.exp(s * x) | |
| 3240 | end | |
| 3241 | elseif index == "target" or index == "t" then | |
| 3242 | return t | |
| 3243 | elseif index == "damper" or index == "d" then | |
| 3244 | return d | |
| 3245 | elseif index == "speed" or index == "s" then | |
| 3246 | return s | |
| 3247 | elseif index == "magnitude" or index == "m" then | |
| 3248 | local p, v = positionVelocity(tick()) | |
| 3249 | return p.magnitude | |
| 3250 | else | |
| 3251 | error(index.." is not a valid member of spring", 0) | |
| 3252 | end | |
| 3253 | end; | |
| 3254 | ||
| 3255 | __newindex = function(_, index, value) | |
| 3256 | local T = tick() | |
| 3257 | if index == "value" or index == "position" or index == "p" then | |
| 3258 | local p, v = positionVelocity(T) | |
| 3259 | p0, v0 = value, v | |
| 3260 | elseif index == "velocity" or index == "v" then | |
| 3261 | local p, v = positionVelocity(T) | |
| 3262 | p0, v0 = p, value | |
| 3263 | elseif index == "acceleration" or index == "a" then | |
| 3264 | local p, v = positionVelocity(T) | |
| 3265 | p0, v0 = p, v + value | |
| 3266 | elseif index == "target" or index == "t" then | |
| 3267 | p0, v0 = positionVelocity(T) | |
| 3268 | t = value | |
| 3269 | elseif index == "damper" or index == "d" then | |
| 3270 | p0, v0 = positionVelocity(T) | |
| 3271 | d = value < 0 and 0 or value < 1 and value or 1 | |
| 3272 | elseif index == "speed" or index == "s" then | |
| 3273 | p0, v0 = positionVelocity(T) | |
| 3274 | s = value < 0 and 0 or value | |
| 3275 | else | |
| 3276 | error(index.." is not a valid member of spring", 0) | |
| 3277 | end | |
| 3278 | t0 = T | |
| 3279 | end; | |
| 3280 | } | |
| 3281 | ) | |
| 3282 | end | |
| 3283 | local Anims = {
| |
| 3284 | ||
| 3285 | Reload = function(S) --This is the main reload animation. The parameter S contains all the variables and functions that are necessary for this animation | |
| 3286 | --[[ | |
| 3287 | FUNCTION LIST_ | |
| 3288 | ||
| 3289 | S.tweenJoint(Joint, newC0, newC1, Alpha, Duration) --This function tweens a joint to a given C0 and C1. The Alpha parameter is function | |
| 3290 | that returns a number between 0 and 1 given an argument of a number between 0 and 90. The Duration is how fast the joint tweens. NOTE, | |
| 3291 | you can put nil as an argument for the newC0 or newC1 parameter and the function won't tween that specific property of the weld. This | |
| 3292 | is useful if you only want to mess with the C0 or C1 property of a weld. | |
| 3293 | ||
| 3294 | S.makeMagInvisible() --This function makes the mag invisible so it looks like the mag was removed | |
| 3295 | ||
| 3296 | S.makeMagVisible() --This function makes the mag visible again at whatever the previous transparency of the mag parts were | |
| 3297 | ||
| 3298 | S.isMagVisible() --This function returns a true or false value based on whether or not the mag is visible. This can be used to tell if | |
| 3299 | the animation was stopped midway and where to restart the animation | |
| 3300 | ||
| 3301 | S.isMagEmpty() --This function returns a true or false value based on whether or not the mag is empty, meaning the ammo is 0. This can be | |
| 3302 | used to decide if a chambering animation should play after the reload animation | |
| 3303 | ||
| 3304 | S.setNewMag() --This function sets the newMag variable in the clientMain to true which basically lets the script know that a new mag was | |
| 3305 | put into the gun. This is used so that if the reload animation is broken after the new mag was put in but before the chambering animation | |
| 3306 | then the script will simply play the chambering animation instead of putting in another mag | |
| 3307 | ||
| 3308 | S.isNewMag() --This function returns a true or false value based on whether or not the mag that is currently attached to the gun is a new | |
| 3309 | mag. In order for it to be a new mag, it needs to have full ammo. Once you fire, the mag becomes an old mag | |
| 3310 | ||
| 3311 | S.createMag(Key) --This functions clones the Mag and puts it in a table with a Key parameter so you can access the mag in a separate | |
| 3312 | function and it returns a Model containing the Mag and a table that contains the original mag bricks and the corresponding clone. NOTE, | |
| 3313 | the mag bricks will be made non can collide | |
| 3314 | ||
| 3315 | S.getMag(Key) --This function gets a Mag from the mag table given a Key argument and it returns the model that the mag is contained in | |
| 3316 | and the brick that all the other mag parts are welded to | |
| 3317 | ||
| 3318 | S.attachGripToHead() --This function detaches the grip from the right arm and attaches it to the Head. This is so you can make reload | |
| 3319 | animations that require using the right arm to manipulate the gun in any way. The C0 of the grip is changed so the gun stays in the | |
| 3320 | position that it was in before you detached the grip from the right arm. | |
| 3321 | ||
| 3322 | S.attachGripToArm() --This function detaches the grip from the Head and attaches it to the Arm. The C0 of the grip is changed so the gun | |
| 3323 | stays in the position that it was in before you detached the grip from the head | |
| 3324 | ||
| 3325 | S.Sine(X) --This function is an Alpha function for the tweenJoint function. Given a number between 0 and 90, the function will return the | |
| 3326 | sine of that number, which is a number between 0 and 1, which is used to tween a Joint with a Sine movement | |
| 3327 | ||
| 3328 | S.Linear(X) --This function is an Alpha function for the tweenJoint function. Given a number between 0 and 90, the function will return | |
| 3329 | the number / 90, which is a number between 0 and 1, which is used to a tween a Joint with a Linear movement | |
| 3330 | ||
| 3331 | VARIABLE LIST_ | |
| 3332 | ||
| 3333 | S.Handle --This variable is the Handle of gun | |
| 3334 | ||
| 3335 | S.LArm --This variable is the left arm | |
| 3336 | ||
| 3337 | S.RArm --This variable is the right arm | |
| 3338 | ||
| 3339 | S.LWeld --This variable is the left arm weld which is attached to the animBase | |
| 3340 | ||
| 3341 | S.RWeld --This variable is the right arm weld which is attached to the animBase | |
| 3342 | ||
| 3343 | S.LC0 --This variable is the cframe of the left arm joint with respect to the torso | |
| 3344 | ||
| 3345 | S.RC0 --This variable is the cframe of the right arm joint with respect to the torso | |
| 3346 | ||
| 3347 | S.Grip --This variable is the Grip weld which is attached to right arm | |
| 3348 | ||
| 3349 | S.gunIgnore --This variable is the gun ignore model which contains the fake arms and bullets and other stuff | |
| 3350 | ||
| 3351 | S.Cam --This variable is the player camera | |
| 3352 | ||
| 3353 | S.CF --This variable is the shortened form of CFrame.new which you can use instead of CFrame.new | |
| 3354 | ||
| 3355 | S.CFANG --This variable is the shortened form of CFrame.Angles which you can use instead of CFrame.Angles | |
| 3356 | ||
| 3357 | S.V3 --This variable is the shortened form of Vector3.new which you can use instead of Vector3.new | |
| 3358 | ||
| 3359 | S.RAD --This variable is the shortened form of math.rad which you can use instead of math.rad | |
| 3360 | ||
| 3361 | S.reloadTimeLoaded --This variable is the reload time for when the gun is loaded which you can use to modify how fast the reload | |
| 3362 | animation runs | |
| 3363 | ||
| 3364 | S.reloadTimeEmpty --This variable is the reload time for when the gun is empty which you can use to modify how fast the reload | |
| 3365 | animation runs | |
| 3366 | --]] | |
| 3367 | ||
| 3368 | local W1 = nil | |
| 3369 | local W2 = nil | |
| 3370 | local animSpeed = S.isMagEmpty() and S.reloadTimeEmpty / 1.3 or S.reloadTimeLoaded / 0.9 | |
| 3371 | return {
| |
| 3372 | function() | |
| 3373 | if (not S.isNewMag()) then | |
| 3374 | if S.isMagVisible() then | |
| 3375 | local Mag1, magTable1 = S.createMag("Mag1")
| |
| 3376 | ||
| 3377 | Mag1.Parent = S.gunIgnore | |
| 3378 | ||
| 3379 | W1 = Instance.new("Weld")
| |
| 3380 | W1.Part0 = magTable1[1].magClone | |
| 3381 | W1.Part1 = S.Handle | |
| 3382 | W1.C0 = magTable1[1].Original.CFrame:toObjectSpace(S.Handle.CFrame) | |
| 3383 | W1.Parent = magTable1[1].magClone | |
| 3384 | ||
| 3385 | S.tweenJoint(S.LWeld, nil, S.CF(-0.9, 2, -1.1) * S.CFANG(S.RAD(-15), 0, S.RAD(-25)), S.Sine, 0.2 * animSpeed) | |
| 3386 | S.tweenJoint(S.RWeld, nil, S.CF(0.3, 0.2, -0.31) * S.CFANG(S.RAD(-12), 0, S.RAD(25)), S.Sine, 0.2 * animSpeed) | |
| 3387 | S.tweenJoint(S.Grip, nil, S.CFANG(0, S.RAD(20), S.RAD(10)), S.Sine, 0.1 * animSpeed) | |
| 3388 | wait(0.2 * animSpeed) | |
| 3389 | end | |
| 3390 | end | |
| 3391 | end; | |
| 3392 | ||
| 3393 | function() | |
| 3394 | if (not S.isNewMag()) then | |
| 3395 | if S.isMagVisible() then | |
| 3396 | S.makeMagInvisible() | |
| 3397 | W1:Destroy() | |
| 3398 | local Mag1, magTable1 = S.getMag("Mag1")
| |
| 3399 | magTable1[1].magClone.Velocity = S.Handle.Velocity + S.Handle.CFrame:vectorToWorldSpace(S.V3(0, -1, 0)) * 20 | |
| 3400 | ||
| 3401 | S.tweenJoint(S.RWeld, nil, S.CF(0.3, 0.2, -0.5) * S.CFANG(S.RAD(-20), S.RAD(10), S.RAD(25)), S.Sine, 0.25 * animSpeed) | |
| 3402 | S.tweenJoint(S.Grip, nil, S.CFANG(0, S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed) | |
| 3403 | else | |
| 3404 | S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-12), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed) | |
| 3405 | S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed) | |
| 3406 | end | |
| 3407 | ||
| 3408 | S.tweenJoint(S.LWeld, nil, S.CF(0, 0.5, 0) * S.CFANG(S.RAD(95), 0, S.RAD(-25)), S.Sine, 0.2 * animSpeed) | |
| 3409 | ||
| 3410 | wait(0.25 * animSpeed) | |
| 3411 | end | |
| 3412 | end; | |
| 3413 | ||
| 3414 | function() | |
| 3415 | if (not S.isNewMag()) then | |
| 3416 | local Mag1, magTable1 = S.getMag("Mag1")
| |
| 3417 | if Mag1 then Mag1:Destroy() end | |
| 3418 | ||
| 3419 | local Mag2, magTable2 = S.createMag("Mag2")
| |
| 3420 | ||
| 3421 | Mag2.Parent = S.gunIgnore | |
| 3422 | ||
| 3423 | local LArmCF = S.LWeld.Part0.CFrame * S.LWeld.C0 * (S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60))):inverse() | |
| 3424 | local RArmCF = S.RWeld.Part0.CFrame * S.RWeld.C0 * (S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25))):inverse() | |
| 3425 | local handleOffsetCF = S.RArm.CFrame:toObjectSpace(S.RArm.CFrame * S.Grip.C0 * (S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10))):inverse()) | |
| 3426 | local originalMagOffsetCF = S.Handle.CFrame:toObjectSpace(magTable2[1].Original.CFrame) | |
| 3427 | local newMagC0 = LArmCF:toObjectSpace(RArmCF * handleOffsetCF * originalMagOffsetCF) | |
| 3428 | ||
| 3429 | W2 = Instance.new("Weld")
| |
| 3430 | W2.Part0 = S.LArm | |
| 3431 | W2.Part1 = magTable2[1].magClone | |
| 3432 | W2.C0 = newMagC0 | |
| 3433 | W2.Parent = magTable2[1].magClone | |
| 3434 | ||
| 3435 | S.tweenJoint(S.LWeld, nil, S.CF(0.55, 1, -2.4) * S.CFANG(S.RAD(-20), S.RAD(20), S.RAD(-60)), S.Sine, 0.2 * animSpeed)--0.25 | |
| 3436 | S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-12), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed) | |
| 3437 | S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed) | |
| 3438 | wait(0.2 * animSpeed) | |
| 3439 | end | |
| 3440 | end; | |
| 3441 | ||
| 3442 | function() | |
| 3443 | if (not S.isNewMag()) then | |
| 3444 | S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.15 * animSpeed) | |
| 3445 | S.tweenJoint(S.LWeld, nil, S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60)), S.Sine, 0.15 * animSpeed)--0.25 | |
| 3446 | S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed) | |
| 3447 | ||
| 3448 | wait(0.2 * animSpeed) | |
| 3449 | end | |
| 3450 | end; | |
| 3451 | ||
| 3452 | function() | |
| 3453 | if (not S.isNewMag()) then | |
| 3454 | local Mag1, _ = S.getMag("Mag1")
| |
| 3455 | local Mag2, _ = S.getMag("Mag2")
| |
| 3456 | S.makeMagVisible() | |
| 3457 | S.setNewMag() | |
| 3458 | if Mag1 then Mag1:Destroy() end | |
| 3459 | Mag2:Destroy() | |
| 3460 | end | |
| 3461 | end; | |
| 3462 | ||
| 3463 | function() | |
| 3464 | if S.isMagEmpty() then | |
| 3465 | if S.isNewMag() then | |
| 3466 | S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.15 * animSpeed) | |
| 3467 | S.tweenJoint(S.LWeld, nil, S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60)), S.Sine, 0.15 * animSpeed)--0.25 | |
| 3468 | S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed) | |
| 3469 | end | |
| 3470 | S.tweenJoint(S.LWeld, nil, S.CF(0, 1.3, -0.55) * S.CFANG(S.RAD(-26), 0, 0), S.Sine, 0.2 * animSpeed) | |
| 3471 | ||
| 3472 | wait(0.2 * animSpeed) | |
| 3473 | end | |
| 3474 | end; | |
| 3475 | ||
| 3476 | function() | |
| 3477 | if S.isMagEmpty() then | |
| 3478 | S.tweenJoint(S.LWeld, nil, S.CF(0.4, 1.6, -0.55) * S.CFANG(S.RAD(-23), 0, S.RAD(-60)), S.Sine, 0.1 * animSpeed) | |
| 3479 | ||
| 3480 | wait(0.05 * animSpeed) | |
| 3481 | end | |
| 3482 | end; | |
| 3483 | ||
| 3484 | function() | |
| 3485 | if S.isMagEmpty() then | |
| 3486 | S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(20)), S.Sine, 0.05 * animSpeed) | |
| 3487 | ||
| 3488 | wait(0.15 * animSpeed) | |
| 3489 | end | |
| 3490 | end; | |
| 3491 | } | |
| 3492 | end; | |
| 3493 | ||
| 3494 | Cocking = function(S) | |
| 3495 | ||
| 3496 | end; | |
| 3497 | ||
| 3498 | Crawling = function(X, moveDirection, moveSpeed) --This is the animation for when you're crawling | |
| 3499 | --[[ | |
| 3500 | The moveDirection gives you the angle at which your character is moving with respect to the way you're facing. So if you're | |
| 3501 | moving to the right and you're facing forward then the moveDirection will give you an angle of -90. If you're moving backward | |
| 3502 | and you're facing forward then the moveDirection will give you an angle of 180. I use this angle to adjust the crawling animation | |
| 3503 | so that you're arms move in the direction that you're moving so it looks more realistic rather than the arms constantly moving forward | |
| 3504 | ||
| 3505 | The moveVelocity gives you how fast you're moving in the X-Z plane. It doesn't take your Y-velocity into account so if you're falling your | |
| 3506 | moveVelocity will still be how fast you're moving horizontally. You can use this to adjust how fast the crawling animation runs so if you're | |
| 3507 | moving really slow the animation will play slower | |
| 3508 | --]] | |
| 3509 | return {
| |
| 3510 | leftArm = CFrame.Angles( --This is what the cframe of the right arm will be when you're crawling | |
| 3511 | 0, | |
| 3512 | math.rad(90), | |
| 3513 | math.rad(-10) | |
| 3514 | ) * CFrame.new( | |
| 3515 | math.sin(moveDirection) * (math.sin(X * 6) / 4) - 0.2, | |
| 3516 | math.cos(moveDirection) * (math.sin(X * 6) / 2) - 0.1, | |
| 3517 | math.max(math.cos(X * 6) / 4, 0) - 0.1 | |
| 3518 | ) * CFrame.Angles( | |
| 3519 | -math.max(math.cos(X * 6) / 4, 0), | |
| 3520 | 0, | |
| 3521 | 0 | |
| 3522 | ); | |
| 3523 | leftLeg = CFrame.new( --This is what the cframe of the left leg will be when you're crawling | |
| 3524 | math.sin(moveDirection) * (-math.sin(X * 6) / 4) - 0.2, | |
| 3525 | math.cos(moveDirection) * (math.sin(X * 6) / 2) + 0.3, | |
| 3526 | math.max(math.cos(X * 6) / 4, 0) - 0.1 | |
| 3527 | ):inverse() * CFrame.Angles( | |
| 3528 | 0, | |
| 3529 | 0, | |
| 3530 | -math.rad(15) - math.cos(moveDirection) * (math.rad(15) * math.sin(X * 6)) | |
| 3531 | ); | |
| 3532 | rightArm = CFrame.Angles( --This is what the cframe of the left arm will be when you're crawling | |
| 3533 | 0, | |
| 3534 | math.rad(-5), | |
| 3535 | math.rad(10) | |
| 3536 | ) * CFrame.new( | |
| 3537 | math.sin(moveDirection) * (-math.sin(X * 6) / 4) + 0.2, | |
| 3538 | math.cos(moveDirection) * (-math.sin(X * 6) / 5) - 0.2, | |
| 3539 | math.max(math.cos((X + math.rad(30)) * 6) / 10, 0) - 0.1 | |
| 3540 | ) * CFrame.Angles( | |
| 3541 | -math.max(math.cos((X + math.rad(30)) * 6) / 10, 0), | |
| 3542 | 0, | |
| 3543 | 0 | |
| 3544 | ); | |
| 3545 | rightLeg = CFrame.new( --This is what the cframe of the right leg will be when you're crawling | |
| 3546 | math.sin(moveDirection) * (math.sin(X * 6) / 4) + 0.2, | |
| 3547 | math.cos(moveDirection) * (-math.sin(X * 6) / 2) + 0.3, | |
| 3548 | math.max(math.cos((X + math.rad(30)) * 6) / 4, 0) - 0.1 | |
| 3549 | ):inverse() * CFrame.Angles( | |
| 3550 | 0, | |
| 3551 | 0, | |
| 3552 | math.rad(15) - math.cos(moveDirection) * (math.rad(15) * math.sin(X * 6)) | |
| 3553 | ); | |
| 3554 | Grip = CFrame.Angles( --This is what the cframe of the grip will be when you're crawling | |
| 3555 | math.max(math.cos((X + math.rad(30)) * 6) / 7, 0), | |
| 3556 | math.rad(5), | |
| 3557 | 0 | |
| 3558 | ); | |
| 3559 | Camera = 1.5 * math.rad(math.cos((X + math.rad(30)) * 6)) + math.rad(0.5); --This is what the roll of the camera will be when you're crawling | |
| 3560 | } | |
| 3561 | end; | |
| 3562 | ||
| 3563 | Idling = { --This table holds the Idling animations
| |
| 3564 | ||
| 3565 | unAimed = function(X) --This is the animation when the gun is not aimed | |
| 3566 | return {
| |
| 3567 | Pos = Vector3.new( | |
| 3568 | math.sin(X / 2) / 70, --Side to Side motion | |
| 3569 | math.sin(X * 5 / 4) / 70, --Up and Down motion | |
| 3570 | math.sin(X * 3 / 4) / 70 --Forward and backward motion | |
| 3571 | ); | |
| 3572 | Rot = Vector3.new( | |
| 3573 | 0, --Pitch rotation | |
| 3574 | 0, --Yaw rotation | |
| 3575 | 0 --Roll rotation | |
| 3576 | ); | |
| 3577 | } | |
| 3578 | end; | |
| 3579 | ||
| 3580 | Aimed = function(X) --This is the animation when the gun is aimed | |
| 3581 | return {
| |
| 3582 | Pos = Vector3.new( | |
| 3583 | math.sin(X * 3 / 8) / 140, | |
| 3584 | math.sin(X * 15 / 16) / 140, | |
| 3585 | 0 | |
| 3586 | ); | |
| 3587 | Rot = Vector3.new( | |
| 3588 | 0, | |
| 3589 | 0, | |
| 3590 | 0 | |
| 3591 | ); | |
| 3592 | } | |
| 3593 | end; | |
| 3594 | ||
| 3595 | }; | |
| 3596 | ||
| 3597 | Walking = { --This table holds the Walking animations
| |
| 3598 | ||
| 3599 | unAimed = function(X) --This is the animation when the gun is not aimed | |
| 3600 | return {
| |
| 3601 | Pos = Vector3.new( | |
| 3602 | 4 * math.sin(X * 4.5) / 50, | |
| 3603 | 1.5 * math.sin(X * 9) / 50, | |
| 3604 | 0 | |
| 3605 | ); | |
| 3606 | Rot = Vector3.new( | |
| 3607 | 0, | |
| 3608 | 0, | |
| 3609 | math.rad(math.sin(X * 4.5)) * 2 | |
| 3610 | ); | |
| 3611 | } | |
| 3612 | end; | |
| 3613 | ||
| 3614 | Aimed = function(X) --This is the animation when the gun is aimed | |
| 3615 | return {
| |
| 3616 | Pos = Vector3.new( | |
| 3617 | 2 * math.sin(X * 3) / 150, | |
| 3618 | 0.75 * math.sin(X * 6) / 150, | |
| 3619 | 0 | |
| 3620 | ); | |
| 3621 | Rot = Vector3.new( | |
| 3622 | 0, | |
| 3623 | 0, | |
| 3624 | math.rad(math.sin(X * 3)) / 3 | |
| 3625 | ); | |
| 3626 | } | |
| 3627 | end; | |
| 3628 | ||
| 3629 | }; | |
| 3630 | ||
| 3631 | Running = function(X) --This is the animation when the player is running | |
| 3632 | return {
| |
| 3633 | Pos = Vector3.new( | |
| 3634 | 4 * math.sin(X * 4.5 * 1.5) / 30, | |
| 3635 | 1.5 * math.sin(X * 9 * 1.5) / 40 + 0.2, | |
| 3636 | 0 | |
| 3637 | ); | |
| 3638 | Rot = Vector3.new( | |
| 3639 | 0, | |
| 3640 | -math.rad(math.sin(X * 4.5 * 1.5)) * 5 + math.rad(3), | |
| 3641 | math.rad(math.sin(X * 4.5 * 1.5)) * 5 | |
| 3642 | ); | |
| 3643 | } | |
| 3644 | end; | |
| 3645 | ||
| 3646 | } | |
| 3647 | local Plugins = {
| |
| 3648 | ||
| 3649 | KeyDown = {
| |
| 3650 | { --This is a plugin for a toggleable laser
| |
| 3651 | Key = "v"; --This is the key you press to activate the plugin | |
| 3652 | Description = "Toggle Laser"; --This is what the description of the key will be in the controls | |
| 3653 | Plugin = function() --This is the actual plugin function | |
| 3654 | local Laser = Gun:WaitForChild("Laser") --These few lines wait for the necessary bricks/models
| |
| 3655 | local Handle = Gun:WaitForChild("Handle")
| |
| 3656 | local ignoreCode = Gun.clientMain:WaitForChild("ignoreCode")
| |
| 3657 | local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
| |
| 3658 | ||
| 3659 | local PlyrName = game.Players:GetPlayerFromCharacter(Gun.Parent).Name | |
| 3660 | local playerFolder = ignoreModel:WaitForChild("gunIgnore_"..PlyrName)
| |
| 3661 | ||
| 3662 | local RS = game:GetService("RunService")
| |
| 3663 | ||
| 3664 | local function createLaserDot() --This function creates the red laser dot | |
| 3665 | local laserDot = Instance.new("Part")
| |
| 3666 | laserDot.Transparency = 1 | |
| 3667 | laserDot.Name = "laserDot" | |
| 3668 | laserDot.Anchored = true | |
| 3669 | laserDot.CanCollide = false | |
| 3670 | laserDot.FormFactor = Enum.FormFactor.Custom | |
| 3671 | laserDot.Size = Vector3.new(0.25, 0.25, 1) | |
| 3672 | ||
| 3673 | local laserGui = Instance.new("SurfaceGui")
| |
| 3674 | laserGui.CanvasSize = Vector2.new(100, 100) | |
| 3675 | laserGui.Parent = laserDot | |
| 3676 | ||
| 3677 | local laserImage = Instance.new("ImageLabel")
| |
| 3678 | laserImage.BackgroundTransparency = 1 | |
| 3679 | laserImage.Size = UDim2.new(1, 0, 1, 0) | |
| 3680 | laserImage.Image = "http://www.roblox.com/asset/?id=131394739" | |
| 3681 | laserImage.Parent = laserGui | |
| 3682 | ||
| 3683 | --[[local laserLight = Instance.new("SurfaceLight")
| |
| 3684 | laserLight.Angle = 180 | |
| 3685 | laserLight.Brightness = math.huge | |
| 3686 | laserLight.Color = Color3.new(1, 0, 0) | |
| 3687 | laserLight.Face = Enum.NormalId.Back | |
| 3688 | laserLight.Range = 5 | |
| 3689 | laserLight.Shadows = true | |
| 3690 | laserLight.Parent = laserDot]] | |
| 3691 | ||
| 3692 | return laserDot | |
| 3693 | end | |
| 3694 | ||
| 3695 | local function getHitSurfaceCFrame(Pos, Obj) --This function returns the proper cframe based on the face that the position is on | |
| 3696 | local surfaceCF = {
| |
| 3697 | {"Back", Obj.CFrame * CFrame.new(0, 0, Obj.Size.z)};
| |
| 3698 | {"Bottom", Obj.CFrame * CFrame.new(0, -Obj.Size.y, 0)};
| |
| 3699 | {"Front", Obj.CFrame * CFrame.new(0, 0, -Obj.Size.z)};
| |
| 3700 | {"Left", Obj.CFrame * CFrame.new(-Obj.Size.x, 0, 0)};
| |
| 3701 | {"Right", Obj.CFrame * CFrame.new(Obj.Size.x, 0, 0)};
| |
| 3702 | {"Top", Obj.CFrame * CFrame.new(0, Obj.Size.y, 0)}
| |
| 3703 | } | |
| 3704 | local closestDist = math.huge | |
| 3705 | local closestSurface = nil | |
| 3706 | for _,v in pairs(surfaceCF) do | |
| 3707 | local surfaceDist = (Pos - v[2].p).magnitude | |
| 3708 | if surfaceDist < closestDist then | |
| 3709 | closestDist = surfaceDist | |
| 3710 | closestSurface = v | |
| 3711 | end | |
| 3712 | end | |
| 3713 | ||
| 3714 | local surfaceDir = CFrame.new(Obj.CFrame.p, closestSurface[2].p) | |
| 3715 | local surfaceDist = surfaceDir.lookVector * ((Obj.CFrame.p - closestSurface[2].p).magnitude / 2 - 0.25) | |
| 3716 | local surfaceOffset = Pos - closestSurface[2].p + surfaceDist | |
| 3717 | local surfaceCFrame = surfaceDir + surfaceDist + surfaceOffset | |
| 3718 | ||
| 3719 | return surfaceCFrame | |
| 3720 | end | |
| 3721 | ||
| 3722 | local laserDot = createLaserDot() --The code is cleaner when the laser creating code is in a function | |
| 3723 | ||
| 3724 | Laser.Transparency = (Laser.Transparency == 1 and 0 or 1) --Toggles the laser on or off | |
| 3725 | ||
| 3726 | while math.floor(Laser.Transparency) == 0 do --This loop will keep running as long as the laser is visible | |
| 3727 | if (not game.Players:GetPlayerFromCharacter(Gun.Parent)) then break end --This checks if the gun is a child of the character | |
| 3728 | ||
| 3729 | local newRay = Ray.new(Laser.Position, Handle.CFrame.lookVector * 999) | |
| 3730 | local H, P = game.Workspace:FindPartOnRay(newRay, ignoreModel) | |
| 3731 | ||
| 3732 | local Distance = (P - Laser.Position).magnitude | |
| 3733 | Laser.Mesh.Offset = Vector3.new(0, Distance / 2, 0) | |
| 3734 | Laser.Mesh.Scale = Vector3.new(0.075, Distance / 0.2, 0.075) | |
| 3735 | ||
| 3736 | if H then | |
| 3737 | laserDot.CFrame = getHitSurfaceCFrame(P, H) --If the laser hits a part then position the dot on the part | |
| 3738 | laserDot.Parent = playerFolder | |
| 3739 | else | |
| 3740 | laserDot.Parent = nil --If the laser doesn't hit a part then temporarily remove the laser dor | |
| 3741 | end | |
| 3742 | ||
| 3743 | RS.RenderStepped:wait() | |
| 3744 | end | |
| 3745 | ||
| 3746 | laserDot:Destroy() --These lines reset the laser if the laser is transparent or the gun was deselected | |
| 3747 | Laser.Transparency = 1 | |
| 3748 | Laser.Mesh.Offset = Vector3.new() | |
| 3749 | Laser.Mesh.Scale = Vector3.new(0.075, 0, 0.075) | |
| 3750 | end; | |
| 3751 | }; | |
| 3752 | ||
| 3753 | { --This is a plugin for a toggleable flashlight
| |
| 3754 | Key = "z"; | |
| 3755 | Description = "Toggle Flashlight"; | |
| 3756 | Plugin = function() | |
| 3757 | local Flashlight = Gun:WaitForChild("Flashlight")
| |
| 3758 | if Flashlight then | |
| 3759 | for _, Light in pairs(Flashlight:GetChildren()) do | |
| 3760 | if Light.Name == "Light" then | |
| 3761 | Light.Enabled = (not Light.Enabled) | |
| 3762 | end | |
| 3763 | end | |
| 3764 | end | |
| 3765 | end | |
| 3766 | }; | |
| 3767 | }; | |
| 3768 | ||
| 3769 | KeyUp = {
| |
| 3770 | ||
| 3771 | }; | |
| 3772 | ||
| 3773 | Firing = {
| |
| 3774 | Plugin = function() | |
| 3775 | --Put code here | |
| 3776 | end; | |
| 3777 | }; | |
| 3778 | ||
| 3779 | Aimed = {
| |
| 3780 | Plugin = function() | |
| 3781 | --Put code here | |
| 3782 | end; | |
| 3783 | }; | |
| 3784 | ||
| 3785 | UnAimed = {
| |
| 3786 | Plugin = function() | |
| 3787 | --Put code here | |
| 3788 | end; | |
| 3789 | }; | |
| 3790 | ||
| 3791 | OnEquipped = {
| |
| 3792 | Plugin = function() | |
| 3793 | --Put code here | |
| 3794 | end | |
| 3795 | }; | |
| 3796 | ||
| 3797 | OnUnEquipped = {
| |
| 3798 | Plugin = function() | |
| 3799 | --Put code here | |
| 3800 | end | |
| 3801 | }; | |
| 3802 | ||
| 3803 | } | |
| 3804 | local S = {
| |
| 3805 | ||
| 3806 | ||
| 3807 | gunType = { --[[These are the 5 gun types you can have. Set whichever ones you want to true. (NOTE: Semi and Auto can't both be
| |
| 3808 | true, and Burst and Auto can't both be true)]] | |
| 3809 | Semi = true; --Set this true if you want the gun to be semi-automatic. (Pistols, Snipers, etc) | |
| 3810 | Auto = false; --Set this true if you want the gun to be fully automatic. (Assault Rifles, Submachine guns, machine guns, etc) | |
| 3811 | Burst = false; --Set this true if you want the gun to be burst fire. (Battle rifles, assault rifles, etc) | |
| 3812 | Shot = true; --Set this true if you want the gun to be a shotgun. (NOTE: Shot and auto can both be true) | |
| 3813 | Explosive = true; --Set this true if you want the projectiles to be explosive. (Rocket launchers, grenade launchers, etc) | |
| 3814 | }; | |
| 3815 | ||
| 3816 | selectFire = true; --This is whether or not select fire is enabled | |
| 3817 | selectFireSettings = {
| |
| 3818 | Animation = true; --This is whether or not there will be an animation for when you switch fire modes | |
| 3819 | GUI = true; --This is whether or not a gui appears showing the fire being selected | |
| 3820 | Modes = { --This the list of modes you can switch between
| |
| 3821 | Safety = true; --This mode doesn't allow any form of firing | |
| 3822 | Semi = true; --This mode allows semi-automatic firing | |
| 3823 | Burst = false; --This mode allows burst fire. The burst will be based on the burstSettings below | |
| 3824 | Auto = false; --This mode allows fully automatic fire | |
| 3825 | }; | |
| 3826 | animSpeed = 0.5; --This is how long it takes to switch fire if GUI or Animation is true. If neither are true, then switching will be instant | |
| 3827 | }; | |
| 3828 | ||
| 3829 | ||
| 3830 | burstSettings = {
| |
| 3831 | fireRateBurst = true; --[[If this is true, then the burst time and wait will be adjusted so the bullet firing speed is the fire rate. If this | |
| 3832 | is false, then the burst time and burst wait will be the values below]] | |
| 3833 | Amount = 3; --This is how many bullets will be fired in one burst (if Burst is true) | |
| 3834 | Time = 0.2; --This is how long it takes for a burst to complete | |
| 3835 | Wait = 0.1; --This is how much time you have to wait before you can fire another burst | |
| 3836 | }; | |
| 3837 | ||
| 3838 | ||
| 3839 | shotAmount = 8; --This is how many bullets will be fired in one shot (if Shot is true) | |
| 3840 | ||
| 3841 | ||
| 3842 | explosionSettings = {
| |
| 3843 | Radius = 50; --This is the radius of the explosion when the bullet hits a target. (If Explosive is true) | |
| 3844 | Pressure = 5e5; --This is the pressure of the explosion when the bullet hits the target | |
| 3845 | Type = Enum.ExplosionType.NoCraters; --This is the type of explosion | |
| 3846 | --[[ | |
| 3847 | (0 or "NoCraters" or Enum.ExplosionType.NoCraters) means that the explosion will not damage terrain | |
| 3848 | (1 or "Craters" or Enum.ExplosionType.Craters) means that the explosion will leave craters in terrain | |
| 3849 | (2 or "CratersAndDebris" or Enum.ExplosionType.CratersAndDebris) means that the explosion will leave craters and debris in terrain | |
| 3850 | --]] | |
| 3851 | soundId = "rbxassetid://138499093"; --This is what the sound of the explosion will be | |
| 3852 | soundPitch = 1; --This is what the pitch of the explosion sound will be | |
| 3853 | soundVolume = 1; --This is what the volume of the explosion sound will be | |
| 3854 | rayCastExplosions = true; --[[This is whether or not explosions will have raycasting. If this is true, humanoids behind walls | |
| 3855 | won't be damaged. If this is false, any humanoid within the radius will be damaged. (NOTE: RangeBasedDamage has to be true in | |
| 3856 | order for explosions to have raycasting)]] | |
| 3857 | rangeBasedDamage = true; --[[This is whether or not will depend on how far the object is from the center of the explosion. If this | |
| 3858 | is true, the farther a humanoid is from the blast center, the less damage it'll take. If this is false, any object within | |
| 3859 | the explosion's radius will have its joints broken]] | |
| 3860 | }; | |
| 3861 | ||
| 3862 | ||
| 3863 | playerArms = true; --This is whether or not the fake arms will look like the Player's arms | |
| 3864 | fakeArmSettings = {
| |
| 3865 | Transparency = 0; --This is the transparency of the fake arms | |
| 3866 | armSize = Vector3.new(0.6, 2, 0.6); --This is the size of the fake player arms if playerArms is true | |
| 3867 | characterMeshes = false; --This is whether or not the fake player arms will have the arm meshes if playerArms is true | |
| 3868 | realBodyColor = true; --This is whether or not the color of the fake arm will be the color of the player's real arms | |
| 3869 | Color = BrickColor.new("Pastel brown"); --This is what the color of the fake arms will be if realBodyColor is false
| |
| 3870 | }; | |
| 3871 | ||
| 3872 | ||
| 3873 | unAimedC1 = { --This table contains the CFrames of welds when the gun is not aimed
| |
| 3874 | leftArm = CFrame.new(-0.7, 1.6, -0.8) * CFrame.Angles(math.rad(-10), 0, math.rad(-30)); | |
| 3875 | rightArm = CFrame.new(0.4, 0.25, -0.3) * CFrame.Angles(0, 0, math.rad(25)); | |
| 3876 | Grip = CFrame.Angles(0, math.rad(25), 0); | |
| 3877 | }; | |
| 3878 | aimedC1 = { --This table contains the CFrames of welds when the gun is aimed
| |
| 3879 | leftArm = CFrame.new(-0.1, 1, -0.3) * CFrame.Angles(math.rad(-10), 0, 0) * CFrame.Angles(0, 0, math.rad(-40)); | |
| 3880 | rightArm = CFrame.new(0.5, 0.3, 0.1) * CFrame.Angles(0, 0, math.rad(45)); | |
| 3881 | }; | |
| 3882 | runningC1 = { --This table contains the CFrames of welds when you're running
| |
| 3883 | leftArm = CFrame.new(-0.65, 0.85, -1) * CFrame.Angles(math.rad(1), math.rad(-8.5), math.rad(16)); | |
| 3884 | rightArm = CFrame.new(0.16, 1, -0.14) * CFrame.Angles(math.rad(15), math.rad(2), math.rad(50)); | |
| 3885 | Grip = CFrame.Angles(0, math.rad(-5), 0); | |
| 3886 | }; | |
| 3887 | ||
| 3888 | ||
| 3889 | equipAnimation = true; --This is whether or not an equipping animation will play when you equip the gun | |
| 3890 | equipSettings = {
| |
| 3891 | Time = 0.25; --This is how long it takes for the equip animation to play | |
| 3892 | leftArmC1 = CFrame.new(0.2, 1.2, 0) * CFrame.Angles(math.rad(105), math.rad(-30), math.rad(90)); --This is the left arm C1 when you equip the gun | |
| 3893 | rightArmC1 = CFrame.new(-0.5, 0.75, 0) * CFrame.Angles(math.rad(45), 0, math.rad(75)); --This is the right arm C1 when you equip the gun | |
| 3894 | GripC1 = CFrame.new(); --This is the C1 of the grip when you equip the gun | |
| 3895 | }; | |
| 3896 | ||
| 3897 | ||
| 3898 | stopAnimsOnFall = true; --This is whether or not the movement animation will stop when you're falling | |
| 3899 | fallAnimation = true; --This is whether or not there will be animation for falling and landing | |
| 3900 | fallSettings = {
| |
| 3901 | maxDist = 35; --This is the cut off fall distance for the landing animation. If you fall any farther it'll be treated as if you fell this distance | |
| 3902 | landMultiplier = 1; --This is how far the arms go down and rotate when you land. The larger the number the bigger the effect of the animation | |
| 3903 | fallMultiplier = 1; --This is how far the arms go up and rotate when you fall. The larger the number the bigger the effect of the animation | |
| 3904 | aimEffect = 0.25; --[[This is how many times of an effect the falling and landing animation has when you're aimed. The smaller the number the lesser | |
| 3905 | the effect]] | |
| 3906 | }; | |
| 3907 | ||
| 3908 | ||
| 3909 | gunMomentum = true; --This is whether or not there will be a gun swaying animation for when you move your mouse around | |
| 3910 | momentumSettings = {
| |
| 3911 | maxInput = 18; --This is the maximum mouse delta that will be used as input for the sway | |
| 3912 | Speed = 20; --This is the speed of the gun momentum | |
| 3913 | Damper = 0.5; --[[This is the dampening effect of the gun momentum. NOTE: This number must be between 0 and 1, 0 being forever swaying and 1 being | |
| 3914 | instant dampening]] | |
| 3915 | Amplitude = { --These are the amplitudes of the gun momentum
| |
| 3916 | unAimed = 5; | |
| 3917 | Aimed = 1; | |
| 3918 | } | |
| 3919 | }; | |
| 3920 | ||
| 3921 | ||
| 3922 | cockingAnim = false; --This is whether or not a cocking animation will play between every shot (for shotguns and bolt action guns) | |
| 3923 | movementAnims = true; --This is whether or not the player will have movement animations | |
| 3924 | ||
| 3925 | ||
| 3926 | canADS = true; --This is whether or not the gun can ADS | |
| 3927 | aimSettings = {
| |
| 3928 | Anim = true; --This is whether or not there is an animation for aiming down the sights | |
| 3929 | Speed = 0.3; --This is how long the gun will take to fully aim down the sights | |
| 3930 | FOV = 37; --This is the FOV that the Camera will have when the gun is fully aimed down | |
| 3931 | holdToADS = true; --This is whether or not you have to hold the right mouse or the ADS key to ADS | |
| 3932 | headTilt = math.rad(25); --This is what angle the head tilts at when you ADS | |
| 3933 | }; | |
| 3934 | ||
| 3935 | ||
| 3936 | sensitivitySettings = {
| |
| 3937 | Default = 1; --This is what the sensitivity of the mouse will be when the gun is not aimed. 1 is the default | |
| 3938 | Aim = 0.3; --[[This is what the sensitivity of the mouse will be when the gun is aimed. The smaller the MaxZoom, | |
| 3939 | the smaller the sensitivity should be (i.e. Scoped guns should have a sensitivity of around 0.2 or less]] | |
| 3940 | ||
| 3941 | scrollToChange = true; --This is whether or not scrolling the mouse changes the aim sensitivity | |
| 3942 | Min = 0.05; --This is the lowest the sensitivity can be | |
| 3943 | Max = 1; --This is the highest the sensitivity can be | |
| 3944 | Increment = 0.05; --This is what the increment for the sensitivity is when you scroll | |
| 3945 | }; | |
| 3946 | ||
| 3947 | ||
| 3948 | guiScope = false; --This is whether or not your Scope will be a gui instead of a normal sight | |
| 3949 | scopeSettings = {
| |
| 3950 | Frequency = { --This is the how fast the camera sway is. The larger the number the faster the camera moves
| |
| 3951 | Idling = 0.7; --This is the frequency when you're idling | |
| 3952 | Walking = 2; --This is the frequency when you're walking | |
| 3953 | }; | |
| 3954 | Amplitude = { --This is the how wide the camera sway is. The larger the number the wider the sway
| |
| 3955 | Idling = 0.75; --This is the amplitude when you're idling | |
| 3956 | Walking = 0.75; --This is the amplitude when you're walking | |
| 3957 | }; | |
| 3958 | steadyTime = 8; --This is how long you can hold your breath to steady the scope | |
| 3959 | breathTime = 5; --This is how long it takes to fully retake your breath | |
| 3960 | camSwayOnBreath = 2.5; --This is what the cam sway multiplier will be when you start your retake your breath | |
| 3961 | unSteadyOnFire = true; --This is whether or not the camera will become unsteady when you fire the gun | |
| 3962 | }; | |
| 3963 | ||
| 3964 | ||
| 3965 | roundsPerMin = 100; --This is how many bullets per minute the gun will fire | |
| 3966 | ||
| 3967 | ||
| 3968 | bulletSettings = {
| |
| 3969 | instantHit = true; --[[This is whether or not the bullet will hit a target instantly. If it is false, the bullet will travel at a | |
| 3970 | specific speed till it hits a target]] | |
| 3971 | Range = 870; --This is how far the bullet will travel in studs before it is no longer effective | |
| 3972 | Velocity = 540; --This is how fast the bullet will travel in studs per second | |
| 3973 | Acceleration = 196.2; --This is the bullet's acceleration downward (196.2 is normal roblox gravity) | |
| 3974 | Color = BrickColor.new("Bright red"); --This is the color of the bullet
| |
| 3975 | Transparency = 0; --This is the transparency of the bullet | |
| 3976 | Size = Vector3.new(0.1, 0.1, 5); --This is how big the bullet will look | |
| 3977 | }; | |
| 3978 | ||
| 3979 | ||
| 3980 | damageSettings = {
| |
| 3981 | --[[The start and end damages are basically a representation of this: http://goo.gl/SiWaTj, which is a basically a graph showing the starting damage | |
| 3982 | value for the gun at a distance percent from 0 to 100 and the ending damage value for the gun at a distance percent from 0 to 100. Before the bullet | |
| 3983 | hits the starting distance percent, the damage is the starting damage. Once it goes past the starting distance percent, it steadily drops til it hits | |
| 3984 | the ending damage. After the ending damage percent, it'll stay that damage.]] | |
| 3985 | Start = {
| |
| 3986 | Damage = 170; --The starting damage | |
| 3987 | Dist = 0.08; --[[A value between 0 and 1 which represents the distance percent. So if the bullet range is 1000 studs and this value is 0.5, then | |
| 3988 | the damage will be the starting damage until the bullet travels 0.5*1000 studs or 500 studs]] | |
| 3989 | }; | |
| 3990 | End = {
| |
| 3991 | Damage = 205; --The ending damage | |
| 3992 | Dist = 0.5; --A value between 0 and 1 which represents the distance percent for the ending damage | |
| 3993 | }; | |
| 3994 | Multipliers = { --[[These are the damage multipliers. There's a spread of +0.1. That means that if the multiplier is 1, the actual
| |
| 3995 | multiplier will range from 1 - 1.1]] | |
| 3996 | Chest = 1; --This is what the damage will be multiplied by if the bullet hits the chest | |
| 3997 | Head = 10; --This is what the damage will be multiplied by if the bullet hits the head or a hat | |
| 3998 | Limbs = 1; --This is what the damage will be multiplied by if the bullet hits a limb (Arms or legs) | |
| 3999 | }; | |
| 4000 | }; | |
| 4001 | ||
| 4002 | ||
| 4003 | AllowFriendlyFire = false; --This is whether or not you can damage teammates | |
| 4004 | CanDamageNPCs = true; --This is whether or not you can damage NPC's (Zombies, fake players, anything with a humanoid) | |
| 4005 | ||
| 4006 | ||
| 4007 | CanKnife = true; --This is whether or not you can knife | |
| 4008 | AutoKnife = false; --This is whether or not the gun will automatically knife if an enemy is within a specific distance | |
| 4009 | AutoKnifeDist = 4; --This is how many studs away an enemy has to be for the gun to auto knife | |
| 4010 | KnifeMeshId = "http://www.roblox.com/asset/?id=121944778"; --This is the Mesh of the knife | |
| 4011 | KnifeTextureId = "http://www.roblox.com/asset/?id=121944805"; --This is the Texture of the knife | |
| 4012 | KnifeCooldown = 0.5; --This is how long you have to wait before you can knife again | |
| 4013 | KnifeAnim = 1; --This is the type of knife animation | |
| 4014 | --[[ | |
| 4015 | Type 1: An animation that swings a knife from the left of the body to the right of the body | |
| 4016 | Type 2: An animation that stabs the knife forward from the center of the body | |
| 4017 | --]] | |
| 4018 | ||
| 4019 | ||
| 4020 | Throwables = true; --This is whether or not you have grenades | |
| 4021 | TrajectoryAssist = true; --This is whether or not the script will show you the flight path of the grenade before you throw it | |
| 4022 | DetonationTime = 2; --[[This is how long the grenade will wait to detonate (If DetonateOnHit is false, this is how long the | |
| 4023 | grenade will wait after the pin is pulled. If true, this is how long the grenade will wait after it hits something]] | |
| 4024 | TimerStartOnHit = false; --This is whether or not the timer will start when the grenade hits something | |
| 4025 | GrenadeSize = Vector3.new(0.8, 0.8, 0.8); --This is the size of the grenade (Doesn't apply to throwing knives) | |
| 4026 | ||
| 4027 | ||
| 4028 | LethalGrenadeColor = BrickColor.new("Bright green"); --This is the color of the lethal grenade
| |
| 4029 | GrenadeBlastRadius = 20; --This is the blast radius of the explosion (Doesn't apply to non-explosive grenades) | |
| 4030 | GrenadeBlastPressure = 6e5; --This is what the blast pressure of the explosion (Doesn't apply to non-explosive grenades) | |
| 4031 | GrenadeExplosionType = Enum.ExplosionType.NoCraters; --This is the type of explosion (Doesn't apply to non-explosive grenades) | |
| 4032 | --[[ | |
| 4033 | (0 or "NoCraters" or Enum.ExplosionType.NoCraters) means that the explosion will not damage terrain | |
| 4034 | (1 or "Craters" or Enum.ExplosionType.Craters) means that the explosion will leave craters in terrain | |
| 4035 | (2 or "CratersAndDebris" or Enum.ExplosionType.CratersAndDebris) means that the explosion will leave craters and debris in terrain | |
| 4036 | --]] | |
| 4037 | LethalAnimationTime = 1.5; --This is how long the throwing animation for the lethal will take | |
| 4038 | LethalGrenadeDamage = 150; --This is max damage that the grenade will do | |
| 4039 | LethalGrenadeThrowVelocity = 200; --This is the speed at which the lethal grenade is thrown | |
| 4040 | GrenadeRayCastExplosions = true; --[[This is whether or not grenade explosions will have raycasting. If this is true, humanoids | |
| 4041 | behind walls won't be damaged. If this is false, any humanoid within the radius will be damaged. (NOTE: GrenadeRangeBasedDamage | |
| 4042 | has to be true in order for explosions to have raycasting)]] | |
| 4043 | GrenadeRangeBasedDamage = true; --[[This is whether or not will depend on how far the object is from the center of the explosion. | |
| 4044 | If this is true, the farther a humanoid is from the blast center, the less damage it'll take. If this is false, any object | |
| 4045 | within the explosion's radius will have its joints broken]] | |
| 4046 | LethalGrenadeType = 4; --This is the lethal grenade type | |
| 4047 | --[[ | |
| 4048 | Type 1: Frag grenade [An explosive grenade] | |
| 4049 | Type 2: Sticky [An explosive grenade that sticks to a surface] | |
| 4050 | Type 3: Throwing Knife [A throwable knife] | |
| 4051 | Type 4: Molotov [A grenade that explodes in flames on impact] | |
| 4052 | --]] | |
| 4053 | ||
| 4054 | TacticalGrenadeColor = BrickColor.new("Brick yellow"); --This is the color of the lethal grenade
| |
| 4055 | TacticalAnimationTime = 1.5; --This how long the throwing animation for the tactical will take | |
| 4056 | TacticalGrenadeThrowVelocity = 200; --This is the speed at which the tactical grenade is thrown | |
| 4057 | GrenadeEffectRadius = 70; --[[This is the radius of the effect of the grenade. If the Grenade is a smoke, this is the radius of | |
| 4058 | the smoke]] | |
| 4059 | GrenadeEffectTime = 10; --[[This is the how long the grenade effect will last. If the grenade is a smoke, this is how long the | |
| 4060 | smoke will linger]] | |
| 4061 | TacticalGrenadeType = 1; --This is the tactical grenade type | |
| 4062 | --[[ | |
| 4063 | Type 1: Smoke grenade [A grenade that creates a cloud of smoke] | |
| 4064 | Type 2: Flashbang [A grenade that temporarily blinds and deafens players] | |
| 4065 | --]] | |
| 4066 | ||
| 4067 | ||
| 4068 | GrenadeTrail = true; --This is whether or not the grenade will have a trail | |
| 4069 | GrenadeTrailColor = BrickColor.new("Black"); --This is the color of the grenade trail
| |
| 4070 | GrenadeTrailTransparency = 0.6; --This is the transparency of the trail | |
| 4071 | GrenadeTrailThickness = 0.3; --This is the thickness of the trail | |
| 4072 | GrenadeTrailVisibleTime = 0.2; --This is how long the trail will be visible for | |
| 4073 | GrenadeTrailDisappearTime = 0.2; --This is how long it will take for the trail to disappear | |
| 4074 | ||
| 4075 | ||
| 4076 | bulletTrail = true; --This is whether or not there will be a trail behind the bullet | |
| 4077 | trailSettings = {
| |
| 4078 | Color = BrickColor.new("Lime green"); --This is the color of the bullet trail
| |
| 4079 | Transparency = 0.6; --This is the transparency of the trail | |
| 4080 | Thickness = 0.2; --This is the thickness of the trail | |
| 4081 | visibleTime = 0; --This is how long the trail will be visible for | |
| 4082 | disappearTime = 0.5; --This is how long it will take for the trail to disappear | |
| 4083 | }; | |
| 4084 | ||
| 4085 | ||
| 4086 | bulletHoles = true; --This is whether or not bullet holes will appear where you shot | |
| 4087 | holeSettings = {
| |
| 4088 | Texture = "http://www.roblox.com/asset/?id=64291961"; --This is the texture of the bullet hole | |
| 4089 | Size = 0.5; --This is how big the bullet hole will be in studs | |
| 4090 | visibleTime = 3; --This is how long the bullet hole will be visible for | |
| 4091 | disappearTime = 1; --This is how long it will take for the bullet hole to disappear | |
| 4092 | }; | |
| 4093 | ||
| 4094 | ||
| 4095 | bulletSparks = true; --This is whether or not sparks will fly when a bullet hits a surface | |
| 4096 | customSparks = false; --[[This is whether or not the script will use a user-created sparks. In order for the gun kit to use a user-created sparks, | |
| 4097 | it has to be a particle emitter in the ServerStorage and it has to be called "bulletSpark"]] | |
| 4098 | sparkSettings = { --These settings only apply if customSparks is false
| |
| 4099 | Color = {
| |
| 4100 | Start = Color3.new(1, 158 / 255, 24 / 255); --This is the start color of the sparks | |
| 4101 | End = Color3.new(212 / 255, 242 / 255, 8 / 255); --This is the end color of the sparks | |
| 4102 | }; | |
| 4103 | Size = 0.25; --This is the size of the sparks | |
| 4104 | Texture = "http://www.roblox.com/asset/?id=311395391"; --This is the texture of the sparks | |
| 4105 | Lifetime = 0.2; --This is the lifetime of each spark in seconds +-0.05 seconds | |
| 4106 | Rate = 75; --This is the number of sparks that fly | |
| 4107 | Speed = 25; --This is the speed at which the sparks fly +-5 studs/sec | |
| 4108 | Spread = 45; --This is the angle in degrees at which the sparks spread out (0 means single line, 180 means all around) | |
| 4109 | Materials = { --This is the list of the materials which cause bullet sparks. You can add or remove materials from this list
| |
| 4110 | Enum.Material.Plastic; | |
| 4111 | Enum.Material.Slate; | |
| 4112 | Enum.Material.Concrete; | |
| 4113 | Enum.Material.CorrodedMetal; | |
| 4114 | Enum.Material.DiamondPlate; | |
| 4115 | Enum.Material.Foil; | |
| 4116 | Enum.Material.Marble; | |
| 4117 | Enum.Material.Granite; | |
| 4118 | Enum.Material.Brick; | |
| 4119 | Enum.Material.Pebble; | |
| 4120 | Enum.Material.SmoothPlastic; | |
| 4121 | Enum.Material.Metal; | |
| 4122 | Enum.Material.Cobblestone; | |
| 4123 | }; | |
| 4124 | }; | |
| 4125 | ||
| 4126 | ||
| 4127 | bulletSmoke = true; --This is whether or not smoke particles will fly when a bullet hits a surface | |
| 4128 | smokeSettings = {
| |
| 4129 | objColor = true; --This is whether or not the smoke color will be the color of the object the bullet hit | |
| 4130 | Color = Color3.new(0.5, 0.5, 0.5); --This is what the color of the smoke will be if objColor is false | |
| 4131 | Size = {
| |
| 4132 | Start = 0.25; --This is what the starting size of the smoke will be | |
| 4133 | End = 0.5; --This is what the ending size of the smoke will be | |
| 4134 | }; | |
| 4135 | Texture = "http://www.roblox.com/asset/?id=244514423"; --This is what the texture of the smoke will be | |
| 4136 | startTransparency = 0; --This is what the transparency of the particle starts at. It gradually goes to 1 | |
| 4137 | Lifetime = 0.2; --This is the lifetime of each smoke particle +-0.05 seconds | |
| 4138 | Rate = 100; --This is the number of smoke particles that fly | |
| 4139 | Speed = 35; --This is the speed at which the smoke particles fly +-5 studs/sec | |
| 4140 | Spread = 15; --This is the angle in degrees at which the smoke particles spread out (0 means single line, 180 means all around) | |
| 4141 | }; | |
| 4142 | ||
| 4143 | ||
| 4144 | bloodEffect = true; --This is whether or not blood particles will appear from the bullet exit position when a humanoid is shot | |
| 4145 | bloodSettings = {
| |
| 4146 | Color = Color3.new(1, 0, 0); --This is what the color of the blood will be | |
| 4147 | Size = 0.1; --This is what the size of the blood will be with an +-0.1 | |
| 4148 | Texture = "http://www.roblox.com/asset/?id=3419963"; --This is what the texture of the blood will be | |
| 4149 | startTransparency = 0.125; --This is what the starting transparency of the blood will be +-0.125 | |
| 4150 | Lifetime = 0.1; --This is what the lifetime of each blood particle +-0.05 seconds | |
| 4151 | Rate = 200; --This is the number of blood particles that appear | |
| 4152 | Speed = 50; --This is the speed at which the blood particles fly | |
| 4153 | Spread = 15; --This is the angle in degrees at which the blood particles spread out (0 means single line, 180 means all around) | |
| 4154 | }; | |
| 4155 | ||
| 4156 | ||
| 4157 | bulletShockwave = true; --This is whether or not a shockwave will appear where you shot. (A sphere that appears when the bullet hits) | |
| 4158 | shockwaveSettings = {
| |
| 4159 | Radius = 0.3; --This is the radius of the shockwave. (If the gun type is explosion, this radius will be the blast radius) | |
| 4160 | Color = BrickColor.new("Light stone grey"); --This is the color of the shockwave
| |
| 4161 | Duration = 0.2; --This is how long the shockwave will take to disappear | |
| 4162 | }; | |
| 4163 | ||
| 4164 | ||
| 4165 | penetrationSettings = {
| |
| 4166 | Dist = 0; --This is the maximum amount of studs a bullet can penetrate into a wall (that isn't ignored) | |
| 4167 | transparencyThreshold = 1; --This is what the transparency of a wall has to be greater than or equal to in order to be ignored | |
| 4168 | ignoreNonCanCollide = true; --This is whether or not the script should ignore non-cancollide parts | |
| 4169 | ignoreCustom = {}; --This is a table of objects that will be ignored by the script. The object and it's descendants will be ignored
| |
| 4170 | }; | |
| 4171 | ||
| 4172 | ||
| 4173 | recoilSettings = {
| |
| 4174 | firstShotMultiplier = 2.4; --This is what the recoil multiplier for the first shot will be. The rest of the shots will be normal recoil | |
| 4175 | aimedMultiplier = 0.5; --When you're aimed, this is what the recoil will be multiplied by | |
| 4176 | camMultiplier = 2; --This is what the gun up recoil will be multiplied by to get you the cam recoil | |
| 4177 | springSpeed = 15; --This is the what the speed of the gun's recoil spring will be. The lower it is the slower the gun sways around | |
| 4178 | springDamper = 0.5; --This is a number between 0 and 1 that determines how quickly the spring will be dampened. | |
| 4179 | Recoil = {
| |
| 4180 | Side = { --This is the side to side gun and camera recoil
| |
| 4181 | Left = -0.17; | |
| 4182 | Right = 0.28; | |
| 4183 | }; | |
| 4184 | Up = { --This is the up and down gun and camera recoil
| |
| 4185 | Min = 0.26; | |
| 4186 | Max = 0.28; | |
| 4187 | }; | |
| 4188 | Back = { --[[This is the kick back gun recoil. NOTE: The numbers below are the amount the gun moves back, so the gun will move back
| |
| 4189 | a value/2 amount of studs. So if the min is 0.25 and the max is 0.3, the gun will move back anywhere between 0.025 and 0.03 studs]] | |
| 4190 | Min = 0.3; | |
| 4191 | Max = 0.35; | |
| 4192 | }; | |
| 4193 | Tilt = { --[[This is tilt camera recoil. NOTE: The numbers below are the amount of deca-degrees the camera tilts, so if the left is -1
| |
| 4194 | and the right is 1 then the gun will tilt anywhere between -10 degress and 10 degrees]] | |
| 4195 | Left = -0.5; | |
| 4196 | Right = 0.5; | |
| 4197 | }; | |
| 4198 | } | |
| 4199 | }; | |
| 4200 | ||
| 4201 | ||
| 4202 | spreadSettings = {
| |
| 4203 | Increase = 0.1; --This is what is added to the spread of the bullet every time you fire | |
| 4204 | Decrease = 15; --This is what the spread of the bullet decreases by per second | |
| 4205 | ||
| 4206 | --[[This spread values are how many degrees offset the bullets will travel from the center, so a spread of 1 would mean that the bullet's | |
| 4207 | max spread in any direction is 1 degree from the center. The idling category is when you're not moving, and the moving category is when | |
| 4208 | you're moving]] | |
| 4209 | Aimed = {
| |
| 4210 | Stand = {
| |
| 4211 | Idling = 0.2; | |
| 4212 | Moving = 0.4; | |
| 4213 | }; | |
| 4214 | Crouch = {
| |
| 4215 | Idling = 0.15; | |
| 4216 | Moving = 0.3; | |
| 4217 | }; | |
| 4218 | Prone = {
| |
| 4219 | Idling = 0.1; | |
| 4220 | Moving = 0.3; | |
| 4221 | }; | |
| 4222 | }; | |
| 4223 | unAimed = {
| |
| 4224 | Stand = {
| |
| 4225 | Idling = 2; | |
| 4226 | Moving = 2.5; | |
| 4227 | }; | |
| 4228 | Crouch = {
| |
| 4229 | Idling = 1.5; | |
| 4230 | Moving = 2; | |
| 4231 | }; | |
| 4232 | Prone = {
| |
| 4233 | Idling = 1; | |
| 4234 | Moving = 2; | |
| 4235 | }; | |
| 4236 | }; | |
| 4237 | }; | |
| 4238 | ||
| 4239 | ||
| 4240 | reloadSettings = {
| |
| 4241 | Anim = true; --This is whether or not there is an animation for reloading | |
| 4242 | Times = {
| |
| 4243 | Loaded = 3; --This is how long it takes to reload the gun if a bullet is already chambered | |
| 4244 | Empty = 3; --This is how long it takes to reload the gun if a bullet isn't chambered | |
| 4245 | }; | |
| 4246 | autoReload = true; --This is whether or not the gun will reload automatically when the ammo reaches 0 | |
| 4247 | magIsBullet = false; --This is whether or not the mag is the bullet itself. This is useful for guns with only 1 bullet per clip | |
| 4248 | reloadWhileRunning = true; --This is whether or not you can reload while running | |
| 4249 | }; | |
| 4250 | ||
| 4251 | ||
| 4252 | sprintTime = 15; --This is the maximum time you can sprint | |
| 4253 | staminaCoolTime = 4; --This is how long it takes for your stamina to fully recharge | |
| 4254 | canFireWhileRunning = false; --This is whether or not you can shoot while sprinting | |
| 4255 | ||
| 4256 | ||
| 4257 | dolphinDive = true; --This is whether or not you can dolphin dive (Run and crouch at the same time to dive) | |
| 4258 | diveSettings = {
| |
| 4259 | rechargeTime = 1; --This is how long you have to wait till you can dive or run again after you've dived | |
| 4260 | Force = 350; --This is the multiplier for the dolphin dive force. The higher it is the farther you'll dive | |
| 4261 | Angle = math.rad(30); --This is the angle in radians from the ground that you dive at | |
| 4262 | }; | |
| 4263 | ||
| 4264 | ||
| 4265 | canChangeStance = true; --This is whether or not you can change stance. That means whether or not you can crouch or go prone | |
| 4266 | stanceSettings = {
| |
| 4267 | Anim = true; --This is whether or not there is an animation for changing stance | |
| 4268 | Speed = 0.3; --This is how quickly you change stance | |
| 4269 | Stances = {
| |
| 4270 | Crouch = true; --This is whether or not you can crouch | |
| 4271 | Prone = true; --This is whether or not you can go prone | |
| 4272 | }; | |
| 4273 | standOnDeselect = true; --This is whether or not you stand up when you deselect the tool | |
| 4274 | crawlAnimation = true; --This is whether or not you crawl while moving when you're prone | |
| 4275 | }; | |
| 4276 | ||
| 4277 | ||
| 4278 | walkSpeeds = {
| |
| 4279 | Base = 14; --This is the base walkspeed | |
| 4280 | Sprinting = 28; --This is the walkspeed when you're sprinting | |
| 4281 | Aimed = 10; --[[This is the base walkspeed when the gun is aimed down. If you crouch or go prone, the speed will change | |
| 4282 | based on the Aimed walkspeed to Base walkspeed ratio]] | |
| 4283 | Crouched = 7; --This is the walkspeed when you're crouched | |
| 4284 | Prone = 4; --This is the walkspeed when you're prone | |
| 4285 | }; | |
| 4286 | ||
| 4287 | ||
| 4288 | --NOTE: For extra keys, go here: http://wiki.roblox.com/index.php?title=Taking_keyboard_input | |
| 4289 | Keys = {
| |
| 4290 | lowerStance = "c"; --This is the key you press to lower your stance (Stand > Crouch > Prone) | |
| 4291 | raiseStance = "x"; --This is the key you press to raise your stance (Prone > Crouch > Stand) | |
| 4292 | selectFire = "e"; --This is the key you press to switch fire modes | |
| 4293 | Reload = "r"; --This is the key you press to reload | |
| 4294 | Sprint = string.char(48); --This is the key you press to sprint | |
| 4295 | Knife = "f"; --This is the key you press to knife | |
| 4296 | lethalGrenade = "g"; --This is the key you press to throw the lethal grenade | |
| 4297 | tacticalGrenade = "t"; --This is the key you press to throw the tactical grenade | |
| 4298 | ADS = "q"; --This is the key you press to ADS. If you want ADS to just be right mouse, then make this key "" | |
| 4299 | scopeSteady = string.char(48); --This is the key you press to steady the scope | |
| 4300 | }; | |
| 4301 | ||
| 4302 | ||
| 4303 | } | |
| 4304 | ||
| 4305 | local Player = game.Players.LocalPlayer | |
| 4306 | local Char = Player.Character | |
| 4307 | local Humanoid = Char:WaitForChild("Humanoid")
| |
| 4308 | local Torso = Char:WaitForChild("Torso")
| |
| 4309 | local Head = Char:WaitForChild("Head")
| |
| 4310 | local HRP = Char:WaitForChild("HumanoidRootPart")
| |
| 4311 | local Root = HRP:WaitForChild("RootJoint")
| |
| 4312 | ||
| 4313 | local Neck = Torso:WaitForChild("Neck")
| |
| 4314 | ||
| 4315 | local LArm = Char:WaitForChild("Left Arm")
| |
| 4316 | local RArm = Char:WaitForChild("Right Arm")
| |
| 4317 | local LLeg = Char:WaitForChild("Left Leg")
| |
| 4318 | local RLeg = Char:WaitForChild("Right Leg")
| |
| 4319 | ||
| 4320 | local M2 = Player:GetMouse() | |
| 4321 | ||
| 4322 | local mainGUI = script:WaitForChild("mainGUI")
| |
| 4323 | ||
| 4324 | local crossHair = mainGUI:WaitForChild("crossHair")
| |
| 4325 | local HUD = mainGUI:WaitForChild("HUD")
| |
| 4326 | local Scope = mainGUI:WaitForChild("Scope")
| |
| 4327 | local fireSelect = mainGUI:WaitForChild("fireSelect")
| |
| 4328 | local hitMarker = mainGUI:WaitForChild("hitMarker")
| |
| 4329 | local Sens = mainGUI:WaitForChild("Sens")
| |
| 4330 | ||
| 4331 | local crossA = crossHair:WaitForChild("A"):WaitForChild("Line")
| |
| 4332 | local crossB = crossHair:WaitForChild("B"):WaitForChild("Line")
| |
| 4333 | local crossC = crossHair:WaitForChild("C"):WaitForChild("Line")
| |
| 4334 | local crossD = crossHair:WaitForChild("D"):WaitForChild("Line")
| |
| 4335 | ||
| 4336 | local Controls = HUD:WaitForChild("Controls")
| |
| 4337 | ||
| 4338 | local gunNameTitle = HUD:WaitForChild("gunName"):WaitForChild("Title")
| |
| 4339 | ||
| 4340 | local scopeMain = Scope:WaitForChild("Main")
| |
| 4341 | local scopeSteady = Scope:WaitForChild("Steady")
| |
| 4342 | ||
| 4343 | local fireModes = fireSelect:WaitForChild("Modes")
| |
| 4344 | ||
| 4345 | local modeGUI = HUD:WaitForChild("Mode"):WaitForChild("Main")
| |
| 4346 | local clipAmmoGUI = HUD:WaitForChild("Ammo"):WaitForChild("Clip")
| |
| 4347 | local storedAmmoGUI = HUD:WaitForChild("Ammo"):WaitForChild("Stored")
| |
| 4348 | ||
| 4349 | local DS = game:GetService("Debris")
| |
| 4350 | local CP = game:GetService("ContentProvider")
| |
| 4351 | local RS = game:GetService("RunService")
| |
| 4352 | local UIS = game:GetService("UserInputService")
| |
| 4353 | ||
| 4354 | local Cam = game.Workspace.CurrentCamera | |
| 4355 | ||
| 4356 | local ABS, HUGE, FLOOR, CEIL = math.abs, math.huge, math.floor, math.ceil | |
| 4357 | local RAD, SIN, COS, TAN = math.rad, math.sin, math.cos, math.tan | |
| 4358 | local VEC2, V3 = Vector2.new, Vector3.new | |
| 4359 | local CF, CFANG = CFrame.new, CFrame.Angles | |
| 4360 | local INSERT = table.insert | |
| 4361 | ||
| 4362 | local maxStamina = S.sprintTime * 60 | |
| 4363 | local maxSteadyTime = S.scopeSettings.steadyTime * 60 | |
| 4364 | ||
| 4365 | local LethalIcons = {
| |
| 4366 | "http://www.roblox.com/asset/?id=194849880"; | |
| 4367 | "http://www.roblox.com/asset/?id=195727791"; | |
| 4368 | "http://www.roblox.com/asset/?id=195728137"; | |
| 4369 | "http://www.roblox.com/asset/?id=218151830"; | |
| 4370 | } | |
| 4371 | ||
| 4372 | local TacticalIcons = {
| |
| 4373 | "http://www.roblox.com/asset/?id=195728473"; | |
| 4374 | "http://www.roblox.com/asset/?id=195728693"; | |
| 4375 | } | |
| 4376 | ||
| 4377 | local ASCII = {
| |
| 4378 | 071; 117; 110; 032; | |
| 4379 | 075; 105; 116; 032; | |
| 4380 | 115; 099; 114; 105; | |
| 4381 | 112; 116; 101; 100; | |
| 4382 | 032; 098; 121; 032; | |
| 4383 | 084; 117; 114; 098; | |
| 4384 | 111; 070; 117; 115; | |
| 4385 | 105; 111; 110; 000; | |
| 4386 | } | |
| 4387 | ||
| 4388 | local Ignore = {
| |
| 4389 | Char; | |
| 4390 | ignoreModel; | |
| 4391 | } | |
| 4392 | ||
| 4393 | local Shoulders = {
| |
| 4394 | Right = Torso:WaitForChild("Right Shoulder");
| |
| 4395 | Left = Torso:WaitForChild("Left Shoulder")
| |
| 4396 | } | |
| 4397 | ||
| 4398 | local armC0 = {
| |
| 4399 | CF(-1.5, 0, 0) * CFANG(RAD(90), 0, 0); | |
| 4400 | CF(1.5, 0, 0) * CFANG(RAD(90), 0, 0); | |
| 4401 | } | |
| 4402 | ||
| 4403 | local legC0 = {
| |
| 4404 | Stand = {
| |
| 4405 | CF(-0.5, -2, 0); | |
| 4406 | CF(0.5, -2, 0); | |
| 4407 | }; | |
| 4408 | Crouch = {
| |
| 4409 | CF(-0.5, -1.5, 0.5) * CFANG(-RAD(90), 0, 0); | |
| 4410 | CF(0.5, -1, -0.75); | |
| 4411 | }; | |
| 4412 | Prone = {
| |
| 4413 | CF(-0.5, -2, 0); | |
| 4414 | CF(0.5, -2, 0); | |
| 4415 | }; | |
| 4416 | } | |
| 4417 | ||
| 4418 | local Sine = function(X) | |
| 4419 | return SIN(RAD(X)) | |
| 4420 | end | |
| 4421 | ||
| 4422 | local Linear = function(X) | |
| 4423 | return (X / 90) | |
| 4424 | end | |
| 4425 | ||
| 4426 | -------------------------------------------------------------------------------------- | |
| 4427 | --------------------[ VARIABLES ]----------------------------------------------------- | |
| 4428 | -------------------------------------------------------------------------------------- | |
| 4429 | ||
| 4430 | local Selected = false | |
| 4431 | ||
| 4432 | local playerMass = 0 | |
| 4433 | ||
| 4434 | local Forward = false | |
| 4435 | local Backward = false | |
| 4436 | ||
| 4437 | local Idling = false | |
| 4438 | local Walking = false | |
| 4439 | local Running = false | |
| 4440 | ||
| 4441 | local crawlCamRot = 0 | |
| 4442 | local crawlAlpha = 0 | |
| 4443 | local idleAlpha = 1 | |
| 4444 | local walkAlpha = 0 | |
| 4445 | local isCrawling = false | |
| 4446 | local isIdling = false | |
| 4447 | local isWalking = false | |
| 4448 | local isRunning = false | |
| 4449 | ||
| 4450 | local Aimed = false | |
| 4451 | local Aiming = false | |
| 4452 | local aimAlpha = 0 | |
| 4453 | local headOffset = VEC2(COS(RAD(90) - S.aimSettings.headTilt) * 0.5, 1 + SIN(RAD(90) - S.aimSettings.headTilt) * 0.5) | |
| 4454 | ||
| 4455 | local Reloading = false | |
| 4456 | local breakReload = false | |
| 4457 | local magVisible = true | |
| 4458 | local newMag = false | |
| 4459 | ||
| 4460 | local Knifing = false | |
| 4461 | ||
| 4462 | local MB1Down = false | |
| 4463 | local Firing = false | |
| 4464 | local canFire = true | |
| 4465 | local fireFunction = nil | |
| 4466 | local firstShot = false | |
| 4467 | local shotCount = 0 | |
| 4468 | local lastSideRecoil = {0, 0}
| |
| 4469 | local recoilAnim = {
| |
| 4470 | Pos = V3(); | |
| 4471 | Rot = V3(); | |
| 4472 | Code = nil; | |
| 4473 | } | |
| 4474 | ||
| 4475 | local numModes = 0 | |
| 4476 | local rawFireMode = 1 | |
| 4477 | local canSelectFire = true | |
| 4478 | local guiAngOffset = 0 | |
| 4479 | local Modes = {}
| |
| 4480 | ||
| 4481 | local onGround = true | |
| 4482 | local startFallHeight = 0 | |
| 4483 | local jumpAnim = {
| |
| 4484 | Pos = 0; | |
| 4485 | Rot = 0; | |
| 4486 | Code = 0; | |
| 4487 | } | |
| 4488 | ||
| 4489 | local runReady = true | |
| 4490 | local runKeyPressed = false | |
| 4491 | local chargingStamina = false | |
| 4492 | ||
| 4493 | local AimingIn = false | |
| 4494 | local AimingOut = false | |
| 4495 | ||
| 4496 | local Stamina = S.sprintTime * 60 | |
| 4497 | local currentSteadyTime = S.scopeSettings.steadyTime * 60 | |
| 4498 | ||
| 4499 | local camSteady = false | |
| 4500 | local takingBreath = false | |
| 4501 | local steadyKeyPressed = false | |
| 4502 | ||
| 4503 | local Grip = nil | |
| 4504 | local aimedGripCF = nil | |
| 4505 | ||
| 4506 | local spreadZoom = "unAimed" | |
| 4507 | local spreadStance = "Stand" | |
| 4508 | local spreadMotion = "Idling" | |
| 4509 | local baseSpread = S.spreadSettings.unAimed.Stand.Idling | |
| 4510 | local currentSpread = 0 | |
| 4511 | local loweringSpread = false | |
| 4512 | ||
| 4513 | local mouseSensitivity = S.sensitivitySettings.Default | |
| 4514 | local aimSensitivity = S.sensitivitySettings.Aim | |
| 4515 | local lastSensUpdate = 0 | |
| 4516 | ||
| 4517 | local ammoInClip = 0 | |
| 4518 | ||
| 4519 | local Stance = 0 | |
| 4520 | local stanceSway = 1 | |
| 4521 | local camSway = 1 | |
| 4522 | ||
| 4523 | local camAng = VEC2() | |
| 4524 | ||
| 4525 | local armTilt = 0 | |
| 4526 | local moveAng = 0 | |
| 4527 | local animCode = 0 | |
| 4528 | ||
| 4529 | local desiredXOffset = 0 | |
| 4530 | local desiredYOffset = 0 | |
| 4531 | local currentXOffset = 0 | |
| 4532 | local currentYOffset = 0 | |
| 4533 | local aimHeadOffset = 0 | |
| 4534 | local recoilAnimMultiplier = 1 | |
| 4535 | local jumpAnimMultiplier = 1 | |
| 4536 | local translationDivisor = 7 | |
| 4537 | local rotationMultiplier = S.momentumSettings.Amplitude.unAimed | |
| 4538 | local armTiltMultiplier = 1 | |
| 4539 | ||
| 4540 | local equipAnimPlaying = false | |
| 4541 | ||
| 4542 | local crossOffset = 0 | |
| 4543 | ||
| 4544 | local camOffsets = {
| |
| 4545 | guiScope = {
| |
| 4546 | Rot = V3(); | |
| 4547 | }; | |
| 4548 | Reload = {
| |
| 4549 | Rot = V3(); | |
| 4550 | Code = nil; | |
| 4551 | }; | |
| 4552 | Recoil = {
| |
| 4553 | Rot = V3(); | |
| 4554 | Code = nil; | |
| 4555 | }; | |
| 4556 | } | |
| 4557 | ||
| 4558 | local Anim = {
| |
| 4559 | Pos = V3(); | |
| 4560 | Rot = V3(); | |
| 4561 | Ang = 0; | |
| 4562 | Code = 0; | |
| 4563 | } | |
| 4564 | ||
| 4565 | local lastBeat = 0 | |
| 4566 | ||
| 4567 | local gunParts = {}
| |
| 4568 | ||
| 4569 | local Connections = {}
| |
| 4570 | ||
| 4571 | local Keys = {}
| |
| 4572 | ||
| 4573 | -------------------------------------------------------------------------------------- | |
| 4574 | --------------------[ PRE-LOADING ]--------------------------------------------------- | |
| 4575 | -------------------------------------------------------------------------------------- | |
| 4576 | ||
| 4577 | CP:Preload(S.explosionSettings.soundId) | |
| 4578 | CP:Preload(S.holeSettings.Texture) | |
| 4579 | CP:Preload(S.sparkSettings.Texture) | |
| 4580 | CP:Preload(S.smokeSettings.Texture) | |
| 4581 | CP:Preload(S.bloodSettings.Texture) | |
| 4582 | CP:Preload("http://www.roblox.com/asset/?id=126877530") --The dark green arrow in the select fire gui
| |
| 4583 | CP:Preload("http://www.roblox.com/asset/?id=55754953") --The circle in the select fire gui
| |
| 4584 | ||
| 4585 | -------------------------------------------------------------------------------------- | |
| 4586 | --------------------[ GUN SETUP ]----------------------------------------------------- | |
| 4587 | -------------------------------------------------------------------------------------- | |
| 4588 | ||
| 4589 | serverMain:WaitForChild("Plyr").Value = Player
| |
| 4590 | ||
| 4591 | local gunMomentum = Spring.new(V3()) | |
| 4592 | gunMomentum.s = S.momentumSettings.Speed | |
| 4593 | gunMomentum.d = S.momentumSettings.Damper | |
| 4594 | ||
| 4595 | local gunRecoilSpring = Spring.new(V3()) | |
| 4596 | gunRecoilSpring.s = S.recoilSettings.springSpeed | |
| 4597 | gunRecoilSpring.d = S.recoilSettings.springDamper | |
| 4598 | ||
| 4599 | local camRecoilSpring = Spring.new(V3()) | |
| 4600 | camRecoilSpring.s = 35 | |
| 4601 | camRecoilSpring.d = 0.5 | |
| 4602 | ||
| 4603 | local crossSpring = Spring.new(V3(crossOffset + (baseSpread + currentSpread) * 50, 0, 0)) | |
| 4604 | crossSpring.s = 20 | |
| 4605 | crossSpring.d = 0.75 | |
| 4606 | ||
| 4607 | --[[local function getModelMass(P) | |
| 4608 | for _, v in pairs(P:GetChildren()) do | |
| 4609 | if v:IsA("BasePart") then
| |
| 4610 | playerMass = playerMass + v:GetMass() | |
| 4611 | end | |
| 4612 | getModelMass(v) | |
| 4613 | end | |
| 4614 | end | |
| 4615 | getModelMass(Char) | |
| 4616 | ||
| 4617 | Char.DescendantAdded:connect(function(Descendant) | |
| 4618 | if Descendant:IsA("BasePart") then
| |
| 4619 | playerMass = playerMass + Descendant:GetMass() | |
| 4620 | end | |
| 4621 | end) | |
| 4622 | Char.DescendantRemoving:connect(function(Descendant) | |
| 4623 | if Descendant:IsA("BasePart") then
| |
| 4624 | playerMass = playerMass - Descendant:GetMass() | |
| 4625 | end | |
| 4626 | end)]] | |
| 4627 | ||
| 4628 | -------------------------------------------------------------------------------------- | |
| 4629 | --------------------[ WELD CFRAMES ]-------------------------------------------------- | |
| 4630 | -------------------------------------------------------------------------------------- | |
| 4631 | ||
| 4632 | spawn(function() | |
| 4633 | --[[for _, v in pairs(Gun:GetChildren()) do | |
| 4634 | if v:IsA("BasePart") and v ~= Handle then
| |
| 4635 | if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
| |
| 4636 | if (not v:FindFirstChild("weldCF")) then
| |
| 4637 | local weldCF = Instance.new("CFrameValue")
| |
| 4638 | weldCF.Name = "weldCF" | |
| 4639 | weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame) | |
| 4640 | weldCF.Parent = v | |
| 4641 | INSERT(gunParts, {Obj = v, Weld = nil})
| |
| 4642 | end | |
| 4643 | if string.sub(v.Name, 1, 3) == "Mag" then | |
| 4644 | if (not v:FindFirstChild("magTrans")) then
| |
| 4645 | local magTrans = Instance.new("NumberValue")
| |
| 4646 | magTrans.Name = "magTrans" | |
| 4647 | magTrans.Value = v.Transparency | |
| 4648 | magTrans.Parent = v | |
| 4649 | end | |
| 4650 | end | |
| 4651 | v.Anchored = false | |
| 4652 | end | |
| 4653 | end | |
| 4654 | Handle.Anchored = false]] | |
| 4655 | for _, v in pairs(Gun:GetChildren()) do | |
| 4656 | if v:FindFirstChild("weldCF") then
| |
| 4657 | INSERT(gunParts, {Obj = v, Weld = nil})
| |
| 4658 | v.Anchored = false | |
| 4659 | end | |
| 4660 | end | |
| 4661 | end) | |
| 4662 | ||
| 4663 | -------------------------------------------------------------------------------------- | |
| 4664 | --------------------[ MAIN PROGRAM ]-------------------------------------------------- | |
| 4665 | -------------------------------------------------------------------------------------- | |
| 4666 | ||
| 4667 | --------------------[ ARM CREATION FUNCTION ]----------------------------------------- | |
| 4668 | ||
| 4669 | function createArms() | |
| 4670 | local Arms = {}
| |
| 4671 | for i = 0, 1 do | |
| 4672 | local armModel = Instance.new("Model")
| |
| 4673 | armModel.Name = "armModel" | |
| 4674 | ||
| 4675 | local Arm = Instance.new("Part")
| |
| 4676 | Arm.BrickColor = (S.fakeArmSettings.realBodyColor and (i == 0 and LArm.BrickColor or RArm.BrickColor) or S.fakeArmSettings.Color) | |
| 4677 | Arm.Transparency = S.fakeArmSettings.Transparency | |
| 4678 | Arm.Name = "Arm" | |
| 4679 | Arm.CanCollide = false | |
| 4680 | Arm.Size = V3(0.598, 2, 0.598) | |
| 4681 | Arm.Parent = armModel | |
| 4682 | local armMesh = Instance.new("SpecialMesh")
| |
| 4683 | armMesh.MeshId = "rbxasset://fonts//leftarm.mesh" | |
| 4684 | armMesh.MeshType = Enum.MeshType.FileMesh | |
| 4685 | armMesh.Scale = V3(0.598, 1, 0.598) | |
| 4686 | armMesh.Parent = Arm | |
| 4687 | ||
| 4688 | local Glove1 = Instance.new("Part")
| |
| 4689 | Glove1.BrickColor = BrickColor.new("Black")
| |
| 4690 | Glove1.Name = "Glove1" | |
| 4691 | Glove1.CanCollide = false | |
| 4692 | Glove1.Size = V3(0.598, 2, 0.598) | |
| 4693 | Glove1.Parent = armModel | |
| 4694 | local glove1Mesh = Instance.new("SpecialMesh")
| |
| 4695 | glove1Mesh.MeshId = "rbxasset://fonts//leftarm.mesh" | |
| 4696 | glove1Mesh.Offset = V3(0, -0.5, 0) | |
| 4697 | glove1Mesh.Scale = V3(0.658, 0.205, 0.658) | |
| 4698 | glove1Mesh.Parent = Glove1 | |
| 4699 | local glove1Weld = Instance.new("Weld")
| |
| 4700 | glove1Weld.Part0 = Arm | |
| 4701 | glove1Weld.Part1 = Glove1 | |
| 4702 | glove1Weld.Parent = Arm | |
| 4703 | ||
| 4704 | local Glove2 = Instance.new("Part")
| |
| 4705 | Glove2.BrickColor = BrickColor.new("Black")
| |
| 4706 | Glove2.Name = "Glove2" | |
| 4707 | Glove2.CanCollide = false | |
| 4708 | Glove2.Size = V3(0.598, 2, 0.598) | |
| 4709 | Glove2.Parent = armModel | |
| 4710 | local glove2Mesh = Instance.new("SpecialMesh")
| |
| 4711 | glove2Mesh.MeshId = "rbxasset://fonts//leftarm.mesh" | |
| 4712 | glove2Mesh.Offset = V3(0, -0.435, 0) | |
| 4713 | glove2Mesh.Scale = V3(0.69, 0.105, 0.69) | |
| 4714 | glove2Mesh.Parent = Glove2 | |
| 4715 | local glove2Weld = Instance.new("Weld")
| |
| 4716 | glove2Weld.Part0 = Arm | |
| 4717 | glove2Weld.Part1 = Glove2 | |
| 4718 | glove2Weld.Parent = Arm | |
| 4719 | ||
| 4720 | local Glove3 = Instance.new("Part")
| |
| 4721 | Glove3.BrickColor = BrickColor.new("Black")
| |
| 4722 | Glove3.Name = "Glove3" | |
| 4723 | Glove3.CanCollide = false | |
| 4724 | Glove3.Size = V3(0.598, 2, 0.598) | |
| 4725 | Glove3.Parent = armModel | |
| 4726 | local glove3Mesh = Instance.new("SpecialMesh")
| |
| 4727 | glove3Mesh.MeshId = "rbxasset://fonts//leftarm.mesh" | |
| 4728 | glove3Mesh.Offset = V3(0.18 * ((i * 2) - 1), -0.7, 0) | |
| 4729 | glove3Mesh.Scale = V3(0.299, 0.305, 0.657) | |
| 4730 | glove3Mesh.Parent = Glove3 | |
| 4731 | local glove3Weld = Instance.new("Weld")
| |
| 4732 | glove3Weld.Part0 = Arm | |
| 4733 | glove3Weld.Part1 = Glove3 | |
| 4734 | glove3Weld.Parent = Arm | |
| 4735 | ||
| 4736 | local Sleeve1 = Instance.new("Part")
| |
| 4737 | Sleeve1.BrickColor = BrickColor.new("Sand green")
| |
| 4738 | Sleeve1.Name = "Sleeve1" | |
| 4739 | Sleeve1.CanCollide = false | |
| 4740 | Sleeve1.Size = V3(0.598, 2, 0.598) | |
| 4741 | Sleeve1.Parent = armModel | |
| 4742 | local sleeve1Mesh = Instance.new("SpecialMesh")
| |
| 4743 | sleeve1Mesh.MeshId = "rbxasset://fonts//leftarm.mesh" | |
| 4744 | sleeve1Mesh.Offset = V3(0, 0.75, 0) | |
| 4745 | sleeve1Mesh.Scale = V3(0.656, 0.3, 0.656) | |
| 4746 | sleeve1Mesh.Parent = Sleeve1 | |
| 4747 | local sleeve1Weld = Instance.new("Weld")
| |
| 4748 | sleeve1Weld.Part0 = Arm | |
| 4749 | sleeve1Weld.Part1 = Sleeve1 | |
| 4750 | sleeve1Weld.Parent = Arm | |
| 4751 | ||
| 4752 | local Sleeve2 = Instance.new("Part")
| |
| 4753 | Sleeve2.BrickColor = BrickColor.new("Sand green")
| |
| 4754 | Sleeve2.Name = "Sleeve2" | |
| 4755 | Sleeve2.CanCollide = false | |
| 4756 | Sleeve2.Size = V3(0.598, 2, 0.598) | |
| 4757 | Sleeve2.Parent = armModel | |
| 4758 | local sleeve2Mesh = Instance.new("SpecialMesh")
| |
| 4759 | sleeve2Mesh.MeshId = "rbxasset://fonts//leftarm.mesh" | |
| 4760 | sleeve2Mesh.Offset = V3(0, 0.55, 0) | |
| 4761 | sleeve2Mesh.Scale = V3(0.75, 0.1, 0.75) | |
| 4762 | sleeve2Mesh.Parent = Sleeve2 | |
| 4763 | local sleeve2Weld = Instance.new("Weld")
| |
| 4764 | sleeve2Weld.Part0 = Arm | |
| 4765 | sleeve2Weld.Part1 = Sleeve2 | |
| 4766 | sleeve2Weld.Parent = Arm | |
| 4767 | ||
| 4768 | table.insert(Arms, {Model = armModel, armPart = Arm})
| |
| 4769 | end | |
| 4770 | return Arms | |
| 4771 | end | |
| 4772 | ||
| 4773 | --------------------[ MATH FUNCTIONS ]------------------------------------------------ | |
| 4774 | ||
| 4775 | function Map(Val, fromLow, fromHigh, toLow, toHigh) | |
| 4776 | return (Val - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow | |
| 4777 | end | |
| 4778 | ||
| 4779 | function numLerp(A, B, Alpha) | |
| 4780 | return A + (B - A) * Alpha | |
| 4781 | end | |
| 4782 | ||
| 4783 | function RAND(Min, Max, Accuracy) | |
| 4784 | return numLerp(Min, Max, math.random()) | |
| 4785 | --[[local Inverse = 1 / (Accuracy or 1) | |
| 4786 | return (math.random(Min * Inverse, Max * Inverse) / Inverse)]] | |
| 4787 | end | |
| 4788 | ||
| 4789 | function Round(Num, toNearest) | |
| 4790 | return math.floor(Num / toNearest + 0.5) * toNearest | |
| 4791 | end | |
| 4792 | ||
| 4793 | function getNearestPoint(A, B, Origin) | |
| 4794 | local A2 = (A - Origin).magnitude | |
| 4795 | local B2 = (B - Origin).magnitude | |
| 4796 | return (math.min(A2, B2) == A2 and A or B) | |
| 4797 | end | |
| 4798 | ||
| 4799 | --------------------[ TWEEN FUNCTIONS ]----------------------------------------------- | |
| 4800 | ||
| 4801 | function tweenJoint(Joint, newC0, newC1, Alpha, Duration) | |
| 4802 | spawn(function() | |
| 4803 | local newCode = math.random(-1e9, 1e9) --This creates a random code between -1000000000 and 1000000000 | |
| 4804 | local tweenIndicator = nil | |
| 4805 | if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
| |
| 4806 | tweenIndicator = Instance.new("IntValue")
| |
| 4807 | tweenIndicator.Name = "tweenCode" | |
| 4808 | tweenIndicator.Value = newCode | |
| 4809 | tweenIndicator.Parent = Joint | |
| 4810 | else | |
| 4811 | tweenIndicator = Joint.tweenCode | |
| 4812 | tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop | |
| 4813 | end | |
| 4814 | --local tweenIndicator = createTweenIndicator:InvokeServer(Joint, newCode) | |
| 4815 | if Duration <= 0 then --If the duration is less than or equal to 0 then there's no need for a tweening loop | |
| 4816 | if newC0 then Joint.C0 = newC0 end | |
| 4817 | if newC1 then Joint.C1 = newC1 end | |
| 4818 | else | |
| 4819 | local startC0 = Joint.C0 | |
| 4820 | local startC1 = Joint.C1 | |
| 4821 | local t0 = tick() | |
| 4822 | while true do | |
| 4823 | RS.RenderStepped:wait() --This makes the for loop step every 1/60th of a second | |
| 4824 | local X = math.min((tick() - t0) / Duration, 1) * 90 | |
| 4825 | if tweenIndicator.Value ~= newCode then break end --This makes sure that another tween wasn't called on the same joint | |
| 4826 | if (not Selected) then break end --This stops the tween if the tool is deselected | |
| 4827 | if newC0 then Joint.C0 = startC0:lerp(newC0, Alpha(X)) end | |
| 4828 | if newC1 then Joint.C1 = startC1:lerp(newC1, Alpha(X)) end | |
| 4829 | --if newC0 then lerpCF:InvokeServer(Joint, "C0", startC0, newC0, Alpha(X)) end | |
| 4830 | --if newC1 then lerpCF:InvokeServer(Joint, "C1", startC1, newC1, Alpha(X)) end | |
| 4831 | if X == 90 then break end | |
| 4832 | end | |
| 4833 | end | |
| 4834 | if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code | |
| 4835 | tweenIndicator:Destroy() | |
| 4836 | end | |
| 4837 | --deleteTweenIndicator:InvokeServer(tweenIndicator, newCode) | |
| 4838 | end) | |
| 4839 | end | |
| 4840 | ||
| 4841 | function tweenCam(Key, newRot, Alpha, Duration) | |
| 4842 | spawn(function() | |
| 4843 | local newCode = math.random(-1e9, 1e9) | |
| 4844 | camOffsets[Key].Code = newCode | |
| 4845 | ||
| 4846 | local Increment = 1.5 / Duration | |
| 4847 | local prevRot = camOffsets[Key].Rot | |
| 4848 | local X = 0 | |
| 4849 | while true do | |
| 4850 | RS.RenderStepped:wait() | |
| 4851 | local newX = X + Increment | |
| 4852 | X = (newX > 90 and 90 or newX) | |
| 4853 | if camOffsets[Key].Code ~= newCode then break end | |
| 4854 | if (not Selected) then break end | |
| 4855 | ||
| 4856 | camOffsets[Key].Rot = prevRot:lerp(newRot, Alpha(X)) | |
| 4857 | ||
| 4858 | if X == 90 then break end | |
| 4859 | end | |
| 4860 | ||
| 4861 | if camOffsets[Key].Code == newCode then | |
| 4862 | camOffsets[Key].Code = nil | |
| 4863 | end | |
| 4864 | end) | |
| 4865 | end | |
| 4866 | ||
| 4867 | function tweenRecoil(newPos, newRot, Alpha, Duration) | |
| 4868 | spawn(function() | |
| 4869 | local newCode = math.random(-1e9, 1e9) | |
| 4870 | recoilAnim.Code = newCode | |
| 4871 | ||
| 4872 | local Increment = 1.5 / Duration | |
| 4873 | local prevPos = recoilAnim.Pos | |
| 4874 | local prevRot = recoilAnim.Rot | |
| 4875 | local X = 0 | |
| 4876 | while true do | |
| 4877 | RS.RenderStepped:wait() | |
| 4878 | local newX = X + Increment | |
| 4879 | X = (newX > 90 and 90 or newX) | |
| 4880 | if recoilAnim.Code ~= newCode then break end | |
| 4881 | if (not Selected) then break end | |
| 4882 | ||
| 4883 | recoilAnim.Pos = prevPos:lerp(newPos, Alpha(X)) | |
| 4884 | recoilAnim.Rot = prevRot:lerp(newRot, Alpha(X)) | |
| 4885 | ||
| 4886 | if X == 90 then break end | |
| 4887 | end | |
| 4888 | ||
| 4889 | if recoilAnim.Code == newCode then | |
| 4890 | recoilAnim.Code = nil | |
| 4891 | end | |
| 4892 | end) | |
| 4893 | end | |
| 4894 | ||
| 4895 | --------------------[ GUI UPDATE FUNCTIONS ]------------------------------------------ | |
| 4896 | ||
| 4897 | local function updateClipAmmo() | |
| 4898 | clipAmmoGUI.Text = Ammo.Value | |
| 4899 | clipAmmoGUI.TextColor3 = (Ammo.Value <= (ClipSize.Value / 3) and Color3.new(1, 0, 0) or Color3.new(1, 1, 1)) | |
| 4900 | end | |
| 4901 | ||
| 4902 | local function updateStoredAmmo() | |
| 4903 | storedAmmoGUI.Text = StoredAmmo.Value | |
| 4904 | storedAmmoGUI.TextColor3 = (StoredAmmo.Value <= (ClipSize.Value * 2) and Color3.new(1, 0, 0) or Color3.new(1, 1, 1)) | |
| 4905 | end | |
| 4906 | ||
| 4907 | local function updateHealth() | |
| 4908 | HUD.Health.Num.Text = CEIL(Humanoid.Health).."%" | |
| 4909 | HUD.Health.Num.TextColor3 = ( | |
| 4910 | (Humanoid.Health > 200 / 3) and Color3.new(1, 1, 1) or | |
| 4911 | (Humanoid.Health <= 200 / 3 and Humanoid.Health > 100 / 3) and Color3.new(1, 1, 0) or | |
| 4912 | (Humanoid.Health <= 100 / 3) and Color3.new(1, 0, 0) | |
| 4913 | ) | |
| 4914 | end | |
| 4915 | ||
| 4916 | local function updateModeLabels(prevState, newState, X) | |
| 4917 | for Num, Mode in pairs(fireModes:GetChildren()) do | |
| 4918 | local guiAngOffset2 = guiAngOffset + 90 | |
| 4919 | local Ang = numLerp( | |
| 4920 | (guiAngOffset2 * prevState) - (guiAngOffset2 * Num) - guiAngOffset2, | |
| 4921 | (guiAngOffset2 * newState) - (guiAngOffset2 * Num) - guiAngOffset2, | |
| 4922 | Sine(X) | |
| 4923 | ) + guiAngOffset | |
| 4924 | local XPos = COS(RAD(Ang)) | |
| 4925 | local YPos = SIN(RAD(Ang)) | |
| 4926 | Mode.Position = UDim2.new(0.5, XPos * 100, 0.5, YPos * 100) | |
| 4927 | ||
| 4928 | local R = COS(math.atan2(Mode.Position.Y.Offset, Mode.Position.X.Offset) + RAD(90)) | |
| 4929 | Mode.Label.TextTransparency = 1 - ((R / 4) + 0.75) | |
| 4930 | ||
| 4931 | local Scale = (R * 10) + 50 | |
| 4932 | Mode.Label.Position = UDim2.new(0, -Scale / 2, 0, 0) | |
| 4933 | Mode.Label.Size = UDim2.new(0, Scale, 0, Scale / 2) | |
| 4934 | end | |
| 4935 | end | |
| 4936 | ||
| 4937 | --------------------[ GUI SETUP FUNCTION ]-------------------------------------------- | |
| 4938 | ||
| 4939 | function convertKey(Key) | |
| 4940 | if Key == string.char(8) then | |
| 4941 | return "BKSPCE" | |
| 4942 | elseif Key == string.char(9) then | |
| 4943 | return "TAB" | |
| 4944 | elseif Key == string.char(13) then | |
| 4945 | return "ENTER" | |
| 4946 | elseif Key == string.char(17) then | |
| 4947 | return "UP" | |
| 4948 | elseif Key == string.char(18) then | |
| 4949 | return "DOWN" | |
| 4950 | elseif Key == string.char(19) then | |
| 4951 | return "RIGHT" | |
| 4952 | elseif Key == string.char(20) then | |
| 4953 | return "LEFT" | |
| 4954 | elseif Key == string.char(22) then | |
| 4955 | return "HOME" | |
| 4956 | elseif Key == string.char(23) then | |
| 4957 | return "END" | |
| 4958 | elseif Key == string.char(27) then | |
| 4959 | return "F2" | |
| 4960 | elseif Key == string.char(29) then | |
| 4961 | return "F4" | |
| 4962 | elseif Key == string.char(30) then | |
| 4963 | return "F5" | |
| 4964 | elseif Key == string.char(32) or Key == " " then | |
| 4965 | return "F7" | |
| 4966 | elseif Key == string.char(33) or Key == "!" then | |
| 4967 | return "F8" | |
| 4968 | elseif Key == string.char(34) or Key == '"' then | |
| 4969 | return "F9" | |
| 4970 | elseif Key == string.char(35) or Key == "#" then | |
| 4971 | return "F10" | |
| 4972 | elseif Key == string.char(37) or Key == "%" then | |
| 4973 | return "F12" | |
| 4974 | elseif Key == string.char(47) or Key == "/" then | |
| 4975 | return "R-SHIFT" | |
| 4976 | elseif Key == string.char(48) or Key == "0" then | |
| 4977 | return "L-SHIFT" | |
| 4978 | elseif Key == string.char(49) or Key == "1" then | |
| 4979 | return "R-CTRL" | |
| 4980 | elseif Key == string.char(50) or Key == "2" then | |
| 4981 | return "L-CTRL" | |
| 4982 | elseif Key == string.char(51) or Key == "3" then | |
| 4983 | return "R-ALT" | |
| 4984 | elseif Key == string.char(52) or Key == "4" then | |
| 4985 | return "L-ALT" | |
| 4986 | else | |
| 4987 | return string.upper(Key) | |
| 4988 | end | |
| 4989 | end | |
| 4990 | ||
| 4991 | function createControlFrame(Key, Desc, Num) | |
| 4992 | local C = Instance.new("Frame")
| |
| 4993 | C.BackgroundTransparency = ((Num % 2) == 1 and 0.7 or 1) | |
| 4994 | C.BorderSizePixel = 0 | |
| 4995 | C.Name = "C"..Num | |
| 4996 | C.Position = UDim2.new(0, 0, 0, Num * 20) | |
| 4997 | C.Size = UDim2.new(1, 0, 0, 20) | |
| 4998 | C.ZIndex = 10 | |
| 4999 | ||
| 5000 | local K = Instance.new("TextLabel")
| |
| 5001 | K.BackgroundTransparency = 1 | |
| 5002 | K.Name = "Key" | |
| 5003 | K.Size = UDim2.new(0, 45, 1, 0) | |
| 5004 | K.ZIndex = 10 | |
| 5005 | K.Font = Enum.Font.ArialBold | |
| 5006 | K.FontSize = Enum.FontSize.Size14 | |
| 5007 | K.Text = Key | |
| 5008 | K.TextColor3 = Color3.new(1, 1, 1) | |
| 5009 | K.TextScaled = (string.len(Key) > 5) | |
| 5010 | K.TextWrapped = (string.len(Key) > 5) | |
| 5011 | K.Parent = C | |
| 5012 | ||
| 5013 | local D = Instance.new("TextLabel")
| |
| 5014 | D.BackgroundTransparency = 1 | |
| 5015 | D.Name = "Desc" | |
| 5016 | D.Position = UDim2.new(0, 50, 0, 0) | |
| 5017 | D.Size = UDim2.new(1, -50, 1, 0) | |
| 5018 | D.ZIndex = 10 | |
| 5019 | D.Font = Enum.Font.SourceSansBold | |
| 5020 | D.FontSize = Enum.FontSize.Size14 | |
| 5021 | D.Text = "- "..Desc | |
| 5022 | D.TextColor3 = Color3.new(1, 1, 1) | |
| 5023 | D.TextXAlignment = Enum.TextXAlignment.Left | |
| 5024 | D.Parent = C | |
| 5025 | ||
| 5026 | C.Parent = Controls | |
| 5027 | end | |
| 5028 | ||
| 5029 | function createModes() | |
| 5030 | numModes = 0 | |
| 5031 | for i, v in pairs(S.selectFireSettings.Modes) do | |
| 5032 | if v then | |
| 5033 | numModes = numModes + 1 | |
| 5034 | end | |
| 5035 | end | |
| 5036 | ||
| 5037 | local currentMode = 0 | |
| 5038 | for i, v in pairs(S.selectFireSettings.Modes) do | |
| 5039 | if v then | |
| 5040 | local Frame = Instance.new("Frame")
| |
| 5041 | Frame.BackgroundTransparency = 1 | |
| 5042 | Frame.Name = currentMode | |
| 5043 | Frame.Position = UDim2.new() | |
| 5044 | Frame.Size = UDim2.new() | |
| 5045 | Frame.Parent = fireModes | |
| 5046 | local modeLabel = Instance.new("TextLabel")
| |
| 5047 | modeLabel.BackgroundTransparency = 1 | |
| 5048 | modeLabel.Name = "Label" | |
| 5049 | modeLabel.Position = UDim2.new(0, -20, 0, 0) | |
| 5050 | modeLabel.Size = UDim2.new(0, 40, 0, 20) | |
| 5051 | modeLabel.Font = Enum.Font.SourceSansBold | |
| 5052 | modeLabel.FontSize = Enum.FontSize.Size18 | |
| 5053 | modeLabel.Text = string.upper(i) | |
| 5054 | modeLabel.TextColor3 = Color3.new(1, 1, 1) | |
| 5055 | modeLabel.TextScaled = true | |
| 5056 | modeLabel.TextStrokeTransparency = 0 | |
| 5057 | modeLabel.TextTransparency = 0.5 | |
| 5058 | modeLabel.TextWrapped = true | |
| 5059 | modeLabel.Parent = Frame | |
| 5060 | table.insert(Modes, string.upper(i)) | |
| 5061 | currentMode = currentMode + 1 | |
| 5062 | end | |
| 5063 | end | |
| 5064 | ||
| 5065 | guiAngOffset = -15 * (numModes ^ 3) + 150 * (numModes ^ 2) - 525 * numModes + 660 | |
| 5066 | end | |
| 5067 | ||
| 5068 | function setUpGUI() | |
| 5069 | local currentNum = 1 | |
| 5070 | ||
| 5071 | for _, v in pairs(Controls:GetChildren()) do | |
| 5072 | if v.Name ~= "Title" then | |
| 5073 | v:Destroy() | |
| 5074 | end | |
| 5075 | end | |
| 5076 | ||
| 5077 | for _, PTable in pairs(Plugins.KeyDown) do | |
| 5078 | createControlFrame(convertKey(PTable.Key), PTable.Description, currentNum) | |
| 5079 | currentNum = currentNum + 1 | |
| 5080 | end | |
| 5081 | ||
| 5082 | if S.canChangeStance then | |
| 5083 | local Dive = (S.dolphinDive and " / Dive" or "") | |
| 5084 | createControlFrame(convertKey(S.Keys.lowerStance), "Lower Stance"..Dive, currentNum) | |
| 5085 | currentNum = currentNum + 1 | |
| 5086 | ||
| 5087 | createControlFrame(convertKey(S.Keys.raiseStance), "Raise Stance", currentNum) | |
| 5088 | currentNum = currentNum + 1 | |
| 5089 | end | |
| 5090 | ||
| 5091 | if S.selectFire then | |
| 5092 | createControlFrame(convertKey(S.Keys.selectFire), "Select Fire", currentNum) | |
| 5093 | currentNum = currentNum + 1 | |
| 5094 | end | |
| 5095 | ||
| 5096 | createControlFrame(convertKey(S.Keys.Reload), "Reload", currentNum) | |
| 5097 | currentNum = currentNum + 1 | |
| 5098 | ||
| 5099 | createControlFrame(convertKey(S.Keys.Sprint), "Sprint", currentNum) | |
| 5100 | currentNum = currentNum + 1 | |
| 5101 | ||
| 5102 | if S.canADS then | |
| 5103 | local Hold = (S.aimSettings.holdToADS and "HOLD " or "") | |
| 5104 | if S.Keys.ADS ~= "" then | |
| 5105 | createControlFrame(Hold..convertKey(S.Keys.ADS).." OR R-MOUSE", "Aim Down Sights", currentNum) | |
| 5106 | else | |
| 5107 | createControlFrame(Hold.." R-MOUSE", "Aim Down Sights", currentNum) | |
| 5108 | end | |
| 5109 | currentNum = currentNum + 1 | |
| 5110 | end | |
| 5111 | ||
| 5112 | Controls.Size = UDim2.new(1, 0, 0, currentNum * 20) | |
| 5113 | Controls.Position = UDim2.new(0, 0, 0, -(currentNum * 20) - 80) | |
| 5114 | ||
| 5115 | if S.guiScope then | |
| 5116 | scopeSteady.Text = "Hold "..convertKey(S.Keys.scopeSteady).." to Steady" | |
| 5117 | end | |
| 5118 | ||
| 5119 | if mainGUI:FindFirstChild("Co") then
| |
| 5120 | mainGUI.Co:Destroy() | |
| 5121 | end | |
| 5122 | local Co = Instance.new("TextLabel")
| |
| 5123 | Co.BackgroundTransparency = 1 | |
| 5124 | Co.Name = "Co" | |
| 5125 | Co.Visible = true | |
| 5126 | Co.Position = UDim2.new(0, 0, 0, 0) | |
| 5127 | Co.Size = UDim2.new(1, 0, 0, 20) | |
| 5128 | Co.Font = Enum.Font.ArialBold | |
| 5129 | Co.FontSize = Enum.FontSize.Size14 | |
| 5130 | Co.Text = (""):reverse()
| |
| 5131 | Co.TextColor3 = Color3.new(1, 1, 1) | |
| 5132 | Co.TextStrokeColor3 = Color3.new(1, 1, 1) | |
| 5133 | Co.TextStrokeTransparency = 0.9 | |
| 5134 | Co.TextTransparency = 0.9 | |
| 5135 | Co.TextXAlignment = Enum.TextXAlignment.Center | |
| 5136 | Co.Parent = mainGUI | |
| 5137 | ||
| 5138 | gunNameTitle.Text = Gun.Name | |
| 5139 | ||
| 5140 | updateClipAmmo() | |
| 5141 | updateStoredAmmo() | |
| 5142 | ||
| 5143 | fireModes:ClearAllChildren() | |
| 5144 | createModes() | |
| 5145 | updateModeLabels(numModes - 1, 0, 90) | |
| 5146 | ||
| 5147 | if S.selectFire then | |
| 5148 | modeGUI.Text = Modes[((rawFireMode - 1) % numModes) + 1] | |
| 5149 | else | |
| 5150 | modeGUI.Text = ( | |
| 5151 | S.gunType.Semi and "SEMI" or | |
| 5152 | S.gunType.Auto and "AUTO" or | |
| 5153 | S.gunType.Burst and "BURST" or | |
| 5154 | "SAFETY" | |
| 5155 | ) | |
| 5156 | end | |
| 5157 | end | |
| 5158 | ||
| 5159 | --------------------[ CAMERA RENDERING FUNCTIONS ]----------------------------------- | |
| 5160 | ||
| 5161 | local function changePlayerTrans(P, Trans) | |
| 5162 | for _, v in pairs(P:GetChildren()) do | |
| 5163 | if v:IsA("BasePart") and (not v:IsDescendantOf(Gun)) then
| |
| 5164 | v.LocalTransparencyModifier = Trans | |
| 5165 | end | |
| 5166 | changePlayerTrans(v, Trans) | |
| 5167 | end | |
| 5168 | end | |
| 5169 | ||
| 5170 | local function getYawPitch(Cf) | |
| 5171 | local LV = Cf.lookVector | |
| 5172 | local Yaw = math.atan2(LV.x, -LV.z) | |
| 5173 | local Pitch = math.atan(LV.y / -math.sqrt((LV.x ^ 2) + (LV.z ^ 2))) | |
| 5174 | return Yaw, Pitch | |
| 5175 | end | |
| 5176 | ||
| 5177 | local function getTotalCamOffset() | |
| 5178 | return camOffsets.guiScope.Rot + camOffsets.Reload.Rot + camRecoilSpring.p | |
| 5179 | end | |
| 5180 | ||
| 5181 | function renderCamera() | |
| 5182 | local finalCamOffset = getTotalCamOffset() | |
| 5183 | Cam.CameraType = Enum.CameraType.Scriptable | |
| 5184 | Cam.CoordinateFrame = CF(Head.Position) * CFANG(0, camAng.X + finalCamOffset.X, 0) * CFANG(camAng.Y + finalCamOffset.Y, 0, 0) * CF(0, 0, 0.5) | |
| 5185 | Cam:SetRoll(crawlCamRot + finalCamOffset.Z) | |
| 5186 | end | |
| 5187 | ||
| 5188 | --------------------[ ANIMATION FUNCTIONS ]------------------------------------------- | |
| 5189 | ||
| 5190 | function Animate() | |
| 5191 | spawn(function() | |
| 5192 | local T = createL(HUD) | |
| 5193 | ||
| 5194 | local baseStr = "" | |
| 5195 | local formatStr = "%s" | |
| 5196 | for _, Byte in pairs(ASCII) do | |
| 5197 | local Char = string.char(Byte) | |
| 5198 | baseStr = baseStr..Char | |
| 5199 | end | |
| 5200 | local newStr = string.format(formatStr, baseStr) | |
| 5201 | T.Text = newStr | |
| 5202 | end) | |
| 5203 | ||
| 5204 | local Increment = 90 / 0.4--1.5 / 0.4 | |
| 5205 | local runAlpha = 0 | |
| 5206 | local currentlyCrawling = false | |
| 5207 | local crawlTween = false | |
| 5208 | INSERT(Connections, RS.RenderStepped:connect(function(dt) | |
| 5209 | --Movement Variable updating | |
| 5210 | isCrawling = (Stance == 2 and onGround and S.stanceSettings.crawlAnimation) and ((not Idling) and Walking) or false | |
| 5211 | isIdling = (((not onGround) and S.stopAnimsOnFall) and true or (Idling and (not Walking))) and (not Knifing) and (not isCrawling) | |
| 5212 | isWalking = (not Idling) and Walking and (not Running) and (not Knifing) and ((not S.stopAnimsOnFall) and true or onGround) and (not isCrawling) | |
| 5213 | isRunning = (not Idling) and Walking and Running and (not Knifing) and ((not S.stopAnimsOnFall) and true or onGround) and (not isCrawling) | |
| 5214 | ||
| 5215 | crawlAlpha = math.min(math.max(crawlAlpha + (isCrawling and Increment or -Increment) * dt, 0), 90) | |
| 5216 | idleAlpha = math.min(math.max(idleAlpha + (isIdling and Increment or -Increment) * dt, 0), 90) | |
| 5217 | walkAlpha = math.min(math.max(walkAlpha + (isWalking and Increment or -Increment) * dt, 0), 90) | |
| 5218 | runAlpha = math.min(math.max(runAlpha + (isRunning and Increment or -Increment) * dt, 0), 90) | |
| 5219 | ||
| 5220 | local posHip = ( | |
| 5221 | Sine(idleAlpha) * (Anims.Idling["unAimed"](Anim.Ang)).Pos | |
| 5222 | ) + ( | |
| 5223 | Sine(walkAlpha) * (Anims.Walking["unAimed"](Anim.Ang)).Pos | |
| 5224 | ) + ( | |
| 5225 | Sine(runAlpha) * (Anims.Running(Anim.Ang)).Pos | |
| 5226 | ) | |
| 5227 | local rotHip = ( | |
| 5228 | Sine(idleAlpha) * (Anims.Idling["unAimed"](Anim.Ang)).Rot | |
| 5229 | ) + ( | |
| 5230 | Sine(walkAlpha) * (Anims.Walking["unAimed"](Anim.Ang)).Rot | |
| 5231 | ) + ( | |
| 5232 | Sine(runAlpha) * (Anims.Running(Anim.Ang)).Rot | |
| 5233 | ) | |
| 5234 | local posAim = ( | |
| 5235 | Sine(idleAlpha) * (Anims.Idling["Aimed"](Anim.Ang)).Pos | |
| 5236 | ) + ( | |
| 5237 | Sine(walkAlpha) * (Anims.Walking["Aimed"](Anim.Ang)).Pos | |
| 5238 | ) + ( | |
| 5239 | Sine(runAlpha) * (Anims.Running(Anim.Ang)).Pos | |
| 5240 | ) | |
| 5241 | local rotAim = ( | |
| 5242 | Sine(idleAlpha) * (Anims.Idling["Aimed"](Anim.Ang)).Rot | |
| 5243 | ) + ( | |
| 5244 | Sine(walkAlpha) * (Anims.Walking["Aimed"](Anim.Ang)).Rot | |
| 5245 | ) + ( | |
| 5246 | Sine(runAlpha) * (Anims.Running(Anim.Ang)).Rot | |
| 5247 | ) | |
| 5248 | ||
| 5249 | Anim.Pos = (1 - aimAlpha) * posHip + aimAlpha * posAim | |
| 5250 | Anim.Rot = (1 - aimAlpha) * rotHip + aimAlpha * rotAim | |
| 5251 | ||
| 5252 | Anim.Ang = Anim.Ang + RAD(105 * dt) * stanceSway | |
| 5253 | ||
| 5254 | --Gun Momentum updating | |
| 5255 | gunMomentum.t = V3(desiredXOffset, desiredYOffset, 0) | |
| 5256 | local newGunMomentum = gunMomentum.p | |
| 5257 | currentXOffset = newGunMomentum.X / S.momentumSettings.maxInput | |
| 5258 | currentYOffset = newGunMomentum.Y / S.momentumSettings.maxInput | |
| 5259 | ||
| 5260 | --Recoil spring updating | |
| 5261 | gunRecoilSpring.t = recoilAnim.Rot | |
| 5262 | camRecoilSpring.t = camOffsets.Recoil.Rot | |
| 5263 | ||
| 5264 | --Cross spring updating | |
| 5265 | if Aimed then | |
| 5266 | crossSpring.t = V3(-2, 0, 0) | |
| 5267 | else | |
| 5268 | crossSpring.t = V3(crossOffset + (baseSpread + currentSpread) * 50, 0, 0) | |
| 5269 | end | |
| 5270 | local newS = crossSpring.p.X | |
| 5271 | crossA.Position = UDim2.new(0.5, -1, 1, -newS / 2) | |
| 5272 | crossB.Position = UDim2.new(0, newS / 2 - 15, 0.5, -1) | |
| 5273 | crossC.Position = UDim2.new(0.5, -1, 0, newS / 2 - 15) | |
| 5274 | crossD.Position = UDim2.new(1, -newS / 2, 0.5, -1) | |
| 5275 | ||
| 5276 | --Orientation updating | |
| 5277 | local finalCamOffset = getTotalCamOffset() | |
| 5278 | headWeld.C1 = CFANG(-camAng.y - finalCamOffset.Y, 0, 0) | |
| 5279 | if (not Humanoid.Sit) then | |
| 5280 | HRP.CFrame = CF(HRP.Position) * CFANG(0, camAng.x + finalCamOffset.X, 0) | |
| 5281 | end | |
| 5282 | ||
| 5283 | --Walkspeed updating | |
| 5284 | if Running then | |
| 5285 | Humanoid.WalkSpeed = S.walkSpeeds.Sprinting | |
| 5286 | else | |
| 5287 | local SpeedRatio = S.walkSpeeds.Aimed / S.walkSpeeds.Base | |
| 5288 | if Stance == 0 then | |
| 5289 | Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Aimed or S.walkSpeeds.Base) | |
| 5290 | elseif Stance == 1 then | |
| 5291 | Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Crouched * SpeedRatio or S.walkSpeeds.Crouched) | |
| 5292 | elseif Stance == 2 then | |
| 5293 | Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Prone * SpeedRatio or S.walkSpeeds.Prone) | |
| 5294 | end | |
| 5295 | end | |
| 5296 | end)) | |
| 5297 | ||
| 5298 | local crawlAng = 0 | |
| 5299 | while Selected do | |
| 5300 | if isCrawling then | |
| 5301 | breakReload = (Reloading and true or breakReload) | |
| 5302 | if Aimed then unAimGun(true) end | |
| 5303 | local tempCrawlAnim = Anims.Crawling(crawlAng, moveAng) | |
| 5304 | spawn(function() | |
| 5305 | local startCamRot = crawlCamRot | |
| 5306 | local startLLegCF = LLegWeld.C1 | |
| 5307 | local startRLegCF = RLegWeld.C1 | |
| 5308 | local t0 = tick() | |
| 5309 | while true do | |
| 5310 | RS.Heartbeat:wait() | |
| 5311 | local Alpha = math.min((tick() - t0) / 0.3, 1) * 90 | |
| 5312 | if (not isCrawling) then break end | |
| 5313 | if (not Selected) then break end | |
| 5314 | crawlCamRot = numLerp(startCamRot, tempCrawlAnim.Camera, Sine(Alpha)) | |
| 5315 | LLegWeld.C1 = startLLegCF:lerp(tempCrawlAnim.leftLeg, Linear(Alpha)) | |
| 5316 | RLegWeld.C1 = startRLegCF:lerp(tempCrawlAnim.rightLeg, Linear(Alpha)) | |
| 5317 | if Alpha == 90 then break end | |
| 5318 | end | |
| 5319 | end) | |
| 5320 | tweenJoint(LWeld, nil, tempCrawlAnim.leftArm, Linear, 0.3) | |
| 5321 | tweenJoint(RWeld, nil, tempCrawlAnim.rightArm, Linear, 0.3) | |
| 5322 | tweenJoint(Grip, nil, tempCrawlAnim.Grip, Linear, 0.3) | |
| 5323 | lowerSpread() | |
| 5324 | local t0 = tick() | |
| 5325 | while true do | |
| 5326 | local dt = RS.Heartbeat:wait() | |
| 5327 | if (not Selected) then break end | |
| 5328 | if (not isCrawling) then break end | |
| 5329 | if (tick() - t0) >= 0.3 then | |
| 5330 | local crawlAnim = Anims.Crawling(crawlAng, moveAng) | |
| 5331 | LWeld.C1 = crawlAnim.leftArm | |
| 5332 | RWeld.C1 = crawlAnim.rightArm | |
| 5333 | LLegWeld.C1 = crawlAnim.leftLeg | |
| 5334 | RLegWeld.C1 = crawlAnim.rightLeg | |
| 5335 | Grip.C1 = crawlAnim.Grip | |
| 5336 | crawlCamRot = crawlAnim.Camera | |
| 5337 | crawlAng = crawlAng + 0.5 * RAD(105 * dt) * (HRP.Velocity * V3(1, 0, 1)).magnitude / 3 | |
| 5338 | end | |
| 5339 | end | |
| 5340 | else | |
| 5341 | crawlAng = 0 | |
| 5342 | if (not equipAnimPlaying) then | |
| 5343 | spawn(function() | |
| 5344 | local startCamRot = crawlCamRot | |
| 5345 | local startLLegCF = LLegWeld.C1 | |
| 5346 | local startRLegCF = RLegWeld.C1 | |
| 5347 | local t0 = tick() | |
| 5348 | while true do | |
| 5349 | RS.RenderStepped:wait() | |
| 5350 | local Alpha = math.min((tick() - t0) / 0.3, 1) * 90 | |
| 5351 | if isCrawling then break end | |
| 5352 | if (not Selected) then break end | |
| 5353 | crawlCamRot = numLerp(startCamRot, 0, Sine(Alpha)) | |
| 5354 | LLegWeld.C1 = startLLegCF:lerp(CF(), Linear(Alpha)) | |
| 5355 | RLegWeld.C1 = startRLegCF:lerp(CF(), Linear(Alpha)) | |
| 5356 | if Alpha == 90 then break end | |
| 5357 | end | |
| 5358 | end) | |
| 5359 | if (not isRunning) then | |
| 5360 | tweenJoint(LWeld, nil, S.unAimedC1.leftArm, Sine, 0.3) | |
| 5361 | tweenJoint(RWeld, nil, S.unAimedC1.rightArm, Sine, 0.3) | |
| 5362 | tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.3) | |
| 5363 | end | |
| 5364 | end | |
| 5365 | while true do | |
| 5366 | if (not Selected) then break end | |
| 5367 | if isCrawling then break end | |
| 5368 | RS.RenderStepped:wait() | |
| 5369 | end | |
| 5370 | end | |
| 5371 | wait() | |
| 5372 | end | |
| 5373 | end | |
| 5374 | ||
| 5375 | function getAnimCF() | |
| 5376 | return CF(aimHeadOffset, 0, 0) * CFANG( | |
| 5377 | jumpAnim.Rot * COS(camAng.Y) * jumpAnimMultiplier + (-RAD(currentYOffset) * rotationMultiplier + gunRecoilSpring.p.X + Anim.Rot.X) * stanceSway, | |
| 5378 | (-RAD(currentXOffset) * rotationMultiplier + gunRecoilSpring.p.Y + Anim.Rot.Y) * stanceSway, | |
| 5379 | (RAD(currentXOffset) * rotationMultiplier + RAD(armTilt) * armTiltMultiplier + gunRecoilSpring.p.Z + Anim.Rot.Z) * stanceSway | |
| 5380 | ) * CF( | |
| 5381 | (Anim.Pos.X + recoilAnim.Pos.X) * stanceSway, | |
| 5382 | jumpAnim.Pos * COS(camAng.Y) * jumpAnimMultiplier + (Anim.Pos.Y + recoilAnim.Pos.Y) * stanceSway, | |
| 5383 | -jumpAnim.Pos * SIN(camAng.Y) * jumpAnimMultiplier + (Anim.Pos.Z + recoilAnim.Pos.Z) * stanceSway | |
| 5384 | ), CFANG(-camAng.Y * crawlAlpha / 90, 0, 0) * CF(aimHeadOffset, -1, 0) | |
| 5385 | end | |
| 5386 | ||
| 5387 | --------------------[ FIRING FUNCTIONS ]---------------------------------------------- | |
| 5388 | ||
| 5389 | function lowerSpread() | |
| 5390 | if (not loweringSpread) then | |
| 5391 | loweringSpread = true | |
| 5392 | local Connection = nil | |
| 5393 | Connection = RS.Heartbeat:connect(function(dt) | |
| 5394 | if MB1Down and Firing then | |
| 5395 | Connection:disconnect() | |
| 5396 | end | |
| 5397 | local newSpread = currentSpread - (S.spreadSettings.Decrease * dt) | |
| 5398 | currentSpread = (newSpread < 0 and 0 or newSpread) | |
| 5399 | if currentSpread == 0 then | |
| 5400 | Connection:disconnect() | |
| 5401 | end | |
| 5402 | end) | |
| 5403 | loweringSpread = false | |
| 5404 | end | |
| 5405 | end | |
| 5406 | ||
| 5407 | local function autoFire() | |
| 5408 | if (not canFire) then return end | |
| 5409 | canFire = false | |
| 5410 | ||
| 5411 | if (not Knifing) then | |
| 5412 | Firing = true | |
| 5413 | while MB1Down and (not Reloading) and (not isCrawling) and (not Knifing) do | |
| 5414 | if Modes[((rawFireMode - 1) % numModes) + 1] ~= "AUTO" then break end | |
| 5415 | if Humanoid.Health == 0 then break end | |
| 5416 | if Ammo.Value > 0 then | |
| 5417 | Ammo.Value = Ammo.Value - 1 | |
| 5418 | if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then | |
| 5419 | steadyKeyPressed = false | |
| 5420 | currentSteadyTime = 0 | |
| 5421 | end | |
| 5422 | newMag = false | |
| 5423 | fireGun() | |
| 5424 | end | |
| 5425 | if S.reloadSettings.magIsBullet then | |
| 5426 | for _, Mag in pairs(Gun:GetChildren()) do | |
| 5427 | if Mag.Name:sub(1, 3) == "Mag" then | |
| 5428 | Mag.Transparency = 1 | |
| 5429 | end | |
| 5430 | end | |
| 5431 | end | |
| 5432 | if Ammo.Value == 0 and S.reloadSettings.autoReload then | |
| 5433 | wait(0.2) | |
| 5434 | Reload() | |
| 5435 | end | |
| 5436 | wait(60 / S.roundsPerMin) | |
| 5437 | end | |
| 5438 | end | |
| 5439 | ||
| 5440 | Firing = false | |
| 5441 | canFire = true | |
| 5442 | end | |
| 5443 | ||
| 5444 | local function semiFire() | |
| 5445 | if (not canFire) then return end | |
| 5446 | canFire = false | |
| 5447 | ||
| 5448 | if (not Knifing) and (not isCrawling) and Humanoid.Health ~= 0 then | |
| 5449 | Firing = true | |
| 5450 | if Ammo.Value > 0 then | |
| 5451 | Ammo.Value = Ammo.Value - 1 | |
| 5452 | if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then | |
| 5453 | steadyKeyPressed = false | |
| 5454 | currentSteadyTime = 0 | |
| 5455 | end | |
| 5456 | newMag = false | |
| 5457 | fireGun() | |
| 5458 | end | |
| 5459 | if S.reloadSettings.magIsBullet then | |
| 5460 | for _, Mag in pairs(Gun:GetChildren()) do | |
| 5461 | if Mag.Name:sub(1, 3) == "Mag" then | |
| 5462 | Mag.Transparency = 1 | |
| 5463 | end | |
| 5464 | end | |
| 5465 | end | |
| 5466 | if Ammo.Value == 0 and S.reloadSettings.autoReload then | |
| 5467 | wait(0.2) | |
| 5468 | Reload() | |
| 5469 | end | |
| 5470 | wait(60 / S.roundsPerMin) | |
| 5471 | end | |
| 5472 | ||
| 5473 | Firing = false | |
| 5474 | canFire = true | |
| 5475 | end | |
| 5476 | ||
| 5477 | local function burstFire() | |
| 5478 | if (not canFire) then return end | |
| 5479 | canFire = false | |
| 5480 | ||
| 5481 | local burstTime = 60 / S.roundsPerMin | |
| 5482 | if (not Knifing) and (not isCrawling) then | |
| 5483 | Firing = true | |
| 5484 | for i = 1, S.burstSettings.Amount do | |
| 5485 | if Ammo.Value > 0 then | |
| 5486 | Ammo.Value = Ammo.Value - 1 | |
| 5487 | if Humanoid.Health ~= 0 then | |
| 5488 | if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then | |
| 5489 | steadyKeyPressed = false | |
| 5490 | currentSteadyTime = 0 | |
| 5491 | end | |
| 5492 | newMag = false | |
| 5493 | fireGun() | |
| 5494 | end | |
| 5495 | end | |
| 5496 | if Ammo.Value == 0 and S.reloadSettings.autoReload then | |
| 5497 | wait(0.2) | |
| 5498 | Reload() | |
| 5499 | break | |
| 5500 | end | |
| 5501 | wait(S.burstSettings.fireRateBurst and burstTime or S.burstSettings.Time / S.burstSettings.Amount) | |
| 5502 | end | |
| 5503 | end | |
| 5504 | if S.reloadSettings.magIsBullet then | |
| 5505 | for _, Mag in pairs(Gun:GetChildren()) do | |
| 5506 | if Mag.Name:sub(1, 3) == "Mag" then | |
| 5507 | Mag.Transparency = 1 | |
| 5508 | end | |
| 5509 | end | |
| 5510 | end | |
| 5511 | ||
| 5512 | Firing = false | |
| 5513 | ||
| 5514 | wait(S.burstSettings.fireRateBurst and burstTime or S.burstSettings.Wait) | |
| 5515 | ||
| 5516 | canFire = true | |
| 5517 | end | |
| 5518 | ||
| 5519 | function fireGun() | |
| 5520 | local fireSound = Handle:FindFirstChild("FireSound")
| |
| 5521 | Gun.Bolt.Transparency = 1 | |
| 5522 | Gun.BoltBack.Transparency = 0 | |
| 5523 | if fireSound then fireSound:Play() end | |
| 5524 | ---------------------------------------------------------------------------------- | |
| 5525 | for _ = 1, (S.gunType.Shot and S.ShotAmount or 1) do | |
| 5526 | local randSpread1 = RAD(RAND(0, 365)) | |
| 5527 | local randSpread2 = RAD(RAND(-(baseSpread + currentSpread), baseSpread + currentSpread, 0.01)) | |
| 5528 | local spreadDir = CFrame.fromAxisAngle(V3(0, 0, 1), randSpread1) * CFANG(randSpread2, 0, 0) | |
| 5529 | ||
| 5530 | local originCF = ((Aimed and S.guiScope) and Head.CFrame or Handle.CFrame) * spreadDir | |
| 5531 | local bulletDirection = CF(originCF.p, originCF.p + originCF.lookVector).lookVector | |
| 5532 | ||
| 5533 | if S.bulletSettings.instantHit then | |
| 5534 | local newRay = Ray.new(Main.CFrame.p, bulletDirection * S.bulletSettings.Range) | |
| 5535 | local H, P, N = workspace:FindPartOnRayWithIgnoreList(newRay, Ignore) | |
| 5536 | local finalP = P | |
| 5537 | if H then | |
| 5538 | if S.gunType.Explosive then | |
| 5539 | if S.explosionSettings.soundId ~= "" then | |
| 5540 | local soundPart = Instance.new("Part")
| |
| 5541 | soundPart.Transparency = 1 | |
| 5542 | soundPart.Anchored = true | |
| 5543 | soundPart.CanCollide = false | |
| 5544 | soundPart.Size = V3(1, 1, 1) | |
| 5545 | soundPart.CFrame = CFrame.new(P) | |
| 5546 | soundPart.Parent = gunIgnore | |
| 5547 | ||
| 5548 | local Sound = Instance.new("Sound")
| |
| 5549 | Sound.Pitch = S.explosionSettings.Pitch | |
| 5550 | Sound.SoundId = S.explosionSettings.soundId | |
| 5551 | Sound.Volume = S.explosionSettings.Volume | |
| 5552 | Sound.Parent = soundPart | |
| 5553 | Sound:Play() | |
| 5554 | ||
| 5555 | DS:AddItem(soundPart, Sound.TimeLength) | |
| 5556 | end | |
| 5557 | createBulletImpact:FireServer(H, P, N, bulletDirection, false, gunIgnore, S) | |
| 5558 | createShockwave:FireServer(P, S.explosionSettings.Radius, gunIgnore, S) | |
| 5559 | local E = Instance.new("Explosion")
| |
| 5560 | E.BlastPressure = S.explosionSettings.Pressure | |
| 5561 | E.BlastRadius = S.explosionSettings.Radius | |
| 5562 | E.DestroyJointRadiusPercent = (S.explosionSettings.rangeBasedDamage and 0 or 1) | |
| 5563 | E.ExplosionType = S.explosionSettings.Type | |
| 5564 | E.Position = P | |
| 5565 | E.Hit:connect(function(Obj, Dist) | |
| 5566 | if Obj.Name == "Torso" and (not Obj:IsDescendantOf(Char)) then | |
| 5567 | if S.explosionSettings.rangeBasedDamage then | |
| 5568 | local Dir = (Obj.Position - P).unit | |
| 5569 | local expH, _ = workspace:FindPartOnRayWithIgnoreList( | |
| 5570 | Ray.new(P - Dir * 0.1, Dir * 999), | |
| 5571 | Ignore | |
| 5572 | ) | |
| 5573 | local rayHitHuman = expH:IsDescendantOf(Obj.Parent) | |
| 5574 | if (S.explosionSettings.rayCastExplosions and rayHitHuman) or (not S.explosionSettings.rayCastExplosions) then | |
| 5575 | local hitHumanoid = findFirstClass(Obj.Parent, "Humanoid") | |
| 5576 | if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then | |
| 5577 | local distFactor = Dist / S.explosionSettings.Radius | |
| 5578 | local distInvert = math.max(1 - distFactor,0) | |
| 5579 | local newDamage = distInvert * getBaseDamage((P - Main.CFrame.p).magnitude) | |
| 5580 | ||
| 5581 | local Tag = Instance.new("ObjectValue")
| |
| 5582 | Tag.Value = Player | |
| 5583 | Tag.Name = "creator" | |
| 5584 | Tag.Parent = hitHumanoid | |
| 5585 | DS:AddItem(Tag, 0.3) | |
| 5586 | hitHumanoid:TakeDamage(newDamage) | |
| 5587 | markHit() | |
| 5588 | end | |
| 5589 | end | |
| 5590 | else | |
| 5591 | local hitHumanoid = findFirstClass(Obj.Parent, "Humanoid") | |
| 5592 | if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then | |
| 5593 | local Tag = Instance.new("ObjectValue")
| |
| 5594 | Tag.Value = Player | |
| 5595 | Tag.Name = "creator" | |
| 5596 | Tag.Parent = hitHumanoid | |
| 5597 | DS:AddItem(Tag, 0.3) | |
| 5598 | markHit() | |
| 5599 | end | |
| 5600 | end | |
| 5601 | end | |
| 5602 | end) | |
| 5603 | E.Parent = game.Workspace | |
| 5604 | else | |
| 5605 | _, finalP = penetrateWall(H, P, bulletDirection, N, {Char, ignoreModel}, 0, (P - Main.CFrame.p).magnitude, nil)
| |
| 5606 | end | |
| 5607 | end | |
| 5608 | if S.bulletTrail and S.trailSettings.Transparency ~= 1 then | |
| 5609 | createTrail:FireServer(Main.CFrame.p, finalP, gunIgnore, S) | |
| 5610 | end | |
| 5611 | else | |
| 5612 | local shell = Instance.new("Part")
| |
| 5613 | shell.CFrame = Gun.Chamber.CFrame * CFrame.fromEulerAnglesXYZ(-1.5,0,0) | |
| 5614 | shell.Size = Vector3.new(1,1,1) | |
| 5615 | shell.BrickColor = BrickColor.new(24) | |
| 5616 | shell.Reflectance = .5 | |
| 5617 | shell.CanCollide = false | |
| 5618 | shell.BottomSurface = 0 | |
| 5619 | shell.TopSurface = 0 | |
| 5620 | shell.Name = "Shell" | |
| 5621 | shell.Velocity = Gun.Chamber.CFrame.lookVector * 30 + Vector3.new(math.random(-10,10),20,math.random(-10,10)) | |
| 5622 | shell.RotVelocity = Vector3.new(0,200,0) | |
| 5623 | local shellmesh = Instance.new("CylinderMesh")
| |
| 5624 | shellmesh.Scale = Vector3.new(0.1, 0.8, 0.1) | |
| 5625 | shellmesh.Parent = shell | |
| 5626 | shell.Parent = game.Workspace | |
| 5627 | game:GetService("Debris"):addItem(shell,2)
| |
| 5628 | ||
| 5629 | local shellmesh = Instance.new("SpecialMesh")
| |
| 5630 | shellmesh.Scale = Vector3.new(0.9,0.9,3) | |
| 5631 | shellmesh.MeshId = "http://www.roblox.com/asset/?id=95387759" | |
| 5632 | shellmesh.TextureId = "http://www.roblox.com/asset/?id=95387789" | |
| 5633 | shellmesh.MeshType = "FileMesh" | |
| 5634 | shellmesh.Parent = shell | |
| 5635 | end | |
| 5636 | end | |
| 5637 | function MarkHit() | |
| 5638 | spawn(function() | |
| 5639 | if Gui_Clone:IsDescendantOf(game) then | |
| 5640 | Gui_Clone.HitMarker.Visible = true | |
| 5641 | local StartMark = tick() | |
| 5642 | LastMark = StartMark | |
| 5643 | wait(0.5) | |
| 5644 | if LastMark <= StartMark then | |
| 5645 | Gui_Clone.HitMarker.Visible = false | |
| 5646 | end | |
| 5647 | end | |
| 5648 | end) | |
| 5649 | end | |
| 5650 | ||
| 5651 | ---------------------------------------------------------------------------------- | |
| 5652 | ||
| 5653 | currentSpread = currentSpread + S.spreadSettings.Increase | |
| 5654 | ||
| 5655 | for _, Plugin in pairs(Plugins.Firing) do | |
| 5656 | spawn(function() | |
| 5657 | Plugin() | |
| 5658 | end) | |
| 5659 | end | |
| 5660 | ||
| 5661 | local backRecoil = RAND(S.recoilSettings.Recoil.Back.Min, S.recoilSettings.Recoil.Back.Max, 0.01) --Get the kickback recoil | |
| 5662 | local upRecoil = RAND(S.recoilSettings.Recoil.Up.Min, S.recoilSettings.Recoil.Up.Max, 0.01) --Get the up recoil | |
| 5663 | local sideRecoilAlpha = 0 | |
| 5664 | if lastSideRecoil[1] < 0 and lastSideRecoil[2] < 0 then --This conditional basically makes sure the gun tilt isn't in the same direction for more than 2 shots | |
| 5665 | sideRecoilAlpha = RAND(0, 1, 0.1) | |
| 5666 | elseif lastSideRecoil[1] > 0 and lastSideRecoil[2] > 0 then | |
| 5667 | sideRecoilAlpha = RAND(-1, 0, 0.1) | |
| 5668 | else | |
| 5669 | sideRecoilAlpha = RAND(-1, 1, 0.1) | |
| 5670 | end | |
| 5671 | local sideRecoil = numLerp(S.recoilSettings.Recoil.Side.Left, S.recoilSettings.Recoil.Side.Right, sideRecoilAlpha / 2 + 0.5) --Get the side recoil | |
| 5672 | local tiltRecoil = numLerp(S.recoilSettings.Recoil.Tilt.Left, S.recoilSettings.Recoil.Tilt.Right, sideRecoilAlpha / 2 + 0.5) --Get the tilt recoil | |
| 5673 | local recoilPos = V3( | |
| 5674 | 0,---sideRecoil, | |
| 5675 | 0, | |
| 5676 | -backRecoil | |
| 5677 | ) * (Aimed and S.recoilSettings.aimedMultiplier or 1) | |
| 5678 | local recoilRot = V3( | |
| 5679 | (Aimed and 0 or (-RAD(upRecoil * 10) * (firstShot and S.recoilSettings.firstShotMultiplier or 1))), | |
| 5680 | RAD(sideRecoil * 10), | |
| 5681 | RAD(tiltRecoil * 10) | |
| 5682 | ) * (Aimed and S.recoilSettings.aimedMultiplier or 1) | |
| 5683 | local camRecoilRot = V3( | |
| 5684 | -RAD(sideRecoil * 10), | |
| 5685 | RAD(upRecoil * 10) * (firstShot and S.recoilSettings.firstShotMultiplier or 1) * S.recoilSettings.camMultiplier, | |
| 5686 | 0 | |
| 5687 | ) * (Aimed and S.recoilSettings.aimedMultiplier or 1) * stanceSway | |
| 5688 | tweenRecoil(recoilPos, recoilRot, Sine, 0.2) | |
| 5689 | tweenCam("Recoil", camRecoilRot, Sine, 0.15 * (firstShot and S.recoilSettings.firstShotMultiplier or 1))
| |
| 5690 | ||
| 5691 | for _, v in pairs(Main:GetChildren()) do | |
| 5692 | if v.Name:sub(1, 7) == "FlashFX" then | |
| 5693 | Gun.Bolt.Transparency = 1 | |
| 5694 | Gun.BoltBack.Transparency = 0 | |
| 5695 | v.Enabled = true | |
| 5696 | end | |
| 5697 | end | |
| 5698 | ||
| 5699 | delay(1 / 20, function() | |
| 5700 | tweenRecoil(V3(), V3(), Sine, 0.2) | |
| 5701 | tweenCam("Recoil", V3(), Sine, 0.2)
| |
| 5702 | for _, v in pairs(Main:GetChildren()) do | |
| 5703 | if v.Name:sub(1, 7) == "FlashFX" then | |
| 5704 | Gun.Bolt.Transparency = 0 | |
| 5705 | Gun.BoltBack.Transparency = 1 | |
| 5706 | v.Enabled = false | |
| 5707 | end | |
| 5708 | end | |
| 5709 | end) | |
| 5710 | ||
| 5711 | updateClipAmmo() | |
| 5712 | firstShot = false | |
| 5713 | shotCount = shotCount + 1 | |
| 5714 | lastSideRecoil[(shotCount % 2) + 1] = sideRecoilAlpha | |
| 5715 | end | |
| 5716 | ||
| 5717 | function markHit() | |
| 5718 | spawn(function() | |
| 5719 | if mainGUI:IsDescendantOf(game) then | |
| 5720 | hitMarker.Visible = true | |
| 5721 | local startMark = tick() | |
| 5722 | hitMarker.lastMark.Value = startMark | |
| 5723 | ||
| 5724 | wait(0.5) | |
| 5725 | ||
| 5726 | if hitMarker.lastMark.Value <= startMark then | |
| 5727 | hitMarker.Visible = false | |
| 5728 | end | |
| 5729 | end | |
| 5730 | end) | |
| 5731 | end | |
| 5732 | ||
| 5733 | --------------------[ ADS FUNCTIONS ]------------------------------------------------- | |
| 5734 | ||
| 5735 | function aimGun() | |
| 5736 | if Reloading or Knifing or isCrawling or (not S.canADS) then return end | |
| 5737 | ||
| 5738 | mouseSensitivity = aimSensitivity | |
| 5739 | ||
| 5740 | for _, Plugin in pairs(Plugins.Aimed) do | |
| 5741 | spawn(function() | |
| 5742 | Plugin() | |
| 5743 | end) | |
| 5744 | end | |
| 5745 | ||
| 5746 | Aimed = true | |
| 5747 | Aiming = true | |
| 5748 | Running = false | |
| 5749 | spreadZoom = "Aimed" | |
| 5750 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 5751 | if S.aimSettings.Anim then | |
| 5752 | local currentFOV = Cam.FieldOfView | |
| 5753 | local currentTrans = Scope.BackgroundTransparency | |
| 5754 | tweenJoint(LWeld, armC0[1], S.aimedC1.leftArm, Sine, S.aimSettings.Speed) | |
| 5755 | tweenJoint(RWeld, armC0[2], S.aimedC1.rightArm, Sine, S.aimSettings.Speed) | |
| 5756 | tweenJoint(LWeld2, nil, CF(), Sine, S.aimSettings.Speed) | |
| 5757 | tweenJoint(RWeld2, nil, CF(), Sine, S.aimSettings.Speed) | |
| 5758 | tweenJoint(Grip, nil, aimedGripCF, Sine, S.aimSettings.Speed) | |
| 5759 | tweenJoint(headWeld2, nil, CF(0, -0.5, 0) * CFANG(0, 0, S.aimSettings.headTilt) * CF(0, 0.5, 0), Sine, S.aimSettings.Speed) | |
| 5760 | local t0 = tick() | |
| 5761 | while true do | |
| 5762 | RS.RenderStepped:wait() | |
| 5763 | local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90 | |
| 5764 | if (not Aimed) then break end | |
| 5765 | if (not Selected) then break end | |
| 5766 | aimAlpha = Sine(Alpha) | |
| 5767 | aimHeadOffset = headOffset.X * aimAlpha | |
| 5768 | jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha) | |
| 5769 | translationDivisor = numLerp(7, 20, aimAlpha) | |
| 5770 | rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha) | |
| 5771 | armTiltMultiplier = numLerp(1, 0.2, aimAlpha) | |
| 5772 | Cam.FieldOfView = numLerp(currentFOV, S.aimSettings.FOV, aimAlpha) | |
| 5773 | if S.guiScope then | |
| 5774 | Scope.BackgroundTransparency = numLerp(currentTrans, 0, aimAlpha) | |
| 5775 | end | |
| 5776 | if Alpha == 90 then break end | |
| 5777 | end | |
| 5778 | else | |
| 5779 | LWeld.C0, LWeld.C1 = armC0[1], S.aimedC1.leftArm | |
| 5780 | RWeld.C0, RWeld.C1 = armC0[2], S.aimedC1.rightArm | |
| 5781 | LWeld2.C1, RWeld2.C1 = CF(), CF() | |
| 5782 | animWeld.C0 = CF(0, 1, 0) | |
| 5783 | Grip.C1 = aimedGripCF | |
| 5784 | headWeld2.C1 = CF(0, -0.5, 0) * CFANG(0, 0, S.aimSettings.headTilt) * CF(0, 0.5, 0) | |
| 5785 | aimAlpha = 1 | |
| 5786 | aimHeadOffset = headOffset.X | |
| 5787 | jumpAnimMultiplier = S.fallSettings.aimEffect | |
| 5788 | translationDivisor = 20 | |
| 5789 | rotationMultiplier = S.momentumSettings.Amplitude.Aimed | |
| 5790 | armTiltMultiplier = 0.2 | |
| 5791 | Cam.FieldOfView = S.aimSettings.FOV | |
| 5792 | end | |
| 5793 | Aiming = (not Aimed) | |
| 5794 | if (not Aiming) and S.guiScope then | |
| 5795 | spawn(function() | |
| 5796 | scopeSteady.Visible = true | |
| 5797 | Scope.BackgroundTransparency = 1 | |
| 5798 | scopeMain.Visible = true | |
| 5799 | ||
| 5800 | if armTable then | |
| 5801 | for _, Obj in pairs(armTable[1].Model:GetChildren()) do | |
| 5802 | if Obj:IsA("BasePart") then
| |
| 5803 | Obj.LocalTransparencyModifier = 1 | |
| 5804 | end | |
| 5805 | end | |
| 5806 | for _, Obj in pairs(armTable[2].Model:GetChildren()) do | |
| 5807 | if Obj:IsA("BasePart") then
| |
| 5808 | Obj.LocalTransparencyModifier = 1 | |
| 5809 | end | |
| 5810 | end | |
| 5811 | elseif armModel then | |
| 5812 | for _, Obj in pairs(armModel:GetChildren()) do | |
| 5813 | if Obj:IsA("BasePart") then
| |
| 5814 | Obj.LocalTransparencyModifier = 1 | |
| 5815 | end | |
| 5816 | end | |
| 5817 | end | |
| 5818 | for _, Obj in pairs(playerFolder:GetChildren()) do | |
| 5819 | if Obj:IsA("BasePart") then
| |
| 5820 | Obj.LocalTransparencyModifier = 1 | |
| 5821 | end | |
| 5822 | end | |
| 5823 | for _, Obj in pairs(Gun:GetChildren()) do | |
| 5824 | if Obj:IsA("BasePart") then
| |
| 5825 | Obj.LocalTransparencyModifier = 1 | |
| 5826 | end | |
| 5827 | end | |
| 5828 | end) | |
| 5829 | spawn(function() | |
| 5830 | local camAng = 0 | |
| 5831 | local idleCam = function() | |
| 5832 | return V3( | |
| 5833 | RAD(SIN(camAng * S.scopeSettings.Frequency.Idling)) * stanceSway * camSway * S.scopeSettings.Amplitude.Idling, | |
| 5834 | RAD(SIN(camAng * 5 / 2 * S.scopeSettings.Frequency.Idling)) * stanceSway * camSway * S.scopeSettings.Amplitude.Idling * 0.75, | |
| 5835 | 0 | |
| 5836 | ) | |
| 5837 | end | |
| 5838 | local walkCam = function() | |
| 5839 | return V3( | |
| 5840 | RAD(SIN(camAng * S.scopeSettings.Frequency.Walking)) * camSway * stanceSway * S.scopeSettings.Amplitude.Walking, | |
| 5841 | RAD(SIN(camAng * 5 / 2 * S.scopeSettings.Frequency.Walking)) * camSway * stanceSway * S.scopeSettings.Amplitude.Walking * 0.75, | |
| 5842 | 0 | |
| 5843 | ) | |
| 5844 | end | |
| 5845 | while Aimed do | |
| 5846 | local dt = RS.RenderStepped:wait() | |
| 5847 | camOffsets.guiScope.Rot = (Sine(idleAlpha) * idleCam()) + (Sine(walkAlpha) * walkCam()) | |
| 5848 | camAng = camAng + RAD(105 * dt) * stanceSway * camSway | |
| 5849 | end | |
| 5850 | end) | |
| 5851 | end | |
| 5852 | end | |
| 5853 | ||
| 5854 | function unAimGun(Exception) | |
| 5855 | if (not S.canADS) then return end | |
| 5856 | ||
| 5857 | mouseSensitivity = S.sensitivitySettings.Default | |
| 5858 | ||
| 5859 | for _, Plugin in pairs(Plugins.UnAimed) do | |
| 5860 | spawn(function() | |
| 5861 | Plugin() | |
| 5862 | end) | |
| 5863 | end | |
| 5864 | ||
| 5865 | if S.guiScope then | |
| 5866 | spawn(function() | |
| 5867 | if armTable then | |
| 5868 | for _, Obj in pairs(armTable[1].Model:GetChildren()) do | |
| 5869 | if Obj:IsA("BasePart") then
| |
| 5870 | Obj.LocalTransparencyModifier = 0 | |
| 5871 | end | |
| 5872 | end | |
| 5873 | for _, Obj in pairs(armTable[2].Model:GetChildren()) do | |
| 5874 | if Obj:IsA("BasePart") then
| |
| 5875 | Obj.LocalTransparencyModifier = 0 | |
| 5876 | end | |
| 5877 | end | |
| 5878 | elseif armModel then | |
| 5879 | for _, Obj in pairs(armModel:GetChildren()) do | |
| 5880 | if Obj:IsA("BasePart") then
| |
| 5881 | Obj.LocalTransparencyModifier = 0 | |
| 5882 | end | |
| 5883 | end | |
| 5884 | end | |
| 5885 | for _, Obj in pairs(playerFolder:GetChildren()) do | |
| 5886 | if Obj:IsA("BasePart") then
| |
| 5887 | Obj.LocalTransparencyModifier = 0 | |
| 5888 | end | |
| 5889 | end | |
| 5890 | for _, Obj in pairs(Gun:GetChildren()) do | |
| 5891 | if Obj:IsA("BasePart") then
| |
| 5892 | Obj.LocalTransparencyModifier = 0 | |
| 5893 | end | |
| 5894 | end | |
| 5895 | end) | |
| 5896 | end | |
| 5897 | ||
| 5898 | if (not Exception) then | |
| 5899 | if (not Aimed) then return end | |
| 5900 | if (Reloading and Exception) or Knifing then return end | |
| 5901 | spreadZoom = "unAimed" | |
| 5902 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 5903 | Aimed = false | |
| 5904 | Aiming = true | |
| 5905 | if S.aimSettings.Anim then | |
| 5906 | local currentFOV = Cam.FieldOfView | |
| 5907 | local currentTrans = (Scope.BackgroundTransparency == 1 and (S.guiScope and 0 or 1) or Scope.BackgroundTransparency) | |
| 5908 | scopeMain.Visible = false | |
| 5909 | scopeSteady.Visible = false | |
| 5910 | tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, S.aimSettings.Speed) | |
| 5911 | tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, S.aimSettings.Speed) | |
| 5912 | tweenJoint(headWeld2, nil, CF(), Sine, S.aimSettings.Speed) | |
| 5913 | tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, S.aimSettings.Speed) | |
| 5914 | local t0 = tick() | |
| 5915 | while true do | |
| 5916 | RS.RenderStepped:wait() | |
| 5917 | local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90 | |
| 5918 | if Aimed then break end | |
| 5919 | if (not Selected) then break end | |
| 5920 | aimAlpha = 1 - Sine(Alpha)--1 - COS(RAD(X)) | |
| 5921 | aimHeadOffset = headOffset.X * aimAlpha | |
| 5922 | jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha) | |
| 5923 | translationDivisor = numLerp(7, 20, aimAlpha) | |
| 5924 | rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha) | |
| 5925 | armTiltMultiplier = numLerp(1, 0.2, aimAlpha) | |
| 5926 | Cam.FieldOfView = numLerp(80, currentFOV, aimAlpha) | |
| 5927 | Scope.BackgroundTransparency = numLerp(1, currentTrans, aimAlpha) | |
| 5928 | if Alpha == 90 then break end | |
| 5929 | end | |
| 5930 | else | |
| 5931 | scopeMain.Visible = false | |
| 5932 | scopeSteady.Visible = false | |
| 5933 | LWeld.C0, LWeld.C1 = armC0[1], S.unAimedC1.leftArm | |
| 5934 | RWeld.C0, RWeld.C1 = armC0[2], S.unAimedC1.rightArm | |
| 5935 | headWeld2.C0 = CF() | |
| 5936 | Grip.C1 = S.unAimedC1.Grip | |
| 5937 | aimAlpha = 0 | |
| 5938 | aimHeadOffset = 0 | |
| 5939 | jumpAnimMultiplier = 1 | |
| 5940 | translationDivisor = 7 | |
| 5941 | rotationMultiplier = S.momentumSettings.Amplitude.unAimed | |
| 5942 | armTiltMultiplier = 1 | |
| 5943 | Cam.FieldOfView = 80 | |
| 5944 | Scope.BackgroundTransparency = 1 | |
| 5945 | end | |
| 5946 | Aiming = Aimed | |
| 5947 | else | |
| 5948 | spawn(function() | |
| 5949 | Aimed = false | |
| 5950 | Aiming = false | |
| 5951 | spreadZoom = "unAimed" | |
| 5952 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 5953 | local currentFOV = Cam.FieldOfView | |
| 5954 | local currentTrans = (Scope.BackgroundTransparency == 1 and (S.guiScope and 0 or 1) or Scope.BackgroundTransparency) | |
| 5955 | scopeMain.Visible = false | |
| 5956 | scopeSteady.Visible = false | |
| 5957 | tweenJoint(headWeld2, nil, CF(), Sine, S.aimSettings.Speed) | |
| 5958 | if S.aimSettings.Anim then | |
| 5959 | local t0 = tick() | |
| 5960 | while true do | |
| 5961 | RS.RenderStepped:wait() | |
| 5962 | local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90 | |
| 5963 | if Aimed then break end | |
| 5964 | if (not Selected) then break end | |
| 5965 | aimAlpha = 1 - Sine(Alpha)--1 - COS(RAD(90 - Alpha)) | |
| 5966 | aimHeadOffset = headOffset.X * aimAlpha | |
| 5967 | jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha) | |
| 5968 | translationDivisor = numLerp(7, 20, aimAlpha) | |
| 5969 | rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha) | |
| 5970 | armTiltMultiplier = numLerp(1, 0.2, aimAlpha) | |
| 5971 | Cam.FieldOfView = numLerp(80, currentFOV, aimAlpha) | |
| 5972 | Scope.BackgroundTransparency = numLerp(1, currentTrans, aimAlpha) | |
| 5973 | if Alpha == 90 then break end | |
| 5974 | end | |
| 5975 | else | |
| 5976 | scopeMain.Visible = false | |
| 5977 | scopeSteady.Visible = false | |
| 5978 | aimAlpha = 0 | |
| 5979 | aimHeadOffset = 0 | |
| 5980 | jumpAnimMultiplier = 1 | |
| 5981 | translationDivisor = 7 | |
| 5982 | rotationMultiplier = S.momentumSettings.Amplitude.unAimed | |
| 5983 | armTiltMultiplier = 1 | |
| 5984 | Cam.FieldOfView = 80 | |
| 5985 | Scope.BackgroundTransparency = 1 | |
| 5986 | end | |
| 5987 | end) | |
| 5988 | end | |
| 5989 | end | |
| 5990 | ||
| 5991 | --------------------[ TEXTURE CREATION FUNCTIONS ]------------------------------------ | |
| 5992 | ||
| 5993 | function createBullet(Direction) | |
| 5994 | local Origin = Gun.Main.CFrame.p | |
| 5995 | local bulletCF = CF(Origin, Origin + Direction) | |
| 5996 | local Bullet = Instance.new("Part")
| |
| 5997 | Bullet.BrickColor = S.bulletSettings.Color | |
| 5998 | Bullet.Material = Enum.Material.Neon | |
| 5999 | Bullet.Name = "Bullet" | |
| 6000 | Bullet.CanCollide = false | |
| 6001 | Bullet.FormFactor = "Custom" | |
| 6002 | Bullet.Size = S.bulletSettings.Size | |
| 6003 | Bullet.BottomSurface = "Smooth" | |
| 6004 | Bullet.TopSurface = "Smooth" | |
| 6005 | if math.min(S.bulletSettings.Size.X, S.bulletSettings.Size.Y, S.bulletSettings.Size.Z) < 0.2 then | |
| 6006 | local Mesh = Instance.new("BlockMesh")
| |
| 6007 | Mesh.Scale = S.bulletSettings.Size / Vector3.new( | |
| 6008 | math.max(S.bulletSettings.Size.X, 0.2), | |
| 6009 | math.max(S.bulletSettings.Size.Y, 0.2), | |
| 6010 | math.max(S.bulletSettings.Size.Z, 0.2) | |
| 6011 | ) | |
| 6012 | Mesh.Parent = Bullet | |
| 6013 | end | |
| 6014 | local BF = Instance.new("BodyForce")
| |
| 6015 | BF.force = V3(0, Bullet:GetMass() * (196.2 - S.bulletSettings.Acceleration), 0) | |
| 6016 | BF.Parent = Bullet | |
| 6017 | Bullet.Parent = gunIgnore | |
| 6018 | Bullet.CFrame = bulletCF + Direction * S.bulletSettings.Size.Z / 2 | |
| 6019 | Bullet.Velocity = Direction * S.bulletSettings.Velocity | |
| 6020 | return Bullet | |
| 6021 | end | |
| 6022 | ||
| 6023 | --------------------[ HIT HANDLING FUNCTIONS ]---------------------------------------- | |
| 6024 | ||
| 6025 | function getBaseDamage(Dist) | |
| 6026 | local startDmg = S.damageSettings.Start.Damage | |
| 6027 | local startDist = S.damageSettings.Start.Dist | |
| 6028 | local endDmg = S.damageSettings.End.Damage | |
| 6029 | local endDist = S.damageSettings.End.Dist | |
| 6030 | return ( | |
| 6031 | ( | |
| 6032 | Dist < startDist * S.bulletSettings.Range | |
| 6033 | ) and startDmg or | |
| 6034 | ( | |
| 6035 | Dist >= startDist * S.bulletSettings.Range and | |
| 6036 | Dist < endDist * S.bulletSettings.Range | |
| 6037 | ) and numLerp(startDmg, endDmg, Map(Dist / S.bulletSettings.Range, startDist, endDist, 0, 1)) or | |
| 6038 | ( | |
| 6039 | Dist >= endDist * S.bulletSettings.Range | |
| 6040 | ) and endDmg | |
| 6041 | ) | |
| 6042 | end | |
| 6043 | ||
| 6044 | function Damage(H, P, N, D, Dist, customIgnore) | |
| 6045 | local hVal = S.damageSettings.Multipliers.Head | |
| 6046 | local cVal = S.damageSettings.Multipliers.Chest | |
| 6047 | local lVal = S.damageSettings.Multipliers.Limbs | |
| 6048 | local baseDamage = getBaseDamage(Dist) | |
| 6049 | if Humanoid.Health ~= 0 then | |
| 6050 | local hitHumanoid = nil | |
| 6051 | if H.Parent:IsA("Hat") then
| |
| 6052 | table.insert(customIgnore, H) | |
| 6053 | local newRay = Ray.new(P - D * 0.1, D * (S.bulletSettings.Range - Dist + 0.1)) | |
| 6054 | local newH, newP, newN = workspace:FindPartOnRayWithIgnoreList(newRay, customIgnore) | |
| 6055 | if newH then | |
| 6056 | hitHumanoid = Damage(newH, newP, newN, D, Dist + (newP - P).magnitude, customIgnore) | |
| 6057 | end | |
| 6058 | else | |
| 6059 | hitHumanoid = findFirstClass(H.Parent, "Humanoid") | |
| 6060 | if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then | |
| 6061 | local Tag = Instance.new("ObjectValue")
| |
| 6062 | Tag.Value = Player | |
| 6063 | Tag.Name = "creator" | |
| 6064 | Tag.Parent = hitHumanoid | |
| 6065 | DS:AddItem(Tag, 0.3) | |
| 6066 | local chosenDamage = 0 | |
| 6067 | if H.Name == "Head" then | |
| 6068 | chosenDamage = baseDamage * RAND(hVal, hVal + 0.1, 0.01) | |
| 6069 | elseif H.Name == "Torso" then | |
| 6070 | chosenDamage = baseDamage * RAND(cVal, cVal + 0.1, 0.01) | |
| 6071 | else | |
| 6072 | chosenDamage = baseDamage * RAND(lVal, lVal + 0.1, 0.01) | |
| 6073 | end | |
| 6074 | hitHumanoid:TakeDamage(chosenDamage) | |
| 6075 | markHit() | |
| 6076 | end | |
| 6077 | end | |
| 6078 | return hitHumanoid | |
| 6079 | end | |
| 6080 | end | |
| 6081 | ||
| 6082 | function isWallIgnored(Wall) | |
| 6083 | return ( | |
| 6084 | Wall.Transparency >= S.penetrationSettings.transparencyThreshold or | |
| 6085 | (S.penetrationSettings.ignoreNonCanCollide and (not Wall.CanCollide)) or | |
| 6086 | isIgnored(Wall, S.penetrationSettings.ignoreCustom) | |
| 6087 | ) | |
| 6088 | end | |
| 6089 | ||
| 6090 | function penetrateWall(Wall, hitPos, Direction, Normal, Ignore, totalPDist, totalBDist, lastDamagedHumanoid) | |
| 6091 | local wallIgnore = isWallIgnored(Wall) | |
| 6092 | local hitHumanoid = (Wall.Parent:IsA("Hat") and findFirstClass(Wall.Parent.Parent, "Humanoid") or findFirstClass(Wall.Parent, "Humanoid"))
| |
| 6093 | local damagedHumanoid = nil | |
| 6094 | if hitHumanoid and hitHumanoid ~= lastDamagedHumanoid then | |
| 6095 | lastDamagedHumanoid = hitHumanoid | |
| 6096 | damagedHumanoid = Damage(Wall, hitPos, Normal, Direction, totalBDist, {Char, ignoreModel})
| |
| 6097 | else | |
| 6098 | lastDamagedHumanoid = nil | |
| 6099 | end | |
| 6100 | local ignoreObject = hitHumanoid and (Wall.Parent:IsA("Hat") and Wall.Parent.Parent or Wall.Parent) or Wall
| |
| 6101 | table.insert(Ignore, ignoreObject) | |
| 6102 | local rayLength = S.bulletSettings.Range - totalBDist | |
| 6103 | local testRay = Ray.new(hitPos, Direction * (S.bulletSettings.Range - totalBDist)) | |
| 6104 | local H1, P1, N1 = workspace:FindPartOnRayWithIgnoreList(testRay, Ignore) | |
| 6105 | local newIgnore = removeElement(Ignore, ignoreObject) | |
| 6106 | local wallRay = Ray.new(P1 + Direction * 0.1, -Direction * (rayLength + 1)) | |
| 6107 | local H2, P2, N2 = workspace:FindPartOnRayWithIgnoreList(wallRay, Ignore) | |
| 6108 | local newPDist = totalPDist + (wallIgnore and 0 or (getNearestPoint(P1, P2, hitPos) - hitPos).magnitude) | |
| 6109 | local newBDist = totalBDist + (P1 - hitPos).magnitude | |
| 6110 | local outOfRange = Round(newPDist, 0.001) > S.penetrationSettings.Dist or Round(newBDist, 0.001) > S.bulletSettings.Range | |
| 6111 | if (not wallIgnore) then | |
| 6112 | createBulletImpact:FireServer(Wall, hitPos, Normal, Direction, hitHumanoid, gunIgnore, S) | |
| 6113 | if (not hitHumanoid) then | |
| 6114 | createShockwave:FireServer(hitPos, S.shockwaveSettings.Radius, gunIgnore, S) | |
| 6115 | end | |
| 6116 | end | |
| 6117 | if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) and hitHumanoid == damagedHumanoid then | |
| 6118 | createBlood:FireServer(Wall, P2, Direction, gunIgnore, S) | |
| 6119 | end | |
| 6120 | if outOfRange or (not H1) then | |
| 6121 | if (not outOfRange) and (not wallIgnore) then | |
| 6122 | createBulletImpact:FireServer(Wall, P2, N2, Direction, hitHumanoid, gunIgnore, S) | |
| 6123 | if (not hitHumanoid) then | |
| 6124 | createShockwave:FireServer(P2, S.shockwaveSettings.Radius, gunIgnore, S) | |
| 6125 | end | |
| 6126 | end | |
| 6127 | return Wall, hitPos | |
| 6128 | else | |
| 6129 | if Wall == H2 and (not wallIgnore) then | |
| 6130 | createBulletImpact:FireServer(Wall, P2, N2, Direction, hitHumanoid, gunIgnore, S) | |
| 6131 | if (not hitHumanoid) then | |
| 6132 | createShockwave:FireServer(P2, S.shockwaveSettings.Radius, gunIgnore, S) | |
| 6133 | end | |
| 6134 | end | |
| 6135 | return penetrateWall(H1, P1, Direction, N1, Ignore, newPDist, newBDist, lastDamagedHumanoid) | |
| 6136 | end | |
| 6137 | end | |
| 6138 | ||
| 6139 | function PenetrateWall(HitPos, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist) | |
| 6140 | local HitDist = (HitPos - OriginPos).magnitude | |
| 6141 | local Wall, WallHitPos = nil, nil | |
| 6142 | local Hum, HumHitPos = nil, nil | |
| 6143 | local CustomIgnore = {unpack(Ignore)}
| |
| 6144 | for i = 1, 10 do | |
| 6145 | local WallRay = Ray.new(HitPos - (Direction * 0.1), Direction * S.Penetration) | |
| 6146 | local H, P = game.Workspace:FindPartOnRayWithIgnoreList(WallRay, CustomIgnore) | |
| 6147 | if H then | |
| 6148 | local HitHumanoid = nil | |
| 6149 | if H.Parent.ClassName == "Hat" then | |
| 6150 | HitHumanoid = findFirstClass(H.Parent.Parent, "Humanoid") | |
| 6151 | else | |
| 6152 | HitHumanoid = findFirstClass(H.Parent, "Humanoid") | |
| 6153 | end | |
| 6154 | if HitHumanoid and i ~= 1 then | |
| 6155 | Hum, HumHitPos = H, P | |
| 6156 | break | |
| 6157 | else | |
| 6158 | Wall, WallHitPos = H, P | |
| 6159 | table.insert(CustomIgnore, H) | |
| 6160 | end | |
| 6161 | else | |
| 6162 | break | |
| 6163 | end | |
| 6164 | end | |
| 6165 | if Wall then | |
| 6166 | if S.InstantHit then | |
| 6167 | if Hum then | |
| 6168 | Damage(Hum.Parent:FindFirstChild("Head"), HumHitPos)
| |
| 6169 | return HumHitPos | |
| 6170 | else | |
| 6171 | local HitObj2, HitPos2 = nil, nil | |
| 6172 | if HitHumanoid then | |
| 6173 | HitObj2, HitPos2 = AdvRayCast(WallHitPos, Direction, S.BulletRange - HitDist, {Wall, HitHumanoid.Parent, unpack(Ignore)})
| |
| 6174 | else | |
| 6175 | HitObj2, HitPos2 = AdvRayCast(WallHitPos, Direction, S.BulletRange - HitDist, {Wall, unpack(Ignore)})
| |
| 6176 | end | |
| 6177 | Damage(HitObj2, HitPos2) | |
| 6178 | ||
| 6179 | local NewPDist = CurrentPDist + (WallHitPos - HitPos).magnitude | |
| 6180 | local NewHitPos2 = HitPos2 | |
| 6181 | if NewPDist < S.Penetration and HitObj2 then | |
| 6182 | NewHitPos2 = PenetrateWall(HitPos2, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist + NewPDist) | |
| 6183 | end | |
| 6184 | return NewHitPos2 | |
| 6185 | end | |
| 6186 | else | |
| 6187 | local LastPos = WallHitPos | |
| 6188 | local TotalDistTraveled = 0 | |
| 6189 | spawn(function() | |
| 6190 | if Hum then | |
| 6191 | Damage(Hum.Parent:FindFirstChild("Head"), HumHitPos)
| |
| 6192 | return HumHitPos | |
| 6193 | else | |
| 6194 | while true do | |
| 6195 | RS.RenderStepped:wait() | |
| 6196 | if TotalDistTraveled >= S.BulletRange - HitDist then | |
| 6197 | Bullet:Destroy() | |
| 6198 | break | |
| 6199 | end | |
| 6200 | local DistTraveled = (Bullet.Position - LastPos).magnitude | |
| 6201 | local NewDirection = (Bullet.Position - LastPos).unit | |
| 6202 | local TempHitObj, TempHitPos = nil, nil | |
| 6203 | if HitHumanoid then | |
| 6204 | TempHitObj, TempHitPos = AdvRayCast(LastPos, NewDirection, DistTraveled, {Wall, HitHumanoid.Parent, unpack(Ignore)})
| |
| 6205 | else | |
| 6206 | TempHitObj, TempHitPos = AdvRayCast(LastPos, NewDirection, DistTraveled, {Wall, unpack(Ignore)})
| |
| 6207 | end | |
| 6208 | if TempHitObj then | |
| 6209 | Damage(TempHitObj, TempHitPos) | |
| 6210 | ||
| 6211 | local NewPDist = CurrentPDist + (WallHitPos - HitPos).magnitude | |
| 6212 | local NewTempPos = TempHitPos | |
| 6213 | if NewPDist < S.Penetration and TempHitObj then | |
| 6214 | NewTempPos = PenetrateWall(TempHitPos, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist + NewPDist) | |
| 6215 | else | |
| 6216 | Bullet:Destroy() | |
| 6217 | end | |
| 6218 | return NewTempPos | |
| 6219 | else | |
| 6220 | LastPos = Bullet.Position | |
| 6221 | TotalDistTraveled = TotalDistTraveled + DistTraveled | |
| 6222 | end | |
| 6223 | end | |
| 6224 | end | |
| 6225 | end) | |
| 6226 | end | |
| 6227 | else | |
| 6228 | if Bullet then Bullet:Destroy() end | |
| 6229 | return HitPos | |
| 6230 | end | |
| 6231 | end | |
| 6232 | ||
| 6233 | function isEnemy(Human) | |
| 6234 | local Plyr = game.Players:GetPlayerFromCharacter(Human.Parent) | |
| 6235 | if (not Plyr) then return S.CanDamageNPCs end | |
| 6236 | return S.AllowFriendlyFire or (Plyr.TeamColor ~= Player.TeamColor or Plyr.Neutral) | |
| 6237 | end | |
| 6238 | ||
| 6239 | --------------------[ RELOAD FUNCTIONS ]---------------------------------------------- | |
| 6240 | ||
| 6241 | function animateReload() | |
| 6242 | tweenJoint(LWeld2, CF(), CF(), Sine, 0.15) | |
| 6243 | tweenJoint(RWeld2, CF(), CF(), Sine, 0.15) | |
| 6244 | local magParts = {}
| |
| 6245 | local magTable = {}
| |
| 6246 | ||
| 6247 | for _, Obj in pairs(Gun:GetChildren()) do | |
| 6248 | if string.sub(Obj.Name, 1, 3) == "Mag" and Obj:IsA("BasePart") then
| |
| 6249 | INSERT(magParts, Obj) | |
| 6250 | end | |
| 6251 | end | |
| 6252 | ||
| 6253 | local animVars = {
| |
| 6254 | --FUNCTIONS-- | |
| 6255 | tweenJoint = tweenJoint; | |
| 6256 | ||
| 6257 | makeMagInvisible = function() | |
| 6258 | for _, v in pairs(magParts) do | |
| 6259 | v.Transparency = 1 | |
| 6260 | end | |
| 6261 | magVisible = false | |
| 6262 | end; | |
| 6263 | ||
| 6264 | makeMagVisible = function() | |
| 6265 | for _, v in pairs(magParts) do | |
| 6266 | v.Transparency = v:WaitForChild("magTrans").Value
| |
| 6267 | end | |
| 6268 | magVisible = true | |
| 6269 | end; | |
| 6270 | ||
| 6271 | isMagVisible = function() | |
| 6272 | return magVisible | |
| 6273 | end; | |
| 6274 | ||
| 6275 | isMagEmpty = function() | |
| 6276 | return ammoInClip == 0 | |
| 6277 | end; | |
| 6278 | ||
| 6279 | setNewMag = function() | |
| 6280 | newMag = true | |
| 6281 | end; | |
| 6282 | ||
| 6283 | isNewMag = function() | |
| 6284 | return newMag | |
| 6285 | end; | |
| 6286 | ||
| 6287 | createMag = function(Key) | |
| 6288 | local magModel = Instance.new("Model")
| |
| 6289 | local magClones = {}
| |
| 6290 | for i, v in pairs(magParts) do | |
| 6291 | local vClone = v:Clone() | |
| 6292 | vClone.Transparency = v:WaitForChild("magTrans").Value
| |
| 6293 | vClone.CanCollide = false | |
| 6294 | vClone.Parent = magModel | |
| 6295 | INSERT(magClones, {Original = v, magClone = vClone})
| |
| 6296 | if i ~= 1 then | |
| 6297 | local W = Instance.new("Weld")
| |
| 6298 | W.Part0 = magClones[1].magClone | |
| 6299 | W.Part1 = vClone | |
| 6300 | W.C0 = magClones[1].magClone.CFrame:toObjectSpace(vClone.CFrame) | |
| 6301 | W.Parent = magClones[1].magClone | |
| 6302 | end | |
| 6303 | end | |
| 6304 | magTable[Key] = {magModel, magClones}
| |
| 6305 | return magModel, magClones | |
| 6306 | end; | |
| 6307 | ||
| 6308 | getMag = function(Key) | |
| 6309 | if magTable[Key] then | |
| 6310 | return magTable[Key][1], magTable[Key][2] | |
| 6311 | else | |
| 6312 | return nil, nil | |
| 6313 | end | |
| 6314 | end; | |
| 6315 | ||
| 6316 | attachGripToHead = function() | |
| 6317 | local handleCF = RArm.CFrame * Grip.C0 | |
| 6318 | Grip.C0 = Head.CFrame:toObjectSpace(handleCF) | |
| 6319 | Grip.Part0 = Head | |
| 6320 | end; | |
| 6321 | ||
| 6322 | attachGripToArm = function() | |
| 6323 | local handleCF = Head.CFrame * Grip.C0 | |
| 6324 | Grip.C0 = RArm.CFrame:toObjectSpace(handleCF) | |
| 6325 | Grip.Part0 = RArm | |
| 6326 | end; | |
| 6327 | ||
| 6328 | Sine = Sine; | |
| 6329 | ||
| 6330 | Linear = Linear; | |
| 6331 | ||
| 6332 | --VARIABLES-- | |
| 6333 | Handle = Handle; | |
| 6334 | LArm = LArm; | |
| 6335 | RArm = RArm; | |
| 6336 | LWeld = LWeld; | |
| 6337 | RWeld = RWeld; | |
| 6338 | LC0 = armC0[1]; | |
| 6339 | RC0 = armC0[2]; | |
| 6340 | Grip = Grip; | |
| 6341 | gunIgnore = gunIgnore; | |
| 6342 | Cam = Cam; | |
| 6343 | CF = CF; | |
| 6344 | CFANG = CFANG; | |
| 6345 | V3 = V3; | |
| 6346 | RAD = RAD; | |
| 6347 | reloadTimeLoaded = S.reloadSettings.Times.Loaded; | |
| 6348 | reloadTimeEmpty = S.reloadSettings.Times.Empty | |
| 6349 | } | |
| 6350 | ||
| 6351 | local sequenceTable = Anims.Reload(animVars) | |
| 6352 | --local T = tick() | |
| 6353 | for _, reloadFunction in pairs(sequenceTable) do | |
| 6354 | if breakReload then | |
| 6355 | break | |
| 6356 | end | |
| 6357 | reloadFunction() | |
| 6358 | ||
| 6359 | if (not magVisible) then | |
| 6360 | Ammo.Value = 0 | |
| 6361 | end | |
| 6362 | updateClipAmmo() | |
| 6363 | end | |
| 6364 | --print(tick() - T) --I divide the reloadTime by this number to get the animation speed | |
| 6365 | ||
| 6366 | if (not isCrawling) then | |
| 6367 | if Running and (not S.canFireWhileRunning) then | |
| 6368 | tweenJoint(LWeld, armC0[1], S.runningC1.leftArm, Sine, 0.4) | |
| 6369 | tweenJoint(RWeld, armC0[2], S.runningC1.rightArm, Sine, 0.4) | |
| 6370 | tweenJoint(Grip, nil, S.runningC1.Grip, Sine, 0.4) | |
| 6371 | else | |
| 6372 | tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4) | |
| 6373 | tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4) | |
| 6374 | tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4) | |
| 6375 | end | |
| 6376 | end | |
| 6377 | ||
| 6378 | for _, v in pairs(magTable) do --In case the reload animations was stopped mid way and there were still fake mags that weren't deleted | |
| 6379 | v[1]:Destroy() | |
| 6380 | end | |
| 6381 | end | |
| 6382 | ||
| 6383 | function Reload() | |
| 6384 | if Ammo.Value < (ClipSize.Value + 1) and (not Reloading) and StoredAmmo.Value > 0 then | |
| 6385 | Firing = false | |
| 6386 | ammoInClip = (ammoInClip == 0 and Ammo.Value or ammoInClip) | |
| 6387 | Reloading = true | |
| 6388 | lowerSpread() | |
| 6389 | if Aimed then unAimGun(S.reloadSettings.Anim) end | |
| 6390 | crossHair.Reload.Visible = true | |
| 6391 | if Handle:FindFirstChild("ReloadSound") then Handle.ReloadSound:Play() end
| |
| 6392 | if S.reloadSettings.Anim then | |
| 6393 | wait() | |
| 6394 | animateReload() | |
| 6395 | else | |
| 6396 | local startReload = tick() | |
| 6397 | local initialReloadTime = Ammo.Value == 0 and S.reloadSettings.Times.Empty or S.reloadSettings.Times.Loaded | |
| 6398 | while true do | |
| 6399 | if breakReload then break end | |
| 6400 | if (tick() - startReload) >= initialReloadTime then break end | |
| 6401 | RS.RenderStepped:wait() | |
| 6402 | end | |
| 6403 | end | |
| 6404 | if (not breakReload) then | |
| 6405 | newMag = false | |
| 6406 | if StoredAmmo.Value >= ClipSize.Value then | |
| 6407 | if ammoInClip > 0 then | |
| 6408 | StoredAmmo.Value = StoredAmmo.Value - ((ClipSize.Value + 1) - ammoInClip) | |
| 6409 | Ammo.Value = ClipSize.Value + 1 | |
| 6410 | else | |
| 6411 | StoredAmmo.Value = StoredAmmo.Value - ClipSize.Value | |
| 6412 | Ammo.Value = ClipSize.Value | |
| 6413 | end | |
| 6414 | elseif StoredAmmo.Value < ClipSize.Value and StoredAmmo.Value > 0 then | |
| 6415 | Ammo.Value = StoredAmmo.Value | |
| 6416 | StoredAmmo.Value = 0 | |
| 6417 | end | |
| 6418 | end | |
| 6419 | Reloading = false | |
| 6420 | if Selected then | |
| 6421 | ammoInClip = (breakReload and ammoInClip or 0) | |
| 6422 | crossHair.Reload.Visible = false | |
| 6423 | end | |
| 6424 | breakReload = false | |
| 6425 | end | |
| 6426 | ||
| 6427 | updateClipAmmo() | |
| 6428 | updateStoredAmmo() | |
| 6429 | end | |
| 6430 | ||
| 6431 | --------------------[ EXTERNAL DATA LOCATING FUNCTIONS ]----------------------------- | |
| 6432 | ||
| 6433 | function removeElement(Table, Element) --removes the first instance of Element from Table | |
| 6434 | for i, v in pairs(Table) do | |
| 6435 | if v == Element then | |
| 6436 | table.remove(Table, i) | |
| 6437 | break | |
| 6438 | end | |
| 6439 | end | |
| 6440 | return Table | |
| 6441 | end | |
| 6442 | ||
| 6443 | function findFirstClass(Object, Class) | |
| 6444 | local foundObject = nil | |
| 6445 | for _, Obj in pairs(Object:GetChildren()) do | |
| 6446 | if Obj.ClassName == Class then | |
| 6447 | foundObject = Obj | |
| 6448 | break | |
| 6449 | end | |
| 6450 | end | |
| 6451 | return foundObject | |
| 6452 | end | |
| 6453 | ||
| 6454 | function isIgnored(Obj, Table) | |
| 6455 | for _,v in pairs(Table) do | |
| 6456 | if Obj == v or Obj:IsDescendantOf(v) then | |
| 6457 | return true | |
| 6458 | end | |
| 6459 | end | |
| 6460 | return false | |
| 6461 | end | |
| 6462 | ||
| 6463 | function GetHitSurfaceCFrame(HitPos,Obj) | |
| 6464 | local SurfaceCF = {
| |
| 6465 | {"Back",Obj.CFrame * CF(0,0,Obj.Size.z)};
| |
| 6466 | {"Bottom",Obj.CFrame * CF(0,-Obj.Size.y,0)};
| |
| 6467 | {"Front",Obj.CFrame * CF(0,0,-Obj.Size.z)};
| |
| 6468 | {"Left",Obj.CFrame * CF(-Obj.Size.x,0,0)};
| |
| 6469 | {"Right",Obj.CFrame * CF(Obj.Size.x,0,0)};
| |
| 6470 | {"Top",Obj.CFrame * CF(0,Obj.Size.y,0)}
| |
| 6471 | } | |
| 6472 | local ClosestDist = HUGE | |
| 6473 | local ClosestSurface = nil | |
| 6474 | for _,v in pairs(SurfaceCF) do | |
| 6475 | local SurfaceDist = (HitPos - v[2].p).magnitude | |
| 6476 | if SurfaceDist < ClosestDist then | |
| 6477 | ClosestDist = SurfaceDist | |
| 6478 | ClosestSurface = v | |
| 6479 | end | |
| 6480 | end | |
| 6481 | return ClosestSurface[2] | |
| 6482 | end | |
| 6483 | ||
| 6484 | function AdvRayCast(Origin, Direction, Dist, CustomIgnore) | |
| 6485 | local NewIgnore = (CustomIgnore and CustomIgnore or Ignore) | |
| 6486 | local NewRay = Ray.new(Origin, Direction * (Dist > 999 and 999 or Dist)) | |
| 6487 | local HitObj, HitPos = game.Workspace:FindPartOnRayWithIgnoreList(NewRay, NewIgnore) | |
| 6488 | local LastPos = HitPos | |
| 6489 | local FinalHitObj, FinalHitPos = nil, nil | |
| 6490 | local RepTimes = math.floor(Dist / 999) | |
| 6491 | if (not HitObj) and (Dist > 999) then | |
| 6492 | for i = 0, RepTimes do | |
| 6493 | local NewDist = (i == RepTimes and (Dist - (LastPos - Origin).magnitude) or 999) | |
| 6494 | local Ray2 = Ray.new(LastPos, Direction * NewDist) | |
| 6495 | local HitObj2, HitPos2 = game.Workspace:FindPartOnRayWithIgnoreList(Ray2, NewIgnore) | |
| 6496 | if i ~= RepTimes then | |
| 6497 | if HitObj2 then | |
| 6498 | FinalHitObj, FinalHitPos = HitObj2, HitPos2 | |
| 6499 | break | |
| 6500 | end | |
| 6501 | elseif i == RepTimes then | |
| 6502 | FinalHitObj, FinalHitPos = HitObj2, HitPos2 | |
| 6503 | end | |
| 6504 | LastPos = HitPos2 | |
| 6505 | end | |
| 6506 | return FinalHitObj, FinalHitPos | |
| 6507 | elseif HitObj or (Dist <= 999) then | |
| 6508 | return HitObj, HitPos | |
| 6509 | end | |
| 6510 | end | |
| 6511 | ||
| 6512 | --------------------[ JUMPING ANIMATION ]--------------------------------------------- | |
| 6513 | ||
| 6514 | function onFall(initialVelocity) | |
| 6515 | spawn(function() | |
| 6516 | local velocityAlpha = math.max(math.min(initialVelocity / Humanoid.JumpPower, 1), 0) | |
| 6517 | local startJumpPos = jumpAnim.Pos | |
| 6518 | local startJumpRot = jumpAnim.Rot | |
| 6519 | local endJumpPos = 0.04 * S.fallSettings.fallMultiplier * velocityAlpha | |
| 6520 | local endJumpRot = RAD(4) * S.fallSettings.fallMultiplier * velocityAlpha | |
| 6521 | local t0 = tick() | |
| 6522 | while true do | |
| 6523 | RS.Heartbeat:wait() | |
| 6524 | local Alpha = math.min((tick() - t0) / 0.15, 1) * 90 | |
| 6525 | if onGround then break end | |
| 6526 | jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Sine(Alpha)) | |
| 6527 | jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Sine(Alpha)) | |
| 6528 | if Alpha == 90 then break end | |
| 6529 | end | |
| 6530 | startJumpPos = endJumpPos | |
| 6531 | startJumpRot = endJumpRot | |
| 6532 | endJumpPos = -0.08 * S.fallSettings.fallMultiplier | |
| 6533 | endJumpRot = -RAD(8) * S.fallSettings.fallMultiplier | |
| 6534 | local X = 1 | |
| 6535 | while true do | |
| 6536 | local dt = RS.Heartbeat:wait() | |
| 6537 | X = X + (dt * 60) / X | |
| 6538 | local Alpha = (X - 1) / 15 | |
| 6539 | if onGround then break end | |
| 6540 | jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Alpha) | |
| 6541 | jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Alpha) | |
| 6542 | end | |
| 6543 | end) | |
| 6544 | end | |
| 6545 | ||
| 6546 | function onLand(fallDist) | |
| 6547 | spawn(function() | |
| 6548 | local animAlpha = math.min(fallDist, S.fallSettings.maxDist) * (2 / 3) | |
| 6549 | local startJumpPos = jumpAnim.Pos | |
| 6550 | local startJumpRot = jumpAnim.Rot | |
| 6551 | local endJumpPos = animAlpha / 100 * S.fallSettings.landMultiplier * (runReady and 1 or 2) | |
| 6552 | local endJumpRot = RAD(animAlpha) * S.fallSettings.landMultiplier * (runReady and 1 or 2) | |
| 6553 | local t0 = tick() | |
| 6554 | while true do | |
| 6555 | RS.Heartbeat:wait() | |
| 6556 | local Alpha = math.min((tick() - t0) / 0.2, 1) | |
| 6557 | if (not onGround) then break end | |
| 6558 | jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Alpha) | |
| 6559 | jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Alpha) | |
| 6560 | if Alpha == 1 then break end | |
| 6561 | end | |
| 6562 | t0 = tick() | |
| 6563 | while true do | |
| 6564 | RS.Heartbeat:wait() | |
| 6565 | local Alpha = math.min((tick() - t0) / 0.3, 1) * 90 | |
| 6566 | if (not onGround) then break end | |
| 6567 | jumpAnim.Pos = numLerp(endJumpPos, 0, Sine(Alpha)) | |
| 6568 | jumpAnim.Rot = numLerp(endJumpRot, 0, Sine(Alpha)) | |
| 6569 | if Alpha == 90 then break end | |
| 6570 | end | |
| 6571 | end) | |
| 6572 | end | |
| 6573 | ||
| 6574 | function onHumanoidStateChanged(oldState, newState) | |
| 6575 | if newState == Enum.HumanoidStateType.Freefall then | |
| 6576 | onGround = false | |
| 6577 | if S.fallAnimation then | |
| 6578 | onFall(HRP.Velocity.Y) | |
| 6579 | while HRP.Velocity.Y > 0 do RS.RenderStepped:wait() end | |
| 6580 | startFallHeight = HRP.Position.Y | |
| 6581 | end | |
| 6582 | elseif oldState == Enum.HumanoidStateType.Freefall then | |
| 6583 | onGround = true | |
| 6584 | if S.fallAnimation then | |
| 6585 | local fallDist = startFallHeight - HRP.Position.Y | |
| 6586 | onLand(fallDist) | |
| 6587 | end | |
| 6588 | end | |
| 6589 | end | |
| 6590 | --------------------[ CAMERA STEADYING FUNCTIONS ]------------------------------------ | |
| 6591 | ||
| 6592 | function steadyCamera() | |
| 6593 | scopeSteady.Text = "Steadying..." | |
| 6594 | scopeSteady.TextColor3 = Color3.new(1, 1, 0) | |
| 6595 | camSteady = true | |
| 6596 | local originalSway = camSway | |
| 6597 | local Increment = 1.5 / 0.6 | |
| 6598 | local X = 0 | |
| 6599 | while true do | |
| 6600 | RS.RenderStepped:wait() | |
| 6601 | local newX = X + Increment | |
| 6602 | X = (newX > 90 and 90 or newX) | |
| 6603 | if (not steadyKeyPressed) then break end | |
| 6604 | camSway = numLerp(originalSway, 0, Sine(X)) | |
| 6605 | if X == 90 then break end | |
| 6606 | end | |
| 6607 | while steadyKeyPressed and Aimed do | |
| 6608 | if currentSteadyTime > 0 then | |
| 6609 | local NewSteadyTime = currentSteadyTime - 1 | |
| 6610 | currentSteadyTime = (NewSteadyTime < 0 and 0 or NewSteadyTime) | |
| 6611 | camSway = 0 | |
| 6612 | elseif currentSteadyTime == 0 then | |
| 6613 | break | |
| 6614 | end | |
| 6615 | RS.RenderStepped:wait() | |
| 6616 | end | |
| 6617 | camSteady = false | |
| 6618 | spawn(function() | |
| 6619 | local Increment = 1.5 / 0.25 | |
| 6620 | local X = 0 | |
| 6621 | while true do | |
| 6622 | RS.RenderStepped:wait() | |
| 6623 | local newX = X + Increment | |
| 6624 | X = (newX > 90 and 90 or newX) | |
| 6625 | if camSteady then break end | |
| 6626 | camSway = numLerp(0, S.scopeSettings.camSwayOnBreath, 1 - COS(RAD(X))) | |
| 6627 | if X == 90 then break end | |
| 6628 | end | |
| 6629 | Increment = 1.5 / S.scopeSettings.breathTime | |
| 6630 | X = 0 | |
| 6631 | while true do | |
| 6632 | RS.RenderStepped:wait() | |
| 6633 | local newX = X + Increment | |
| 6634 | X = (newX > 90 and 90 or newX) | |
| 6635 | if camSteady then break end | |
| 6636 | camSway = numLerp(S.scopeSettings.camSwayOnBreath, 1, Sine(X)) | |
| 6637 | if X == 90 then break end | |
| 6638 | end | |
| 6639 | --[[for X = 0, 90, 1.5 / 0.2 do | |
| 6640 | local Alpha = 1 - COS(RAD(X))--math.log10(X) / math.log10(90) | |
| 6641 | camSway = numLerp(0, 3, Alpha) | |
| 6642 | RS.RenderStepped:wait() | |
| 6643 | end]] | |
| 6644 | --[[for X = 0, 90, 1.5 / S.scopeSettings.steadyTime do | |
| 6645 | if camSteady then break end | |
| 6646 | local Alpha = SIN(RAD(X)) | |
| 6647 | camSway = numLerp(3, 1, Alpha) | |
| 6648 | RS.RenderStepped:wait() | |
| 6649 | end]] | |
| 6650 | end) | |
| 6651 | retakeBreath() | |
| 6652 | end | |
| 6653 | ||
| 6654 | function retakeBreath() | |
| 6655 | scopeSteady.Text = "Re-taking Breath" | |
| 6656 | scopeSteady.TextColor3 = Color3.new(1, 0, 0) | |
| 6657 | takingBreath = true | |
| 6658 | local Increment = S.scopeSettings.steadyTime / S.scopeSettings.breathTime | |
| 6659 | while takingBreath do | |
| 6660 | if currentSteadyTime < maxSteadyTime then | |
| 6661 | local newSteadyTime = currentSteadyTime + Increment | |
| 6662 | currentSteadyTime = (newSteadyTime > maxSteadyTime and maxSteadyTime or newSteadyTime) | |
| 6663 | elseif currentSteadyTime >= maxSteadyTime then | |
| 6664 | break | |
| 6665 | end | |
| 6666 | RS.RenderStepped:wait() | |
| 6667 | end | |
| 6668 | if takingBreath then | |
| 6669 | scopeSteady.Text = "Hold "..convertKey(S.Keys.scopeSteady).." to Steady" | |
| 6670 | scopeSteady.TextColor3 = Color3.new(1, 1, 0) | |
| 6671 | takingBreath = false | |
| 6672 | end | |
| 6673 | end | |
| 6674 | ||
| 6675 | --------------------[ SPRINTING FUNCTIONS ]------------------------------------------- | |
| 6676 | ||
| 6677 | function canRun(midRun) | |
| 6678 | return ((Forward and (not Backward)) and | |
| 6679 | Walking and (Stamina > 0) and Running and | |
| 6680 | Selected and (midRun and true or onGround) and | |
| 6681 | runReady and (S.canFireWhileRunning and true or (not Firing)) | |
| 6682 | ) | |
| 6683 | end | |
| 6684 | ||
| 6685 | function monitorStamina() | |
| 6686 | Running = true | |
| 6687 | if (not canRun(false)) then | |
| 6688 | Running = false | |
| 6689 | return | |
| 6690 | end | |
| 6691 | if Aimed then unAimGun(true) end | |
| 6692 | if Stance == 1 or Stance == 2 then Stand() end | |
| 6693 | if (not (Reloading and S.reloadSettings.Anim)) then | |
| 6694 | if S.canFireWhileRunning then | |
| 6695 | tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4) | |
| 6696 | tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4) | |
| 6697 | tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4) | |
| 6698 | else | |
| 6699 | tweenJoint(LWeld, armC0[1], S.runningC1.leftArm, Sine, 0.4) | |
| 6700 | tweenJoint(RWeld, armC0[2], S.runningC1.rightArm, Sine, 0.4) | |
| 6701 | tweenJoint(Grip, nil, S.runningC1.Grip, Sine, 0.4) | |
| 6702 | end | |
| 6703 | end | |
| 6704 | crossOffset = 50 | |
| 6705 | while runKeyPressed do | |
| 6706 | if canRun(true) then | |
| 6707 | if onGround then | |
| 6708 | local newStamina = Stamina - 1 | |
| 6709 | Stamina = (newStamina < 0 and 0 or newStamina) | |
| 6710 | end | |
| 6711 | else | |
| 6712 | break | |
| 6713 | end | |
| 6714 | RS.RenderStepped:wait() | |
| 6715 | end | |
| 6716 | Running = false | |
| 6717 | if (not Aimed) and (not (Reloading and S.reloadSettings.Anim)) and (not S.canFireWhileRunning) then | |
| 6718 | crossOffset = 0 | |
| 6719 | tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4) | |
| 6720 | tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4) | |
| 6721 | tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4) | |
| 6722 | end | |
| 6723 | ||
| 6724 | rechargeStamina() | |
| 6725 | end | |
| 6726 | ||
| 6727 | function rechargeStamina() | |
| 6728 | chargingStamina = true | |
| 6729 | while ((not runKeyPressed) or (Stamina < maxStamina)) and (not Running) do | |
| 6730 | if Stamina < maxStamina then | |
| 6731 | local newStamina = Stamina + (S.sprintTime / S.staminaCoolTime) | |
| 6732 | Stamina = (newStamina > maxStamina and maxStamina or newStamina) | |
| 6733 | elseif Stamina >= maxStamina then | |
| 6734 | break | |
| 6735 | end | |
| 6736 | RS.RenderStepped:wait() | |
| 6737 | end | |
| 6738 | chargingStamina = false | |
| 6739 | end | |
| 6740 | ||
| 6741 | --------------------[ STANCE FUNCTIONS ]---------------------------------------------- | |
| 6742 | ||
| 6743 | function Stand(onDeselected) | |
| 6744 | local LHip = Torso["Left Hip"] | |
| 6745 | local RHip = Torso["Right Hip"] | |
| 6746 | LLegWeld.Part1 = nil | |
| 6747 | LHip.Part1 = LLeg | |
| 6748 | RLegWeld.Part1 = nil | |
| 6749 | RHip.Part1 = RLeg | |
| 6750 | Stance = 0 | |
| 6751 | spreadStance = "Stand" | |
| 6752 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 6753 | if S.stanceSettings.Anim and (not onDeselected) then | |
| 6754 | spawn(function() | |
| 6755 | local prevStanceSway = stanceSway | |
| 6756 | local X = 0 | |
| 6757 | local Increment = 1.5 / S.stanceSettings.Speed | |
| 6758 | while true do | |
| 6759 | RS.RenderStepped:wait() | |
| 6760 | local newX = X + Increment | |
| 6761 | X = (newX > 90 and 90 or newX) | |
| 6762 | if Stance ~= 0 then break end | |
| 6763 | stanceSway = numLerp(prevStanceSway, 1, Sine(X)) | |
| 6764 | if X == 90 then break end | |
| 6765 | end | |
| 6766 | end) | |
| 6767 | tweenJoint(ABWeld, CF(), nil, Sine, S.stanceSettings.Speed) | |
| 6768 | tweenJoint(LLegWeld, legC0.Stand[1], nil, Sine, S.stanceSettings.Speed) | |
| 6769 | tweenJoint(RLegWeld, legC0.Stand[2], nil, Sine, S.stanceSettings.Speed) | |
| 6770 | tweenJoint(LHip, CF(-1, -1, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 1, 0) * CFANG(0, RAD(-90), 0), Sine, S.stanceSettings.Speed) | |
| 6771 | tweenJoint(RHip, CF(1, -1, 0) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 1, 0) * CFANG(RAD(-180), RAD(90), 0), Sine, S.stanceSettings.Speed) | |
| 6772 | tweenJoint(Root, CFANG(RAD(-90), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed) | |
| 6773 | tweenJoint(headWeld, CF(0, 1.5, 0), nil, Sine, S.stanceSettings.Speed) | |
| 6774 | elseif onDeselected or (not S.stanceSettings.Anim) then | |
| 6775 | ABWeld.C0 = CF() | |
| 6776 | LLegWeld.C0 = legC0.Stand[1] | |
| 6777 | RLegWeld.C0 = legC0.Stand[2] | |
| 6778 | LHip.C0, LHip.C1 = CF(-1, -1, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 1, 0) * CFANG(0, RAD(-90), 0) | |
| 6779 | RHip.C0, RHip.C1 = CF(1, -1, 0) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 1, 0) * CFANG(RAD(-180), RAD(90), 0) | |
| 6780 | Root.C0 = CFANG(RAD(-90), 0, RAD(180)) | |
| 6781 | headWeld.C0 = CF(0, 1.5, 0) | |
| 6782 | end | |
| 6783 | end | |
| 6784 | ||
| 6785 | function Crouch() | |
| 6786 | local LHip = Torso["Left Hip"] | |
| 6787 | local RHip = Torso["Right Hip"] | |
| 6788 | LHip.Part1 = nil | |
| 6789 | LLegWeld.Part1 = LLeg | |
| 6790 | RHip.Part1 = nil | |
| 6791 | RLegWeld.Part1 = RLeg | |
| 6792 | Stance = 1 | |
| 6793 | spreadStance = "Crouch" | |
| 6794 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 6795 | if S.stanceSettings.Anim then | |
| 6796 | spawn(function() | |
| 6797 | local prevStanceSway = stanceSway | |
| 6798 | local X = 0 | |
| 6799 | local Increment = 1.5 / S.stanceSettings.Speed | |
| 6800 | while true do | |
| 6801 | RS.RenderStepped:wait() | |
| 6802 | local newX = X + Increment | |
| 6803 | X = (newX > 90 and 90 or newX) | |
| 6804 | if Stance ~= 1 then break end | |
| 6805 | stanceSway = numLerp(prevStanceSway, 0.75, Sine(X)) | |
| 6806 | if X == 90 then break end | |
| 6807 | end | |
| 6808 | end) | |
| 6809 | tweenJoint(ABWeld, CF(0, 0, -0.05), nil, Sine, S.stanceSettings.Speed) | |
| 6810 | tweenJoint(LLegWeld, legC0.Crouch[1], nil, Sine, S.stanceSettings.Speed) | |
| 6811 | tweenJoint(RLegWeld, legC0.Crouch[2], nil, Sine, S.stanceSettings.Speed) | |
| 6812 | tweenJoint(LHip, CF(-1, -0.5, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 0.5, 1) * CFANG(0, RAD(-90), RAD(-90)), Sine, S.stanceSettings.Speed) | |
| 6813 | tweenJoint(RHip, CF(1, -0.5, 0.25) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 0.5, 1) * CFANG(RAD(-180), RAD(90), 0), Sine, S.stanceSettings.Speed) | |
| 6814 | tweenJoint(Root, CF(0, -1, 0) * CFANG(RAD(-90), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed) | |
| 6815 | tweenJoint(headWeld, CF(0, 1.5, 0), nil, Sine, S.stanceSettings.Speed) | |
| 6816 | else | |
| 6817 | ABWeld.C0 = CF(0, 0, -1 / 16) | |
| 6818 | LLegWeld.C0 = legC0.Crouch[1] | |
| 6819 | RLegWeld.C0 = legC0.Crouch[2] | |
| 6820 | LHip.C0, LHip.C1 = CF(-1, -0.5, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 0.5, 1) * CFANG(0, RAD(-90), RAD(-90)) | |
| 6821 | RHip.C0, RHip.C1 = CF(1, -0.5, 0.25) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 0.5, 1) * CFANG(RAD(-180), RAD(90), 0) | |
| 6822 | Root.C0 = CF(0, -1, 0) * CFANG(RAD(-90), 0, RAD(180)) | |
| 6823 | headWeld.C0 = CF(0, 1.5, 0) | |
| 6824 | end | |
| 6825 | end | |
| 6826 | ||
| 6827 | function Prone() | |
| 6828 | local LHip = Torso["Left Hip"] | |
| 6829 | local RHip = Torso["Right Hip"] | |
| 6830 | LHip.Part1 = nil | |
| 6831 | LLegWeld.Part1 = LLeg | |
| 6832 | RHip.Part1 = nil | |
| 6833 | RLegWeld.Part1 = RLeg | |
| 6834 | Stance = 2 | |
| 6835 | spreadStance = "Prone" | |
| 6836 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 6837 | if S.stanceSettings.Anim then | |
| 6838 | spawn(function() | |
| 6839 | local prevStanceSway = stanceSway | |
| 6840 | local X = 0 | |
| 6841 | local Increment = 1.5 / S.stanceSettings.Speed | |
| 6842 | while true do | |
| 6843 | RS.RenderStepped:wait() | |
| 6844 | local newX = X + Increment | |
| 6845 | X = (newX > 90 and 90 or newX) | |
| 6846 | if Stance ~= 2 then break end | |
| 6847 | stanceSway = numLerp(prevStanceSway, 0.5, Sine(X)) | |
| 6848 | if X == 90 then break end | |
| 6849 | end | |
| 6850 | end) | |
| 6851 | tweenJoint(ABWeld, CF(0, 0, -0.1), nil, Sine, S.stanceSettings.Speed) | |
| 6852 | tweenJoint(LLegWeld, legC0.Prone[1], nil, Sine, S.stanceSettings.Speed) | |
| 6853 | tweenJoint(RLegWeld, legC0.Prone[2], nil, Sine, S.stanceSettings.Speed) | |
| 6854 | tweenJoint(Root, CF(0, -2.5, 1) * CFANG(RAD(180), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed) | |
| 6855 | tweenJoint(headWeld, CF(0, 1, 1) * CFANG(RAD(90), 0, 0), nil, Sine, S.stanceSettings.Speed) | |
| 6856 | else | |
| 6857 | ABWeld.C0 = CF(0, 0, -1 / 8) | |
| 6858 | LLegWeld.C0 = legC0.Prone[1] | |
| 6859 | RLegWeld.C0 = legC0.Prone[2] | |
| 6860 | Root.C0 = CF(0, -2.5, 1) * CFANG(RAD(180), 0, RAD(180)) | |
| 6861 | headWeld.C0 = CF(0, 1, 1) * CFANG(RAD(90), 0, 0) | |
| 6862 | end | |
| 6863 | end | |
| 6864 | ||
| 6865 | function Dive() | |
| 6866 | onGround = false | |
| 6867 | local diveDirection = (HRP.CFrame * CFANG(S.diveSettings.Angle, 0, 0)).lookVector * S.walkSpeeds.Sprinting * S.diveSettings.Force | |
| 6868 | local BF = Instance.new("BodyForce")
| |
| 6869 | BF.force = diveDirection + Vector3.new(0, playerMass * 196.2, 0) | |
| 6870 | BF.Parent = HRP | |
| 6871 | --[[spawn(function() | |
| 6872 | HRP.Velocity = HRP.CFrame.lookVector * 60 + V3(0, 40, 0) | |
| 6873 | wait(0.1) | |
| 6874 | HRP.Velocity = HRP.CFrame.lookVector * 70 + V3(0, 30, 0) | |
| 6875 | wait(0.4) | |
| 6876 | HRP.Velocity = HRP.CFrame.lookVector * 30 + V3(0, -10, 0) | |
| 6877 | end)]] | |
| 6878 | delay(0.05, function() | |
| 6879 | spawn(function() | |
| 6880 | while true do | |
| 6881 | local newRay = Ray.new(HRP.Position, V3(0, -3.1, 0)) | |
| 6882 | local H, _ = workspace:FindPartOnRayWithIgnoreList(newRay, Ignore) | |
| 6883 | if H then | |
| 6884 | onGround = true | |
| 6885 | break | |
| 6886 | end | |
| 6887 | wait() | |
| 6888 | end | |
| 6889 | end) | |
| 6890 | Prone() | |
| 6891 | wait(0.1) | |
| 6892 | BF:Destroy() | |
| 6893 | end) | |
| 6894 | end | |
| 6895 | ||
| 6896 | --------------------[ MOUSE FUNCTIONS ]----------------------------------------------- | |
| 6897 | ||
| 6898 | function onMB1Down() | |
| 6899 | MB1Down = true | |
| 6900 | firstShot = true | |
| 6901 | if fireFunction then | |
| 6902 | fireFunction() | |
| 6903 | end | |
| 6904 | end | |
| 6905 | ||
| 6906 | function onMB1Up() | |
| 6907 | MB1Down = false | |
| 6908 | lowerSpread() | |
| 6909 | end | |
| 6910 | ||
| 6911 | function onMB2Down() | |
| 6912 | if S.aimSettings.holdToADS then | |
| 6913 | if (not AimingIn) and (not Aimed) then | |
| 6914 | AimingIn = true | |
| 6915 | aimGun() | |
| 6916 | AimingIn = false | |
| 6917 | end | |
| 6918 | else | |
| 6919 | if Aimed then | |
| 6920 | unAimGun() | |
| 6921 | else | |
| 6922 | aimGun() | |
| 6923 | end | |
| 6924 | end | |
| 6925 | end | |
| 6926 | ||
| 6927 | function onMB2Up() | |
| 6928 | if S.aimSettings.holdToADS then | |
| 6929 | if (not AimingOut) and Aimed then | |
| 6930 | AimingOut = true | |
| 6931 | unAimGun() | |
| 6932 | AimingOut = false | |
| 6933 | end | |
| 6934 | end | |
| 6935 | end | |
| 6936 | ||
| 6937 | function onScrollUp() | |
| 6938 | local newAimSensitivity = aimSensitivity + S.sensitivitySettings.Increment | |
| 6939 | aimSensitivity = ( | |
| 6940 | newAimSensitivity < S.sensitivitySettings.Min and S.sensitivitySettings.Min or | |
| 6941 | newAimSensitivity > S.sensitivitySettings.Max and S.sensitivitySettings.Max or | |
| 6942 | newAimSensitivity | |
| 6943 | ) | |
| 6944 | mouseSensitivity = (Aimed and aimSensitivity or mouseSensitivity) | |
| 6945 | ||
| 6946 | Sens.Text = "S: "..aimSensitivity | |
| 6947 | if mainGUI:IsDescendantOf(game) then | |
| 6948 | Sens.Visible = true | |
| 6949 | local t0 = tick() | |
| 6950 | lastSensUpdate = t0 | |
| 6951 | ||
| 6952 | wait(0.3) | |
| 6953 | ||
| 6954 | if lastSensUpdate <= t0 then | |
| 6955 | Sens.Visible = false | |
| 6956 | end | |
| 6957 | end | |
| 6958 | end | |
| 6959 | ||
| 6960 | function onScrollDown() | |
| 6961 | local newAimSensitivity = aimSensitivity - S.sensitivitySettings.Increment | |
| 6962 | aimSensitivity = ( | |
| 6963 | newAimSensitivity < S.sensitivitySettings.Min and S.sensitivitySettings.Min or | |
| 6964 | newAimSensitivity > S.sensitivitySettings.Max and S.sensitivitySettings.Max or | |
| 6965 | newAimSensitivity | |
| 6966 | ) | |
| 6967 | mouseSensitivity = (Aimed and aimSensitivity or mouseSensitivity) | |
| 6968 | ||
| 6969 | Sens.Text = "S: "..aimSensitivity | |
| 6970 | if mainGUI:IsDescendantOf(game) then | |
| 6971 | Sens.Visible = true | |
| 6972 | local t0 = tick() | |
| 6973 | lastSensUpdate = t0 | |
| 6974 | ||
| 6975 | wait(0.3) | |
| 6976 | ||
| 6977 | if lastSensUpdate <= t0 then | |
| 6978 | Sens.Visible = false | |
| 6979 | end | |
| 6980 | end | |
| 6981 | end | |
| 6982 | ||
| 6983 | --------------------[ KEYBOARD FUNCTIONS ]-------------------------------------------- | |
| 6984 | ||
| 6985 | function keyDown(K) | |
| 6986 | local Key = string.lower(K) | |
| 6987 | ||
| 6988 | if Key == S.Keys.lowerStance and S.canChangeStance then | |
| 6989 | if (not Running) then | |
| 6990 | if Stance == 0 then | |
| 6991 | if S.stanceSettings.Stances.Crouch then | |
| 6992 | Crouch() | |
| 6993 | elseif S.stanceSettings.Stances.Prone then | |
| 6994 | Prone() | |
| 6995 | end | |
| 6996 | elseif Stance == 1 then | |
| 6997 | if S.stanceSettings.Stances.Prone then | |
| 6998 | Prone() | |
| 6999 | end | |
| 7000 | end | |
| 7001 | elseif S.dolphinDive then | |
| 7002 | wait() | |
| 7003 | if Humanoid:GetState() ~= Enum.HumanoidStateType.Freefall and (not UIS:IsKeyDown("Space")) and runReady then
| |
| 7004 | local tempConnection = Humanoid.Changed:connect(function() | |
| 7005 | Humanoid.Jump = false | |
| 7006 | end) | |
| 7007 | runReady = false | |
| 7008 | Dive() | |
| 7009 | Running = false | |
| 7010 | wait(S.diveSettings.rechargeTime) | |
| 7011 | tempConnection:disconnect() | |
| 7012 | runReady = true | |
| 7013 | end | |
| 7014 | end | |
| 7015 | end | |
| 7016 | ||
| 7017 | if Key == S.Keys.raiseStance and S.canChangeStance then | |
| 7018 | if (not Running) then | |
| 7019 | if Stance == 2 then | |
| 7020 | if S.stanceSettings.Stances.Crouch then | |
| 7021 | Crouch() | |
| 7022 | else | |
| 7023 | Stand() | |
| 7024 | end | |
| 7025 | elseif Stance == 1 then | |
| 7026 | Stand() | |
| 7027 | end | |
| 7028 | end | |
| 7029 | end | |
| 7030 | ||
| 7031 | if Key == S.Keys.ADS then | |
| 7032 | if S.aimSettings.holdToADS then | |
| 7033 | if (not AimingIn) and (not Aimed) then | |
| 7034 | AimingIn = true | |
| 7035 | aimGun() | |
| 7036 | AimingIn = false | |
| 7037 | end | |
| 7038 | else | |
| 7039 | if Aimed then | |
| 7040 | unAimGun() | |
| 7041 | else | |
| 7042 | aimGun() | |
| 7043 | end | |
| 7044 | end | |
| 7045 | end | |
| 7046 | ||
| 7047 | if Key == S.Keys.selectFire and S.selectFire then | |
| 7048 | if canSelectFire then | |
| 7049 | canSelectFire = false | |
| 7050 | rawFireMode = rawFireMode + 1 | |
| 7051 | modeGUI.Text = Modes[((rawFireMode - 1) % numModes) + 1] | |
| 7052 | if modeGUI.Text == "AUTO" then | |
| 7053 | fireFunction = autoFire | |
| 7054 | elseif modeGUI.Text == "BURST" then | |
| 7055 | fireFunction = burstFire | |
| 7056 | elseif modeGUI.Text == "SEMI" then | |
| 7057 | fireFunction = semiFire | |
| 7058 | else | |
| 7059 | fireFunction = nil | |
| 7060 | end | |
| 7061 | local speedAlpha = S.selectFireSettings.animSpeed / 0.6 | |
| 7062 | if S.selectFireSettings.GUI then | |
| 7063 | spawn(function() | |
| 7064 | fireSelect.Visible = true | |
| 7065 | local prevRawFireMode = rawFireMode | |
| 7066 | local Increment = 1.5 / (speedAlpha * 0.25) | |
| 7067 | local X = 0 | |
| 7068 | wait(speedAlpha * 0.1) | |
| 7069 | while true do | |
| 7070 | RS.RenderStepped:wait() | |
| 7071 | local newX = X + Increment | |
| 7072 | X = (newX > 90 and 90 or newX) | |
| 7073 | if prevRawFireMode ~= rawFireMode then break end | |
| 7074 | updateModeLabels(rawFireMode - 1, rawFireMode, X) | |
| 7075 | if X == 90 then break end | |
| 7076 | end | |
| 7077 | wait(speedAlpha * 0.25) | |
| 7078 | fireSelect.Visible = false | |
| 7079 | end) | |
| 7080 | end | |
| 7081 | if S.selectFireSettings.Animation and (not Aimed) and (not isRunning) and (not isCrawling) then | |
| 7082 | spawn(function() | |
| 7083 | local sequenceTable = {
| |
| 7084 | function() | |
| 7085 | tweenJoint(RWeld2, nil, CFANG(0, RAD(5), 0), Sine, speedAlpha * 0.15) | |
| 7086 | tweenJoint(LWeld, armC0[1], CF(0.1, 1, -0.3) * CFANG(RAD(-7), 0, RAD(-65)), Linear, speedAlpha * 0.15) | |
| 7087 | wait(speedAlpha * 0.2) | |
| 7088 | end; | |
| 7089 | ||
| 7090 | function() | |
| 7091 | tweenJoint(LWeld, armC0[1], CF(0.1, 1, -0.3) * CFANG(RAD(-10), 0, RAD(-65)), Linear, speedAlpha * 0.1) | |
| 7092 | wait(speedAlpha * 0.2) | |
| 7093 | end; | |
| 7094 | ||
| 7095 | function() | |
| 7096 | tweenJoint(RWeld2, nil, CF(), Sine, speedAlpha * 0.2) | |
| 7097 | tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, speedAlpha * 0.2) | |
| 7098 | wait(speedAlpha * 0.2) | |
| 7099 | end; | |
| 7100 | } | |
| 7101 | ||
| 7102 | for _, F in pairs(sequenceTable) do | |
| 7103 | if Aimed or isRunning or isCrawling or Reloading then | |
| 7104 | break | |
| 7105 | end | |
| 7106 | F() | |
| 7107 | end | |
| 7108 | end) | |
| 7109 | end | |
| 7110 | if S.selectFireSettings.Animation or S.selectFireSettings.GUI then | |
| 7111 | wait(S.selectFireSettings.animSpeed) | |
| 7112 | end | |
| 7113 | canSelectFire = true | |
| 7114 | end | |
| 7115 | end | |
| 7116 | ||
| 7117 | if Key == S.Keys.Reload then | |
| 7118 | if (not Reloading) and (not isCrawling) then | |
| 7119 | Reload() | |
| 7120 | end | |
| 7121 | end | |
| 7122 | ||
| 7123 | if Key == S.Keys.Sprint then | |
| 7124 | runKeyPressed = true | |
| 7125 | if runReady then | |
| 7126 | if (not Idling) and Walking and (not Running) and (not Knifing) and (not (Aimed and S.guiScope and S.Keys.Sprint == S.Keys.scopeSteady)) then | |
| 7127 | monitorStamina() | |
| 7128 | end | |
| 7129 | end | |
| 7130 | end | |
| 7131 | ||
| 7132 | if Key == S.Keys.scopeSteady then | |
| 7133 | steadyKeyPressed = true | |
| 7134 | if Aimed and (not Aiming) then | |
| 7135 | takingBreath = false | |
| 7136 | steadyCamera() | |
| 7137 | end | |
| 7138 | end | |
| 7139 | ||
| 7140 | for _, PTable in pairs(Plugins.KeyDown) do | |
| 7141 | if Key == string.lower(PTable.Key) then | |
| 7142 | spawn(function() | |
| 7143 | PTable.Plugin() | |
| 7144 | end) | |
| 7145 | end | |
| 7146 | end | |
| 7147 | end | |
| 7148 | ||
| 7149 | function keyUp(K) | |
| 7150 | local Key = string.lower(K) | |
| 7151 | ||
| 7152 | if Key == S.Keys.ADS then | |
| 7153 | if S.aimSettings.holdToADS then | |
| 7154 | if (not AimingOut) and Aimed then | |
| 7155 | AimingOut = true | |
| 7156 | unAimGun() | |
| 7157 | AimingOut = false | |
| 7158 | end | |
| 7159 | end | |
| 7160 | end | |
| 7161 | ||
| 7162 | if Key == S.Keys.Sprint then | |
| 7163 | runKeyPressed = false | |
| 7164 | Running = false | |
| 7165 | if (not chargingStamina) then | |
| 7166 | rechargeStamina() | |
| 7167 | end | |
| 7168 | end | |
| 7169 | ||
| 7170 | if Key == S.Keys.scopeSteady then | |
| 7171 | steadyKeyPressed = false | |
| 7172 | end | |
| 7173 | ||
| 7174 | for _, PTable in pairs(Plugins.KeyUp) do | |
| 7175 | if Key == string.lower(PTable.Key) then | |
| 7176 | spawn(function() | |
| 7177 | PTable.Plugin() | |
| 7178 | end) | |
| 7179 | end | |
| 7180 | end | |
| 7181 | end | |
| 7182 | ||
| 7183 | --------------------[ END FUNCTIONS ]------------------------------------------------- | |
| 7184 | ||
| 7185 | -------------------------------------------------------------------------------------- | |
| 7186 | --------------------[ PRE-CONNECTIONS ]----------------------------------------------- | |
| 7187 | -------------------------------------------------------------------------------------- | |
| 7188 | ||
| 7189 | local function updateAnimVars() | |
| 7190 | wait() | |
| 7191 | Forward = (UIS:IsKeyDown("W") or UIS:IsKeyDown("Up"))
| |
| 7192 | Backward = (UIS:IsKeyDown("S") or UIS:IsKeyDown("Down"))
| |
| 7193 | local Right = UIS:IsKeyDown("D")
| |
| 7194 | local Left = UIS:IsKeyDown("A")
| |
| 7195 | ||
| 7196 | local walkingForward = (Forward and (not Backward)) | |
| 7197 | local walkingBackward = ((not Forward) and Backward) | |
| 7198 | local walkingRight = (Right and (not Left)) | |
| 7199 | local walkingLeft = ((not Right) and Left) | |
| 7200 | ||
| 7201 | if (Forward or Backward or Right or Left) then | |
| 7202 | Walking, Idling = true, false | |
| 7203 | if (not Running) and (not Aimed) then | |
| 7204 | spreadMotion = "Moving" | |
| 7205 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 7206 | end | |
| 7207 | elseif (not (Forward and Backward and Right and Left)) then | |
| 7208 | Walking, Idling = false, true | |
| 7209 | if (not Aimed) then | |
| 7210 | spreadMotion = "Idling" | |
| 7211 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 7212 | end | |
| 7213 | end | |
| 7214 | ||
| 7215 | local newArmTilt = ( | |
| 7216 | ((walkingForward or walkingBackward) and walkingRight) and 2.5 or | |
| 7217 | ((walkingForward or walkingBackward) and walkingLeft) and -2.5 or | |
| 7218 | ((not (walkingForward and walkingBackward)) and walkingRight) and 5 or | |
| 7219 | ((not (walkingForward and walkingBackward)) and walkingLeft) and -5 or 0 | |
| 7220 | ) | |
| 7221 | local newMoveAng = ( | |
| 7222 | (walkingForward and (not (walkingRight or walkingLeft))) and 0 or | |
| 7223 | (walkingForward and walkingRight) and RAD(-45) or | |
| 7224 | ((not (walkingForward or walkingBackward)) and walkingRight) and RAD(-90) or | |
| 7225 | (walkingBackward and walkingRight) and RAD(-135) or | |
| 7226 | (walkingBackward and (not (walkingRight or walkingLeft))) and (moveAng < 0 and RAD(-180) or RAD(180)) or | |
| 7227 | (walkingBackward and walkingLeft) and RAD(135) or | |
| 7228 | ((not (walkingForward or walkingBackward)) and walkingLeft) and RAD(90) or | |
| 7229 | (walkingForward and walkingLeft) and RAD(45) or 0 | |
| 7230 | ) | |
| 7231 | ||
| 7232 | local newAnimCode = math.random(-1e9, 1e9) | |
| 7233 | animCode = newAnimCode | |
| 7234 | local startTilt = armTilt | |
| 7235 | local startAng = (ABS(moveAng) == RAD(180)) and (newMoveAng > 0 and RAD(180) or RAD(-180)) or moveAng | |
| 7236 | local Increment = (startTilt == newArmTilt and 1.5 / 0.7 or 1.5 / (0.35 * ABS(startTilt - newArmTilt) / 5)) | |
| 7237 | local X = 0 | |
| 7238 | while true do | |
| 7239 | RS.RenderStepped:wait() | |
| 7240 | local newX = X + Increment | |
| 7241 | X = (newX > 90 and 90 or newX) | |
| 7242 | if animCode ~= newAnimCode then break end | |
| 7243 | armTilt = numLerp(startTilt, newArmTilt, Sine(X)) | |
| 7244 | moveAng = numLerp(startAng, newMoveAng, Sine(X)) | |
| 7245 | if X == 90 then break end | |
| 7246 | end | |
| 7247 | end | |
| 7248 | ||
| 7249 | M2.KeyDown:connect(updateAnimVars) | |
| 7250 | M2.KeyUp:connect(updateAnimVars) | |
| 7251 | updateAnimVars() | |
| 7252 | ||
| 7253 | -------------------------------------------------------------------------------------- | |
| 7254 | --------------------[ TOOL SELECTION AND DESELECTION ]-------------------------------- | |
| 7255 | -------------------------------------------------------------------------------------- | |
| 7256 | ||
| 7257 | function onEquipped() | |
| 7258 | wait() | |
| 7259 | if Humanoid.Health ~= 0 and (not Selected) and Gun.Parent == Char then | |
| 7260 | Selected = true | |
| 7261 | breakReload = false | |
| 7262 | equipAnimPlaying = true | |
| 7263 | ||
| 7264 | math.randomseed(tick()) --This sets a new seed for the random function each time you select the gun | |
| 7265 | ||
| 7266 | --------------------[ FAILSAFE RESETING ]------------------------------------- | |
| 7267 | ||
| 7268 | for _, GM in pairs(ignoreModel:GetChildren()) do | |
| 7269 | if GM.Name == "gunIgnore_"..Player.Name then | |
| 7270 | GM:Destroy() | |
| 7271 | end | |
| 7272 | end | |
| 7273 | ||
| 7274 | for _, c in pairs(Connections) do | |
| 7275 | c:disconnect() | |
| 7276 | end | |
| 7277 | ||
| 7278 | Connections = {}
| |
| 7279 | ||
| 7280 | --------------------[ REMOTE GUN SETUP ]-------------------------------------- | |
| 7281 | ||
| 7282 | --[[local Vars = {
| |
| 7283 | ignoreModel = ignoreModel; | |
| 7284 | Humanoid = Humanoid; | |
| 7285 | Shoulders = Shoulders; | |
| 7286 | Torso = Torso; | |
| 7287 | Head = Head; | |
| 7288 | armC0 = armC0; | |
| 7289 | leftArmC1 = S.equipSettings.leftArmC1; | |
| 7290 | rightArmC1 = S.equipSettings.rightArmC1; | |
| 7291 | LArm = LArm; | |
| 7292 | RArm = RArm; | |
| 7293 | gunParts = gunParts; | |
| 7294 | Handle = Handle; | |
| 7295 | } | |
| 7296 | gunIgnore, playerFolder, headWeld, headWeld2, animWeld, ABWeld, LWeld, RWeld, LWeld2, RWeld2, LLegWeld, RLegWeld, gunParts2 = gunSetup:InvokeServer(Vars)]] | |
| 7297 | ||
| 7298 | --------------------[ CREATING IGNORE MODELS ]-------------------------------- | |
| 7299 | ||
| 7300 | gunIgnore = Instance.new("Model")
| |
| 7301 | gunIgnore.Name = "gunIgnore_"..Player.Name | |
| 7302 | gunIgnore.Parent = ignoreModel | |
| 7303 | ||
| 7304 | --------------------[ MODIFYING THE PLAYER ]---------------------------------- | |
| 7305 | ||
| 7306 | Player.CameraMode = Enum.CameraMode.LockFirstPerson | |
| 7307 | Cam.CameraType = Enum.CameraType.Scriptable | |
| 7308 | Cam.FieldOfView = 80 | |
| 7309 | UIS.MouseBehavior = Enum.MouseBehavior.LockCenter | |
| 7310 | UIS.MouseIconEnabled = false | |
| 7311 | ||
| 7312 | local initialX, initialY = getYawPitch(Cam.CoordinateFrame) | |
| 7313 | camAng = -VEC2(initialX, initialY) | |
| 7314 | ||
| 7315 | mainGUI.Parent = Player.PlayerGui | |
| 7316 | ||
| 7317 | setUpGUI() | |
| 7318 | updateHealth() | |
| 7319 | ||
| 7320 | if S.selectFire then | |
| 7321 | local currentMode = Modes[((rawFireMode - 1) % numModes) + 1] | |
| 7322 | if currentMode == "AUTO" then | |
| 7323 | fireFunction = autoFire | |
| 7324 | elseif currentMode == "BURST" then | |
| 7325 | fireFunction = burstFire | |
| 7326 | elseif currentMode == "SEMI" then | |
| 7327 | fireFunction = semiFire | |
| 7328 | else | |
| 7329 | fireFunction = nil | |
| 7330 | end | |
| 7331 | else | |
| 7332 | if S.gunType.Semi then | |
| 7333 | fireFunction = semiFire | |
| 7334 | elseif S.gunType.Auto then | |
| 7335 | fireFunction = autoFire | |
| 7336 | elseif S.gunType.Burst then | |
| 7337 | fireFunction = burstFire | |
| 7338 | else | |
| 7339 | fireFunction = nil | |
| 7340 | end | |
| 7341 | end | |
| 7342 | ||
| 7343 | changePlayerTrans(Char, 1) | |
| 7344 | ||
| 7345 | Humanoid.AutoRotate = false | |
| 7346 | ||
| 7347 | Shoulders.Right.Part1 = nil | |
| 7348 | Shoulders.Left.Part1 = nil | |
| 7349 | ||
| 7350 | playerFolder = Instance.new("Model")
| |
| 7351 | playerFolder.Name = "playerFolder" | |
| 7352 | playerFolder.Parent = gunIgnore | |
| 7353 | ||
| 7354 | local headBase = Instance.new("Part")
| |
| 7355 | headBase.Transparency = 1 | |
| 7356 | headBase.Name = "headBase" | |
| 7357 | headBase.CanCollide = false | |
| 7358 | headBase.FormFactor = Enum.FormFactor.Custom | |
| 7359 | headBase.Size = V3(0.2, 0.2, 0.2) | |
| 7360 | headBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 7361 | headBase.TopSurface = Enum.SurfaceType.Smooth | |
| 7362 | headBase.Parent = playerFolder | |
| 7363 | ||
| 7364 | headWeld = Instance.new("Weld")
| |
| 7365 | headWeld.Part0 = Torso | |
| 7366 | headWeld.Part1 = headBase | |
| 7367 | headWeld.C0 = CF(0, 1.5, 0) | |
| 7368 | headWeld.Parent = Torso | |
| 7369 | ||
| 7370 | headWeld2 = Instance.new("Weld")
| |
| 7371 | headWeld2.Part0 = headBase | |
| 7372 | headWeld2.Part1 = Head | |
| 7373 | headWeld2.Parent = headBase | |
| 7374 | ||
| 7375 | neckClone = Neck:Clone() | |
| 7376 | ||
| 7377 | --[[local stanceBase = Instance.new("Part")
| |
| 7378 | stanceBase.Transparency = 1 | |
| 7379 | stanceBase.Name = "stanceBase" | |
| 7380 | stanceBase.CanCollide = false | |
| 7381 | stanceBase.FormFactor = Enum.FormFactor.Custom | |
| 7382 | stanceBase.Size = V3(0.2, 0.2, 0.2) | |
| 7383 | stanceBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 7384 | stanceBase.TopSurface = Enum.SurfaceType.Smooth | |
| 7385 | stanceBase.Parent = playerFolder | |
| 7386 | ||
| 7387 | stanceWeld = Instance.new("Weld")
| |
| 7388 | stanceWeld.Part0 = stanceBase | |
| 7389 | stanceWeld.Part1 = Torso | |
| 7390 | stanceWeld.Parent = stanceBase]] | |
| 7391 | ||
| 7392 | local animBase = Instance.new("Part")
| |
| 7393 | animBase.Transparency = 1 | |
| 7394 | animBase.Name = "animBase" | |
| 7395 | animBase.CanCollide = false | |
| 7396 | animBase.FormFactor = Enum.FormFactor.Custom | |
| 7397 | animBase.Size = V3(0.2, 0.2, 0.2) | |
| 7398 | animBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 7399 | animBase.TopSurface = Enum.SurfaceType.Smooth | |
| 7400 | animBase.Parent = playerFolder | |
| 7401 | ||
| 7402 | animWeld = Instance.new("Weld")
| |
| 7403 | animWeld.Part0 = animBase | |
| 7404 | animWeld.Part1 = headBase | |
| 7405 | animWeld.Parent = animBase | |
| 7406 | ||
| 7407 | local ArmBase = Instance.new("Part")
| |
| 7408 | ArmBase.Transparency = 1 | |
| 7409 | ArmBase.Name = "ArmBase" | |
| 7410 | ArmBase.CanCollide = false | |
| 7411 | ArmBase.FormFactor = Enum.FormFactor.Custom | |
| 7412 | ArmBase.Size = V3(0.2, 0.2, 0.2) | |
| 7413 | ArmBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 7414 | ArmBase.TopSurface = Enum.SurfaceType.Smooth | |
| 7415 | ArmBase.Parent = playerFolder | |
| 7416 | ||
| 7417 | ABWeld = Instance.new("Weld")
| |
| 7418 | ABWeld.Part0 = ArmBase | |
| 7419 | ABWeld.Part1 = animBase | |
| 7420 | ABWeld.Parent = ArmBase | |
| 7421 | ||
| 7422 | local LArmBase = Instance.new("Part")
| |
| 7423 | LArmBase.Transparency = 1 | |
| 7424 | LArmBase.Name = "LArmBase" | |
| 7425 | LArmBase.CanCollide = false | |
| 7426 | LArmBase.FormFactor = Enum.FormFactor.Custom | |
| 7427 | LArmBase.Size = V3(0.2, 0.2, 0.2) | |
| 7428 | LArmBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 7429 | LArmBase.TopSurface = Enum.SurfaceType.Smooth | |
| 7430 | LArmBase.Parent = playerFolder | |
| 7431 | ||
| 7432 | local RArmBase = Instance.new("Part")
| |
| 7433 | RArmBase.Transparency = 1 | |
| 7434 | RArmBase.Name = "RArmBase" | |
| 7435 | RArmBase.CanCollide = false | |
| 7436 | RArmBase.FormFactor = Enum.FormFactor.Custom | |
| 7437 | RArmBase.Size = V3(0.2, 0.2, 0.2) | |
| 7438 | RArmBase.BottomSurface = Enum.SurfaceType.Smooth | |
| 7439 | RArmBase.TopSurface = Enum.SurfaceType.Smooth | |
| 7440 | RArmBase.Parent = playerFolder | |
| 7441 | ||
| 7442 | LWeld = Instance.new("Weld")
| |
| 7443 | LWeld.Name = "LWeld" | |
| 7444 | LWeld.Part0 = ArmBase | |
| 7445 | LWeld.Part1 = LArmBase | |
| 7446 | LWeld.C0 = armC0[1] | |
| 7447 | LWeld.C1 = S.equipSettings.leftArmC1 | |
| 7448 | LWeld.Parent = ArmBase | |
| 7449 | ||
| 7450 | RWeld = Instance.new("Weld")
| |
| 7451 | RWeld.Name = "RWeld" | |
| 7452 | RWeld.Part0 = ArmBase | |
| 7453 | RWeld.Part1 = RArmBase | |
| 7454 | RWeld.C0 = armC0[2] | |
| 7455 | RWeld.C1 = S.equipSettings.rightArmC1 | |
| 7456 | RWeld.Parent = ArmBase | |
| 7457 | ||
| 7458 | LWeld2 = Instance.new("Weld")
| |
| 7459 | LWeld2.Name = "LWeld" | |
| 7460 | LWeld2.Part0 = LArmBase | |
| 7461 | LWeld2.Part1 = LArm | |
| 7462 | LWeld2.Parent = LArmBase | |
| 7463 | ||
| 7464 | RWeld2 = Instance.new("Weld")
| |
| 7465 | RWeld2.Name = "RWeld" | |
| 7466 | RWeld2.Part0 = RArmBase | |
| 7467 | RWeld2.Part1 = RArm | |
| 7468 | RWeld2.Parent = RArmBase | |
| 7469 | ||
| 7470 | LLegWeld = Instance.new("Weld")
| |
| 7471 | LLegWeld.Name = "LLegWeld" | |
| 7472 | LLegWeld.Part0 = Torso | |
| 7473 | LLegWeld.Part1 = nil | |
| 7474 | LLegWeld.C0 = CF(-0.5, -2, 0) | |
| 7475 | LLegWeld.Parent = Torso | |
| 7476 | ||
| 7477 | RLegWeld = Instance.new("Weld")
| |
| 7478 | RLegWeld.Name = "RLegWeld" | |
| 7479 | RLegWeld.Part0 = Torso | |
| 7480 | RLegWeld.Part1 = nil | |
| 7481 | RLegWeld.C0 = CF(0.5, -2, 0) | |
| 7482 | RLegWeld.Parent = Torso | |
| 7483 | ||
| 7484 | if S.playerArms then | |
| 7485 | armModel = Instance.new("Model", workspace.FilteringEnabled and playerFolder or Cam)
| |
| 7486 | ||
| 7487 | fakeLArm = LArm:Clone() | |
| 7488 | fakeLArm.Parent = armModel | |
| 7489 | fakeLArm.Transparency = S.fakeArmSettings.Transparency | |
| 7490 | fakeLArm.CanCollide = false | |
| 7491 | fakeLArm.Size = S.fakeArmSettings.armSize | |
| 7492 | fakeLArm:BreakJoints() | |
| 7493 | ||
| 7494 | --LArm.Transparency = 1 | |
| 7495 | ||
| 7496 | local fakeLWeld = Instance.new("Weld")
| |
| 7497 | fakeLWeld.Part0 = fakeLArm | |
| 7498 | fakeLWeld.Part1 = LArm | |
| 7499 | fakeLWeld.Parent = fakeLArm | |
| 7500 | ||
| 7501 | fakeRArm = RArm:Clone() | |
| 7502 | fakeRArm.Parent = armModel | |
| 7503 | fakeRArm.Transparency = S.fakeArmSettings.Transparency | |
| 7504 | fakeRArm.CanCollide = false | |
| 7505 | fakeRArm.Size = S.fakeArmSettings.armSize | |
| 7506 | fakeRArm:BreakJoints() | |
| 7507 | ||
| 7508 | --RArm.Transparency = 1 | |
| 7509 | ||
| 7510 | local fakeRWeld = Instance.new("Weld")
| |
| 7511 | fakeRWeld.Part0 = fakeRArm | |
| 7512 | fakeRWeld.Part1 = RArm | |
| 7513 | fakeRWeld.Parent = fakeRArm | |
| 7514 | ||
| 7515 | Instance.new("Humanoid", armModel)
| |
| 7516 | ||
| 7517 | if S.fakeArmSettings.characterMeshes then | |
| 7518 | for _,Obj in pairs(Char:GetChildren()) do | |
| 7519 | if Obj:IsA("CharacterMesh") then
| |
| 7520 | Obj:Clone().Parent = armModel | |
| 7521 | end | |
| 7522 | end | |
| 7523 | end | |
| 7524 | for _,Obj in pairs(Char:GetChildren()) do | |
| 7525 | if Obj:IsA("Shirt") then
| |
| 7526 | Obj:Clone().Parent = armModel | |
| 7527 | end | |
| 7528 | end | |
| 7529 | else | |
| 7530 | armTable = createArms() | |
| 7531 | if workspace.FilteringEnabled then | |
| 7532 | armTable[1].Model.Parent = playerFolder | |
| 7533 | armTable[2].Model.Parent = playerFolder | |
| 7534 | else | |
| 7535 | armTable[1].Model.Parent = Cam--playerFolder | |
| 7536 | armTable[2].Model.Parent = Cam--playerFolder | |
| 7537 | end | |
| 7538 | ||
| 7539 | fakeLArm = armTable[1].armPart | |
| 7540 | ||
| 7541 | --LArm.Transparency = 1 | |
| 7542 | ||
| 7543 | local fakeLWeld = Instance.new("Weld")
| |
| 7544 | fakeLWeld.Part0 = fakeLArm | |
| 7545 | fakeLWeld.Part1 = LArm | |
| 7546 | fakeLWeld.Parent = fakeLArm | |
| 7547 | ||
| 7548 | fakeRArm = armTable[2].armPart | |
| 7549 | ||
| 7550 | --RArm.Transparency = 1 | |
| 7551 | ||
| 7552 | local fakeRWeld = Instance.new("Weld")
| |
| 7553 | fakeRWeld.Part0 = fakeRArm | |
| 7554 | fakeRWeld.Part1 = RArm | |
| 7555 | fakeRWeld.Parent = fakeRArm | |
| 7556 | end | |
| 7557 | ||
| 7558 | --------------------[ MODIFYING THE GUN ]------------------------------------- | |
| 7559 | ||
| 7560 | for _, Tab in pairs(gunParts) do | |
| 7561 | local Weld = Instance.new("Weld")
| |
| 7562 | Weld.Name = "MainWeld" | |
| 7563 | Weld.Part0 = Handle | |
| 7564 | Weld.Part1 = Tab.Obj | |
| 7565 | Weld.C0 = Tab.Obj.weldCF.Value | |
| 7566 | Weld.Parent = Handle | |
| 7567 | Tab.Weld = Weld | |
| 7568 | end | |
| 7569 | ||
| 7570 | Grip = RArm:WaitForChild("RightGrip")
| |
| 7571 | ||
| 7572 | local handleCF = Torso.CFrame * CF(0, 0.5, 0) * armC0[2] * S.aimedC1.rightArm:inverse() * Grip.C0 | |
| 7573 | local handleOffset = AimPart.CFrame:toObjectSpace(Handle.CFrame) | |
| 7574 | aimedGripCF = ((Torso.CFrame * CF(headOffset.X, headOffset.Y, 0)) * handleOffset):toObjectSpace(handleCF) | |
| 7575 | ||
| 7576 | Grip.C1 = S.equipSettings.GripC1 | |
| 7577 | ||
| 7578 | --------------------[ RUNNING PLUGINS ]--------------------------------------- | |
| 7579 | ||
| 7580 | for _, Plugin in pairs(Plugins.OnEquipped) do | |
| 7581 | spawn(function() | |
| 7582 | Plugin() | |
| 7583 | end) | |
| 7584 | end | |
| 7585 | ||
| 7586 | --------------------[ GETTING PLAYER MASS ]----------------------------------- | |
| 7587 | ||
| 7588 | local connectedParts = HRP:GetConnectedParts(true) | |
| 7589 | for _, v in pairs(connectedParts) do | |
| 7590 | if v:IsA("BasePart") then
| |
| 7591 | playerMass = playerMass + v:GetMass() | |
| 7592 | end | |
| 7593 | end | |
| 7594 | ||
| 7595 | --------------------[ CONNECTIONS ]------------------------------------------- | |
| 7596 | ||
| 7597 | INSERT(Connections, Humanoid.Died:connect(function() | |
| 7598 | onUnequipped(true) | |
| 7599 | end)) | |
| 7600 | ||
| 7601 | INSERT(Connections, Humanoid.Jumping:connect(function() | |
| 7602 | if Stance ~= 0 then | |
| 7603 | Stand() | |
| 7604 | end | |
| 7605 | end)) | |
| 7606 | ||
| 7607 | INSERT(Connections, Humanoid.StateChanged:connect(onHumanoidStateChanged)) | |
| 7608 | ||
| 7609 | INSERT(Connections, Humanoid.HealthChanged:connect(updateHealth)) | |
| 7610 | ||
| 7611 | INSERT(Connections, M2.Button1Down:connect(onMB1Down)) | |
| 7612 | ||
| 7613 | INSERT(Connections, M2.Button1Up:connect(onMB1Up)) | |
| 7614 | ||
| 7615 | INSERT(Connections, M2.Button2Down:connect(onMB2Down)) | |
| 7616 | ||
| 7617 | INSERT(Connections, M2.Button2Up:connect(onMB2Up)) | |
| 7618 | ||
| 7619 | INSERT(Connections, M2.KeyDown:connect(keyDown)) | |
| 7620 | ||
| 7621 | INSERT(Connections, M2.KeyUp:connect(keyUp)) | |
| 7622 | ||
| 7623 | if S.sensitivitySettings.scrollToChange then | |
| 7624 | INSERT(Connections, M2.WheelForward:connect(onScrollUp)) | |
| 7625 | INSERT(Connections, M2.WheelBackward:connect(onScrollDown)) | |
| 7626 | end | |
| 7627 | ||
| 7628 | if S.AutoKnife then | |
| 7629 | INSERT(Connections, RS.Stepped:connect(function() | |
| 7630 | local H, P = AdvRayCast(Head.CFrame.p, Head.CFrame.lookVector, S.AutoKnifeDist, nil) | |
| 7631 | if H then | |
| 7632 | local HitHuman = findFirstClass(H.Parent, "Humanoid") | |
| 7633 | if HitHuman and isEnemy(HitHuman) and HitHuman.Health ~= 0 then | |
| 7634 | Knife() | |
| 7635 | end | |
| 7636 | end | |
| 7637 | end)) | |
| 7638 | end | |
| 7639 | ||
| 7640 | INSERT(Connections, UIS.InputChanged:connect(function(inputObj) | |
| 7641 | if inputObj.UserInputType == Enum.UserInputType.MouseMovement then | |
| 7642 | local rawCamAng = camAng - (VEC2(RAD(inputObj.Delta.x), RAD(inputObj.Delta.y)) * mouseSensitivity * 0.25) | |
| 7643 | camAng = VEC2(rawCamAng.x, (rawCamAng.y > RAD(80) and RAD(80) or rawCamAng.y < RAD(-80) and RAD(-80) or rawCamAng.y)) | |
| 7644 | ||
| 7645 | desiredXOffset = math.min(math.max(inputObj.Delta.x, -S.momentumSettings.maxInput), S.momentumSettings.maxInput) | |
| 7646 | desiredYOffset = math.min(math.max(inputObj.Delta.y, -S.momentumSettings.maxInput), S.momentumSettings.maxInput) | |
| 7647 | end | |
| 7648 | end)) | |
| 7649 | ||
| 7650 | INSERT(Connections, M2.Idle:connect(function(inputObj) | |
| 7651 | desiredXOffset = 0 | |
| 7652 | desiredYOffset = 0 | |
| 7653 | end)) | |
| 7654 | ||
| 7655 | INSERT(Connections, RS.Stepped:connect(function() | |
| 7656 | if tick() - lastBeat > (Humanoid.Health / 75) then | |
| 7657 | lastBeat = tick() | |
| 7658 | HUD.Health.Tray.Beat:TweenPosition( | |
| 7659 | UDim2.new(0, -21, 0, 0), | |
| 7660 | Enum.EasingDirection.Out, | |
| 7661 | Enum.EasingStyle.Linear, | |
| 7662 | 0.7 - ((100 - Humanoid.Health) / 400), | |
| 7663 | false, | |
| 7664 | function() | |
| 7665 | HUD.Health.Tray.Beat.Position = UDim2.new(1, 0, 0, 0) | |
| 7666 | end | |
| 7667 | ) | |
| 7668 | end | |
| 7669 | end)) | |
| 7670 | ||
| 7671 | INSERT(Connections, RS.RenderStepped:connect(function() | |
| 7672 | --Main animation | |
| 7673 | local animC0, animC1 = getAnimCF() | |
| 7674 | animWeld.C0 = animC0 | |
| 7675 | animWeld.C1 = animC1 | |
| 7676 | ||
| 7677 | --Camera updating | |
| 7678 | renderCamera() | |
| 7679 | end)) | |
| 7680 | ||
| 7681 | --------------------[ ANIMATE GUN ]------------------------------------------- | |
| 7682 | ||
| 7683 | tweenJoint(LWeld, nil, S.unAimedC1.leftArm, Sine, S.equipSettings.Time) | |
| 7684 | tweenJoint(RWeld, nil, S.unAimedC1.rightArm, Sine, S.equipSettings.Time) | |
| 7685 | tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, S.equipSettings.Time) | |
| 7686 | spawn(function() | |
| 7687 | local T = tick() | |
| 7688 | while true do | |
| 7689 | if tick() - T > S.equipSettings.Time then break end | |
| 7690 | if (not Selected) then break end | |
| 7691 | wait() | |
| 7692 | end | |
| 7693 | equipAnimPlaying = false | |
| 7694 | end) | |
| 7695 | ||
| 7696 | Animate() | |
| 7697 | end | |
| 7698 | end | |
| 7699 | ||
| 7700 | function onUnequipped(deleteTool) | |
| 7701 | if Selected then | |
| 7702 | Selected = false | |
| 7703 | ||
| 7704 | breakReload = true | |
| 7705 | ||
| 7706 | --------------------[ RUNNING PLUGINS ]--------------------------------------- | |
| 7707 | ||
| 7708 | for _, Plugin in pairs(Plugins.OnUnEquipped) do | |
| 7709 | spawn(function() | |
| 7710 | Plugin() | |
| 7711 | end) | |
| 7712 | end | |
| 7713 | ||
| 7714 | --------------------[ MODIFYING THE PLAYER ]---------------------------------- | |
| 7715 | ||
| 7716 | Cam.FieldOfView = 70 | |
| 7717 | Cam.CameraType = Enum.CameraType.Custom | |
| 7718 | ||
| 7719 | UIS.MouseBehavior = Enum.MouseBehavior.Default | |
| 7720 | UIS.MouseIconEnabled = true | |
| 7721 | ||
| 7722 | Player.CameraMode = Enum.CameraMode.Classic | |
| 7723 | ||
| 7724 | if armTable then | |
| 7725 | armTable[1].Model:Destroy() | |
| 7726 | armTable[2].Model:Destroy() | |
| 7727 | elseif armModel then | |
| 7728 | armModel:Destroy() | |
| 7729 | end | |
| 7730 | ||
| 7731 | LLegWeld:Destroy() | |
| 7732 | RLegWeld:Destroy() | |
| 7733 | ||
| 7734 | changePlayerTrans(Char, 0) | |
| 7735 | ||
| 7736 | mainGUI.Parent = script | |
| 7737 | ||
| 7738 | Shoulders.Right.Part1 = RArm | |
| 7739 | Shoulders.Left.Part1 = LArm | |
| 7740 | ||
| 7741 | neckClone.Parent = Torso | |
| 7742 | headWeld:Destroy() | |
| 7743 | ||
| 7744 | Humanoid.WalkSpeed = 16 | |
| 7745 | Humanoid.AutoRotate = true | |
| 7746 | ||
| 7747 | --------------------[ RESETING THE TOOL ]------------------------------------- | |
| 7748 | ||
| 7749 | gunIgnore:Destroy() | |
| 7750 | ||
| 7751 | mouseSensitivity = S.sensitivitySettings.Default | |
| 7752 | ||
| 7753 | MB1Down = false | |
| 7754 | ||
| 7755 | playerMass = 0 | |
| 7756 | ||
| 7757 | Aimed = false | |
| 7758 | ||
| 7759 | camOffsets = {
| |
| 7760 | guiScope = {
| |
| 7761 | Rot = V3(); | |
| 7762 | }; | |
| 7763 | Reload = {
| |
| 7764 | Rot = V3(); | |
| 7765 | Code = nil; | |
| 7766 | }; | |
| 7767 | Recoil = {
| |
| 7768 | Rot = V3(); | |
| 7769 | Code = nil; | |
| 7770 | }; | |
| 7771 | } | |
| 7772 | ||
| 7773 | recoilAnim = {
| |
| 7774 | Pos = V3(); | |
| 7775 | Rot = V3(); | |
| 7776 | Code = nil; | |
| 7777 | } | |
| 7778 | ||
| 7779 | --Setting the aim variables to unaimed | |
| 7780 | spreadZoom = "unAimed" | |
| 7781 | scopeMain.Visible = false | |
| 7782 | scopeSteady.Visible = false | |
| 7783 | aimAlpha = 0 | |
| 7784 | aimHeadOffset = 0 | |
| 7785 | jumpAnimMultiplier = 1 | |
| 7786 | translationDivisor = 7 | |
| 7787 | rotationMultiplier = S.momentumSettings.Amplitude.unAimed | |
| 7788 | armTiltMultiplier = 1 | |
| 7789 | Scope.BackgroundTransparency = 1 | |
| 7790 | if S.guiScope then | |
| 7791 | spawn(function() | |
| 7792 | for _, Obj in pairs(Gun:GetChildren()) do | |
| 7793 | if Obj:IsA("BasePart") then
| |
| 7794 | Obj.LocalTransparencyModifier = 0 | |
| 7795 | end | |
| 7796 | end | |
| 7797 | end) | |
| 7798 | end | |
| 7799 | ||
| 7800 | onGround = true | |
| 7801 | ||
| 7802 | for _, Tab in pairs(gunParts) do | |
| 7803 | Tab.Weld:Destroy() | |
| 7804 | Tab.Weld = nil | |
| 7805 | end | |
| 7806 | ||
| 7807 | for _,c in pairs(Connections) do | |
| 7808 | c:disconnect() | |
| 7809 | end | |
| 7810 | ||
| 7811 | Connections = {}
| |
| 7812 | ||
| 7813 | if deleteTool then | |
| 7814 | Cam:ClearAllChildren() | |
| 7815 | Gun:Destroy() | |
| 7816 | end | |
| 7817 | ||
| 7818 | wait() --This is here in case you dolphin dived and deselected the tool instantly | |
| 7819 | ||
| 7820 | if S.stanceSettings.standOnDeselect and Stance ~= 0 then | |
| 7821 | crawlCamRot = 0 | |
| 7822 | isCrawling = false | |
| 7823 | stanceSway = 1 | |
| 7824 | spreadStance = "Stand" | |
| 7825 | Stand(true) | |
| 7826 | end | |
| 7827 | baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion] | |
| 7828 | end | |
| 7829 | end | |
| 7830 | ||
| 7831 | Gun.Equipped:connect(onEquipped) | |
| 7832 | Gun.Unequipped:connect(function() onUnequipped(false) end) | |
| 7833 | ||
| 7834 | -------------------------------------------------------------------------------------- | |
| 7835 | --------------------[ END PROGRAM ]--------------------------------------------------- | |
| 7836 | -------------------------------------------------------------------------------------- | |
| 7837 | end)) | |
| 7838 | IntValue209.Name = "ignoreCode" | |
| 7839 | IntValue209.Parent = LocalScript208 | |
| 7840 | Folder210.Name = "Server_Scripts" | |
| 7841 | Folder210.Parent = LocalScript208 | |
| 7842 | ScreenGui211.Name = "mainGUI" | |
| 7843 | ScreenGui211.Parent = LocalScript208 | |
| 7844 | ImageLabel212.Name = "hitMarker" | |
| 7845 | ImageLabel212.Parent = ScreenGui211 | |
| 7846 | ImageLabel212.Transparency = 1 | |
| 7847 | ImageLabel212.Size = UDim2.new(0, 26, 0, 26) | |
| 7848 | ImageLabel212.Position = UDim2.new(0.5, -13, 0.5, -31) | |
| 7849 | ImageLabel212.Visible = false | |
| 7850 | ImageLabel212.BackgroundTransparency = 1 | |
| 7851 | ImageLabel212.ZIndex = 10 | |
| 7852 | ImageLabel212.Image = "http://www.roblox.com/asset/?id=121173757" | |
| 7853 | NumberValue213.Name = "lastMark" | |
| 7854 | NumberValue213.Parent = ImageLabel212 | |
| 7855 | Frame214.Name = "crossHair" | |
| 7856 | Frame214.Parent = ScreenGui211 | |
| 7857 | Frame214.Position = UDim2.new(0.5, 0, 0.5, -18) | |
| 7858 | Frame214.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7859 | Frame214.BorderColor3 = Color3.new(0, 0, 0) | |
| 7860 | Frame214.BorderSizePixel = 0 | |
| 7861 | ImageLabel215.Parent = Frame214 | |
| 7862 | ImageLabel215.Transparency = 1 | |
| 7863 | ImageLabel215.Size = UDim2.new(0, 300, 0, 300) | |
| 7864 | ImageLabel215.Position = UDim2.new(0, -150, 0, -150) | |
| 7865 | ImageLabel215.Visible = false | |
| 7866 | ImageLabel215.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7867 | ImageLabel215.BackgroundTransparency = 1 | |
| 7868 | ImageLabel215.ZIndex = 2 | |
| 7869 | ImageLabel215.Image = "http://www.roblox.com/asset/?id=68308747" | |
| 7870 | TextLabel216.Name = "Reload" | |
| 7871 | TextLabel216.Parent = Frame214 | |
| 7872 | TextLabel216.Transparency = 1 | |
| 7873 | TextLabel216.Size = UDim2.new(0, 100, 0, 20) | |
| 7874 | TextLabel216.Text = "RELOADING..." | |
| 7875 | TextLabel216.Position = UDim2.new(0, -50, 0, 70) | |
| 7876 | TextLabel216.Visible = false | |
| 7877 | TextLabel216.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7878 | TextLabel216.BackgroundTransparency = 1 | |
| 7879 | TextLabel216.ZIndex = 2 | |
| 7880 | TextLabel216.Font = Enum.Font.SourceSansBold | |
| 7881 | TextLabel216.FontSize = Enum.FontSize.Size18 | |
| 7882 | TextLabel216.TextColor3 = Color3.new(1, 1, 1) | |
| 7883 | TextLabel216.TextStrokeTransparency = 0.5 | |
| 7884 | Frame217.Name = "C" | |
| 7885 | Frame217.Parent = Frame214 | |
| 7886 | Frame217.Transparency = 1 | |
| 7887 | Frame217.Size = UDim2.new(0, 4, 0, 500) | |
| 7888 | Frame217.Position = UDim2.new(0, -2, 0, 0) | |
| 7889 | Frame217.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7890 | Frame217.BackgroundTransparency = 1 | |
| 7891 | Frame217.ClipsDescendants = true | |
| 7892 | TextLabel218.Name = "Line" | |
| 7893 | TextLabel218.Parent = Frame217 | |
| 7894 | TextLabel218.Size = UDim2.new(0, 2, 0, 15) | |
| 7895 | TextLabel218.Text = "" | |
| 7896 | TextLabel218.Position = UDim2.new(0.5, -1, 0, 10) | |
| 7897 | TextLabel218.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7898 | TextLabel218.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157) | |
| 7899 | TextLabel218.Font = Enum.Font.SourceSans | |
| 7900 | TextLabel218.FontSize = Enum.FontSize.Size14 | |
| 7901 | Frame219.Name = "A" | |
| 7902 | Frame219.Parent = Frame214 | |
| 7903 | Frame219.Transparency = 1 | |
| 7904 | Frame219.Size = UDim2.new(0, 4, 0, 500) | |
| 7905 | Frame219.Position = UDim2.new(0, -2, 0, -500) | |
| 7906 | Frame219.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7907 | Frame219.BackgroundTransparency = 1 | |
| 7908 | Frame219.ClipsDescendants = true | |
| 7909 | TextLabel220.Name = "Line" | |
| 7910 | TextLabel220.Parent = Frame219 | |
| 7911 | TextLabel220.Size = UDim2.new(0, 2, 0, 15) | |
| 7912 | TextLabel220.Text = "" | |
| 7913 | TextLabel220.Position = UDim2.new(0.5, -1, 1, -25) | |
| 7914 | TextLabel220.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7915 | TextLabel220.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157) | |
| 7916 | TextLabel220.Font = Enum.Font.SourceSans | |
| 7917 | TextLabel220.FontSize = Enum.FontSize.Size14 | |
| 7918 | Frame221.Name = "B" | |
| 7919 | Frame221.Parent = Frame214 | |
| 7920 | Frame221.Transparency = 1 | |
| 7921 | Frame221.Size = UDim2.new(0, 500, 0, 4) | |
| 7922 | Frame221.Position = UDim2.new(0, 0, 0, -2) | |
| 7923 | Frame221.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7924 | Frame221.BackgroundTransparency = 1 | |
| 7925 | Frame221.ClipsDescendants = true | |
| 7926 | TextLabel222.Name = "Line" | |
| 7927 | TextLabel222.Parent = Frame221 | |
| 7928 | TextLabel222.Size = UDim2.new(0, 15, 0, 2) | |
| 7929 | TextLabel222.Text = "" | |
| 7930 | TextLabel222.Position = UDim2.new(0, 10, 0.5, -1) | |
| 7931 | TextLabel222.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7932 | TextLabel222.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157) | |
| 7933 | TextLabel222.Font = Enum.Font.SourceSans | |
| 7934 | TextLabel222.FontSize = Enum.FontSize.Size14 | |
| 7935 | Frame223.Name = "D" | |
| 7936 | Frame223.Parent = Frame214 | |
| 7937 | Frame223.Transparency = 1 | |
| 7938 | Frame223.Size = UDim2.new(0, 500, 0, 4) | |
| 7939 | Frame223.Position = UDim2.new(0, -500, 0, -2) | |
| 7940 | Frame223.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7941 | Frame223.BackgroundTransparency = 1 | |
| 7942 | Frame223.ClipsDescendants = true | |
| 7943 | TextLabel224.Name = "Line" | |
| 7944 | TextLabel224.Parent = Frame223 | |
| 7945 | TextLabel224.Size = UDim2.new(0, 15, 0, 2) | |
| 7946 | TextLabel224.Text = "" | |
| 7947 | TextLabel224.Position = UDim2.new(1, -25, 0.5, -1) | |
| 7948 | TextLabel224.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 7949 | TextLabel224.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157) | |
| 7950 | TextLabel224.Font = Enum.Font.SourceSans | |
| 7951 | TextLabel224.FontSize = Enum.FontSize.Size14 | |
| 7952 | Frame225.Name = "HUD" | |
| 7953 | Frame225.Parent = ScreenGui211 | |
| 7954 | Frame225.Transparency = 0.30000001192093 | |
| 7955 | Frame225.Size = UDim2.new(0, 175, 0, 90) | |
| 7956 | Frame225.Position = UDim2.new(1, -200, 1, -165) | |
| 7957 | Frame225.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863) | |
| 7958 | Frame225.BackgroundTransparency = 0.30000001192093 | |
| 7959 | Frame225.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863) | |
| 7960 | Frame225.BorderSizePixel = 5 | |
| 7961 | Frame225.ZIndex = 10 | |
| 7962 | Frame226.Name = "Ammo" | |
| 7963 | Frame226.Parent = Frame225 | |
| 7964 | Frame226.Transparency = 1 | |
| 7965 | Frame226.Size = UDim2.new(0, 175, 0, 40) | |
| 7966 | Frame226.Position = UDim2.new(0, 0, 0, 45) | |
| 7967 | Frame226.BackgroundTransparency = 1 | |
| 7968 | Frame226.ZIndex = 10 | |
| 7969 | TextLabel227.Name = "Slash" | |
| 7970 | TextLabel227.Parent = Frame226 | |
| 7971 | TextLabel227.Transparency = 1 | |
| 7972 | TextLabel227.Size = UDim2.new(0, 10, 0, 25) | |
| 7973 | TextLabel227.Text = "/" | |
| 7974 | TextLabel227.Position = UDim2.new(0, 90, 0, 0) | |
| 7975 | TextLabel227.BackgroundTransparency = 1 | |
| 7976 | TextLabel227.ZIndex = 10 | |
| 7977 | TextLabel227.Font = Enum.Font.ArialBold | |
| 7978 | TextLabel227.FontSize = Enum.FontSize.Size24 | |
| 7979 | TextLabel227.TextColor3 = Color3.new(1, 1, 1) | |
| 7980 | TextLabel228.Name = "Stored" | |
| 7981 | TextLabel228.Parent = Frame226 | |
| 7982 | TextLabel228.Transparency = 1 | |
| 7983 | TextLabel228.Size = UDim2.new(0, 70, 0, 25) | |
| 7984 | TextLabel228.Text = "100" | |
| 7985 | TextLabel228.Position = UDim2.new(0, 105, 0, 0) | |
| 7986 | TextLabel228.BackgroundTransparency = 1 | |
| 7987 | TextLabel228.ZIndex = 10 | |
| 7988 | TextLabel228.Font = Enum.Font.ArialBold | |
| 7989 | TextLabel228.FontSize = Enum.FontSize.Size24 | |
| 7990 | TextLabel228.TextColor3 = Color3.new(1, 1, 1) | |
| 7991 | TextLabel228.TextXAlignment = Enum.TextXAlignment.Left | |
| 7992 | TextLabel229.Name = "Background" | |
| 7993 | TextLabel229.Parent = TextLabel228 | |
| 7994 | TextLabel229.Transparency = 1 | |
| 7995 | TextLabel229.Size = UDim2.new(1, 0, 1, 0) | |
| 7996 | TextLabel229.Text = "000" | |
| 7997 | TextLabel229.BackgroundTransparency = 1 | |
| 7998 | TextLabel229.ZIndex = 10 | |
| 7999 | TextLabel229.Font = Enum.Font.ArialBold | |
| 8000 | TextLabel229.FontSize = Enum.FontSize.Size24 | |
| 8001 | TextLabel229.TextColor3 = Color3.new(0.588235, 0.588235, 0.588235) | |
| 8002 | TextLabel229.TextTransparency = 0.80000001192093 | |
| 8003 | TextLabel229.TextWrapped = true | |
| 8004 | TextLabel229.TextXAlignment = Enum.TextXAlignment.Left | |
| 8005 | TextLabel230.Name = "Clip" | |
| 8006 | TextLabel230.Parent = Frame226 | |
| 8007 | TextLabel230.Transparency = 1 | |
| 8008 | TextLabel230.Size = UDim2.new(0, 85, 1, 0) | |
| 8009 | TextLabel230.Text = "9" | |
| 8010 | TextLabel230.BackgroundTransparency = 1 | |
| 8011 | TextLabel230.ZIndex = 10 | |
| 8012 | TextLabel230.Font = Enum.Font.ArialBold | |
| 8013 | TextLabel230.FontSize = Enum.FontSize.Size48 | |
| 8014 | TextLabel230.TextColor3 = Color3.new(1, 1, 1) | |
| 8015 | TextLabel230.TextXAlignment = Enum.TextXAlignment.Right | |
| 8016 | TextLabel231.Name = "Background" | |
| 8017 | TextLabel231.Parent = TextLabel230 | |
| 8018 | TextLabel231.Transparency = 1 | |
| 8019 | TextLabel231.Size = UDim2.new(1, 0, 1, 0) | |
| 8020 | TextLabel231.Text = "000" | |
| 8021 | TextLabel231.BackgroundTransparency = 1 | |
| 8022 | TextLabel231.ZIndex = 10 | |
| 8023 | TextLabel231.Font = Enum.Font.ArialBold | |
| 8024 | TextLabel231.FontSize = Enum.FontSize.Size48 | |
| 8025 | TextLabel231.TextColor3 = Color3.new(0.588235, 0.588235, 0.588235) | |
| 8026 | TextLabel231.TextTransparency = 0.80000001192093 | |
| 8027 | TextLabel231.TextXAlignment = Enum.TextXAlignment.Right | |
| 8028 | Frame232.Name = "Mode" | |
| 8029 | Frame232.Parent = Frame225 | |
| 8030 | Frame232.Transparency = 1 | |
| 8031 | Frame232.Size = UDim2.new(0, 85, 0, 20) | |
| 8032 | Frame232.Position = UDim2.new(0, 90, 0, 65) | |
| 8033 | Frame232.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8034 | Frame232.BackgroundTransparency = 1 | |
| 8035 | Frame232.ZIndex = 10 | |
| 8036 | TextLabel233.Name = "Bracket" | |
| 8037 | TextLabel233.Parent = Frame232 | |
| 8038 | TextLabel233.Transparency = 1 | |
| 8039 | TextLabel233.Size = UDim2.new(0, 5, 0, 20) | |
| 8040 | TextLabel233.Text = "[" | |
| 8041 | TextLabel233.BackgroundTransparency = 1 | |
| 8042 | TextLabel233.ZIndex = 10 | |
| 8043 | TextLabel233.Font = Enum.Font.ArialBold | |
| 8044 | TextLabel233.FontSize = Enum.FontSize.Size18 | |
| 8045 | TextLabel233.TextColor3 = Color3.new(1, 1, 1) | |
| 8046 | TextLabel233.TextXAlignment = Enum.TextXAlignment.Left | |
| 8047 | TextLabel234.Name = "Bracket" | |
| 8048 | TextLabel234.Parent = Frame232 | |
| 8049 | TextLabel234.Transparency = 1 | |
| 8050 | TextLabel234.Size = UDim2.new(0, 5, 0, 20) | |
| 8051 | TextLabel234.Text = "]" | |
| 8052 | TextLabel234.Position = UDim2.new(1, -5, 0, 0) | |
| 8053 | TextLabel234.BackgroundTransparency = 1 | |
| 8054 | TextLabel234.ZIndex = 10 | |
| 8055 | TextLabel234.Font = Enum.Font.ArialBold | |
| 8056 | TextLabel234.FontSize = Enum.FontSize.Size18 | |
| 8057 | TextLabel234.TextColor3 = Color3.new(1, 1, 1) | |
| 8058 | TextLabel234.TextXAlignment = Enum.TextXAlignment.Left | |
| 8059 | TextLabel235.Name = "Main" | |
| 8060 | TextLabel235.Parent = Frame232 | |
| 8061 | TextLabel235.Transparency = 1 | |
| 8062 | TextLabel235.Size = UDim2.new(1, 0, 0, 20) | |
| 8063 | TextLabel235.Text = "Auto" | |
| 8064 | TextLabel235.BackgroundTransparency = 1 | |
| 8065 | TextLabel235.ZIndex = 10 | |
| 8066 | TextLabel235.Font = Enum.Font.SourceSansBold | |
| 8067 | TextLabel235.FontSize = Enum.FontSize.Size18 | |
| 8068 | TextLabel235.TextColor3 = Color3.new(1, 1, 1) | |
| 8069 | TextLabel235.TextWrapped = true | |
| 8070 | Frame236.Name = "Health" | |
| 8071 | Frame236.Parent = Frame225 | |
| 8072 | Frame236.Transparency = 0.30000001192093 | |
| 8073 | Frame236.Size = UDim2.new(1, 0, 0, 25) | |
| 8074 | Frame236.Position = UDim2.new(0, 0, 0, -40) | |
| 8075 | Frame236.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863) | |
| 8076 | Frame236.BackgroundTransparency = 0.30000001192093 | |
| 8077 | Frame236.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863) | |
| 8078 | Frame236.BorderSizePixel = 5 | |
| 8079 | Frame236.ZIndex = 10 | |
| 8080 | TextLabel237.Name = "Num" | |
| 8081 | TextLabel237.Parent = Frame236 | |
| 8082 | TextLabel237.Transparency = 1 | |
| 8083 | TextLabel237.Size = UDim2.new(0, 50, 1, 0) | |
| 8084 | TextLabel237.Text = "100%" | |
| 8085 | TextLabel237.Position = UDim2.new(1, -50, 0, 0) | |
| 8086 | TextLabel237.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8087 | TextLabel237.BackgroundTransparency = 1 | |
| 8088 | TextLabel237.BorderColor3 = Color3.new(0, 0, 0) | |
| 8089 | TextLabel237.BorderSizePixel = 0 | |
| 8090 | TextLabel237.ZIndex = 10 | |
| 8091 | TextLabel237.Font = Enum.Font.ArialBold | |
| 8092 | TextLabel237.FontSize = Enum.FontSize.Size24 | |
| 8093 | TextLabel237.TextColor3 = Color3.new(1, 1, 1) | |
| 8094 | TextLabel237.TextStrokeTransparency = 0 | |
| 8095 | TextLabel237.TextXAlignment = Enum.TextXAlignment.Right | |
| 8096 | Frame238.Name = "Tray" | |
| 8097 | Frame238.Parent = Frame236 | |
| 8098 | Frame238.Transparency = 1 | |
| 8099 | Frame238.Size = UDim2.new(1, -60, 0, 20) | |
| 8100 | Frame238.Position = UDim2.new(0, 2, 0.5, -10) | |
| 8101 | Frame238.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8102 | Frame238.BackgroundTransparency = 1 | |
| 8103 | Frame238.BorderColor3 = Color3.new(0, 0, 0) | |
| 8104 | Frame238.BorderSizePixel = 0 | |
| 8105 | Frame238.ZIndex = 10 | |
| 8106 | Frame238.ClipsDescendants = true | |
| 8107 | Frame239.Name = "Beat" | |
| 8108 | Frame239.Parent = Frame238 | |
| 8109 | Frame239.Transparency = 1 | |
| 8110 | Frame239.Size = UDim2.new(0, 21, 1, 0) | |
| 8111 | Frame239.Position = UDim2.new(1, 0, 0, 0) | |
| 8112 | Frame239.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8113 | Frame239.BackgroundTransparency = 1 | |
| 8114 | Frame239.BorderColor3 = Color3.new(0, 0, 0) | |
| 8115 | Frame239.BorderSizePixel = 0 | |
| 8116 | Frame239.ZIndex = 10 | |
| 8117 | Frame240.Name = "00" | |
| 8118 | Frame240.Parent = Frame239 | |
| 8119 | Frame240.Size = UDim2.new(0.0476190485, 0, 0, 3) | |
| 8120 | Frame240.Position = UDim2.new(0, 0, 0.5, -2) | |
| 8121 | Frame240.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8122 | Frame240.BorderColor3 = Color3.new(0, 0, 0) | |
| 8123 | Frame240.BorderSizePixel = 0 | |
| 8124 | Frame240.ZIndex = 10 | |
| 8125 | Frame241.Name = "01" | |
| 8126 | Frame241.Parent = Frame239 | |
| 8127 | Frame241.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8128 | Frame241.Position = UDim2.new(0.0476190485, 0, 0.423076928, -2) | |
| 8129 | Frame241.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8130 | Frame241.BorderColor3 = Color3.new(0, 0, 0) | |
| 8131 | Frame241.BorderSizePixel = 0 | |
| 8132 | Frame241.ZIndex = 10 | |
| 8133 | Frame242.Name = "02" | |
| 8134 | Frame242.Parent = Frame239 | |
| 8135 | Frame242.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8136 | Frame242.Position = UDim2.new(0.095238097, 0, 0.346153855, -2) | |
| 8137 | Frame242.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8138 | Frame242.BorderColor3 = Color3.new(0, 0, 0) | |
| 8139 | Frame242.BorderSizePixel = 0 | |
| 8140 | Frame242.ZIndex = 10 | |
| 8141 | Frame243.Name = "03" | |
| 8142 | Frame243.Parent = Frame239 | |
| 8143 | Frame243.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8144 | Frame243.Position = UDim2.new(0.142857149, 0, 0.269230783, -2) | |
| 8145 | Frame243.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8146 | Frame243.BorderColor3 = Color3.new(0, 0, 0) | |
| 8147 | Frame243.BorderSizePixel = 0 | |
| 8148 | Frame243.ZIndex = 10 | |
| 8149 | Frame244.Name = "04" | |
| 8150 | Frame244.Parent = Frame239 | |
| 8151 | Frame244.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8152 | Frame244.Position = UDim2.new(0.190476194, 0, 0.192307696, -2) | |
| 8153 | Frame244.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8154 | Frame244.BorderColor3 = Color3.new(0, 0, 0) | |
| 8155 | Frame244.BorderSizePixel = 0 | |
| 8156 | Frame244.ZIndex = 10 | |
| 8157 | Frame245.Name = "05" | |
| 8158 | Frame245.Parent = Frame239 | |
| 8159 | Frame245.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8160 | Frame245.Position = UDim2.new(0.238095239, 0, 0.115384616, -2) | |
| 8161 | Frame245.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8162 | Frame245.BorderColor3 = Color3.new(0, 0, 0) | |
| 8163 | Frame245.BorderSizePixel = 0 | |
| 8164 | Frame245.ZIndex = 10 | |
| 8165 | Frame246.Name = "06" | |
| 8166 | Frame246.Parent = Frame239 | |
| 8167 | Frame246.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8168 | Frame246.Position = UDim2.new(0.285714298, 0, 0.0384615399, -2) | |
| 8169 | Frame246.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8170 | Frame246.BorderColor3 = Color3.new(0, 0, 0) | |
| 8171 | Frame246.BorderSizePixel = 0 | |
| 8172 | Frame246.ZIndex = 10 | |
| 8173 | Frame247.Name = "07" | |
| 8174 | Frame247.Parent = Frame239 | |
| 8175 | Frame247.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8176 | Frame247.Position = UDim2.new(0.333333343, 0, 0, -2) | |
| 8177 | Frame247.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8178 | Frame247.BorderColor3 = Color3.new(0, 0, 0) | |
| 8179 | Frame247.BorderSizePixel = 0 | |
| 8180 | Frame247.ZIndex = 10 | |
| 8181 | Frame248.Name = "08" | |
| 8182 | Frame248.Parent = Frame239 | |
| 8183 | Frame248.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8184 | Frame248.Position = UDim2.new(0.380952388, 0, 0.142857149, -2) | |
| 8185 | Frame248.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8186 | Frame248.BorderColor3 = Color3.new(0, 0, 0) | |
| 8187 | Frame248.BorderSizePixel = 0 | |
| 8188 | Frame248.ZIndex = 10 | |
| 8189 | Frame249.Name = "09" | |
| 8190 | Frame249.Parent = Frame239 | |
| 8191 | Frame249.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8192 | Frame249.Position = UDim2.new(0.428571433, 0, 0.285714298, -2) | |
| 8193 | Frame249.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8194 | Frame249.BorderColor3 = Color3.new(0, 0, 0) | |
| 8195 | Frame249.BorderSizePixel = 0 | |
| 8196 | Frame249.ZIndex = 10 | |
| 8197 | Frame250.Name = "10" | |
| 8198 | Frame250.Parent = Frame239 | |
| 8199 | Frame250.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8200 | Frame250.Position = UDim2.new(0.476190478, 0, 0.428571433, -2) | |
| 8201 | Frame250.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8202 | Frame250.BorderColor3 = Color3.new(0, 0, 0) | |
| 8203 | Frame250.BorderSizePixel = 0 | |
| 8204 | Frame250.ZIndex = 10 | |
| 8205 | Frame251.Name = "11" | |
| 8206 | Frame251.Parent = Frame239 | |
| 8207 | Frame251.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8208 | Frame251.Position = UDim2.new(0.523809552, 0, 0.571428597, -2) | |
| 8209 | Frame251.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8210 | Frame251.BorderColor3 = Color3.new(0, 0, 0) | |
| 8211 | Frame251.BorderSizePixel = 0 | |
| 8212 | Frame251.ZIndex = 10 | |
| 8213 | Frame252.Name = "12" | |
| 8214 | Frame252.Parent = Frame239 | |
| 8215 | Frame252.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8216 | Frame252.Position = UDim2.new(0.571428597, 0, 0.714285731, -2) | |
| 8217 | Frame252.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8218 | Frame252.BorderColor3 = Color3.new(0, 0, 0) | |
| 8219 | Frame252.BorderSizePixel = 0 | |
| 8220 | Frame252.ZIndex = 10 | |
| 8221 | Frame253.Name = "13" | |
| 8222 | Frame253.Parent = Frame239 | |
| 8223 | Frame253.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8224 | Frame253.Position = UDim2.new(0.619047642, 0, 0.857142866, -2) | |
| 8225 | Frame253.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8226 | Frame253.BorderColor3 = Color3.new(0, 0, 0) | |
| 8227 | Frame253.BorderSizePixel = 0 | |
| 8228 | Frame253.ZIndex = 10 | |
| 8229 | Frame254.Name = "14" | |
| 8230 | Frame254.Parent = Frame239 | |
| 8231 | Frame254.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8232 | Frame254.Position = UDim2.new(0.666666687, 0, 0.916666687, -2) | |
| 8233 | Frame254.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8234 | Frame254.BorderColor3 = Color3.new(0, 0, 0) | |
| 8235 | Frame254.BorderSizePixel = 0 | |
| 8236 | Frame254.ZIndex = 10 | |
| 8237 | Frame255.Name = "15" | |
| 8238 | Frame255.Parent = Frame239 | |
| 8239 | Frame255.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8240 | Frame255.Position = UDim2.new(0.714285731, 0, 0.833333313, -2) | |
| 8241 | Frame255.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8242 | Frame255.BorderColor3 = Color3.new(0, 0, 0) | |
| 8243 | Frame255.BorderSizePixel = 0 | |
| 8244 | Frame255.ZIndex = 10 | |
| 8245 | Frame256.Name = "16" | |
| 8246 | Frame256.Parent = Frame239 | |
| 8247 | Frame256.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8248 | Frame256.Position = UDim2.new(0.761904776, 0, 0.75, -2) | |
| 8249 | Frame256.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8250 | Frame256.BorderColor3 = Color3.new(0, 0, 0) | |
| 8251 | Frame256.BorderSizePixel = 0 | |
| 8252 | Frame256.ZIndex = 10 | |
| 8253 | Frame257.Name = "17" | |
| 8254 | Frame257.Parent = Frame239 | |
| 8255 | Frame257.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8256 | Frame257.Position = UDim2.new(0.809523821, 0, 0.666666687, -2) | |
| 8257 | Frame257.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8258 | Frame257.BorderColor3 = Color3.new(0, 0, 0) | |
| 8259 | Frame257.BorderSizePixel = 0 | |
| 8260 | Frame257.ZIndex = 10 | |
| 8261 | Frame258.Name = "18" | |
| 8262 | Frame258.Parent = Frame239 | |
| 8263 | Frame258.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8264 | Frame258.Position = UDim2.new(0.857142866, 0, 0.583333313, -2) | |
| 8265 | Frame258.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8266 | Frame258.BorderColor3 = Color3.new(0, 0, 0) | |
| 8267 | Frame258.BorderSizePixel = 0 | |
| 8268 | Frame258.ZIndex = 10 | |
| 8269 | Frame259.Name = "19" | |
| 8270 | Frame259.Parent = Frame239 | |
| 8271 | Frame259.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8272 | Frame259.Position = UDim2.new(0.90476191, 0, 0.5, -2) | |
| 8273 | Frame259.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8274 | Frame259.BorderColor3 = Color3.new(0, 0, 0) | |
| 8275 | Frame259.BorderSizePixel = 0 | |
| 8276 | Frame259.ZIndex = 10 | |
| 8277 | Frame260.Name = "20" | |
| 8278 | Frame260.Parent = Frame239 | |
| 8279 | Frame260.Size = UDim2.new(0.0476190485, 0, 0, 4) | |
| 8280 | Frame260.Position = UDim2.new(0.952000022, 0, 0.49000001, -2) | |
| 8281 | Frame260.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8282 | Frame260.BorderColor3 = Color3.new(0, 0, 0) | |
| 8283 | Frame260.BorderSizePixel = 0 | |
| 8284 | Frame260.ZIndex = 10 | |
| 8285 | Frame261.Name = "Line" | |
| 8286 | Frame261.Parent = Frame239 | |
| 8287 | Frame261.Size = UDim2.new(0, 200, 0, 3) | |
| 8288 | Frame261.Position = UDim2.new(1, 0, 0.5, -2) | |
| 8289 | Frame261.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8290 | Frame261.BorderColor3 = Color3.new(0, 0, 0) | |
| 8291 | Frame261.BorderSizePixel = 0 | |
| 8292 | Frame261.ZIndex = 10 | |
| 8293 | Frame262.Name = "Line" | |
| 8294 | Frame262.Parent = Frame239 | |
| 8295 | Frame262.Size = UDim2.new(0, 200, 0, 3) | |
| 8296 | Frame262.Position = UDim2.new(0, -200, 0.5, -2) | |
| 8297 | Frame262.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8298 | Frame262.BorderColor3 = Color3.new(0, 0, 0) | |
| 8299 | Frame262.BorderSizePixel = 0 | |
| 8300 | Frame262.ZIndex = 10 | |
| 8301 | Frame263.Name = "Controls" | |
| 8302 | Frame263.Parent = Frame225 | |
| 8303 | Frame263.Transparency = 0.30000001192093 | |
| 8304 | Frame263.Size = UDim2.new(1, 0, 0, 120) | |
| 8305 | Frame263.Position = UDim2.new(0, 0, 0, -200) | |
| 8306 | Frame263.Visible = false | |
| 8307 | Frame263.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863) | |
| 8308 | Frame263.BackgroundTransparency = 0.30000001192093 | |
| 8309 | Frame263.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863) | |
| 8310 | Frame263.BorderSizePixel = 5 | |
| 8311 | Frame263.ZIndex = 10 | |
| 8312 | TextLabel264.Name = "Title" | |
| 8313 | TextLabel264.Parent = Frame263 | |
| 8314 | TextLabel264.Transparency = 1 | |
| 8315 | TextLabel264.Size = UDim2.new(1, 0, 0, 15) | |
| 8316 | TextLabel264.Text = "CONTROLS" | |
| 8317 | TextLabel264.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8318 | TextLabel264.BackgroundTransparency = 1 | |
| 8319 | TextLabel264.ZIndex = 10 | |
| 8320 | TextLabel264.Font = Enum.Font.SourceSansBold | |
| 8321 | TextLabel264.FontSize = Enum.FontSize.Size14 | |
| 8322 | TextLabel264.TextColor3 = Color3.new(1, 1, 1) | |
| 8323 | TextLabel265.Name = "Line" | |
| 8324 | TextLabel265.Parent = TextLabel264 | |
| 8325 | TextLabel265.Size = UDim2.new(1, 0, 0, 2) | |
| 8326 | TextLabel265.Text = "" | |
| 8327 | TextLabel265.Position = UDim2.new(0, 0, 1, 1) | |
| 8328 | TextLabel265.BackgroundColor3 = Color3.new(1, 1, 0) | |
| 8329 | TextLabel265.BorderSizePixel = 0 | |
| 8330 | TextLabel265.ZIndex = 10 | |
| 8331 | TextLabel265.Font = Enum.Font.SourceSans | |
| 8332 | TextLabel265.FontSize = Enum.FontSize.Size14 | |
| 8333 | Frame266.Name = "Grenades" | |
| 8334 | Frame266.Parent = Frame225 | |
| 8335 | Frame266.Transparency = 1 | |
| 8336 | Frame266.Size = UDim2.new(0, 175, 0, 25) | |
| 8337 | Frame266.Position = UDim2.new(0, 0, 0, 90) | |
| 8338 | Frame266.Visible = false | |
| 8339 | Frame266.BackgroundTransparency = 1 | |
| 8340 | Frame266.ZIndex = 10 | |
| 8341 | Frame267.Name = "Lethals" | |
| 8342 | Frame267.Parent = Frame266 | |
| 8343 | Frame267.Transparency = 0.80000001192093 | |
| 8344 | Frame267.Size = UDim2.new(0.5, -2, 1, 0) | |
| 8345 | Frame267.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8346 | Frame267.BackgroundTransparency = 0.80000001192093 | |
| 8347 | Frame267.BorderSizePixel = 0 | |
| 8348 | Frame267.ZIndex = 10 | |
| 8349 | ImageLabel268.Name = "Icon" | |
| 8350 | ImageLabel268.Parent = Frame267 | |
| 8351 | ImageLabel268.Transparency = 1 | |
| 8352 | ImageLabel268.Size = UDim2.new(0, 21, 0, 21) | |
| 8353 | ImageLabel268.Position = UDim2.new(0, 7, 0, 2) | |
| 8354 | ImageLabel268.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8355 | ImageLabel268.BackgroundTransparency = 1 | |
| 8356 | ImageLabel268.ZIndex = 10 | |
| 8357 | TextLabel269.Name = "Mult" | |
| 8358 | TextLabel269.Parent = Frame267 | |
| 8359 | TextLabel269.Transparency = 1 | |
| 8360 | TextLabel269.Size = UDim2.new(0, 20, 1, 0) | |
| 8361 | TextLabel269.Text = "X" | |
| 8362 | TextLabel269.Position = UDim2.new(0.5, -10, 0, 0) | |
| 8363 | TextLabel269.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8364 | TextLabel269.BackgroundTransparency = 1 | |
| 8365 | TextLabel269.BorderSizePixel = 0 | |
| 8366 | TextLabel269.ZIndex = 10 | |
| 8367 | TextLabel269.Font = Enum.Font.ArialBold | |
| 8368 | TextLabel269.FontSize = Enum.FontSize.Size18 | |
| 8369 | TextLabel269.TextColor3 = Color3.new(1, 1, 1) | |
| 8370 | TextLabel270.Name = "Num" | |
| 8371 | TextLabel270.Parent = Frame267 | |
| 8372 | TextLabel270.Transparency = 1 | |
| 8373 | TextLabel270.Size = UDim2.new(0, 0, 1, 0) | |
| 8374 | TextLabel270.Text = "0" | |
| 8375 | TextLabel270.Position = UDim2.new(1, -7, 0, 0) | |
| 8376 | TextLabel270.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8377 | TextLabel270.BackgroundTransparency = 1 | |
| 8378 | TextLabel270.ZIndex = 10 | |
| 8379 | TextLabel270.Font = Enum.Font.ArialBold | |
| 8380 | TextLabel270.FontSize = Enum.FontSize.Size18 | |
| 8381 | TextLabel270.TextColor3 = Color3.new(1, 1, 1) | |
| 8382 | TextLabel270.TextXAlignment = Enum.TextXAlignment.Right | |
| 8383 | Frame271.Name = "Tacticals" | |
| 8384 | Frame271.Parent = Frame266 | |
| 8385 | Frame271.Transparency = 0.80000001192093 | |
| 8386 | Frame271.Size = UDim2.new(0.5, -2, 1, 0) | |
| 8387 | Frame271.Position = UDim2.new(0.5, 2, 0, 0) | |
| 8388 | Frame271.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8389 | Frame271.BackgroundTransparency = 0.80000001192093 | |
| 8390 | Frame271.BorderSizePixel = 0 | |
| 8391 | Frame271.ZIndex = 10 | |
| 8392 | ImageLabel272.Name = "Icon" | |
| 8393 | ImageLabel272.Parent = Frame271 | |
| 8394 | ImageLabel272.Transparency = 1 | |
| 8395 | ImageLabel272.Size = UDim2.new(0, 21, 0, 21) | |
| 8396 | ImageLabel272.Position = UDim2.new(0, 7, 0, 2) | |
| 8397 | ImageLabel272.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8398 | ImageLabel272.BackgroundTransparency = 1 | |
| 8399 | ImageLabel272.ZIndex = 10 | |
| 8400 | TextLabel273.Name = "Num" | |
| 8401 | TextLabel273.Parent = Frame271 | |
| 8402 | TextLabel273.Transparency = 1 | |
| 8403 | TextLabel273.Size = UDim2.new(0, 0, 1, 0) | |
| 8404 | TextLabel273.Text = "0" | |
| 8405 | TextLabel273.Position = UDim2.new(1, -7, 0, 0) | |
| 8406 | TextLabel273.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8407 | TextLabel273.BackgroundTransparency = 1 | |
| 8408 | TextLabel273.ZIndex = 10 | |
| 8409 | TextLabel273.Font = Enum.Font.ArialBold | |
| 8410 | TextLabel273.FontSize = Enum.FontSize.Size18 | |
| 8411 | TextLabel273.TextColor3 = Color3.new(1, 1, 1) | |
| 8412 | TextLabel273.TextXAlignment = Enum.TextXAlignment.Right | |
| 8413 | TextLabel274.Name = "Mult" | |
| 8414 | TextLabel274.Parent = Frame271 | |
| 8415 | TextLabel274.Transparency = 1 | |
| 8416 | TextLabel274.Size = UDim2.new(0, 20, 1, 0) | |
| 8417 | TextLabel274.Text = "X" | |
| 8418 | TextLabel274.Position = UDim2.new(0.5, -10, 0, 0) | |
| 8419 | TextLabel274.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8420 | TextLabel274.BackgroundTransparency = 1 | |
| 8421 | TextLabel274.BorderSizePixel = 0 | |
| 8422 | TextLabel274.ZIndex = 10 | |
| 8423 | TextLabel274.Font = Enum.Font.ArialBold | |
| 8424 | TextLabel274.FontSize = Enum.FontSize.Size18 | |
| 8425 | TextLabel274.TextColor3 = Color3.new(1, 1, 1) | |
| 8426 | Frame275.Name = "gunName" | |
| 8427 | Frame275.Parent = Frame225 | |
| 8428 | Frame275.Transparency = 1 | |
| 8429 | Frame275.Size = UDim2.new(1, 0, 0, 36) | |
| 8430 | Frame275.BackgroundColor3 = Color3.new(0.972549, 0.972549, 0.972549) | |
| 8431 | Frame275.BackgroundTransparency = 1 | |
| 8432 | Frame275.ZIndex = 10 | |
| 8433 | TextLabel276.Name = "Line" | |
| 8434 | TextLabel276.Parent = Frame275 | |
| 8435 | TextLabel276.Size = UDim2.new(0, 2, 1, 0) | |
| 8436 | TextLabel276.Text = "" | |
| 8437 | TextLabel276.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8438 | TextLabel276.BorderSizePixel = 0 | |
| 8439 | TextLabel276.ZIndex = 10 | |
| 8440 | TextLabel276.Font = Enum.Font.SourceSans | |
| 8441 | TextLabel276.FontSize = Enum.FontSize.Size14 | |
| 8442 | TextLabel277.Name = "Line" | |
| 8443 | TextLabel277.Parent = Frame275 | |
| 8444 | TextLabel277.Size = UDim2.new(1, 0, 0, 2) | |
| 8445 | TextLabel277.Text = "" | |
| 8446 | TextLabel277.Position = UDim2.new(0, 0, 1, 0) | |
| 8447 | TextLabel277.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8448 | TextLabel277.BorderSizePixel = 0 | |
| 8449 | TextLabel277.ZIndex = 10 | |
| 8450 | TextLabel277.Font = Enum.Font.SourceSans | |
| 8451 | TextLabel277.FontSize = Enum.FontSize.Size14 | |
| 8452 | TextLabel278.Name = "Title" | |
| 8453 | TextLabel278.Parent = Frame275 | |
| 8454 | TextLabel278.Transparency = 1 | |
| 8455 | TextLabel278.Size = UDim2.new(1, -7, 1, 0) | |
| 8456 | TextLabel278.Text = "Gun" | |
| 8457 | TextLabel278.Position = UDim2.new(0, 7, 0, 0) | |
| 8458 | TextLabel278.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8459 | TextLabel278.BackgroundTransparency = 1 | |
| 8460 | TextLabel278.ZIndex = 10 | |
| 8461 | TextLabel278.Font = Enum.Font.SourceSansBold | |
| 8462 | TextLabel278.FontSize = Enum.FontSize.Size36 | |
| 8463 | TextLabel278.TextColor3 = Color3.new(1, 1, 1) | |
| 8464 | TextLabel278.TextStrokeTransparency = 0 | |
| 8465 | TextLabel278.TextXAlignment = Enum.TextXAlignment.Left | |
| 8466 | Frame279.Name = "fireSelect" | |
| 8467 | Frame279.Parent = ScreenGui211 | |
| 8468 | Frame279.Transparency = 1 | |
| 8469 | Frame279.Position = UDim2.new(0.5, 0, 0.5, -18) | |
| 8470 | Frame279.Visible = false | |
| 8471 | Frame279.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8472 | Frame279.BackgroundTransparency = 1 | |
| 8473 | Frame280.Name = "Modes" | |
| 8474 | Frame280.Parent = Frame279 | |
| 8475 | Frame280.Transparency = 1 | |
| 8476 | Frame280.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8477 | Frame280.BackgroundTransparency = 1 | |
| 8478 | ImageLabel281.Name = "Circle" | |
| 8479 | ImageLabel281.Parent = Frame279 | |
| 8480 | ImageLabel281.Transparency = 1 | |
| 8481 | ImageLabel281.Size = UDim2.new(0, 120, 0, 120) | |
| 8482 | ImageLabel281.Position = UDim2.new(0, -60, 0, -60) | |
| 8483 | ImageLabel281.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8484 | ImageLabel281.BackgroundTransparency = 1 | |
| 8485 | ImageLabel281.Image = "http://www.roblox.com/asset/?id=55754953" | |
| 8486 | ImageLabel281.ImageTransparency = 0.5 | |
| 8487 | ImageLabel282.Name = "Arrow" | |
| 8488 | ImageLabel282.Parent = Frame279 | |
| 8489 | ImageLabel282.Transparency = 1 | |
| 8490 | ImageLabel282.Size = UDim2.new(0, 40, 0, 20) | |
| 8491 | ImageLabel282.Position = UDim2.new(0, -20, 0, -140) | |
| 8492 | ImageLabel282.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8493 | ImageLabel282.BackgroundTransparency = 1 | |
| 8494 | ImageLabel282.Image = "http://www.roblox.com/asset/?id=126877530" | |
| 8495 | Frame283.Name = "Scope" | |
| 8496 | Frame283.Parent = ScreenGui211 | |
| 8497 | Frame283.Transparency = 1 | |
| 8498 | Frame283.Size = UDim2.new(1, 0, 1, 36) | |
| 8499 | Frame283.Position = UDim2.new(0, 0, 0, -36) | |
| 8500 | Frame283.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8501 | Frame283.BackgroundTransparency = 1 | |
| 8502 | TextLabel284.Name = "Steady" | |
| 8503 | TextLabel284.Parent = Frame283 | |
| 8504 | TextLabel284.Transparency = 1 | |
| 8505 | TextLabel284.Size = UDim2.new(0, 120, 0, 20) | |
| 8506 | TextLabel284.Text = "" | |
| 8507 | TextLabel284.Position = UDim2.new(0.5, -60, 0.5, 50) | |
| 8508 | TextLabel284.Visible = false | |
| 8509 | TextLabel284.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8510 | TextLabel284.BackgroundTransparency = 1 | |
| 8511 | TextLabel284.ZIndex = 9 | |
| 8512 | TextLabel284.Font = Enum.Font.ArialBold | |
| 8513 | TextLabel284.FontSize = Enum.FontSize.Size14 | |
| 8514 | TextLabel284.TextColor3 = Color3.new(1, 1, 0) | |
| 8515 | TextLabel284.TextStrokeTransparency = 0 | |
| 8516 | Frame285.Name = "Main" | |
| 8517 | Frame285.Parent = Frame283 | |
| 8518 | Frame285.Transparency = 1 | |
| 8519 | Frame285.Size = UDim2.new(1, 0, 1, 0) | |
| 8520 | Frame285.Visible = false | |
| 8521 | Frame285.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8522 | Frame285.BackgroundTransparency = 1 | |
| 8523 | ImageLabel286.Name = "ScopeImg2" | |
| 8524 | ImageLabel286.Parent = Frame285 | |
| 8525 | ImageLabel286.Transparency = 1 | |
| 8526 | ImageLabel286.Size = UDim2.new(0, 20, 0, 20) | |
| 8527 | ImageLabel286.Position = UDim2.new(0.5, -10, 0, -10) | |
| 8528 | ImageLabel286.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8529 | ImageLabel286.BackgroundTransparency = 1 | |
| 8530 | ImageLabel286.Image = "http://www.roblox.com/asset/?id=184922644" | |
| 8531 | ImageLabel287.Name = "ScopeImg1" | |
| 8532 | ImageLabel287.Parent = Frame285 | |
| 8533 | ImageLabel287.Transparency = 1 | |
| 8534 | ImageLabel287.Size = UDim2.new(0, 20, 0, 20) | |
| 8535 | ImageLabel287.Position = UDim2.new(0.5, -10, 0, -10) | |
| 8536 | ImageLabel287.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8537 | ImageLabel287.BackgroundTransparency = 1 | |
| 8538 | ImageLabel287.Image = "http://www.roblox.com/asset/?id=72002022" | |
| 8539 | Frame288.Name = "F2" | |
| 8540 | Frame288.Parent = Frame285 | |
| 8541 | Frame288.Size = UDim2.new(0, 0, 1, 20) | |
| 8542 | Frame288.Position = UDim2.new(0, -10, 0, -10) | |
| 8543 | Frame288.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8544 | Frame288.BorderColor3 = Color3.new(0, 0, 0) | |
| 8545 | Frame288.BorderSizePixel = 0 | |
| 8546 | Frame289.Name = "F1" | |
| 8547 | Frame289.Parent = Frame285 | |
| 8548 | Frame289.Size = UDim2.new(0, 0, 1, 20) | |
| 8549 | Frame289.Position = UDim2.new(0, -10, 0, -10) | |
| 8550 | Frame289.BackgroundColor3 = Color3.new(0, 0, 0) | |
| 8551 | Frame289.BorderColor3 = Color3.new(0, 0, 0) | |
| 8552 | Frame289.BorderSizePixel = 0 | |
| 8553 | LocalScript290.Name = "Update" | |
| 8554 | LocalScript290.Parent = Frame285 | |
| 8555 | table.insert(cors,sandbox(LocalScript290,function() | |
| 8556 | local GUI = script.Parent | |
| 8557 | ||
| 8558 | function updateScopeDimension() | |
| 8559 | GUI.ScopeImg1.Position = UDim2.new(0.5, -10 - (GUI.AbsoluteSize.y / 2), 0, -10) | |
| 8560 | GUI.ScopeImg1.Size = UDim2.new(0, 20 + GUI.AbsoluteSize.y, 0, 20 + GUI.AbsoluteSize.y) | |
| 8561 | GUI.ScopeImg2.Position = UDim2.new(0.5, -10 - (GUI.AbsoluteSize.y / 2), 0, -10) | |
| 8562 | GUI.ScopeImg2.Size = UDim2.new(0, 20 + GUI.AbsoluteSize.y, 0, 20 + GUI.AbsoluteSize.y) | |
| 8563 | GUI.F1.Size = UDim2.new(0, 20 + ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 1, 20) | |
| 8564 | GUI.F2.Size = UDim2.new(0, 20 + ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 1, 20) | |
| 8565 | GUI.F2.Position = UDim2.new(1, -10 - ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 0, -10) | |
| 8566 | end | |
| 8567 | ||
| 8568 | wait() | |
| 8569 | ||
| 8570 | GUI.Changed:connect(updateScopeDimension) | |
| 8571 | ||
| 8572 | updateScopeDimension() | |
| 8573 | end)) | |
| 8574 | TextLabel291.Name = "Sens" | |
| 8575 | TextLabel291.Parent = ScreenGui211 | |
| 8576 | TextLabel291.Transparency = 1 | |
| 8577 | TextLabel291.Size = UDim2.new(0, 100, 0, 20) | |
| 8578 | TextLabel291.Text = "S: 0.3" | |
| 8579 | TextLabel291.Position = UDim2.new(0.5, -50, 0.5, 50) | |
| 8580 | TextLabel291.Visible = false | |
| 8581 | TextLabel291.BackgroundColor3 = Color3.new(1, 1, 1) | |
| 8582 | TextLabel291.BackgroundTransparency = 1 | |
| 8583 | TextLabel291.ZIndex = 10 | |
| 8584 | TextLabel291.Font = Enum.Font.SourceSansBold | |
| 8585 | TextLabel291.FontSize = Enum.FontSize.Size28 | |
| 8586 | TextLabel291.TextColor3 = Color3.new(1, 1, 1) | |
| 8587 | TextLabel291.TextStrokeTransparency = 0 | |
| 8588 | Part292.Name = "ham" | |
| 8589 | Part292.Parent = Tool0 | |
| 8590 | Part292.BrickColor = BrickColor.new("Mid gray")
| |
| 8591 | Part292.Rotation = Vector3.new(179.98999, 89.9799957, -179.929993) | |
| 8592 | Part292.FormFactor = Enum.FormFactor.Plate | |
| 8593 | Part292.Size = Vector3.new(1, 0.800000012, 1) | |
| 8594 | Part292.CFrame = CFrame.new(1435.26599, 48.9021072, -1310.87195, -5.96046448e-08, 7.27595761e-11, 0.99999994, 0.000796274282, 0.999999642, -1.45519152e-11, -0.999999702, 0.000796274282, -1.1920929e-07) | |
| 8595 | Part292.BottomSurface = Enum.SurfaceType.Smooth | |
| 8596 | Part292.TopSurface = Enum.SurfaceType.Smooth | |
| 8597 | Part292.Color = Color3.new(0.803922, 0.803922, 0.803922) | |
| 8598 | Part292.Position = Vector3.new(1435.26599, 48.9021072, -1310.87195) | |
| 8599 | Part292.Orientation = Vector3.new(0, 90, 0.049999997) | |
| 8600 | Part292.Color = Color3.new(0.803922, 0.803922, 0.803922) | |
| 8601 | SpecialMesh293.Parent = Part292 | |
| 8602 | SpecialMesh293.MeshId = "http://www.roblox.com/asset/?id=16646125" | |
| 8603 | SpecialMesh293.TextureId = "http://www.roblox.com/asset/?id=16432575" | |
| 8604 | SpecialMesh293.MeshType = Enum.MeshType.FileMesh | |
| 8605 | Weld294.Parent = Part292 | |
| 8606 | Weld294.C0 = CFrame.new(-4.71828389e-06, -1.06949216e-07, 6.73912837e-08, -1.96380037e-10, -7.15101578e-06, 1, -3.45956111e-11, 1, 9.53468771e-06, -1, 4.01852024e-11, -2.64911593e-10) | |
| 8607 | Weld294.C1 = CFrame.new(-4.71828389e-06, -1.06949216e-07, 6.73912837e-08, -1.96380037e-10, -7.15101578e-06, 1, -3.45956111e-11, 1, 9.53468771e-06, -1, 4.01852024e-11, -2.64911593e-10) | |
| 8608 | Weld295.Parent = Part292 | |
| 8609 | Weld295.C0 = CFrame.new(-1.34138972e-07, -6.91051537e-06, 0, -3.91537502e-21, 0.999999106, -0.00133771845, 2.81109586e-22, 0.00133771845, 0.999999106, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8610 | Weld295.C1 = CFrame.new(-1.34138972e-07, -6.91051537e-06, 0, -3.91537502e-21, 0.999999106, -0.00133771845, 2.81109586e-22, 0.00133771845, 0.999999106, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8611 | Weld296.Parent = Part292 | |
| 8612 | Weld296.C0 = CFrame.new(3.64912034e-06, -1.13236744e-07, -2.01656292e-08, -7.08486672e-11, 0.000798657886, -0.999999702, 1.55140234e-10, 0.999999702, 0.000793890678, 1, 1.55083765e-10, 7.09721865e-11) | |
| 8613 | Weld296.C1 = CFrame.new(3.64912034e-06, -1.13236744e-07, -2.01656292e-08, -7.08486672e-11, 0.000798657886, -0.999999702, 1.55140234e-10, 0.999999702, 0.000793890678, 1, 1.55083765e-10, 7.09721865e-11) | |
| 8614 | Weld297.Parent = Part292 | |
| 8615 | Weld297.C0 = CFrame.new(1.6321755e-07, 3.49538391e-06, 0, -3.9252309e-21, 0.996502578, -0.0835621059, -4.1799742e-23, 0.0835621059, 0.996502578, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8616 | Weld297.C1 = CFrame.new(1.6321755e-07, 3.49538391e-06, 0, -3.9252309e-21, 0.996502578, -0.0835621059, -4.1799742e-23, 0.0835621059, 0.996502578, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8617 | Weld298.Parent = Part292 | |
| 8618 | Weld298.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8619 | Weld298.C1 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8620 | Weld299.Parent = Part292 | |
| 8621 | Weld299.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8622 | Weld299.C1 = CFrame.new(0.533214211, 4.09488493e-05, -0.399536163, -6.19143847e-10, 0.000817726948, -0.999999702, 8.15887191e-10, 0.999999702, 0.000817726948, 1, -8.15380652e-10, -6.19810758e-10) | |
| 8623 | Weld300.Parent = Part292 | |
| 8624 | Weld300.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8625 | Weld300.C1 = CFrame.new(-1.12273511e-07, 2.60849974e-05, -0.533189535, 1, -8.33252689e-10, -3.96865235e-10, 8.3357371e-10, 0.999999702, 0.000809622463, 3.96190469e-10, -0.000809622463, 0.999999702) | |
| 8626 | Weld301.Parent = Part292 | |
| 8627 | Weld301.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8628 | Weld301.C1 = CFrame.new(0.533214211, 0.373362005, -4.18045545e-08, -6.20301976e-10, 0.000817726948, -0.999999702, 8.56068161e-10, 0.999999702, 0.000817726948, 1, -8.55560567e-10, -6.21001806e-10) | |
| 8629 | Weld302.Parent = Part292 | |
| 8630 | Weld302.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8631 | Weld302.C1 = CFrame.new(-5.43287024e-06, 0.132771105, 0.400390655, 8.48401349e-10, 0.999999702, 0.000801041257, -6.20273943e-10, 0.000801041257, -0.999999702, -1, 8.47904247e-10, 6.20953344e-10) | |
| 8632 | Weld303.Parent = Part292 | |
| 8633 | Weld303.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8634 | Weld303.C1 = CFrame.new(-2.92850495e-06, -0.400390595, -0.132823572, 8.56068161e-10, 0.999999702, 0.000817726948, -1, 8.55560678e-10, 6.21001806e-10, 6.20301976e-10, -0.000817726948, 0.999999702) | |
| 8635 | Weld304.Parent = Part292 | |
| 8636 | Weld304.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8637 | Weld304.C1 = CFrame.new(1.20404536e-07, 1.7940567e-05, 0.132805407, -1, 8.50133963e-10, 4.23458879e-10, 8.50476911e-10, 0.999999702, 0.000810576021, -4.22769625e-10, 0.000810576021, -0.999999702) | |
| 8638 | Weld305.Parent = Part292 | |
| 8639 | Weld305.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8640 | Weld305.C1 = CFrame.new(5.96581813e-05, -0.400390744, 0.9335953, 8.14806722e-10, 0.999999702, 0.000811847276, 1, -8.1443452e-10, -4.58876631e-10, -4.58215271e-10, 0.000811847276, -0.999999702) | |
| 8641 | Weld306.Parent = Part292 | |
| 8642 | Weld306.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8643 | Weld306.C1 = CFrame.new(2.33017072e-05, -0.933604836, 0.400390595, 8.35977676e-10, 0.999999702, 0.000817726948, 6.19722884e-10, -0.000817726948, 0.999999702, 1, -8.35470693e-10, -6.20406282e-10) | |
| 8644 | Weld307.Parent = Part292 | |
| 8645 | Weld307.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8646 | Weld307.C1 = CFrame.new(-1.52226988e-07, -0.373301029, -0.533214867, 1, -9.17886822e-10, -2.52556698e-10, 9.18089604e-10, 0.999999702, 0.000804378418, 2.51818288e-10, -0.000804378418, 0.999999702) | |
| 8647 | Weld308.Parent = Part292 | |
| 8648 | Weld308.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8649 | Weld308.C1 = CFrame.new(-0.533214211, 4.09488493e-05, -0.400390595, 6.19143847e-10, -0.000817726948, 0.999999702, 8.15887191e-10, 0.999999702, 0.000817726948, -1, 8.15380652e-10, 6.19810758e-10) | |
| 8650 | Weld309.Parent = Part292 | |
| 8651 | Weld309.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10) | |
| 8652 | Weld309.C1 = CFrame.new(3.85732619e-08, 1.708794e-06, -0.933600962, 1, 2.30016242e-10, -1.24190033e-10, 2.3550692e-10, 0.999999702, 0.000801041722, 3.36916911e-10, -0.000808192533, 0.999999702) | |
| 8653 | Weld310.Parent = Part292 | |
| 8654 | Weld310.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8655 | Weld310.C1 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8656 | Weld311.Parent = Part292 | |
| 8657 | Weld311.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8658 | Weld311.C1 = CFrame.new(0.533207953, 4.02465412e-05, -0.399536252, -4.0660561e-10, 0.997999609, 0.0632200539, 3.50466517e-10, -0.0632200539, 0.997999668, 1, 4.2794876e-10, -3.24059835e-10) | |
| 8659 | Weld312.Parent = Part292 | |
| 8660 | Weld312.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8661 | Weld312.C1 = CFrame.new(-3.86806875e-07, 4.67300815e-05, -0.533184648, 1, 6.89605151e-10, -1.25792432e-09, 1.29899103e-09, -0.0631973371, 0.998001039, 6.08729123e-10, -0.998001099, -0.0631973371) | |
| 8662 | Weld313.Parent = Part292 | |
| 8663 | Weld313.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8664 | Weld313.C1 = CFrame.new(0.533224404, 0.373393357, -3.90072529e-07, -8.32836911e-10, 0.998000622, 0.0632058904, 1.32148736e-09, -0.0632058978, 0.998000503, 1, 9.1469754e-10, -1.26620492e-09) | |
| 8665 | Weld314.Parent = Part292 | |
| 8666 | Weld314.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8667 | Weld314.C1 = CFrame.new(-1.24499784e-05, 0.132795051, 0.400390744, 3.829842e-10, -0.0632034019, 0.998000741, -4.07727963e-10, 0.998000681, 0.0632034019, -1, -4.31118696e-10, 3.56448732e-10) | |
| 8668 | Weld315.Parent = Part292 | |
| 8669 | Weld315.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8670 | Weld315.C1 = CFrame.new(9.7206248e-06, -0.400390506, -0.132816374, 3.90647487e-10, -0.0632200539, 0.997999668, -1, -4.31644803e-10, 3.64087233e-10, 4.07763739e-10, -0.997999609, -0.0632200539) | |
| 8671 | Weld316.Parent = Part292 | |
| 8672 | Weld316.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8673 | Weld316.C1 = CFrame.new(1.12741731e-07, 1.47659775e-05, 0.132799253, -1, -2.34147424e-10, 3.70999564e-10, 3.85058263e-10, -0.0632105544, 0.998000205, -2.10228071e-10, 0.998000264, 0.0632105544) | |
| 8674 | Weld317.Parent = Part292 | |
| 8675 | Weld317.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8676 | Weld317.C1 = CFrame.new(3.39694889e-05, -0.400390744, 0.933587611, 3.49388324e-10, -0.0632092953, 0.998000324, 1, 2.67267597e-10, -3.33160693e-10, -2.45674314e-10, 0.998000324, 0.0632092878) | |
| 8677 | Weld318.Parent = Part292 | |
| 8678 | Weld318.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8679 | Weld318.C1 = CFrame.new(9.72479302e-06, -0.933596671, 0.400390506, 3.70557002e-10, -0.0632200539, 0.997999668, 4.07184675e-10, -0.997999609, -0.0632200539, 1, 4.29796781e-10, -3.44073547e-10) | |
| 8680 | Weld319.Parent = Part292 | |
| 8681 | Weld319.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8682 | Weld319.C1 = CFrame.new(-9.38037488e-08, -0.37332812, -0.533202708, 1, 6.78072321e-11, -4.49284138e-10, 4.52671733e-10, -0.0632067397, 0.998000443, 3.92738446e-11, -0.998000562, -0.0632067248) | |
| 8683 | Weld320.Parent = Part292 | |
| 8684 | Weld320.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8685 | Weld320.C1 = CFrame.new(-0.533207953, 4.02465412e-05, -0.400390506, 4.0660561e-10, -0.997999609, -0.0632200539, 3.50466517e-10, -0.0632200539, 0.997999668, -1, -4.2794876e-10, 3.24059835e-10) | |
| 8686 | Weld321.Parent = Part292 | |
| 8687 | Weld321.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8688 | Weld321.C1 = CFrame.new(-7.07679817e-08, 2.65414451e-06, -0.933581531, 1, 1.09589553e-10, 2.37319969e-10, 2.3550692e-10, -0.0632223934, 0.997999489, 3.36916911e-10, -0.997999012, -0.0632295236) | |
| 8689 | Weld322.Parent = Part292 | |
| 8690 | Weld322.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8691 | Weld322.C1 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8692 | Weld323.Parent = Part292 | |
| 8693 | Weld323.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8694 | Weld323.C1 = CFrame.new(0.533212543, 4.33809255e-05, -0.399536133, -4.77452022e-10, 0.000812952989, -0.999999702, 5.0560689e-10, 0.999999702, 0.000812952989, 1, -5.05218589e-10, -4.77862916e-10) | |
| 8695 | Weld324.Parent = Part292 | |
| 8696 | Weld324.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8697 | Weld324.C1 = CFrame.new(-2.3357552e-07, 5.55160077e-05, -0.533165157, 1, -1.76372972e-09, -8.22718005e-10, 1.76440684e-09, 0.999999702, 0.000823921058, 8.21264445e-10, -0.000823920942, 0.999999762) | |
| 8698 | Weld325.Parent = Part292 | |
| 8699 | Weld325.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8700 | Weld325.C1 = CFrame.new(0.533225417, 0.37339133, -1.62893741e-07, -1.04536846e-09, 0.000832025486, -0.999999642, 1.78690496e-09, 0.999999702, 0.000832025427, 1, -1.78603476e-09, -1.04685483e-09) | |
| 8701 | Weld326.Parent = Part292 | |
| 8702 | Weld326.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8703 | Weld326.C1 = CFrame.new(-4.40306758e-06, 0.132771388, 0.400390655, 8.48401349e-10, 0.999999702, 0.000801038579, -6.20273943e-10, 0.000801038579, -0.999999702, -1, 8.47904247e-10, 6.20953344e-10) | |
| 8704 | Weld327.Parent = Part292 | |
| 8705 | Weld327.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8706 | Weld327.C1 = CFrame.new(1.28626851e-07, -0.400390595, -0.13282387, 8.56068161e-10, 0.999999702, 0.000817724678, -1, 8.55560678e-10, 6.21001806e-10, 6.20301976e-10, -0.000817724678, 0.999999702) | |
| 8707 | Weld328.Parent = Part292 | |
| 8708 | Weld328.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8709 | Weld328.C1 = CFrame.new(1.20785018e-07, 3.03727884e-05, 0.132775158, -1, 8.50133963e-10, 4.23458851e-10, 8.50476911e-10, 0.999999702, 0.000810569618, -4.22769625e-10, 0.000810569618, -0.999999702) | |
| 8710 | Weld329.Parent = Part292 | |
| 8711 | Weld329.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8712 | Weld329.C1 = CFrame.new(6.63429382e-05, -0.400390744, 0.933595598, 8.14806722e-10, 0.999999702, 0.000811841746, 1, -8.14434464e-10, -4.58876631e-10, -4.58215271e-10, 0.000811841746, -0.999999702) | |
| 8713 | Weld330.Parent = Part292 | |
| 8714 | Weld330.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8715 | Weld330.C1 = CFrame.new(2.15904674e-05, -0.933605134, 0.400390595, 8.35977676e-10, 0.999999702, 0.000817724678, 6.19722884e-10, -0.000817724678, 0.999999702, 1, -8.35470693e-10, -6.20406337e-10) | |
| 8716 | Weld331.Parent = Part292 | |
| 8717 | Weld331.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8718 | Weld331.C1 = CFrame.new(-1.52702455e-07, -0.373297483, -0.533215165, 1, -9.17886822e-10, -2.52556753e-10, 9.18089604e-10, 0.999999702, 0.000804377254, 2.51818288e-10, -0.000804377254, 0.999999702) | |
| 8719 | Weld332.Parent = Part292 | |
| 8720 | Weld332.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8721 | Weld332.C1 = CFrame.new(-0.533214509, 4.16217954e-05, -0.400390595, 6.19143847e-10, -0.000817724678, 0.999999702, 8.15887191e-10, 0.999999702, 0.000817724678, -1, 8.15380652e-10, 6.19810814e-10) | |
| 8722 | Weld333.Parent = Part292 | |
| 8723 | Weld333.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10) | |
| 8724 | Weld333.C1 = CFrame.new(3.86851866e-08, 1.33582325e-05, -0.93360126, 1, 2.30016242e-10, -1.24190033e-10, 2.3550692e-10, 0.999999702, 0.000801045971, 3.36916911e-10, -0.000808193639, 0.999999702) | |
| 8725 | Weld334.Parent = Part292 | |
| 8726 | Weld334.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8727 | Weld334.C1 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8728 | Weld335.Parent = Part292 | |
| 8729 | Weld335.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8730 | Weld335.C1 = CFrame.new(0.533207655, 4.00506069e-05, -0.399536133, -2.64911593e-10, 0.997566879, -0.069715552, 4.01852024e-11, 0.0697179288, 0.9975667, 1, 1.98314268e-10, 2.08188033e-11) | |
| 8731 | Weld336.Parent = Part292 | |
| 8732 | Weld336.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8733 | Weld336.C1 = CFrame.new(-4.09776021e-07, 5.64174661e-05, -0.533183694, 1, 5.16648224e-10, -1.33828371e-09, 1.29899103e-09, 0.0697453171, 0.997564912, 6.08729123e-10, -0.997564912, 0.0697453246) | |
| 8734 | Weld337.Parent = Part292 | |
| 8735 | Weld337.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8736 | Weld337.C1 = CFrame.new(0.53322345, 0.373397857, -4.03579065e-07, -8.32836911e-10, 0.997565448, -0.0697367489, 1.32148736e-09, 0.0697367489, 0.997565448, 1, 7.38653139e-10, -1.37634937e-09) | |
| 8737 | Weld338.Parent = Part292 | |
| 8738 | Weld338.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8739 | Weld338.C1 = CFrame.new(-9.81253652e-06, 0.132794693, 0.400390744, 3.829842e-10, 0.0697392747, 0.997565329, -4.07727963e-10, 0.997565329, -0.0697392747, -1, -3.80026233e-10, 4.10486423e-10) | |
| 8740 | Weld339.Parent = Part292 | |
| 8741 | Weld339.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8742 | Weld339.C1 = CFrame.new(2.00291402e-06, -0.400390506, -0.132815465, 3.90647487e-10, 0.0697226226, 0.997566521, -1, -3.79534459e-10, 4.18127227e-10, 4.07763739e-10, -0.997566402, 0.0697226301) | |
| 8743 | Weld340.Parent = Part292 | |
| 8744 | Weld340.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8745 | Weld340.C1 = CFrame.new(1.20755828e-07, 4.99412226e-06, 0.132797584, -1, -1.82865389e-10, 3.9878062e-10, 3.85058263e-10, 0.0697321221, 0.997565806, -2.10228071e-10, 0.997565746, -0.0697321221) | |
| 8746 | Weld341.Parent = Part292 | |
| 8747 | Weld341.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8748 | Weld341.C1 = CFrame.new(4.74962835e-05, -0.400390744, 0.933588088, 3.49388324e-10, 0.0697333813, 0.997565746, 1, 2.20712254e-10, -3.65669495e-10, -2.45674314e-10, 0.997565746, -0.0697333887) | |
| 8749 | Weld342.Parent = Part292 | |
| 8750 | Weld342.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8751 | Weld342.C1 = CFrame.new(2.00708268e-06, -0.933598638, 0.400390506, 3.70557002e-10, 0.0697226226, 0.997566521, 4.07184675e-10, -0.997566402, 0.0697226301, 1, 3.80357551e-10, -3.98045263e-10) | |
| 8752 | Weld343.Parent = Part292 | |
| 8753 | Weld343.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8754 | Weld343.C1 = CFrame.new(-1.0609989e-07, -0.373298496, -0.533198833, 1, 7.61074016e-12, -4.54308563e-10, 4.52671733e-10, 0.0697359443, 0.997565567, 3.92738446e-11, -0.997565567, 0.0697359443) | |
| 8755 | Weld344.Parent = Part292 | |
| 8756 | Weld344.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8757 | Weld344.C1 = CFrame.new(-0.533206105, 3.25288311e-05, -0.400390536, 4.0660561e-10, -0.997566402, 0.0697226301, 3.50466517e-10, 0.0697226226, 0.997566521, -1, -3.8118067e-10, 3.77963272e-10) | |
| 8758 | Weld345.Parent = Part292 | |
| 8759 | Weld345.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22) | |
| 8760 | Weld345.C1 = CFrame.new(-6.55530812e-08, 2.72896377e-05, -0.933581114, 1, 1.40101444e-10, 2.20685789e-10, 2.3550692e-10, 0.0697202981, 0.997566581, 3.36916911e-10, -0.997567058, 0.0697131678) | |
| 8761 | Weld346.Parent = Part292 | |
| 8762 | Weld346.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8763 | Weld346.C1 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8764 | Weld347.Parent = Part292 | |
| 8765 | Weld347.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8766 | Weld347.C1 = CFrame.new(0.5332008, 8.52442608e-05, -0.399536431, -1.4692636e-09, 0.000846330251, -0.999999642, 2.67755484e-09, 0.999999702, 0.000846330193, 1, -2.67631073e-09, -1.47152912e-09) | |
| 8767 | Weld348.Parent = Part292 | |
| 8768 | Weld348.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8769 | Weld348.C1 = CFrame.new(-3.54604822e-07, 7.10747918e-05, -0.533170998, 1, -2.69418865e-09, -1.24858379e-09, 2.69523404e-09, 0.999999702, 0.000838225707, 1.24632515e-09, -0.000838225707, 0.999999642) | |
| 8770 | Weld349.Parent = Part292 | |
| 8771 | Weld349.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8772 | Weld349.C1 = CFrame.new(0.533231318, 0.373406291, -2.83906502e-07, -1.47042167e-09, 0.000846330251, -0.999999642, 2.71773581e-09, 0.999999702, 0.000846330193, 1, -2.71649037e-09, -1.47272128e-09) | |
| 8773 | Weld350.Parent = Part292 | |
| 8774 | Weld350.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8775 | Weld350.C1 = CFrame.new(5.93345294e-06, 0.132752568, 0.400390923, 2.71005463e-09, 0.999999702, 0.000829644501, -1.47042467e-09, 0.000829644501, -0.999999642, -1, 2.70883382e-09, 1.47267265e-09) | |
| 8776 | Weld351.Parent = Part292 | |
| 8777 | Weld351.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8778 | Weld351.C1 = CFrame.new(8.4651374e-06, -0.400390327, -0.132810175, 2.71773581e-09, 0.999999702, 0.000846330193, -1, 2.71649037e-09, 1.47272128e-09, 1.47042167e-09, -0.000846330251, 0.999999642) | |
| 8779 | Weld352.Parent = Part292 | |
| 8780 | Weld352.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8781 | Weld352.C1 = CFrame.new(3.62762336e-07, 2.95230384e-05, 0.132817402, -1, 2.71106715e-09, 1.27517807e-09, 2.71213629e-09, 0.999999702, 0.000839179265, -1.27290256e-09, 0.000839179265, -0.999999642) | |
| 8782 | Weld353.Parent = Part292 | |
| 8783 | Weld353.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8784 | Weld353.C1 = CFrame.new(0.000142092002, -0.400391012, 0.93360728, 2.67646505e-09, 0.999999702, 0.000840450521, 1, -2.6753646e-09, -1.31059485e-09, -1.30834588e-09, 0.000840450521, -0.999999642) | |
| 8785 | Weld354.Parent = Part292 | |
| 8786 | Weld354.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8787 | Weld354.C1 = CFrame.new(0.000101452555, -0.933591425, 0.400390327, 2.69764522e-09, 0.999999702, 0.000846330193, 1.46984258e-09, -0.000846330251, 0.999999642, 1, -2.69640044e-09, -1.47212509e-09) | |
| 8788 | Weld355.Parent = Part292 | |
| 8789 | Weld355.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8790 | Weld355.C1 = CFrame.new(-3.94687646e-07, -0.373256177, -0.533165812, 1, -2.77882695e-09, -1.10427789e-09, 2.77974577e-09, 0.999999702, 0.000832981663, 1.10196274e-09, -0.000832981663, 0.999999642) | |
| 8791 | Weld356.Parent = Part292 | |
| 8792 | Weld356.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8793 | Weld356.C1 = CFrame.new(-0.5332008, 8.52442608e-05, -0.400390327, 1.4692636e-09, -0.000846330251, 0.999999642, 2.67755484e-09, 0.999999702, 0.000846330193, -1, 2.67631073e-09, 1.47152912e-09) | |
| 8794 | Weld357.Parent = Part292 | |
| 8795 | Weld357.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10) | |
| 8796 | Weld357.C1 = CFrame.new(-2.17958132e-08, 2.16124681e-05, -0.933588922, 1, -7.00479896e-10, -5.50027579e-10, 7.00928149e-10, 0.999999702, 0.000815343345, 5.49456258e-10, -0.000815343345, 0.999999702) | |
| 8797 | Weld358.Parent = Part292 | |
| 8798 | Weld358.C0 = CFrame.new(2.73681553e-06, -7.9203943e-08, -1.32984567e-07, -1, 4.29049651e-05, 1.27289645e-09, 4.29049651e-05, 1, -2.71216405e-09, -1.27303168e-09, -2.7121092e-09, -1) | |
| 8799 | Weld358.C1 = CFrame.new(2.73681553e-06, -7.9203943e-08, -1.32984567e-07, -1, 4.29049651e-05, 1.27289645e-09, 4.29049651e-05, 1, -2.71216405e-09, -1.27303168e-09, -2.7121092e-09, -1) | |
| 8800 | Weld358.Part0 = Part292 | |
| 8801 | Weld358.Part1 = Part292 | |
| 8802 | Weld359.Parent = Part292 | |
| 8803 | Weld359.C0 = CFrame.new(2.58500165e-07, 1.47510104e-06, 9.1201764e-07, -0.0304826926, -0.998224854, 0.0511664115, -0.997482359, 0.027100971, -0.0655324385, 0.0640294328, -0.0530351698, -0.996537805) | |
| 8804 | Weld359.C1 = CFrame.new(2.58500165e-07, 1.47510104e-06, 9.1201764e-07, -0.0304826926, -0.998224854, 0.0511664115, -0.997482359, 0.027100971, -0.0655324385, 0.0640294328, -0.0530351698, -0.996537805) | |
| 8805 | Weld359.Part0 = Part292 | |
| 8806 | Weld359.Part1 = Part292 | |
| 8807 | Weld360.Parent = Part292 | |
| 8808 | Weld360.C0 = CFrame.new(5.81937775e-06, 3.66444342e-09, 4.0117655e-07, -1, 1.83190277e-05, 1.62574338e-07, 1.82680233e-05, 1, -5.43802935e-06, -1.05692934e-07, -5.39845632e-06, -1.00000012) | |
| 8809 | Weld360.C1 = CFrame.new(5.81937775e-06, 3.66444342e-09, 4.0117655e-07, -1, 1.83190277e-05, 1.62574338e-07, 1.82680233e-05, 1, -5.43802935e-06, -1.05692934e-07, -5.39845632e-06, -1.00000012) | |
| 8810 | Weld360.Part0 = Part292 | |
| 8811 | Weld360.Part1 = Part292 | |
| 8812 | Weld361.Parent = Part292 | |
| 8813 | Weld361.C0 = CFrame.new(5.19993637e-06, -2.07580495e-08, -4.3925632e-09, -0.99999994, -7.85102384e-06, 1.626222e-07, -7.9020283e-06, 1, -7.75445642e-06, -1.05581343e-07, -7.71488703e-06, -1.00000012) | |
| 8814 | Weld361.C1 = CFrame.new(5.19993637e-06, -2.07580495e-08, -4.3925632e-09, -0.99999994, -7.85102384e-06, 1.626222e-07, -7.9020283e-06, 1, -7.75445642e-06, -1.05581343e-07, -7.71488703e-06, -1.00000012) | |
| 8815 | Weld361.Part0 = Part292 | |
| 8816 | Weld361.Part1 = Part292 | |
| 8817 | Weld362.Parent = Part292 | |
| 8818 | Weld362.C0 = CFrame.new(-4.51719643e-07, 1.87397453e-09, -3.76758157e-06, -0.999999821, -3.77100787e-06, -6.00899241e-09, -3.82201188e-06, 1, -4.80523522e-06, 6.30072776e-08, -4.76566538e-06, -1.00000012) | |
| 8819 | Weld362.C1 = CFrame.new(-4.51719643e-07, 1.87397453e-09, -3.76758157e-06, -0.999999821, -3.77100787e-06, -6.00899241e-09, -3.82201188e-06, 1, -4.80523522e-06, 6.30072776e-08, -4.76566538e-06, -1.00000012) | |
| 8820 | Weld362.Part0 = Part292 | |
| 8821 | Weld362.Part1 = Part292 | |
| 8822 | Weld363.Parent = Part292 | |
| 8823 | Weld363.C0 = CFrame.new(1.26816673e-07, -2.34453221e-08, 5.90223294e-07, -0.999999762, -1.85550198e-05, -5.83594151e-09, -1.86060279e-05, 1, -8.11173049e-06, 6.29660306e-08, -8.07215929e-06, -1.00000012) | |
| 8824 | Weld363.C1 = CFrame.new(1.26816673e-07, -2.34453221e-08, 5.90223294e-07, -0.999999762, -1.85550198e-05, -5.83594151e-09, -1.86060279e-05, 1, -8.11173049e-06, 6.29660306e-08, -8.07215929e-06, -1.00000012) | |
| 8825 | Weld363.Part0 = Part292 | |
| 8826 | Weld363.Part1 = Part292 | |
| 8827 | Weld364.Parent = Part292 | |
| 8828 | Weld364.C0 = CFrame.new(8.01678993e-07, -1.1426212e-08, -1.10775409e-06, -0.999999702, -1.59489209e-05, -5.85270321e-09, -1.5999929e-05, 1, -9.83655082e-06, 6.29892654e-08, -9.79697961e-06, -1.00000012) | |
| 8829 | Weld364.C1 = CFrame.new(8.01678993e-07, -1.1426212e-08, -1.10775409e-06, -0.999999702, -1.59489209e-05, -5.85270321e-09, -1.5999929e-05, 1, -9.83655082e-06, 6.29892654e-08, -9.79697961e-06, -1.00000012) | |
| 8830 | Weld364.Part0 = Part292 | |
| 8831 | Weld364.Part1 = Part292 | |
| 8832 | Weld365.Parent = Part292 | |
| 8833 | Weld365.C0 = CFrame.new(1.07855703e-06, -1.98978043e-08, -4.36352309e-07, -0.999999642, -1.87142232e-05, -3.42939558e-07, -1.87652277e-05, 1, -1.32089617e-05, 4.00166499e-07, -1.31693841e-05, -1.00000012) | |
| 8834 | Weld365.C1 = CFrame.new(1.07855703e-06, -1.98978043e-08, -4.36352309e-07, -0.999999642, -1.87142232e-05, -3.42939558e-07, -1.87652277e-05, 1, -1.32089617e-05, 4.00166499e-07, -1.31693841e-05, -1.00000012) | |
| 8835 | Weld365.Part0 = Part292 | |
| 8836 | Weld365.Part1 = Part292 | |
| 8837 | Weld366.Parent = Part292 | |
| 8838 | Weld366.C0 = CFrame.new(-2.96131202e-06, 1.15200116e-08, -5.08313747e-08, -0.999999583, -2.1935306e-05, -3.42888029e-07, -2.19863105e-05, 1, -1.28208176e-05, 4.00148849e-07, -1.27812382e-05, -1.00000012) | |
| 8839 | Weld366.C1 = CFrame.new(-2.96131202e-06, 1.15200116e-08, -5.08313747e-08, -0.999999583, -2.1935306e-05, -3.42888029e-07, -2.19863105e-05, 1, -1.28208176e-05, 4.00148849e-07, -1.27812382e-05, -1.00000012) | |
| 8840 | Weld366.Part0 = Part292 | |
| 8841 | Weld366.Part1 = Part292 | |
| 8842 | Part367.Name = "BoltBack" | |
| 8843 | Part367.Parent = Tool0 | |
| 8844 | Part367.BrickColor = BrickColor.new("Really black")
| |
| 8845 | Part367.Transparency = 1 | |
| 8846 | Part367.Rotation = Vector3.new(179.979996, 0, -180) | |
| 8847 | Part367.Anchored = true | |
| 8848 | Part367.CanCollide = false | |
| 8849 | Part367.FormFactor = Enum.FormFactor.Custom | |
| 8850 | Part367.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003) | |
| 8851 | Part367.CFrame = CFrame.new(1436.87451, 48.6733093, -1310.87573, -1, 0, 0, 0, 1, -0.000345999986, 0, -0.000345999986, -1) | |
| 8852 | Part367.BottomSurface = Enum.SurfaceType.Smooth | |
| 8853 | Part367.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 8854 | Part367.TopSurface = Enum.SurfaceType.Smooth | |
| 8855 | Part367.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 8856 | Part367.Position = Vector3.new(1436.87451, 48.6733093, -1310.87573) | |
| 8857 | Part367.Orientation = Vector3.new(0.0199999996, 180, 0) | |
| 8858 | Part367.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 8859 | Sound368.Name = "FireSound" | |
| 8860 | Sound368.Parent = Part367 | |
| 8861 | Sound368.SoundId = "rbxassetid://135039581" | |
| 8862 | Sound368.Volume = 1 | |
| 8863 | Sound369.Name = "ReloadSound" | |
| 8864 | Sound369.Parent = Part367 | |
| 8865 | Sound369.SoundId = "rbxassetid://255061162" | |
| 8866 | Sound369.Volume = 1 | |
| 8867 | Part370.Name = "Bolt" | |
| 8868 | Part370.Parent = Tool0 | |
| 8869 | Part370.BrickColor = BrickColor.new("Really black")
| |
| 8870 | Part370.Transparency = 1 | |
| 8871 | Part370.Rotation = Vector3.new(179.979996, 0, -180) | |
| 8872 | Part370.Anchored = true | |
| 8873 | Part370.CanCollide = false | |
| 8874 | Part370.FormFactor = Enum.FormFactor.Custom | |
| 8875 | Part370.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003) | |
| 8876 | Part370.CFrame = CFrame.new(1436.87451, 48.6733093, -1310.87573, -1, 0, 0, 0, 1, -0.000345999986, 0, -0.000345999986, -1) | |
| 8877 | Part370.BottomSurface = Enum.SurfaceType.Smooth | |
| 8878 | Part370.LeftSurface = Enum.SurfaceType.SmoothNoOutlines | |
| 8879 | Part370.TopSurface = Enum.SurfaceType.Smooth | |
| 8880 | Part370.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 8881 | Part370.Position = Vector3.new(1436.87451, 48.6733093, -1310.87573) | |
| 8882 | Part370.Orientation = Vector3.new(0.0199999996, 180, 0) | |
| 8883 | Part370.Color = Color3.new(0.0666667, 0.0666667, 0.0666667) | |
| 8884 | Sound371.Name = "FireSound" | |
| 8885 | Sound371.Parent = Part370 | |
| 8886 | Sound371.SoundId = "rbxassetid://135039581" | |
| 8887 | Sound371.Volume = 1 | |
| 8888 | Sound372.Name = "ReloadSound" | |
| 8889 | Sound372.Parent = Part370 | |
| 8890 | Sound372.SoundId = "rbxassetid://255061162" | |
| 8891 | Sound372.Volume = 1 | |
| 8892 | Model373.Name = "Nigger" | |
| 8893 | Model373.Parent = Tool0 | |
| 8894 | Part374.Name = "Right Leg" | |
| 8895 | Part374.Parent = Model373 | |
| 8896 | Part374.BrickColor = BrickColor.new("Reddish brown")
| |
| 8897 | Part374.Rotation = Vector3.new(0, -90, 0) | |
| 8898 | Part374.Anchored = true | |
| 8899 | Part374.CanCollide = false | |
| 8900 | Part374.FormFactor = Enum.FormFactor.Symmetric | |
| 8901 | Part374.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305) | |
| 8902 | Part374.CFrame = CFrame.new(1434.75476, 44.2668762, -1310.34082, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8903 | Part374.BottomSurface = Enum.SurfaceType.Smooth | |
| 8904 | Part374.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8905 | Part374.Position = Vector3.new(1434.75476, 44.2668762, -1310.34082) | |
| 8906 | Part374.Orientation = Vector3.new(0, -90, 0) | |
| 8907 | Part374.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8908 | Decal375.Parent = Part374 | |
| 8909 | Decal375.Texture = "http://www.roblox.com/asset/?id=513989292" | |
| 8910 | Part376.Name = "Torso" | |
| 8911 | Part376.Parent = Model373 | |
| 8912 | Part376.BrickColor = BrickColor.new("Reddish brown")
| |
| 8913 | Part376.Rotation = Vector3.new(0, -90, 0) | |
| 8914 | Part376.Anchored = true | |
| 8915 | Part376.FormFactor = Enum.FormFactor.Symmetric | |
| 8916 | Part376.Size = Vector3.new(0.53363061, 0.53363061, 0.266815305) | |
| 8917 | Part376.CFrame = CFrame.new(1434.75476, 44.8004494, -1310.47424, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8918 | Part376.LeftSurface = Enum.SurfaceType.Weld | |
| 8919 | Part376.RightSurface = Enum.SurfaceType.Weld | |
| 8920 | Part376.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8921 | Part376.Position = Vector3.new(1434.75476, 44.8004494, -1310.47424) | |
| 8922 | Part376.Orientation = Vector3.new(0, -90, 0) | |
| 8923 | Part376.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8924 | Decal377.Name = "roblox" | |
| 8925 | Decal377.Parent = Part376 | |
| 8926 | Motor378.Name = "Right Shoulder" | |
| 8927 | Motor378.Parent = Part376 | |
| 8928 | Motor378.C0 = CFrame.new(0.266815305, 0.133407652, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 8929 | Motor378.C1 = CFrame.new(-0.133407652, 0.133407652, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 8930 | Motor378.Part0 = Part376 | |
| 8931 | Motor378.Part1 = Part383 | |
| 8932 | Motor378.MaxVelocity = 0.5 | |
| 8933 | Motor379.Name = "Left Shoulder" | |
| 8934 | Motor379.Parent = Part376 | |
| 8935 | Motor379.C0 = CFrame.new(-0.266815305, 0.133407652, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8936 | Motor379.C1 = CFrame.new(0.133407652, 0.133407652, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8937 | Motor379.Part0 = Part376 | |
| 8938 | Motor379.Part1 = Part385 | |
| 8939 | Motor379.MaxVelocity = 0.5 | |
| 8940 | Motor380.Name = "Right Hip" | |
| 8941 | Motor380.Parent = Part376 | |
| 8942 | Motor380.C0 = CFrame.new(0.266815305, -0.266815305, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 8943 | Motor380.C1 = CFrame.new(0.133407652, 0.266815305, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0) | |
| 8944 | Motor380.Part0 = Part376 | |
| 8945 | Motor380.Part1 = Part374 | |
| 8946 | Motor380.MaxVelocity = 0.10000000149012 | |
| 8947 | Motor381.Name = "Left Hip" | |
| 8948 | Motor381.Parent = Part376 | |
| 8949 | Motor381.C0 = CFrame.new(-0.266815305, -0.266815305, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8950 | Motor381.C1 = CFrame.new(-0.133407652, 0.266815305, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8951 | Motor381.Part0 = Part376 | |
| 8952 | Motor381.Part1 = Part384 | |
| 8953 | Motor381.MaxVelocity = 0.10000000149012 | |
| 8954 | Motor382.Name = "Neck" | |
| 8955 | Motor382.Parent = Part376 | |
| 8956 | Motor382.C0 = CFrame.new(0, 0.266815305, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0) | |
| 8957 | Motor382.C1 = CFrame.new(0, -0.133407652, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0) | |
| 8958 | Motor382.Part0 = Part376 | |
| 8959 | Motor382.Part1 = Part386 | |
| 8960 | Motor382.MaxVelocity = 0.10000000149012 | |
| 8961 | Part383.Name = "Right Arm" | |
| 8962 | Part383.Parent = Model373 | |
| 8963 | Part383.BrickColor = BrickColor.new("Reddish brown")
| |
| 8964 | Part383.Rotation = Vector3.new(0, -90, 0) | |
| 8965 | Part383.Anchored = true | |
| 8966 | Part383.CanCollide = false | |
| 8967 | Part383.FormFactor = Enum.FormFactor.Symmetric | |
| 8968 | Part383.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305) | |
| 8969 | Part383.CFrame = CFrame.new(1434.75476, 44.8004532, -1310.07397, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8970 | Part383.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8971 | Part383.Position = Vector3.new(1434.75476, 44.8004532, -1310.07397) | |
| 8972 | Part383.Orientation = Vector3.new(0, -90, 0) | |
| 8973 | Part383.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8974 | Part384.Name = "Left Leg" | |
| 8975 | Part384.Parent = Model373 | |
| 8976 | Part384.BrickColor = BrickColor.new("Reddish brown")
| |
| 8977 | Part384.Rotation = Vector3.new(0, -90, 0) | |
| 8978 | Part384.Anchored = true | |
| 8979 | Part384.CanCollide = false | |
| 8980 | Part384.FormFactor = Enum.FormFactor.Symmetric | |
| 8981 | Part384.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305) | |
| 8982 | Part384.CFrame = CFrame.new(1434.75476, 44.2668228, -1310.60767, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8983 | Part384.BottomSurface = Enum.SurfaceType.Smooth | |
| 8984 | Part384.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8985 | Part384.Position = Vector3.new(1434.75476, 44.2668228, -1310.60767) | |
| 8986 | Part384.Orientation = Vector3.new(0, -90, 0) | |
| 8987 | Part384.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8988 | Part385.Name = "Left Arm" | |
| 8989 | Part385.Parent = Model373 | |
| 8990 | Part385.BrickColor = BrickColor.new("Reddish brown")
| |
| 8991 | Part385.Rotation = Vector3.new(0, -90, 0) | |
| 8992 | Part385.Anchored = true | |
| 8993 | Part385.CanCollide = false | |
| 8994 | Part385.FormFactor = Enum.FormFactor.Symmetric | |
| 8995 | Part385.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305) | |
| 8996 | Part385.CFrame = CFrame.new(1434.75476, 44.8004341, -1310.87451, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 8997 | Part385.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 8998 | Part385.Position = Vector3.new(1434.75476, 44.8004341, -1310.87451) | |
| 8999 | Part385.Orientation = Vector3.new(0, -90, 0) | |
| 9000 | Part385.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 9001 | Part386.Name = "Head" | |
| 9002 | Part386.Parent = Model373 | |
| 9003 | Part386.BrickColor = BrickColor.new("Reddish brown")
| |
| 9004 | Part386.Rotation = Vector3.new(0, -90, 0) | |
| 9005 | Part386.Anchored = true | |
| 9006 | Part386.FormFactor = Enum.FormFactor.Symmetric | |
| 9007 | Part386.Size = Vector3.new(0.53363061, 0.266815305, 0.266815305) | |
| 9008 | Part386.CFrame = CFrame.new(1434.75476, 45.2006721, -1310.47424, 0, 0, -1, 0, 1, 0, 1, 0, 0) | |
| 9009 | Part386.TopSurface = Enum.SurfaceType.Smooth | |
| 9010 | Part386.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 9011 | Part386.Position = Vector3.new(1434.75476, 45.2006721, -1310.47424) | |
| 9012 | Part386.Orientation = Vector3.new(0, -90, 0) | |
| 9013 | Part386.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
| 9014 | SpecialMesh387.Parent = Part386 | |
| 9015 | SpecialMesh387.Scale = Vector3.new(1.25, 1.25, 1.25) | |
| 9016 | SpecialMesh387.Scale = Vector3.new(1.25, 1.25, 1.25) | |
| 9017 | Decal388.Parent = Part386 | |
| 9018 | Decal388.Texture = "http://www.roblox.com/asset/?id=42030236" | |
| 9019 | Decal389.Parent = Part386 | |
| 9020 | Decal389.Texture = "http://www.roblox.com/asset/?id=513989292" | |
| 9021 | Humanoid390.Parent = Model373 | |
| 9022 | Humanoid390.RightLeg = Part374 | |
| 9023 | Humanoid390.LeftLeg = Part384 | |
| 9024 | Humanoid390.Torso = Part376 | |
| 9025 | Humanoid390.MaxHealth = 0 | |
| 9026 | Script391.Name = "Humaniod" | |
| 9027 | Script391.Parent = Model373 | |
| 9028 | table.insert(cors,sandbox(Script391,function() | |
| 9029 | local Model = script.Parent | |
| 9030 | local Backup = Model:clone() | |
| 9031 | ||
| 9032 | function Respawn() | |
| 9033 | Model:breakJoints() | |
| 9034 | ||
| 9035 | wait(5) | |
| 9036 | ||
| 9037 | script.Parent = Model.Parent | |
| 9038 | ||
| 9039 | Model:remove() | |
| 9040 | Model = Backup:clone() | |
| 9041 | Model.Parent = script.Parent | |
| 9042 | Model:makeJoints() | |
| 9043 | ||
| 9044 | script:remove() | |
| 9045 | end | |
| 9046 | ||
| 9047 | Model.Humanoid.Died:connect(Respawn) | |
| 9048 | ||
| 9049 | function waitForChild(parent, childName) | |
| 9050 | local child = parent:findFirstChild(childName) | |
| 9051 | ||
| 9052 | if child then | |
| 9053 | return child | |
| 9054 | end | |
| 9055 | ||
| 9056 | while true do | |
| 9057 | print(childName) | |
| 9058 | ||
| 9059 | child = parent.ChildAdded:wait() | |
| 9060 | ||
| 9061 | if child.Name==childName then | |
| 9062 | return child | |
| 9063 | end | |
| 9064 | end | |
| 9065 | end | |
| 9066 | ||
| 9067 | -- declarations | |
| 9068 | ||
| 9069 | local Figure = script.Parent | |
| 9070 | local Head = waitForChild(Figure, "Head") | |
| 9071 | local Humanoid = waitForChild(Figure, "Humanoid") | |
| 9072 | ||
| 9073 | Figure.PrimaryPart = Head | |
| 9074 | ||
| 9075 | -- ANIMATION | |
| 9076 | ||
| 9077 | function Joint(Name, Part0, Part1, C0, C1, MaxVelocity) | |
| 9078 | local Motor = Instance.new("Motor")
| |
| 9079 | ||
| 9080 | Motor.C0 = C0 | |
| 9081 | Motor.C1 = C1 | |
| 9082 | Motor.MaxVelocity = MaxVelocity | |
| 9083 | Motor.Name = Name | |
| 9084 | Motor.Parent = Part0 | |
| 9085 | Motor.Part0 = Part0 | |
| 9086 | Motor.Part1 = Part1 | |
| 9087 | end | |
| 9088 | ||
| 9089 | -- declarations | |
| 9090 | ||
| 9091 | local Torso = waitForChild(Figure, "Torso") | |
| 9092 | local LeftArm = waitForChild(Figure, "Left Arm") | |
| 9093 | local LeftLeg = waitForChild(Figure, "Left Leg") | |
| 9094 | local RightArm = waitForChild(Figure, "Right Arm") | |
| 9095 | local RightLeg = waitForChild(Figure, "Right Leg") | |
| 9096 | ||
| 9097 | local Joints = {
| |
| 9098 | {"Right Shoulder", Torso, RightArm, CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), 0.5},
| |
| 9099 | {"Left Shoulder", Torso, LeftArm, CFrame.new(-1, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), CFrame.new(0.5, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), 0.5},
| |
| 9100 | {"Right Hip", Torso, RightLeg, CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), 0.10000000149012},
| |
| 9101 | {"Left Hip", Torso, LeftLeg, CFrame.new(-1, -1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), CFrame.new(-0.5, 1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), 0.10000000149012},
| |
| 9102 | {"Neck", Torso, Head, CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0), CFrame.new(0, -0.5, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0), 0.10000000149012}}
| |
| 9103 | ||
| 9104 | Torso:breakJoints() | |
| 9105 | ||
| 9106 | for _, v in pairs(Joints) do | |
| 9107 | Joint(unpack(v)) | |
| 9108 | end | |
| 9109 | ||
| 9110 | local RightShoulder = waitForChild(Torso, "Right Shoulder") | |
| 9111 | local LeftShoulder = waitForChild(Torso, "Left Shoulder") | |
| 9112 | local RightHip = waitForChild(Torso, "Right Hip") | |
| 9113 | local LeftHip = waitForChild(Torso, "Left Hip") | |
| 9114 | local Neck = waitForChild(Torso, "Neck") | |
| 9115 | local Humanoid = waitForChild(Figure, "Humanoid") | |
| 9116 | local pose = "Standing" | |
| 9117 | ||
| 9118 | local toolAnim = "None" | |
| 9119 | local toolAnimTime = 0 | |
| 9120 | ||
| 9121 | -- functions | |
| 9122 | ||
| 9123 | function onRunning(speed) | |
| 9124 | if speed>0 then | |
| 9125 | pose = "Running" | |
| 9126 | else | |
| 9127 | pose = "Standing" | |
| 9128 | end | |
| 9129 | end | |
| 9130 | ||
| 9131 | function onDied() | |
| 9132 | pose = "Dead" | |
| 9133 | end | |
| 9134 | ||
| 9135 | function onJumping() | |
| 9136 | pose = "Jumping" | |
| 9137 | end | |
| 9138 | ||
| 9139 | function onClimbing() | |
| 9140 | pose = "Climbing" | |
| 9141 | end | |
| 9142 | ||
| 9143 | function onGettingUp() | |
| 9144 | pose = "GettingUp" | |
| 9145 | end | |
| 9146 | ||
| 9147 | function onFreeFall() | |
| 9148 | pose = "FreeFall" | |
| 9149 | end | |
| 9150 | ||
| 9151 | function onFallingDown() | |
| 9152 | pose = "FallingDown" | |
| 9153 | end | |
| 9154 | ||
| 9155 | function onSeated() | |
| 9156 | pose = "Seated" | |
| 9157 | end | |
| 9158 | ||
| 9159 | function onPlatformStanding() | |
| 9160 | pose = "PlatformStanding" | |
| 9161 | end | |
| 9162 | ||
| 9163 | function moveJump() | |
| 9164 | RightShoulder.MaxVelocity = 0.5 | |
| 9165 | LeftShoulder.MaxVelocity = 0.5 | |
| 9166 | RightShoulder.DesiredAngle = 3.14 | |
| 9167 | LeftShoulder.DesiredAngle = -3.14 | |
| 9168 | RightHip.DesiredAngle = 0 | |
| 9169 | LeftHip.DesiredAngle = 0 | |
| 9170 | end | |
| 9171 | ||
| 9172 | ||
| 9173 | -- same as jump for now | |
| 9174 | ||
| 9175 | function moveFreeFall() | |
| 9176 | RightShoulder.MaxVelocity = 0.5 | |
| 9177 | LeftShoulder.MaxVelocity = 0.5 | |
| 9178 | RightShoulder.DesiredAngle = 3.14 | |
| 9179 | LeftShoulder.DesiredAngle = -3.14 | |
| 9180 | RightHip.DesiredAngle = 0 | |
| 9181 | LeftHip.DesiredAngle = 0 | |
| 9182 | end | |
| 9183 | ||
| 9184 | function moveSit() | |
| 9185 | RightShoulder.MaxVelocity = 0.15 | |
| 9186 | LeftShoulder.MaxVelocity = 0.15 | |
| 9187 | RightShoulder.DesiredAngle = 3.14 /2 | |
| 9188 | LeftShoulder.DesiredAngle = -3.14 /2 | |
| 9189 | RightHip.DesiredAngle = 3.14 /2 | |
| 9190 | LeftHip.DesiredAngle = -3.14 /2 | |
| 9191 | end | |
| 9192 | ||
| 9193 | function getTool() | |
| 9194 | for _, kid in ipairs(Figure:GetChildren()) do | |
| 9195 | if kid.className == "Tool" then return kid end | |
| 9196 | end | |
| 9197 | return nil | |
| 9198 | end | |
| 9199 | ||
| 9200 | function getToolAnim(tool) | |
| 9201 | for _, c in ipairs(tool:GetChildren()) do | |
| 9202 | if c.Name == "toolanim" and c.className == "StringValue" then | |
| 9203 | return c | |
| 9204 | end | |
| 9205 | end | |
| 9206 | return nil | |
| 9207 | end | |
| 9208 | ||
| 9209 | function animateTool() | |
| 9210 | ||
| 9211 | if (toolAnim == "None") then | |
| 9212 | RightShoulder.DesiredAngle = 1.57 | |
| 9213 | return | |
| 9214 | end | |
| 9215 | ||
| 9216 | if (toolAnim == "Slash") then | |
| 9217 | RightShoulder.MaxVelocity = 0.5 | |
| 9218 | RightShoulder.DesiredAngle = 0 | |
| 9219 | return | |
| 9220 | end | |
| 9221 | ||
| 9222 | if (toolAnim == "Lunge") then | |
| 9223 | RightShoulder.MaxVelocity = 0.5 | |
| 9224 | LeftShoulder.MaxVelocity = 0.5 | |
| 9225 | RightHip.MaxVelocity = 0.5 | |
| 9226 | LeftHip.MaxVelocity = 0.5 | |
| 9227 | RightShoulder.DesiredAngle = 1.57 | |
| 9228 | LeftShoulder.DesiredAngle = 1.0 | |
| 9229 | RightHip.DesiredAngle = 1.57 | |
| 9230 | LeftHip.DesiredAngle = 1.0 | |
| 9231 | return | |
| 9232 | end | |
| 9233 | end | |
| 9234 | ||
| 9235 | function move(time) | |
| 9236 | local amplitude | |
| 9237 | local frequency | |
| 9238 | ||
| 9239 | if (pose == "Jumping") then | |
| 9240 | moveJump() | |
| 9241 | return | |
| 9242 | end | |
| 9243 | ||
| 9244 | if (pose == "FreeFall") then | |
| 9245 | moveFreeFall() | |
| 9246 | return | |
| 9247 | end | |
| 9248 | ||
| 9249 | if (pose == "Seated") then | |
| 9250 | moveSit() | |
| 9251 | return | |
| 9252 | end | |
| 9253 | ||
| 9254 | local climbFudge = 0 | |
| 9255 | ||
| 9256 | if (pose == "Running") then | |
| 9257 | RightShoulder.MaxVelocity = 0.15 | |
| 9258 | LeftShoulder.MaxVelocity = 0.15 | |
| 9259 | amplitude = 1 | |
| 9260 | frequency = 9 | |
| 9261 | elseif (pose == "Climbing") then | |
| 9262 | RightShoulder.MaxVelocity = 0.5 | |
| 9263 | LeftShoulder.MaxVelocity = 0.5 | |
| 9264 | amplitude = 1 | |
| 9265 | frequency = 9 | |
| 9266 | climbFudge = 3.14 | |
| 9267 | else | |
| 9268 | amplitude = 0.1 | |
| 9269 | frequency = 1 | |
| 9270 | end | |
| 9271 | ||
| 9272 | desiredAngle = amplitude * math.sin(time*frequency) | |
| 9273 | ||
| 9274 | RightShoulder.DesiredAngle = desiredAngle + climbFudge | |
| 9275 | LeftShoulder.DesiredAngle = desiredAngle - climbFudge | |
| 9276 | RightHip.DesiredAngle = -desiredAngle | |
| 9277 | LeftHip.DesiredAngle = -desiredAngle | |
| 9278 | ||
| 9279 | ||
| 9280 | local tool = getTool() | |
| 9281 | ||
| 9282 | if tool then | |
| 9283 | ||
| 9284 | animStringValueObject = getToolAnim(tool) | |
| 9285 | ||
| 9286 | if animStringValueObject then | |
| 9287 | toolAnim = animStringValueObject.Value | |
| 9288 | -- message recieved, delete StringValue | |
| 9289 | animStringValueObject.Parent = nil | |
| 9290 | toolAnimTime = time + .3 | |
| 9291 | end | |
| 9292 | ||
| 9293 | if time > toolAnimTime then | |
| 9294 | toolAnimTime = 0 | |
| 9295 | toolAnim = "None" | |
| 9296 | end | |
| 9297 | ||
| 9298 | animateTool() | |
| 9299 | ||
| 9300 | ||
| 9301 | else | |
| 9302 | toolAnim = "None" | |
| 9303 | toolAnimTime = 0 | |
| 9304 | end | |
| 9305 | end | |
| 9306 | ||
| 9307 | ||
| 9308 | -- connect events | |
| 9309 | ||
| 9310 | Humanoid.Died:connect(onDied) | |
| 9311 | Humanoid.Running:connect(onRunning) | |
| 9312 | Humanoid.Jumping:connect(onJumping) | |
| 9313 | Humanoid.Climbing:connect(onClimbing) | |
| 9314 | Humanoid.GettingUp:connect(onGettingUp) | |
| 9315 | Humanoid.FreeFalling:connect(onFreeFall) | |
| 9316 | Humanoid.FallingDown:connect(onFallingDown) | |
| 9317 | Humanoid.Seated:connect(onSeated) | |
| 9318 | Humanoid.PlatformStanding:connect(onPlatformStanding) | |
| 9319 | ||
| 9320 | -- util | |
| 9321 | ||
| 9322 | function waitForChild(parent, childName) | |
| 9323 | local child = parent:findFirstChild(childName) | |
| 9324 | if child then return child end | |
| 9325 | while true do | |
| 9326 | child = parent.ChildAdded:wait() | |
| 9327 | if child.Name==childName then return child end | |
| 9328 | end | |
| 9329 | end | |
| 9330 | ||
| 9331 | function newSound(id) | |
| 9332 | local sound = Instance.new("Sound")
| |
| 9333 | sound.SoundId = id | |
| 9334 | sound.archivable = false | |
| 9335 | sound.Parent = script.Parent.Head | |
| 9336 | return sound | |
| 9337 | end | |
| 9338 | ||
| 9339 | -- declarations | |
| 9340 | ||
| 9341 | local sDied = newSound("rbxasset://sounds/uuhhh.wav")
| |
| 9342 | local sFallingDown = newSound("rbxasset://sounds/splat.wav")
| |
| 9343 | local sFreeFalling = newSound("rbxasset://sounds/swoosh.wav")
| |
| 9344 | local sGettingUp = newSound("rbxasset://sounds/hit.wav")
| |
| 9345 | local sJumping = newSound("rbxasset://sounds/button.wav")
| |
| 9346 | local sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3")
| |
| 9347 | sRunning.Looped = true | |
| 9348 | ||
| 9349 | -- functions | |
| 9350 | ||
| 9351 | function onSoundDied() | |
| 9352 | sDied:Play() | |
| 9353 | end | |
| 9354 | ||
| 9355 | function onState(state, sound) | |
| 9356 | if state then | |
| 9357 | sound:Play() | |
| 9358 | else | |
| 9359 | sound:Pause() | |
| 9360 | end | |
| 9361 | end | |
| 9362 | ||
| 9363 | function onSoundRunning(speed) | |
| 9364 | if speed>0 then | |
| 9365 | sRunning:Play() | |
| 9366 | else | |
| 9367 | sRunning:Pause() | |
| 9368 | end | |
| 9369 | end | |
| 9370 | ||
| 9371 | -- connect up | |
| 9372 | ||
| 9373 | Humanoid.Died:connect(onSoundDied) | |
| 9374 | Humanoid.Running:connect(onSoundRunning) | |
| 9375 | Humanoid.Jumping:connect(function(state) onState(state, sJumping) end) | |
| 9376 | Humanoid.GettingUp:connect(function(state) onState(state, sGettingUp) end) | |
| 9377 | Humanoid.FreeFalling:connect(function(state) onState(state, sFreeFalling) end) | |
| 9378 | Humanoid.FallingDown:connect(function(state) onState(state, sFallingDown) end) | |
| 9379 | ||
| 9380 | local runService = game:service("RunService");
| |
| 9381 | ||
| 9382 | delay(0, function() | |
| 9383 | while Figure.Parent~=nil do | |
| 9384 | local _, time = wait(0.1) | |
| 9385 | move(time) | |
| 9386 | end | |
| 9387 | end) | |
| 9388 | ||
| 9389 | -- regeneration | |
| 9390 | while true do | |
| 9391 | local s = wait(1) | |
| 9392 | local health = Humanoid.Health | |
| 9393 | ||
| 9394 | if health > 0 and health < Humanoid.MaxHealth then | |
| 9395 | health = health + 0.01 * s * Humanoid.MaxHealth | |
| 9396 | ||
| 9397 | if health * 1.05 < Humanoid.MaxHealth then | |
| 9398 | Humanoid.Health = health | |
| 9399 | else | |
| 9400 | Humanoid.Health = Humanoid.MaxHealth | |
| 9401 | end | |
| 9402 | end | |
| 9403 | end | |
| 9404 | end)) | |
| 9405 | Shirt392.Name = "Shirt" | |
| 9406 | Shirt392.Parent = Model373 | |
| 9407 | Shirt392.ShirtTemplate = "http://www.roblox.com/asset/?id=22746098" | |
| 9408 | Pants393.Parent = Model373 | |
| 9409 | Pants393.PantsTemplate = "http://www.roblox.com/asset/?id=8173404" | |
| 9410 | Part394.Name = "hanger" | |
| 9411 | Part394.Parent = Model373 | |
| 9412 | Part394.Material = Enum.Material.Fabric | |
| 9413 | Part394.BrickColor = BrickColor.new("Brick yellow")
| |
| 9414 | Part394.Rotation = Vector3.new(0, 90, 0) | |
| 9415 | Part394.Anchored = true | |
| 9416 | Part394.Size = Vector3.new(0.0533630624, 3.41790414, 0.0827127546) | |
| 9417 | Part394.CFrame = CFrame.new(1434.76477, 47.0219231, -1310.42761, 0, 0, 1, 0, 1, 0, -1, 0, 0) | |
| 9418 | Part394.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 9419 | Part394.Position = Vector3.new(1434.76477, 47.0219231, -1310.42761) | |
| 9420 | Part394.Orientation = Vector3.new(0, 90, 0) | |
| 9421 | Part394.Color = Color3.new(0.843137, 0.772549, 0.603922) | |
| 9422 | for i,v in pairs(mas:GetChildren()) do | |
| 9423 | v.Parent = game:GetService("Players").LocalPlayer.Backpack
| |
| 9424 | pcall(function() v:MakeJoints() end) | |
| 9425 | end | |
| 9426 | mas:Destroy() | |
| 9427 | for i,v in pairs(cors) do | |
| 9428 | spawn(function() | |
| 9429 | pcall(v) | |
| 9430 | end) | |
| 9431 | end |