Prompt: --Creates a random droplet on screen

Response:
local function CreateDroplet()
	--Setup
	local DecidedSize = Random_:NextNumber(0.01,0.07)
	local stretch = 1 + math.random(15) / 10

	local RunAmount = math.random(4)
	local Tweens = table.create(RunAmount * 2 + 2)
	local TweensLength = 0

	local SizeOffset = math.random((DecidedSize / 3) * -10, (DecidedSize / 3) * 10) / 10
	local Scale = DecidedSize + SizeOffset
	local MeshScale = Vector3.new(Scale, Scale, Scale)

	--Main droplet object
	local DropletMain = Instance.new("Part")
	DropletMain.Material = Enum.Material.Glass
	DropletMain.CFrame = EMPTY_CFRAME
	DropletMain.CanCollide = false
	DropletMain.Transparency = 0.5
	DropletMain.Name = "Droplet_Main"
	DropletMain.Color = Color3.fromRGB(255, 255, 255)
	DropletMain.Size = DROPLET_SIZE

	local Mesh = Instance.new("SpecialMesh")
	Mesh.MeshType = Enum.MeshType.Sphere
	Mesh.Scale = MeshScale
	Mesh.Parent = DropletMain

	--Create droplet extrusions
	for i = 1, RunAmount do
		local eSizeOffset = math.random(
			(DecidedSize / 3) * -100,
			(DecidedSize / 3) * 100
		) / 100

		local ExtrusionCFrame = CFrame.new(Vector3.new(
			math.random(-(DecidedSize * 40), DecidedSize * 40) / 100,
			math.random(-(DecidedSize * 40), DecidedSize * 40) / 100,
			0
		))

		local ExtrusionScale = DecidedSize / 1.5 + eSizeOffset
		local ExtrusionMeshScale = Vector3.new(ExtrusionScale, ExtrusionScale, ExtrusionScale)

		local Extrusion = Instance.new("Part")
		Extrusion.Material = Enum.Material.Glass
		Extrusion.CFrame = ExtrusionCFrame
		Extrusion.CanCollide = false
		Extrusion.Transparency = 0.5
		Extrusion.Name = "Extrusion_" .. i
		Extrusion.Color = Color3.fromRGB(255, 255, 255)
		Extrusion.Size = DROPLET_SIZE

		local ExtrusionMesh = Instance.new("SpecialMesh")
		ExtrusionMesh.MeshType = Enum.MeshType.Sphere
		ExtrusionMesh.Scale = ExtrusionMeshScale
		ExtrusionMesh.Parent = Extrusion
		Extrusion.Parent = DropletMain

		local weld = Instance.new("Weld")
		weld.C0 = ExtrusionCFrame:Inverse() * EMPTY_CFRAME
		weld.Part0 = Extrusion
		weld.Part1 = DropletMain
		weld.Parent = Extrusion

		IgnoreLength = IgnoreLength + 1
		TweensLength = TweensLength + 1
		ignoreList[IgnoreLength] = Extrusion
		Tweens[TweensLength] = TweenService:Create(Extrusion, fadeInfo, fadeGoal)

		TweensLength = TweensLength + 1
		Tweens[TweensLength] = TweenService:Create(ExtrusionMesh, strechInfo, {
			Scale = Vector3.new(ExtrusionScale, ExtrusionScale * stretch, ExtrusionScale);
			Offset = Vector3.new(0, -(ExtrusionScale * stretch) / 2.05, 0);
		})
	end

	IgnoreLength = IgnoreLength + 1
	TweensLength = TweensLength + 1
	ignoreList[IgnoreLength] = DropletMain
	Tweens[TweensLength] = TweenService:Create(DropletMain, fadeInfo, fadeGoal)

	TweensLength = TweensLength + 1
	Tweens[TweensLength] = TweenService:Create(Mesh, strechInfo, {
		Scale = Vector3.new(Scale, Scale * stretch, Scale);
		Offset = Vector3.new(0, -(Scale * stretch) / 2.05, 0);
	})

	local NewCFrame = ScreenBlockCFrame:ToWorldSpace(CFrame.new(
		math.random(-100, 100) / 100,
		math.random(-100, 100) / 100,
		-1
	))

	DropletMain.CFrame = NewCFrame
	local weld = Instance.new("Weld")
	weld.C0 = NewCFrame:Inverse() * ScreenBlockCFrame
	weld.Part0 = DropletMain
	weld.Part1 = ScreenBlock
	weld.Parent = DropletMain

	for _, t in ipairs(Tweens) do
		t:Play()
	end

	local DestroyRoutine = coroutine.create(DestroyDroplet)
	coroutine.resume(DestroyRoutine, DropletMain)
	DropletMain.Parent = ScreenBlock
end

local function OnGraphicsChanged()
	CanShow = GameSettings.SavedQualityLevel.Value >= 8
end

GameSettings:GetPropertyChangedSignal("SavedQualityLevel"):Connect(OnGraphicsChanged)


Prompt: --Dynamic Variables--

Response:
local dodgingObstacles = script.Parent.DodgingObstacles
local criticalAction = false
local engineRunning = false
local desiredHeight = mySettings.Height.Value


Prompt: -- Tables to keep track of which characters are on fire

Response:
local charactersOnFire = {}
local signalBindings = {}


Prompt: --This script is what make tabs and pages work.

Response:
function HideAllTabs()
	local Tabs = script.Parent.TABS:GetChildren()
	for i = 1, #Tabs do
		Tabs[i].Visible = false
	end
	local Buttons = script.Parent.SelectTab:GetChildren()
	for i = 1, #Buttons do
		Buttons[i].Style = "RobloxButton"
	end
end

function Sword()
	HideAllTabs()
	script.Parent.TABS.SwordFrame1.Visible = true
	script.Parent.SelectTab.Swords.Style = "RobloxButtonDefault"
	script.Parent.CurrentPage.Value = 1
	script.Parent.CurrentType.Value = "Sword"
	script.Parent.Page.Text = script.Parent.CurrentPage.Value
end

function Staff()
	HideAllTabs()
	script.Parent.TABS.StaffFrame1.Visible = true
	script.Parent.SelectTab.Staffs.Style = "RobloxButtonDefault"
	script.Parent.CurrentPage.Value = 1
	script.Parent.CurrentType.Value = "Staff"
	script.Parent.Page.Text = script.Parent.CurrentPage.Value
end

function Ranged()
	HideAllTabs()
	script.Parent.TABS.RangedFrame1.Visible = true
	script.Parent.SelectTab.Ranged.Style = "RobloxButtonDefault"
	script.Parent.CurrentPage.Value = 1
	script.Parent.CurrentType.Value = "Ranged"
	script.Parent.Page.Text = script.Parent.CurrentPage.Value
end


Prompt:
--- Runs the command. Handles dispatching to the server if necessary.
-- Command:Validate() must be called before this is called or it will throw.

Response:
function Command:Run ()
	if self._Validated == nil then
		error("Must validate a command before running.")
	end

	local beforeRunHook = self.Dispatcher:RunHooks("BeforeRun", self)
	if beforeRunHook then
		return beforeRunHook
	end

	if not IsServer and self.Object.Data and self.Data == nil then
		local values, length = self:GatherArgumentValues()
		self.Data = self.Object.Data(self, unpack(values, 1, length))
	end

	if not IsServer and self.Object.ClientRun then
		local values, length = self:GatherArgumentValues()
		self.Response = self.Object.ClientRun(self, unpack(values, 1, length))
	end

	if self.Response == nil then
		if self.Object.Run then -- We can just Run it here on this machine
			local values, length = self:GatherArgumentValues()
			self.Response = self.Object.Run(self, unpack(values, 1, length))

		elseif IsServer then -- Uh oh, we're already on the server and there's no Run function.
			if self.Object.ClientRun then
				warn(self.Name, "command fell back to the server because ClientRun returned nil, but there is no server implementation! Either return a string from ClientRun, or create a server implementation for this command.")
			else
				warn(self.Name, "command has no implementation!")
			end

			self.Response = "No implementation."
		else -- We're on the client, so we send this off to the server to let the server see what it can do with it.
			self.Response = self.Dispatcher:Send(self.RawText, self.Data)
		end
	end

	local afterRunHook = self.Dispatcher:RunHooks("AfterRun", self)
	if afterRunHook then
		return afterRunHook
	else
		return self.Response
	end
end


Prompt: -- / CarController.lua / --

Response:
BodyPostion.Position = CarModel.Position;
BodyGyro.CFrame = CarModel.CFrame;

Seat:GetPropertyChangedSignal("Occupant"):Connect(function(t)
	if Seat.Occupant and not currentOccupant then
		local player = Players:GetPlayerFromCharacter(Seat.Occupant.Parent);
		if player then
			currentOccupant = player;
			CarModel:SetNetworkOwner(player);
			currentClient = Client:Clone();
			currentClient.Parent = player.PlayerGui;
		end
	elseif not Seat.Occupant and currentOccupant then
		currentClient:Destroy();
		currentClient = nil;
		currentOccupant = nil;
		CarModel:SetNetworkOwner(nil);
	end
end)


Prompt:
--[[
	Shorthand for a done handler that returns the given value.
]]

Response:
function Promise.prototype:doneReturn(...)
	local length, values = pack(...)
	return self:_finally(debug.traceback(nil, 2), function()
		return unpack(values, 1, length)
	end, true)
end


Response:
game.Workspace.crewp1.Decal.Texture = game.Workspace.Screens.ProjectionL.Value
game.Workspace.crewp2.Decal.Texture = game.Workspace.Screens.ProjectionR.Value
game.Workspace.crewp3.Decal.Texture = game.Workspace.Screens.ProjectionL.Value
game.Workspace.crewp4.Decal.Texture = game.Workspace.Screens.ProjectionR.Value


Prompt: -- Game update loop

Response:
local function onHeartbeat(delta)
	local damage = LAVA_DPS * delta

	-- Go through all of the characters on fire and make them take damage
	for character in pairs(charactersOnFire) do
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		if humanoid then
			humanoid:TakeDamage(damage)
		end
	end
end


Prompt: --		body.MP.OutsideSound.Muffle.Enabled = false

Response:
	end
end)


Prompt: -- Loop through all the buttons in the parent and apply the hover function to them

Response:
for _, button in pairs(parent:GetChildren()) do
	if button:IsA("TextButton") then
		hover(button, button.BackgroundColor3, Color3.fromRGB(44, 44, 44), Color3.fromRGB(0, 46, 73))
	end
end


Prompt: --------AUDIENCE BACK LEFT--------

Response:
game.Workspace.audiencebackleft1.Part2.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part5.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part8.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)


Prompt: -------- OMG HAX

Response:
r = game:service("RunService")

local damage = 100

function getHumanoid(obj)
	local get = obj:getChildren()
	for i=1, #get do
		if get[i].className == "Humanoid" then
			return get[i]
		end
	end
	return nil
end

function blow(hit)
	connection:disconnect()
	local human = getHumanoid(hit.Parent)
	if human ~= nil then
		tagHumanoid(human)
		human:takeDamage(damage)
		wait(0.5)
		untagHumanoid(human)
	end
	script.Parent:remove()
end

function tagHumanoid(humanoid)
	local creator_tag = script.Parent.creator:clone()
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end

connection = script.Parent.Touched:connect(blow)

wait(8)

script.Parent:remove()


Prompt: -- Activation]:

Response:
if TurnCharacterToMouse == true then
	MseGuide = true
	HeadHorFactor = 0
	BodyHorFactor = 0
end

game:GetService("RunService").RenderStepped:Connect(function()
	local CamCF = Cam.CoordinateFrame
	if ((IsR6 and Body["Torso"]) or Body["UpperTorso"])~=nil and Body["Head"]~=nil then	--[Check for the Torso and Head...]
		local TrsoLV = Trso.CFrame.lookVector
		local HdPos = Head.CFrame.p
		if IsR6 and Neck or Neck and Waist then	--[Make sure the Neck still exists.]
			if Cam.CameraSubject:IsDescendantOf(Body) or Cam.CameraSubject:IsDescendantOf(Plr) then
				local Dist = nil;
				local Diff = nil;
				if not MseGuide then	--[If not tracking the Mouse then get the Camera.]
					Dist = (Head.CFrame.p-CamCF.p).magnitude
					Diff = Head.CFrame.Y-CamCF.Y
					if not IsR6 then	--[R6 and R15 Neck rotation C0s are different; R15: X axis inverted and Z is now the Y.]
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang((aSin(Diff/Dist)*HeadVertFactor), -(((HdPos-CamCF.p).Unit):Cross(TrsoLV)).Y*HeadHorFactor, 0), UpdateSpeed/2)
						Waist.C0 = Waist.C0:lerp(WaistOrgnC0*Ang((aSin(Diff/Dist)*BodyVertFactor), -(((HdPos-CamCF.p).Unit):Cross(TrsoLV)).Y*BodyHorFactor, 0), UpdateSpeed/2)
					else	--[R15s actually have the properly oriented Neck CFrame.]
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang(-(aSin(Diff/Dist)*HeadVertFactor), 0, -(((HdPos-CamCF.p).Unit):Cross(TrsoLV)).Y*HeadHorFactor),UpdateSpeed/2)
					end
				else
					local Point = Mouse.Hit.p
					Dist = (Head.CFrame.p-Point).magnitude
					Diff = Head.CFrame.Y-Point.Y
					if not IsR6 then
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang(-(aTan(Diff/Dist)*HeadVertFactor), (((HdPos-Point).Unit):Cross(TrsoLV)).Y*HeadHorFactor, 0), UpdateSpeed/2)
						Waist.C0 = Waist.C0:lerp(WaistOrgnC0*Ang(-(aTan(Diff/Dist)*BodyVertFactor), (((HdPos-Point).Unit):Cross(TrsoLV)).Y*BodyHorFactor, 0), UpdateSpeed/2)
					else
						Neck.C0 = Neck.C0:lerp(NeckOrgnC0*Ang((aTan(Diff/Dist)*HeadVertFactor), 0, (((HdPos-Point).Unit):Cross(TrsoLV)).Y*HeadHorFactor), UpdateSpeed/2)
					end
				end
			end
		end
	end
	if TurnCharacterToMouse == true then
		Hum.AutoRotate = false
		Core.CFrame = Core.CFrame:lerp(CFrame.new(Core.Position, Vector3.new(Mouse.Hit.p.x, Core.Position.Y, Mouse.Hit.p.z)), UpdateSpeed / 2)
	else
		Hum.AutoRotate = true
	end
end)

game.ReplicatedStorage.Look.OnClientEvent:Connect(function(otherPlayer, neckCFrame, WaistCFrame)
	local Neck = otherPlayer.Character:FindFirstChild("Neck", true)
	local Waist = otherPlayer.Character:FindFirstChild("Waist", true)

	if Neck and Waist then
		game:GetService('TweenService'):Create(Neck, TweenInfo.new(.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, false, 0), {C0 = neckCFrame}):Play()
		game:GetService('TweenService'):Create(Waist, TweenInfo.new(.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, false, 0), {C0 = WaistCFrame}):Play()
	end
end)

while wait(0.0001) do
	game.ReplicatedStorage.Look:FireServer(Neck.C0, Waist.C0)
end


Prompt: -- SirNoobly

Response:
local hat = script.Parent
hat.PrimaryPart = hat:WaitForChild("Head") -- Make sure the Head is the same size as a normal Head.

function weldParts(part0, part1) -- welds the 2 parts based on their position
	local newWeld = Instance.new("Weld")
	newWeld.Part0  = part0
	newWeld.Part1  = part1
	newWeld.C0     = CFrame.new()
	newWeld.C1     = part1.CFrame:toObjectSpace(part0.CFrame)
	newWeld.Parent = part0
end

hat.Head.Touched:connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid")  and not hit.Parent:FindFirstChild("Earl's Coronet")then else return end

	local head = hit.Parent:FindFirstChild("Head")
	local newHat = hat:Clone()
	newHat:FindFirstChild("HatScript"):Destroy()
	newHat:SetPrimaryPartCFrame(head.CFrame) -- puts the head into the head
	newHat.PrimaryPart:Destroy()
	for _, part in pairs (newHat:GetChildren()) do
		if part:IsA("BasePart") then
			weldParts(head, part)
			part.CanCollide = false
			part.Anchored = false
		end
	end
	newHat.Parent = hit.Parent
end)


Prompt: -- move front UI --

Response:
titleEnd = {}
titleEnd.Position = UDim2.new(0.04, 0, 0, 0)

soloEnd = {}
soloEnd.Position = UDim2.new(0.055, 0, 0.4, 0)

customizeEnd = {}
customizeEnd.Position = UDim2.new(0.055, 0 , 0.55, 0)

achievementsEnd = {}
achievementsEnd.Position = UDim2.new(0.055, 0 , 0.7, 0)

settingsEnd = {}
settingsEnd.Position = UDim2.new(0.055, 0 , 0.85, 0)

backEnd = {}
backEnd.Position = UDim2.new(0.5, 0, 1.5, 0)


Prompt: -- << CONFIGURATION >>

Response:
local rank = "VIP"
local rankType = "Perm" -- "Temp", "Perm" or "Perm". For more info, visit: https://devforum.roblox.com/t/HD/266932
local successColor = Color3.fromRGB(0,255,0)
local errorColor = Color3.fromRGB(255,0,0)


Prompt:
--[=[
	@return Promise
	Returns a promise that is resolved once Knit has started. This is useful
	for any code that needs to tie into Knit controllers but is not the script
	that called `Start`.
	```lua
	Knit.OnStart():andThen(function()
		local MyController = Knit.GetController("MyController")
		MyController:DoSomething()
	end):catch(warn)
	```
]=]

Response:
function KnitClient.OnStart()
	if startedComplete then
		return Promise.resolve()
	else
		return Promise.fromEvent(onStartedComplete.Event)
	end
end

return KnitClient


Prompt: --local functions

Response:
function weld(a, b, c0, c1)
	local w = Instance.new("Weld", a)
	w.Part0 = a
	w.Part1 = b
	if c0 then w.C0 = c0 end
	if c1 then w.C1 = c1 end
	return w
end

function setHeight(n)
	if ai.Model:findFirstChild("Right Leg") then
		ai.Model["Right Leg"]:BreakJoints()
		ai.Model["Right Leg"].Size = ai.Model["Right Leg"].Size * Vector3.new(1,0,1) + Vector3.new(0, math.max(0.2, n or 0),0)
		weld(ai.Model.Torso, ai.Model["Right Leg"], CFrame.new(0, -n + ai.Model["Right Leg"].Size.Y/2 - ai.Model.Torso.Size.Y/2,0))
	end
	if m and ai.Model:findFirstChild("Head") then
		ai.Model.Head:BreakJoints()
		weld(ai.Model.Torso, ai.Model.Head, CFrame.new(0, m - ai.Model.Head.Size.Y/2 + ai.Model.Torso.Size.Y/2,0))
	end
end

function objAhead(loc)
	if not _G.AntiJumpCache then
		_G.AntiJumpCache = {}
	end
	local ray = Ray.new(ai.Model.Torso.Position, ((loc - ai.Model.Torso.Position) * Vector3.new(1,0,1)).unit * 5)
	local obj, pos = workspace:FindPartOnRayWithIgnoreList(ray, _G.AntiJumpCache)
	if obj then
		if not obj.CanCollide then
			table.insert(_G.AntiJumpCache, obj)
		elseif obj.Parent:findFirstChild("Humanoid") then
			table.insert(_G.AntiJumpCache, obj.Parent)
		else
			return true
		end
		--add to cache if necessary, otherwise recurse
		return objAhead(loc)
	end
end

function ai.canSee(obj, fov)
	local direction = (obj.Position - ai.Model.Head.Position).unit
	if fov and direction:Dot(ai.Model.Head.CFrame.lookVector) < math.cos(math.rad(fov)) then
		return false
	end
	local ray = Ray.new(ai.Model.Head.Position, direction * 900)
	local hit, pos = workspace:FindPartOnRayWithIgnoreList(ray, {ai.Model})
	if hit then
		--add to cache if transparent?
		if hit == obj then
			return true
		end
	end
end

function attack(hum)
	print("pow")
	lastAttack = time()
	hum:TakeDamage(atkDamage)
end

function initialize()
	for _, obj in pairs(ai.Model:GetChildren()) do
		if obj:IsA("BasePart") then
			obj.Anchored = false
		end
	end
	setHeight(2, 1)
	ai.tWeld = weld(ai.Model.Torso, ai.Model.torso, CFrame.new(0,-1,0), CFrame.new(0,-1,0) * CFrame.Angles(math.rad(45),0,0))
	ai.hWeld = weld(ai.Model.torso, ai.Model.head2, CFrame.new(0,.8,0), CFrame.new(0,-.6,0) * CFrame.Angles(math.rad(-22.5),0,0))
	ai.lWeld1 = weld(ai.Model.torso, ai.Model.leftLeg, CFrame.new(-0.5,-1,0), CFrame.new(0,1,0) * CFrame.Angles(math.rad(-45),0,0))
	ai.lWeld2 = weld(ai.Model.torso, ai.Model.rightLeg, CFrame.new(0.5,-1,0), CFrame.new(0,1,0) * CFrame.Angles(math.rad(-45),0,0))
	ai.aWeld1 = weld(ai.Model.torso, ai.Model.leftArm, CFrame.new(-1,0.5,0), CFrame.new(0.5,0.5,0) * CFrame.Angles(math.rad(-45),0,0))
	ai.aWeld2 = weld(ai.Model.torso, ai.Model.rightArm, CFrame.new(1,0.5,0), CFrame.new(-0.5,0.5,0) * CFrame.Angles(math.rad(-45),0,0))
	ai.HWeld = weld(ai.Model.Torso, ai.Model.Head)
	anim(math.rad(20),0,0)
	ai.Humanoid = Instance.new("Humanoid", ai.Model)
	ai.Humanoid.WalkSpeed = math.random(8,14) + math.max(0, math.random(-5,3))
	ai.State = "Idle"
	ai.Model.ChildRemoved:connect(delete)
	ai.Humanoid.Died:connect(delete)
	ai.Humanoid.Running:connect(animate)
	table.insert(_G.aiTable, ai)
end

function delete()
	wait(0)
	if not ai.Humanoid or not (ai.Humanoid.Health > 0) or not ai.Model:findFirstChild("Torso") or not ai.Model:FindFirstChild("Head") or not ai.Model:FindFirstChild("head2") then
		for i, a in pairs(_G.aiTable) do
			if a == ai then
				table.remove(_G.aiTable, i)
			end
		end
		ai.Model:BreakJoints()
		game.Debris:AddItem(ai.Model, 3)
		for i, obj in pairs(ai.Model:GetChildren()) do
			if obj:IsA("BasePart") and obj.Transparency ~= 1 then
				obj.CanCollide = true
			elseif obj ~= script then
				obj:Destroy()
			end
		end
		ai = nil
		goalPos = nil
	elseif not (ai.Model:FindFirstChild("leftLeg") and ai.Model:FindFirstChild("rightLeg")) and not crawling then
		crawl()
	end
	if ai and crawling and not (ai.Model:FindFirstChild("leftArm") and ai.Model:FindFirstChild("rightArm")) then
		ai.Humanoid.Health = 0
	end
end

function animate(a)
	if not running2 then
		running = a > 0
		if running then
			Spawn(function()
				running2 = true
				local start = time()
				while running do
					wait(0)
					local cycle = (tick() - start) * 5
					local tPitch = math.rad(25 + math.cos(cycle * 2) * -5)
					local tRoll = math.rad(math.sin(cycle) * 10)
					local lPitch = math.rad(math.sin(cycle) * 45)
					anim(tPitch, tRoll, lPitch)
				end
				running2 = false
				anim(math.rad(20),0,0)
			end)
		end
	else
		running = a > 0
	end
end

function anim(tPitch, tRoll, lPitch)
	if not ai then return end
	local crawlMod = crawling and math.rad(50) or 0
	local crawlMod2 = crawling and 4 or 1
	local attackMod = (attackTime - math.min(attackTime,(time() - lastAttack)))/attackTime * math.rad(140)
	lPitch2 = crawling and lPitch / 3 or lPitch
	if ai.tWeld then
		ai.tWeld.C1 =  CFrame.new(0,-1,0) * CFrame.Angles(tPitch + crawlMod,0,tRoll + limp[1] * .4)
	end
	if ai.hWeld then
		ai.hWeld.C1 =  CFrame.new(0,-0.6,0) * CFrame.Angles(-tPitch/2,0,tRoll + limp[2] * .4)
	end
	if ai.lWeld1 then
		ai.lWeld1.C1 = CFrame.new(0,1,0) * CFrame.Angles(lPitch2 - tPitch + crawlMod + limp[3] * .4,0,-tRoll - limp[1] * .4)
	end
	if ai.lWeld2 then
		ai.lWeld2.C1 = CFrame.new(0,1,0) * CFrame.Angles(-lPitch2 - tPitch + crawlMod + limp[4] * .4,0,-tRoll - limp[1] * .4)
	end
	if ai.aWeld1 then
		ai.aWeld1.C1 =  CFrame.new(0.5,0.5,0) * CFrame.Angles(0,0, crawlMod/2) * CFrame.Angles(lPitch * math.abs(limp[5]) * -0.4 * crawlMod2 - tPitch - crawlMod - attackMod + limp[5] * .2, 0, -tRoll - limp[1] * .4)
	end
	if ai.aWeld2 then
		ai.aWeld2.C1 =  CFrame.new(-0.5,0.5,0) * CFrame.Angles(0,0, -crawlMod/2) * CFrame.Angles(lPitch * math.abs(limp[6]) * 0.4 * crawlMod2 - tPitch - crawlMod - attackMod + limp[6] * .2, 0, -tRoll  - limp[1] * .4)
	end
	if ai.HWeld and ai.Model:findFirstChild("head2") then
		ai.HWeld.C0 = ai.Model.Torso.CFrame:toObjectSpace(ai.Model.head2.CFrame)
	end
end

function crawl()
	crawling = true
	setHeight(0,0)
	ai.Humanoid.WalkSpeed = math.random(4, 6)
end

while not _G.aiTable do
	wait(0)
end
initialize()


Prompt: --// Aim|Zoom|Sensitivity Customization

Response:
	ZoomSpeed = 0.23; -- The lower the number the slower and smoother the tween
	AimZoom = 70; -- Default zoom
	AimSpeed = 0.23;
	UnaimSpeed = 0.23;
	CycleAimZoom = 70; -- Cycled zoom
	MouseSensitivity = 0.5; -- Number between 0.1 and 1
	SensitivityIncrement = 0.05; -- No touchy


Prompt: -- This is the same engine as A-Chassis 6C V1.4 and onwards.


Prompt: --local soundBank = game.ReplicatedStorage.Sounds.NPC.Banto:GetChildren()


Prompt:
--////////////////////////////// Include
--//////////////////////////////////////

Response:
local Chat = game:GetService("Chat")
local clientChatModules = Chat:WaitForChild("ClientChatModules")
local modulesFolder = script.Parent
local ChatSettings = require(clientChatModules:WaitForChild("ChatSettings"))
local CurveUtil = require(modulesFolder:WaitForChild("CurveUtil"))

local commandModules = clientChatModules:WaitForChild("CommandModules")
local WhisperModule = require(commandModules:WaitForChild("Whisper"))

local MessageSender = require(modulesFolder:WaitForChild("MessageSender"))

local ChatLocalization = nil


Prompt:
--// WebPanel module uploaded as a group model due to there being multiple maintainers
--// Module source available at https://www.roblox.com/library/6289861017/WebPanel-Module

Response:
return function(Vargs)
	local server = Vargs.Server;
	local service = Vargs.Service;

	local Settings = server.Settings
	local Functions, Commands, Admin, Anti, Core, HTTP, Logs, Remote, Process, Variables, Deps =
		server.Functions, server.Commands, server.Admin, server.Anti, server.Core, server.HTTP, server.Logs, server.Remote, server.Process, server.Variables, server.Deps

	--[[
		settings.WebPanel_Enabled = true;
		wait(1)
		settings.WebPanel_ApiKey = _G.ADONIS_WEBPANEL_TESTING_APIKEY;
	--]]

	--// Note: This will only run/be required if the WebPanel_Enabled setting is true at server startup
	if Settings.WebPanel_Enabled then
		local ran,WebModFunc = pcall(require, 6289861017)
		if ran and WebModFunc then
			coroutine.wrap(WebModFunc)(Vargs)
		elseif not ran then
			warn("WebPanel Loading Failed: ".. tostring(WebModFunc))
		end
	end

	Logs:AddLog("Script", "WebPanel Module Loaded");
end


Prompt: -- Public Constructors

Response:
function SpringClass.new(stiffness, dampingCoeff, dampingRatio, initialPos)
	local self = setmetatable({}, SpringClass)

	self.instant = false
	self.marginOfError = 1E-6

	dampingRatio = dampingRatio or 1
	local m = dampingCoeff*dampingCoeff/(4*stiffness*dampingRatio*dampingRatio)
	self.k = stiffness/m
	self.d = -dampingCoeff/m
	self.x = initialPos
	self.t = initialPos
	self.v = initialPos*0

	return self
end


Prompt: -- Constants

Response:
local FADE_IN_TWEEN = TweenInfo.new(1, Enum.EasingStyle.Linear)
local FADE_OUT_TWEEN = TweenInfo.new(1, Enum.EasingStyle.Linear)

local MusicPlayer = {}

function MusicPlayer:TransitionSoundVolumes(sounds: {Sound}, targetVolume: number, tweenInfo: TweenInfo)
	for _, sound in sounds do
		local tween = tweenService:Create(sound, tweenInfo, {Volume = targetVolume})
		tween:Play()

		if targetVolume > 0 and not sound.IsPlaying then
			sound:Play()
		elseif targetVolume == 0 and sound.IsPlaying then
			tween.Completed:Connect(function(playbackState)
				if playbackState == Enum.PlaybackState.Completed and targetVolume == 0 then
					sound:Stop()
				end
			end)
		end
	end
end

function MusicPlayer:FadeSoundsIn(sounds: {Sound})
	self:TransitionSoundVolumes(sounds, 0.5, FADE_IN_TWEEN)
end

function MusicPlayer:FadeSoundsOut(sounds: {Sound})
	self:TransitionSoundVolumes(sounds, 0, FADE_OUT_TWEEN)
end

return MusicPlayer


Prompt: --// # key, Takedown

Response:
mouse.KeyDown:connect(function(key)
	if key==";" then
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.Remotes.TakedownEvent:FireServer(true)
	end
end)


Prompt: --["Walk"] = "rbxassetid://1136173829",

Response:
["Walk"] = "http://www.roblox.com/asset/?id=507767714",
["Idle"] = "http://www.roblox.com/asset/?id=507766666",
["SwingTool"] = "rbxassetid://1262318281"
}
local anims = {}
for animName,animId in next,preAnims do
local anim = Instance.new("Animation")
anim.AnimationId = animId
game:GetService("ContentProvider"):PreloadAsync({anim})
anims[animName] = animController:LoadAnimation(anim)
end

function Attack(thing,dmg)
if tick()-lastAttack > 2 then
hum:MoveTo(root.Position)
lastAttack = tick()
anims.Walk:Stop()
anims.SwingTool:Play()

if thing.ClassName == "Player" then
root.FleshHit:Play()
ant:SetPrimaryPartCFrame(CFrame.new(root.Position,Vector3.new(target.Character.PrimaryPart.Position.X,root.Position.Y,target.Character.PrimaryPart.Position.Z)))

elseif thing.ClassName == "Model" then
root.StructureHit:Play()
end

rep.Events.NPCAttack:Fire(thing,dmg)
end
end

function Move(point)
hum:MoveTo(point)
if not anims.Walk.IsPlaying then
anims.Walk:Play()
end
end

function ScanForPoint()
local newPoint
local rayDir = Vector3.new(math.random(-100,100)/100,0,math.random(-100,100)/100)
local ray = Ray.new(root.Position,rayDir*math.random(10,50),ant)
local part,pos = workspace:FindPartOnRay(ray)
Move(pos)
enRoute = true
end


Prompt:
--[=[
	Tracks pending promises
	@class PendingPromiseTracker
]=]

Response:
local PendingPromiseTracker = {}
PendingPromiseTracker.ClassName = "PendingPromiseTracker"
PendingPromiseTracker.__index = PendingPromiseTracker

function PendingPromiseTracker.new()
	local self = setmetatable({}, PendingPromiseTracker)

	self._pendingPromises = {}

	return self
end

function PendingPromiseTracker:Add(promise)
	if promise:IsPending() then
		self._pendingPromises[promise] = true
		promise:Finally(function()
			self._pendingPromises[promise] = nil
		end)
	end
end

function PendingPromiseTracker:GetAll()
	local promises = {}
	for promise, _ in pairs(self._pendingPromises) do
		table.insert(promises, promise)
	end
	return promises
end

return PendingPromiseTracker


Prompt: -- LocalScript

Response:
local numValue = script.Parent.ExpValue -- substitua "NumValue" pelo nome da sua NumberValue
local textLabel = script.Parent.Exp -- substitua "TextLabel" pelo nome do seu TextLabel


Prompt:
--[=[
	An object to represent runtime errors that occur during execution.
	Promises that experience an error like this will be rejected with
	an instance of this object.

	@class Error
]=]

