Neko Ui
Key RequiredUniversal Patched

Neko Ui

Universal ScriptAstellAstell 4.2K views 2.5K executesUpdated Nov 23, 2025
Unrated
00
Lua Script•630 lines (18126 chars)
function find_player(target)
	local target = target:lower()

	for i,v in pairs(game:GetService("Players"):GetPlayers()) do
		if v.DisplayName:lower():match("^"..tostring(target)) or v.Name:lower():match("^"..tostring(target)) then
			target = v
			break
		end
	end
	return tostring(target)
end

--{{Vars}}--
local TweenService = game:GetService("TweenService")

--local ModelsRequire = game:GetObjects("rbxassetid://8920559849")
--local MFolder = ModelsRequire[1]
--local GUI = MFolder

 local GUI = script.Parent
local ScreenSize = GUI.AbsoluteSize
GUI.MainFrame.Presets.Message.Size = UDim2.new(1,0,0,ScreenSize.Y*GUI.MainFrame.Size.Y.Scale*GUI.MainFrame["Message List"].Size.Y.Scale/7)
local CommandMessagePreset = GUI.MainFrame.Presets.Message

local MainFrame = GUI.MainFrame
local CommandBar = MainFrame.AutoCommand.Command
local AutoCommandbar = MainFrame.AutoCommand
local MessageList = MainFrame["Message List"]
local CloseButton = MainFrame.Top.Close
local f = "function"
local mouse = game.Players.LocalPlayer:GetMouse()
local Sizem = MainFrame.Size.X.Scale

NameProperties = {["Frame1"] = {Position = UDim2.new(0,0,-0.15,0)}, ["Frame2"] = {Position = UDim2.new(0,0,0,0)}}
CloseProperites = {["Frame1"] = {TextTransparency = 1}, ["Frame2"] = {TextTransparency = 0}}
FrameProperties = {["Frame1"] = {Size = UDim2.new(0,0,MainFrame.Size.Y.Scale,0)}, ["Frame2"] = {Size = UDim2.new(Sizem,0, MainFrame.Size.Y.Scale, 0)}}
CMDBARPROPERTIES = {["Frame1"] = {Position = UDim2.new(0,0,1.2,0)}, ["Frame2"] = {Position = UDim2.new(0,0,0.8,0)}}
ICON_PROPERTIES = {["Frame1"] = {TextTransparency = 1, Position = UDim2.new(0,0,2,0)},["Frame2"] = {TextTransparency = 0, Position = UDim2.new(0,0,0,0)}}

IconText_PROPERTIES = {["Frame1"] = {TextTransparency = 1,Position = UDim2.new(2,0,0.461,0)},["Frame2"] = {TextTransparency = 0,Position = UDim2.new(0.498, 0,0.461, 0)}}
ICON_PROPERTIES2 = {["Frame1"] = {Position = UDim2.new(0,0,0,0)},["Frame2"] = {Position = UDim2.new(-0.145, 0,0, 0)}}
local PlayerClipping = false
local Noclipping = false
local Flying = false
local flyspeed = 50
local seizure = false
local disaster = false
local spinning = false
--{{Vars}}--







--{{Drag}}--
spawn(function()
	local UserInputService = game:GetService("UserInputService")
	local runService = (game:GetService("RunService"));

	local gui = MainFrame
	local fr = GUI.MainFrame.Top

	local dragging
	local dragInput
	local dragStart
	local startPos

	function Lerp(a, b, m)
		return a + (b - a) * m
	end;

	local lastMousePos
	local lastGoalPos
	local DRAG_SPEED = (8); -- // The speed of the UI darg.
	function Update(dt)
		if not (startPos) then return end;
		if not (dragging) and (lastGoalPos) then
			gui.Position = UDim2.new(startPos.X.Scale, Lerp(gui.Position.X.Offset, lastGoalPos.X.Offset, dt * DRAG_SPEED), startPos.Y.Scale, Lerp(gui.Position.Y.Offset, lastGoalPos.Y.Offset, dt * DRAG_SPEED))
			return 
		end;

		local delta = (lastMousePos - UserInputService:GetMouseLocation())
		local xGoal = (startPos.X.Offset - delta.X);
		local yGoal = (startPos.Y.Offset - delta.Y);
		lastGoalPos = UDim2.new(startPos.X.Scale, xGoal, startPos.Y.Scale, yGoal)
		gui.Position = UDim2.new(startPos.X.Scale, Lerp(gui.Position.X.Offset, xGoal, dt * DRAG_SPEED), startPos.Y.Scale, Lerp(gui.Position.Y.Offset, yGoal, dt * DRAG_SPEED))
	end;

	fr.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragStart = input.Position
			startPos = gui.Position
			lastMousePos = UserInputService:GetMouseLocation()

			input.Changed:Connect(function()
				if input.UserInputState == Enum.UserInputState.End then
					dragging = false
				end
			end)
		end
	end)

	gui.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
			dragInput = input
		end
	end)

	runService.Heartbeat:Connect(Update)
