Jerold09362 | Advanced Scripter

About Me

Hello! My name is Jerold (preferably Chris), I am an advanced scripter currently working on a few projects. I am a 16 year old male and work in the United States. My main language is English but I know some Spanish and very little German.

Showcase

Here are some of my scripts! They aren’t the best since I want to keep some of my better work hidden to avoid people stealing it.

Custom Notifications
-- << NOTIFICATIONS >>

	local NotifyData = {
		Current = "ROBLOX_SYSTEM";
		Types = {
			[1] = "ROBLOX_SYSTEM";
		};
		Button = getHudObject("ChangeNotify");
	}

	NotifyData.Button.Text = "Change Notify Type: "..string.gsub(NotifyData.Current,"_",""):lower()

	NotifyData.Button.Activated:Connect(function()
		local CurrentPos

		for pos,strtype in pairs(NotifyData.Types) do
			if NotifyData.Current == strtype then
				CurrentPos = pos
			end
		end

		if CurrentPos == #NotifyData.Types then
			CurrentPos = 1
		else
			CurrentPos = CurrentPos+1
		end

		NotifyData.Current = NotifyData.Types[CurrentPos]


		NotifyData.Button.Text = "Change Notify Type: "..string.gsub(NotifyData.Current,"_",""):lower()
	end)

	local function robloxNotify(... : table?)
		Services.StarterGui:SetCore("SendNotification",...)
	end


	Data.Events.NotifyPlayer.OnClientEvent:Connect(function(...)
		if NotifyData.Current == "ROBLOX_SYSTEM" then
			robloxNotify(...)
		end
	end)
Admin Client Script
--[[
this literally runs on a thread, but still runs nevertheless
]]

--// Varaibles

local Remote = game.ReplicatedStorage:WaitForChild("Admin"):WaitForChild("Remote")
local GUIs = game.ReplicatedStorage:WaitForChild("Admin"):WaitForChild("GUIs")
local UserInputService = game:GetService("UserInputService")

script = nil

local Vars = {
	UI = {

		Changelog = [[
	-- Changelog --
	* First version
	* Added Commands
	* Updated Data
	* Edited Variables
	* Added Exploit handling
	]];

		InProgress = [[
	-- Changelog --
	* Command Bar
	* Better Handling
	]];

	};


}

--// Functions