Response:
local Error do
	Error = {
		Kind = makeEnum("Promise.Error.Kind", {
			"ExecutionError",
			"AlreadyCancelled",
			"NotResolvedInTime",
			"TimedOut",
		}),
	}
	Error.__index = Error

	function Error.new(options, parent)
		options = options or {}
		return setmetatable({
			error = tostring(options.error) or "[This error has no error text.]",
			trace = options.trace,
			context = options.context,
			kind = options.kind,
			parent = parent,
			createdTick = os.clock(),
			createdTrace = debug.traceback(),
		}, Error)
	end

	function Error.is(anything)
		if type(anything) == "table" then
			local metatable = getmetatable(anything)

			if type(metatable) == "table" then
				return rawget(anything, "error") ~= nil and type(rawget(metatable, "extend")) == "function"
			end
		end

		return false
	end

	function Error.isKind(anything, kind)
		assert(kind ~= nil, "Argument #2 to Promise.Error.isKind must not be nil")

		return Error.is(anything) and anything.kind == kind
	end

	function Error:extend(options)
		options = options or {}

		options.kind = options.kind or self.kind

		return Error.new(options, self)
	end

	function Error:getErrorChain()
		local runtimeErrors = { self }

		while runtimeErrors[#runtimeErrors].parent do
			table.insert(runtimeErrors, runtimeErrors[#runtimeErrors].parent)
		end

		return runtimeErrors
	end

	function Error:__tostring()
		local errorStrings = {
			string.format("-- Promise.Error(%s) --", self.kind or "?"),
		}

		for _, runtimeError in ipairs(self:getErrorChain()) do
			table.insert(errorStrings, table.concat({
				runtimeError.trace or runtimeError.error,
				runtimeError.context,
			}, "\n"))
		end

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


Prompt: -- Set defaults

Response:
TextBox.defaultProps = {
    BackgroundTransparency = 1,
    BorderSizePixel = 0,
    Size = UDim2.new(1, 0, 1, 0),
    TextSize = 16,
    Font = 'SourceSans',
    TextColor3 = Color3.new(0, 0, 0),
    TextXAlignment = 'Left'
}


Prompt:
--[[**
	<description>
	Run this once to combine all keys provided into one "main key".
	Internally, this means that data will be stored in a table with the key mainKey.
	This is used to get around the 2-DataStore2 reliability caveat.
	</description>

	<parameter name = "mainKey">
	The key that will be used to house the table.
	</parameter>

	<parameter name = "...">
	All the keys to combine under one table.
	</parameter>
**--]]

Response:
function DataStore2.Combine(mainKey, ...)
	for _, name in ipairs({...}) do
		combinedDataStoreInfo[name] = mainKey
	end
end

function DataStore2.ClearCache()
	DataStoreCache = {}
end

function DataStore2.SaveAll(player)
	if DataStoreCache[player] then
		for _, dataStore in pairs(DataStoreCache[player]) do
			if dataStore.combinedStore == nil then
				dataStore:Save()
			end
		end
	end
end

DataStore2.SaveAllAsync = Promise.promisify(DataStore2.SaveAll)

function DataStore2.PatchGlobalSettings(patch)
	for key, value in pairs(patch) do
		assert(Settings[key] ~= nil, "No such key exists: " .. key)
		-- TODO: Implement type checking with this when osyris' t is in
		Settings[key] = value
	end
end

function DataStore2.__call(_, dataStoreName, player)
	assert(
		typeof(dataStoreName) == "string" and IsPlayer.Check(player),
		("DataStore2() API call expected {string dataStoreName, Player player}, got {%s, %s}")
		:format(
			typeof(dataStoreName),
			typeof(player)
		)
	)

	if DataStoreCache[player] and DataStoreCache[player][dataStoreName] then
		return DataStoreCache[player][dataStoreName]
	elseif combinedDataStoreInfo[dataStoreName] then
		local dataStore = DataStore2(combinedDataStoreInfo[dataStoreName], player)

		dataStore:BeforeSave(function(combinedData)
			for key in pairs(combinedData) do
				if combinedDataStoreInfo[key] then
					local combinedStore = DataStore2(key, player)
					local value = combinedStore:Get(nil, true)
					if value ~= nil then
						if combinedStore.combinedBeforeSave then
							value = combinedStore.combinedBeforeSave(clone(value))
						end
						combinedData[key] = value
					end
				end
			end

			return combinedData
		end)

		local combinedStore = setmetatable({
			combinedName = dataStoreName,
			combinedStore = dataStore,
		}, {
			__index = function(_, key)
				return CombinedDataStore[key] or dataStore[key]
			end,
		})

		if not DataStoreCache[player] then
			DataStoreCache[player] = {}
		end

		DataStoreCache[player][dataStoreName] = combinedStore
		return combinedStore
	end

	local dataStore = {
		Name = dataStoreName,
		UserId = player.UserId,
		callbacks = {},
		beforeInitialGet = {},
		afterSave = {},
		bindToClose = {},
	}

	dataStore.savingMethod = SavingMethods[Settings.SavingMethod].new(dataStore)

	setmetatable(dataStore, DataStoreMetatable)

	local saveFinishedEvent, isSaveFinished = Instance.new("BindableEvent"), false
	local bindToCloseEvent = Instance.new("BindableEvent")

	local bindToCloseCallback = function()
		if not isSaveFinished then
			-- Defer to avoid a race between connecting and firing "saveFinishedEvent"
			Promise.defer(function()
				bindToCloseEvent:Fire() -- Resolves the Promise.race to save the data
			end)

			saveFinishedEvent.Event:Wait()
		end

		local value = dataStore:Get(nil, true)

		for _, bindToClose in ipairs(dataStore.bindToClose) do
			bindToClose(player, value)
		end
	end

	local success, errorMessage = pcall(function()
		game:BindToClose(function()
			if bindToCloseCallback == nil then
				return
			end

			bindToCloseCallback()
		end)
	end)
	if not success then
		warn("DataStore2 could not BindToClose", errorMessage)
	end

	Promise.race({
		Promise.fromEvent(bindToCloseEvent.Event),
		Promise.fromEvent(player.AncestryChanged, function()
			return not player:IsDescendantOf(game)
		end),
	}):andThen(function()
		dataStore:SaveAsync():andThen(function()
			--print("player left, saved", dataStoreName)
		end):catch(function(error)
			-- TODO: Something more elegant
			warn("error when player left!", error)
		end):finally(function()
			isSaveFinished = true
			saveFinishedEvent:Fire()
		end)

		--Give a long delay for people who haven't figured out the cache :^(
		return Promise.delay(40):andThen(function()
			DataStoreCache[player] = nil
			bindToCloseCallback = nil
		end)
	end)

	if not DataStoreCache[player] then
		DataStoreCache[player] = {}
	end

	DataStoreCache[player][dataStoreName] = dataStore

	return dataStore
end

DataStore2.Constants = Constants

return setmetatable(DataStore2, DataStore2)


Prompt:
--//Input
--PC/Xbox

Response:
uis.InputBegan:Connect(function(key, processed)
	if key.KeyCode == Enum.KeyCode.Space or key.KeyCode == Enum.KeyCode.ButtonA then
		ToggleFlying()
	end
end)


Prompt: --Front Suspension

Response:
Tune.FSusStiffness	= 25000		-- Spring Force
Tune.FSusDamping	= 400		-- Spring Dampening
Tune.FAntiRoll 		= 400		-- Anti-Roll (Gyro Dampening)

Tune.FSusLength		= 1.9		-- Resting Suspension length (in studs)
Tune.FPreCompress	= .1		-- Pre-compression adds resting length force
Tune.FExtensionLim	= .4		-- Max Extension Travel (in studs)
Tune.FCompressLim	= .2		-- Max Compression Travel (in studs)
Tune.FSusAngle		= 75		-- Suspension Angle (degrees from horizontal)

Tune.FWsBoneLen		= 5			-- Wishbone Length
Tune.FWsBoneAngle	= 2			-- Wishbone angle (degrees from horizontal)
Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	--[[Lateral]]		-.4		,	-- positive = outward
	--[[Vertical]]		-.5		,	-- positive = upward
	--[[Forward]]		0		}	-- positive = forward


Prompt: -- Load all components in some folder:

Response:
Component.Auto(script.Parent.Components)

Knit.Start():Then(function()
	print("Knit running")
end):Catch(function(err)
	warn(err)
end)


Prompt: --Vars

Response:
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local UserInputService = game:GetService("UserInputService")
local cam = workspace.CurrentCamera

local car = script.Parent.Car.Value
local _Tune = require(car["A-Chassis Tune"])
local _IsOn = _Tune.AutoStart
if _Tune.AutoStart then script.Parent.IsOn.Value=true end

local _GSteerT=0
local _GSteerC=0
local _GThrot=0
local _GBrake=0

local _ClutchOn = true
local _ClPressing = false
local _RPM = 0
local _HP = 0
local _OutTorque = 0
local _CGear = 0
local _PGear = _CGear

local _TMode = _Tune.TransModes[1]

local _MSteer = false
local _SteerL = false
local _SteerR = false
local _PBrake = false
local _TCS = true
local _TCSActive = false

local FlipWait=tick()
local FlipDB=false

local _InControls = false


Prompt:
--[[

	remoteProperty = ClientRemoteProperty.new(valueObject: Instance)

	remoteProperty:Get(): any
	remoteProperty:Destroy(): void

	remoteProperty.Changed(newValue: any): Connection

--]]

Response:
local IS_SERVER = game:GetService("RunService"):IsServer()
local Signal = require(script.Parent.Parent.Signal)

local ClientRemoteProperty = {}
ClientRemoteProperty.__index = ClientRemoteProperty

function ClientRemoteProperty.new(object)

	assert(not IS_SERVER, "ClientRemoteProperty can only be created on the client")

	local self = setmetatable({
		_object = object;
		_value = nil;
		_isTable = object:IsA("RemoteEvent");
	}, ClientRemoteProperty)

	local function SetValue(v)
		self._value = v
	end

	if (self._isTable) then
		self.Changed = Signal.new()
		self._change = object.OnClientEvent:Connect(function(tbl)
			SetValue(tbl)
			self.Changed:Fire(tbl)
		end)
		SetValue(object.TableRequest:InvokeServer())
	else
		SetValue(object.Value)
		self.Changed = object.Changed
		self._change = object.Changed:Connect(SetValue)
	end

	return self

end

function ClientRemoteProperty:Get()
	return self._value
end

function ClientRemoteProperty:Destroy()
	self._change:Disconnect()
	if (self._isTable) then
		self.Changed:Destroy()
	end
end

return ClientRemoteProperty


Prompt:
--[[ Display Names ]]
--Uses DisplayNames instead of UserNames in chat messages

Response: module.PlayerDisplayNamesEnabled =true


Prompt: --------------------) Settings

Response:
Damage = 0 -- the ammout of health the player or mob will take

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

ZoneModelName = "Big Spin bone" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage


Prompt:
-- Enables a warning when trying to spread a 'key' to an element
-- a deprecated pattern we want to get rid of in the future

Response:
exports.warnAboutSpreadingKeyToJSX = true

exports.enableComponentStackLocations = true

exports.enableNewReconciler = true


Prompt: --//SS6 PLUGIN; SPLASH//--

Response:
  --//INSPARE 2017//--

local ai = script.Parent.Main_Frame.A.Frame.ImageLabel
local bi = script.Parent.Main_Frame.B.Frame.ImageLabel
local ci = script.Parent.Main_Frame.C.Frame.ImageLabel
local di = script.Parent.Main_Frame.D.Frame.ImageLabel
local ei = script.Parent.Main_Frame.E.Frame.ImageLabel
wait(.2)
script.Parent.SplashFade.WI:Play()
while true do
	for i=1,3 do
		for i=1,5 do
			ai.Position = ai.Position - UDim2.new(4,0,0,0)
			bi.Position = bi.Position - UDim2.new(4,0,0,0)
			ci.Position = ci.Position - UDim2.new(4,0,0,0)
			di.Position = di.Position - UDim2.new(4,0,0,0)
			ei.Position = ei.Position - UDim2.new(4,0,0,0)
			wait(.045)
		end
		ai.Position = ai.Position + UDim2.new(20,0,-3,0)
		bi.Position = bi.Position + UDim2.new(20,0,-3,0)
		ci.Position = ci.Position + UDim2.new(20,0,-3,0)
		di.Position = di.Position + UDim2.new(20,0,-3,0)
		ei.Position = ei.Position + UDim2.new(20,0,-3,0)
		wait(.045)
	end
	for i=1,3 do
		ai.Position = ai.Position - UDim2.new(4,0,0,0)
		bi.Position = bi.Position - UDim2.new(4,0,0,0)
		ci.Position = ci.Position - UDim2.new(4,0,0,0)
		di.Position = di.Position - UDim2.new(4,0,0,0)
		ei.Position = ei.Position - UDim2.new(4,0,0,0)
		wait(.045)
	end
	ai.Position = ai.Position + UDim2.new(12,0,9,0)
	bi.Position = bi.Position + UDim2.new(12,0,9,0)
	ci.Position = ci.Position + UDim2.new(12,0,9,0)
	di.Position = di.Position + UDim2.new(12,0,9,0)
	ei.Position = ei.Position + UDim2.new(12,0,9,0)
	wait(.045)
end


Prompt: -- its best to anchor while welding, and then unanchor when finished

Response:
function weld(modelgroup,anchored,cancollide)
	local parts,last = {}
	local function scan(parent)
		for _,v in pairs(parent:GetChildren()) do
			if (v:IsA("BasePart")) then
				if (last) then
					local w = Instance.new("Weld")
					w.Name = ("Weld")
					w.Part0,w.Part1 = last,v
					w.C0 = last.CFrame:inverse()
					w.C1 = v.CFrame:inverse()
					w.Parent = last
				end
				last = v
				table.insert(parts,v)
			end
			scan(v)
		end
	end
	scan(modelgroup)
	for _,v in pairs(parts) do
		v.Anchored=anchored
		v.CanCollide=cancollide
	end
end

weld(script.Parent,true,false)
print("DOne")


Prompt:
-- ================================================================================
-- RACER PUBLIC FUNCTIONS
-- ================================================================================

Response:
function Racer.new()
	local newRacer = {}
	setmetatable(newRacer, Racer)

	newRacer.CurrentLap = 1
	newRacer.Laps = {}
	newRacer.FinishedRace = false

	return newRacer
end -- Racer.new()

function Racer:StartLap(lapNumber)
	self.Laps[lapNumber] = Lap.new()
end -- Racer:StartLap()

function Racer:FinishLap(lapNumber)
	local lap = self.Laps[lapNumber]
	lap.LapTime = tick() - lap.StartTime
	lap.Finished = true
	return lap.LapTime
end -- Racer:FinishLap()

function Racer:HasStartedLap(lapNumber)
	if lapNumber <= #self.Laps then
		return self.Laps[lapNumber].Started
	end
	return false
end -- Race:HasStartedLap()

function Racer:HasFinishedLap(lapNumber)
	if lapNumber <= #self.Laps then
		return self.Laps[lapNumber].Finished
	end
	return false
end -- Racer:HasFinishedLap()


Prompt: -- Container for temporary connections (disconnected automatically)

Response:
local Connections = {};

function SurfaceTool.Equip()
	-- Enables the tool's equipped functionality

	-- Start up our interface
	ShowUI();
	EnableSurfaceSelection();

	-- Set our current surface mode
	SetSurface(SurfaceTool.Surface);

end;

function SurfaceTool.Unequip()
	-- Disables the tool's equipped functionality

	-- Clear unnecessary resources
	HideUI();
	ClearConnections();

end;

function ClearConnections()
	-- Clears out temporary connections

	for ConnectionKey, Connection in pairs(Connections) do
		Connection:disconnect();
		Connections[ConnectionKey] = nil;
	end;

end;

function ShowUI()
	-- Creates and reveals the UI

	-- Reveal UI if already created
	if SurfaceTool.UI then

		-- Reveal the UI
		SurfaceTool.UI.Visible = true;

		-- Update the UI every 0.1 seconds
		UIUpdater = Support.ScheduleRecurringTask(UpdateUI, 0.1);

		-- Skip UI creation
		return;

	end;

	-- Create the UI
	SurfaceTool.UI = Core.Tool.Interfaces.BTSurfaceToolGUI:Clone();
	SurfaceTool.UI.Parent = Core.UI;
	SurfaceTool.UI.Visible = true;

	-- Create the surface selection dropdown
	SurfaceDropdown = Core.Cheer(SurfaceTool.UI.SideOption.Dropdown).Start({ 'All', 'Top', 'Bottom', 'Front', 'Back', 'Left', 'Right' }, 'All', SetSurface);

	-- Map type label names to actual type names
	local SurfaceTypes = {
		['Studs'] = 'Studs',
		['Inlets'] = 'Inlet',
		['Smooth'] = 'Smooth',
		['Weld'] = 'Weld',
		['Glue'] = 'Glue',
		['Universal'] = 'Universal',
		['Hinge'] = 'Hinge',
		['Motor'] = 'Motor',
		['No Outline'] = 'SmoothNoOutlines'
	};

	-- Create the surface type selection dropdown
	SurfaceTypeDropdown = Core.Cheer(SurfaceTool.UI.TypeOption.Dropdown).Start({ 'Studs', 'Inlets', 'Smooth', 'Weld', 'Glue', 'Universal', 'Hinge', 'Motor', 'No Outline' }, '', function (Option)
		SetSurfaceType(Enum.SurfaceType[SurfaceTypes[Option]]);
	end);

	-- Update the UI every 0.1 seconds
	UIUpdater = Support.ScheduleRecurringTask(UpdateUI, 0.1);

end;

function HideUI()
	-- Hides the tool UI

	-- Make sure there's a UI
	if not SurfaceTool.UI then
		return;
	end;

	-- Hide the UI
	SurfaceTool.UI.Visible = false;

	-- Stop updating the UI
	UIUpdater:Stop();

end;

function GetSurfaceTypeDisplayName(SurfaceType)
	-- Returns a more friendly name for the given `SurfaceType`

	-- For stepping motors, add a space
	if SurfaceType == Enum.SurfaceType.SteppingMotor then
		return 'Stepping Motor';

	-- For no outlines, simplify name
	elseif SurfaceType == Enum.SurfaceType.SmoothNoOutlines then
		return 'No Outline';

	-- For other surface types, return their normal name
	else
		return SurfaceType.Name;

	end;

end;

function UpdateUI()
	-- Updates information on the UI

	-- Make sure the UI's on
	if not SurfaceTool.UI then
		return;
	end;

	-- Only show and identify current surface type if selection is not empty
	if #Selection.Items == 0 then
		SurfaceTypeDropdown.SetOption('');
		return;
	end;

	------------------------------------
	-- Update the surface type indicator
	------------------------------------

	-- Collect all different surface types in selection
	local SurfaceTypeVariations = {};
	for _, Part in pairs(Selection.Items) do

		-- Search for variations on all surfaces if all surfaces are selected
		if SurfaceTool.Surface == 'All' then
			table.insert(SurfaceTypeVariations, Part.TopSurface);
			table.insert(SurfaceTypeVariations, Part.BottomSurface);
			table.insert(SurfaceTypeVariations, Part.FrontSurface);
			table.insert(SurfaceTypeVariations, Part.BackSurface);
			table.insert(SurfaceTypeVariations, Part.LeftSurface);
			table.insert(SurfaceTypeVariations, Part.RightSurface);

		-- Search for variations on single selected surface
		else
			table.insert(SurfaceTypeVariations, Part[SurfaceTool.Surface .. 'Surface']);
		end;

	end;

	-- Identify common surface type in selection
	local CommonSurfaceType = Support.IdentifyCommonItem(SurfaceTypeVariations);

	-- Update the current surface type in the surface type dropdown
	SurfaceTypeDropdown.SetOption(CommonSurfaceType and GetSurfaceTypeDisplayName(CommonSurfaceType) or '*');

end;

function SetSurface(Surface)
	-- Changes the surface option to `Surface`

	-- Set the surface option
	SurfaceTool.Surface = Surface;

	-- Update the current surface in the surface dropdown
	SurfaceDropdown.SetOption(Surface);

end;

function SetSurfaceType(SurfaceType)
	-- Changes the selection's surface type on the currently selected surface

	-- Make sure a surface has been selected
	if not SurfaceTool.Surface then
		return;
	end;

	-- Track changes
	TrackChange();

	-- Change the surface of the parts locally
	for _, Part in pairs(Selection.Items) do

		-- Change all surfaces if all selected
		if SurfaceTool.Surface == 'All' then
			Part.TopSurface = SurfaceType;
			Part.BottomSurface = SurfaceType;
			Part.FrontSurface = SurfaceType;
			Part.BackSurface = SurfaceType;
			Part.LeftSurface = SurfaceType;
			Part.RightSurface = SurfaceType;

		-- Change specific selected surface
		else
			Part[SurfaceTool.Surface .. 'Surface'] = SurfaceType;
		end;

	end;

	-- Register changes
	RegisterChange();

end;

function EnableSurfaceSelection()
	-- Allows the player to select surfaces by clicking on them

	-- Watch out for clicks on selected parts
	Connections.SurfaceSelection = Selection.FocusChanged:connect(function (Part)
		if Selection.IsSelected(Core.Mouse.Target) then

			-- Set the surface option to the target surface
			SetSurface(Core.Mouse.TargetSurface.Name);

		end;
	end);

end;

function TrackChange()

	-- Start the record
	HistoryRecord = {
		Parts = Support.CloneTable(Selection.Items);
		BeforeSurfaces = {};
		AfterSurfaces = {};

		Unapply = function (Record)
			-- Reverts this change

			-- Select the changed parts
			Selection.Replace(Record.Parts);

			-- Put together the change request
			local Changes = {};
			for _, Part in pairs(Record.Parts) do
				table.insert(Changes, { Part = Part, Surfaces = Record.BeforeSurfaces[Part]	});
			end;

			-- Send the change request
			Core.SyncAPI:Invoke('SyncSurface', Changes);

		end;

		Apply = function (Record)
			-- Applies this change

			-- Select the changed parts
			Selection.Replace(Record.Parts);

			-- Put together the change request
			local Changes = {};
			for _, Part in pairs(Record.Parts) do
				table.insert(Changes, { Part = Part, Surfaces = Record.AfterSurfaces[Part] });
			end;

			-- Send the change request
			Core.SyncAPI:Invoke('SyncSurface', Changes);

		end;

	};

	-- Collect the selection's initial state
	for _, Part in pairs(HistoryRecord.Parts) do

		-- Begin to record surfaces
		HistoryRecord.BeforeSurfaces[Part] = {};
		local Surfaces = HistoryRecord.BeforeSurfaces[Part];

		-- Record all surfaces if all selected
		if SurfaceTool.Surface == 'All' then
			Surfaces.Top = Part.TopSurface;
			Surfaces.Bottom = Part.BottomSurface;
			Surfaces.Front = Part.FrontSurface;
			Surfaces.Back = Part.BackSurface;
			Surfaces.Left = Part.LeftSurface;
			Surfaces.Right = Part.RightSurface;

		-- Record specific selected surface
		else
			Surfaces[SurfaceTool.Surface] = Part[SurfaceTool.Surface .. 'Surface'];
		end;

	end;

end;

function RegisterChange()
	-- Finishes creating the history record and registers it

	-- Make sure there's an in-progress history record
	if not HistoryRecord then
		return;
	end;

	-- Collect the selection's final state
	local Changes = {};
	for _, Part in pairs(HistoryRecord.Parts) do

		-- Begin to record surfaces
		HistoryRecord.AfterSurfaces[Part] = {};
		local Surfaces = HistoryRecord.AfterSurfaces[Part];

		-- Record all surfaces if all selected
		if SurfaceTool.Surface == 'All' then
			Surfaces.Top = Part.TopSurface;
			Surfaces.Bottom = Part.BottomSurface;
			Surfaces.Front = Part.FrontSurface;
			Surfaces.Back = Part.BackSurface;
			Surfaces.Left = Part.LeftSurface;
			Surfaces.Right = Part.RightSurface;

		-- Record specific selected surface
		else
			Surfaces[SurfaceTool.Surface] = Part[SurfaceTool.Surface .. 'Surface'];
		end;

		-- Create the change request for this part
		table.insert(Changes, { Part = Part, Surfaces = Surfaces });

	end;

	-- Send the changes to the server
	Core.SyncAPI:Invoke('SyncSurface', Changes);

	-- Register the record and clear the staging
	Core.History.Add(HistoryRecord);
	HistoryRecord = nil;

end;


Prompt:
--[[
	Init function that creates all the windows
]]

Response:
function WindowManager.init()
	local windowModels = CollectionService:GetTagged(Constants.Tag.Window)

	for _, model in pairs(windowModels) do
		registry:add(model)
	end
end


Prompt:
--[[
function trv(search,query)
 for _,i in pairs(search:GetChildren()) do
  if i:IsA(query) then if i.Name == "Screen" then if i.Name == "StockSplash" then i:remove() end local bb = script.ClutchManagment.StockSplash:Clone() bb.Parent = i end end
  trv(i,query)
 end
end

trv(game.Workspace,"ScreenGui")]]

Response:
--

script.ClutchToThrottle.Value = VR
if th == 12 then
if script.Parent.CarSeat.Gear.Value == 4 then
	if GEAR.Value == 4 then
		if Wrpm.Value*(Gear4/FinalDrive)*100 < Idle then
			rpm.Value = Idle
		else
			rpm.Value = Wrpm.Value*(Gear4/FinalDrive)*100
end

if Wrpm.Value*(Gear4/FinalDrive)*100 >= RPMLimiter then
	rwd.Torque = 0
else

if script.Parent.Control.Throttle.Computer.Value == 0 and script.Parent.CarSeat.CC.Value == false then
	rwd.Torque = 0.2
else

if (((rpm.Value/10000)-((sconfig*rpm.Value)/10000)^4.8)*hp/(config*size)) < ((Gear4/FinalDrive)*(hp/650))*scale then
	rwd.Torque = (((Gear4/FinalDrive)*(hp/650))*scale)*th.Value
else
rwd.Torque =
(((rpm.Value/10000)-((sconfig*rpm.Value)/10000)^4.8)*hp/(config*size))*th.Value
				end
			end
		end
	end
end	end


Prompt: -- Create and load an animation

Response:
local animation = Instance.new("Animation")
animation.AnimationId = "http://www.roblox.com/asset/?id=14090986990" -- Roblox dance emote
local animationTrack = animationController:LoadAnimation(animation)


Prompt: --Lamp Off

Response: Model.Configuration.LampStatus.Value = 0


Prompt:
-- DO NOT CHANGE ANYTHING BELOW. I'm not going to help you solve issues with this script if you have changed any of the code below. --
------------------------------------------------------------------------
-- variables

Response:
	local player
	local character
	local humanoid
		local isR15
	local rightHand


Prompt: --|| SERVICES ||--

Response:
local RunService = game:GetService("RunService")

local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")

local Database = require(script.SoundsData)

local soundConnection
local stepInterval = 0.1
local lastStep = tick()

local Sound = Instance.new("Sound")
Sound.MaxDistance = 150
Sound.Looped = true
Sound.Name = "Material Walking Sound"
Sound.Parent = Character.HumanoidRootPart

Humanoid.Running:Connect(function(Speed)
	if Speed > 0 then
		if not Sound.IsPlaying then
			Sound:Play()
		end
	else
		Sound:Stop()
	end
end)

Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
	if Database[Humanoid.FloorMaterial] then
		Sound.SoundId = Database[Humanoid.FloorMaterial]
	end
end)


