Roblox/luau_corpus huggingface dataset:
--by Repilee 5/1/18--
--(plez no leak kthxbai)

local BMWButton = script.Parent:WaitForChild("Button")
local car = script.Parent.Parent.Car.Value
local WindowFrame = script.Parent:WaitForChild("WindowFrame")
local MainFrame = WindowFrame:WaitForChild("MainFrame")
local LightBtn = MainFrame:WaitForChild("InteriorLight")
local FL = MainFrame:WaitForChild("FL")
local FR = MainFrame:WaitForChild("FR")
local debounce = false
local RR = MainFrame:WaitForChild("RR")
local H = MainFrame:WaitForChild("Hood")
local TK = MainFrame:WaitForChild("Trunk")
local RL = MainFrame:WaitForChild("RL")

local handler = car:WaitForChild("BMWPanel_Handler")

H.MouseButton1Down:connect(function()
	handler:FireServer("Hood")
end)

FL.MouseButton1Down:connect(function()
	if debounce == false then
		debounce = true
		handler:FireServer("Windows", "FL")
		wait(1)
		debounce = false
	end
end)
FR.MouseButton1Down:connect(function()
	if debounce == false then
		debounce = true
		handler:FireServer("Windows", "FR")
		wait(1)
			debounce = false
	end
end)
RR.MouseButton1Down:connect(function()
	if debounce == false then
		debounce = true
		handler:FireServer("Windows", "RR")
		wait(1)
			debounce = false
	end
end)
RL.MouseButton1Down:connect(function()
	if debounce == false then
		debounce = true
		handler:FireServer("Windows", "RL")
		wait(1)
			debounce = false
	end
end)

BMWButton.MouseButton1Down:Connect(function()
	if WindowFrame.Visible == false then
		WindowFrame.Visible = true
	else
		WindowFrame.Visible = false
	end
end)


LightBtn.MouseButton1Down:connect(function()
	handler:FireServer("Light")
end)

for i, btn in pairs(WindowFrame.AmbientLighting:GetChildren()) do
	if btn:IsA("ImageButton") then
		btn.MouseButton1Down:connect(function()
		handler:FireServer("AMB", btn.Name)
		end)
	end
end

TK.MouseButton1Down:connect(function()
	handler:FireServer("TK")
end)

WindowFrame.AmbientLighting.BACK.MouseButton1Down:connect(function()
	MainFrame.Visible = true
	WindowFrame.AmbientLighting.Visible = false
end)

MainFrame.AMBSettings.MouseButton1Down:connect(function()
	MainFrame.Visible = false
	WindowFrame.AmbientLighting.Visible = true
end)
--!strict
--[[*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
]]

local Packages = script.Parent.Parent
local LuauPolyfill = require(Packages.LuauPolyfill)
type Array<T> = LuauPolyfill.Array<T>
type Object = LuauPolyfill.Object
type void = nil
type NonMaybeType<T> = T

local flowtypes = require(script.Parent["flowtypes.roblox"])
type React_Element<T> = flowtypes.React_Element<T>
type React_Node = flowtypes.React_Node
type SimpleMap<K, V> = { [K]: V }
type Iterable<T> = SimpleMap<string | number, T> | Array<T>

export type ReactNode<T = any> =
	React_Element<T>
	| ReactPortal
	-- | ReactText
	| ReactFragment
	| ReactProvider<T>
	| ReactConsumer<T>

export type ReactEmpty = nil | void | boolean

export type ReactFragment = ReactEmpty | Iterable<React_Node>

export type ReactNodeList = ReactEmpty | React_Node
--Y3llow Mustang 2/26/2021--

local clone = script.Parent:Clone()
--// F key, Horn
mouse.KeyUp:connect(function(key)
	if key=="f" then 
		veh.Lightbar.middle.Airhorn:Stop()
		veh.Lightbar.middle.Wail.Volume = 4
		veh.Lightbar.middle.Yelp.Volume = 4
		veh.Lightbar.middle.Priority.Volume = 4
		veh.Lightbar.middle.Manual.Volume = 4
		veh.Lightbar.middle.rWail.Volume = 3
		veh.Lightbar.middle.rYelp.Volume = 3
		veh.Lightbar.middle.rPriority.Volume = 3
	end
end)










mouse.KeyDown:connect(function(key)
	if key=="j" then 
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.RemoteEvent:FireServer(true)
	end
end)

mouse.KeyDown:connect(function(key)
	if key=="]" then 
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.TD.RemoteEvent:FireServer(true)
	end
end)

mouse.KeyDown:connect(function(key)
	if key=="k" then 
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.TA.RemoteEvent:FireServer(true)
	end
end)
-- Explosion shake:

ExplosionEvent.OnClientEvent:Connect(function()
	if ShakeState == true then
		camShake:Shake(CameraShaker.Presets.Explosion)
	end
end)
--Main
local StringUtil: any = {}

function StringUtil.GetReadLength(length: number): number
    return 5
end

function StringUtil.CondenseText(str: string): string
    local finalStr: string = ""

    local isMarkdown: boolean = false
    
    local i = 0
    while i < #str do
        i += 1
        
        local currentChar: string = string.sub(str, i, i)
        
        if currentChar == "<" then
            isMarkdown = true
            continue
        elseif currentChar == ">" then
            isMarkdown = false
            continue
        elseif isMarkdown then
            continue
        end
        
        local wasEscapeCharacter: boolean = false

        if currentChar == "&" then
            --Suspected as escape character. 
            for j = i, #str do
                if string.sub(str, j, j) == ";" then
                    local suspectedEscape: string = string.sub(str, i, j)

                    for _, pattern: string in ipairs(RichTextEscapeCharacters) do
                        if suspectedEscape == pattern[1] then
                            --move i to j (end of escape character)
                            i = j
                            finalStr ..= pattern[2]

                            wasEscapeCharacter = true
                            break
                        end
                    end
                    break
                end
            end
        end

        if not wasEscapeCharacter then
            finalStr ..= currentChar
        end
    end
    
    return finalStr
end

function StringUtil.CountCharacters(str: string): number
    return #StringUtil.CondenseText(str)
end

return StringUtil
----- Services
local ActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
local RS = game:GetService("ReplicatedStorage")
-- Initialize move tool
local MoveTool = require(CoreTools:WaitForChild 'Move');
Core.AssignHotkey('Z', Core.Support.Call(Core.EquipTool, MoveTool));
Core.AddToolButton(Core.Assets.MoveIcon, 'Z', MoveTool)
-- Services
local playerService = game:GetService("Players")

local i = game:GetService("UserInputService")

playerService.PlayerAdded:Connect(function (plr)
	plr.CharacterAdded:wait()
	i.InputBegan:Connect(function(a)
		if a.KeyCode == Enum.KeyCode.F then
			plr.CameraMode = Enum.CameraMode.Classic
		elseif a.KeyCode == Enum.KeyCode.Z then
			plr.CameraMode = Enum.CameraMode.LockFirstPerson
		end
	end)
end)
-- Called once when the realism client is starting.
-- This is intended for compatibility with AeroGameFramework modules,
-- but the function will automatically be called if executed from a LocalScript.

function CharacterRealism:Start()
	assert(not _G.DefineRealismClient, "Realism can only be started once on the client!")
	_G.DefineRealismClient = true
	
	for key, value in pairs(Config) do
		self[key] = value
	end
	
	for _,humanoid in pairs(CollectionService:GetTagged(self.BindTag)) do
		self:OnHumanoidAdded(humanoid)
	end
	
	self:Connect("UpdateLookAngles", RunService.Heartbeat)
	self:Connect("OnLookReceive", self.SetLookAngles.OnClientEvent)
	self:Connect("OnHumanoidAdded", CollectionService:GetInstanceAddedSignal(self.BindTag))
	
end

if script:IsA("ModuleScript") then
	-- Return the system as a module table.
	return CharacterRealism
else
	-- Sanity check
	assert(script:FindFirstAncestorOfClass("PlayerScripts"), "RealismClient must be a descendant of the PlayerScripts!")
	assert(Players.LocalPlayer, "RealismClient expects a Player on the client to automatically start execution!")	
	
	-- Start automatically.
	CharacterRealism:Start()
