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)