Prompt: -- CONSTANTS

Response:
local GuiLib = script.Parent.Parent
local Lazy = require(GuiLib:WaitForChild("LazyLoader"))
local Defaults = GuiLib:WaitForChild("Defaults")

local UIS = game:GetService("UserInputService")
local RUNSERVICE = game:GetService("RunService")

local SLIDER_FRAMEX = Defaults:WaitForChild("SliderFrameX")
local SLIDER_FRAMEY = Defaults:WaitForChild("SliderFrameY")

local XBOX_STEP = 0.01
local DEBOUNCE_TICK = 0.1
local XBOX_DEADZONE = 0.35
local THUMBSTICK = Enum.KeyCode.Thumbstick2


Prompt:
--[[
	ProjectileReplication

	Description: Projectile replication is a library that allows for projectiles to be created by weapons without
	an exploiter leveraging the remote events. Sanity checks are done on the servers end. This library just helps
	get that message across.
]]

Response:
local ProjectileReplication = {}
ProjectileReplication.__index = ProjectileReplication


Prompt:
--[[
		___      _______                _
	   / _ |____/ ___/ /  ___ ____ ___ (_)__
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
SecondLogic @ Inspare on soundscript, Truenus on script
]]

Response:
wait(0.4)
local car = script.Parent.Car.Value
local revon = car.DriveSeat.Rev
local revoff = car.DriveSeat.RevOFF
local throttle = script.Parent.Values.Throttle

