Hey there! Maybe you know HD Admin. I am trying to understand how HD Admin works. I thought there would be a script for each command, but there isn’t! I show you all the scripts of HD Admins:
--[[
For information on how to setup and use HD Admin, visit:
https://devforum.roblox.com/t/HD/216819
--]]
(This is useless but I said all scripts.) - The script is named “About”. - Normal script. - Under the HD Admin file.
--[[
--------------| ABOUT RANKS |--------------
RANK | DEFAULT NAME | COMMANDS | EXTRA DETAILS
-------------------------------------------------------------------------------------------------------------------
5 | Owner | All | Is automtically set. The Owner has full access to commands and features.
-------------------------------------------------------------------------------------------------------------------
4 | HeadAdmin | 1,2,3,4 |
3 | Admin | 1,2,3 |
2 | Mod | 1,2 | Can only use commands on one person at a time.
1 | VIP | 1 | Can only use commands on theirself.
-------------------------------------------------------------------------------------------------------------------
0 | NonAdmin | 0 | The default rank. Players are limited to basic features.
--------------| SETUP RANKS |-------------- ]] return{
-- RANK, RANK NAMES & SPECIFIC USERS
Ranks = {
{5, "Owner", };
{4, "HeadAdministrator", {"",0}, };
{3, "Administrator", {"",0}, };
{2, "Helper", {"",0}, };
{1, "Tester", {"",0}, };
{0, "Player", };
};
-- GAMEPASSES
Gamepasses = {
[0] = "VIP";
};
-- ASSETS
Assets = {
[0] = "VIP";
};
-- GROUPS
Groups = {
[0] = {
[254] = "Admin";
[1] = "VIP";
};
};
-- FRIENDS
Friends = "NonAdmin";
-- VIP SERVER OWNER
VipServerOwner = "NonAdmin";
-- FREE ADMIN
FreeAdmin = "NonAdmin";
--------------| BANLAND |--------------
Banned = {"",0};
--------------| SYSTEM SETTINGS |--------------
Prefix = ";"; -- The character you use before every command (e.g. ';jump me').
SplitKey = " "; -- The character inbetween command arguments (e.g. setting it to '/' would change ';jump me' to ';jump/me').
BatchKey = ""; -- The character inbetween batch commands (e.g. setting it to '|' would change ';jump me ;fire me ;smoke me' to ';jump me | ;fire me | ;smoke me'
QualifierBatchKey = ","; -- The character used to split up qualifiers (e.g. ;jump player1,player2,player3)
Theme = "Blue"; -- The default UI theme.
NoticeSoundId = 2865227271; -- The SoundId for notices.
NoticeVolume = 0.1; -- The Volume for notices.
NoticePitch = 1; -- The Pitch/PlaybackSpeed for notices.
ErrorSoundId = 2865228021; -- The SoundId for error notifications.
ErrorVolume = 0.1; -- The Volume for error notifications.
ErrorPitch = 1; -- The Pitch/PlaybackSpeed for error notifications.
AlertSoundId = 9161622880; -- The SoundId for alerts.
AlertVolume = 0.5; -- The Volume for alerts.
AlertPitch = 1; -- The Pitch/PlaybackSpeed for alerts.
WelcomeBadgeId = 0; -- Award new players a badge, such as 'Welcome to the game!'. Set to 0 for no badge.
CommandDebounce = true; -- Wait until the command effect is over to use again. Helps to limit abuse & lag. Set to 'false' to disable.
SaveRank = true; -- Saves a player's rank in the server they received it. (e.g. ;rank plrName rank). Use ';permRank plrName rank' to permanently save a rank. Set to 'false' to disable.
LoopCommands = 3; -- The minimum rank required to use LoopCommands.
MusicList = {}; -- Songs which automatically appear in a user's radio. Type '!radio' to display the radio.
ThemeColors = { -- The colours players can set their HD Admin UI (in the 'Settings' menu). | Format: {ThemeName, ThemeColor3Value};
{"Red", Color3.fromRGB(150, 0, 0), };
{"Orange", Color3.fromRGB(150, 75, 0), };
{"Brown", Color3.fromRGB(120, 80, 30), };
{"Yellow", Color3.fromRGB(130, 120, 0), };
{"Green", Color3.fromRGB(0, 120, 0), };
{"Blue", Color3.fromRGB(0, 100, 150), };
{"Purple", Color3.fromRGB(100, 0, 150), };
{"Pink", Color3.fromRGB(150, 0, 100), };
{"Black", Color3.fromRGB(60, 60, 60), };
};
Colors = { -- The colours for ChatColors and command arguments. | Format: {"ShortName", "FullName", Color3Value};
{"r", "Red", Color3.fromRGB(255, 0, 0) };
{"o", "Orange", Color3.fromRGB(250, 100, 0) };
{"y", "Yellow", Color3.fromRGB(255, 255, 0) };
{"g", "Green" , Color3.fromRGB(0, 255, 0) };
{"dg", "DarkGreen" , Color3.fromRGB(0, 125, 0) };
{"b", "Blue", Color3.fromRGB(0, 255, 255) };
{"db", "DarkBlue", Color3.fromRGB(0, 50, 255) };
{"p", "Purple", Color3.fromRGB(150, 0, 255) };
{"pk", "Pink", Color3.fromRGB(255, 85, 185) };
{"bk", "Black", Color3.fromRGB(0, 0, 0) };
{"w", "White", Color3.fromRGB(255, 255, 255) };
};
ChatColors = { -- The colour a player's chat will appear depending on their rank. '["Owner"] = "Yellow";' makes the owner's chat yellow.
[5] = "Yellow";
};
Cmdbar = 1; -- The minimum rank required to use the Cmdbar.
Cmdbar2 = 3; -- The minimum rank required to use the Cmdbar2.
ViewBanland = 3; -- The minimum rank required to view the banland.
OnlyShowUsableCommands = false; -- Only display commands equal to or below the user's rank on the Commands page.
RankRequiredToViewPage = { -- || The pages on the main menu ||
["Commands"] = 0;
["Admin"] = 0;
["Settings"] = 0;
};
RankRequiredToViewRank = { -- || The rank categories on the 'Ranks' subPage under Admin ||
["Owner"] = 0;
["HeadAdmin"] = 0;
["Admin"] = 0;
["Mod"] = 0;
["VIP"] = 0;
};
RankRequiredToViewRankType = { -- || The collection of loader-rank-rewarders on the 'Ranks' subPage under Admin ||
["Owner"] = 0;
["SpecificUsers"] = 5;
["Gamepasses"] = 0;
["Assets"] = 0;
["Groups"] = 0;
["Friends"] = 0;
["FreeAdmin"] = 0;
["VipServerOwner"] = 0;
};
RankRequiredToViewIcon = 0;
WelcomeRankNotice = true; -- The 'You're a [rankName]' notice that appears when you join the game. Set to false to disable.
WelcomeDonorNotice = true; -- The 'You're a Donor' notice that appears when you join the game. Set to false to disable.
WarnIncorrectPrefix = true; -- Warn the user if using the wrong prefix | "Invalid prefix! Try using [correctPrefix][commandName] instead!"
DisableAllNotices = false; -- Set to true to disable all HD Admin notices.
ScaleLimit = 4; -- The maximum size players with a rank lower than 'IgnoreScaleLimit' can scale theirself. For example, players will be limited to ;size me 4 (if limit is 4) - any number above is blocked.
IgnoreScaleLimit = 3; -- Any ranks equal or above this value will ignore 'ScaleLimit'
CommandLimits = { -- Enables you to set limits for commands which have a number argument. Ranks equal to or higher than 'IgnoreLimit' will not be affected by Limit.
["fly"] = {
Limit = 10000;
IgnoreLimit = 3;
};
["fly2"] = {
Limit = 10000;
IgnoreLimit = 3;
};
["noclip"] = {
Limit = 10000;
IgnoreLimit = 3;
};
["noclip2"] = {
Limit = 10000;
IgnoreLimit = 3;
};
["speed"] = {
Limit = 10000;
IgnoreLimit = 3;
};
["jumpPower"] = {
Limit = 10000;
IgnoreLimit = 3;
};
};
VIPServerCommandBlacklist = {"permRank", "permBan", "globalAnnouncement"}; -- Commands players are probihited from using in VIP Servers.
GearBlacklist = {67798397}; -- The IDs of gear items to block when using the ;gear command.
IgnoreGearBlacklist = 4; -- The minimum rank required to ignore the gear blacklist.
PlayerDataStoreVersion = "V1.0"; -- Data about the player (i.e. permRanks, custom settings, etc). Changing the Version name will reset all PlayerData.
SystemDataStoreVersion = "V1.0"; -- Data about the game (i.e. the banland, universal message system, etc). Changing the Version name will reset all SystemData.
CoreNotices = { -- Modify core notices. You can find a table of all CoreNotices under [MainModule > Client > SharedModules > CoreNotices]
--NoticeName = NoticeDetails;
};
--------------| MODIFY COMMANDS |--------------
SetCommandRankByName = {
--["jump"] = "VIP";
};
SetCommandRankByTag = {
--["abusive"] = "Admin";
};
};
The main script I think. - Module script. - The script is named “Settings”. - Normal script. - Under the HD Admin file.
--[[
This loads HD Admin into your game.
Require the 'HD Admin MainModule' by the HD Admin group for automatic updates.
You can view the HD Admin Main Module here:
https://www.roblox.com/library/3239236979/HD
--]]
local loaderFolder = script.Parent.Parent
local mainModule = require(3239236979)
mainModule:Initialize(loaderFolder)
loaderFolder:Destroy()
I think this isn’t useful to understand how it works but i don’t know. - The script is named “Loader”. - Normal script. - Under the HD Admin file then the Settings module script.
-- << RETRIEVE FRAMEWORK >>
local main = _G.HDAdminMain
-- << CLIENT COMMANDS >>
local module = {
----------------------------------------------------------------------
["commandName1"] = {
Function = function(speaker, args)
end;
};
----------------------------------------------------------------------
["commandName2"] = {
Function = function(speaker, args)
end;
};
----------------------------------------------------------------------
};
-- << SETUP >>
for commandName, command in pairs(module) do
command.Name = commandName
end
return module
I don’t think this will be helpfull too. - The script is named “ClientCommands”. - Module script. - Under the HD Admin file, then the CustomFeatures configuration, then the Client file, then the Modules [1] (they are two “Modules” files so this one is the first one) file.
-- << RETRIEVE FRAMEWORK >>
local main = _G.HDAdminMain
-- << EVENTS >>
local module = {
----------------------------------------------------------------------
["EventName"] = function(bindable, parent, ...)
end;
----------------------------------------------------------------------
["EventName"] = function(bindable, parent, ...)
end;
----------------------------------------------------------------------
};
return module
I don’t understand was this do . - The script is named “Events”. - Module script. - Under the HD Admin file, then the CustomFeatures configuration, then the Client file, then the SharedModules file.
-- << RETRIEVE FRAMEWORK >>
local main = _G.HDAdminMain
local settings = main.settings
-- << COMMANDS >>
local module = {
-----------------------------------
{
Name = "";
Aliases = {};
Prefixes = {settings.Prefix};
Rank = 1;
RankLock = false;
Loopable = false;
Tags = {};
Description = "";
Contributors = {};
--
Args = {};
Function = function(speaker, args)
end;
UnFunction = function(speaker, args)
end;
--
};
-----------------------------------
{
Name = "";
Aliases = {};
Prefixes = {settings.Prefix};
Rank = 1;
RankLock = false;
Loopable = false;
Tags = {};
Description = "";
Contributors = {};
--
Args = {};
--[[
ClientCommand = true;
FireAllClients = true;
BlockWhenPunished = true;
PreFunction = function(speaker, args)
end;
Function = function(speaker, args)
wait(1)
end;
--]]
--
};
-----------------------------------
};
return module
It is named Commands so I think this is important. - The script is named “Commands”. - Module script. - Under the HD Admin file, then the CustomFeatures configuration, then the Client file, then the Modules [2] (they are two “Modules” files so this one is the second one) file.
This is a long post, maybe I included some useless scripts or indications, but I prefer to include everything so I’m sure to don’t miss anything.
(Also I modified the script for example I changed I changed the ranks names to my own rank name, but that shouldn’t change how HD Admin works.)
Thanks for reading!!