end
--//Tool Function\\--
tool.Equipped:Connect(function()
	contextActionService:BindAction("ActivateSpecial", activate, true, Enum.KeyCode.E)
	contextActionService:SetImage("ActivateSpecial", tool.TextureId)
	contextActionService:SetPosition("ActivateSpecial", UDim2.new(0.72, -25, 0.20, -25))
	mouse.Icon = cursorId
end)

tool.Unequipped:Connect(function()
	contextActionService:UnbindAction("ActivateSpecial")
	mouse.Icon = ""
end)

tool.Activated:Connect(function()
	if not enabled then return end
	
	enabled = false
	fire:FireServer(mouse.Hit)
	wait(fireRate.Value)
	enabled = true
end)

hit.OnClientEvent:Connect(function()
	mouse.Icon = hitId
	handle.Hitmark:Play()
	wait(0.075)
	mouse.Icon = cursorId
end)

activateSpecial.OnClientEvent:Connect(function()
	
	for i = specialRechargeTime.Value, 0, -1 do
		wait(1)
		specialDB = false
		print("Recharging: "..i)
	end
	
	specialDB = true
end)
----//Functions//

function hidethingy()
	workspace.SpecialItems.CameraTarget.Transparency = 1
	workspace.SpecialItems.CameraTarget.Facing.Visible = false
end
hidethingy()

repeat wait(0.1) until Plr.Character ~= nil


CurrentCamera.CameraType = Enum.CameraType.Scriptable
CurrentCamera.CFrame = workspace.SpecialItems.CameraTarget.CFrame
-- Get the necessary UI elements
local gui = script.Parent.Parent.Parent.AppManager.Settings.Main.User
local guiStore = script.Parent.Parent.Parent.AppManager["App Store"].ProfilePicture
local ClipSettings = require(game.ReplicatedFirst.ClipSettings)
local profilePicture = gui.ProfilePicture
local displayName = gui.DisplayName
--[[
	Constructs a new computed state object which maps pairs of an array using
	a `processor` function.

	Optionally, a `destructor` function can be specified for cleaning up values.
	If omitted, the default cleanup function will be used instead.
]]

local Package = script.Parent.Parent
local Types = require(Package.Types)
local captureDependencies = require(Package.Dependencies.captureDependencies)
local initDependency = require(Package.Dependencies.initDependency)
local useDependency = require(Package.Dependencies.useDependency)
local parseError = require(Package.Logging.parseError)
local logErrorNonFatal = require(Package.Logging.logErrorNonFatal)
local cleanup = require(Package.Utility.cleanup)

local class = {}

local CLASS_METATABLE = {__index = class}
local WEAK_KEYS_METATABLE = {__mode = "k"}
--// Renders
game:GetService('RunService').Heartbeat:connect(function()
	if isHeld and newRope then
		if newDir == 'Up' then
			newRope.Length = newRope.Length + 0.2
		elseif newDir == 'Down' then
			newRope.Length = newRope.Length - 0.2
		end		
	end;
end)
-- declarations
local toolAnim = "None"
local toolAnimTime = 0
	
local jumpAnimTime = 0
local jumpAnimDuration = 0.175
	
local toolTransitionTime = 0.1
local fallTransitionTime = 0.2
local jumpMaxLimbVelocity = 0.75
--!

brick = script.Parent
cd = button.ClickDetector

function onMouseClick(player)
	if not player then return end
	
end

cd.MouseClick:connect(onMouseClick)
--[=[
	Constructs a new LinearValue object.

	@param constructor (number ...) -> T
	@param values ({ number })
	@return LinearValue<T>
]=]
function LinearValue.new(constructor, values)
	return setmetatable({
		_constructor = constructor;
		_values = values;
	}, LinearValue)
end
---Variables
local Car = script.Parent.Parent.Model
local CarStats = script.Parent.Parent.Stats
local LightsSpeed = 0.4
-- Signal class

local Signal = {}
Signal.__index = Signal

function Signal.new()
	return setmetatable({_handlerListHead = false}, Signal)
end

function Signal:Connect(fn)
	local connection = Connection.new(self, fn)
	connection._next = (self._handlerListHead and self._handlerListHead) or connection._next
	self._handlerListHead = connection
	return connection
end