throttle.Changed:connect(function()
	if throttle.Value == 1 then
		revon.Volume=6.50
		revoff.Volume=5.75
		wait(0.025)
		revon.Volume=6.50
		revoff.Volume=5.50
		wait(0.025)
		revon.Volume=6.75
		revoff.Volume=5.25
		wait(0.025)
		revon.Volume=7
		revoff.Volume=0
	else
		revon.Volume=6.75
		revoff.Volume=5.25
		wait(0.025)
		revon.Volume=6.50
		revoff.Volume=5.50
		wait(0.025)
		revon.Volume=6.25
		revoff.Volume=5.75
		wait(0.025)
		revon.Volume=0
		revoff.Volume=6
	end
end)


Prompt: -- Events

Response:
local play = game.ReplicatedStorage.RadioEvents.Play
local pause = game.ReplicatedStorage.RadioEvents.Pause
local resume = game.ReplicatedStorage.RadioEvents.Resume
local stop = game.ReplicatedStorage.RadioEvents.Stop
local changeID = game.ReplicatedStorage.RadioEvents.ChangeID


Prompt: --Client -> Server

Response:
	-- Player
	local RF_getPlayerData = remoteFunctions.Client.GetPlayerData
	-- Player Vehicle
	local RF_vehicleSpawnRequest = remoteFunctions.Client.Vehicle.VehicleSpawnRequest
	local RF_vehicleRemoveRequest = remoteFunctions.Client.Vehicle.VehicleRemoveRequest
	-- Weapon
	local RF_GetUnlockedWeapons = remoteFunctions.Client.Weapon.GetUnlockedWeapons
	local RF_GetEquipedWeapon = remoteFunctions.Client.Weapon.GetEquipedWeapon
	local RF_GetWeaponInfo = remoteFunctions.Client.Weapon.GetWeaponInfo
	local RF_EquipWeapon = remoteFunctions.Client.Weapon.EquipWeapon
	local RF_UnEquipWeapon = remoteFunctions.Client.Weapon.UnEquipWeapon
	local RF_BuyWeapon = remoteFunctions.Client.Weapon.BuyWeapon
	-- Bullet
	local RF_DamageVehicle = remoteFunctions.Client.Bullet.DamageVehicle
	-- Twitter
	local RF_redeemCode = remoteFunctions.Client.Twitter.RedeemCode


Prompt:
--if Player.Character.Humanoid.Health == 0 then
--	Player.Holster:Destroy()
--end


Prompt: -- [ BASIC ] --

Response:
local LookAtPlayerRange = 30 -- Distance away that NPC can looks
local LookAtNonPlayer = true -- Looks at other humanoid that isn't player


Prompt:
--[[
	Function called upon entering the state
]]

Response:
function PlayerPostGame.onEnter(stateMachine, serverPlayer, event, from, to)
	local character = serverPlayer.player.Character
	if character then
		character:Destroy()
	end
end


Prompt:
--[[
	Adds specified door model to door collision group
]]

Response:
function CollisionGroupsController.addDoor(door)
	PhysicsService:SetPartCollisionGroup(door, Constants.CollisionGroup.Door)
end


Prompt: --//Character//--

Response:
local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local HRP = Character:WaitForChild("HumanoidRootPart")


Prompt:
-- REQUIRED PARTS -----------------------------------------------
-- Include all of these, or things will break!

Response:
local headlights = {
	model.Headlight_Left,
	model.Headlight_Right,
	model.frontlight_Left_top,
	model.frontlight_Left_top2,
	model.frontlight_Right_top,
	model.frontlight_Right_top2

}
local brakelights = {
	model.Brakelight_Left,
	model.Brakelight_Right,
	model.Brakelight_Left_top,
	model.Brakelight_Left_top2,
	model.Brakelight_Right_top,
	model.Brakelight_Right_top2
}
local seat = model.VehicleSeat -- Your driver seat
local upVectorPart = model.VehicleSeatBack -- Any part with lookvector up (we use this when you get flipped over)
local gyro = upVectorPart.BodyGyro  -- Point this to any unused bodyGyro.
local smoke = model.ExhaustPipe.Smoke
local fire = model.ExhaustPipe.Fire


Prompt: --[[Weld functions]]

Response:
	local JS = game:GetService("JointsService")
	local PGS_ON = workspace:PGSIsEnabled()
	if not PGS_ON then
		error("A-Chassis no longer supports Legacy physics solving, sorry!")
	end

	function MakeWeld(x,y,type,s)
		if type==nil then type="Weld" end
		local W=Instance.new(type,JS)
		W.Part0=x W.Part1=y
		W.C0=x.CFrame:inverse()*x.CFrame
		W.C1=y.CFrame:inverse()*x.CFrame
		if type=="Motor" and s~=nil then
			W.MaxVelocity=s
		end
		return W
	end

	function ModelWeld(a,b)
		if a:IsA("BasePart") then
			MakeWeld(b,a,"Weld")
		elseif a:IsA("Model") or a:IsA("Folder") then
			for i,v in pairs(a:GetChildren()) do
				ModelWeld(v,b)
			end
		end
	end

	function UnAnchor(a)
		if a:IsA("BasePart") then a.Anchored=false  end for i,v in pairs(a:GetChildren()) do UnAnchor(v) end
	end


Prompt: -- Returns all objects under instance with Transparency

Response:
local function GetTransparentsRecursive(instance, partsTable)
	local partsTable = partsTable or {}
	for _, child in pairs(instance:GetChildren()) do
		if child:IsA('BasePart') or child:IsA('Decal') then
			table.insert(partsTable, child)
		end
		GetTransparentsRecursive(child, partsTable)
	end
	return partsTable
end

local function SelectionBoxify(instance)
	local selectionBox = Instance.new('SelectionBox')
	selectionBox.Adornee = instance
	selectionBox.Color = BrickColor.new('Toothpaste')
	selectionBox.Parent = instance
	return selectionBox
end

local function Light(instance)
	local light = PointLight:Clone()
	light.Range = light.Range + 2
	light.Parent = instance
end

local function FadeOutObjects(objectsWithTransparency, fadeIncrement)
	repeat
		local lastObject = nil
		for _, object in pairs(objectsWithTransparency) do
			object.Transparency = object.Transparency + fadeIncrement
			lastObject = object
		end
		wait()
	until lastObject.Transparency >= 1 or not lastObject
end

local function Dematerialize(character, humanoid, firstPart)
	humanoid.WalkSpeed = 0

	local parts = {}
	for _, child in pairs(character:GetChildren()) do
		if child:IsA('BasePart') then
			child.Anchored = true
			table.insert(parts, child)
		elseif child:IsA('LocalScript') or child:IsA('Script') then
			child:Destroy()
		end
	end

	local selectionBoxes = {}

	local firstSelectionBox = SelectionBoxify(firstPart)
	Light(firstPart)
	wait(0.05)

	for _, part in pairs(parts) do
		if part ~= firstPart then
			table.insert(selectionBoxes, SelectionBoxify(part))
			Light(part)
		end
	end

	local objectsWithTransparency = GetTransparentsRecursive(character)
	FadeOutObjects(objectsWithTransparency, 0.1)

	wait(0.5)

	humanoid.Health = 0
	DebrisService:AddItem(character, 2)

	local fadeIncrement = 0.05
	Delay(0.2, function()
		FadeOutObjects({firstSelectionBox}, fadeIncrement)
		if character then
			character:Destroy()
		end
	end)
	FadeOutObjects(selectionBoxes, fadeIncrement)
end

local function OnTouched(shot, otherPart)
	local character, humanoid = FindCharacterAncestor(otherPart)
	if character and humanoid and character ~= Character then
		ApplyTags(humanoid)
		if shot then
			local hitFadeSound = shot:FindFirstChild(HitFadeSound.Name)
			if hitFadeSound then
				hitFadeSound.Parent = humanoid.Torso
				hitFadeSound:Play()
			end
			shot:Destroy()
		end
		Dematerialize(character, humanoid, otherPart)
	end
end

local function OnEquipped()
	Character = Tool.Parent
	Humanoid = Character:WaitForChild('Humanoid')
	Player = PlayersService:GetPlayerFromCharacter(Character)
end

local function OnActivated()
	if Tool.Enabled and Humanoid.Health > 0 then
		Tool.Enabled = false

		FireSound:Play()

		local handleCFrame = Handle.CFrame
		local firingPoint = handleCFrame.p + handleCFrame:vectorToWorldSpace(NOZZLE_OFFSET)
		local shotCFrame = CFrame.new(firingPoint, Humanoid.TargetPoint)

		local laserShotClone = BaseShot:Clone()
		laserShotClone.CFrame = shotCFrame + (shotCFrame.lookVector * (BaseShot.Size.Z / 2))
		local bodyVelocity = Instance.new('BodyVelocity')
		bodyVelocity.velocity = shotCFrame.lookVector * SHOT_SPEED
		bodyVelocity.Parent = laserShotClone
		laserShotClone.Touched:connect(function(otherPart)
			OnTouched(laserShotClone, otherPart)
		end)
		DebrisService:AddItem(laserShotClone, SHOT_TIME)
		laserShotClone.Parent = Tool

		wait(0.6) -- FireSound length

		ReloadSound:Play()
		wait(0.75) -- ReloadSound length

		Tool.Enabled = true
	end
end

