Pinkstack/roblox-luau-corpus-text huggingface dataset:
--[[
This script ensures that your game complies with GDPR requests. 

To remove player data when requested:
	1. Publish the place, then run it in the Roblox client (not within Studio).
	2. Once in the game, open the Developer Console by pressing F9 or typing /console into the chat.
	3. In the Log section, click the Server tab.
	4. In the console’s command line, enter the following command, where XXXXXXXX is the user’s ID provided to you by Roblox.
		- game.ServerStorage.RemovePlayerData:Fire("XXXXXXXX")
	5. Assuming a player data key was located with the Player_XXXXXXXX pattern, you'll see a console message indicating it was successfully removed from the data store:
--]]



local ServerStorage = game:GetService("ServerStorage")
local DataStoreService = game:GetService("DataStoreService")
local eventsFolder = ServerStorage:WaitForChild("Events")
local removePlayerDataEvent = eventsFolder:WaitForChild("RemovePlayerData")
-- Signal types


type Connection = {
	Disconnect: (self: Connection) -> (),
	Destroy: (self: Connection) -> (),
}

export type Signal<T...> = {
	Fire: (self: Signal<T...>, T...) -> (),
	FireDeferred: (self: Signal<T...>, T...) -> (),
	Connect: (self: Signal<T...>, fn: (T...) -> ()) -> Connection,
	Once: (self: Signal<T...>, fn: (T...) -> ()) -> Connection,
	DisconnectAll: (self: Signal<T...>) -> (),
	GetConnections: (self: Signal<T...>) -> { Connection },
	Destroy: (self: Signal<T...>) -> (),
	Wait: (self: Signal<T...>) -> T...,
}
--[[
TheNexusAvenger

Creates beams between parts.
--]]



local PartJoiner = {}