function Signal:Fire(...)
	local item = self._handlerListHead
	while item do
		if item._connected then
			if not freeRunnerThread then
				freeRunnerThread = coroutine.create(function(...)
					acquireRunnerThreadAndCallEventHandler(...)
					while true do
						acquireRunnerThreadAndCallEventHandler(coroutine.yield())
					end
				end)
			end
			task.spawn(freeRunnerThread, item._fn, ...)
		end
		item = item._next
	end
end

function Signal:Wait()
	local waitingcoroutine = coroutine.running()
	local connect;
	connect = self:Connect(function(...)
		connect:Disconnect()
		task.spawn(waitingcoroutine, ...)
	end)
	return coroutine.yield()
end

return Signal
-- The second for loop closes the door, so whatever you do to the top you'll have to do to the bottom.
-- The vector3 value has to be a minus number for it to go back, it moves 0.1 studs, therefore it must move
-- 0.1 studs back for it to close again. So 0.1 on first = -0.1 on second and the same goes for any number.

end

script.Parent.ClickDetector.MouseClick:connect(OnClick)
--Plot Current Electric Horsepower
function GetECurve(x,gear)
	local hp=(math.max(elecHP(x),0))*100
	local tq=(math.max(elecTQ(x),0))*100
	if gear~=0 then
		return hp,math.max(tq*_Tune.Ratios[gear+2]*fFD*hpScaling,0)
	else
		return 0,0
	end
end
--[[
	Constructs a new Promise with the given initializing callback.

	This is generally only called when directly wrapping a non-promise API into
	a promise-based version.

	The callback will receive 'resolve' and 'reject' methods, used to start
	invoking the promise chain.

	For example:

		local function get(url)
			return Promise.new(function(resolve, reject)
				spawn(function()
					resolve(HttpService:GetAsync(url))
				end)
			end)
		end

		get("https://google.com")
			:andThen(function(stuff)
				print("Got some stuff!", stuff)
			end)

	Second parameter, parent, is used internally for tracking the "parent" in a
	promise chain. External code shouldn't need to worry about this.
]]
function Promise.new(callback, parent)
	if parent ~= nil and not Promise.is(parent) then
		error("Argument #2 to Promise.new must be a promise or nil", 2)
	end

	local self = {
		-- Used to locate where a promise was created
		_source = debug.traceback(),

		-- A tag to identify us as a promise
		[PromiseMarker] = true,

		_status = Promise.Status.Started,

		-- A table containing a list of all results, whether success or failure.
		-- Only valid if _status is set to something besides Started
		_values = nil,

		-- Lua doesn't like sparse arrays very much, so we explicitly store the
		-- length of _values to handle middle nils.
		_valuesLength = -1,

		-- Tracks if this Promise has no error observers..
		_unhandledRejection = true,

		-- Queues representing functions we should invoke when we update!
		_queuedResolve = {},
		_queuedReject = {},
		_queuedFinally = {},

		-- The function to run when/if this promise is cancelled.
		_cancellationHook = nil,

		-- The "parent" of this promise in a promise chain. Required for
		-- cancellation propagation.
		_parent = parent,

		_consumers = setmetatable({}, {
			__mode = "k";
		}),
	}

	if parent and parent._status == Promise.Status.Started then
		parent._consumers[self] = true
	end

	setmetatable(self, Promise)

	local function resolve(...)
		self:_resolve(...)
	end

	local function reject(...)
		self:_reject(...)
	end

	local function onCancel(cancellationHook)
		if cancellationHook then
			if self._status == Promise.Status.Cancelled then
				cancellationHook()
			else
				self._cancellationHook = cancellationHook
			end
		end

		return self._status == Promise.Status.Cancelled
	end

	local _, result = wpcallPacked(callback, resolve, reject, onCancel)
	local ok = result[1]
	local err = result[2]

	if not ok and self._status == Promise.Status.Started then
		reject(err)
	end

	return self
end
-- Clamp a number between low and high:
local function Clamp(n, low, high)
	return (n < low and low or n > high and high or n)
