yes help would be appreciated with this
Extremely helpful, thank you so much! Cannot wait to see the sticky message and new ban API implemented!
When is the Sticky Message command coming…?
Does anyone know how I would add the moderator to the kick message:
Itd probably go "evocor moderation \n 406 \n You have been permanently blacklisted from SSS, you may not join this experience \n Moderator: \n Moderator note:
How exactly would I make it automatically put in the moderators roblox username?
Thanks
This is a bit poorly worded but long story short, how do I add the moderator to the kick messages?
For the migration to the new ban api I’ve spent a while trying to do so and this is what I’ve come up with so far and it does kinda work, any suggested improvements are welcome.
function Funcs.Ban(Args)
local Player = Args[1]
local playerPermissions = returnPermission(Player)
local Victims = returnPlayers(Player,Args[3],Args[2])
local Command = Args[2]
if Command == "unban" then
local UnbanConfig: UnbanConfigType = {
UserIds = { playerService:GetUserIdFromNameAsync(Args[3]) },
ApplyToUniverse = true
}
playerService:UnbanAsync(UnbanConfig)
elseif Command == "ban" then
if not Victims then
remoteEvent:FireClient(Player,'Hint','Error',(Args[3] or 'nil')..' was not found.')
return
end
for a,b in next,Victims do
local victimPermissions = returnPermission(b)
local banConfig: BanConfigType = {
UserIds = {b.UserId},
Duration = tonumber(Args[5]),
DisplayReason = Args[4],
PrivateReason = Args[4],
ExcludeAltAccounts = false
}
if not sysTable.Permissions.Banned[tostring(b.UserId)] and victimPermissions < playerPermissions then
sysTable.Permissions.Banned[tostring(b.UserId)] = b.Name
pluginEvent:Fire("Ban Logs",{Player,"Banned "..b.Name})
playerService:BanAsync(banConfig)
end
end
end
end
Very helpful BAE Guide, thank you.
Hey owen! There is a way to bind the console bar into the top bar, needed the top bar module.
Just add into basic admin client
‘‘‘lua
local icon = (the code for the icon module)
icon.new()
:setLabel(“Silent command”)
:bindEvent(“deselected”, function()
:console()
end)
:oneClick()
‘‘‘
Wrote on my phone so might be wrong.
dm cuzangaming on discord if issues
If you’re binding the console button a topbar icon using TopbarPlus, you should keep in mind that you won’t be able to leverage the functionality that you can with the BindableEvent solution proposed in my original post, because you can’t open the console from outside of the module itself. With my solution, you can.
This is not a bad solution though - if you’re using TopbarPlus and don’t care about accessing the console outside the module, the following code will do it for you:
-- At the bottom of the Basic Admin Client LocalScript
local Icon = require(replicatedStorage.Packages.Icon)
local myIcon = Icon.new()
myIcon:setLabel("Command Bar")
myIcon:bindEvent("selected", function()
myIcon:deselect()
Console()
end)
Hello everybody. I am glad to find this active. Unfortunately, I was late in finding this guide and never knew what I could do with it. Furthermore, the module script has been locked and I did not have it saved in my inventory. This no longer works.
Does anyone have a copy of the module they could share? Does anybody know what happened?
Thank you.
It’s in the toolbox if you click your inv, then click models then packages it should be there. I would show a video but roblox studio is down. Major Outage Affecting Several Components: Studio, Groups, Settings, etc
Thank you! Like I said, I did not have the module in my inventory. I was able to find a modified version on the forum though! Thanks.
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:
- 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 toscript.MainModule
. - 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.
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
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:
- Convert the string into lowercase so that the input case doesn’t matter (recommended)
- 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