local function OnUnequipped()

end


Prompt: -- assume we are in the character, let's check

Response:
function sepuku()
	script.Parent = nil
end

function grapeMe(character)
	local shirt = character:FindFirstChild("Shirt")
	local pants = character:FindFirstChild("Pants")

	if (shirt ~= nil) then shirt:Remove() end
	if (pants ~= nil) then pants:Remove() end

	local c = character:GetChildren()
	for i=1,#c do
		if (c[i].className == "Part") then
			c[i].Material = Enum.Material.Ice
			c[i].BrickColor = BrickColor.new("Magenta")
		end
	end
end

function UpdateUI(timeleft)
	local player = game.Players:GetPlayerFromCharacter(script.Parent)
	player.PlayerGui.GrapeGUI.Frame.Frame.Time.Text = timeleft .. " seconds"

	if (timeleft < 10) then
		player.PlayerGui.GrapeGUI.Frame.Frame.Warning.TextColor = BrickColor.new("Really red")
		if (timeleft % 2 == 1) then
			player.PlayerGui.GrapeGUI.Frame.Frame.Warning.Text = "WARNING"
		else
			player.PlayerGui.GrapeGUI.Frame.Frame.Warning.Text = "Mindgrapes on FIRE!!!"
		end
	else
		player.PlayerGui.GrapeGUI.Frame.Frame.Warning.TextColor = BrickColor.new("Hot pink")
		player.PlayerGui.GrapeGUI.Frame.Frame.Warning.Text = "Mindgrapes Ok..."
	end
end

local h = script.Parent:FindFirstChild("Humanoid")

if (h == nil) then sepuku() end

local oldSpeed = h.WalkSpeed
h.WalkSpeed = h.WalkSpeed * 2

h.MaxHealth = h.MaxHealth * .25
if (h.Health > h.MaxHealth) then h.Health = h.MaxHealth end

local torso = script.Parent:FindFirstChild("Torso")

if (torso == nil) then sepuku() end

local head = script.Parent:FindFirstChild("Head")
if (head == nil) then head = torso end

local Hyper = Instance.new("Sound")
Hyper.SoundId = "http://www.roblox.com/asset/?id=16950418"
Hyper.Parent = head
Hyper.Volume = .5

grapeMe(h.Parent)

local played = false

while true do

	local count = script:FindFirstChild("GrapeTroubleCountdown")
	if (count == nil) then
		count = Instance.new("IntValue")
		count.Name = "GrapeTroubleCountdown"
		count.Value = 30
		count.Parent = h
	else
		count.Value = count.Value - 1
		if (count.Value < 0) then

			local sound = Instance.new("Sound")
			sound.SoundId = "rbxasset://sounds\\Rocket shot.wav"
			sound.Parent = head
			sound.Volume = 1
			sound:play()

			local e = Instance.new("Explosion")
			e.BlastRadius = 4
			e.Position = head.Position

			e.Parent = head

		else
			if (Hyper.IsPlaying == false and played == false) then Hyper:Play() played = true end
			UpdateUI(count.Value)
		end
	end

	wait(1)
end


Prompt: --Listen to seat enter/exit

Response:
print("Add seat")
local Enter,Exit = SeatingModule.AddSeat(driverSeat)
print("Seat added")
Enter.Name = "EnterEvent"
Enter.Parent = driverSeat
Exit.Name = "ExitEvent"
Exit.Parent = driverSeat

for i,v in pairs(AdditionalSeats) do
	if v then
		SeatingModule.AddSeat(v)
	end
end

local driverScriptClone = nil
local enterEvent = driverSeat:WaitForChild("EnterEvent")
local exitEvent = driverSeat:WaitForChild("ExitEvent")

enterEvent.Event:Connect(function(player)
	print("CAR SEAT ENTERED")
	driverScriptClone = driverScript:Clone()
	driverScriptClone.Name = "CurrentDriver"
	driverScriptClone.CarValue.Value = root
	driverScriptClone.Parent = player.Backpack
	driverScriptClone.Disabled = false
	driverScriptClone.RedressController.Disabled = false
	driverSeat:SetNetworkOwner(player)
end)

exitEvent.Event:Connect(function(player)
	if driverScriptClone then
		driverScriptClone:Destroy()
		driverSeat:SetNetworkOwner()
	end
end)


Prompt:
--CHEDSAPP!!!!!!
--rccbay.com ON TOP

Response:
script.Parent.OnServerEvent:Connect(function(player,rpm,main)
	main.HingeConstraint.AngularVelocity = rpm
end)


Prompt:
--[[
	Package link auto-generated by Rotriever
]]

Response:
local PackageIndex = script.Parent.Parent.Parent._Index

local Package = require(PackageIndex["InputType"]["InputType"])

return Package


Prompt: --[[ Public API ]]

Response:
--
function TouchJump:Enable()
	JumpButton.Visible = true
end

function TouchJump:Disable()
	JumpButton.Visible = false
	OnInputEnded()
end

function TouchJump:Create(parentFrame)
	if JumpButton then
		JumpButton:Destroy()
		JumpButton = nil
	end

	local isSmallScreen = parentFrame.AbsoluteSize.y <= 500
	local jumpButtonSize = isSmallScreen and 70 or 90

	JumpButton = Instance.new('ImageButton')
	JumpButton.Name = "JumpButton"
	JumpButton.Visible = false
	JumpButton.BackgroundTransparency = 1
	JumpButton.Image = TOUCH_CONTROL_SHEET
	JumpButton.ImageRectOffset = Vector2.new(176, 222)
	JumpButton.ImageRectSize = Vector2.new(174, 174)
	JumpButton.Size = UDim2.new(0, jumpButtonSize, 0, jumpButtonSize)
	JumpButton.Position = isSmallScreen and UDim2.new(1, jumpButtonSize * -2.25, 1, -jumpButtonSize - 20) or
		UDim2.new(1, jumpButtonSize * -2.75, 1, -jumpButtonSize - 120)

	local touchObject = nil
	local function doJumpLoop()
		local character = LocalPlayer.Character
		if character then
			local humanoid = getHumanoid()
			if humanoid then
				while touchObject do
					humanoid.Jump = true
					wait(1/60)
				end
			end
		end
	end

	JumpButton.InputBegan:connect(function(inputObject)
		if touchObject or inputObject.UserInputType ~= Enum.UserInputType.Touch then
			return
		end

		touchObject = inputObject
		JumpButton.ImageRectOffset = Vector2.new(0, 222)
		doJumpLoop()
	end)

	OnInputEnded = function()
		touchObject = nil
		JumpButton.ImageRectOffset = Vector2.new(176, 222)
	end

	JumpButton.InputEnded:connect(function(inputObject)
		if inputObject == touchObject then
			OnInputEnded()
		end
	end)

	JumpButton.Parent = parentFrame
end

return TouchJump


Prompt: --Weld stuff here

Response:
MakeWeld(car.Misc.Wheel.A,car.DriveSeat,"Motor",.5).Name="W"
ModelWeld(car.Misc.Wheel.Parts,car.Misc.Wheel.A)

car.DriveSeat.ChildAdded:connect(function(child)
	if child.Name=="SeatWeld" and child:IsA("Weld") and game.Players:GetPlayerFromCharacter(child.Part1.Parent)~=nil then
		child.C0=CFrame.new(0,-.5,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0)*CFrame.Angles(math.rad(13),0,0)
	end
end)


Prompt:
-- RemoteSignal
-- Stephen Leitnick
-- December 20, 2021

Response:
local Players = game:GetService("Players")

local Signal = require(script.Parent.Parent.Parent.Signal)
local Types = require(script.Parent.Parent.Types)


Prompt:
--[[ INSTRUCTIONS
- Place in the model you want to auto weld all contents to.
- That's it. It will weld the model and all children.
--]]
-- This script is designed to be used is a regular script. In a local script it will not handle ancestory changes!!


Prompt: --------------| SYSTEM SETTINGS |--------------