local SurfaceData = {
	[Enum.NormalId.Top] = {
		{
			Rotation = Vector3.new(0,0,-90),
			Position = Vector3.new(0,0.5,0.5),
			Width = "X"
		},
		{
			Rotation = Vector3.new(0,0,-90),
			Position = Vector3.new(0,0.5,-0.5),
			Width = "X"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(0.5,0.5,0),
			Width = "Z"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(-0.5,0.5,0),
			Width = "Z"
		},
	},
	[Enum.NormalId.Bottom] = {
		{
			Rotation = Vector3.new(0,0,-90),
			Position = Vector3.new(0,-0.5,0.5),
			Width = "X"
		},
		{
			Rotation = Vector3.new(0,0,-90),
			Position = Vector3.new(0,-0.5,-0.5),
			Width = "X"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(0.5,-0.5,0),
			Width = "Z"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(-0.5,-0.5,0),
			Width = "Z"
		},
	},
	[Enum.NormalId.Front] = {
		{
			Rotation = Vector3.new(0,-90,0),
			Position = Vector3.new(0.5,0,0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(0,-90,0),
			Position = Vector3.new(-0.5,0,0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(90,-90,0),
			Position = Vector3.new(0,0.5,0.5),
			Width = "X"
		},
		{
			Rotation = Vector3.new(90,-90,0),
			Position = Vector3.new(0,-0.5,0.5),
			Width = "X"
		},
	},
	[Enum.NormalId.Back] = {
		{
			Rotation = Vector3.new(0,-90,0),
			Position = Vector3.new(0.5,0,-0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(0,-90,0),
			Position = Vector3.new(-0.5,0,-0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(90,-90,0),
			Position = Vector3.new(0,0.5,-0.5),
			Width = "X"
		},
		{
			Rotation = Vector3.new(90,-90,0),
			Position = Vector3.new(0,-0.5,-0.5),
			Width = "X"
		},
	},
	[Enum.NormalId.Right] = {
		{
			Rotation = Vector3.new(0,0,0),
			Position = Vector3.new(-0.5,0,0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(0,0,0),
			Position = Vector3.new(-0.5,0,-0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(-0.5,0.5,0),
			Width = "Z"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(-0.5,-0.5,0),
			Width = "Z"
		},
	},
	[Enum.NormalId.Left] = {
		{
			Rotation = Vector3.new(0,0,0),
			Position = Vector3.new(0.5,0,0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(0,0,0),
			Position = Vector3.new(0.5,0,-0.5),
			Width = "Y"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(0.5,0.5,0),
			Width = "Z"
		},
		{
			Rotation = Vector3.new(0,90,-90),
			Position = Vector3.new(0.5,-0.5,0),
			Width = "Z"
		},
	},
}
--Particle part creation


local PE_Part = Instance.new("Part")
PE_Part.Name = "ParticlePart"
PE_Part.Transparency = 1
PE_Part.CanCollide = false
PE_Part.Size = Vector3.new(0.03,0.03,0.03)
PE_Part.Position = script.Parent.Torso.Position - Vector3.new(0,0,-1)
local weld = Instance.new("WeldConstraint")
PE_Part.Parent = script.Parent
weld.Parent = PE_Part
weld.Part0 = PE_Part
weld.Part1 = script.Parent.Torso
PE.Parent = PE_Part
--[[
	Creates a debug visualization of the test results.
]]


function TestResults:visualize(root, level)
	root = root or self
	level = level or 0

	local buffer = {}

	for _, child in ipairs(root.children) do
		if child.planNode.type == TestEnum.NodeType.It then
			local symbol = STATUS_SYMBOLS[child.status] or "?"
			local str = ("%s[%s] %s"):format((" "):rep(3 * level), symbol, child.planNode.phrase)

			if child.messages and #child.messages > 0 then
				str = str
					.. "\n "
					.. (" "):rep(3 * level)
					.. table.concat(child.messages, "\n " .. (" "):rep(3 * level))
			end

			table.insert(buffer, str)
		else
			local str = ("%s%s"):format((" "):rep(3 * level), child.planNode.phrase or "")

			if child.status then
				str = str .. (" (%s)"):format(child.status)
			end

			table.insert(buffer, str)

			if #child.children > 0 then
				local text = self:visualize(child, level + 1)
				table.insert(buffer, text)
			end
		end
	end

	return table.concat(buffer, "\n")
end

return TestResults
----


local cooldown = false
local zoomed = false
game:GetService("UserInputService").InputBegan:Connect(function(Key, gameProcessed)
	if not cooldown and not gameProcessed and Key.KeyCode == KEYBIND then
		cooldown = true
		if not zoomed then
			ts:Create(game.Workspace.CurrentCamera, TweenInfo.new(.4, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut), {FieldOfView = FOV}):Play()
			zoomed = true
		else
			ts:Create(game.Workspace.CurrentCamera, TweenInfo.new(.4, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut), {FieldOfView = 70}):Play()
			zoomed = false
		end
		script.scope:Play()
		wait(cooldowntime)
		cooldown = false
	end
end)
-- Format substring but do not enclose in double quote marks.
-- The replacement is compatible with pretty-format package.


local function printSubstring(val: string): string
	val = val:gsub("(\\)", "\\%1")
	val = val:gsub('(")', "\\%1")
	return val
end

local function printReceivedStringContainExpectedSubstring(
	received: string,
	start: number,
	length: number -- not end
): string
	return RECEIVED_COLOR('"' .. printSubstring(received:sub(0, start - 1)))
		.. INVERTED_COLOR(printSubstring(received:sub(start, start + length - 1)))
		.. RECEIVED_COLOR(printSubstring(received:sub(start + length, #received)))
		.. '"'
end

local function printReceivedStringContainExpectedResult(received: string, result): string
	-- result passed in should be the result of making a call to RegExp:exec
	if result == nil then
		return printReceived(received)
	else
		return printReceivedStringContainExpectedSubstring(received, result.index, #result[1])
	end
end
-- Create component


local ToolManualWindow = Roact.PureComponent:extend(script.Name)

function ToolManualWindow:init()
    self.CanvasSize, self.SetCanvasSize = Roact.createBinding(UDim2.new(1, 0, 0, 0))
end

function ToolManualWindow:render()
    return new('ScreenGui', {
        ZIndexBehavior = Enum.ZIndexBehavior.Sibling;
    }, {
        Window = new('Frame', {
            AnchorPoint = Vector2.new(0.5, 0.5);
            BackgroundColor3 = Color3.fromRGB(61, 61, 61);
            BackgroundTransparency = 0.1;
            BorderSizePixel = 0;
            Position = UDim2.new(0.5, 0, 0.5, 0);
            Size = self.CanvasSize:map(function (CanvasSize)
                return UDim2.fromOffset(420, CanvasSize.Y.Offset + 10)
            end);
        }, {
            SizeConstraint = new('UISizeConstraint', {
                MaxSize = Vector2.new(math.huge, 300);
            });
            Corners = new('UICorner', {
                CornerRadius = UDim.new(0, 3);
            });
            ColorBar = new('Frame', {
                BackgroundColor3 = self.props.ThemeColor;
                BorderSizePixel = 0;
                Size = UDim2.new(0, 3, 1, 0);
            }, {
                Corners = new('UICorner', {
                    CornerRadius = UDim.new(0, 3);
                });
            });
            Content = new('ScrollingFrame', {
                BackgroundTransparency = 1;
                BorderSizePixel = 0;
                Size = UDim2.new(1, 0, 1, 0);
                CanvasSize = self.CanvasSize;
                ScrollBarImageColor3 = Color3.fromRGB(255, 255, 255);
                ScrollBarThickness = 2;
                ScrollingDirection = Enum.ScrollingDirection.Y;
            }, {
                Text = new('TextLabel', {
                    BackgroundTransparency = 1;
                    Size = UDim2.new(1, 0, 1, 0);
                    Font = Enum.Font.Gotham;
                    LineHeight = 1.2;
                    RichText = true;
                    Text = self.props.Text;
                    TextColor3 = Color3.fromRGB(255, 255, 255);
                    TextSize = 11;
                    TextWrapped = true;
                    TextXAlignment = Enum.TextXAlignment.Left;
                    TextYAlignment = Enum.TextYAlignment.Top;
                    -- [Roact.Ref] = function (rbx)
                    --     if rbx then
                    --         self.SetCanvasSize(UDim2.new(1, 0, 0, rbx.TextBounds.Y))
                    --     end
                    -- end;
                    [Roact.Change.TextBounds] = function (rbx)
                        self.SetCanvasSize(UDim2.new(1, 0, 0, rbx.TextBounds.Y + 20))
                    end;
                }, {
                    Padding = new('UIPadding', {
                        PaddingBottom = UDim.new(0, 0);
                        PaddingLeft = UDim.new(0, 25);
                        PaddingRight = UDim.new(0, 25);
                        PaddingTop = UDim.new(0, 15);
                    });
                });
            });
        });
    })
end

return ToolManualWindow
-- Add your abbreviations/compact notation suffixes here


local abbreviations = FormatNumber.Notation.compactWithSuffixThousands({
	"K", "M", "B", "T", "Qa", "Qi", "Sx", "Sp", "Oc", "No", "Dc", "Un", "Duo", "Tre", "Qua", "Qui", "Sed", "Sep", "Oct", "Nov", "V",
})
local formatter = FormatNumber.NumberFormatter.with()
:Notation(abbreviations)
-- These values are established by empiricism with tests (tradeoff: performance VS precision)


local NEWTON_ITERATIONS = 4
local NEWTON_MIN_SLOPE = 0.001
local SUBDIVISION_PRECISION = 0.0000001
local SUBDIVISION_MAX_ITERATIONS = 10
local K_SPLINE_TABLE_SIZE = 11

local K_SAMPLE_STEP_SIZE = 1 / (K_SPLINE_TABLE_SIZE - 1)

local function Linear(t, b, c, d)
	if d ~= nil then t = t / d end
	return (c or 1)*math.clamp(t, 0, 1) + (b or 0)
end

local Bezier = {}

function Bezier.new(x1, y1, x2, y2)
	-- TS cannot (reasonably) protect against this
	if not (0 <= x1 and x1 <= 1 and 0 <= x2 and x2 <= 1) then error("The x values must be within range [0, 1]") end

	if x1 == y1 and x2 == y2 then
		return Linear
	end

	-- Precompute redundant values
	local e, f = 3*x1, 3*x2
	local g, h, i = 1 - f + e, f - 2*e, 3*(1 - f + e)
	local j, k = 2*h, 3*y1
	local l, m = 1 - 3*y2 + k, 3*y2 - 2*k

	-- Precompute samples table
	local SampleValues = {}
	for a = 0, K_SPLINE_TABLE_SIZE - 1 do
		local z = a*K_SAMPLE_STEP_SIZE
		SampleValues[a] = ((g*z + h)*z + e)*z -- CalcBezier
	end

	return function(t, b, c, d)
		if d ~= nil then t = t / d end
		t = math.clamp(t, 0, 1) -- Make sure the endpoints are correct

		local CurrentSample = K_SPLINE_TABLE_SIZE - 2

		for a = 1, CurrentSample do
			if SampleValues[a] > t then
				CurrentSample = a - 1
				break
			end
		end

		-- Interpolate to provide an initial guess for t
		local IntervalStart = CurrentSample*K_SAMPLE_STEP_SIZE
		local GuessForT = IntervalStart + K_SAMPLE_STEP_SIZE*(t - SampleValues[CurrentSample]) / (SampleValues[CurrentSample + 1] - SampleValues[CurrentSample])
		local InitialSlope = (i*GuessForT + j)*GuessForT + e

		if InitialSlope >= NEWTON_MIN_SLOPE then
			for NewtonRaphsonIterate = 1, NEWTON_ITERATIONS do
				local CurrentSlope = (i*GuessForT + j)*GuessForT + e
				if CurrentSlope == 0 then break end
				GuessForT = GuessForT - (((g*GuessForT + h)*GuessForT + e)*GuessForT - t) / CurrentSlope
			end
		elseif InitialSlope ~= 0 then
			local IntervalStep = IntervalStart + K_SAMPLE_STEP_SIZE

			for BinarySubdivide = 1, SUBDIVISION_MAX_ITERATIONS do
				GuessForT = IntervalStart + 0.5*(IntervalStep - IntervalStart)
				local BezierCalculation = ((g*GuessForT + h)*GuessForT + e)*GuessForT - t

				if BezierCalculation > 0 then
					IntervalStep = GuessForT
				else
					IntervalStart = GuessForT
					BezierCalculation = -BezierCalculation
				end

				if BezierCalculation <= SUBDIVISION_PRECISION then break end
			end
		end

		t = ((l*GuessForT + m)*GuessForT + k)*GuessForT
		return (c or 1)*t + (b or 0)
	end
end

return Bezier
--// Recoil Settings	


	gunrecoil = -0.05; -- How much the gun recoils backwards when not aiming
	camrecoil = 0.05; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.05; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.05; -- How much the camera flicks when aiming
	
	CamShake = 8; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 6; -- THIS IS ALSO NEW!!!!
	
	Kickback = 0.6; -- Upward gun rotation when not aiming
	AimKickback = 0.3; -- Upward gun rotation when aiming
--!strict


local Array = script.Parent
local isArray = require(Array.isArray)
local LuauPolyfill = Array.Parent
local types = require(LuauPolyfill.types)
type Array<T> = types.Array<T>

local RECEIVED_OBJECT_ERROR = "Array.concat(...) only works with array-like tables but "
	.. "it received an object-like table.\nYou can avoid this error by wrapping the "
	.. "object-like table into an array. Example: `concat({1, 2}, {a = true})` should "
	.. "be `concat({1, 2}, { {a = true} }`"
-- -- -- -- -- -- --
--DIRECTION SCROLL--
-- -- -- -- -- -- --




while true do
	wait()
    if Lift:WaitForChild("Direction").Value == 1 then
		This.Display.ARW1.UP.BrickColor = BrickColor.new(ActiveCol)
		This.Display.ARW1.UP.Material = "Neon"
		This.Display.ARW1.MID.BrickColor = BrickColor.new(ActiveCol)
		This.Display.ARW1.MID.Material = "Neon"
		This.Display.ARW1.DOWN.BrickColor = BrickColor.new(InactiveCol)
		This.Display.ARW1.DOWN.Material = "SmoothPlastic"
    elseif Lift:WaitForChild("Direction").Value == -1 then
		This.Display.ARW1.UP.BrickColor = BrickColor.new(InactiveCol)
		This.Display.ARW1.UP.Material = "SmoothPlastic"
		This.Display.ARW1.MID.BrickColor = BrickColor.new(ActiveCol)
		This.Display.ARW1.MID.Material = "Neon"
		This.Display.ARW1.DOWN.BrickColor = BrickColor.new(ActiveCol)
		This.Display.ARW1.DOWN.Material = "Neon"
	else
		This.Display.ARW1.UP.BrickColor = BrickColor.new(InactiveCol)
		This.Display.ARW1.UP.Material = "SmoothPlastic"
		This.Display.ARW1.MID.BrickColor = BrickColor.new(InactiveCol)
		This.Display.ARW1.MID.Material = "SmoothPlastic"
		This.Display.ARW1.DOWN.BrickColor = BrickColor.new(InactiveCol)
		This.Display.ARW1.DOWN.Material = "SmoothPlastic"
    end
end
--[[
	ROBLOX deviation: rewrote regex patterns and split up patterns for alternations
	original code:
	const JASMINE_IGNORE =
	  /^\s+at(?:(?:.jasmine\-)|\s+jasmine\.buildExpectationResult)/;
]]
-- filter for noisy stack trace lines


local JASMINE_IGNORE = "%s+at(.jasmine%-)"
local JASMINE_IGNORE_BUILDEXPECTATIONRESULT = "%s+at(%s+jasmine%.buildExpectationResult)"
-----------------
--| Constants |--
-----------------



local BLAST_RADIUS = 8 -- Blast radius of the explosion
local BLAST_DAMAGE = 0 -- Amount of damage done to players
local BLAST_FORCE = 1000 -- Amount of force applied to parts

local IGNORE_LIST = {rocket = 1, handle = 1, effect = 1, water = 1} -- Rocket will fly through things named these
----------------------------------------------------------------------------------------------------
-----------------=[ RECOIL & PRECISAO ]=------------------------------------------------------------
----------------------------------------------------------------------------------------------------


	,VRecoil = {5,7}				--- Vertical Recoil
	,HRecoil = {4,6}				--- Horizontal Recoil
	,AimRecover = .875				---- Between 0 & 1
	
	,RecoilPunch = .1
	,VPunchBase = 2.25				--- Vertical Punch
	,HPunchBase = 1.5				--- Horizontal Punch
	,DPunchBase = 1 				--- Tilt Punch | useless
	
	,AimRecoilReduction = 5 		--- Recoil Reduction Factor While Aiming (Do not set to 0)
	,PunchRecover = 0.2
	,MinRecoilPower = .25
	,MaxRecoilPower = 3
	,RecoilPowerStepAmount = .2
	
	,MinSpread = 2.5				--- Min bullet spread value | Studs
	,MaxSpread = 45					--- Max bullet spread value | Studs
	,AimInaccuracyStepAmount = 1.75
	,WalkMultiplier = 0				--- Bullet spread based on player speed

	,SwayBase = 0.25				--- Weapon Base Sway | Studs
	,MaxSway =	1					--- Max sway value based on player stamina | Studs
--[[
	INPUT: Object part
	OUTPUT: Object character, Player player, Humanoid humanoid
--]]


local Players = game:GetService'Players'

return function(part)
	local current = part
	local character = nil
	local humanoid = nil
	local player = nil
	while true do
		for i, child in next, current:GetChildren() do
			if child:IsA'Humanoid' then
				character = current
				humanoid = child
				break
			end
		end
		if current:IsA'Player' then
			local GLib = require(script.Parent)
			character = current.Character
			humanoid = character and GLib.GetHumanoid(character)
			player = current
			break
		end
		
		if character then
			break
		else
			current = current.Parent
			
			if not current or current == game then
				break
			end
		end
	end
	
	return character, player or (character and Players:GetPlayerFromCharacter(character)), humanoid
end
--iMad--



local function AttachParticleControl(source_part)
	
	local prtc = nil
	local prtc2 = nil
	
	local function Start()
		prtc = script.Nuts:clone()
		prtc.Parent = source_part
		prtc2 = script.Bolts:clone()
		prtc2.Parent = source_part
	end
	
	local function Update()
		
	end
	
	local function Stop()
		if prtc ~= nil then
			prtc:destroy()
			prtc = nil
		end
		if prtc2 ~= nil then
			prtc2:destroy()
			prtc2 = nil
		end
	end
	
	return {Start = Start, Update = Update, Stop = Stop}
end

return AttachParticleControl
--Eject--



local function AttachParticleControl(source_part)
	
	local prtc = nil
	
	local function Start()
		prtc = script.Eject:clone()
		prtc.Parent = source_part
	end
	
	local function Update()
		
	end
	
	local function Stop()
		if prtc ~= nil then
			prtc:destroy()
			prtc = nil
		end
	end
	
	return {Start = Start, Update = Update, Stop = Stop}
end

return AttachParticleControl
---------------------------------------------------



This = script.Parent
Elevator = This.Parent.Parent.Parent
CustomLabel = require(This.Parent.Parent.Parent.CustomLabel)
Characters = require(script.Characters)

CustomText = CustomLabel["CUSTOMFLOORLABEL"]

Elevator:WaitForChild("Floor").Changed:connect(function(floor)
  --custom indicator code--
  ChangeFloor(tostring(floor))
end)

function ChangeFloor(SF)
	if CustomText[tonumber(SF)] then
		SF = CustomText[tonumber(SF)]
	end
	SetDisplay(1,(string.len(SF) == 2 and SF:sub(1,1) or "NIL"))		
	SetDisplay(2,(string.len(SF) == 2 and SF:sub(2,2) or SF))
end



function SetDisplay(ID,CHAR)
	if This.Display:FindFirstChild("DIG"..ID) and Characters[CHAR] ~= nil then
 		for i,l in pairs(Characters[CHAR]) do 
			for r=1,7 do	
				This.Display["DIG"..ID]["D"..r].Transparency = (l:sub(r,r) == "1" and 0 or 1)
			end
		end
	end
end
-- local serialize: Function --[[ ROBLOX TODO: Unhandled node for type: TSIndexedAccessType ]] --[[ NewPlugin['serialize'] ]]


local function serialize(
	object: ReactTestObject,
	config: Config,
	indentation: string,
	depth: number,
	refs: Refs,
	printer: Printer
)
	depth += 1
	return if depth > config.maxDepth
		then printElementAsLeaf(object.type, config)
		else printElement(
			object.type,
			if object.props ~= nil
				then printProps(
					getPropKeys(object),
					object.props,
					config,
					indentation .. config.indent,
					depth,
					refs,
					printer
				)
				else "",
			if object.children ~= nil
				then printChildren(object.children, config, indentation .. config.indent, depth, refs, printer)
				else "",
			config,
			indentation
		)
end
exports.serialize = serialize
-------------------------



mouse.KeyDown:connect(function (key)
    key = string.lower(key)
        if key == "a" or key:byte() == 20 then
                a = true
                h.DesiredAngle = 0.3
        elseif key == "d" or key:byte() == 19 then
                d = true
                h.DesiredAngle = -0.3
        elseif key == "w" or key:byte() == 17 then
                w = true
                rwd.Throttle = 1
				rwd.Torque = tq
                carSeat.Throttle = 1				
				carSeat.Torque = cst
				carSeat.Parent.Parent.HW.B1.CanCollide = false
				carSeat.Parent.Parent.HW.B2.CanCollide = false
         elseif key == "s" or key:byte() == 18 then
                s = true
                carSeat.Throttle = -1      
                carSeat.Torque = fbrk
                rwd.Throttle = -1      
                rwd.Torque = brk
			elseif key:byte() == 48 then				
				hb1.CanCollide = true
				hb2.CanCollide = true
                end
end)
 
mouse.KeyUp:connect(function (key)
    key = string.lower(key)
        if key == "a" or key:byte() == 20 then
                print("a up")
                if d == false then
                	h.DesiredAngle = 0
                end
        elseif key == "d" or key:byte() == 19 then
                print("d up")
                if a == false then
                	h.DesiredAngle = 0
				end
		end
        a = false
        d = false
end)
 
mouse.KeyUp:connect(function (key)
    key = string.lower(key)
if key == "w" or key == "s" or key:byte() == 17 or key:byte() == 18 then
        rwd.Throttle = 0
rwd.Torque = cst
        carSeat.Throttle = 0
carSeat.Torque = cst
		carSeat.Parent.Parent.HW.B1.CanCollide = false
		carSeat.Parent.Parent.HW.B2.CanCollide = false
			elseif key:byte() == 48 then
		hb1.CanCollide = false
		hb2.CanCollide = false
        end
end)   

standButton.MouseButton1Click:connect(function()
	local ks = carSeat.Parent.KP.Motor
	ks.MaxVelocity = .1
        if ks.DesiredAngle == 0 then
			ks.DesiredAngle = -1.571
        else   
			ks.DesiredAngle = 0
        end
end)

camButton.MouseButton1Click:connect(function()
		if cam == ("car") then
			Camera.CameraSubject = player.Character.Humanoid
			Camera.CameraType = ("Attach")
			cam = ("lockplr")
		elseif cam == ("lockplr") then
			Camera.CameraSubject = player.Character.Humanoid
			Camera.CameraType = ("Custom")
			cam = ("freeplr")
        elseif cam == ("freeplr") then
			Camera.CameraSubject = carSeat
			Camera.CameraType = ("Custom")
			cam = ("car")
        end
end)
---------------------------
--[[
	--Main anchor point is the DriveSeat <car.DriveSeat>	
	
	Usage:
		MakeWeld(Part1,Part2,WeldType*,MotorVelocity**) *default is "Weld"  **Applies to Motor welds only
		ModelWeld(Model,MainPart)
	Example:
		MakeWeld(car.DriveSeat,misc.PassengerSeat)
		MakeWeld(car.DriveSeat,misc.SteeringHead,"Motor",.2)
		ModelWeld(car.DriveSeat,misc.Door)
]]
--Weld stuff here
--Made by Stickmasterluke





sp=script.Parent
frames=10
bright=game.Lighting.Brightness
wait()
game.Lighting.Brightness = 10
for frame=1,frames do
	wait()
	for i,v in ipairs(sp:GetChildren()) do
		if v then
			if v.className=="Part" then
				v.Transparency=frame/frames
			end
		end
	end
end
game.Lighting.Brightness = bright
sp:remove()