end)
--{{Drag}}--


local chat = function(MSG,the)
	game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(MSG, the)
end


local MakeTween = function(timetack,easingstyle,easingdirection,repeats,flipflop)
	local newtween = TweenInfo.new(
		timetack, 
		easingstyle, 
		easingdirection, 
		repeats, 
		flipflop, 
		0 
	)
	return newtween
end
local DOTWEEN = function(Thing,tween,value)
	TweenService:Create(Thing,tween,value):Play()
end



function RootPart()
	return game.Players.LocalPlayer.Character.HumanoidRootPart
end
function Humanoid()
	return game.Players.LocalPlayer.Character.Humanoid
end



function find_command(command)
	if string.len(command)>1 then
		for i,v in pairs(command_table) do
			if i:match("^"..tostring(command)) then
				AutoCommandbar.Text = i
				break
			else
				AutoCommandbar.Text = ""
			end
		end
	else
		AutoCommandbar.Text = ""
	end
end
function execute(f,...)
	command_table[f]["function"](unpack(...))
end
function step()
	game:GetService("RunService").Stepped:wait()
	return
end
CommandBar.Changed:Connect(function(Change)
	if Change == "Text" then
		find_command(CommandBar.Text)
	end
end)
CommandBar.FocusLost:Connect(function(key)
	if key then
		local Command = CommandBar.Text
		CommandBar.Text = ""
		local values = string.split(Command," ")
		local c = values[1]
		table.remove(values,1)
		execute(c,values)
	end
end)

function Add_Message(MSG)
	local NewMessage = CommandMessagePreset:Clone()
	NewMessage.Text = MSG
	NewMessage.Parent = MessageList
end
function makehelpmenu()
	local NewHelpList = GUI.MainFrame.Presets["Help Menu"]:Clone()
	NewHelpList.Top.Close.cb.MouseButton1Click:Connect(function()
		NewHelpList:Destroy()
	end)







	spawn(function()
		local UserInputService = game:GetService("UserInputService")
		local runService = (game:GetService("RunService"));

		local gui = NewHelpList
		local fr = NewHelpList.Top

		local dragging
		local dragInput
		local dragStart
		local startPos

		function Lerp(a, b, m)
			return a + (b - a) * m
		end;

		local lastMousePos
		local lastGoalPos
		local DRAG_SPEED = (8); -- // The speed of the UI darg.
		function Update(dt)
			if not (startPos) then return end;
			if not (dragging) and (lastGoalPos) then
				gui.Position = UDim2.new(startPos.X.Scale, Lerp(gui.Position.X.Offset, lastGoalPos.X.Offset, dt * DRAG_SPEED), startPos.Y.Scale, Lerp(gui.Position.Y.Offset, lastGoalPos.Y.Offset, dt * DRAG_SPEED))
				return 
			end;

			local delta = (lastMousePos - UserInputService:GetMouseLocation())
			local xGoal = (startPos.X.Offset - delta.X);
			local yGoal = (startPos.Y.Offset - delta.Y);
			lastGoalPos = UDim2.new(startPos.X.Scale, xGoal, startPos.Y.Scale, yGoal)
			gui.Position = UDim2.new(startPos.X.Scale, Lerp(gui.Position.X.Offset, xGoal, dt * DRAG_SPEED), startPos.Y.Scale, Lerp(gui.Position.Y.Offset, yGoal, dt * DRAG_SPEED))
		end;

		fr.InputBegan:Connect(function(input)
			if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
				dragging = true
				dragStart = input.Position
				startPos = gui.Position
				lastMousePos = UserInputService:GetMouseLocation()

				input.Changed:Connect(function()
					if input.UserInputState == Enum.UserInputState.End then
						dragging = false
					end
				end)
			end
		end)

		gui.InputChanged:Connect(function(input)
			if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
				dragInput = input
			end
		end)

		runService.Heartbeat:Connect(Update)
	end)












	local thing = 0
	for i,v in pairs(command_table) do
		thing += 1
		local NewHelpMessage = MainFrame.Presets.HelpMessage:Clone()

		local NewFrame = NewHelpMessage.NewFrame
		NewFrame.text.Text = command_table[i]["Info"]

		local Hover = false

		NewHelpMessage.MouseEnter:Connect(function()
			NewFrame.Parent = GUI
			Hover = true 
			while Hover == true do
				NewFrame.Position = UDim2.new(0,mouse.X+12,0,mouse.Y + 28)
				step()
			end
		end)
		NewHelpMessage.MouseLeave:Connect(function()
			Hover = false
			NewFrame.Parent = NewHelpMessage
		end)
		NewHelpMessage.Size =  UDim2.new(1,0,0,ScreenSize.Y*NewHelpList.Size.Y.Scale*NewHelpList["Message List"].Size.Y.Scale/10)
		NewHelpMessage.Text = i
		NewHelpMessage.Parent = NewHelpList["Message List"]
		NewHelpList["Message List"].CanvasSize += UDim2.new(0,0,0,ScreenSize.Y*NewHelpList.Size.Y.Scale*NewHelpList["Message List"].Size.Y.Scale/10)
	end
	NewHelpList.Parent = GUI