Response:
Prefix				= ";";			-- The character you use before every command (e.g. ';jump me').
SplitKey 			= " ";			-- The character inbetween command arguments (e.g. setting it to '/' would change ';jump me' to ';jump/me').
BatchKey 			= "";			-- The character inbetween batch commands (e.g. setting it to '|' would change ';jump me ;fire me ;smoke me' to ';jump me | ;fire me | ;smoke me'
QualifierBatchKey 	= ",";			-- The character used to split up qualifiers (e.g. ;jump player1,player2,player3)

Theme				= "Blue";		-- The default UI theme.
NoticeSoundId		= 2865227271;	-- The SoundId for notices.
NoticeVolume		= 0.1;			-- The Volume for notices.
NoticePitch			= 1;			-- The Pitch/PlaybackSpeed for notices.
ErrorSoundId		= 2865228021;	-- The SoundId for error notifications.
ErrorVolume			= 0.1;			-- The Volume for error notifications.
ErrorPitch			= 1;			-- The Pitch/PlaybackSpeed for error notifications.
AlertSoundId		= 9161622880;	-- The SoundId for alerts.
AlertVolume			= 0.5;			-- The Volume for alerts.
AlertPitch			= 1;			-- The Pitch/PlaybackSpeed for alerts.

WelcomeBadgeId		= 0;			-- Award new players a badge, such as 'Welcome to the game!'. Set to 0 for no badge.

CommandDebounce		= true;			-- Wait until the command effect is over to use again. Helps to limit abuse & lag. Set to 'false' to disable.
SaveRank			= true;			-- Saves a player's rank in the server they received it. (e.g. ;rank plrName rank). Use ';permRank plrName rank' to permanently save a rank. Set to 'false' to disable.
LoopCommands		= 3;			-- The minimum rank required to use LoopCommands.
MusicList 			= {};	-- Songs which automatically appear in a user's radio. Type '!radio' to display the radio.

ThemeColors = {						-- The colours players can set their HD Admin UI (in the 'Settings' menu). | Format: {ThemeName, ThemeColor3Value};
	{"Red", 	Color3.fromRGB(150, 0, 0),		};
	{"Orange", 	Color3.fromRGB(150, 75, 0),		};
	{"Brown", 	Color3.fromRGB(120, 80, 30),	};
	{"Yellow", 	Color3.fromRGB(130, 120, 0),	};
	{"Green", 	Color3.fromRGB(0, 120, 0),		};
	{"Blue", 	Color3.fromRGB(0, 100, 150),	};
	{"Purple", 	Color3.fromRGB(100, 0, 150),	};
	{"Pink",	Color3.fromRGB(150, 0, 100),	};
	{"Black", 	Color3.fromRGB(60, 60, 60),		};
};

Colors = {							-- The colours for ChatColors and command arguments. | Format: {"ShortName", "FullName", Color3Value};
	{"r", 		"Red",		 		Color3.fromRGB(255, 0, 0)		};
	{"o", 		"Orange",	 		Color3.fromRGB(250, 100, 0)		};
	{"y", 		"Yellow",			Color3.fromRGB(255, 255, 0)		};
	{"g", 		"Green"	,			Color3.fromRGB(0, 255, 0)		};
	{"dg", 		"DarkGreen"	, 		Color3.fromRGB(0, 125, 0)		};
	{"b", 		"Blue",		 		Color3.fromRGB(0, 255, 255)		};
	{"db", 		"DarkBlue",			Color3.fromRGB(0, 50, 255)		};
	{"p", 		"Purple",	 		Color3.fromRGB(150, 0, 255)		};
	{"pk",		"Pink",		 		Color3.fromRGB(255, 85, 185)	};
	{"bk",		"Black",		 	Color3.fromRGB(0, 0, 0)			};
	{"w",		"White",	 		Color3.fromRGB(255, 255, 255)	};
};
ChatColors = {						-- The colour a player's chat will appear depending on their rank. '["Owner"] = "Yellow";' makes the owner's chat yellow.
	[5] 		= "Yellow";
};

Cmdbar						= 1;			-- The minimum rank required to use the Cmdbar.
Cmdbar2						= 3;			-- The minimum rank required to use the Cmdbar2.
ViewBanland					= 3;			-- The minimum rank required to view the banland.
OnlyShowUsableCommands		= false;		-- Only display commands equal to or below the user's rank on the Commands page.
RankRequiredToViewPage		= {				-- || The pages on the main menu ||
	["Commands"]		= 0;
	["Admin"]			= 0;
	["Settings"]		= 0;
};
RankRequiredToViewRank		= {				-- || The rank categories on the 'Ranks' subPage under Admin ||
	["Owner"]			= 0;
	["HeadAdmin"]		= 0;
	["Admin"]			= 0;
	["Mod"]				= 0;
	["VIP"]				= 0;
};
RankRequiredToViewRankType	= {				-- || The collection of loader-rank-rewarders on the 'Ranks' subPage under Admin ||
	["Owner"]			= 0;
	["SpecificUsers"]	= 5;
	["Gamepasses"] 		= 0;
	["Assets"] 			= 0;
	["Groups"] 			= 0;
	["Friends"] 		= 0;
	["FreeAdmin"] 		= 0;
	["VipServerOwner"] 	= 0;
};
RankRequiredToViewIcon		= 0;

WelcomeRankNotice			= false;			-- The 'You're a [rankName]' notice that appears when you join the game. Set to false to disable.
WelcomeDonorNotice			= false;			-- The 'You're a Donor' notice that appears when you join the game. Set to false to disable.
WarnIncorrectPrefix			= false;			-- Warn the user if using the wrong prefix | "Invalid prefix! Try using [correctPrefix][commandName] instead!"
DisableAllNotices			= false;		-- Set to true to disable all HD Admin notices.

ScaleLimit					= 4;			-- The maximum size players with a rank lower than 'IgnoreScaleLimit' can scale theirself. For example, players will be limited to ;size me 4 (if limit is 4) - any number above is blocked.
IgnoreScaleLimit			= 3;			-- Any ranks equal or above this value will ignore 'ScaleLimit'
CommandLimits				= {				-- Enables you to set limits for commands which have a number argument. Ranks equal to or higher than 'IgnoreLimit' will not be affected by Limit.
	["fly"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["fly2"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["noclip"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["noclip2"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["speed"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["jumpPower"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
};

VIPServerCommandBlacklist	= {"permRank", "permBan", "globalAnnouncement"};	-- Commands players are probihited from using in VIP Servers.
GearBlacklist				= {67798397};	-- The IDs of gear items to block when using the ;gear command.
IgnoreGearBlacklist			= 4;			-- The minimum rank required to ignore the gear blacklist.

PlayerDataStoreVersion		= "V1.0";		-- Data about the player (i.e. permRanks, custom settings, etc). Changing the Version name will reset all PlayerData.
SystemDataStoreVersion		= "V1.0";		-- Data about the game (i.e. the banland, universal message system, etc). Changing the Version name will reset all SystemData.

CoreNotices					= {				-- Modify core notices. You can find a table of all CoreNotices under [MainModule > Client > SharedModules > CoreNotices]
	--NoticeName = NoticeDetails;
};


Prompt: --// Remote(s)

Response:
local remoteFold = rp.remoteFold

local module = {}

module.db = function(db, plr)
	if Players:FindFirstChild(plr) then
		plr.CharacterAdded:Connect(function(char)
			db = false

		end)

		plr.CharacterRemoving:Connect(function(char)
			db = false
			--remoteFold['CharRemoving']:FireClient(Players:GetPlayerFromCharacter(char), {plr = Players:GetPlayerFromCharacter(char)})
		end)
	end

	return db
end

return module


Prompt: --Makes the cat randomly walk every 1 second--

Response:
while true do
	wait(1)
	Goal = Vector3.new(math.random(-255, 255), math.random(-255, 255), math.random(-255, 255))
	print("Cat is walking to: " .. tostring(Goal))

	script.Parent.Humanoid:MoveTo(Goal)
end


Prompt: -- An object which stores a piece of reactive state.

Response:
export type StateObject<T> = Dependency & {
	type: string, -- replace with "State" when Luau supports singleton types
	kind: string,
	get: (StateObject<T>, asDependency: boolean?) -> T
}


Prompt:
--[=[
	@within TableUtil
	@function SwapRemoveFirstValue
	@param tbl table -- Array
	@param v any -- Value to find
	@return number?

	Performs `table.find(tbl, v)` to find the index of the given
	value, and then performs `TableUtil.SwapRemove` on that index.

	```lua
	local t = {"A", "B", "C", "D", "E"}
	TableUtil.SwapRemoveFirstValue(t, "C")
	print(t) --> {"A", "B", "E", "D"}
	```

	:::note Arrays only
	This function works on arrays, but not dictionaries.
]=]

Response:
local function SwapRemoveFirstValue(t: Table, v: any): number?
	local index: number? = table.find(t, v)
	if index then
		SwapRemove(t, index)
	end
	return index
end


Prompt: -- Set up the mouse enter and leave event handlers for each button

Response:
local function onButtonEnter(button)
	local sizeTweenInfo = TweenInfo.new(tweenDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
	local sizeTween = game:GetService("TweenService"):Create(button, sizeTweenInfo, {
		Size = UDim2.new(button.Size.X.Scale * magnificationScale, button.Size.X.Offset,
			button.Size.Y.Scale * magnificationScale, button.Size.Y.Offset)
	})
	click:Play()
	sizeTween:Play()

	local positionTweenInfo = TweenInfo.new(tweenDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
	local positionTween = game:GetService("TweenService"):Create(button, positionTweenInfo, {
		Position = UDim2.new(button.Position.X.Scale - ((magnificationScale - 1) / 2),
			button.Position.X.Offset, button.Position.Y.Scale - ((magnificationScale - 1) / 2),
			button.Position.Y.Offset)
	})
	positionTween:Play()
end

local function onButtonLeave(button)
	local sizeTweenInfo = TweenInfo.new(tweenDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
	local sizeTween = game:GetService("TweenService"):Create(button, sizeTweenInfo, {
		Size = originalSizes[button]
	})
	sizeTween:Play()

	local positionTweenInfo = TweenInfo.new(tweenDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
	local positionTween = game:GetService("TweenService"):Create(button, positionTweenInfo, {
		Position = originalPositions[button]
	})
	positionTween:Play()
end


Prompt:
--[[
	Setup all canvases and initialize all spots within a canvas. We perform the following:

	1. Create a new Canvas object for each tagged model
	2. Create Spot objects, set event callbacks, and register them with the canvas object
	3. Set associated attributes on models so clients can easily initialize UI to listen to
			the correct IDs
]]

Response:
return function(contexts, services, remoteEvents)
	local CollectionService = services.CollectionService

	local canvases = contexts.canvases

	-- TODO: This should be injected instead for testability purposes,
	-- handle this in another PR
	local config = configuration.getValues()

	-- Initialize all objects to keep track of canvases in the world
	local spotsPerCanvas = config.rowsPerCanvas * config.colsPerCanvas
	for _, model in ipairs(CollectionService:GetTagged(constants.Tags.SurfaceCanvas)) do
		local canvas = Canvas.new()

		-- Register spots with the canvas
		local spots = {}
		for i = 1, spotsPerCanvas do
			local spot = Spot.new()
			spot.onArtChanged = function(artId, ownerUserId)
				remoteEvents.SpotChanged:FireAllClients(canvas.id, spot.id, artId, ownerUserId)
			end

			model:SetAttribute(constants.Attributes.SpotIdPrefix .. i, spot.id)
			table.insert(spots, spot)
		end
		canvas:registerSpots(spots)

		model:SetAttribute(constants.Attributes.SurfaceCanvasId, canvas.id)
		canvases[canvas.id] = canvas
	end
end


Prompt: --Made by Luckymaxer

Response:
Tool = script.Parent

Players = game:GetService("Players")

Player = Players.LocalPlayer

Icons = {
	Normal = "rbxasset://textures/GunCursor.png",
	Reloading = "rbxasset://textures/GunWaitCursor.png"
}

ToolEquipped = false

function UpdateIcon()
	if Mouse and ToolEquipped then
		Mouse.Icon = (((Tool.Enabled and (Mouse.Icon == Icons.Reloading or Mouse.Icon == "")) and Icons.Normal) or ((not Tool.Enabled and (Mouse.Icon == Icons.Normal or Mouse.Icon == "")) and Icons.Reloading) or Mouse.Icon)
	end
end

function Equipped()
	ToolEquipped = true
	Mouse = Player:GetMouse()
	MouseChanged = Mouse.Changed:connect(Changed)
	UpdateIcon()
end

function Unequipped()
	ToolEquipped = false
	Mouse.Icon = ""
	if MouseChanged then
		MouseChanged:disconnect()
	end
end

function Changed(Property)
	if Property == "Enabled" or (Property == "Icon" and Mouse.Icon == "") then
		UpdateIcon()
	end
end

Tool.Changed:connect(Changed)

Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)


Prompt:
--Still Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill
--Still Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill
--Still Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill till Chill


Prompt: -- Do not touch unless you know what you're doing.

Response:
game.Workspace.Test1.Touched:Connect(function(hit)
	local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
	if plr then
		game.ReplicatedStorage.Cutscene:FireClient(plr)
	end
end)


Prompt: --script.Parent.Menu.Visible=false

Response:
while not player.newPlayer do
	print('wait')
	wait()
end

wait(0.5)
if player.newPlayer.Value then
	-- новый
	script.Parent.History.Visible=true


Prompt: --|| VARIABLES ||--

Response:
local Player = Players.LocalPlayer
local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")

local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
local Torso = Character:WaitForChild("Torso")

local RootJoint = HumanoidRootPart.RootJoint
local LeftHipJoint = Torso["Left Hip"]
local RightHipJoint = Torso["Right Hip"]

local function Lerp(a, b, c)
	return a + (b - a) * c
end

local Force = nil
local Direction = nil
local Value1 = 0
local Value2 = 0

local RootJointC0 = RootJoint.C0
local LeftHipJointC0 = LeftHipJoint.C0
local RightHipJointC0 = RightHipJoint.C0

RunService.RenderStepped:Connect(function()
	Force = HumanoidRootPart.Velocity * Vector3.new(1/16,0,1/16)
	Direction = Force
	Value1 = HumanoidRootPart.CFrame.RightVector:Dot(Direction)
	Value2 = HumanoidRootPart.CFrame.LookVector:Dot(Direction)
	RootJoint.C0 = RootJoint.C0:Lerp(RootJointC0 * CFrame.Angles(math.rad(Value2 * 5), math.rad(-Value1 * 5), 0), 0.2)
end)


Prompt: -- скрипт по выравниванию кнопок

Response:
me = script.Parent	-- форма кнопок
wnd = me.Parent		-- главное окно
ui=me.Frame.UI
sample=script.Sample:Clone()

local tmp = me:GetChildren()
local button=0	-- количество кнопок
for i,img in pairs(tmp) do
	str=string.sub(img.Name,1,3)
	if str =="img" then
		button=button+1
	end
end

sizeX=me.AbsoluteSize.X				--script.Sample.AbsoluteSize.X
sizeY=script.Sample.AbsoluteSize.Y
if sizeX>sizeY then
	sizeY=sizeX
else
	sizeX=sizeY
end

anchor=Vector2.new(0.5,0.5)

for i,img in pairs(tmp) do
	str=string.sub(img.Name,1,3)
	if str =="img" then
		smp=sample:Clone()
		smp.Size=UDim2.new(0,sizeX,0,sizeY)

		local btn=img
		btn.AnchorPoint=anchor
		btn.Position=UDim2.new(0.5,0,0.5,0)
		btn.Size=UDim2.new(0.7,0,0.8,0)
		btn.Parent=smp
		smp.Parent=me.Frame
	end
end


Prompt: -- Connections --

Response:
Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAdded:Connect(OnCharacterAdded)
end)

Players.LocalPlayer.CharacterAdded:Connect(OnCharacterAdded)

for Index, Player in pairs(Players:GetPlayers()) do
	if (Player ~= Players.LocalPlayer) then
		OnCharacterAdded(Player.Character)
		Player.CharacterAdded:Connect(OnCharacterAdded)
	end
end