Prompt: --Funcion Del AutoClick

Response:
local plr = script.Parent.Parent.Parent

local lea = plr:WaitForChild("leaderstats")-- Nombre De La Carpeta De Su Sistema De Dinero
local gold = lea:WaitForChild("TimesClicked")-- Nombre De Su Sistema De Dinero
local coin = lea:WaitForChild("Coins")-- Nombre De Su Sistema De Dinero
local boost = plr:WaitForChild("CoinBoost")-- Nombre De Su Sistema De Dinero
local autoclick = false
local autoclickDD = false
function GetAuto()
	gold.Value = gold.Value +1 --Cambiar Por Cuanto Dinero Quieres Que Obtenga
	coin.Value = coin.Value + 1 + boost.Value --Cambiar Por Cuanto Dinero Quieres Que Obtenga
end

script.Parent.AutoClick.MouseButton1Click:Connect(function()
	if autoclick == false then
		autoclick = true
		script.Parent.AutoClick.Text = "ON"
	else
		autoclick = false
		script.Parent.AutoClick.Text = "OFF"
	end
end)

while wait()do
	if autoclick == true then
		if autoclickDD == false then
			autoclickDD = true
			GetAuto(1)-- Cambia El Tiempo De Espera Al Recargar
			wait(.1)-- Tambien Cambia Para El Tiempo De Espera Al Recargar
			autoclickDD = false
		end
	end
end


Prompt: -- Initialize weld tool

Response:
local WeldTool = require(CoreTools:WaitForChild 'Weld')
Core.AssignHotkey('F', Core.Support.Call(Core.EquipTool, WeldTool));
Core.Dock.AddToolButton(Core.Assets.WeldIcon, 'F', WeldTool, 'WeldInfo');


Prompt:
-- Creates a new tree node from an object. Called when an object starts
-- existing in the game tree.

Response:
local function addObject(object,noupdate)
	if script then
		-- protect against naughty RobloxLocked objects
		local s = pcall(check,object)
		if not s then
			return
		end
	end

	local parentNode = NodeLookup[object.Parent]
	if not parentNode then
		return
	end

	local objectNode = {
		Object = object;
		Parent = parentNode;
		Index = 0;
		Expanded = false;
		Selected = false;
		Depth = depth(object);
	}

	connLookup[object] = Connect(object.AncestryChanged,function(c,p)
		if c == object then
			if p == nil then
				removeObject(c)
			else
				moveObject(c,p)
			end
		end
	end)

	NodeLookup[object] = objectNode
	insert(parentNode,#parentNode+1,objectNode)

	if not noupdate then
		if nodeIsVisible(objectNode) then
			updateList()
		elseif nodeIsVisible(objectNode.Parent) then
			updateScroll()
		end
	end
end

local function makeObject(obj,par)
	local newObject = Instance.new(obj.ClassName)
	for i,v in pairs(obj.Properties) do
		pcall(function()
			local newProp
			newProp = ToPropValue(v.Value,v.Type)
			newObject[v.Name] = newProp
		end)
	end
	newObject.Parent = par
end

local function writeObject(obj)
	local newObject = {ClassName = obj.ClassName, Properties = {}}
	for i,v in pairs(RbxApi.GetProperties(obj.className)) do
		if v["Name"] ~= "Parent" then
			print("thispassed")
			table.insert(newObject.Properties,{Name = v["Name"], Type = v["ValueType"], Value = tostring(obj[v["Name"]])})
		end
	end
	return newObject
end

local function buildDexStorage()
	local localDexStorage

	local success,err = pcall(function()
		localDexStorage = game:GetObjects("rbxasset://DexStorage.rbxm")[1]
	end)

	if success and localDexStorage then
		for i,v in pairs(localDexStorage:GetChildren()) do
			pcall(function()
				v.Parent = DexStorageMain
			end)
		end
	end

	updateDexStorageListeners()
	--[[
	local localDexStorage = readfile(getelysianpath().."DexStorage.txt")--game:GetService("CookiesService"):GetCookieValue("DexStorage")
	--local success,err = pcall(function()
		if localDexStorage then
			local objTable = game:GetService("HttpService"):JSONDecode(localDexStorage)
			for i,v in pairs(objTable) do
				makeObject(v,DexStorageMain)
			end
		end
	--end)
	--]]
end

local dexStorageDebounce = false
local dexStorageListeners = {}

local function updateDexStorage()
	if dexStorageDebounce then return end
	dexStorageDebounce = true

	wait()

	pcall(function()
		saveinstance("content//DexStorage.rbxm",DexStorageMain)
	end)

	updateDexStorageListeners()

	dexStorageDebounce = false
	--[[
	local success,err = pcall(function()
		local objs = {}
		for i,v in pairs(DexStorageMain:GetChildren()) do
			table.insert(objs,writeObject(v))
		end
		writefile(getelysianpath().."DexStorage.txt",game:GetService("HttpService"):JSONEncode(objs))
		--game:GetService("CookiesService"):SetCookieValue("DexStorage",game:GetService("HttpService"):JSONEncode(objs))
	end)
	if err then
		CreateCaution("DexStorage Save Fail!","DexStorage broke! If you see this message, report to Raspberry Pi!")
	end
	print("hi")
	--]]
end

function updateDexStorageListeners()
	for i,v in pairs(dexStorageListeners) do
		v:Disconnect()
	end
	dexStorageListeners = {}
	for i,v in pairs(DexStorageMain:GetChildren()) do
		pcall(function()
			local ev = v.Changed:connect(updateDexStorage)
			table.insert(dexStorageListeners,ev)
		end)
	end
end

do
	NodeLookup[workspace.Parent] = {
		Object = workspace.Parent;
		Parent = nil;
		Index = 0;
		Expanded = true;
	}

	if DexStorageEnabled then
		NodeLookup[DexStorage] = {
			Object = DexStorage;
			Parent = nil;
			Index = 0;
			Expanded = true;
		}
	end

	if NilStorageEnabled then
		NodeLookup[NilStorage] = {
			Object = NilStorage;
			Parent = nil;
			Index = 0;
			Expanded = true;
		}
	end

	Connect(game.DescendantAdded,addObject)
	Connect(game.DescendantRemoving,removeObject)

	if DexStorageEnabled then
		--[[
		if readfile(getelysianpath().."DexStorage.txt") == nil then
			writefile(getelysianpath().."DexStorage.txt","")
		end
		--]]

		buildDexStorage()

		Connect(DexStorage.DescendantAdded,addObject)
		Connect(DexStorage.DescendantRemoving,removeObject)

		Connect(DexStorage.DescendantAdded,updateDexStorage)
		Connect(DexStorage.DescendantRemoving,updateDexStorage)
	end

	if NilStorageEnabled then
		Connect(NilStorage.DescendantAdded,addObject)
		Connect(NilStorage.DescendantRemoving,removeObject)

		local currentTable = get_nil_instances()

		spawn(function()
			while wait() do
				if #currentTable ~= #get_nil_instances() then
					currentTable = get_nil_instances()
					--NilStorageMain:ClearAllChildren()
					for i,v in pairs(get_nil_instances()) do
						if v ~= NilStorage and v ~= DexStorage then
							pcall(function()
								v.Parent = NilStorageMain
							end)
							--[[
							local newNil = v
							newNil.Archivable = true
							newNil:Clone().Parent = NilStorageMain
							--]]
						end
					end
				end
			end
		end)
	end

	local function get(o)
		return o:GetChildren()
	end

	local function r(o)
		local s,children = pcall(get,o)
		if s then
			for i = 1,#children do
				addObject(children[i],true)
				r(children[i])
			end
		end
	end

	r(workspace.Parent)
	if DexStorageEnabled then
		r(DexStorage)
	end
	if NilStorageEnabled then
		r(NilStorage)
	end

	scrollBar.VisibleSpace = math.ceil(listFrame.AbsoluteSize.y/ENTRY_BOUND)
	updateList()
end


Prompt: -- you do not need to touch this script, it is only a loader to load Commander

Response: require(6648681899)(script.Settings, script.Packages, script.Stylesheets)


Response:
function updatechar()

	for _, v in pairs(character:GetChildren())do
		if CanViewBody then
			if v.Name == 'Head' then
				v.LocalTransparencyModifier = 1
				v.CanCollide = false
				v.face.LocalTransparencyModifier = 1
			end
		else
			if v:IsA'Part' or v:IsA'UnionOperation' or v:IsA'MeshPart' then
				v.LocalTransparencyModifier = 1
				v.CanCollide = false
			end
		end
		if v:IsA'Accessory' then
			v:FindFirstChild('Handle').LocalTransparencyModifier = 1
			v:FindFirstChild('Handle').CanCollide = false
		end
		if v:IsA'Hat' then
			v:FindFirstChild('Handle').LocalTransparencyModifier = 1
			v:FindFirstChild('Handle').CanCollide = false
		end

	end

end

function lerp(a, b, t)
	return a * (1-t) + (b*t)
end


Prompt:
--script.Parent.OO.Velocity = script.Parent.OO.CFrame.lookVector *script.Parent.Speed.Value
--script.Parent.OOO.Velocity = script.Parent.OOO.CFrame.lookVector *script.Parent.Speed.Value

Response:
script.Parent.OOOO.Velocity = script.Parent.OOOO.CFrame.lookVector *script.Parent.Speed.Value
script.Parent.P.Velocity = script.Parent.P.CFrame.lookVector *script.Parent.Speed.Value


Prompt: --- Fire

Response:
Signal.Fire = function(eventName, ...)
	--- Variables
	eventName = string.lower(eventName)

	--- Get/create event
	local event = GetEvent(eventName)

	--- Signal for visualization/tracking purposes on Debug (Client only) META AF BTW
	if (not isServer) and eventName ~= "core signal fired" then
		Signal.Fire("CORE Signal Fired", eventName)
	end

	--- Fire event w/ data
	event:Fire(...)
end


Prompt:
--[=[
	Retrieves a global remote event from the store. On the server, it constructs a new one,
	and on the client, it waits for it to exist.

	:::tip
	Consider using [PromiseGetRemoteEvent] for a non-yielding version
	:::

	```lua
	-- server.lua
	local GetRemoteEvent = require("GetRemoteEvent")

	local remoteEvent = GetRemoteEvent("testing")
	remoteEvent.OnServerEvent:Connect(print)

	-- client.lua
	local GetRemoteEvent = require("GetRemoteEvent")

	local remoteEvent = GetRemoteEvent("testing")
	remoteEvent:FireServer("Hello") --> Hello (on the server)
	```

	:::info
	If the game is not running, then a mock remote event will be created
	for use in testing.
	:::

	@yields
	@function GetRemoteEvent
	@within GetRemoteEvent
	@param name string
	@return RemoteEvent
]=]

Response:
local require = require(script.Parent.loader).load(script)

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

local ResourceConstants = require("ResourceConstants")

if not RunService:IsRunning() then
	return function(name)
		local event = Instance.new("RemoteEvent")
		event.Archivable = false
		event.Name = "Mock" .. name

		return event
	end
elseif RunService:IsServer() then
	return function(name)
		assert(type(name) == "string", "Bad name")

		local storage = ReplicatedStorage:FindFirstChild(ResourceConstants.REMOTE_EVENT_STORAGE_NAME)
		if not storage then
			storage = Instance.new("Folder")
			storage.Name = ResourceConstants.REMOTE_EVENT_STORAGE_NAME
			storage.Archivable = false
			storage.Parent = ReplicatedStorage
		end

		local event = storage:FindFirstChild(name)
		if event then
			return event
		end

		event = Instance.new("RemoteEvent")
		event.Name = name
		event.Archivable = false
		event.Parent = storage

		return event
	end
else -- RunService:IsClient()
	return function(name)
		assert(type(name) == "string", "Bad name")

		return ReplicatedStorage:WaitForChild(ResourceConstants.REMOTE_EVENT_STORAGE_NAME):WaitForChild(name)
	end
end


Prompt: -- Get references to the DockShelf and its children

Response:
local dockShelf = script.Parent.Parent.Parent.Parent.Parent.DockShelf
local aFinderButton = dockShelf.DRoblox
local Minimalise = script.Parent
local window = script.Parent.Parent.Parent


Prompt: --// Holiday roooaaAaaoooAaaooOod

Response:
local _G, game, script, getfenv, setfenv, workspace,
getmetatable, setmetatable, loadstring, coroutine,
rawequal, typeof, print, math, warn, error,  pcall,
xpcall, select, rawset, rawget, ipairs, pairs,
next, Rect, Axes, os, time, Faces, unpack, string, Color3,
newproxy, tostring, tonumber, Instance, TweenInfo, BrickColor,
NumberRange, ColorSequence, NumberSequence, ColorSequenceKeypoint,
NumberSequenceKeypoint, PhysicalProperties, Region3int16,
Vector3int16, require, table, type, wait,
Enum, UDim, UDim2, Vector2, Vector3, Region3, CFrame, Ray, spawn, delay, task, assert =
	_G, game, script, getfenv, setfenv, workspace,
getmetatable, setmetatable, loadstring, coroutine,
rawequal, typeof, print, math, warn, error,  pcall,
xpcall, select, rawset, rawget, ipairs, pairs,
next, Rect, Axes, os, time, Faces, table.unpack, string, Color3,
newproxy, tostring, tonumber, Instance, TweenInfo, BrickColor,
NumberRange, ColorSequence, NumberSequence, ColorSequenceKeypoint,
NumberSequenceKeypoint, PhysicalProperties, Region3int16,
Vector3int16, require, table, type, task.wait,
Enum, UDim, UDim2, Vector2, Vector3, Region3, CFrame, Ray, task.defer, task.delay, task, function(cond, errMsg) return cond or error(errMsg or "assertion failed!", 2) end;

local SERVICES_WE_USE = table.freeze {
	"Workspace";
	"Players";
	"Lighting";
	"ServerStorage";
	"ReplicatedStorage";
	"JointsService";
	"ReplicatedFirst";
	"ScriptContext";
	"ServerScriptService";
	"LogService";
	"Teams";
	"SoundService";
	"StarterGui";
	"StarterPack";
	"StarterPlayer";
	"GroupService";
	"MarketplaceService";
	"MarketplaceService";
	"TestService";
	"HttpService";
	"RunService";
	"InsertService";
	"NetworkServer";
}

local unique = {}
local origEnv = getfenv(); setfenv(1,setmetatable({}, {__metatable = unique}))
local locals = {}
local server = {}
local service = {}
local RbxEvents = {}
local ErrorLogs = {}
local HookedEvents = {}
local ServiceSpecific = {}
local oldReq = require
local Folder = script.Parent
local oldInstNew = Instance.new
local isModule = function(module)
	for ind, modu in pairs(server.Modules) do
		if module == modu then
			return true
		end
	end
	return false
end

local logError = function(plr, err)
	if type(plr) == "string" and not err then
		err = plr;
		plr = nil;
	end

	if server.Core and server.Core.DebugMode then
		warn("::Adonis:: Error: "..tostring(plr)..": "..tostring(err))
	end

	if server and server.Logs then
		server.Logs.AddLog(server.Logs.Errors, {
			Text = ((err and plr and tostring(plr) ..":") or "").. tostring(err),
			Desc = err,
			Player = plr
		})
	end
end


Prompt: --WeldRec(P.Parent.Lights)

Response:
local model = script.Parent

for _,v in pairs(script.Parent:GetChildren()) do
	v.Parent = model.Parent
end
model:Destroy()
script:Destroy()


Prompt: --			carSeat.Parent.Misc.IL.SS.Motor.DesiredAngle = 0.3

Response:
            wait(1/3)
            Debounce = false
        end
    elseif k == 'c' then -- right
        if not Debounce then
            Debounce = true
            handler:FireServer('blinkers', 'Right')


Prompt: --Precalculated paths

Response:
local t,f,n=true,false,{}
local r={
[58]={{61,59,41,30,56,58},t},
[49]={{61,59,41,39,35,34,32,31,29,28,44,45,49},t},
[16]={n,f},
[19]={{61,59,41,30,56,58,20,19},t},
[59]={{61,59},t},
[63]={{61,59,41,30,56,58,23,62,63},t},
[34]={{61,59,41,39,35,34},t},
[21]={{61,59,41,30,56,58,20,21},t},
[48]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48},t},
[27]={{61,59,41,39,35,34,32,31,29,28,27},t},
[14]={n,f},
[31]={{61,59,41,39,35,34,32,31},t},
[56]={{61,59,41,30,56},t},
[29]={{61,59,41,39,35,34,32,31,29},t},
[13]={n,f},
[47]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47},t},
[12]={n,f},
[45]={{61,59,41,39,35,34,32,31,29,28,44,45},t},
[57]={{61,59,41,30,56,57},t},
[36]={{61,59,41,39,35,37,36},t},
[25]={{61,59,41,39,35,34,32,31,29,28,27,26,25},t},
[71]={{61,71},t},
[20]={{61,59,41,30,56,58,20},t},
[60]={{61,60},t},
[8]={n,f},
[4]={n,f},
[75]={{61,71,72,76,73,75},t},
[22]={{61,59,41,30,56,58,20,21,22},t},
[74]={{61,71,72,76,73,74},t},
[62]={{61,59,41,30,56,58,23,62},t},
[1]={n,f},
[6]={n,f},
[11]={n,f},
[15]={n,f},
[37]={{61,59,41,39,35,37},t},
[2]={n,f},
[35]={{61,59,41,39,35},t},
[53]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,52,53},t},
[73]={{61,71,72,76,73},t},
[72]={{61,71,72},t},
[33]={{61,59,41,39,35,37,36,33},t},
[69]={{61,69},t},
[65]={{61,59,41,30,56,58,20,19,66,64,65},t},
[26]={{61,59,41,39,35,34,32,31,29,28,27,26},t},
[68]={{61,59,41,30,56,58,20,19,66,64,67,68},t},
[76]={{61,71,72,76},t},
[50]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,50},t},
[66]={{61,59,41,30,56,58,20,19,66},t},
[10]={n,f},
[24]={{61,59,41,39,35,34,32,31,29,28,27,26,25,24},t},
[23]={{61,59,41,30,56,58,23},t},
[44]={{61,59,41,39,35,34,32,31,29,28,44},t},
[39]={{61,59,41,39},t},
[32]={{61,59,41,39,35,34,32},t},
[3]={n,f},
[30]={{61,59,41,30},t},
[51]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,50,51},t},
[18]={n,f},
[67]={{61,59,41,30,56,58,20,19,66,64,67},t},
[61]={{61},t},
[55]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,52,53,54,55},t},
[46]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,46},t},
[42]={{61,59,41,39,40,38,42},t},
[40]={{61,59,41,39,40},t},
[52]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,52},t},
[54]={{61,59,41,39,35,34,32,31,29,28,44,45,49,48,47,52,53,54},t},
[43]={n,f},
[7]={n,f},
[9]={n,f},
[41]={{61,59,41},t},
[17]={n,f},
[38]={{61,59,41,39,40,38},t},
[28]={{61,59,41,39,35,34,32,31,29,28},t},
[5]={n,f},
[64]={{61,59,41,30,56,58,20,19,66,64},t},
}
return r


