Advanced Admin Script Showcase

No, I do not, as I am a solo developer.

Oh, alright! Will you make it a model so people can use it?

1 Like

Probably not because it requires you to have a discord server, express server, a database, Lua scripts, and a bunch of requirements. And I also don’t really like my things open-sourced, but I’m sure somebody will release something just like this someday!

Alrighty! May you add me on Discord? So we can chat more off-forum. spec!#1436

1 Like

dude this is so cool i have never seen like that in my life
may be you can make a game in roblox which can be played on discord using commands like u use for dankmemer

1 Like

I mean it would be possible but the problem is every packet would be sent every like 450 requests per minute aka 1 request every 0.125 seconds. Meaning that the average player would have a ping of 150. And some people in Roblox have pings of like 220 so that means pings of 250 for bad connections. I mean it would be playable but competitive wouldn’t be so good.

1 Like

That’s a pretty solid system then.

As for getting the area around the player what I do is I turn the area around the player into text like a basic part saver. I use palls to retrieve all the properties and this is then combined, this text can then loaded. Saving this way is very quick which means I could even take multiple captures over the course of a few seconds to basically spectate the player from another server. This isn’t exactly compatible with discord though, you could save and retrieve the data from discord but you would have to be in game to load all the parts.

You are using webhooks so if the players account is linked to their discord account in the database you can call the players name and have the bot respond. You can then react with emojis and the bot can detect that.

Every player who is banned or has a rank is in the database. If you ban a user not in database, it checks if that user exists in Roblox first then it creates a new file in the database for that user. Did you create a custom image format for your capturing feature?

No, rather than taking a litteral picture it turns everything into text.

For example
PartType:Property1:Property2

Its a very common method, most check the part type then get each property but that means doing over 255 if statements along with a bunch of other stuff. Instead I just take the the part type and then check its properties as this saves a lot of lines, it makes no real difference performance wise.

The data could be sent to discord but without robloxs workspace it would be problematic to actually view. Im not saying its impossible to view it in discord but I will say it wouldnt be worth the time it would consume not to mention most likely another third party would be used to turn the text into a usable image.

Ah okay. Also I think converting to discord would require you to turn it into a JSON table and do a lot of crazy stuff on the backend.

It would be worth doing it for in game, the amount of exploiters and glitch abusers I’ve caught with it is insane. It is a bit of a lengthily script but I can see if I’ve still got the auto writing thing I made to write over 2k lines in about 30 seconds.

My Repeat Writing Thing To Make Part Save/Load
-- ScriptingHelper

List = {
	"Adornee",
	"AlwaysOnTop",
	"Anchored",
	"AnchorPoint",
	"Angle",
	"AngularActuatorType",
	"AngularLimitsEnabled",
	"AngularVelocity",
	"AnimationId",
	"ApplyAtCenterOfMass",
	"Archivable",
	"Attachment0",
	"Attachment1",
	"AttachmentFoward",
	"AttachmentPos",
	"AttachmentUp",
	"Orientation",
	"PlayOnRemove",
	"Force",
	"InFocusRadius",
	"LayoutOrder",
	"HeadColor",
	"HeadColor3",
	"AutoAssignable",
	"AutoButtonColor",
	"AutoJumpEnabled",
	"AutoLocalize",
	"AutoRotate",
	"Axes",
	"BackgroundColor3",
	"BackgroundTransparency",
	"BaseTextureId",
	"BehaviourType",
	"BlastPressure",
	"BlastRadius",
	"BodyPart",
	"BorderColor3",
	"BorderMode",
	"BorderSizePixel",
	"BottomImage",
	"BreakJointsOnDeath",
	"BrickColor",
	"Brightness",
	"CameraOffset",
	"CanBeDropped",
	"CanCollide",
	"CanvasPosition",
	"CanvasSize",
	"CartoonFactor",
	"CastShadow",
	"CelestialBodiesShown",
	"ClearTextOnFocus",
	"ClipsDescendants",
	"Coils",
	"Color3",
	"CoilsCollisionFidelity",
	"Color",
	"Contrast",
	"ConversationDistance",
	"CurrentAngle",
	"CursorPosition",
	"CurveSize0",
	"CurveSize1",
	"D",
	"Damping",
	"DesiredAngle",
	"DestoryJointRadiusPercent",
	"Disabled",
	"DisplayDistanceType",
	"DisplayName",
	"ElasticBehavior",
	"DisplayOrder",
	"EmitterSize",
	"Enabled",
	"ExplosionType",
	"ExtentsOffset",
	"ExtentsOffsetWorldSpace",
	"Face",
	"FaceCamera",
	"Faces",
	"FarIntensity",
	"FocusDistance",
	"Font",
	"FocusDistance",
	"FreeLength",
	"GoodbyeChoiceActive",
	"GoodbyeDialog",
	"Graphic",
	"GripFoward",
	"GripPos",
	"GripRight",
	"GripUp",
	"HeadsUpDisplay",
	"HealthDisplayDistance",
	"HealthDisplayType",
	"Heat",
	"Height",
	"HorizontalScrollBarInset",
	"HoverImage",
	"IgnoreGuiInset",
	"Image",
	"ImageColor3",
	"ImagePressed",
	"ImageRectOffset",
	"ImageTransparency",
	"InclinationAngle",
	"InitialPrompt",
	"Intensity",
	"InUse",
	"InverseSquareLaw",
	"JumpPower",
	"LeftArmColor",
	"LeftArmColor3",
	"Length",
	"LeftLegColor",
	"LeftLegColor3",
	"LightEmission",
	"LightInfluence",
	"LineHeight",
	"LineThickness",
	"Locked",
	"Looped",
	"Magnitude",
	"ManualActiavationOnly",
	"Massless",
	"Material",
	"MaxActivationDistance",
	"MaxAngularVelocity",
	"MaxDistance",
	"MaxForce",
	"MaxFrictionTorque",
	"MaxSpeed",
	"MaxThrust",
	"MaxVelocity",
	"MeshId",
	"MeshType",
	"MidImage",
	"MaxTorque",
	"Modal",
	"MoonAngularSize",
	"MoonTextureId",
	"Name",
	"NameDisplayDistance",
	"NameOcclusion",
	"MultiLine",
	"NearIntensity",
	"NextSelectionDown",
	"NextSelectionLeft",
	"NextSelectionRight",
	"NextSelectionUp",
	"OffsetStudsU",
	"OffsetStudsV",
	"Opacity",
	"OveralyTextureId",
	"P",
	"PantsTemplate",
	"Parent",
	"Part0",
	"Part1",
	"PixelsPerStud",
	"PlaceholderColor3",
	"PlaceholderText",
	"PlaybackSpeed",
	"PlatformStand",
	"PlayerToHideFrom",
	"Playing",
	"Position",
	"PrimaryAxisOnly",
	"Purpose",
	"Radius",
	"ReactionForceEnabled",
	"ReactionTorqueEnabled",
	"Range",
	"Reflectance",
	"RenderFidelity",
	"RequiresHandle",
	"RelativeTo",
	"ResetOnSpawn",
	"ResponseDialog",
	"Responsiveness",
	"Restitution",
	"RightArmColor",
	"RightLegColor3",
	"RigidityEnabled",
	"RightArmColor3",
	"RightLegColor",
	"RigType",
	"RiseVelocity",
	"RollOffMode",
	"RotationAxisVisible",
	"Saturation",
	"Scale",
	"ScaleType",
	"ScrollBarImageColor3",
	"ScrollBarImageTransparency",
	"ScrollBarThickness",
	"ScrollingDirection",
	"ScrollingEnabled",
	"SecondaryColor",
	"Segments",
	"Selectable",
	"Selected",
	"SelectionImageObject",
	"Shadows",
	"ShirtTemplate",
	"ShowNativeInput",
	"Sit",
	"Size",
	"SizeConstraint",
	"SizeRelativeOffset",
	"SizingMode",
	"SizeOffset",
	"SkyboxBk",
	"SkyboxDn",
	"SkyboxFt",
	"SkyboxLf",
	"SkyboxRt",
	"SkyboxUp",
	"SlectionStart",
	"SliceScale",
	"SoundGroup",
	"SoundId",
	"SparkleColor",
	"Spread",
	"StarCount",
	"Steer",
	"SteerFloat",
	"Stiffness",
	"StudsPerTileU",
	"StudsPerTileV",
	"Style",
	"SunAngularSize",
	"SurfaceColor3",
	"SurfaceTransparency",
	"Target",
	"TargetOffset",
	"TargetPoint",
	"TargetRadius",
	"TargetSurface",
	"TeamColor",
	"Text",
	"TextColor3",
	"TextEditable",
	"TextScaled",
	"TextSize",
	"TextStrokeColor3",
	"TextStrokeTransparency",
	"TextTransparency",
	"TextTruncate",
	"Texture",
	"TextureID",
	"TextureLength",
	"TextureMode",
	"TextureSpeed",
	"TextWrapped",
	"TextXAlignment",
	"TextYAlignment",
	"Thickness",
	"Threshold",
	"Throttle",
	"ThrottleFloat",
	"ThrustD",
	"ThrustP",
	"TimePosition",
	"TintColor",
	"TimePosition",
	"Tone",
	"ToolPunchThroughDistance",
	"ToolTip",
	"TopImage",
	"TorsoColor",
	"TorsoColor3",
	"Transparency",
	"TriggerDistance",
	"TriggerOffset",
	"TurnD",
	"TurnP",
	"TurnSpeed",
	"UseJumpPower",
	"UserDialog",
	"Value",
	"Velocity",
	"VertexColor",
	"Visible",
	"VerticalScrollBarInset",
	"VerticalScrollBarPosition",
	"Width0",
	"Width1",
	"Volume",
	"ZIndex",
	"ZIndexBehavior",
	"ZOffset",
}