local function initDrag(Gui)
	if Gui and typeof(Gui) == "Instance" and Gui:IsA("Frame") then
		if Gui:FindFirstChild("Header") then
			local Header = Gui.Header
			local connections = {
				IsDragging = false;
				DragInput = nil;
				StartPosition = nil;
				DragStart = nil;
			}

			Header.InputBegan:Connect(function(input)
				if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
					connections.IsDragging = true
					connections.DragStart = input.Position
					connections.StartPosition = Gui.Position

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

			Header.InputChanged:Connect(function(input)
				if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
					connections.DragInput = input
				end
			end)

			UserInputService.InputChanged:Connect(function(input)
				if connections.IsDragging and input == connections.DragInput then
					local Delta = input.Position - connections.DragStart
					Gui:TweenPosition(
						UDim2.new(
						connections.StartPosition.X.Scale,
						connections.StartPosition.X.Offset + Delta.X,
						connections.StartPosition.Y.Scale,
						connections.StartPosition.Y.Offset + Delta.Y
						),
						Enum.EasingDirection.In,
						Enum.EasingStyle.Linear,
						.1,
						false,
						nil
					)
				end
			end)
		else
			warn("Cannot initialize drag for " .. Gui.Name .. ": no header")
		end
	else
		warn("Cannot initialize drag for " .. tostring(Gui) or "nil" .. ": not provided, is not an instance, or is not a valid frame")
	end
end


local function isActive(target, guiName)
	if target then
		print("interface got target: ", target.Name)

		if target.PlayerGui then
			print("interface got playergui")

			if target.PlayerGui:FindFirstChild(guiName) then
				print("Found GUI:", guiName)
				return true
			else
				print("Did not find GUI:", guiName)
				return false
			end
		else
			print("No PlayerGui for target")
		end
	else
		print("No target provided")
	end
end



local Functions = {}

function Functions:SystemHint(text, dur, invoker)
	Remote:FireServer("wrap",game.Players.LocalPlayer, invoker, "showgui","hint", nil, {game.Players.LocalPlayer}, text, dur)
end

function Functions:SystemError(text, type, invoker)
	Remote:FireServer("wrap",game.Players.LocalPlayer,invoker, "showgui", "error", nil, game.Players.LocalPlayer, text, type)
end

function Functions:CommandBar()
	warn("commandbar function ran, firing remote")
	local success,ret = pcall(function()
		Remote:FireServer("wrap",game.Players.LocalPlayer,{Level=0}, "showgui", "commandbar")
	end)
	
	if not success then error(ret) end
end

--// Interfaces

local Interfaces = {
	["cmds"] = function(invoker, config, target, tab)
		print("cmds")
		if not isActive(target, GUIs.Commands.Name) then
			print("not active")
			local new = GUIs.Commands:Clone()
			initDrag(new)
			print("cloned")

			for _, cmd in pairs(tab) do
				print("loading cmd:", cmd.Name)
				local combinedargs = ""

				if cmd.Args then
					for _, arg in pairs(cmd.Args) do
						combinedargs = combinedargs .. " <" .. arg .. ">"
					end
				end

				local fullName = config.Prefix .. cmd.Name .. " " .. combinedargs
				print("Full command name:", fullName)

				local newtemp = new.Clip.Template:Clone()
				newtemp.Name = cmd.Name
				newtemp.Text = fullName

				newtemp.MouseEnter:Connect(function()
					new.HoverDesc.Text = cmd.Description
					new.HoverDesc.Visible = true
				end)

				newtemp.MouseLeave:Connect(function()
					new.HoverDesc.Text = ""
					new.HoverDesc.Visible = false
				end)

				newtemp.Parent = new.Clip

				newtemp.Visible = true
			end

			new.Visible = true
			print("visible")

			new.Parent = target.PlayerGui.AdminGui
			print("parented")

			new.Close.MouseButton1Click:Connect(function()
				new:Destroy()
			end)

			new.Close.TouchTap:Connect(function()
				new:Destroy()
			end)
		end
	end,

	["adminranks"] = function(invoker, config, target, tab)
		print("adminranks")
		if not isActive(target, GUIs.Commands.Name) then
			print("not active")
			local new = GUIs.AdminRanks:Clone()
			initDrag(new)
			print("cloned")

			for _, role in pairs(tab) do
				print("loading rank:", role.Name)

				local newtemp = new.Clip.Template:Clone()
				newtemp.Name = role.Name
				newtemp.Text = role.Name..": "..role.Level

				newtemp.LayoutOrder = role.Level

				newtemp.Parent = new.Clip

				newtemp.Visible = true
			end

			new.Visible = true
			print("visible")

			new.Parent = target.PlayerGui.AdminGui
			print("parented")

			new.Close.MouseButton1Click:Connect(function()
				new:Destroy()
			end)

			new.Close.TouchTap:Connect(function()
				new:Destroy()
			end)
		end
	end,

	["groupranks"] = function(invoker, config, target, tab)
		print("groupranks")
		if not isActive(target, GUIs.Commands.Name) then
			print("not active")
			local new = GUIs.AdminRanks:Clone()
			initDrag(new)
			print("cloned")

			for _, role in pairs(tab) do
				print("loading rank:", role.Name)

				local newtemp = new.Clip.Template:Clone()
				newtemp.Name = role.Name
				newtemp.Text = role.Name..": "..role.Rank

				newtemp.Parent = new.Clip

				newtemp.Visible = true
			end
			new.Header.Text = "-- Group Ranks  --"

			new.Visible = true
			print("visible")

			new.Parent = target.PlayerGui.AdminGui
			print("parented")

			new.Close.MouseButton1Click:Connect(function()
				new:Destroy()
			end)

			new.Close.TouchTap:Connect(function()
				new:Destroy()
			end)
		end
	end,

	["admins"] = function(invoker, config, target, tab)
		print("admins")
		if not isActive(target, GUIs.Commands.Name) then
			print("not active")
			local new = GUIs.Admins:Clone()
			initDrag(new)
			print("cloned")

			for _,admin in pairs(tab) do
				local newTemp = new.Clip.Template:Clone()
				newTemp.Text = admin
				newTemp.Visible = true
				newTemp.Parent = new.Clip
			end

			new.Visible = true
			print("visible")

			new.Parent = target.PlayerGui.AdminGui
			print("parented")

			new.Close.MouseButton1Click:Connect(function()
				new:Destroy()
			end)

			new.Close.TouchTap:Connect(function()
				new:Destroy()
			end)
		end
	end,

	["tools"] = function(invoker, config, target)
		print("tools")
		if not isActive(target, GUIs.Tools.Name) then
			print("not active")
			local new = GUIs.Tools:Clone()
			initDrag(new)
			print("cloned")

			for _,tool in pairs(config.Tools) do
				local newTemp = new.Clip.Template:Clone()
				newTemp.Text = tool.Name
				newTemp.Visible = true
				newTemp.Parent = new.Clip

				newTemp.MouseButton1Click:Connect(function()
					tool:Clone().Parent = target.Backpack
				end)

				newTemp.TouchTap:Connect(function()
					tool:Clone().Parent = target.Backpack
				end)
			end

			new.Visible = true
			print("visible")

			new.Parent = target.PlayerGui.AdminGui
			print("parented")

			new.Close.MouseButton1Click:Connect(function()
				new:Destroy()
			end)

			new.Close.TouchTap:Connect(function()
				new:Destroy()
			end)
		end
	end,

	["hint"] = function(invoker, runner, targets, text, duration)
		local runnerName
		if not runner then runnerName = "SYSTEM" else runnerName = runner.Name end

		local title = "Hint by "..runnerName

		for _,targ in pairs(targets) do
			if not isActive(targ, GUIs.Hint.Name) then
				local new = GUIs.Hint:Clone()
				new.Text.Text = text or ""
				new.HintBy.Text = title
				new.Parent = targ.PlayerGui.AdminGui
				new.Visible = true

				task.wait(duration)
				new:Destroy()
			end
		end
	end,


	["changelog"] = function(invoker, runner)
		local changelog = Vars.UI.Changelog

		if not isActive(runner, GUIs.Changelog.Name) then
			local new = GUIs.Changelog:Clone()
			initDrag(new)
			new.Changelog.Text = string.gsub(changelog, "*","<b> * </b>")

			new.Close.MouseButton1Click:Connect(function()
				new:Destroy()
			end)

			new.Close.TouchTap:Connect(function()
				new:Destroy()
			end)

			new.Visible = true
			new.Parent = runner.PlayerGui.AdminGui
		end
	end,

	

	["error"] = function(invoker, runner, errorText, errorType)
		if not isActive(runner, GUIs.Error.Name) then
			local new = GUIs.Error:Clone()
			initDrag(new)

			if errorType:lower() == "command" then
				new.Text.Text = "<b> Command Error </b>: <u>"..errorText.." </u>"
			elseif errorType:lower() == "scripterror" then
				new.Text.Text = "<b> "..errorText.." </b>"
			end

			new.Parent = runner.PlayerGui.AdminGui
			new.Visible = true

			local waitDur = new.Text.Text
			print(waitDur)
			waitDur = string.gsub(waitDur, "<b>","")
			print(waitDur)
			waitDur = string.gsub(waitDur, "</b>","")
			print(waitDur)
			waitDur = string.gsub(waitDur, "<i>","")
			print(waitDur)
			waitDur = string.gsub(waitDur, "</i>","")
			print(waitDur)
			waitDur = string.gsub(waitDur, "<u>","")
			print(waitDur)
			waitDur = string.gsub(waitDur, "</u>","")
			print(waitDur)

			waitDur = waitDur:len()

			if waitDur > 15 then
				waitDur = 15
			end

			print(tostring(waitDur))



			task.wait(waitDur)

			new:Destroy()
		end
	end,
	
	["commandbar"] = function(invoker)
		if not isActive(game.Players.LocalPlayer, GUIs.CommandBar.Name) then
			local new = GUIs.CommandBar:Clone()
			new.Parent = game.Players.LocalPlayer.PlayerGui.AdminGui
			new.Visible = true
			
			new.InputBox:CaptureFocus()
			
			new.InputBox.FocusLost:Connect(function(enterpressed : boolean)
				if enterpressed then
					local success,ret = pcall(function()
						Remote:FireServer("processcommand", game.Players.LocalPlayer,invoker, new.InputBox.Text)
					end)
					
					if success then
						new.InputBox.Text = "Ran!"
						task.wait(3)
						new:Destroy()
					else
						error(ret)
					end
				end
			end)
		end
	end,
}

--// Core Functions

local showUI = function(uI, ...)
	if type(uI) == "string" then
		warn("ui is string")
		uI = uI:lower()
	elseif type(uI) == "table" then
		warn("ui is table")
		uI = uI.Name:lower()
	end
	if uI then
		print("go ui var:", uI)
		if Interfaces[uI] then
			print("got tab func for:", uI)
			Interfaces[uI](...)
			print("ran interface func")
		else
			print("no tab func for ui provided:", uI)
		end
	else
		print("ui var not provided")
	end
end

--// Remote Handling

local RemoteFunctions = {
	["ShowGui"] = function(...)
		showUI(...)
	end,
}



Remote.OnClientEvent:Connect(function(event,...)
	warn("received admin event from server on client")
	for eventName,eventFunction in pairs(RemoteFunctions) do
		if type(eventName) == "string" and type(eventFunction) == "function" then
			if eventName:lower() == event:lower() then
				eventFunction(...)
			end 
		end
	end
end)

--// Input Handling

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	local success,ret = pcall(function()
		if not gameProcessed and input.KeyCode == Enum.KeyCode.Quote then
			warn("is quote, opening command bar")
			Functions:CommandBar()
		end
	end)
	
	if success then
		warn("successfully processed input")
	else
		error(ret)
	end
end)
GetPlayers Admin Module
local StringMatches = require(script.Parent.StringMatches)

return function(config, runner, arg)
	if runner and arg then

		local target = arg

		if target then
			target = target:lower() 
			local targetInstances = {}

			if target == "all" then
				for _, v in pairs(game.Players:GetPlayers()) do
					table.insert(targetInstances, v)
				end
			elseif target == "others" then
				for _, v in pairs(game.Players:GetPlayers()) do
					if v ~= runner then
						table.insert(targetInstances, v)
					end
				end
				
			elseif target == "me" then
				table.insert(targetInstances, runner)
			elseif target == "" or target == " " then
				table.insert(targetInstances, runner)
			elseif string.sub(target, 1, 1):lower() == "@" then
				local display = string.sub(target, 2)
				
				
				for _, player in pairs(game.Players:GetPlayers()) do
					local displayName = string.lower(player.DisplayName)

					if displayName:lower() == display then
						table.insert(targetInstances, player)
					end
				end
			else
				for _, player in pairs(game.Players:GetPlayers()) do
					local username = string.lower(player.Name)
					local displayName = string.lower(player.DisplayName)

					if username == target or string.find(username, target) or string.find(displayName, target) then
						table.insert(targetInstances, player)
					end
				end
			end

			return targetInstances
		end
	end

	return nil 
end

Availability

On the weekends, I am available around 8 AM - 8 PM. On weekdays, I am available around 3 PM - 7:30 PM due to schooling. My timezone is Eastern Standard Time.

Payment

Prices are negotiable, I prefer the payment to be in robux (Since most of the time online transactions for real world money require you to be 18+).

Contact

Discord: chrig09362
Developer Forum: @jerold09362
Twitter (X): Chris09362 (Chris_gaming.rblx)