The Ultimate Basic Admin Essentials Guide

Hey there! Could you send me the link to the module you found?

Module Loading Issue

There is an issue that has appeared in the past few days which is due to the main module being setup as a Package and not as an actual model which is now no longer able to be distributed on the marketplace. It means people can’t load it into their game since the model is privated.

Statement from the creator of Basic Admin Essentials:

“in 2020 i made basic admins main module into a package linked model and roblox just made it so that you can’t have that type of asset as publicly available…it looks like i’m gonna have to migrate the asset id for the main module to a new asset id”

Since if you don’t own the module you can’t import it now, this is a severe problem for people relying on the asset ID from the module and it has caused the admin to break in a lot of games. I’ve uploaded the MainModule as a real model that you can take for free from the creator marketplace for now, linked below.

To put this in your game (and fix your admin), do one of the following:

  1. Take the model above and import it into your game. Drag it under the original Basic Admin script and change the Loader ID section in that Basic Admin Essentials 2.0 loader script to script.MainModule.
  2. Change the number for Loader ID in your Basic Admin Essentials 2.0 script to the ID of the model above (89905715840090).

I assume the creator of Basic Admin Essentials will migrate the module to a new module as soon as possible and I will change the link/ID above to his official model when this is the case.

cc @Evxtra @bgonzalezseeya11

6 Likes

I have an issue,

local Plugin = function(...)
	local Data = {...}

	local remoteEvent = Data[1][1]
	local remoteFunction = Data[1][2]
	local returnPermissions = Data[1][3]
	local Commands = Data[1][4]
	local Prefix = Data[1][5]
	local actionPrefix = Data[1][6]
	local returnPlayers = Data[1][7]
	local cleanData = Data[1][8] 
	local pluginName = 'uniform'
	local pluginPrefix = actionPrefix
	local pluginLevel = 1
	local pluginUsage = "<Gender>" 
	local pluginDescription = ""
	local playerService = game:GetService('Players')
	local function pluginFunction(Args)
		local Player = Args[1]
		local gender = Args[3]		
		print(gender)
		if gender == 'male' or 'Male' then
			Player.Character.Shirt.ShirtTemplate = script.male.ShirtM.ShirtTemplate
			Player.Character.Pants.PantsTemplate = script.male.pantsm.PantsTemplate	
			print(Player.Name.. " has put on the male uniform.")
		end
		if  gender == "female" or "Female" then	
			Player.Character.Shirt.ShirtTemplate = script.female.shirtf.ShirtTemplate
			Player.Character.Pants.PantsTemplate = script.female.pantsf.PantsTemplate
			print(Player.Name.. " has put on the female uniform")
		end
	end


	local descToReturn
	if pluginUsage ~= "" then
		descToReturn = pluginPrefix..pluginName..' '..pluginUsage..'\n'..pluginDescription
	else
		descToReturn = pluginPrefix..pluginName..'\n'..pluginDescription
	end

	return pluginName,pluginFunction,pluginLevel,pluginPrefix,{pluginName,pluginUsage,pluginDescription}
end




return Plugin

image
it does both when i do !uniform male, and yes i checked, shirt and pants are different assets

When doing if statements in Luau, you must specify each condition individually. What’s happening under the hood with your current script is that it’s checking if the gender is equal to “male”, but the second condition is a string (always a truthy value) so the check for male is always true.

There are two ways you can fix this:

  1. Convert the string into lowercase so that the input case doesn’t matter (recommended)
  2. Check both conditions using “or” (if gender == "male" or gender == "Male" then)

Here’s how you’d do option 1 which is best as the input case shouldn’t matter in this scenario.

local function pluginFunction(Args)
    local Player = Args[1]
    local gender = Args[3]

    if string.lower(gender) == "male" then
        Player.Character.Shirt.ShirtTemplate = script.male.ShirtM.ShirtTemplate
	    Player.Character.Pants.PantsTemplate = script.male.pantsm.PantsTemplate	
	    print(Player.Name.. " has put on the male uniform.")
    elseif string.lower(gender) == "female" then
        Player.Character.Shirt.ShirtTemplate = script.female.shirtf.ShirtTemplate
	    Player.Character.Pants.PantsTemplate = script.female.pantsf.PantsTemplate
	    print(Player.Name.. " has put on the female uniform")
    end
end

Oh thanks! char limmit!!!111111

I believe there is a custom model made for sticky messages and it was public before, here’s the script:

--[[
	
	 ____                                   
	/\  _`\                    __           
	\ \ \L\ \     __      ____/\_\    ___   
	 \ \  _ <'  /'__`\   /',__\/\ \  /'___\ 
	  \ \ \L\ \/\ \L\.\_/\__, `\ \ \/\ \__/ 
	   \ \____/\ \__/.\_\/\____/\ \_\ \____\
	    \/___/  \/__/\/_/\/___/  \/_/\/____/
	                                        
	            
	Admin Essentials v2
	Plugin Documentation
	*coming soon^tm
	
	If you have any questions regarding Plugins, contact TheFurryFish.
	
--]]

local Plugin = function(...)
	local Data = {...}
	
	local ReplicatedStorage = game:GetService("ReplicatedStorage")
	local StickyEvent = ReplicatedStorage:WaitForChild("StickyMessage")
	local FetchSticky = ReplicatedStorage:WaitForChild("FetchSticky")
	
	local Sticky = false
	local StickyMessage = ""
	local StickyPlayer
	
	-- Included Functions and Info --
	local remoteEvent = Data[1][1]
	local remoteFunction = Data[1][2]
	local returnPermissions = Data[1][3]
	local Commands = Data[1][4]
	local Prefix = Data[1][5]
	local actionPrefix = Data[1][6]
	local returnPlayers = Data[1][7]
	local cleanData = Data[1][8] -- cleanData(Sender,Receiver,Data)
	-- Practical example, for a gui specifically for a player, from another player
	-- cleanData(Sender,Receiver,"hi") -- You need receiver because it's being sent to everyone
	-- Or for a broadcast (something everyone sees, from one person, to nobody specific)
	-- cleanData(Sender,nil,"hi") -- Receiver is nil because it is a broadcast
	
	-- Plugin Configuration --
	local pluginName = 'n'
	local pluginPrefix = Prefix
	local pluginLevel = 2
	local pluginUsage = "<Message?>" -- leave blank if the command has no arguments
	local pluginDescription = "Allow for a sticky hint to be placed at the top of the screen"
	
	-- Example Plugin Function --
	local function pluginFunction(Args) -- keep the name of the function as "pluginFunction"
		local Player = Args[1]
		
		if Args[3] then
			local combinedMessage

			for a,b in pairs(Args) do
				if a >= 3 then
					if not combinedMessage then
						combinedMessage = b
					else
						combinedMessage = combinedMessage..' '..b
					end
				end
			end
		
			
			for a,b in next, game:GetService("Players"):GetPlayers() do
				local Cleaned,newData = cleanData(combinedMessage,Player,b)
				local cleansedData = ""
				local cannotShow = false
				
				if Cleaned and newData then
					cleansedData = newData
				elseif not Cleaned then
					if newData and newData:lower():match('cannot communicate with') then
						cannotShow = true
						StickyEvent:FireClient(b, true, Player, 'Your chat settings prevent you from seeing messages.')
					else
						if not newData then
							
							remoteEvent:FireClient(Player,'Hint', "Warning",'Your chat settings prevent you from sending messages.')
							return
						else
							cleansedData = newData
						end
					end
				end
				
				if not cannotShow then
					StickyEvent:FireAllClients(true, Player, cleansedData)
					Sticky = true
					StickyMessage = combinedMessage
					StickyPlayer = Player
				end
			end
		else
			StickyEvent:FireAllClients(false, Player, "")
			Sticky = false
			StickyMessage = ""
			StickyPlayer = nil
		end
	end
	
	FetchSticky.OnServerInvoke = function(Player)
		local Cleaned, newData = cleanData(StickyMessage, Player, nil)
		
		local cleansedData = ""
		local cannotShow = false

		if Cleaned and newData then
			cleansedData = newData
		elseif not Cleaned then
			if newData and newData:lower():match('cannot communicate with') then
				cannotShow = true
				StickyEvent:FireClient(Player, true, Player, 'Your chat settings prevent you from seeing messages.')
			else
				cannotShow = true
			end
		end

		if not cannotShow then
			return {
				Active = Sticky,
				Message = cleansedData,
				Player = StickyPlayer
			}
		end
	end
	
	-- Return Everything to the MainModule --
	local descToReturn
	if pluginUsage ~= "" then
		descToReturn = pluginPrefix..pluginName..' '..pluginUsage..'\n'..pluginDescription
	else
		descToReturn = pluginPrefix..pluginName..'\n'..pluginDescription
	end
	
	return pluginName,pluginFunction,pluginLevel,pluginPrefix,{pluginName,pluginUsage,pluginDescription}
end

return Plugin

just make sure to create a remote function and remote event inside of replicatedstorage, rf naming: FetchSticky and re naming: StickyMessage

i pretty much recommend updating the script if necessary since it is kinda old

Furthermore, the developer can implement the module without any package linked to it (or atleast works for me) by using the command in the output:

game:GetService("InsertService"):LoadAsset(563619835).Parent = game.ServerStorage -- user can parent this anywhere

I think thats a free model. char limit

it was indeed a free model, but i cannot find it anywhere in the toolbox

What happened to the main module asset?

It was uploaded as a package which can no longer be distributed on the marketplace. You can fix this by referring to my post below.

The Ultimate Basic Admin Essentials Guide - #45 by LegendOJ1

I know this is out of your control,
but whenever you modify the bae main module, and upload it to roblox you get a warning because it’s “misuse of roblox’s sytems” “sexual content” “spam” and more.

Are there any solutions to logs and chat logs not fully showing for mobile players after enabling copy and pasting?

This is a slightly more complicated thing to achieve so I’ve made a video explaining how you might go about achieving this type of functionality. By no means is this the best solution and it still needs improvement if you want to emulate the PC behavior exactly, but it should be at least a good starting point for restoring the functionality on mobile.

2 Likes

How do you set up trello bans?

Wow! This solutions works really well! Although there are some limitations but I think it does the job right. Thank you so much!

So recently I was editing the BAE Donor Template UI, and I for some reason have experienced a new bug that has never occurred to me before and I was wondering if its Roblox studios fault or smth on my end!

So the bug was that when I opened up the Donor UI And it was all weirdly placed!
image

But donating in studio testing everything worked perfectly fine anyone got ideas?

Do you have a tutorial for adding cooldowns to ban kick pban commands?

Don’t forget to add “Temporary Bans & Migration to the new Ban API” :wink:

I have a stickymessage guide here - Basic Admin Essentials StickyMessage - The Full Guide

How can I teleport teams? As Im making a training center and im needing to teleport specific teams through a command. Is that possible?