function ReplaceRepeat(List)
	for i = 1,#List do
		local Replace = List[i]
		local TTR1 = "success, response = pcall(function()"
		local TTR2 = "	if P." .. Replace .." == nil then"
		local TTR3 = "	else"
		local TTR4 = ""
		local TTR5 = "  end"
		local TTR6 = "end)"
		local TTR7 = "if success then"
		local TTR8 = "  Text = ".."'"..Replace.."'" .. "..';' ..tostring(P.".. Replace..")"
		local TTR9 = "  table.insert(Properties,Text)"
		local TTR10 = "  success = nil"
		local TTR11 = "end"
		print(TTR1)
		print(TTR2)
		print(TTR3)
		print(TTR4)
		print(TTR5)
		print(TTR6)
		print(TTR7)
		print(TTR8)
		print(TTR9)
		print(TTR10)
		print(TTR11)
		print("")
		wait(0.1)
	end
end

function ReplaceRepeat2(List)
	for i = 1,#List do
		local Replace = List[i]
		local TTR1 = "success, response = pcall(function()"
		local TTR2 = "	if Split[1] == '".. Replace .."' then"
		local TTR0 = "  NewP.".. Replace .." = GetOriginalValue(Split,NewP.".. Replace .. ")"
		local TTR3 = "	else"
		local TTR4 =     "Error = Error .. 'ErrorMaker'"
		local TTR5 = "  end"
		local TTR6 = "end)"
		local TTR7 = "if success then"
		local TTR8 = ""
		local TTR8 = "  NewP.".. Replace .." = GetOriginalValue(Split,NewP.".. Replace .. ")"
		local TTR9 = ""
		local TTR10 = "  success = nil"
		local TTR11 = "end"
		print(TTR1)
		print(TTR2)
		print(TTR0)
		print(TTR3)
		print(TTR4)
		print(TTR5)
		print(TTR6)
		print(TTR7)
		print(TTR8)
		print(TTR9)
		print(TTR10)
		print(TTR11)
		print("")
		wait(0.1)
	end
end
wait(5)
ReplaceRepeat2(List)

The Other bits
--- Saving Parts
function GetProperties(P)
	local Properties = {}
	local Text
	local success
	local response
        --- Paste RepeatWrite Output in here
end


function GetModelProperties(Model)
	local Des = Model:GetDescendants()
	local Result = ""
	for i = 1,#Des do
		local Props = GetProperties(Des[i])
		Result = Result .. Props .. "[Split]"
	end
	return Result
end
----- Loading Parts
function LoadInstance(Text)
	local Properties = string.split(Text,":")
	local Class = string.split(Properties[1],";")
	Class = Class[2]
	local success
	local response
	local Error = nil
---- Paste RepeatWrite2 output in Here
end

function GetOriginalValue(Split,Property)
	if type(Property) == "nil" then
		return nil
	end
	if type(Property) == "number" then
		return tonumber(Split[2])
	end
	if type(Property) == "string" then
		return tostring(Split[2])
	end
	if type(Property) == "boolean" then
		if Split[2] == "true" then
			return true
		end
		if Split[2] == "false" then
			return false
		end
	end
	if type(Property) == "userdata" then
		-- Will need a ton of work, For now this will do
		-- This means setting color3 wont work and same with a lot of others
		if Split[1] == "Color" then
			local Color = Split[2]
			Color = string.split(Color,", ")
			return Color3.new(tonumber(Color[1]),tonumber(Color[2]),tonumber(Color[3]))
		end
		if Split[1] == "Size" or Split[1] == "Position" or Split[1] == "Velocity" or Split[1] == "Orientation" then
			local Size = Split[2]
			Size = string.split(Size,", ")
			return Vector3.new(tonumber(Size[1]),tonumber(Size[2]),tonumber(Size[3]))
		end
		if Split[1] == "Material" then
			local Mat = Split[2]
			Mat = string.split(Mat,".")
			return Mat[3]
		end
		return nil
	end
end

function LoadModel(Text)
	local Model = Instance.new("Part")
	Model.Name = "Model"
	Model.Transparency = 1
	Model.Anchored = true
	Model.Parent = game.Workspace
	local Parts = string.split(Text,"[Split]")
	
	for i = 1,#Parts do
		local P = LoadInstance(Parts[i])
		
		if P:IsA("BasePart") then
			P.CanCollide = false
			P.Parent = Model
			P.Anchored = true
			P.CanCollide = true
		else
			P.Parent = Model
		end
		wait(0.05)
	end
end

Oh my, that’s a lot of properties lol.