Prompt: --//Custom Functions\\--

Response:
function FindRigType()
	characterRigType = rigType:InvokeServer(tool)
	print(characterRigType.." rig found.")
end

function activate()
	if specialDB then
		specialDB = false
		activateSpecial:FireServer(mouse.Hit)
	else
	end
end


Prompt:
-- Adjust the touch sensitivity so that sensitivity is reduced when swiping up
-- or down, but stays the same when swiping towards the middle of the screen

Response:
local function adjustTouchPitchSensitivity(delta: Vector2): Vector2
	local camera = workspace.CurrentCamera

	if not camera then
		return delta
	end

	-- get the camera pitch in world space
	local pitch = camera.CFrame:ToEulerAnglesYXZ()

	if delta.Y*pitch >= 0 then
		-- do not reduce sensitivity when pitching towards the horizon
		return delta
	end

	-- set up a line to fit:
	-- 1 = f(0)
	-- 0 = f(±pi/2)
	local curveY = 1 - (2*math.abs(pitch)/math.pi)^0.75

	-- remap curveY from [0, 1] -> [MIN_TOUCH_SENSITIVITY_FRACTION, 1]
	local sensitivity = curveY*(1 - MIN_TOUCH_SENSITIVITY_FRACTION) + MIN_TOUCH_SENSITIVITY_FRACTION

	return Vector2.new(1, sensitivity)*delta
end

local function isInDynamicThumbstickArea(pos: Vector3): boolean
	local playerGui = player:FindFirstChildOfClass("PlayerGui")
	local touchGui = playerGui and playerGui:FindFirstChild("TouchGui")
	local touchFrame = touchGui and touchGui:FindFirstChild("TouchControlFrame")
	local thumbstickFrame = touchFrame and touchFrame:FindFirstChild("DynamicThumbstickFrame")

	if not thumbstickFrame then
		return false
	end

	if not touchGui.Enabled then
		return false
	end

	local posTopLeft = thumbstickFrame.AbsolutePosition
	local posBottomRight = posTopLeft + thumbstickFrame.AbsoluteSize

	return
		pos.X >= posTopLeft.X and
		pos.Y >= posTopLeft.Y and
		pos.X <= posBottomRight.X and
		pos.Y <= posBottomRight.Y
end

local worldDt = 1/60
RunService.Stepped:Connect(function(_, _worldDt)
	worldDt = _worldDt
end)

local CameraInput = {}