end
----
----
	if hit.Parent:findFirstChild("Humanoid") ~= nil then
		local target1 = "UpperTorso"
		local target2 = "UpperTorso2"
		if hit.Parent:findFirstChild(target2) == nil then
			local g = script.Parent.Parent[target2]:clone()
			g.Parent = hit.Parent
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "UnionOperation" or C[i].className =="Part" or C[i].className == "WedgePart" or C[i].className == "MeshPart" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
				local Y = Instance.new("Weld")
				Y.Part0 = hit.Parent[target1]
				Y.Part1 = g.Middle
				Y.C0 = CFrame.new(0, -0.5, 0)
				Y.Parent = Y.Part0
			end

		local h = g:GetChildren()
		for i = 1, # h do
			h[i].Anchored = false
			h[i].CanCollide = false
		end
	end
	end
-- declarations

local Figure = script.Parent
local Torso = waitForChild(Figure, "Torso")

local RightShoulder = waitForChild(Torso, "Right Shoulder")
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
local RightHip = waitForChild(Torso, "Right Hip")
local LeftHip = waitForChild(Torso, "Left Hip")
local Neck = waitForChild(Torso, "Neck")
local Humanoid = waitForChild(Figure, "Humanoid")
local pose = "Standing"

local toolAnim = "None"
local toolAnimTime = 0

local isSeated = false
--// Ammo Settings			
	Ammo = 30;
	StoredAmmo = 30;
	MagCount = math.huge; --  If you want infinate ammo, set to math.huge EX. MagCount = math.huge;
	ExplosiveAmmo = 10;
--- This will cause a brick to go in motion unanchored or not! ---

while true do
wait(0)
for i= 1, 100 do
script.Parent.CFrame = script.Parent.CFrame * CFrame.new(0,0,-0.3)
wait()
	end