end


command_table = {
	["help"] = {[f] = function()
		makehelpmenu()
	end,
	["Info"] = "Why are you reading this???"},
	["pclip"] = {[f] = function()
		Add_Message("playerclipping enabled")	
		if PlayerClipping == false then
			PlayerClipping = true 
			while PlayerClipping == true do
				for i,plr in pairs(game.Players:GetChildren()) do
					for i,v in pairs(plr.Character:GetChildren()) do
						coroutine.resume(coroutine.create(function()
							v["CanCollide"] = false
						end))
					end
				end
				step()
			end
		end
	end,
	["Info"] = "Clip Players (like noclip but better)"},

	["noclip"] = {[f] = function()
		Add_Message("noclip enabled")	
		if Noclipping == false then
			Noclipping = true 
			while Noclipping == true do
				for i,v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do
					coroutine.resume(coroutine.create(function()
						v["CanCollide"] = false
					end))
				end
				step()
			end
		end
	end,
	["Info"] = "Makes your player have no collision"},

	["unnoclip"] = {[f] = function()
		Add_Message("noclip disabled")	
		Noclipping = false
	end,
	["Info"] = "Stops noclip"},

	["unpclip"] = {[f] = function()
		Add_Message("playerclipping disabled")	
		PlayerClipping = false
	end,
	["Info"] = "Stops pclip"},

	["lightmode"] = {[f] = function()
		for i,v in pairs(GUI:GetDescendants()) do
			coroutine.resume(coroutine.create(function()
				v.BackgroundColor3 = Color3.new(255,255,255)
			end))
			coroutine.resume(coroutine.create(function()
				v.TextColor3 = Color3.new(255,255,255)
			end))
		end
	end,
	["Info"] = ":)"},

	["walkspeed"] = {[f] = function(speed)
		game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid").WalkSpeed = speed
		Add_Message("Set walkspeed to "..speed)	
	end,
	["Info"] = "Sets walk speed"},

	["jumppower"] = {[f] = function(power)
		game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid").JumpPower = power
		Add_Message("Set jump power to "..power)		
	end,
	["Info"] = "Sets jump power"},

	["fly"] = {[f] = function()
		local BG = Instance.new('BodyGyro',RootPart())
		local BV = Instance.new('BodyVelocity',RootPart())
		BG.MaxTorque = Vector3.new(math.huge,math.huge,math.huge)
		BG.P = 1e4
		BG.CFrame = RootPart().CFrame
		BV.Velocity = Vector3.new(0,0,0)
		BV.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
		Flying = true
		game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid").PlatformStand = true


		Add_Message("Begun Flying")
		while Flying == true do
			step()
			local FW = Humanoid().MoveDirection
			local W1 = FW* workspace.CurrentCamera.CFrame.LookVector
			local W2 = FW* workspace.CurrentCamera.CFrame.RightVector
			local WVA = W1.X+W1.Z


			BV.Velocity = Vector3.new(FW.X,workspace.CurrentCamera.CFrame.LookVector.Y*WVA,FW.Z)*flyspeed
			BG.CFrame = workspace.CurrentCamera.CoordinateFrame
		end
		BG:Destroy()
		BV:Destroy()
		game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid").PlatformStand = false
	end,
	["Info"] = "Enables Flying"},

	["flyspeed"] = {[f] = function(speed)
		flyspeed = speed
		Add_Message("Set flyspeed to "..speed)	
	end,
	["Info"] = "sets flight speed"},

	["unfly"] = {[f] = function()
		Flying = false
		Add_Message("stopped flying")	
	end,
	["Info"] = "Stops flying"},

	["reset"] = {[f] = function()
		game.Players.LocalPlayer.Character:FindFirstChildWhichIsA("Humanoid").Health = 0
	end,
	["Info"] = "Self explanatory but kills your character."},

	["reload"] = {[f] = function()
		local Start = RootPart().CFrame
		game.Players.LocalPlayer.Character:Destroy()
		game.Players.LocalPlayer.CharacterAdded:Wait()
		game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart").CFrame = Start
	end,
	["Info"] = "Resets your character in the same position"},
	["sit"] = {[f] = function()
		Humanoid().Sit = true	
	end,
	["Info"] = "Makes you sit"},
	["owo"] = {[f] = function()
		for i = 1,10 do
			chat("owo","All")
		end	
	end,
	["Info"] = "makes you spam owo in chat"},
	["uwu"] = {[f] = function()
		for i = 1,10 do
			chat("uwu","All")
		end	
	end,
	["Info"] = "makes you spam uwu in chat"},
	["seizure"] = {[f] = function()
		Humanoid().PlatformStand = true
		seizure = true
		while seizure == true do
			step()
			if math.random(1,500) > 450 then
				RootPart().AssemblyAngularVelocity = Vector3.new(math.random(-50,50),math.random(-50,50),math.random(-50,50))
			end
		end
	end,
	["Info"] = "Makes you spaz out O_O"},
	["unseizure"] = {[f] = function()
		Humanoid().PlatformStand = false
		seizure = false
	end,
	["Info"] = "Stops the seizure"},
	["random"] = {[f] = function()
		local commands = {}
		for i,v in pairs(command_table) do
			table.insert(commands,i)
		end
		local command = commands[math.random(1,#commands)]
		Add_Message("running "..command)
		execute(command,{})
	end,
	["Info"] = "runs a random command"},
	["disaster"] = {[f] = function()
		local commands = {}
		for i,v in pairs(command_table) do
			if i ~= "disaster" and i ~= "random" and i ~= "undisaster" then
				table.insert(commands,i)
				end
		end
		disaster = true
		Add_Message("Disaster activated. You have 10 seconds")
		while disaster == true do
			wait(10)
			for i =1,3 do	
		local command = commands[math.random(1,#commands)]
		Add_Message("running "..command)
			execute(command,{})
			end
			end
	end,
	["Info"] = "runs 3 random commands every 10 seconds."},
	["undisaster"] = {[f] = function()
		disaster = false
	end,
	["Info"] = "stops the pain"},
	["spin"] = {[f] = function(amount)
		if spinning == false then
			spinning = true
			Add_Message("You spin me right round baby rig-")
		while spinning == true do
			step()
			RootPart().CFrame *= CFrame.Angles(0,amount,0)
			end
			end
	end,
	["Info"] = "SPEEEEEEEEEEE-"},
	["unspin"] = {[f] = function()
		spinning = false
	end,
	["Info"] = "stops spinning"},
	["fov"] = {[f] = function(amount)
		Add_Message("Set the fov to "..amount)
	workspace.CurrentCamera.FieldOfView = amount
	end,
	["Info"] = "sets fov"},
	["maxfov"] = {[f] = function()
		Add_Message("MAX FOV")
		workspace.CurrentCamera.FieldOfView = 9999999
	end,
	["Info"] = "use this if you dont want to see"},
	["nofov"] = {[f] = function()
		Add_Message("i cant see")
		workspace.CurrentCamera.FieldOfView = 9999999
	end,
	["Info"] = "use this if you dont want to see"},
	["anchor"] = {[f] = function()
		Add_Message("anchored body")
		RootPart().Anchored = true
	end,
	["Info"] = "anchor yourself"},
	["unanchor"] = {[f] = function()
		Add_Message("unanchored body")
		RootPart().Anchored = false
	end,
	["Info"] = "unanchor yourself"},
	["flip"] = {[f] = function()
		Humanoid():ChangeState("Jumping")
		wait()
		Humanoid().Sit = true
		for i = 1,360 do
			delay(i/720,function()
				Humanoid().Sit = true
				RootPart().CFrame = RootPart().CFrame * CFrame.Angles(0.0174533,0,0)
			end)
		end
		wait(0.55)
		Humanoid().Sit = false
	end,
	["Info"] = "DO A FLIP BRO!"},
	["backflip"] = {[f] = function()
		Humanoid():ChangeState("Jumping")
		wait()
		Humanoid().Sit = true
		for i = 1,360 do
			delay(i/720,function()
				Humanoid().Sit = true
				RootPart().CFrame = RootPart().CFrame * CFrame.Angles(-0.0174533,0,0)
			end)
		end
		wait(0.55)
		Humanoid().Sit = false
	end,
	["Info"] = "DO A BACKFLIP BRO!"},
}

local closing = false
CloseButton.cb.MouseButton1Click:Connect(function()
	if closing == false then
		closing = true
		local tween = MakeTween(0.4,Enum.EasingStyle.Cubic,Enum.EasingDirection.Out,0,false)
		DOTWEEN(MainFrame.Top.Icon,tween,{Position = UDim2.new(0,0,1,0)})
		DOTWEEN(MainFrame.Top.Icon.Namee,tween,{Position = UDim2.new(0.08, 0,-1, 0)})
		DOTWEEN(MainFrame.Top.Close,tween,{Position = UDim2.new(1.5,0,0,0)})

		DOTWEEN(MainFrame.Top,tween,{Position = UDim2.new(0,0,-0.5,0)})
		wait(0.7)
		DOTWEEN(MainFrame,tween,{Size = UDim2.new(0.35, 0,0, 0)})
		wait(0.4)
		DOTWEEN(MainFrame,tween,{Size = UDim2.new(0, 0,0, 0)})
		wait(0.4)
		GUI:Destroy()
	end
end)
function DoTweenFromPropTable(Instanc,Tab,tim)
	for i,v in pairs(Tab["Frame1"]) do
		coroutine.resume(coroutine.create(function()
			Instanc[i] = v
		end))
	end

	DOTWEEN(Instanc,MakeTween(tim,Enum.EasingStyle.Sine,Enum.EasingDirection.InOut,0,false),Tab["Frame2"])
end

function SetPropertiesFromPropTable(Instanc,Tab)
	for i,v in pairs(Tab["Frame1"]) do
		coroutine.resume(coroutine.create(function()
			Instanc[i] = v
		end))
	end
end
--- Opening

SetPropertiesFromPropTable(MainFrame,FrameProperties)
SetPropertiesFromPropTable(MainFrame.Top,NameProperties)
SetPropertiesFromPropTable(AutoCommandbar,CMDBARPROPERTIES)
SetPropertiesFromPropTable(CloseButton,CloseProperites)
SetPropertiesFromPropTable(MainFrame.MainIcon,ICON_PROPERTIES)
SetPropertiesFromPropTable(MainFrame.MainIcon.NekoTex,IconText_PROPERTIES)
coroutine.resume(coroutine.create(function()
	GUI.Parent = game:GetService("CoreGui"):FindFirstChild("RobloxGui")	
end))


DoTweenFromPropTable(MainFrame,FrameProperties,1)

--DoTweenFromPropTable(MainFrame.MainIcon,ICON_PROPERTIES,0.7)
--DoTweenFromPropTable(MainFrame.MainIcon,ICON_PROPERTIES2,0.7)
--DoTweenFromPropTable(MainFrame.MainIcon.NekoTex,IconText_PROPERTIES,0.7)
wait(1.2)
--DoTweenFromPropTable(MainFrame.MainIcon,{["Frame1"] = {},["Frame2"] = {TextTransparency = 1}},1)
--DoTweenFromPropTable(MainFrame.MainIcon.NekoTex,{["Frame1"] = {},["Frame2"] = {TextTransparency = 1}},1)


DoTweenFromPropTable(MainFrame.Top,NameProperties,1)
DoTweenFromPropTable(AutoCommandbar,CMDBARPROPERTIES,1)
wait(1)
Add_Message("Thank you for using Neko UI V1 by Creo")
Add_Message('Type "help" in the command bar to view all commands!')
DoTweenFromPropTable(CloseButton,CloseProperites,0.5)

---

Features & Information

all credits go to creo for making this

Community Comments (4)

rory_chorurory_choruDec 7, 2025

where are you supposed to paste this in at

Replying to @rory_choru
Bean1Bean1Dec 23, 2025

@rory_choru ur executor

Holdmydrink1911Holdmydrink1911Mar 24, 2026

Doesn't work

Replying to @Holdmydrink1911
AstellAstellMar 28, 2026

@Holdmydrink1911 ik it broke and im not fixing it

More Scripts for Universal Scripts