Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kaladoodotlua/KCSH/llms.txt

Use this file to discover all available pages before exploring further.

KCSH constructs its entire UI programmatically using Roblox Instance.new() calls — there is no Roblox Studio .rbxm file or pre-built model involved. Understanding the instance tree helps if you want to fork the script or extend it with new buttons.

Instance Tree

Every object is created at runtime and parented directly into CoreGui so that the GUI survives game resets and sits above all in-game UI (DisplayOrder = 2147483647).
CoreGui
└── ScreenGui ("KCSH", DisplayOrder=2147483647, ResetOnSpawn=true)
    └── Frame ("d", 300×312.5, 50% transparent white, 25px corner radius)
        ├── UICorner (CornerRadius=0,25)
        ├── UIPadding (10px all sides)
        └── ScrollingFrame ("f", AutomaticCanvasSize=Y, ScrollBarThickness=0)
            ├── UIListLayout (Horizontal, FillDirection, HorizontalFlex=Fill, Padding=10)
            ├── TextLabel ("1") — title "kaladoos clientside hub"
            ├── TextButton ("2") — float
            ├── TextButton ("3") — sit
            ├── TextButton ("4") — fly
            ├── TextButton ("5") — slow walk
            ├── TextButton ("6") — sprint
            ├── TextButton ("7") — high jump
            ├── TextButton ("8") — launch iy
            ├── TextButton ("9") — super spin
            ├── TextButton ("10") — reset
            ├── TextButton ("11") — jorkin
            ├── TextLabel ("98") — "Player Teleports"
            └── Frame ("99") — player teleport buttons container
                └── UIListLayout (Horizontal, HorizontalFlex=Fill)
The ScrollingFrame (f) uses AutomaticCanvasSize = Enum.AutomaticSize.Y so the canvas grows downward automatically as buttons are added. ScrollBarThickness = 0 hides the scrollbar while still allowing scroll. The UIListLayout inside it uses Wraps = true and FillDirection = Horizontal, causing buttons to wrap onto new rows when the frame width is exceeded. The player teleport container (Frame "99") shares the same wrapping horizontal layout, but is populated dynamically: one button per player currently in the server, updated live via Players.PlayerAdded and Players.PlayerRemoving events.

Helper Functions

Two private helper functions — maketext and makebutton — are defined once and reused for every element in the scroll frame, keeping the UI construction code concise.

maketext(parent, text, size, name)

Creates a TextLabel and parents it immediately. Used for section headers and the hub title.
PropertyValue
Texttext argument
SizeUDim2.new(1, 0, 0, 50) — full width, 50px tall
Namename argument
BackgroundTransparency1 (invisible background)
BorderSizePixel0
TextSizesize argument
FontEnum.Font.BuilderSans
RichTexttrue
local function maketext(parent, text, size, name)
	local b = Instance.new("TextLabel")
	b.Text = text
	b.Size = UDim2.new(1, 0, 0, 50)
	b.Name = name
	b.BackgroundTransparency = 1
	b.BorderSizePixel = 0
	b.TextSize = size
	b.Font = Enum.Font.BuilderSans
	b.RichText = true
	b.Parent = parent
end

makebutton(parent, text, name)

Creates a TextButton with a rounded background and parents it immediately. Also adds a child UICorner for the 15px radius. Used for every interactive feature toggle and the player teleport buttons.
PropertyValue
Texttext argument
SizeUDim2.new(0, 100, 0, 50) — fixed 100×50px
Namename argument
BackgroundTransparency0.5
BackgroundColor3Color3.fromRGB(255, 255, 255) (white)
BorderSizePixel0
TextSize20
FontEnum.Font.BuilderSans
RichTexttrue
UICorner.CornerRadiusUDim.new(0, 15)
local function makebutton(parent, text, name)
	local b = Instance.new("TextButton")
	b.Text = text
	b.Size = UDim2.new(0, 100, 0, 50)
	b.Name = name
	b.BackgroundTransparency = 0.5
	b.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
	b.BorderSizePixel = 0
	b.TextSize = 20
	b.Font = Enum.Font.BuilderSans
	b.RichText = true
	b.Parent = parent
	local c = Instance.new("UICorner")
	c.Parent = b
	c.CornerRadius = UDim.new(0, 15)
end

Dragging System

The main frame (d) is draggable via a three-variable state machine: dragging (boolean), dragStart (the cursor position when the drag began), and startPos (the frame’s Position when the drag began). Drag startd.InputBegan fires when any input hits the frame. If the input type is MouseButton1, dragging is set to true, and both reference positions are captured. A secondary input.Changed listener resets dragging to false when the button is released. Drag moveuis.InputChanged fires globally for every input change. When dragging is true and the input type is MouseMovement, the cursor delta is computed and a TweenService tween smoothly animates the frame to its new position over 0.3 seconds using the Quad easing style with Out direction.
local ts = game:GetService("TweenService")
local uis = game:GetService("UserInputService")
local dragging = false
local dragStart
local startPos

d.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		dragStart = input.Position
		startPos = d.Position
		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then
				dragging = false
			end
		end)
	end
end)

uis.InputChanged:Connect(function(input)
	if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
		local delta = input.Position - dragStart
		ts:Create(d, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
			Position = UDim2.new(
				startPos.X.Scale,
				startPos.X.Offset + delta.X,
				startPos.Y.Scale,
				startPos.Y.Offset + delta.Y
			)
		}):Play()
	end
end)
The tween approach means the frame glides into position rather than snapping, giving it a polished feel even though the underlying logic is straightforward.

RichText Status Colors

All toggle buttons use Roblox’s RichText markup to embed a colored state indicator directly inside the button label. Because RichText = true is set on every button created by makebutton, standard HTML-like font tags are interpreted by the TextButton renderer.
StateTagColor
Off<font color='#a63131'><b>off</b></font>Red #a63131
On<font color='#39a637'><b>on</b></font>Green #39a637
When a button is created, its initial text already contains the “off” tag. On click, the handler swaps the entire .Text string to the “on” variant, and back again on the next click:
-- Initial state (passed to makebutton)
"float <font color='#a63131'><b>off</b></font>"

-- After first click (set inside MouseButton1Click handler)
f["2"].Text = "float <font color='#39a637'><b>on</b></font>"

-- After second click (toggled back)
f["2"].Text = "float <font color='#a63131'><b>off</b></font>"
This pattern is identical across every toggle button (float, sit, fly, slow walk, sprint, high jump), making it easy to extend: create a button with makebutton, track a boolean, and swap the .Text string in a MouseButton1Click handler.

Build docs developers (and LLMs) love