end
--// Events
local L_83_ = L_19_:WaitForChild('Equipped')
local L_84_ = L_19_:WaitForChild('ShootEvent')
local L_85_ = L_19_:WaitForChild('DamageEvent')
local L_86_ = L_19_:WaitForChild('CreateOwner')
local L_87_ = L_19_:WaitForChild('Stance')
local L_88_ = L_19_:WaitForChild('HitEvent')
local L_89_ = L_19_:WaitForChild('KillEvent')
local L_90_ = L_19_:WaitForChild('AimEvent')
local L_91_ = L_19_:WaitForChild('ExploEvent')
---
if 	script.Parent.Parent.Parent.IsOn.Value then
	script.Parent.Parent:TweenPosition(UDim2.new(0, 0, 0, 0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)
end

script.Parent.Parent.Parent.IsOn.Changed:connect(function()
	if script.Parent.Parent.Parent.IsOn.Value then
		script.Parent.Parent:TweenPosition(UDim2.new(0, 0, 0, 0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)
	end
end)
	
	script.Parent.MouseButton1Click:connect(function()
		if hinge.DesiredAngle == 0 then
			sound.SoundId = "rbxassetid://278329638"
			sound:Play()
			wait(.4)
			hinge.DesiredAngle = -1.47
		else
			hinge.DesiredAngle = 0
			sound.SoundId = "rbxassetid://278329638"
			sound:Play()
		end
	end)
--[[

This is a script that makes an anchored brick rotate!
Just resize the brick to your desired size!
This script was made by ProjectTwo
Free for anyone to use!
]]
while true do 
wait() 
script.Parent.CFrame = script.Parent.CFrame * CFrame.fromEulerAnglesXYZ(0, math.pi/200, 0)
end
--	missile.Position = spawnPos
	missile.Size = Vector3.new(1,1,1)
--
--
local Info = {
	-- These are constant values.  Don't change them unless you know what you're doing.

	-- Services
	Players = Game:GetService 'Players',
	PathfindingService = Game:GetService 'PathfindingService',

	-- Advanced settings
	RecomputePathFrequency = 1, -- The monster will recompute its path this many times per second
	RespawnWaitTime = 1, -- How long to wait before the monster respawns
	JumpCheckFrequency = 1, -- How many times per second it will do a jump check
}
local Data = {
	-- These are variable values used internally by the script.  Advanced users only.

	LastRecomputePath = 0,
	Recomputing = false, -- Reocmputing occurs async, meaning this script will still run while it's happening.  This variable will prevent the script from running two recomputes at once.
	PathCoords = {},
	IsDead = false,
	TimeOfDeath = 0,
	CurrentNode = nil,
	CurrentNodeIndex = 1,
	AutoRecompute = true,
	LastJumpCheck = 0,
	LastAttack = 0,
	
	BaseMonster = Self:Clone(),
	AttackTrack = nil,
}
--- Returns true if the command has an implementation on the caller's machine.
function Command:HasImplementation()
	return ((RunService:IsClient() and self.Object.ClientRun) or self.Object.Run) and true or false
end

return Command
-- Implements Javascript's `Map.prototype.forEach` as defined below
-- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach
function Set:forEach(callback: setCallbackFn<any> | setCallbackFnWithThisArg<any>, thisArg: Object?): ()
	if typeof(callback) ~= "function" then
		error("callback is not a function")
	end

	-- note: we can't turn this into a simple for-in loop, because the callbacks can modify the table and React, GQL, and Jest rely on JS behavior in that scenario
	arrayForEach(self._array, function(value)
		if thisArg ~= nil then
			(callback :: setCallbackFnWithThisArg<any>)(thisArg, value, value, self)
		else
			(callback :: setCallbackFn<any>)(value, value, self)
		end
	end)
end

function Set:has(value): boolean
	return self._map[value] ~= nil
end

function Set:ipairs()
	if _G.__DEV__ then
		warn(
			debug.traceback(
				"`for _,_ in mySet:ipairs() do` is deprecated and will be removed in a future release, please use `for _,_ in mySet do` instead\n",
				2
			)
		)
	end
	return ipairs(self._array)
end

return Set
-- Hook events
Entry.TextBox.FocusLost:Connect(function(submit)
	return Window:LoseFocus(submit)
end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	return Window:BeginInput(input, gameProcessed)
end)

Entry.TextBox:GetPropertyChangedSignal("Text"):Connect(function()
	if Entry.TextBox.Text:match("\t") then -- Eat \t
		Entry.TextBox.Text = Entry.TextBox.Text:gsub("\t", "")
		return
	end
	if Window.OnTextChanged then
		return Window.OnTextChanged(Entry.TextBox.Text)
	end
end)

Gui.ChildAdded:Connect(Window.UpdateWindowHeight)

return Window
--------------------) Settings
Damage = 0 -- the ammout of health the player or mob will take

Cooldown = 3 -- cooldown for use of the tool again

BoneModelName = "Leg zone" -- name the zone model

HumanoidName = "Humanoid"-- the name of player or mob u want to damage
--[=[
	Checks whether the given object is a Promise via duck typing. This only checks if the object is a table and has an `andThen` method.

	@param object any
	@return boolean -- `true` if the given `object` is a Promise.
]=]
function Promise.is(object)
	if type(object) ~= "table" then
		return false
	end

	local objectMetatable = getmetatable(object)

	if objectMetatable == Promise then
		-- The Promise came from this library.
		return true
	elseif objectMetatable == nil then
		-- No metatable, but we should still chain onto tables with andThen methods
		return type(object.andThen) == "function"
	elseif
		type(objectMetatable) == "table"
		and type(rawget(objectMetatable, "__index")) == "table"
		and type(rawget(rawget(objectMetatable, "__index"), "andThen")) == "function"
	then
		-- Maybe this came from a different or older Promise library.
		return true
	end

	return false
end
-- From a LocalScript
local Knit = require(game:GetService("ReplicatedStorage").Knit)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PointsService = Knit.GetService("PointsService")
local CameraController = Knit.GetService("CameraController")

Knit.AddControllers(ReplicatedStorage.Services.ClientControllers)

local function PointsChanged(points)
	print("My points:", points)
end
--Give submit button functionality.
script.Parent.ImageButton.MouseButton1Click:connect(function()
	svh:FireServer(script.Parent.TextBox.Text)
end)
--[[Steering]]
	Tune.SteerInner		= 35		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 35		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .05		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .1		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 320		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 100000	-- Steering Aggressiveness
--[[ Script Variables ]]--
while not Players.LocalPlayer do
	wait()
end
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local PlayerGui = LocalPlayer:WaitForChild('PlayerGui')
local ScreenGui = nil
local ShiftLockIcon = nil
local IsShiftLockMode = false
local IsShiftLocked = false
local IsActionBound = false