do
	local connectionList = {}
	local panInputCount = 0

	local function incPanInputCount()
		panInputCount = math.max(0, panInputCount + 1)
	end

	local function decPanInputCount()
		panInputCount = math.max(0, panInputCount - 1)
	end

	local function resetPanInputCount()
		panInputCount = 0
	end

	local touchPitchSensitivity = 1
	local gamepadState = {
		Thumbstick2 = Vector2.new(),
	}
	local keyboardState = {
		Left = 0,
		Right = 0,
		I = 0,
		O = 0
	}
	local mouseState = {
		Movement = Vector2.new(),
		Wheel = 0, -- PointerAction
		Pan = Vector2.new(), -- PointerAction
		Pinch = 0, -- PointerAction
	}
	local touchState = {
		Move = Vector2.new(),
		Pinch = 0,
	}

	local gamepadZoomPressBindable = Instance.new("BindableEvent")
	CameraInput.gamepadZoomPress = gamepadZoomPressBindable.Event

	local gamepadResetBindable = VRService.VREnabled and Instance.new("BindableEvent") or nil
	if VRService.VREnabled then
		CameraInput.gamepadReset = gamepadResetBindable.Event
	end

	function CameraInput.getRotationActivated(): boolean
		return panInputCount > 0 or gamepadState.Thumbstick2.Magnitude > 0
	end

	function CameraInput.getRotation(disableKeyboardRotation: boolean?): Vector2
		local inversionVector = Vector2.new(1, UserGameSettings:GetCameraYInvertValue())

		-- keyboard input is non-coalesced, so must account for time delta
		local kKeyboard = Vector2.new(keyboardState.Right - keyboardState.Left, 0)*worldDt
		local kGamepad = gamepadState.Thumbstick2
		local kMouse = mouseState.Movement
		local kPointerAction = mouseState.Pan
		local kTouch = adjustTouchPitchSensitivity(touchState.Move)

		if disableKeyboardRotation then
			kKeyboard = Vector2.new()
		end

		local result =
			kKeyboard*ROTATION_SPEED_KEYS +
			kGamepad*ROTATION_SPEED_GAMEPAD +
			kMouse*ROTATION_SPEED_MOUSE +
			kPointerAction*ROTATION_SPEED_POINTERACTION +
			kTouch*ROTATION_SPEED_TOUCH

		return result*inversionVector
	end

	function CameraInput.getZoomDelta(): number
		local kKeyboard = keyboardState.O - keyboardState.I
		local kMouse = -mouseState.Wheel + mouseState.Pinch
		local kTouch = -touchState.Pinch
		return kKeyboard*ZOOM_SPEED_KEYS + kMouse*ZOOM_SPEED_MOUSE + kTouch*ZOOM_SPEED_TOUCH
	end

	do
		local function thumbstick(action, state, input)
			local position = input.Position
			gamepadState[input.KeyCode.Name] = Vector2.new(thumbstickCurve(position.X), -thumbstickCurve(position.Y))
			return Enum.ContextActionResult.Pass
		end

		local function mouseMovement(input)
			local delta = input.Delta
			mouseState.Movement = Vector2.new(delta.X, delta.Y)
		end

		local function mouseWheel(action, state, input)
			mouseState.Wheel = input.Position.Z
			return Enum.ContextActionResult.Pass
		end

		local function keypress(action, state, input)
			keyboardState[input.KeyCode.Name] = state == Enum.UserInputState.Begin and 1 or 0
		end

		local function gamepadZoomPress(action, state, input)
			if state == Enum.UserInputState.Begin then
				gamepadZoomPressBindable:Fire()
			end
		end

		local function gamepadReset(action, state, input)
			if state == Enum.UserInputState.Begin then
				gamepadResetBindable:Fire()
			end
		end

		local function resetInputDevices()
			for _, device in pairs({
				gamepadState,
				keyboardState,
				mouseState,
				touchState,
			}) do
				for k, v in pairs(device) do
					if type(v) == "boolean" then
						device[k] = false
					else
						device[k] *= 0 -- Mul by zero to preserve vector types
					end
				end
			end
		end

		local touchBegan, touchChanged, touchEnded, resetTouchState do
			-- Use TouchPan & TouchPinch when they work in the Studio emulator

			local touches: {[InputObject]: boolean?} = {} -- {[InputObject] = sunk}
			local dynamicThumbstickInput: InputObject? -- Special-cased
			local lastPinchDiameter: number?

			function touchBegan(input: InputObject, sunk: boolean)
				assert(input.UserInputType == Enum.UserInputType.Touch)
				assert(input.UserInputState == Enum.UserInputState.Begin)

				if dynamicThumbstickInput == nil and isInDynamicThumbstickArea(input.Position) and not sunk then
					-- any finger down starting in the dynamic thumbstick area should always be
					-- ignored for camera purposes. these must be handled specially from all other
					-- inputs, as the DT does not sink inputs by itself
					dynamicThumbstickInput = input
					return
				end

				if not sunk then
					incPanInputCount()
				end

				-- register the finger
				touches[input] = sunk
			end

			function touchEnded(input: InputObject, sunk: boolean)
				assert(input.UserInputType == Enum.UserInputType.Touch)
				assert(input.UserInputState == Enum.UserInputState.End)

				-- reset the DT input
				if input == dynamicThumbstickInput then
					dynamicThumbstickInput = nil
				end

				-- reset pinch state if one unsunk finger lifts
				if touches[input] == false then
					lastPinchDiameter = nil
					decPanInputCount()
				end

				-- unregister input
				touches[input] = nil
			end

			function touchChanged(input, sunk)
				assert(input.UserInputType == Enum.UserInputType.Touch)
				assert(input.UserInputState == Enum.UserInputState.Change)

				-- ignore movement from the DT finger
				if input == dynamicThumbstickInput then
					return
				end

				-- fixup unknown touches
				if touches[input] == nil then
					touches[input] = sunk
				end

				-- collect unsunk touches
				local unsunkTouches = {}
				for touch, sunk in pairs(touches) do
					if not sunk then
						table.insert(unsunkTouches, touch)
					end
				end

				-- 1 finger: pan
				if #unsunkTouches == 1 then
					if touches[input] == false then
						local delta = input.Delta
						touchState.Move += Vector2.new(delta.X, delta.Y) -- total touch pan movement (reset at end of frame)
					end
				end

				-- 2 fingers: pinch
				if #unsunkTouches == 2 then
					local pinchDiameter = (unsunkTouches[1].Position - unsunkTouches[2].Position).Magnitude

					if lastPinchDiameter then
						touchState.Pinch += pinchDiameter - lastPinchDiameter
					end

					lastPinchDiameter = pinchDiameter
				else
					lastPinchDiameter = nil
				end
			end

			function resetTouchState()
				touches = {}
				dynamicThumbstickInput = nil
				lastPinchDiameter = nil
				if FFlagUserResetTouchStateOnMenuOpen then
					resetPanInputCount()
				end
			end
		end

		local function pointerAction(wheel, pan, pinch, gpe)
			if not gpe then
				mouseState.Wheel = wheel
				mouseState.Pan = pan
				mouseState.Pinch = -pinch
			end
		end

		local function inputBegan(input, sunk)
			if input.UserInputType == Enum.UserInputType.Touch then
				touchBegan(input, sunk)

			elseif input.UserInputType == Enum.UserInputType.MouseButton2 and not sunk then
				incPanInputCount()
			end
		end

		local function inputChanged(input, sunk)
			if input.UserInputType == Enum.UserInputType.Touch then
				touchChanged(input, sunk)

			elseif input.UserInputType == Enum.UserInputType.MouseMovement then
				mouseMovement(input)
			end
		end

		local function inputEnded(input, sunk)
			if input.UserInputType == Enum.UserInputType.Touch then
				touchEnded(input, sunk)

			elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
				decPanInputCount()
			end
		end

		local inputEnabled = false

		function CameraInput.setInputEnabled(_inputEnabled)
			if inputEnabled == _inputEnabled then
				return
			end
			inputEnabled = _inputEnabled

			resetInputDevices()
			resetTouchState()

			if inputEnabled then -- enable
				ContextActionService:BindActionAtPriority(
					"RbxCameraThumbstick",
					thumbstick,
					false,
					CAMERA_INPUT_PRIORITY,
					Enum.KeyCode.Thumbstick2
				)

				ContextActionService:BindActionAtPriority(
					"RbxCameraKeypress",
					keypress,
					false,
					CAMERA_INPUT_PRIORITY,
					Enum.KeyCode.Left,
					Enum.KeyCode.Right,
					Enum.KeyCode.I,
					Enum.KeyCode.O
				)

				if VRService.VREnabled then
					ContextActionService:BindAction(
						"RbxCameraGamepadReset",
						gamepadReset,
						false,
						Enum.KeyCode.ButtonL3
					)
				end

				ContextActionService:BindAction(
					"RbxCameraGamepadZoom",
					gamepadZoomPress,
					false,
					Enum.KeyCode.ButtonR3
				)

				table.insert(connectionList, UserInputService.InputBegan:Connect(inputBegan))
				table.insert(connectionList, UserInputService.InputChanged:Connect(inputChanged))
				table.insert(connectionList, UserInputService.InputEnded:Connect(inputEnded))
				table.insert(connectionList, UserInputService.PointerAction:Connect(pointerAction))
				if FFlagUserResetTouchStateOnMenuOpen then
					local GuiService = game:GetService("GuiService")
					table.insert(connectionList, GuiService.MenuOpened:connect(resetTouchState))
				end

			else -- disable
				ContextActionService:UnbindAction("RbxCameraThumbstick")
				ContextActionService:UnbindAction("RbxCameraMouseMove")
				ContextActionService:UnbindAction("RbxCameraMouseWheel")
				ContextActionService:UnbindAction("RbxCameraKeypress")

				ContextActionService:UnbindAction("RbxCameraGamepadZoom")
				if VRService.VREnabled then
					ContextActionService:UnbindAction("RbxCameraGamepadReset")
				end

				for _, conn in pairs(connectionList) do
					conn:Disconnect()
				end
				connectionList = {}
			end
		end

		function CameraInput.getInputEnabled()
			return inputEnabled
		end

		function CameraInput.resetInputForFrameEnd()
			mouseState.Movement = Vector2.new()
			touchState.Move = Vector2.new()
			touchState.Pinch = 0

			mouseState.Wheel = 0 -- PointerAction
			mouseState.Pan = Vector2.new() -- PointerAction
			mouseState.Pinch = 0 -- PointerAction
		end

		UserInputService.WindowFocused:Connect(resetInputDevices)
		UserInputService.WindowFocusReleased:Connect(resetInputDevices)
	end
end


Prompt: --DO NOT MESS WITH THIS SCRIPT UNLESS YOU REALLY NEED TOO!!!!!!!!!!!!!!


Prompt: --Made by Luckymaxer

Response:
Debris = game:GetService("Debris")

Camera = game:GetService("Workspace").CurrentCamera

Sounds = {
	RayHit = script:WaitForChild("Hit")
}

BasePart = Instance.new("Part")
BasePart.Shape = Enum.PartType.Block
BasePart.Material = Enum.Material.Plastic
BasePart.TopSurface = Enum.SurfaceType.Smooth
BasePart.BottomSurface = Enum.SurfaceType.Smooth
BasePart.FormFactor = Enum.FormFactor.Custom
BasePart.Size = Vector3.new(0.2, 0.2, 0.2)
BasePart.CanCollide = true
BasePart.Locked = true
BasePart.Anchored = false

BaseRay = BasePart:Clone()
BaseRay.Name = "Laser"
BaseRay.BrickColor = BrickColor.new("New Yeller")
BaseRay.Material = Enum.Material.SmoothPlastic
BaseRay.Size = Vector3.new(0.2, 0.2, 0.2)
BaseRay.Anchored = true
BaseRay.CanCollide = false
BaseRayMesh = Instance.new("SpecialMesh")
BaseRayMesh.Name = "Mesh"
BaseRayMesh.MeshType = Enum.MeshType.Brick
BaseRayMesh.Scale = Vector3.new(0.2, 0.2, 1)
BaseRayMesh.Offset = Vector3.new(0, 0, 0)
BaseRayMesh.VertexColor = Vector3.new(1, 1, 1)
BaseRayMesh.Parent = BaseRay

function PlaySound(Position, Sound)
	local SoundPart = BasePart:Clone()
	SoundPart.Name = "ParticlePart"
	SoundPart.Transparency = 1
	SoundPart.Anchored = true
	SoundPart.CanCollide = false
	local SoundObject = Sound:Clone()
	SoundObject.Parent = SoundPart
	Debris:AddItem(SoundPart, 1.5)
	SoundPart.Parent = game:GetService("Workspace")
	SoundPart.CFrame = CFrame.new(Position)
	SoundObject:Play()
end

function FireRay(StartPosition, TargetPosition, Hit)

	local Vec = (TargetPosition - StartPosition)
	local Distance = Vec.magnitude
	local Direction = Vec.unit

	local PX = (StartPosition + (0.25 * Distance) * Direction)
	local PY = (StartPosition + (0.5 * Distance) * Direction)
	local PZ = (StartPosition + (0.75 * Distance) * Direction)

	local DX = (StartPosition - PX).magnitude
	local DY = (PX - PY).magnitude
	local DZ = (PY - PZ).magnitude

	local Limit = 2
	local AX = (PX + Vector3.new(math.random(math.max(-Limit, (-0.21 * DX)), math.min(Limit, (0.21 * DX))),math.random(math.max(-Limit, (-0.21 * DX)),math.min(Limit, (0.21 * DX))), math.random(math.max(-Limit, (-0.21 * DX)), math.min(Limit, (0.21 * DX)))))
	local AY = (PY + Vector3.new(math.random(math.max(-Limit, (-0.21 * DY)), math.min(Limit, (0.21 * DY))),math.random(math.max(-Limit, (-0.21 * DY)),math.min(Limit, (0.21 * DY))), math.random(math.max(-Limit, (-0.21 * DY)), math.min(Limit, (0.21 * DY)))))
	local AZ = (PZ + Vector3.new(math.random(math.max(-Limit, (-0.21 * DZ)), math.min(Limit, (0.21 * DZ))),math.random(math.max(-Limit, (-0.21 * DZ)),math.min(Limit, (0.21 * DZ))), math.random(math.max(-Limit, (-0.21 * DZ)), math.min(Limit, (0.21 * DZ)))))

	local Rays = {
		{Distance = (AX - StartPosition).magnitude, Direction = CFrame.new(StartPosition, AX)},
		{Distance = (AY - AX).magnitude, Direction = CFrame.new(AX, AY)},
		{Distance = (AZ - AY).magnitude, Direction = CFrame.new(AY, AZ)},
		{Distance = (TargetPosition - AZ).magnitude, Direction = CFrame.new(AZ, TargetPosition)},
	}

	for i, v in pairs(Rays) do
		local Ray = BaseRay:Clone()
		Ray.BrickColor = BrickColor.new("New Yeller")
		Ray.Reflectance = 0.4
		Ray.Transparency = 0.7
		local Mesh = Ray.Mesh
		Mesh.Scale = (Vector3.new(0.15, 0.15, (v.Distance / 1)) * 5)
		Ray.CFrame = (v.Direction * CFrame.new(0, 0, (-0.5 * v.Distance)))
		Debris:AddItem(Ray, (0.1 / (#Rays - (i - 1))))
		Ray.Parent = Camera
	end

end

pcall(function()
	local StartPosition = script:WaitForChild("StartPosition").Value
	local TargetPosition = script:WaitForChild("TargetPosition").Value
	local RayHit = script:WaitForChild("RayHit").Value
	FireRay(StartPosition, TargetPosition)
	if RayHit then
		PlaySound(TargetPosition, Sounds.RayHit)
	end
end)

Debris:AddItem(script, 1)


Prompt: --Dont touch

Response:
ZR15RightLegPointZero = 0
XR15RightLegPointZero = 0
YR15RightLegPointZero = 0
R15RightKneePointZero = 0

ZR15RightArmPointZero = 0
YR15RightArmPointZero = 0
XR15RightArmPointZero = 0
R15RightElbowPointZero = 0

ZR15LeftLegPointZero = 0
XR15LeftLegPointZero = 0
YR15LeftLegPointZero = 0
R15LeftKneePointZero = 0

ZR15LeftArmPointZero = 0
YR15LeftArmPointZero = 0
XR15LeftArmPointZero = 0
R15LeftElbowPointZero = 0

ZR15LowerTorsoPointZero = 0
XR15LowerTorsoPointZero = 0
YR15LowerTorsoPointZero = 0
ZR15UpperTorsoPointZero = 0

car.DriveSeat.ChildRemoved:connect(function(child)
	handler:FireServer("RemovePlayer",C,child)
end)

handler:FireServer("CreatePlayer",C)

while wait(clock) do
	--value*(1-multiplier)+endpoint*multiplier

	Lean = math.rad(-car.Body.bal.Orientation.Z)

	if C.Humanoid.RigType == Enum.HumanoidRigType.R6 then

	if math.abs(Lean) < R6HeadZ then
		car.Misc.Anims.R6.Head.Z.M.CurrentAngle = math.abs(Lean)
	else
		car.Misc.Anims.R6.Head.Z.M.CurrentAngle = R6HeadZ
	end

	if Lean < R6HeadX and Lean > -R6HeadX then
		car.Misc.Anims.R6.Head.X.M.CurrentAngle = Lean
	elseif Lean > R6HeadX then
		car.Misc.Anims.R6.Head.X.M.CurrentAngle = R6HeadX
	elseif Lean < -R6HeadX then
		car.Misc.Anims.R6.Head.X.M.CurrentAngle = -R6HeadX
	end

	if script.Parent.Values.SteerT.Value > 0.01 then
		car.Misc.Anims.R6.Head.Y.M.CurrentAngle = car.Misc.Anims.R6.Head.Y.M.CurrentAngle*(1-.1)+math.min((math.abs(script.Parent.Values.SteerT.Value)*(car.DriveSeat.Velocity.magnitude/20))+(math.abs(script.Parent.Values.SteerT.Value)*R6HeadYStart), R6HeadYFinish)*.1
	elseif script.Parent.Values.SteerT.Value < -0.01 then
		car.Misc.Anims.R6.Head.Y.M.CurrentAngle = car.Misc.Anims.R6.Head.Y.M.CurrentAngle*(1-.1)+math.max(-(math.abs(script.Parent.Values.SteerT.Value)*(car.DriveSeat.Velocity.magnitude/20))+(math.abs(script.Parent.Values.SteerT.Value)*-R6HeadYStart), -R6HeadYFinish)*.1
	else
		car.Misc.Anims.R6.Head.Y.M.CurrentAngle = car.Misc.Anims.R6.Head.Y.M.CurrentAngle*(1-.1)+0*.1
	end

	if car.DriveSeat.Velocity.magnitude > 5 then
		if Lean < 0 then
			car.Misc.Anims.R6.RightLeg.I.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.I.M.CurrentAngle*(1-.1)+0*.1
			car.Misc.Anims.R6.RightLeg.Z.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.Z.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6RightLegLeftLeanD),R6RightLegLeftLean)*R6RightLegLeftLeanM))*.1
			car.Misc.Anims.R6.LeftLeg.Z.M.CurrentAngle = car.Misc.Anims.R6.LeftLeg.Z.M.CurrentAngle*(1-.1)+0*.1
			car.Misc.Anims.R6.RightArm.Y.M.CurrentAngle = car.Misc.Anims.R6.RightArm.Y.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6RightArmLeftLeanD),R6RightArmLeftLean)*R6RightArmLeftLeanM))*.1
			car.Misc.Anims.R6.LeftArm.Y.M.CurrentAngle =  car.Misc.Anims.R6.LeftArm.Y.M.CurrentAngle*(1-.1)+(-(math.min(math.abs(Lean/R6LeftArmLeftLeanD),R6LeftArmLeftLean)*R6LeftArmLeftLeanM))*.1
			car.Misc.Anims.R6.RightLeg.X.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.X.M.CurrentAngle*(1-.1)+(-(math.min(math.abs(Lean/R6RightLegLeftLeanD),R6RightLegLeftLean)*R6RightLegLeftLeanM))*.1
			car.Misc.Anims.R6.LeftLeg.X.M.CurrentAngle = car.Misc.Anims.R6.LeftLeg.X.M.CurrentAngle*(1-.1)+(-(math.min(math.abs(Lean/R6LeftLegLeftLeanD),R6LeftLegLeftLean)*R6LeftLegLeftLeanM))*.1
			car.Misc.Anims.R6.Torso.X.M.CurrentAngle = car.Misc.Anims.R6.Torso.X.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6TorsoLeftLeanD),R6TorsoLeftLean)*R6TorsoLeftLeanM))*.1
		else
			car.Misc.Anims.R6.RightLeg.I.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.I.M.CurrentAngle*(1-.1)+0*.1
			car.Misc.Anims.R6.RightLeg.Z.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.Z.M.CurrentAngle*(1-.1)+0*.1
			car.Misc.Anims.R6.LeftLeg.Z.M.CurrentAngle = car.Misc.Anims.R6.LeftLeg.Z.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6LeftLegRightLeanD),R6LeftLegRightLean)*R6LeftLegRightLeanM))*.1
			car.Misc.Anims.R6.RightArm.Y.M.CurrentAngle = car.Misc.Anims.R6.RightArm.Y.M.CurrentAngle*(1-.1)+(-(math.min(math.abs(Lean/R6RightArmRightLeanD),R6RightArmRightLean)*R6RightArmRightLeanM))*.1
			car.Misc.Anims.R6.LeftArm.Y.M.CurrentAngle =  car.Misc.Anims.R6.LeftArm.Y.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6LeftArmRightLeanD),R6LeftArmRightLean)*R6LeftArmRightLeanM))*.1
			car.Misc.Anims.R6.RightLeg.X.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.X.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6RightLegRightLeanD),R6RightLegRightLean)*R6RightLegRightLeanM))*.1
			car.Misc.Anims.R6.LeftLeg.X.M.CurrentAngle = car.Misc.Anims.R6.LeftLeg.X.M.CurrentAngle*(1-.1)+((math.min(math.abs(Lean/R6LeftLegRightLeanD),R6LeftLegRightLean)*R6LeftLegRightLeanM))*.1
			car.Misc.Anims.R6.Torso.X.M.CurrentAngle = car.Misc.Anims.R6.Torso.X.M.CurrentAngle*(1-.1)+(-(math.min(math.abs(Lean/R6TorsoRightLeanD),R6TorsoRightLean)*R6TorsoRightLeanM))*.1
		end
	else
		car.Misc.Anims.R6.Torso.X.M.CurrentAngle = car.Misc.Anims.R6.Torso.X.M.CurrentAngle*(1-.1)+(-.3)*.1

		car.Misc.Anims.R6.RightArm.Y.M.CurrentAngle = car.Misc.Anims.R6.RightArm.Y.M.CurrentAngle*(1-.1)+(-.3)*.1
		car.Misc.Anims.R6.RightArm.Z.M.CurrentAngle = car.Misc.Anims.R6.RightArm.Z.M.CurrentAngle*(1-.1)+.5*.1

		car.Misc.Anims.R6.LeftArm.Y.M.CurrentAngle = car.Misc.Anims.R6.LeftArm.Y.M.CurrentAngle*(1-.1)+.4*.1

		car.Misc.Anims.R6.LeftLeg.X.M.CurrentAngle = car.Misc.Anims.R6.LeftLeg.X.M.CurrentAngle*(1-.1)+.2*.1
		car.Misc.Anims.R6.LeftLeg.Z.M.CurrentAngle = car.Misc.Anims.R6.LeftLeg.Z.M.CurrentAngle*(1-.1)+.3*.1

		car.Misc.Anims.R6.RightLeg.I.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.I.M.CurrentAngle*(1-.1)+1*.1
		car.Misc.Anims.R6.RightLeg.X.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.X.M.CurrentAngle*(1-.1)+.8*.1
		car.Misc.Anims.R6.RightLeg.Z.M.CurrentAngle = car.Misc.Anims.R6.RightLeg.Z.M.CurrentAngle*(1-.1)+.5*.1
	end

	if car.DriveSeat.Velocity.magnitude > TuckInSpeed then
		car.Misc.Anims.R6.Torso.Z.M.CurrentAngle = car.Misc.Anims.R6.Torso.Z.M.CurrentAngle*(1-.1)+((R6TorsoTuckIn-math.min(math.abs(Lean),R6TorsoTuckIn))*script.Parent.Values.Throttle.Value)*.1
		car.Misc.Anims.R6.RightArm.Z.M.CurrentAngle = car.Misc.Anims.R6.RightArm.Z.M.CurrentAngle*(1-.1)+((R6RightArmTuckIn-math.min(math.abs(Lean),R6RightArmTuckIn))*script.Parent.Values.Throttle.Value)*.1
		car.Misc.Anims.R6.LeftArm.Z.M.CurrentAngle = car.Misc.Anims.R6.LeftArm.Z.M.CurrentAngle*(1-.1)+((R6LeftArmTuckIn-math.min(math.abs(Lean),R6LeftArmTuckIn))*script.Parent.Values.Throttle.Value)*.1
	else
		car.Misc.Anims.R6.Torso.Z.M.CurrentAngle = car.Misc.Anims.R6.Torso.Z.M.CurrentAngle*(1-.15)+0*.15
		car.Misc.Anims.R6.RightArm.Z.M.CurrentAngle = car.Misc.Anims.R6.RightArm.Z.M.CurrentAngle*(1-.15)+0*.15
		car.Misc.Anims.R6.LeftArm.Z.M.CurrentAngle = car.Misc.Anims.R6.LeftArm.Z.M.CurrentAngle*(1-.15)+0*.15
	end

	else --r15

	if math.abs(Lean) < R15HeadZ then
		car.Misc.Anims.R15.Torso.Head.Z.M.CurrentAngle = math.abs(Lean)
	else
		car.Misc.Anims.R15.Torso.Head.Z.M.CurrentAngle = R15HeadZ
	end

	if Lean < R15HeadX and Lean > -R15HeadX then
		car.Misc.Anims.R15.Torso.Head.X.M.CurrentAngle = Lean
	elseif Lean > R15HeadX then
		car.Misc.Anims.R15.Torso.Head.X.M.CurrentAngle = R15HeadX
	elseif Lean < -R15HeadX then
		car.Misc.Anims.R15.Torso.Head.X.M.CurrentAngle = -R15HeadX
	end

	if script.Parent.Values.SteerT.Value > 0.01 then
		car.Misc.Anims.R15.Torso.Head.Y.M.CurrentAngle = car.Misc.Anims.R15.Torso.Head.Y.M.CurrentAngle*(1-.1)+math.min((math.abs(script.Parent.Values.SteerT.Value)*(car.DriveSeat.Velocity.magnitude/20))+(math.abs(script.Parent.Values.SteerT.Value)*R15HeadYStart), R15HeadYFinish)*.1
	elseif script.Parent.Values.SteerT.Value < -0.01 then
		car.Misc.Anims.R15.Torso.Head.Y.M.CurrentAngle = car.Misc.Anims.R15.Torso.Head.Y.M.CurrentAngle*(1-.1)+math.max(-(math.abs(script.Parent.Values.SteerT.Value)*(car.DriveSeat.Velocity.magnitude/20))+(math.abs(script.Parent.Values.SteerT.Value)*-R15HeadYStart), -R15HeadYFinish)*.1
	else
		car.Misc.Anims.R15.Torso.Head.Y.M.CurrentAngle = car.Misc.Anims.R15.Torso.Head.Y.M.CurrentAngle*(1-.1)+0*.1
	end

	if car.DriveSeat.Velocity.magnitude < TuckInSpeed and car.DriveSeat.Velocity.magnitude > 5 then
		--upright
		car.Misc.Anims.R15.RightLeg.Foot.I.M.CurrentAngle = car.Misc.Anims.R15.RightLeg.Foot.I.M.CurrentAngle*(1-.1)+0*.1

		ZR15RightLegPointZero = ZR15RightLegPointZero*(1-.1)+0*.1
		XR15RightLegPointZero = XR15RightLegPointZero*(1-.1)+0*.1
		YR15RightLegPointZero = YR15RightLegPointZero*(1-.1)+0*.1
		R15RightKneePointZero = R15RightKneePointZero*(1-.1)+0*.1

		ZR15RightArmPointZero = ZR15RightArmPointZero*(1-.1)+0*.1
		YR15RightArmPointZero = YR15RightArmPointZero*(1-.1)+0*.1
		XR15RightArmPointZero = XR15RightArmPointZero*(1-.1)+0*.1
		R15RightElbowPointZero = R15RightElbowPointZero*(1-.1)+0*.1

		ZR15LeftLegPointZero = ZR15LeftLegPointZero*(1-.1)+0*.1
		XR15LeftLegPointZero = XR15LeftLegPointZero*(1-.1)+0*.1
		YR15LeftLegPointZero = YR15LeftLegPointZero*(1-.1)+0*.1
		R15LeftKneePointZero = R15LeftKneePointZero*(1-.1)+0*.1

		ZR15LeftArmPointZero = ZR15LeftArmPointZero*(1-.1)+0*.1
		YR15LeftArmPointZero = YR15LeftArmPointZero*(1-.1)+0*.1
		XR15LeftArmPointZero = XR15LeftArmPointZero*(1-.1)+0*.1
		R15LeftElbowPointZero = R15LeftElbowPointZero*(1-.1)+0*.1

		ZR15LowerTorsoPointZero = ZR15LowerTorsoPointZero*(1-.1)+0*.1
		XR15LowerTorsoPointZero = XR15LowerTorsoPointZero*(1-.1)+0*.1
		YR15LowerTorsoPointZero = YR15LowerTorsoPointZero*(1-.1)+0*.1
		ZR15UpperTorsoPointZero = ZR15UpperTorsoPointZero*(1-.1)+0*.1
	elseif car.DriveSeat.Velocity.magnitude >= TuckInSpeed and car.DriveSeat.Velocity.magnitude>5 then
		--tuck in
		car.Misc.Anims.R15.RightLeg.Foot.I.M.CurrentAngle = car.Misc.Anims.R15.RightLeg.Foot.I.M.CurrentAngle*(1-.1)+0*.1

		ZR15RightLegPointZero = ZR15RightLegPointZero*(1-.1)+(ZR15RightLegTuckIn*script.Parent.Values.Throttle.Value)*.1
		XR15RightLegPointZero = XR15RightLegPointZero*(1-.1)+(XR15RightLegTuckIn*script.Parent.Values.Throttle.Value)*.1
		YR15RightLegPointZero = YR15RightLegPointZero*(1-.1)+(YR15RightLegTuckIn*script.Parent.Values.Throttle.Value)*.1
		R15RightKneePointZero = R15RightKneePointZero*(1-.1)+(R15RightKneeTuckIn*script.Parent.Values.Throttle.Value)*.1

		ZR15RightArmPointZero = ZR15RightArmPointZero*(1-.1)+(ZR15RightArmTuckIn*script.Parent.Values.Throttle.Value)*.1
		YR15RightArmPointZero = YR15RightArmPointZero*(1-.1)+(YR15RightArmTuckIn*script.Parent.Values.Throttle.Value)*.1
		XR15RightArmPointZero = XR15RightArmPointZero*(1-.1)+(XR15RightArmTuckIn*script.Parent.Values.Throttle.Value)*.1
		R15RightElbowPointZero = R15RightElbowPointZero*(1-.1)+(R15RightElbowTuckIn*script.Parent.Values.Throttle.Value)*.1

		ZR15LeftLegPointZero = ZR15LeftLegPointZero*(1-.1)+(ZR15LeftLegTuckIn*script.Parent.Values.Throttle.Value)*.1
		XR15LeftLegPointZero = XR15LeftLegPointZero*(1-.1)+(XR15LeftLegTuckIn*script.Parent.Values.Throttle.Value)*.1
		YR15LeftLegPointZero = YR15LeftLegPointZero*(1-.1)+(YR15LeftLegTuckIn*script.Parent.Values.Throttle.Value)*.1
		R15LeftKneePointZero = R15LeftKneePointZero*(1-.1)+(R15LeftKneeTuckIn*script.Parent.Values.Throttle.Value)*.1

		ZR15LeftArmPointZero = ZR15LeftArmPointZero*(1-.1)+(ZR15LeftArmTuckIn*script.Parent.Values.Throttle.Value)*.1
		YR15LeftArmPointZero = YR15LeftArmPointZero*(1-.1)+(YR15LeftArmTuckIn*script.Parent.Values.Throttle.Value)*.1
		XR15LeftArmPointZero = XR15LeftArmPointZero*(1-.1)+(XR15LeftArmTuckIn*script.Parent.Values.Throttle.Value)*.1
		R15LeftElbowPointZero = R15LeftElbowPointZero*(1-.1)+(R15LeftElbowTuckIn*script.Parent.Values.Throttle.Value)*.1

		ZR15LowerTorsoPointZero = ZR15LowerTorsoPointZero*(1-.1)+(ZR15LowerTorsoTuckIn*script.Parent.Values.Throttle.Value)*.1
		XR15LowerTorsoPointZero = XR15LowerTorsoPointZero*(1-.1)+(XR15LowerTorsoTuckIn*script.Parent.Values.Throttle.Value)*.1
		YR15LowerTorsoPointZero = YR15LowerTorsoPointZero*(1-.1)+(YR15LowerTorsoTuckIn*script.Parent.Values.Throttle.Value)*.1
		ZR15UpperTorsoPointZero = ZR15UpperTorsoPointZero*(1-.1)+(ZR15UpperTorsoTuckIn*script.Parent.Values.Throttle.Value)*.1
	else
		--idle
		car.Misc.Anims.R15.RightLeg.Foot.I.M.CurrentAngle = car.Misc.Anims.R15.RightLeg.Foot.I.M.CurrentAngle*(1-.18)+1*.18

		ZR15RightLegPointZero = ZR15RightLegPointZero*(1-.1)+0.6*.1
		XR15RightLegPointZero = XR15RightLegPointZero*(1-.18)+-.8*.18
		YR15RightLegPointZero = YR15RightLegPointZero*(1-.1)+0.4*.1
		R15RightKneePointZero = R15RightKneePointZero*(1-.18)+-1.8*.18

		ZR15RightArmPointZero = ZR15RightArmPointZero*(1-.1)+0.25*.1
		YR15RightArmPointZero = YR15RightArmPointZero*(1-.1)+0.3*.1
		XR15RightArmPointZero = XR15RightArmPointZero*(1-.1)+-0.12*.1
		R15RightElbowPointZero = R15RightElbowPointZero*(1-.1)+0.25*.1

		ZR15LeftLegPointZero = ZR15LeftLegPointZero*(1-.1)+-.05*.1
		XR15LeftLegPointZero = XR15LeftLegPointZero*(1-.1)+0.15*.1
		YR15LeftLegPointZero = YR15LeftLegPointZero*(1-.1)+0.5*.1
		R15LeftKneePointZero = R15LeftKneePointZero*(1-.1)+.5*.1

		ZR15LeftArmPointZero = ZR15LeftArmPointZero*(1-.1)+0*.1
		YR15LeftArmPointZero = YR15LeftArmPointZero*(1-.1)+0.4*.1
		XR15LeftArmPointZero = XR15LeftArmPointZero*(1-.1)+0.05*.1
		R15LeftElbowPointZero = R15LeftElbowPointZero*(1-.1)+0.1*.1

		ZR15LowerTorsoPointZero = ZR15LowerTorsoPointZero*(1-.1)+0*.1
		XR15LowerTorsoPointZero = XR15LowerTorsoPointZero*(1-.1)+-.25*.1
		YR15LowerTorsoPointZero = YR15LowerTorsoPointZero*(1-.1)+0.15*.1
		ZR15UpperTorsoPointZero = ZR15UpperTorsoPointZero*(1-.1)+0*.1
	end

	if Lean > 0 then
		--right lean
		car.Misc.Anims.R15.RightLeg.Foot.Z.M.CurrentAngle = ((ZR15RightLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15RightLegRightLean*math.abs(Lean))/ZR15RightLegRightLeanD)*ZR15RightLegRightLeanM
		car.Misc.Anims.R15.RightLeg.Foot.X.M.CurrentAngle = ((XR15RightLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15RightLegRightLean*math.abs(Lean))/XR15RightLegRightLeanD)*XR15RightLegRightLeanM
		car.Misc.Anims.R15.RightLeg.Foot.Y.M.CurrentAngle = ((YR15RightLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15RightLegRightLean*math.abs(Lean))/YR15RightLegRightLeanD)*YR15RightLegRightLeanM
		car.Misc.Anims.R15.RightLeg.UpperLeg.X.M.CurrentAngle = ((R15RightKneePointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15RightKneeRightLean*math.abs(Lean))/R15RightKneeRightLeanD)*R15RightKneeRightLeanM

		car.Misc.Anims.R15.RightArm.Hand.Z.M.CurrentAngle = ((ZR15RightArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15RightArmRightLean*math.abs(Lean))/ZR15RightArmRightLeanD)*ZR15RightArmRightLeanM
		car.Misc.Anims.R15.RightArm.Hand.X.M.CurrentAngle = ((XR15RightArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15RightArmRightLean*math.abs(Lean))/XR15RightArmRightLeanD)*XR15RightArmRightLeanM
		car.Misc.Anims.R15.RightArm.Hand.Y.M.CurrentAngle = ((YR15RightArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15RightArmRightLean*math.abs(Lean))/YR15RightArmRightLeanD)*YR15RightArmRightLeanM
		car.Misc.Anims.R15.RightArm.UpperArm.X.M.CurrentAngle = ((R15RightElbowPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15RightElbowRightLean*math.abs(Lean))/R15RightElbowRightLeanD)*R15RightElbowRightLeanM

		car.Misc.Anims.R15.LeftLeg.Foot.Z.M.CurrentAngle = ((ZR15LeftLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15LeftLegRightLean*math.abs(Lean))/ZR15LeftLegRightLeanD)*ZR15LeftLegRightLeanM
		car.Misc.Anims.R15.LeftLeg.Foot.X.M.CurrentAngle = ((XR15LeftLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15LeftLegRightLean*math.abs(Lean))/XR15LeftLegRightLeanD)*XR15LeftLegRightLeanM
		car.Misc.Anims.R15.LeftLeg.Foot.Y.M.CurrentAngle = ((YR15LeftLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15LeftLegRightLean*math.abs(Lean))/YR15LeftLegRightLeanD)*YR15LeftLegRightLeanM
		car.Misc.Anims.R15.LeftLeg.UpperLeg.X.M.CurrentAngle = ((R15LeftKneePointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15LeftKneeRightLean*math.abs(Lean))/R15LeftKneeRightLeanD)*R15LeftKneeRightLeanM

		car.Misc.Anims.R15.LeftArm.Hand.Z.M.CurrentAngle = ((ZR15LeftArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15LeftArmRightLean*math.abs(Lean))/ZR15LeftArmRightLeanD)*ZR15LeftArmRightLeanM
		car.Misc.Anims.R15.LeftArm.Hand.X.M.CurrentAngle = ((XR15LeftArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15LeftArmRightLean*math.abs(Lean))/XR15LeftArmRightLeanD)*XR15LeftArmRightLeanM
		car.Misc.Anims.R15.LeftArm.Hand.Y.M.CurrentAngle = ((YR15LeftArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15LeftArmRightLean*math.abs(Lean))/YR15LeftArmRightLeanD)*YR15LeftArmRightLeanM
		car.Misc.Anims.R15.LeftArm.UpperArm.X.M.CurrentAngle = ((R15LeftElbowPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15LeftElbowRightLean*math.abs(Lean))/R15LeftElbowRightLeanD)*R15LeftElbowRightLeanM

		car.Misc.Anims.R15.Torso.LowerTorso.Z.M.CurrentAngle = ((ZR15LowerTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15LowerTorsoRightLean*math.abs(Lean))/ZR15LowerTorsoRightLeanD)*ZR15LowerTorsoRightLeanM
		car.Misc.Anims.R15.Torso.LowerTorso.X.M.CurrentAngle = ((XR15LowerTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15LowerTorsoRightLean*math.abs(Lean))/XR15LowerTorsoRightLeanD)*XR15LowerTorsoRightLeanM
		car.Misc.Anims.R15.Torso.LowerTorso.Y.M.CurrentAngle = ((YR15LowerTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15LowerTorsoRightLean*math.abs(Lean))/YR15LowerTorsoRightLeanD)*YR15LowerTorsoRightLeanM
		car.Misc.Anims.R15.Torso.UpperTorso.Z.M.CurrentAngle = ((ZR15UpperTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15UpperTorsoRightLean*math.abs(Lean))/ZR15UpperTorsoRightLeanD)*ZR15UpperTorsoRightLeanM
	else
		--left lean
		car.Misc.Anims.R15.RightLeg.Foot.Z.M.CurrentAngle = ((ZR15RightLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15RightLegLeftLean*math.abs(Lean))/ZR15RightLegLeftLeanD)*ZR15RightLegLeftLeanM
		car.Misc.Anims.R15.RightLeg.Foot.X.M.CurrentAngle = ((XR15RightLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15RightLegLeftLean*math.abs(Lean))/XR15RightLegLeftLeanD)*XR15RightLegLeftLeanM
		car.Misc.Anims.R15.RightLeg.Foot.Y.M.CurrentAngle = ((YR15RightLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15RightLegLeftLean*math.abs(Lean))/YR15RightLegLeftLeanD)*YR15RightLegLeftLeanM
		car.Misc.Anims.R15.RightLeg.UpperLeg.X.M.CurrentAngle = ((R15RightKneePointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15RightKneeLeftLean*math.abs(Lean))/R15RightKneeLeftLeanD)*R15RightKneeLeftLeanM

		car.Misc.Anims.R15.RightArm.Hand.Z.M.CurrentAngle = ((ZR15RightArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15RightArmLeftLean*math.abs(Lean))/ZR15RightArmLeftLeanD)*ZR15RightArmLeftLeanM
		car.Misc.Anims.R15.RightArm.Hand.X.M.CurrentAngle = ((XR15RightArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15RightArmLeftLean*math.abs(Lean))/XR15RightArmLeftLeanD)*XR15RightArmLeftLeanM
		car.Misc.Anims.R15.RightArm.Hand.Y.M.CurrentAngle = ((YR15RightArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15RightArmLeftLean*math.abs(Lean))/YR15RightArmLeftLeanD)*YR15RightArmLeftLeanM
		car.Misc.Anims.R15.RightArm.UpperArm.X.M.CurrentAngle = ((R15RightElbowPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15RightElbowLeftLean*math.abs(Lean))/R15RightElbowLeftLeanD)*R15RightElbowLeftLeanM

		car.Misc.Anims.R15.LeftLeg.Foot.Z.M.CurrentAngle = ((ZR15LeftLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15LeftLegLeftLean*math.abs(Lean))/ZR15LeftLegLeftLeanD)*ZR15LeftLegLeftLeanM
		car.Misc.Anims.R15.LeftLeg.Foot.X.M.CurrentAngle = ((XR15LeftLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15LeftLegLeftLean*math.abs(Lean))/XR15LeftLegLeftLeanD)*XR15LeftLegLeftLeanM
		car.Misc.Anims.R15.LeftLeg.Foot.Y.M.CurrentAngle = ((YR15LeftLegPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15LeftLegLeftLean*math.abs(Lean))/YR15LeftLegLeftLeanD)*YR15LeftLegLeftLeanM
		car.Misc.Anims.R15.LeftLeg.UpperLeg.X.M.CurrentAngle = ((R15LeftKneePointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15LeftKneeLeftLean*math.abs(Lean))/R15LeftKneeLeftLeanD)*R15LeftKneeLeftLeanM

		car.Misc.Anims.R15.LeftArm.Hand.Z.M.CurrentAngle = ((ZR15LeftArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15LeftArmLeftLean*math.abs(Lean))/ZR15LeftArmLeftLeanD)*ZR15LeftArmLeftLeanM
		car.Misc.Anims.R15.LeftArm.Hand.X.M.CurrentAngle = ((XR15LeftArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15LeftArmLeftLean*math.abs(Lean))/XR15LeftArmLeftLeanD)*XR15LeftArmLeftLeanM
		car.Misc.Anims.R15.LeftArm.Hand.Y.M.CurrentAngle = ((YR15LeftArmPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15LeftArmLeftLean*math.abs(Lean))/YR15LeftArmLeftLeanD)*YR15LeftArmLeftLeanM
		car.Misc.Anims.R15.LeftArm.UpperArm.X.M.CurrentAngle = ((R15LeftElbowPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(R15LeftElbowLeftLean*math.abs(Lean))/R15LeftElbowLeftLeanD)*R15LeftElbowLeftLeanM

		car.Misc.Anims.R15.Torso.LowerTorso.Z.M.CurrentAngle = ((ZR15LowerTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15LowerTorsoLeftLean*math.abs(Lean))/ZR15LowerTorsoLeftLeanD)*ZR15LowerTorsoLeftLeanM
		car.Misc.Anims.R15.Torso.LowerTorso.X.M.CurrentAngle = ((XR15LowerTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(XR15LowerTorsoLeftLean*math.abs(Lean))/XR15LowerTorsoLeftLeanD)*XR15LowerTorsoLeftLeanM
		car.Misc.Anims.R15.Torso.LowerTorso.Y.M.CurrentAngle = ((YR15LowerTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(YR15LowerTorsoLeftLean*math.abs(Lean))/YR15LowerTorsoLeftLeanD)*YR15LowerTorsoLeftLeanM
		car.Misc.Anims.R15.Torso.UpperTorso.Z.M.CurrentAngle = ((ZR15UpperTorsoPointZero*math.max(-((math.abs(Lean)*2)-1),0))+(ZR15UpperTorsoLeftLean*math.abs(Lean))/ZR15UpperTorsoLeftLeanD)*ZR15UpperTorsoLeftLeanM
	end

	end
end


Prompt: -- Class

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


Prompt:
--[[
	Constructs and returns a new instance, with options for setting properties,
	event handlers and other attributes on the instance right away.
]]

Response:
local Package = script.Parent.Parent
local PubTypes = require(Package.PubTypes)
local cleanupOnDestroy = require(Package.Utility.cleanupOnDestroy)
local Children = require(Package.Instances.Children)
local Scheduler = require(Package.Instances.Scheduler)
local defaultProps = require(Package.Instances.defaultProps)
local Observer = require(Package.State.Observer)
local logError = require(Package.Logging.logError)
local logWarn = require(Package.Logging.logWarn)

local WEAK_KEYS_METATABLE = {__mode = "k"}

local ENABLE_EXPERIMENTAL_GC_MODE = false


Prompt:
--[[
	Keyboard Character Control - This module handles controlling your avatar from a keyboard

	2018 PlayerScripts Update - AllYourBlox
--]]


Response:
local Player = game.Players.LocalPlayer --This line down to line 74 set all the variables in the plane
local Character = Player.Character
local Plane = Character.Plane
local AutoCrash = Plane.AutoCrash
local Weapons = Plane.Weapons
local MainParts = Plane.MainParts
local Gear = MainParts.Gear
local Engine = MainParts.Engine
local Thrust = Engine.Thrust
local Direction = Engine.Direction
local Customize = Plane.Customize
local Tool = script.Parent
local GUI = Tool.PlaneGui
local ToolSelect = Tool.ToolSelect
local Deselect0 = Tool.Deselect0
local FireMain = Tool.FireMain
local Camera = game.Workspace.CurrentCamera
local RunService = game:GetService("RunService")


Prompt: -- Define the Configuration folder

Response: local Configuration = script.Parent:WaitForChild("Configuration")


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

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

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

ZoneModelName = "Homing hat" -- name the zone model

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


Prompt: ---- Settings ----

Response:
local Cooldown = true
local Key ="X"

UserInputService.InputBegan:Connect(function(Input, IsTyping)
  if IsTyping then return end
  local KeyPressed = Input.KeyCode
  if KeyPressed == Enum.KeyCode[Key] and Cooldown and Character then
      Cooldown = false

      Remote:FireServer()

      wait(8)
      Cooldown = true
   end
end)


Prompt:
--[[
-- Unused because too expensive to be worth the benefit since you'd have to call it often
local function RealignArcToCamera(self)
    local relativeCamPos = self.cframe:inverse() * workspace.CurrentCamera.CFrame.p
    for _, v in pairs(self.segments) do
        local c = v.CFrame
        local po = c.p
        local up = c.upVector
        local lf = cross(relativeCamPos - po, up).unit
        local fr = cross(lf, up).unit
        v.CFrame = cframe(po.x, po.y, po.z, lf.x, up.x, fr.x, lf.y, up.y, fr.y, lf.z, up.z, fr.z)
    end
end
]]


Prompt:
--	local AttackRange, FieldOfView, AggroRange, ChanceOfBoredom, BoredomDuration,
--		Damage, DamageCooldown

Response:
	local configTable = model.Configurations
	local configs = {}
	local function loadConfig(configName, defaultValue)
		if configTable:FindFirstChild(configName) then
			configs[configName] = configTable:FindFirstChild(configName).Value
		else
			configs[configName] = defaultValue
		end
	end

	loadConfig("AttackRange", 3)
	loadConfig("FieldOfView", 180)
	loadConfig("AggroRange", 200)
	loadConfig("ChanceOfBoredom", .5)
	loadConfig("BoredomDuration", 10)
	loadConfig("Damage", 10)
	loadConfig("DamageCooldown", 1)

	local StateMachine = require(game.ServerStorage.ROBLOX_StateMachine).new()
	local PathLib = require(game.ServerStorage.ROBLOX_PathfindingLibrary).new()
	local ZombieTarget = nil
	local ZombieTargetLastLocation = nil

	local lastBored = os.time()

	-- STATE DEFINITIONS

	-- IdleState: NPC stays still. Refreshes bored timer when started to
	-- allow for random state change
	local IdleState = StateMachine.NewState()
	IdleState.Name = "Idle"
	IdleState.Action = function()
	end
	IdleState.Init = function()
		lastBored = os.time()
	end

	-- SearchState: NPC wanders randomly increasing chance of spotting
	-- enemy. Refreshed bored timer when started to allow for random state
	-- change
	local SearchState = StateMachine.NewState()
	SearchState.Name = "Search"
	local lastmoved = os.time()
	local searchTarget = nil
	SearchState.Action = function()
		-- move to random spot nearby
		if model then
			local now = os.time()
			if now - lastmoved > 2 then
				lastmoved = now
				local xoff = math.random(5, 10)
				if math.random() > .5 then
					xoff = xoff * -1
				end
				local zoff = math.random(5, 10)
				if math.random() > .5 then
					zoff = zoff * -1
				end

				local testtarg = AIUtilities:FindCloseEmptySpace(model)
				--if testtarg then print(testtarg) else print("could not find") end
				searchTarget = Vector3.new(model.HumanoidRootPart.Position.X + xoff,model.HumanoidRootPart.Position.Y,model.HumanoidRootPart.Position.Z + zoff)
				--local target = Vector3.new(model.HumanoidRootPart.Position.X + xoff,model.HumanoidRootPart.Position.Y,model.HumanoidRootPart.Position.Z + zoff)
				--model.Humanoid:MoveTo(target)
				searchTarget = testtarg
			end
			if searchTarget then
				PathLib:MoveToTarget(model, searchTarget)
			end
		end
	end
	SearchState.Init = function()
		lastBored = os.time()
	end

	-- PursueState: Enemy has been spotted, need to give chase.
	local PursueState = StateMachine.NewState()
	PursueState.Name = "Pursue"
	PursueState.Action = function()
		-- Double check we still have target
		if ZombieTarget and model:FindFirstChild("HumanoidRootPart") and ZombieTarget:FindFirstChild("HumanoidRootPart") then
			-- Get distance to target
			local distance = (model.HumanoidRootPart.Position - ZombieTarget.HumanoidRootPart.Position).magnitude
			-- If we're far from target use pathfinding to move. Otherwise just MoveTo
			if distance > configs["AttackRange"] + 5 then
				PathLib:MoveToTarget(model, ZombieTarget.HumanoidRootPart.Position)
			else
				model.Humanoid:MoveTo(ZombieTarget.HumanoidRootPart.Position)


Prompt: -- Create component

Response:
local ItemList = Roact.Component:extend 'ItemList'
ItemList.defaultProps = {
    MaxHeight = -1
}

function ItemList:init(props)
    self:setState {
        Min = 0,
        Max = props.MaxHeight,
        CanvasPosition = Vector2.new()
    }

    -- Create callback for updating canvas boundaries
    self.UpdateBoundaries = function (rbx)
        if self.Mounted then
            self:setState {
                CanvasPosition = rbx.CanvasPosition,
                Min = rbx.CanvasPosition.Y - rbx.AbsoluteSize.Y,
                Max = rbx.CanvasPosition.Y + rbx.AbsoluteSize.Y
            }
        end
    end
end

function ItemList:didMount()
    self.Mounted = true
end

function ItemList:willUnmount()
    self.Mounted = false
end

function ItemList:didUpdate(previousProps, previousState)
    local IsScrollTargetSet = self.props.ScrollTo and
        (previousProps.ScrollTo ~= self.props.ScrollTo)

    -- Reset canvas position whenever scope updates (unless a scrolling target is set)
    if (previousProps.Scope ~= self.props.Scope) and (not IsScrollTargetSet) then
        self:setState({
            CanvasPosition = Vector2.new(0, 0);
            Min = 0;
            Max = self.props.MaxHeight;
        })
    end
end

function ItemList:render()
    local props = self.props
    local state = self.state

    -- Keep track of how many items are out of view
    local SkippedAbove = 0
    local SkippedBelow = 0
    local TargetCanvasPosition

    -- Declare a button for each item
    local ItemList = {}
    local VisibleItemCount = 0
    local ItemHeight = props.RowHeight

    -- Go through each item in order
    local OrderedItems = Support.Values(props.Items)
    table.sort(OrderedItems, function (A, B)
        return A.Order < B.Order
    end)
    for i = 1, #OrderedItems do
        local Item = OrderedItems[i]

        -- Get item parent state
        local ParentId = Item.Parent and props.IdMap[Item.Parent]
        local ParentState = ParentId and props.Items[ParentId]

        -- Determine visibility and depth from ancestors
        local Visible = true
        local Depth = 0
        if ParentId then
            local ParentState = ParentState
            while ParentState do

                -- Stop if ancestor not visible
                if not ParentState.Expanded then
                    Visible = nil
                    break

                -- Count visible ancestors
                else
                    Depth = Depth + 1
                end

                -- Check next ancestor
                local ParentId = props.IdMap[ParentState.Parent]
                ParentState = props.Items[ParentId]

            end
        end

        -- Set canvas position to begin at item if requested and out-of-view
        if (Item.Id == props.ScrollTo) and (self.ScrolledTo ~= props.ScrollTo) then
            local ItemPosition = VisibleItemCount * props.RowHeight
            if ItemPosition < state.CanvasPosition.Y or
               ItemPosition > (state.CanvasPosition.Y + props.MaxHeight) then
                TargetCanvasPosition = Vector2.new(0, ItemPosition)
                self.ScrolledTo = Item.Id
            end
        end

        -- Calculate whether item is in view
        if Visible then
            VisibleItemCount = VisibleItemCount + 1
            local ItemTop = (VisibleItemCount - 1) * props.RowHeight
            if ItemTop < state.Min then
                SkippedAbove = SkippedAbove + 1
                Visible = nil
            elseif ItemTop > state.Max then
                SkippedBelow = SkippedBelow + 1
                Visible = nil
            end
        end

        -- Declare component for item
        ItemList[Item.Id] = Visible and new(ItemRow, Support.Merge({}, Item, {
            Depth = Depth,
            Core = props.Core,
            ToggleExpand = props.ToggleExpand,
            Height = props.RowHeight
        }))
    end

    return new(ScrollingFrame, {
        Layout = 'List',
        LayoutDirection = 'Vertical',
        CanvasSize = UDim2.new(1, -2, 0, VisibleItemCount * props.RowHeight),
        Size = UDim2.new(1, 0, 0, VisibleItemCount * props.RowHeight),
        CanvasPosition = TargetCanvasPosition or state.CanvasPosition,
        ScrollBarThickness = 4,
        ScrollBarImageTransparency = 0.6,
        VerticalScrollBarInset = 'ScrollBar',
        [Roact.Change.CanvasPosition] = self.UpdateBoundaries,
        [Roact.Children] = Support.Merge(ItemList, {
            TopSpacer = new(Frame, {
                Size = UDim2.new(0, 0, 0, SkippedAbove * props.RowHeight),
                LayoutOrder = 0
            }),
            BottomSpacer = new(Frame, {
                Size = UDim2.new(0, 0, 0, SkippedBelow * props.RowHeight),
                LayoutOrder = #OrderedItems + 1
            }),
            SizeConstraint = new('UISizeConstraint', {
                MinSize = Vector2.new(0, 20),
                MaxSize = Vector2.new(math.huge, props.MaxHeight)
            })
        })
    })
end

return ItemList


Prompt:
--[[
	RotateSpine

	Description: This script listens for the UpdateSpine remote event from clients and updates their spine, arms, and waist by
	interpolating the rotation of the Motor6Ds.
]]


Prompt: -- FEATURE METHODS

Response:
function Icon:bindEvent(iconEventName, eventFunction)
	local event = self[iconEventName]
	assert(event and typeof(event) == "table" and event.Connect, "argument[1] must be a valid topbarplus icon event name!")
	assert(typeof(eventFunction) == "function", "argument[2] must be a function!")
	self._bindedEvents[iconEventName] = event:Connect(function(...)
		eventFunction(self, ...)
	end)
	return self
end

function Icon:unbindEvent(iconEventName)
	local eventConnection = self._bindedEvents[iconEventName]
	if eventConnection then
		eventConnection:Disconnect()
		self._bindedEvents[iconEventName] = nil
	end
	return self
end

function Icon:bindToggleKey(keyCodeEnum)
	assert(typeof(keyCodeEnum) == "EnumItem", "argument[1] must be a KeyCode EnumItem!")
	self._bindedToggleKeys[keyCodeEnum] = true
	return self
end

function Icon:unbindToggleKey(keyCodeEnum)
	assert(typeof(keyCodeEnum) == "EnumItem", "argument[1] must be a KeyCode EnumItem!")
	self._bindedToggleKeys[keyCodeEnum] = nil
	return self
end

function Icon:lock()
	self.locked = true
	return self
end

function Icon:unlock()
	self.locked = false
	return self
end

function Icon:setTopPadding(offset, scale)
	local newOffset = offset or 4
	local newScale = scale or 0
	self.topPadding = UDim.new(newScale, newOffset)
	self.updated:Fire()
	return self
end

function Icon:bindToggleItem(guiObjectOrLayerCollector)
	if not guiObjectOrLayerCollector:IsA("GuiObject") and not guiObjectOrLayerCollector:IsA("LayerCollector") then
		error("Toggle item must be a GuiObject or LayerCollector!")
	end
	self.toggleItems[guiObjectOrLayerCollector] = true
	return self
end

function Icon:unbindToggleItem(guiObjectOrLayerCollector)
	self.toggleItems[guiObjectOrLayerCollector] = nil
	return self
end

function Icon:_setToggleItemsVisible(bool, byIcon)
	for toggleItem, _ in pairs(self.toggleItems) do
		if not byIcon or byIcon.toggleItems[toggleItem] == nil then
			local property = "Visible"
			if toggleItem:IsA("LayerCollector") then
				property = "Enabled"
			end
			toggleItem[property] = bool
		end
	end
end


Prompt: --------------------------CHARACTER CONTROL-------------------------------

Response:
local CurrentIgnoreList: {Model}
local CurrentIgnoreTag = nil

local TaggedInstanceAddedConnection: RBXScriptConnection? = nil
local TaggedInstanceRemovedConnection: RBXScriptConnection? = nil

local function GetCharacter(): Model
	return Player and Player.Character
end

local function UpdateIgnoreTag(newIgnoreTag)
	if newIgnoreTag == CurrentIgnoreTag then
		return
	end
	if TaggedInstanceAddedConnection then
		TaggedInstanceAddedConnection:Disconnect()
		TaggedInstanceAddedConnection = nil
	end
	if TaggedInstanceRemovedConnection then
		TaggedInstanceRemovedConnection:Disconnect()
		TaggedInstanceRemovedConnection = nil
	end
	CurrentIgnoreTag = newIgnoreTag
	CurrentIgnoreList = {GetCharacter()}
	if CurrentIgnoreTag ~= nil then
		local ignoreParts = CollectionService:GetTagged(CurrentIgnoreTag)
		for _, ignorePart in ipairs(ignoreParts) do
			table.insert(CurrentIgnoreList, ignorePart)
		end
		TaggedInstanceAddedConnection = CollectionService:GetInstanceAddedSignal(
			CurrentIgnoreTag):Connect(function(ignorePart)
			table.insert(CurrentIgnoreList, ignorePart)
		end)
		TaggedInstanceRemovedConnection = CollectionService:GetInstanceRemovedSignal(
			CurrentIgnoreTag):Connect(function(ignorePart)
			for i = 1, #CurrentIgnoreList do
				if CurrentIgnoreList[i] == ignorePart then
					CurrentIgnoreList[i] = CurrentIgnoreList[#CurrentIgnoreList]
					table.remove(CurrentIgnoreList)
					break
				end
			end
		end)
	end
end

local function getIgnoreList(): {Model}
	if CurrentIgnoreList then
		return CurrentIgnoreList
	end
	CurrentIgnoreList = {}
	assert(CurrentIgnoreList, "")
	table.insert(CurrentIgnoreList, GetCharacter())
	return CurrentIgnoreList
end

local function minV(a: Vector3, b: Vector3)
	return Vector3.new(math.min(a.X, b.X), math.min(a.Y, b.Y), math.min(a.Z, b.Z))
end
local function maxV(a, b)
	return Vector3.new(math.max(a.X, b.X), math.max(a.Y, b.Y), math.max(a.Z, b.Z))
end
local function getCollidableExtentsSize(character: Model?)
	if character == nil or character.PrimaryPart == nil then return end
	assert(character, "")
	assert(character.PrimaryPart, "")
	local toLocalCFrame = character.PrimaryPart.CFrame:Inverse()
	local min = Vector3.new(math.huge, math.huge, math.huge)
	local max = Vector3.new(-math.huge, -math.huge, -math.huge)
	for _,descendant in pairs(character:GetDescendants()) do
		if descendant:IsA('BasePart') and descendant.CanCollide then
			local localCFrame = toLocalCFrame * descendant.CFrame
			local size = Vector3.new(descendant.Size.X / 2, descendant.Size.Y / 2, descendant.Size.Z / 2)
			local vertices = {
				Vector3.new( size.X,  size.Y,  size.Z),
				Vector3.new( size.X,  size.Y, -size.Z),
				Vector3.new( size.X, -size.Y,  size.Z),
				Vector3.new( size.X, -size.Y, -size.Z),
				Vector3.new(-size.X,  size.Y,  size.Z),
				Vector3.new(-size.X,  size.Y, -size.Z),
				Vector3.new(-size.X, -size.Y,  size.Z),
				Vector3.new(-size.X, -size.Y, -size.Z)
			}
			for _,vertex in ipairs(vertices) do
				local v = localCFrame * vertex
				min = minV(min, v)
				max = maxV(max, v)
			end
		end
	end
	local r = max - min
	if r.X < 0 or r.Y < 0 or r.Z < 0 then return nil end
	return r
end


Prompt: -- An hour in seconds

Response:
local RESHOWING_FREQUENCY = 60*60

function calculateShowTimes()
	local timeUntilNextShow = nil
	local timeIntoShow = nil
	local currentTime = DateTime.now().UnixTimestampMillis/1000
	local timeUntilFirstShow = FIRST_EVER_SHOW - currentTime
	if timeUntilFirstShow > 0 then
		timeUntilNextShow = timeUntilFirstShow
	else
		timeUntilNextShow = timeUntilFirstShow % RESHOWING_FREQUENCY
		timeIntoShow = RESHOWING_FREQUENCY - timeUntilNextShow
	end
	return timeUntilNextShow, timeIntoShow
end

function loadPreShowVenue()
	-- The PreShowVenue scene length needs to be adjusted to match the time until the next show.
	local timeUntilNextShow, timeIntoShow = calculateShowTimes()
	PSV_SCENE:SetAttribute("TimeLength", timeUntilNextShow)
	EventSequencer.loadScene(PSV_SCENE.Name)
end


Prompt:
--edit the function below to return true when you want this response/prompt to be valid
--player is the player speaking to the dialogue, and dialogueFolder is the object containing the dialogue data

Response:
return function(player, dialogueFolder)
	return true
end


Prompt: -- MODULES --

Response:
local partEmitter = require(Modules.PartEmitter)
local partCacheModule = require(Modules.PartCache)
local partCache = partCacheModule.new(script.Part, 100, workspace.Debris)
local SpiralModule = require(Modules.SpiralTrail)


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

Response:
local autoscaling	= false					--Estimates top speed

local UNITS	= {								--Click on speed to change units
											--First unit is default
	{
		units			= "MPH"				,
		scaling			= (10/12) * (60/88)	, -- 1 stud : 10 inches | ft/s to MPH
		maxSpeed		= 120				,
		spInc			= 20				, -- Increment between labelled notches
	},

	{
		units			= "KM/H"			,
		scaling			= (10/12) * 1.09728	, -- 1 stud : 10 inches | ft/s to KP/H
		maxSpeed		= 140				,
		spInc			= 40				, -- Increment between labelled notches
	},

	{
		units			= "SPS"				,
		scaling			= 1					, -- Roblox standard
		maxSpeed		= 160	,
		spInc			= 40				, -- Increment between labelled notches
	}
}


Response:
	 TeamKill = false					--- Enable TeamKill?
	,TeamDmgMult = 1					--- Between 0-1 | This will make you cause less damage if you hit your teammate

	,ReplicatedBullets = true			--- Keep in mind that some bullets will pass through surfaces...

	,AntiBunnyHop = true				--- Enable anti bunny hop system?
	,JumpCoolDown = 1.5					--- Seconds before you can jump again
	,JumpPower = 20						--- Jump power, default is 50

	,RealisticLaser = true				--- True = Laser line is invisible
	,ReplicatedLaser = true
	,ReplicatedFlashlight = true

	,EnableRagdoll = true				--- Enable ragdoll death?
	,TeamTags = false					--- Aaaaaaa
	,HitmarkerSound = false				--- GGWP MLG 360 NO SCOPE xD
	,Crosshair = false					--- Crosshair for Hipfire shooters and arcade modes
	,CrosshairOffset = 5				--- Crosshair size offset


Prompt: --Light off

Response:
	src.right.Value.Value = 0
	src.left.Value.Value = 0
	light.Value = false
	else
	src.right.Value.Value = 1
	src.left.Value.Value = 1
	light.Value = true
	return
	end
end
end)
src.Parent.ChildRemoved:connect(function(child)
	if child.Name=="SeatWeld" then
		src:Stop()
		script.Parent:Destroy()
	end
end)


Prompt: --^^^ Made by Anaminus ^^^---

Response:
function module.getSide(p,s)
	local cf = p.CFrame
	if s.x > 0 then
		return (cf*CFrame.fromAxisAngle(Vector3.new(0,-1,0),math.pi/2)).lookVector
	elseif s.x < 0 then
		return (cf*CFrame.fromAxisAngle(Vector3.new(0,1,0),math.pi/2)).lookVector
	end

	if s.y < 0 then
		return (cf*CFrame.fromAxisAngle(Vector3.new(-1,0,0),math.pi/2)).lookVector
	elseif s.y > 0 then
		return (cf*CFrame.fromAxisAngle(Vector3.new(1,0,0),math.pi/2)).lookVector
	end

	if s.z < 0 then
		return cf.lookVector
	elseif s.z > 0 then
		return -cf.lookVector
	end
end

function module.debounce(func)
	local debounce = false
	return function(...)
		if not debounce then
			debounce = true
			func(...)
			debounce = false
		end
	end
end

function module.part(p)
	local parts = {}
	local function getParts(m)
		for _,v in pairs(m:GetChildren()) do
			if v:IsA("Part") and v ~= p then
				table.insert(parts,#parts+1,v)
			elseif v:IsA("Model") then
				getParts(v)
			end
		end
	end
	getParts(game.Workspace)
	local winner = {}
	for _,q in pairs(parts) do
		local mag = (q.Position-p.Position).magnitude
		if mag < winner[1] then
			winner[1] = mag
			winner[2] = q
		end
	end
	return winner[2]
end

function module.weld(p1,p2)
	local w = Instance.new("Weld")
	w.Part0 = p1
	w.Part1 = p2
	w.C0 = p1.CFrame:inverse() * p2.CFrame
	w.Parent = p1
	return w
end
return module


Prompt: -- Create component

Response:
local Component = Cheer.CreateComponent('BTToolInformationManager', View);

function Component.Start(Core)

	-- Save reference to core API
	getfenv(1).Core = Core;

	-- Return component for chaining
	return Component;

end;

function Component.RegisterSection(SectionName)
	-- Registers triggers for the given section

	-- Get section
	local Section = Component.GetSection(SectionName);

	-- Reset fade timer on hover
	Cheer.Bind(Section.MouseEnter, function ()
		if Component.CurrentSection == Section then
			Component.CurrentFadeTimer = false;
		end;
	end);

	-- Start fade time on unhover
	Cheer.Bind(Section.MouseLeave, function ()
		Component.StartFadeTimer(true);
	end);

end;

function Component.StartFadeTimer(Override)
	-- Creates timer to disappear current section after 2 seconds unless overridden

	if Component.CurrentFadeTimer == false and not Override then
		return;
	end;

	-- Generate unique trigger ID
	local TriggerId = HttpService:GenerateGUID();

	-- Register timer
	Component.CurrentFadeTimer = TriggerId;

	-- Start timer
	Delay(2, function ()
		if Component.CurrentFadeTimer == TriggerId then
			Component.HideCurrentSection();
		end;
	end);

end;

function Component.StartShowTimer(SectionName)
	-- Creates timer to show content after hovering for over half a second

	-- Only override current section if also triggered by hover
	if Component.LastTrigger == 'Click' then
		return;
	end;

	-- Generate unique trigger ID
	local TriggerId = HttpService:GenerateGUID();

	-- Register timer
	Component.CurrentShowTimer = TriggerId;

	-- Start timer
	Delay(0.25, function ()
		if Component.CurrentShowTimer == TriggerId then
			Component.ShowSection(SectionName, 'Hover');
			Component.StartFadeTimer();
		end;
	end);

end;

function Component.ProcessHover(Tool, SectionName)

	-- Only override current section if also triggered by hover
	if Component.LastTrigger == 'Click' then
		return;
	end;

	wait();

	-- Start a show timer
	Component.StartShowTimer(SectionName);

end;

function Component.ShowSection(SectionName, TriggerType)

	-- Hide any current section
	Component.HideCurrentSection();

	-- Get section
	local Section = Component.GetSection(SectionName);

	-- Set new current section
	Component.CurrentSection = Section;
	Component.LastTrigger = TriggerType;

	-- Show the new section
	Section.Visible = true;

end;

function Component.ProcessUnhover(Tool, SectionName)

	-- Clear any other show timer
	Component.CurrentShowTimer = nil;

	-- Only override current section if triggered by a hover
	if Component.LastTrigger == 'Click' then
		return;
	end;

	-- Get section
	local Section = Component.GetSection(SectionName);

	-- Disappear after 2 seconds unless overridden
	if Component.CurrentSection == Section then
		Component.StartFadeTimer();
	end;

end;

function Component.ProcessClick(Tool, SectionName)

	-- Show the new section
	Component.ShowSection(SectionName, 'Click');

	-- Disappear after 2 seconds unless overridden
	Component.StartFadeTimer();

end;

function Component.HideCurrentSection()

	-- Ensure there is a current section
	if not Component.CurrentSection then
		return;
	end;

	-- Hide section
	Component.CurrentSection.Visible = false;

	-- Disable section fade timer if any
	Component.CurrentFadeTimer = nil;

	-- Unregister current section
	Component.CurrentSection = nil;
	Component.LastTrigger = nil;

end;

function Component.GetSection(SectionName)

	-- Return the information section with the given name
	return View:FindFirstChild(SectionName);

end;

return Component;


Prompt:
--// This section of code waits until all of the necessary RemoteEvents are found in EventFolder.
--// I have to do some weird stuff since people could potentially already have pre-existing
--// things in a folder with the same name, and they may have different class types.
--// I do the useEvents thing and set EventFolder to useEvents so I can have a pseudo folder that
--// the rest of the code can interface with and have the guarantee that the RemoteEvents they want
--// exist with their desired names.

Response:
local FFlagFixChatWindowHoverOver = false do
	local ok, value = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserFixChatWindowHoverOver")
	end)
	if ok then
		FFlagFixChatWindowHoverOver = value
	end
end

local FILTER_MESSAGE_TIMEOUT = 60

local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Chat = game:GetService("Chat")
local StarterGui = game:GetService("StarterGui")

local DefaultChatSystemChatEvents = ReplicatedStorage:WaitForChild("DefaultChatSystemChatEvents")
local EventFolder = ReplicatedStorage:WaitForChild("DefaultChatSystemChatEvents")
local clientChatModules = Chat:WaitForChild("ClientChatModules")
local ChatConstants = require(clientChatModules:WaitForChild("ChatConstants"))
local ChatSettings = require(clientChatModules:WaitForChild("ChatSettings"))
local messageCreatorModules = clientChatModules:WaitForChild("MessageCreatorModules")
local MessageCreatorUtil = require(messageCreatorModules:WaitForChild("Util"))

local ChatLocalization = nil
pcall(function() ChatLocalization = require(game:GetService("Chat").ClientChatModules.ChatLocalization) end)
if ChatLocalization == nil then ChatLocalization = {} function ChatLocalization:Get(key,default) return default end end

local numChildrenRemaining = 10 -- #waitChildren returns 0 because it's a dictionary
local waitChildren =
{
	OnNewMessage = "RemoteEvent",
	OnMessageDoneFiltering = "RemoteEvent",
	OnNewSystemMessage = "RemoteEvent",
	OnChannelJoined = "RemoteEvent",
	OnChannelLeft = "RemoteEvent",
	OnMuted = "RemoteEvent",
	OnUnmuted = "RemoteEvent",
	OnMainChannelSet = "RemoteEvent",

	SayMessageRequest = "RemoteEvent",
	GetInitDataRequest = "RemoteFunction",
}


Prompt: -- If you want to know how to retexture a hat, read this:  http://www.roblox.com/Forum/ShowPost.aspx?PostID=10502388

Response:
debounce = true

function onTouched(hit)
	if (hit.Parent:findFirstChild("Humanoid") ~= nil and debounce == true) then
		debounce = false
		h = Instance.new("Hat")
		p = Instance.new("Part")
		h.Name = "Hat"   -- It doesn't make a difference, but if you want to make your place in Explorer neater, change this to the name of your hat.
		p.Parent = h
		p.Position = hit.Parent:findFirstChild("Head").Position
		p.Name = "Handle"
		p.formFactor = 0
		p.Size = Vector3.new(-0,-0,-1)
		p.BottomSurface = 0
		p.TopSurface = 0
		p.Locked = true
		script.Parent.Mesh:clone().Parent = p
		h.Parent = hit.Parent
		h.AttachmentPos = Vector3.new(0,-0.07,0) -- Change these to change the positiones of your hat, as I said earlier.
		wait(5)		debounce = true
	end
end

script.Parent.Touched:connect(onTouched)


Prompt:
--[[
-- the player touched events which utilise active zones at the moment may change to the new CanTouch method for parts in the future
-- hence im disabling this as it may be depreciated quite soon
function ZoneController.getActiveZones()
	local zonesArray = {}
	for zone, _ in pairs(activeZones) do
		table.insert(zonesArray, zone)
	end
	return zonesArray
end
--]]

Response:
function ZoneController.getCharacterRegion(player)
	local char = player.Character
	local head = char and char:FindFirstChild("Head")
	local hrp = char and char:FindFirstChild("HumanoidRootPart")
	if not(hrp and head) then return nil end
	local headY = head.Size.Y
	local hrpSize = hrp.Size
	local charSize = (hrpSize * Vector3.new(2, 2, 1)) + Vector3.new(0, headY, 0)
	local regionCFrame = hrp.CFrame * CFrame.new(0, headY/2 - hrpSize.Y/2, 0)
	local charRegion = RotatedRegion3.new(regionCFrame, charSize)
	return charRegion, regionCFrame, charSize
end

function ZoneController.getTouchingZones(player, onlyActiveZones, recommendedDetection)
	local exitDetection = playerExitDetections[player]
	playerExitDetections[player] = nil
	local finalDetection = exitDetection or recommendedDetection
	local charRegion
	if finalDetection == enum.Detection.WholeBody then
		charRegion = ZoneController.getCharacterRegion(player)
	else
		local char = player.Character
		local hrp = char and char:FindFirstChild("HumanoidRootPart")
		local regionCFrame = hrp and hrp.CFrame
		charRegion = regionCFrame and RotatedRegion3.new(regionCFrame, Vector3.new(0.1, 0.1, 0.1))
	end
	if not charRegion then return {} end
	--[[
	local part = Instance.new("Part")
	part.Size = charSize
	part.CFrame = regionCFrame
	part.Anchored = true
	part.CanCollide = false
	part.Color = Color3.fromRGB(255, 0, 0)
	part.Transparency = 0.4
	part.Parent = workspace
	game:GetService("Debris"):AddItem(part, 2)
	--]]
	local partsTable = (onlyActiveZones and activeParts) or allParts
	local partToZoneDict = (onlyActiveZones and activePartToZone) or allPartToZone
	local parts = charRegion:FindPartsInRegion3WithWhiteList(partsTable, #partsTable)
	if #parts > 0 then
		local hrp = player.Character.HumanoidRootPart
		local hrpCFrame = hrp.CFrame
		local hrpSizeX = hrp.Size.X
		local pointsToVerify
		if finalDetection == enum.Detection.WholeBody then
			pointsToVerify = {
				(hrpCFrame * CFrame.new(-hrpSizeX, 0, 0)).Position,
				(hrpCFrame * CFrame.new(hrpSizeX, 0, 0)).Position,
			}
		else
			pointsToVerify = {
				hrp.Position,
			}
		end
		if not ZoneController.verifyTouchingParts(pointsToVerify, parts) then
			return {}
		end
	end
	local zonesDict = {}
	local touchingPartsDictionary = {}
	for _, part in pairs(parts) do
		local correspondingZone = partToZoneDict[part]
		if correspondingZone then
			zonesDict[correspondingZone] = true
			touchingPartsDictionary[part] = correspondingZone
		end
	end
	local touchingZonesArray = {}
	local newExitDetection
	for zone, _ in pairs(zonesDict) do
		if newExitDetection == nil or zone._currentExitDetection < newExitDetection then
			newExitDetection = zone._currentExitDetection
		end
		table.insert(touchingZonesArray, zone)
	end
	if newExitDetection then
		playerExitDetections[player] = newExitDetection
	end
	return touchingZonesArray, touchingPartsDictionary
end

function ZoneController.getHeightOfParts(tableOfParts)
	local maxY
	local minY
	for _, groupPart in pairs(tableOfParts) do
		local partHeight = groupPart.Size.Y + 10
		local partYHalf = partHeight/2
		local partTopY = groupPart.Position.Y + partYHalf
		local partBottomY = groupPart.Position.Y - partYHalf
		if maxY == nil or partTopY > maxY then
			maxY = partTopY
		end
		if minY == nil or partBottomY < minY then
			minY = partBottomY
		end
	end
	local height = maxY - minY
	return height, minY, maxY
end

function ZoneController.vectorIsBetweenYBounds(vectorToCheck, tableOfParts)
	local height, minY, maxY = ZoneController.getHeightOfParts(tableOfParts)
	local raycastParams = RaycastParams.new()
	raycastParams.FilterDescendantsInstances = tableOfParts
	raycastParams.FilterType = Enum.RaycastFilterType.Whitelist
	for i = 1, 2 do
		local startVector = Vector3.new(vectorToCheck.X, (i == 1 and maxY) or minY, vectorToCheck.Z)
		local directionVector = Vector3.new(0, (i == 1 and -height) or height, 0)
		local raycastResult = workspace:Raycast(startVector, directionVector, raycastParams)
		local vectorY = vectorToCheck.Y
		local intersectionY = (raycastResult and raycastResult.Position.Y)
		if not intersectionY or (i == 1 and vectorY > intersectionY) or (i == 2 and vectorY < intersectionY) then
			return false
		end
	end
	return true
end

function ZoneController.verifyTouchingParts(vectorsToCheck, tableOfParts)
	-- Region3 checks are unreliable for some baseparts such as MeshParts and UnionOperations, therefore
	-- we perform additional raycast checks to confirm whether the touching parts are actually within the zone
	local classesToCheck = {
		MeshPart = true,
		UnionOperation = true,
	}
	local additionalCheckRequired = true
	for _, part in pairs(tableOfParts) do
		if not classesToCheck[part.ClassName] then
			additionalCheckRequired = false
		end
	end
	if not additionalCheckRequired then
		return true
	end
	for _, vector in pairs(vectorsToCheck) do
		if ZoneController.vectorIsBetweenYBounds(vector, tableOfParts) then
			return true
		end
	end
	return false
end

return ZoneController