Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
- local Player,Mouse,mouse,UserInputService,ContextActionService = owner
- do
- print("FE Compatibility code by Mokiros | Translated to FE by iPxter")
- script.Parent = Player.Character
- --RemoteEvent for communicating
- local Event = Instance.new("RemoteEvent")
- Event.Name = "UserInput_Event"
- --Fake event to make stuff like Mouse.KeyDown work
- local function fakeEvent()
- local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
- t.connect = t.Connect
- return t
- end
- --Creating fake input objects with fake variables
- local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
- local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
- local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
- CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
- end}
- --Merged 2 functions into one by checking amount of arguments
- CAS.UnbindAction = CAS.BindAction
- --This function will trigger the events that have been :Connect()'ed
- local function te(self,ev,...)
- local t = m[ev]
- if t and t._fakeEvent and t.Function then
- t.Function(...)
- end
- end
- m.TrigEvent = te
- UIS.TrigEvent = te
- Event.OnServerEvent:Connect(function(plr,io)
- if plr~=Player then return end
- if io.isMouse then
- m.Target = io.Target
- m.Hit = io.Hit
- else
- local b = io.UserInputState == Enum.UserInputState.Begin
- if io.UserInputType == Enum.UserInputType.MouseButton1 then
- return m:TrigEvent(b and "Button1Down" or "Button1Up")
- end
- for _,t in pairs(CAS.Actions) do
- for _,k in pairs(t.Keys) do
- if k==io.KeyCode then
- t.Function(t.Name,io.UserInputState,io)
- end
- end
- end
- m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
- UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
- end
- end)
- Event.Parent = NLS([==[
- local Player = game:GetService("Players").LocalPlayer
- local Event = script:WaitForChild("UserInput_Event")
- local UIS = game:GetService("UserInputService")
- local input = function(io,a)
- if a then return end
- --Since InputObject is a client-side instance, we create and pass table instead
- Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
- end
- UIS.InputBegan:Connect(input)
- UIS.InputEnded:Connect(input)
- local Mouse = Player:GetMouse()
- local h,t
- --Give the server mouse data 30 times every second, but only if the values changed
- --If player is not moving their mouse, client won't fire events
- while wait(1/30) do
- if h~=Mouse.Hit or t~=Mouse.Target then
- h,t=Mouse.Hit,Mouse.Target
- Event:FireServer({isMouse=true,Target=t,Hit=h})
- end
- end]==],Player.Character)
- Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
- end
- --Converted with ttyyuu12345's model to script plugin v4
- function sandbox(var,func)
- local env = getfenv(func)
- local newenv = setmetatable({},{
- __index = function(self,k)
- if k=="script" then
- return var
- else
- return env[k]
- end
- end,
- })
- setfenv(func,newenv)
- return func
- end
- cors = {}
- mas = Instance.new("Model",game:GetService("Lighting"))
- Model0 = Instance.new("Model")
- Folder1 = Instance.new("Folder")
- Script2 = Instance.new("Script")
- Script3 = Instance.new("Script")
- NumberValue4 = Instance.new("NumberValue")
- Folder5 = Instance.new("Folder")
- ModuleScript6 = Instance.new("ModuleScript")
- ModuleScript7 = Instance.new("ModuleScript")
- Folder8 = Instance.new("Folder")
- ModuleScript9 = Instance.new("ModuleScript")
- ModuleScript10 = Instance.new("ModuleScript")
- Folder11 = Instance.new("Folder")
- Model0.Name = "Admin_Useless"
- Model0.Parent = mas
- Folder1.Name = "Loader"
- Folder1.Parent = Model0
- Script2.Name = "Dropper"
- Script2.Parent = Folder1
- table.insert(cors,sandbox(Script2,function()
- --[[
- Clone and drop the loader so it can hide in nil.
- --]]
- local loader = script.Parent.Loader:clone()
- loader.Parent = script.Parent
- loader.Name = "\0"
- loader.Archivable = false
- loader.Disabled = false
- end))
- Script3.Name = "Loader"
- Script3.Parent = Folder1
- table.insert(cors,sandbox(Script3,function()
- --[[
- DEVELOPMENT MOVED!
- NEW LOADER:
- https://www.roblox.com/library/2373505175/Adonis-Loader-BETA
- --]]
- ----------------------------------------------------------------------------------------
- -- Adonis Loader --
- ----------------------------------------------------------------------------------------
- -- Epix Incorporated. Not Everything is so Black and White. --
- ----------------------------------------------------------------------------------------
- -- Edit settings in-game or using the settings module in the Config folder --
- ----------------------------------------------------------------------------------------
- -- This is not designed to work in solo mode --
- ----------------------------------------------------------------------------------------
- if _G["__Adonis_MUTEX"] and type(_G["__Adonis_MUTEX"])=="string" then
- warn("\n-----------------------------------------------"
- .."\nAdonis is already running! Aborting..."
- .."\nRunning Location: ".._G["__Adonis_MUTEX"]
- .."\nThis Location: "..script:GetFullName()
- .."\n-----------------------------------------------")
- script:Destroy()
- else
- _G["__Adonis_MUTEX"] = script:GetFullName()
- local model = script.Parent.Parent
- local config = model.Config
- local core = model.Loader
- local dropper = core.Dropper
- local loader = core.Loader
- local runner = script
- local settings = config.Settings
- local plugins = config.Plugins
- local themes = config.Themes
- local backup = model:Clone()
- local pEvent
- local data = {
- Settings = {};
- Descriptions = {};
- ServerPlugins = {};
- ClientPlugins = {};
- Themes = {};
- Model = model;
- Config = config;
- Core = core;
- Loader = loader;
- Dopper = dropper;
- Runner = runner;
- ModuleID = 2373501710;
- LoaderID = 2373505175;
- DebugMode = false;
- }
- --// Init
- script:Destroy()
- model.Name = math.random()
- local moduleId = data.ModuleID
- local a,setTab = pcall(require,settings)
- if not a then
- warn'::Adonis:: Settings module errored while loading; Using defaults;'
- setTab = {}
- end
- data.Settings, data.Descriptions, data.Order = setTab.Settings,setTab.Descriptions,setTab.Order
- for _,Plugin in next,plugins:GetChildren()do if Plugin.Name:sub(1,8)=="Client: " then table.insert(data.ClientPlugins,Plugin) elseif Plugin.Name:sub(1,8)=="Server: " then table.insert(data.ServerPlugins,Plugin) else warn("Unknown Plugin Type for "..tostring(Plugin)) end end
- for _,Theme in next,themes:GetChildren()do table.insert(data.Themes,Theme) end
- if data.DebugMode then moduleId = model.Parent.MainModule end
- local module = require(moduleId)
- local response = module(data)
- if response == "SUCCESS" then
- if (data.Settings and data.Settings.HideScript) and not data.DebugMode then
- model.Parent = nil
- game:BindToClose(function() model.Parent = game:GetService("ServerScriptService") model.Name = "Adonis_Loader" end)
- end
- model.Name = "Adonis_Loader"
- else
- error("MainModule failed to load")
- end
- end
- --[[
- --___________________________________________________________________________________________--
- --___________________________________________________________________________________________--
- --___________________________________________________________________________________________--
- --___________________________________________________________________________________________--
- ___________ .__ .___
- \_ _____/_____ |__|__ ___ | | ____ ____
- | __)_\____ \| \ \/ / | |/ \_/ ___\
- | \ |_> > |> < | | | \ \___
- /_______ / __/|__/__/\_ \ |___|___| /\___ > /\
- \/|__| \/ \/ \/ \/
- --------------------------------------------------------
- Epix Incorporated. Not Everything is so Black and White.
- --------------------------------------------------------
- --___________________________________________________________________________________________--
- --___________________________________________________________________________________________--
- --___________________________________________________________________________________________--
- --___________________________________________________________________________________________--
- --]]
- end))
- Script3.Disabled = true
- NumberValue4.Name = "v1.5.8"
- NumberValue4.Parent = Model0
- Folder5.Name = "Config"
- Folder5.Parent = Model0
- ModuleScript6.Name = "API"
- ModuleScript6.Parent = Folder5
- table.insert(cors,sandbox(ModuleScript6,function()
- --[[
- --// INCOMPLETE; WILL FINISH LATER
- Adonis API Documentation for developers
- Require:
- Adonis' MainModule can be loaded by using require(359948692)()
- - This allows you to require the module via the console and test things per server
- without having to add the loader and save the game;
- - If you want to edit things like settings, themes, or plugins you can do the following:
- local data = {
- Settings = {
- Admins = {"SomeGuy"}
- };
- Themes = {
- game.Workspace.ThemeFolder1;
- game.Workspace.ThemeFolder2;
- };
- Plugins = {
- game.Workspace.Plugin1;
- game.Workspace.Plugin2;
- }
- require(359948692)(data)
- - The MainModule will use a set of default settings for any setting not provided
- _G.Adonis:
- Read-only table in _G that can be used to access certain things in Adonis from other server scripts
- Functions:
- _G.Adonis.Access(accessKey, serverSubTable)
- - Returns a read-only version of a server subtable; allowing you to use all of it's functions
- - Settings can be changed in the Settings module for what to allow access to and to change if scripts can read/write
- _G.Adonis.CheckAdmin(player)
- - Returns true if the player is an Adonis admin
- _G.Adonis.GetLevel(player)
- - Returns a player's admin level
- - Levels:
- 0 - Player
- 1 - Moderator
- 2 - Admin
- 3 - Owner
- 4 - Creators (basically place owners)
- 5 - Place owner (the person who actually owns the place)
- _G.Adonis.CheckDonor(player)
- - Returns true if the player is an Adonis donor
- _G.Adonis.CheckAgent(player)
- - Returns true if the player is a Trello agent
- _G.Adonis.SetLighting(property, value)
- - Sets the lighting property for the server and all clients
- - Mainly used for local lighting to update all clients
- _G.Adonis.SetPlayerLighting(player, property, value)
- - Sets the lighting property for a specific player
- - Requires LocalLighting be enabled in settings in order to workspace
- _G.Adonis.NewParticle(part, type, properties)
- - Lets you create local particles on the target part with properties defined in the properties table
- - Type can be any classname that is place into a brick and has the .Enabled property
- - Part must be a weldable part
- _G.Adonis.RemoveParticle(part, name)
- - Removes local particles named <name> for all players from <part>
- _G.Adonis.NewLocal(player, type, properties, newParent)
- - Creates Instance.new(type) with properties <properties table>
- in local parent newParent for player
- - newParents: "Camera", "LocalContainer", "PlayerGui"
- - Defaults to LocalContainer if no parent is given
- _G.Adonis.MakeLocal(player, object, newParent)
- - Localizes object for player by moving it to newParent (a local container)
- - newParents: "Camera", "LocalContainer", "PlayerGui"
- - Defaults to LocalContainer if no parent is given
- _G.Adonis.MoveLocal(player, object, oldParent, newParent)
- - Same as MakeLocal except moves an existing local based on name/object provided
- _G.Adonis.RemoveLocal(player, object, oldParent)
- - Finds and removes object from oldParent (a local container)
- for player
- Service:
- Metatable used to access ROBLOX services and some utility functions
- For example: service.Players
- Extra functions:
- service.Delete(object)
- - Uses service.Debris to delete an object; Works on some RobloxLocked objects
- service.HookEvent(eventName, function)
- - Hooks events fired by service.FireEvent; Useful for running PlayerAdded after the admin finishes loading them
- - Returns a table conaining the UnHook() function to "unhook" the event
- service.FireEvent(eventName, params)
- - Fires all functions for a specific event added by service.HookEvent
- service.StartLoop(loopName, delay, function)
- - Starts an infinite loop that can be stopped using service.StopLoop(loopName)
- - Delay accepts a number, "Heartbeat", or "Stepped"
- service.StopLoop(loopName)
- - Stops a loop started by service.StartLoop
- service.ReadOnly(table)
- - Returns a read-only version of the table supplied to it
- service.GetPlayers(commandPlayer, nameString, dontError, isServer)
- - Finds players via their name/modifiers provided in nameString
- - If no args are given it will return a list of all players connected to the server, not just in game.Players
- Events:
- service.Events.eventName
- - Returns a table containing :connect and :disconnect
- - Basically the same as service.HookEvent but more like a ROBLOX event
- Event List:
- PlayerAdded
- - Runs after Adonis client finishes loading
- - Returns player
- PlayerRemoving
- - Fired when a player leaves
- - Returns player
- NetworkAdded
- - Fired when a new NetworkClient appears
- - Returns NetworkClient
- NetworkRemoved
- - Fired when a NetworkClient is removed
- - Returns NetworkClient
- PlayerChatted
- - Fired when player chats; Works with anything that fires server.Process.Chat; Including Adonis' custom chat
- - Returns player, msg
- CharacterAdded
- - Fired when character loads; Does not use player.CharacterAdded
- - Returns player
- ErrorMessage
- - Fired when an error is found
- - Returns message, trace, script
- Output
- - Fired when anything prints
- - Returns message, type
- CommandRan
- - Fired when a command is ran
- - Returns msg, command, args, table, index, ran, error
- - msg is the message the player chatted
- - command is the command pulled from msg
- - args is a table containing supplied command arguments
- - table is the command table
- - index is it's position in server.Commands
- - ran returns true is the command ran successfully
- - error returns any errors from the command function
- Server:
- Main script table containing most of the functions and variables used by the admin
- Subtables:
- Logs
- Variables
- Core
- Remote
- Anti
- Functions
- --]]
- end))
- ModuleScript7.Name = "Settings"
- ModuleScript7.Parent = Folder5
- table.insert(cors,sandbox(ModuleScript7,function()
- local settings = {}
- local descs = {}
- --------------
- -- SETTINGS --
- --------------
- --[[
- --// Basic Lua Info
- This is only here to help you when editing settings so you understand how they work
- and don't break something.
- Anything that looks like setting = {} is known as a table.
- Tables contain things; like the Lua version of a box.
- An example of a table would be setting = {"John","Mary","Bill"}
- You can have tables inside of tables, such in the case of setting = {{Group=1234,Rank=123,Type="Admin"}}
- Just like real boxes, tables can contain pretty much anything including other tables.
- Anything that looks like "Bob" is what's known as a string. Strings
- are basically plain text; setting = "Bob" would be correct however
- setting = Bob would not; because if it's not surrounded by quotes Lua will think
- that Bob is a variable; Quotes indicate something is a string and therefor not a variable/number/code
- Numbers do not use quotes. setting = 56
- This green block of text you are reading is called a comment. It's like a message
- from the programmer to anyone who reads their stuff. Anything in a comment will
- not be seen by Lua.
- Incase you don't know what Lua is; Lua is the scripting language ROBLOX uses...
- so every script you see (such as this one) and pretty much any code on ROBLOX is
- written in Lua.
- --// Settings [READ IF CONFUSED]
- If you see something like "Format: 'Username:UserId'" it means that anything you put
- in that table must follow one of the formats next to Format:
- For instance if I wanted to give admin to a player using their username, userid, a group they are in
- or an item they own I would do the following with the settings.Admins table:
- The format for the Admins' table's entries is "Username"; or "Username:UserId"; or UserId; or "Group:GroupId:GroupRank" or "Item:ItemID"
- This means that if I want to admin Bobjenkins123 who has a userId of 1234567, is in
- group "BobFans" (group ID 7463213) under the rank number 234, or owns the item belonging to ID 1237465
- I can do any of the following:
- settings.Admins = {"Bobjenkins123","Bobjenkins123:1234567",1234567,"Group:BobFans:7463213:234","Item:1237465"}
- If I wanted to make it so rank 134 in group 1029934 and BobJenkins123 had mod admin I would do
- settings.Moderators = {"Group:1029943:134","BobJenkins123"}
- I was going to change the admin rank stuff but I figured it would confuse people too much, so I left it as mods/admins/owners ;p
- --// Admins
- settings.Moderators = {"Sceleratis";"BobJenkins:1237123";1237666;"Group:181:255";"Item:1234567"}
- This will make the person with the username Sceleratis, or the name BobJenkins, or the ID 1237123 OR 123766,
- or is in group 181 in the rank 255, or owns the item belonging to the ID 1234567 a moderator
- If I wanted to give the rank 121 in group 181 Owner admin I would do:
- settings.Owners = {"Group:181:121"}
- See? Not so hard is it?
- If I wanted to add group 181 and all ranks in it to the :slock whitelist I would do;
- settings.Whitelist = {"Group:181";}
- I can do the above if I wanted to give everyone in a group admin for any of the other admin tables
- --// Command Permissions
- You can set the permission level for specific commands using setting.Permissions
- If I wanted to make it so only owners+ can use :ff player then I would do:
- settings.Permissions = {":ff:Owners"}
- :ff is the Command ":ff scel" and 3 is the NewLevel
- Permissions Levels:
- Players
- Moderators
- Admins
- Owners
- Creators
- Note that when changing command permissions you MUST include the prefix;
- So if you change the prefix to $ you would need to do $ff instead of :ff
- --// Trello
- The Trello abilities of the script allow you to manage lists and permissions via
- a Trello board; The following will guide you through the process of setting up a board;
- 1. Sign up for an account at http://trello.com
- 2. Create a new board
- http://prntscr.com/b9xljn
- http://prntscr.com/b9xm53
- 3. Get the board ID;
- http://prntscr.com/b9xngo
- 4. Set settings.Trello_Primary to your board ID
- 5. Set settings.Trello.Enabled to true
- 6. Congrats! The board is ready to be used;
- 7. Create a list and add cards to it;
- http://prntscr.com/b9xswk
- - You can view lists in-game using :viewlist ListNameHere
- Lists:
- Moderators - Card Format: Same as settings.Moderators
- Admins - Card Format: Same as settings.Admins
- Owners - Card Format: Same as settings.Owners
- Creators - Card Format: Same as settings.Creators
- Agents - Card Format: Same as settings.Admins
- Banlist - Card Format: Same as settings.Banned
- Mutelist - Card Format: Same as settings.Muted
- Blacklist - Card Format: Same as settings.Blacklist
- Whitelist - Card Format: Same as settings.Whitelist
- Permissions - Card Format: Same as settings.Permissions
- Music - Card Format: SongName:AudioID
- Commands - Card Format: Command (eg. :ff bob)
- Card format refers to how card names should look
- MAKE SURE YOU SET settings.DataStoreKey TO SOMETHING ABSOLUTELY RANDOM;
- --]]
- settings.HideScript = true -- Disable if your game saves; When the game starts the Adonis_Loader model will be hidden so other scripts cannot access the settings module
- settings.DataStore = "Adonis_1" -- DataStore the script will use for saving data; Changing this will lose any saved data
- settings.DataStoreKey = "CHANGE_THIS" -- CHANGE THIS TO SOMETHING RANDOM! Key used to encrypt all datastore entries; Changing this will lose any saved data
- settings.DataStoreEnabled = true -- Disable if you don't want to load settings and admins from the datastore; PlayerData will still save
- settings.Storage = game:service("ServerStorage") -- Where things like tools are stored
- settings.Theme = "Default" -- UI theme;
- settings.MobileTheme = "Mobilius" -- Theme to use on mobile devices; Some UI elements are disabled
- settings.Moderators = {} -- Mods; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Admins = {} -- Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Owners = {"EzzyCrafts2"} -- Head Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Creators = {"EzzyCrafts2"} -- Place Owner; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Banned = {} -- List of people banned from the game Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Muted = {} -- List of people muted Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Blacklist = {} -- List of people banned from using admin Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Whitelist = {} -- People who can join if whitelist enabled Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
- settings.Permissions = {} -- Command permissions; Format: {"Command:NewLevel";}
- settings.MusicList = {}; -- List of songs to appear in the script Format: {{Name = "somesong",ID = 1234567},{Name = "anotherone",ID = 1243562}}
- settings.CapeList = {}; -- List of capes Format: {{Name = "somecape",Material = "Fabric",Color = "Bright yellow",ID = 12345567,Reflectance = 1},{etc more stuff here}}
- settings.CustomRanks = {}; -- List of custom AdminLevel ranks Format: {RankName = {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";};}
- settings.OnStartup = {}; -- List of commands ran at server start Format: {":notif TestNotif"}
- settings.OnJoin = {}; -- List of commands ran as player on join (ignores adminlevel) Format: {":cmds"}
- settings.OnSpawn = {}; -- List off commands ran as player on spawn (ignores adminlevel) Format: {"!fire Really red",":ff me"}
- settings.SaveAdmins = true -- If true anyone you :admin or :owner in-game will save
- settings.WhitelistEnabled = false -- If true enables the whitelist/server lock; Only lets admins & whitelisted users join
- settings.Prefix = ":" -- The : in :kill me
- settings.PlayerPrefix = "!" -- The ! in !donate; Mainly used for commands that any player can run; Do not make it the same as settings.Prefix
- settings.SpecialPrefix = "" -- Used for things like "all", "me" and "others" (If changed to ! you would do :kill !me)
- settings.SplitKey = " " -- The space in :kill me (eg if you change it to / :kill me would be :kill/me)
- settings.BatchKey = "|" -- :kill me | :ff bob | :explode scel
- settings.ConsoleKeyCode = "Quote" -- Keybind to open the console; Rebindable per player in userpanel; KeyCodes: http://wiki.roblox.com/index.php?title=API:Enum/KeyCode
- settings.HttpWait = 60; -- How long things that use the HttpService will wait before updating again
- settings.Trello_Enabled = false; -- Are the Trello features enabled?
- settings.Trello_Primary = ""; -- Primary Trello board
- settings.Trello_Secondary = {"9HH6BEX2"}; -- Secondary Trello boards Format: {"BoardID";"BoardID2","etc"}
- settings.Trello_AppKey = ""; -- Your Trello AppKey Link: https://trello.com/app-key
- settings.Trello_Token = ""; -- Trello token (DON'T SHARE WITH ANYONE!) Link: https://trello.com/1/connect?name=Trello_API_Module&response_type=token&expires=never&scope=read,write&key=YOUR_APP_KEY_HERE
- settings.G_API = true -- If true allows other server scripts to access certain functions described in the API module through _G.Adonis
- settings.G_Access = false -- If enabled allows other scripts to access Adonis using _G.Adonis.Access; Scripts will still be able to do things like _G.Adonis.CheckAdmin(player)
- settings.G_Access_Key = "Example_Key" -- Key required to use the _G access API; Example_Key will not work for obvious reasons
- settings.G_Access_Perms = "Read" -- Access perms
- settings.Allowed_API_Calls = {
- Client = false; -- Allow access to the Client (not recommended)
- Settings = false; -- Allow access to settings (not recommended)
- DataStore = false; -- Allow access to the DataStore (not recommended)
- Core = false; -- Allow access to the script's core table (REALLY not recommended)
- Service = false; -- Allow access to the script's service metatable
- Remote = false; -- Communication table
- HTTP = false; -- HTTP related things like Trello functions
- Anti = false; -- Anti-Exploit table
- Logs = false;
- UI = false; -- Client UI table
- Admin = false; -- Admin related functions
- Functions = false; -- Functions table (contains functions used by the script that don't have a subcategory)
- Variables = true; -- Variables table
- API_Specific = true; -- API Specific functions
- }
- settings.FunCommands = true -- Are fun commands enabled?
- settings.PlayerCommands = true -- Are players commands enabled?
- settings.ChatCommands = true -- If false you will not be able to run commands via the chat; Instead you MUST use the console or you will be unable to run commands
- settings.CreatorPowers = true -- Gives me creator level admin; This is strictly used for debugging; I can't debug without full access to the script
- settings.CodeExecution = true -- Enables the use of code execution in Adonis; Scripting related and a few other commands require this
- settings.BanMessage = "Banned" -- Message shown to banned users
- settings.LockMessage = "Not Whitelisted" -- Message shown to people when they are kicked while the game is :slocked
- settings.SystemTitle = "System Message" -- Title to display in :sm
- settings.MaxLogs = 500 -- Maximum logs to save before deleting the oldest; Too high can lag the game
- settings.Notification = true -- Whether or not to show the "You're an admin" and "Updated" notifications
- settings.SongHint = true -- Display a hint with the current song name and ID when a song is played via :music
- settings.AutoClean = false -- Will auto clean service.Workspace of things like hats and tools
- settings.AutoCleanDelay = 60 -- Time between auto cleans
- settings.CustomChat = false -- Custom chat
- settings.PlayerList = false -- Custom playerlist
- settings.Console = true -- Command console
- settings.HelpSystem = true -- Allows players to call admins for help using !help
- settings.HelpButton = true -- Shows a little help button in the bottom right corner
- settings.DonorCapes = true -- Donors get to show off their capes; Not disruptive :)
- settings.DonorCommands = true -- Show your support for the script and let donors use harmless commands like !sparkles
- settings.LocalCapes = false -- Makes Donor capes local so only the donors see their cape [All players can still disable capes locally]
- settings.LocalLighting = true -- Enables local lighting; Prevents changes to Lighting and enables the ability for player specific lighting changes; Server scripts can set lighting for the server or specific players using _G.Adonis.SetLighting(property,value) or for players _G.Adonis.SetPlayerLighting(player,property,value)
- settings.ReplicationLogs = false -- [May cause lag] Attempts to log who makes and deletes objects in the game
- settings.NetworkOwners = false -- [May cause lag] Logs the first network owners of parts created in workspace; Can be used to see who made parts (only parts) in workspace
- settings.Detection = true -- Attempts to detect certain known exploits
- settings.CheckClients = true -- Checks clients every minute or two to make sure they are still active
- settings.AntiNil = true -- Try's to prevent non-admins from hiding in "nil"
- settings.AntiSpeed = true -- Attempts to detect speed exploits
- settings.AntiNoclip = true -- Attempts to detect noclipping and kills the player if found
- settings.AntiParanoid = false -- Attempts to detect paranoid and kills the player if found
- settings.AntiDeleteTool = false -- [May break guns] Attempts to block use of the delete tool and other building tools
- settings.AntiDelete = false -- [May cause intense lag] You should enabled Filtering instead! Attempts to prevent deleting of objects in the game (may cause lag; Not recommended for complex games that constantly make/remove things; Should use Filtering instead...)
- settings.AntiUnAnchor = false -- [May cause lag] Attempts to prevent the unanchoring of parts
- settings.AntiLeak = false -- Attempts to prevent place downloading/saving; Do not use if game saves
- settings.AntiBillboardImage = false -- Attempts to find billboard images and remove them; These are usually used to insert inappropriate images into the game
- settings.AntiInsert = { -- Can cause lag; You should enabled Filtering instead! Class names blocked from being added to the game or new properties to set for them; Will alter properties if Action = "Change" or delete the object if Action = "Delete"; Add classes to alter/block
- Enabled = false; -- If AntiInsert is enabled or not
- Explosion = { -- The ClassName to look for; You can add new ClassNames by following the Format provided
- Action = "None"; -- Can be set to "Change" to use the set properties or "Delete" to delete the object if it's added; Set to "None" to disable
- Properties = { -- Properties to use if change is true; The default properties will basically nerf any explosions
- BlastPressure = 0;
- BlastRadius = 0;
- DestroyJoinRadiusPercent = 0;
- ExplosionType = "NoCraters";
- }
- };
- Decal = { -- I included some common classnames to replace settings like AntiDecal, NerfExplosions, and AntiSound
- Action = "None"; -- Set to "Delete" to prevent decals from being added
- };
- Sound = {
- Action = "None"; -- Set to "Delete" to prevent new sounds from being added (WARNING THIS IS ALL SOUNDS INCLDING SCRIPT MADE ONES)
- };
- }
- ---------------------
- -- END OF SETTINGS --
- ---------------------
- --// Setting descriptions used for the in-game settings editor;
- descs.HideScript = [[ Disable if your game saves; When the game starts the Adonis_Loader model will be hidden so other scripts cannot access the settings module ]]
- descs.DataStore = [[ DataStore the script will use for saving data; Changing this will lose any saved data ]]
- descs.DataStoreKey = [[ Key used to encode all datastore entries; Changing this will lose any saved data ]]
- descs.DataStoreEnabled = [[ Disable if you don't want settings and admins to be saveable in-game; PlayerData will still save ]]
- descs.Storage = [[ Where things like tools are stored ]]
- descs.Theme = [[ UI theme; ]]
- descs.MobileTheme = [[ Theme to use on mobile devices; Mobile themes are optimized for smaller screens; Some GUIs are disabled ]]
- descs.Moderators = [[ Mods; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Admins = [[ Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Owners = [[ Head Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Creators = [[ Anyone to be identified as a place owner; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Banned = [[ List of people banned from the game; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Muted = [[ List of people muted; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Blacklist = [[ List of people banned from using admin; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Whitelist = [[ People who can join if whitelist enabled; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
- descs.Permissions = [[ Command permissions; Format: {"Command:NewLevel";} ]]
- descs.MusicList = [[ List of songs to appear in the script; Format: {{Name = "somesong",ID = 1234567},{Name = "anotherone",ID = 1243562}} ]]
- descs.CapeList = [[ List of capes; Format: {{Name = "somecape",Material = "Fabric",Color = "Bright yellow",ID = 12345567,Reflectance = 1},{etc more stuff here}} ]]
- descs.CustomRanks = [[ List of custom AdminLevel ranks Format: {RankName = {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";};} ]]
- descs.OnStartup = [[ List of commands ran at server start Format: {":notif TestNotif"} ]]
- descs.OnJoin = [[ List of commands ran as player on join (ignores adminlevel) Format: {":cmds"} ]]
- descs.OnSpawn = [[ List off commands ran as player on spawn (ignores adminlevel) Format: {"!fire Really red",":ff me"} ]]
- descs.SaveAdmins = [[ If true anyone you :mod, :admin, or :owner in-game will save; This does not apply to helpers as they are considered temporary ]]
- descs.WhitelistEnabled = [[ If true enables the whitelist/server lock; Only lets admins & whitelisted users join ]]
- descs.Prefix = [[ The : in :kill me ]]
- descs.PlayerPrefix = [[ The ! in !donate; Mainly used for commands that any player can run ]]
- descs.SpecialPrefix = [[ Used for things like "all", "me" and "others" (If changed to ! you would do :kill !me) ]]
- descs.SplitKey = [[ The space in :kill me (eg if you change it to / :kill me would be :kill/me) ]]
- descs.BatchKey = [[ :kill me | :ff bob | :explode scel ]]
- descs.ConsoleKeyCode = [[ Keybind to open the console ]]
- descs.HttpWait = [[ How long things that use the HttpService will wait before updating again ]]
- descs.Trello_Enabled = [[ Are the Trello features enabled? ]]
- descs.Trello_Primary = [[ Primary Trello board ]]
- descs.Trello_Secondary = [[ Secondary Trello boards; Format: {"BoardID";"BoardID2","etc"} ]]
- descs.Trello_AppKey = [[ Your Trello AppKey; Link: https://trello.com/app-key ]]
- descs.Trello_Token = [[ Trello token (DON'T SHARE WITH ANYONE!); Link: https://trello.com/1/connect?name=Trello_API_Module&response_type=token&expires=never&scope=read,write&key=YOUR_APP_KEY_HERE ]]
- descs.G_API = [[ If true allows other server scripts to access certain functions described in the API module through _G.Adonis ]]
- descs.G_Access = [[ If enabled allows other scripts to access Adonis using _G.Adonis.Access; Scripts will still be able to do things like _G.Adonis.CheckAdmin(player) ]]
- descs.G_Access_Key = [[ Key required to use the _G access API; Example_Key will not work for obvious reasons ]]
- descs.G_Access_Perms = [[ Access perms level ]]
- descs.Allowed_API_Calls = [[ Allowed calls ]]
- descs.FunCommands = [[ Are fun commands enabled? ]]
- descs.PlayerCommands = [[ Are players commands enabled? ]]
- descs.ChatCommands = [[ If false you will not be able to run commands via the chat; Instead you MUST use the console or you will be unable to run commands ]]
- descs.BanMessage = [[ Message shown to banned users ]]
- descs.LockMessage = [[ Message shown to people when they are kicked while the game is :slocked ]]
- descs.SystemTitle = [[ Title to display in :sm ]]
- descs.CreatorPowers = [[ When true gives me place owner admin; This is strictly used for debugging; I can't debug without access to the script and specific owner commands ]]
- descs.MaxLogs = [[ Maximum logs to save before deleting the oldest; Too high can lag the game ]]
- descs.Notification = [[ Whether or not to show the "You're an admin" and "Updated" notifications ]]
- descs.CodeExecution = [[ Enables the use of code execution in Adonis; Scripting related and a few other commands require this ]]
- descs.SongHint = [[ Display a hint with the current song name and ID when a song is played via :music ]]
- descs.AutoClean = [[ Will auto clean service.Workspace of things like hats and tools ]]
- descs.AutoCleanDelay = [[ Time between auto cleans ]]
- descs.CustomChat = [[ Custom chat ]]
- descs.PlayerList = [[ Custom playerlist ]]
- descs.Console = [[ Command console ]]
- descs.DonorCommands = [[ Show your support for the script and let donors use commands like !sparkles ]]
- descs.DonorCapes = [[ Determines if donors have capes ]]
- descs.LocalCapes = [[ Makes Donor capes local instead of removing them ]]
- descs.HelpSystem = [[ Allows players to call admins for help using !help ]]
- descs.HelpButton = [[ Shows a little help button in the bottom right corner ]]
- descs.LocalLighting = [[ Enables local lighting; Prevents changes to Lighting and enables the ability for player specific lighting changes; Server scripts can set lighting for the server or specific players using _G.Adonis.SetLighting(property,value) or for players _G.Adonis.SetPlayerLighting(player,property,value) ]]
- descs.ReplicationLogs = [[ Attempts to log who makes and deletes objects in the game ]]
- descs.NetworkOwners = [[ Logs the first network owners of parts created in workspace; Can be used to see who made parts (only parts) in workspace ]]
- descs.Detection = [[ Attempts to detect certain known exploits ]]
- descs.CheckClients = [[ Checks clients every minute or two to make sure they are still active ]]
- descs.AntiNil = [[ Try's to prevent non-admins from hiding in "nil" ]]
- descs.AntiSpeed = [[ Attempted to detect speed exploits ]]
- descs.AntiNoclip = [[ Attempts to detect noclipping and kills the player if found ]]
- descs.AntiParanoid = [[ Attempts to detect paranoid and kills the player if found ]]
- descs.AntiDeleteTool = [[ Attempts to block use of the delete tool and other building tools ]]
- descs.AntiDelete = [[ Can cause lag; You should enabled Filtering instead! Attempts to prevent deleting of objects in the game (may cause lag; Not recommended for complex games that constantly make/remove things; Should use Filtering instead...) ]]
- descs.AntiUnAnchor = [[ Attempts to prevent the unanchoring of parts ]]
- descs.AntiLeak = [[ Attempts to prevent place downloading/saving; Do not use if game saves ]]
- descs.AntiBillboardImage = [[ Attempts to find billboard images and remove them; These are usually used to insert inappropriate images into the game ]]
- descs.AntiInsert = [[ Can cause lag; You should enabled Filtering instead! Class names blocked from being added to the game or new properties to set for them; Will alter properties if Action = "Change" or delete the object if Action = "Delete"; Add classes to alter/block ]]
- order = {
- "HideScript";
- "DataStore";
- "DataStoreKey";
- "DataStoreEnabled";
- "Storage";
- " ";
- "Theme";
- "MobileTheme";
- " ";
- "Moderators";
- "Admins";
- "Owners";
- "Creators";
- "Banned";
- "Muted";
- "Blacklist";
- "Whitelist";
- "MusicList";
- "CapeList";
- "CustomRanks";
- " ";
- "OnStartup";
- "OnJoin";
- "OnSpawn";
- " ";
- "SaveAdmins";
- "WhitelistEnabled";
- " ";
- "Prefix";
- "PlayerPrefix";
- "SpecialPrefix";
- "SplitKey";
- "BatchKey";
- "ConsoleKeyCode";
- " ";
- "HttpWait";
- "Trello_Enabled";
- "Trello_Primary";
- "Trello_Secondary";
- "Trello_AppKey";
- "Trello_Token";
- " ";
- "G_API";
- "G_Access";
- "G_Access_Key";
- "G_Access_Perms";
- "Allowed_API_Calls";
- " ";
- "FunCommands";
- "PlayerCommands";
- "ChatCommands";
- "CreatorPowers";
- "CodeExecution";
- " ";
- "BanMessage";
- "LockMessage";
- "SystemTitle";
- " ";
- "MaxLogs";
- "Notification";
- "SongHint";
- "";
- "AutoClean";
- "AutoCleanDelay";
- " ";
- "CustomChat";
- "PlayerList";
- "Console";
- " ";
- "HelpSystem";
- "HelpButton";
- " ";
- "DonorCommands";
- "DonorCapes";
- "LocalCapes";
- " ";
- "LocalLighting";
- "ReplicationLogs";
- "NetworkOwners";
- "Detection";
- "CheckClients";
- " ";
- "AntiNil";
- "AntiSpeed";
- "AntiNoclip";
- "AntiParanoid";
- "AntiDeleteTool";
- "AntiDelete";
- "AntiUnAnchor";
- "AntiLeak";
- "AntiBillboardImage";
- "AntiInsert";
- }
- return {Settings = settings, Descriptions = descs, Order = order}
- end))
- Folder8.Name = "Plugins"
- Folder8.Parent = Folder5
- ModuleScript9.Name = "Server: Example Plugin"
- ModuleScript9.Parent = Folder8
- table.insert(cors,sandbox(ModuleScript9,function()
- --[[
- SERVER PLUGINS' NAMES MUST START WITH "Server: "
- CLIENT PLUGINS' NAMES MUST START WITH "Client: "
- Plugins have full access to the server/client tables and most variables.
- You can use the MakePluginEvent to use the script instead of setting up an event.
- PlayerChatted will get chats from the custom chat and nil players.
- PlayerJoined will fire after the player finishes initial loading
- CharacterAdded will also fire after the player is loaded, it does not use the CharacterAdded event.
- service.HookEvent('PlayerChatted',function(msg,plr)
- print(msg..' from '..plr.Name..' Example Plugin')
- end)
- service.HookEvent('PlayerJoined',function(p)
- print(p.Name..' Joined! Example Plugin')
- end)
- service.HookEvent('CharacterAdded',function(plr)
- server.RunCommand('name',plr.Name,'BobTest Example Plugin')
- end)
- --]]
- server = nil -- Mutes warnings about unknown globals
- service = nil
- return function()
- server.Commands.ExampleCommand = {
- Prefix = server.Settings.Prefix; -- Prefix to use for command
- Commands = {"example"}; -- Commands
- Args = {"arg1"}; -- Command arguments
- Description = "Example command"; -- Command Description
- Hidden = true; -- Is it hidden from the command list?
- Fun = false; -- Is it fun?
- AdminLevel = "Players"; -- Admin level; If using settings.CustomRanks set this to the custom rank name (eg. "Baristas")
- Function = function(plr,args) -- Function to run for command
- print("HELLO WORLD FROM AN EXAMPLE COMMAND :)")
- print("Player supplied args[1] "..tostring(args[1]))
- end
- }
- end
- end))
- ModuleScript10.Name = "Client: Example Plugin"
- ModuleScript10.Parent = Folder8
- table.insert(cors,sandbox(ModuleScript10,function()
- client = nil
- service = nil
- return function()
- --Acts the same as a server plugin but with client functions instead of server.
- --[[
- local window = client.UI.Make("Window",{
- Title = "Changing DataStore";
- Size = {700,300};
- Icon = "rbxassetid://357249130";
- })
- window.Add("ImageLabel",{
- Image = "rbxassetid://531490964";
- })
- --]]
- end
- end))
- Folder11.Name = "Themes"
- Folder11.Parent = Folder5
- for i,v in pairs(mas:GetChildren()) do
- v.Parent = script
- pcall(function() v:MakeJoints() end)
- end
- mas:Destroy()
- for i,v in pairs(cors) do
- spawn(function()
- pcall(v)
- end)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement