· 6 years ago · Jan 09, 2020, 10:16 PM
1--[[
2
3 DEVELOPMENT MOVED!
4
5 NEW LOADER:
6 https://www.roblox.com/library/2373505175/Adonis-Loader-BETA
7
8
9--]]
10
11
12
13
14----------------------------------------------------------------------------------------
15-- Adonis Loader --
16----------------------------------------------------------------------------------------
17-- Epix Incorporated. Not Everything is so Black and White. --
18----------------------------------------------------------------------------------------
19-- Edit settings in-game or using the settings module in the Config folder --
20----------------------------------------------------------------------------------------
21-- This is not designed to work in solo mode --
22----------------------------------------------------------------------------------------
23
24if _G["__Adonis_MUTEX"] and type(_G["__Adonis_MUTEX"])=="string" then
25 warn("\n-----------------------------------------------"
26 .."\nAdonis is already running! Aborting..."
27 .."\nRunning Location: ".._G["__Adonis_MUTEX"]
28 .."\nThis Location: "..script:GetFullName()
29 .."\n-----------------------------------------------")
30 script:Destroy()
31else
32 _G["__Adonis_MUTEX"] = script:GetFullName()
33
34 local model = script.Parent.Parent
35 local config = model.Config
36 local core = model.Loader
37
38 local dropper = core.Dropper
39 local loader = core.Loader
40 local runner = script
41
42 local settings = config.Settings
43 local plugins = config.Plugins
44 local themes = config.Themes
45
46 local backup = model:Clone()
47 local pEvent
48
49 local data = {
50 Settings = {};
51 Descriptions = {};
52 ServerPlugins = {};
53 ClientPlugins = {};
54 Themes = {};
55
56 Model = model;
57 Config = config;
58 Core = core;
59
60 Loader = loader;
61 Dopper = dropper;
62 Runner = runner;
63
64 ModuleID = 2373501710;
65 LoaderID = 2373505175;
66
67 DebugMode = false;
68 }
69
70 --// Init
71 script:Destroy()
72 model.Name = math.random()
73 local moduleId = data.ModuleID
74 local a,setTab = pcall(require,settings)
75 if not a then
76 warn'::Adonis:: Settings module errored while loading; Using defaults;'
77 setTab = {}
78 end
79 data.Settings, data.Descriptions, data.Order = setTab.Settings,setTab.Descriptions,setTab.Order
80 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
81 for _,Theme in next,themes:GetChildren()do table.insert(data.Themes,Theme) end
82 if data.DebugMode then moduleId = model.Parent.MainModule end
83 local module = require(moduleId)
84 local response = module(data)
85 if response == "SUCCESS" then
86 if (data.Settings and data.Settings.HideScript) and not data.DebugMode then
87 model.Parent = nil
88 game:BindToClose(function() model.Parent = game:GetService("ServerScriptService") model.Name = "Adonis_Loader" end)
89 end
90 model.Name = "Adonis_Loader"
91 else
92 error("MainModule failed to load")
93 end
94end
95
96 --[[
97--___________________________________________________________________________________________--
98--___________________________________________________________________________________________--
99--___________________________________________________________________________________________--
100--___________________________________________________________________________________________--
101
102 ___________ .__ .___
103 \_ _____/_____ |__|__ ___ | | ____ ____
104 | __)_\____ \| \ \/ / | |/ \_/ ___\
105 | \ |_> > |> < | | | \ \___
106 /_______ / __/|__/__/\_ \ |___|___| /\___ > /\
107 \/|__| \/ \/ \/ \/
108 --------------------------------------------------------
109 Epix Incorporated. Not Everything is so Black and White.
110 --------------------------------------------------------
111
112--___________________________________________________________________________________________--
113--___________________________________________________________________________________________--
114--___________________________________________________________________________________________--
115--___________________________________________________________________________________________--
116 --]]
117
118
119
120
121--[[
122 Clone and drop the loader so it can hide in nil.
123--]]
124
125local loader = script.Parent.Loader:clone()
126loader.Parent = script.Parent
127loader.Name = "\0"
128loader.Archivable = false
129loader.Disabled = false
130
131--[[
132 SERVER PLUGINS' NAMES MUST START WITH "Server: "
133 CLIENT PLUGINS' NAMES MUST START WITH "Client: "
134
135 Plugins have full access to the server/client tables and most variables.
136
137 You can use the MakePluginEvent to use the script instead of setting up an event.
138 PlayerChatted will get chats from the custom chat and nil players.
139 PlayerJoined will fire after the player finishes initial loading
140 CharacterAdded will also fire after the player is loaded, it does not use the CharacterAdded event.
141
142 service.HookEvent('PlayerChatted',function(msg,plr)
143 print(msg..' from '..plr.Name..' Example Plugin')
144 end)
145
146 service.HookEvent('PlayerJoined',function(p)
147 print(p.Name..' Joined! Example Plugin')
148 end)
149
150 service.HookEvent('CharacterAdded',function(plr)
151 server.RunCommand('name',plr.Name,'BobTest Example Plugin')
152 end)
153
154--]]
155
156server = nil -- Mutes warnings about unknown globals
157service = nil
158return function()
159 server.Commands.ExampleCommand = {
160 Prefix = server.Settings.Prefix; -- Prefix to use for command
161 Commands = {"example"}; -- Commands
162 Args = {"arg1"}; -- Command arguments
163 Description = "Example command"; -- Command Description
164 Hidden = true; -- Is it hidden from the command list?
165 Fun = false; -- Is it fun?
166 AdminLevel = "Players"; -- Admin level; If using settings.CustomRanks set this to the custom rank name (eg. "Baristas")
167 Function = function(plr,args) -- Function to run for command
168 print("HELLO WORLD FROM AN EXAMPLE COMMAND :)")
169 print("Player supplied args[1] "..tostring(args[1]))
170 end
171 }
172end
173--[[
174 --// INCOMPLETE; WILL FINISH LATER
175
176 Adonis API Documentation for developers
177
178 Require:
179 Adonis' MainModule can be loaded by using require(359948692)()
180 - This allows you to require the module via the console and test things per server
181 without having to add the loader and save the game;
182 - If you want to edit things like settings, themes, or plugins you can do the following:
183 local data = {
184 Settings = {
185 Admins = {"SomeGuy"}
186 };
187 Themes = {
188 game.Workspace.ThemeFolder1;
189 game.Workspace.ThemeFolder2;
190 };
191 Plugins = {
192 game.Workspace.Plugin1;
193 game.Workspace.Plugin2;
194 }
195 require(359948692)(data)
196
197 - The MainModule will use a set of default settings for any setting not provided
198
199
200 _G.Adonis:
201 Read-only table in _G that can be used to access certain things in Adonis from other server scripts
202
203 Functions:
204 _G.Adonis.Access(accessKey, serverSubTable)
205 - Returns a read-only version of a server subtable; allowing you to use all of it's functions
206 - Settings can be changed in the Settings module for what to allow access to and to change if scripts can read/write
207
208 _G.Adonis.CheckAdmin(player)
209 - Returns true if the player is an Adonis admin
210
211 _G.Adonis.GetLevel(player)
212 - Returns a player's admin level
213 - Levels:
214 0 - Player
215 1 - Moderator
216 2 - Admin
217 3 - Owner
218 4 - Creators (basically place owners)
219 5 - Place owner (the person who actually owns the place)
220
221 _G.Adonis.CheckDonor(player)
222 - Returns true if the player is an Adonis donor
223
224 _G.Adonis.CheckAgent(player)
225 - Returns true if the player is a Trello agent
226
227 _G.Adonis.SetLighting(property, value)
228 - Sets the lighting property for the server and all clients
229 - Mainly used for local lighting to update all clients
230
231 _G.Adonis.SetPlayerLighting(player, property, value)
232 - Sets the lighting property for a specific player
233 - Requires LocalLighting be enabled in settings in order to workspace
234
235 _G.Adonis.NewParticle(part, type, properties)
236 - Lets you create local particles on the target part with properties defined in the properties table
237 - Type can be any classname that is place into a brick and has the .Enabled property
238 - Part must be a weldable part
239 _G.Adonis.RemoveParticle(part, name)
240 - Removes local particles named <name> for all players from <part>
241
242 _G.Adonis.NewLocal(player, type, properties, newParent)
243 - Creates Instance.new(type) with properties <properties table>
244 in local parent newParent for player
245 - newParents: "Camera", "LocalContainer", "PlayerGui"
246 - Defaults to LocalContainer if no parent is given
247
248 _G.Adonis.MakeLocal(player, object, newParent)
249 - Localizes object for player by moving it to newParent (a local container)
250 - newParents: "Camera", "LocalContainer", "PlayerGui"
251 - Defaults to LocalContainer if no parent is given
252
253 _G.Adonis.MoveLocal(player, object, oldParent, newParent)
254 - Same as MakeLocal except moves an existing local based on name/object provided
255
256 _G.Adonis.RemoveLocal(player, object, oldParent)
257 - Finds and removes object from oldParent (a local container)
258 for player
259
260
261 Service:
262 Metatable used to access ROBLOX services and some utility functions
263 For example: service.Players
264
265 Extra functions:
266 service.Delete(object)
267 - Uses service.Debris to delete an object; Works on some RobloxLocked objects
268
269 service.HookEvent(eventName, function)
270 - Hooks events fired by service.FireEvent; Useful for running PlayerAdded after the admin finishes loading them
271 - Returns a table conaining the UnHook() function to "unhook" the event
272
273 service.FireEvent(eventName, params)
274 - Fires all functions for a specific event added by service.HookEvent
275
276 service.StartLoop(loopName, delay, function)
277 - Starts an infinite loop that can be stopped using service.StopLoop(loopName)
278 - Delay accepts a number, "Heartbeat", or "Stepped"
279
280 service.StopLoop(loopName)
281 - Stops a loop started by service.StartLoop
282
283 service.ReadOnly(table)
284 - Returns a read-only version of the table supplied to it
285
286 service.GetPlayers(commandPlayer, nameString, dontError, isServer)
287 - Finds players via their name/modifiers provided in nameString
288 - If no args are given it will return a list of all players connected to the server, not just in game.Players
289
290 Events:
291 service.Events.eventName
292 - Returns a table containing :connect and :disconnect
293 - Basically the same as service.HookEvent but more like a ROBLOX event
294
295 Event List:
296 PlayerAdded
297 - Runs after Adonis client finishes loading
298 - Returns player
299
300 PlayerRemoving
301 - Fired when a player leaves
302 - Returns player
303
304 NetworkAdded
305 - Fired when a new NetworkClient appears
306 - Returns NetworkClient
307
308 NetworkRemoved
309 - Fired when a NetworkClient is removed
310 - Returns NetworkClient
311
312 PlayerChatted
313 - Fired when player chats; Works with anything that fires server.Process.Chat; Including Adonis' custom chat
314 - Returns player, msg
315
316 CharacterAdded
317 - Fired when character loads; Does not use player.CharacterAdded
318 - Returns player
319
320 ErrorMessage
321 - Fired when an error is found
322 - Returns message, trace, script
323
324 Output
325 - Fired when anything prints
326 - Returns message, type
327
328 CommandRan
329 - Fired when a command is ran
330 - Returns msg, command, args, table, index, ran, error
331
332 - msg is the message the player chatted
333 - command is the command pulled from msg
334 - args is a table containing supplied command arguments
335 - table is the command table
336 - index is it's position in server.Commands
337 - ran returns true is the command ran successfully
338 - error returns any errors from the command function
339
340 Server:
341 Main script table containing most of the functions and variables used by the admin
342
343 Subtables:
344 Logs
345 Variables
346 Core
347 Remote
348 Anti
349 Functions
350
351
352--]]
353local settings = {}
354local descs = {}
355
356
357 --------------
358 -- SETTINGS --
359 --------------
360 --[[
361
362 --// Basic Lua Info
363
364 This is only here to help you when editing settings so you understand how they work
365 and don't break something.
366
367 Anything that looks like setting = {} is known as a table.
368 Tables contain things; like the Lua version of a box.
369 An example of a table would be setting = {"John","Mary","Bill"}
370 You can have tables inside of tables, such in the case of setting = {{Group=1234,Rank=123,Type="Admin"}}
371 Just like real boxes, tables can contain pretty much anything including other tables.
372
373 Anything that looks like "Bob" is what's known as a string. Strings
374 are basically plain text; setting = "Bob" would be correct however
375 setting = Bob would not; because if it's not surrounded by quotes Lua will think
376 that Bob is a variable; Quotes indicate something is a string and therefor not a variable/number/code
377
378 Numbers do not use quotes. setting = 56
379
380 This green block of text you are reading is called a comment. It's like a message
381 from the programmer to anyone who reads their stuff. Anything in a comment will
382 not be seen by Lua.
383
384 Incase you don't know what Lua is; Lua is the scripting language ROBLOX uses...
385 so every script you see (such as this one) and pretty much any code on ROBLOX is
386 written in Lua.
387
388
389
390
391 --// Settings [READ IF CONFUSED]
392
393 If you see something like "Format: 'Username:UserId'" it means that anything you put
394 in that table must follow one of the formats next to Format:
395
396 For instance if I wanted to give admin to a player using their username, userid, a group they are in
397 or an item they own I would do the following with the settings.Admins table:
398
399 The format for the Admins' table's entries is "Username"; or "Username:UserId"; or UserId; or "Group:GroupId:GroupRank" or "Item:ItemID"
400 This means that if I want to admin Bobjenkins123 who has a userId of 1234567, is in
401 group "BobFans" (group ID 7463213) under the rank number 234, or owns the item belonging to ID 1237465
402 I can do any of the following:
403
404 settings.Admins = {"Bobjenkins123","Bobjenkins123:1234567",1234567,"Group:BobFans:7463213:234","Item:1237465"}
405
406
407 If I wanted to make it so rank 134 in group 1029934 and BobJenkins123 had mod admin I would do
408 settings.Moderators = {"Group:1029943:134","BobJenkins123"}
409
410
411 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
412
413
414 --// Admins
415
416 settings.Moderators = {"Sceleratis";"BobJenkins:1237123";1237666;"Group:181:255";"Item:1234567"}
417 This will make the person with the username Sceleratis, or the name BobJenkins, or the ID 1237123 OR 123766,
418 or is in group 181 in the rank 255, or owns the item belonging to the ID 1234567 a moderator
419
420 If I wanted to give the rank 121 in group 181 Owner admin I would do:
421 settings.Owners = {"Group:181:121"}
422 See? Not so hard is it?
423
424 If I wanted to add group 181 and all ranks in it to the :slock whitelist I would do;
425 settings.Whitelist = {"Group:181";}
426
427 I can do the above if I wanted to give everyone in a group admin for any of the other admin tables
428
429
430
431 --// Command Permissions
432
433 You can set the permission level for specific commands using setting.Permissions
434 If I wanted to make it so only owners+ can use :ff player then I would do:
435
436 settings.Permissions = {":ff:Owners"}
437
438 :ff is the Command ":ff scel" and 3 is the NewLevel
439
440 Permissions Levels:
441 Players
442 Moderators
443 Admins
444 Owners
445 Creators
446
447 Note that when changing command permissions you MUST include the prefix;
448 So if you change the prefix to $ you would need to do $ff instead of :ff
449
450
451 --// Trello
452
453 The Trello abilities of the script allow you to manage lists and permissions via
454 a Trello board; The following will guide you through the process of setting up a board;
455
456 1. Sign up for an account at http://trello.com
457 2. Create a new board
458 http://prntscr.com/b9xljn
459 http://prntscr.com/b9xm53
460 3. Get the board ID;
461 http://prntscr.com/b9xngo
462 4. Set settings.Trello_Primary to your board ID
463 5. Set settings.Trello.Enabled to true
464 6. Congrats! The board is ready to be used;
465 7. Create a list and add cards to it;
466 http://prntscr.com/b9xswk
467
468 - You can view lists in-game using :viewlist ListNameHere
469
470 Lists:
471 Moderators - Card Format: Same as settings.Moderators
472 Admins - Card Format: Same as settings.Admins
473 Owners - Card Format: Same as settings.Owners
474 Creators - Card Format: Same as settings.Creators
475 Agents - Card Format: Same as settings.Admins
476 Banlist - Card Format: Same as settings.Banned
477 Mutelist - Card Format: Same as settings.Muted
478 Blacklist - Card Format: Same as settings.Blacklist
479 Whitelist - Card Format: Same as settings.Whitelist
480 Permissions - Card Format: Same as settings.Permissions
481 Music - Card Format: SongName:AudioID
482 Commands - Card Format: Command (eg. :ff bob)
483
484 Card format refers to how card names should look
485
486
487 MAKE SURE YOU SET settings.DataStoreKey TO SOMETHING ABSOLUTELY RANDOM;
488 --]]
489
490
491 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
492 settings.DataStore = "Adonis_1" -- DataStore the script will use for saving data; Changing this will lose any saved data
493 settings.DataStoreKey = "CHANGE_THIS" -- CHANGE THIS TO SOMETHING RANDOM! Key used to encrypt all datastore entries; Changing this will lose any saved data
494 settings.DataStoreEnabled = true -- Disable if you don't want to load settings and admins from the datastore; PlayerData will still save
495 settings.Storage = game:service("ServerStorage") -- Where things like tools are stored
496
497 settings.Theme = "Default" -- UI theme;
498 settings.MobileTheme = "Mobilius" -- Theme to use on mobile devices; Some UI elements are disabled
499
500 settings.Moderators = {} -- Mods; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
501 settings.Admins = {dASHGGFGFGFS} -- Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
502 settings.Owners = {} -- Head Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
503 settings.Creators = {} -- Place Owner; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
504 settings.Banned = {} -- List of people banned from the game Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
505 settings.Muted = {} -- List of people muted Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
506 settings.Blacklist = {} -- List of people banned from using admin Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
507 settings.Whitelist = {} -- People who can join if whitelist enabled Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";}
508 settings.Permissions = {} -- Command permissions; Format: {"Command:NewLevel";}
509 settings.MusicList = {}; -- List of songs to appear in the script Format: {{Name = "somesong",ID = 1234567},{Name = "anotherone",ID = 1243562}}
510 settings.CapeList = {}; -- List of capes Format: {{Name = "somecape",Material = "Fabric",Color = "Bright yellow",ID = 12345567,Reflectance = 1},{etc more stuff here}}
511 settings.CustomRanks = {}; -- List of custom AdminLevel ranks Format: {RankName = {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";};}
512
513 settings.OnStartup = {}; -- List of commands ran at server start Format: {":notif TestNotif"}
514 settings.OnJoin = {}; -- List of commands ran as player on join (ignores adminlevel) Format: {":cmds"}
515 settings.OnSpawn = {}; -- List off commands ran as player on spawn (ignores adminlevel) Format: {"!fire Really red",":ff me"}
516
517 settings.SaveAdmins = true -- If true anyone you :admin or :owner in-game will save
518 settings.WhitelistEnabled = false -- If true enables the whitelist/server lock; Only lets admins & whitelisted users join
519
520 settings.Prefix = ":" -- The : in :kill me
521 settings.PlayerPrefix = "!" -- The ! in !donate; Mainly used for commands that any player can run; Do not make it the same as settings.Prefix
522 settings.SpecialPrefix = "" -- Used for things like "all", "me" and "others" (If changed to ! you would do :kill !me)
523 settings.SplitKey = " " -- The space in :kill me (eg if you change it to / :kill me would be :kill/me)
524 settings.BatchKey = "|" -- :kill me | :ff bob | :explode scel
525 settings.ConsoleKeyCode = "Quote" -- Keybind to open the console; Rebindable per player in userpanel; KeyCodes: http://wiki.roblox.com/index.php?title=API:Enum/KeyCode
526
527 settings.HttpWait = 60; -- How long things that use the HttpService will wait before updating again
528 settings.Trello_Enabled = false; -- Are the Trello features enabled?
529 settings.Trello_Primary = ""; -- Primary Trello board
530 settings.Trello_Secondary = {"9HH6BEX2"}; -- Secondary Trello boards Format: {"BoardID";"BoardID2","etc"}
531 settings.Trello_AppKey = ""; -- Your Trello AppKey Link: https://trello.com/app-key
532 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
533
534 settings.G_API = true -- If true allows other server scripts to access certain functions described in the API module through _G.Adonis
535 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)
536 settings.G_Access_Key = "Example_Key" -- Key required to use the _G access API; Example_Key will not work for obvious reasons
537 settings.G_Access_Perms = "Read" -- Access perms
538 settings.Allowed_API_Calls = {
539 Client = false; -- Allow access to the Client (not recommended)
540 Settings = false; -- Allow access to settings (not recommended)
541 DataStore = false; -- Allow access to the DataStore (not recommended)
542 Core = false; -- Allow access to the script's core table (REALLY not recommended)
543 Service = false; -- Allow access to the script's service metatable
544 Remote = false; -- Communication table
545 HTTP = false; -- HTTP related things like Trello functions
546 Anti = false; -- Anti-Exploit table
547 Logs = false;
548 UI = false; -- Client UI table
549 Admin = false; -- Admin related functions
550 Functions = false; -- Functions table (contains functions used by the script that don't have a subcategory)
551 Variables = true; -- Variables table
552 API_Specific = true; -- API Specific functions
553 }
554
555 settings.FunCommands = true -- Are fun commands enabled?
556 settings.PlayerCommands = true -- Are players commands enabled?
557 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
558 settings.CreatorPowers = true -- Gives me creator level admin; This is strictly used for debugging; I can't debug without full access to the script
559 settings.CodeExecution = true -- Enables the use of code execution in Adonis; Scripting related and a few other commands require this
560
561 settings.BanMessage = "Banned" -- Message shown to banned users
562 settings.LockMessage = "Not Whitelisted" -- Message shown to people when they are kicked while the game is :slocked
563 settings.SystemTitle = "System Message" -- Title to display in :sm
564
565 settings.MaxLogs = 500 -- Maximum logs to save before deleting the oldest; Too high can lag the game
566 settings.Notification = true -- Whether or not to show the "You're an admin" and "Updated" notifications
567 settings.SongHint = true -- Display a hint with the current song name and ID when a song is played via :music
568
569 settings.AutoClean = false -- Will auto clean service.Workspace of things like hats and tools
570 settings.AutoCleanDelay = 60 -- Time between auto cleans
571
572 settings.CustomChat = false -- Custom chat
573 settings.PlayerList = false -- Custom playerlist
574 settings.Console = true -- Command console
575
576 settings.HelpSystem = true -- Allows players to call admins for help using !help
577 settings.HelpButton = true -- Shows a little help button in the bottom right corner
578
579 settings.DonorCapes = true -- Donors get to show off their capes; Not disruptive :)
580 settings.DonorCommands = true -- Show your support for the script and let donors use harmless commands like !sparkles
581 settings.LocalCapes = false -- Makes Donor capes local so only the donors see their cape [All players can still disable capes locally]
582
583 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)
584 settings.ReplicationLogs = false -- [May cause lag] Attempts to log who makes and deletes objects in the game
585 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
586 settings.Detection = true -- Attempts to detect certain known exploits
587 settings.CheckClients = true -- Checks clients every minute or two to make sure they are still active
588
589 settings.AntiNil = true -- Try's to prevent non-admins from hiding in "nil"
590 settings.AntiSpeed = true -- Attempts to detect speed exploits
591 settings.AntiNoclip = true -- Attempts to detect noclipping and kills the player if found
592 settings.AntiParanoid = false -- Attempts to detect paranoid and kills the player if found
593 settings.AntiDeleteTool = false -- [May break guns] Attempts to block use of the delete tool and other building tools
594 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...)
595 settings.AntiUnAnchor = false -- [May cause lag] Attempts to prevent the unanchoring of parts
596 settings.AntiLeak = false -- Attempts to prevent place downloading/saving; Do not use if game saves
597 settings.AntiBillboardImage = false -- Attempts to find billboard images and remove them; These are usually used to insert inappropriate images into the game
598 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
599 Enabled = false; -- If AntiInsert is enabled or not
600 Explosion = { -- The ClassName to look for; You can add new ClassNames by following the Format provided
601 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
602 Properties = { -- Properties to use if change is true; The default properties will basically nerf any explosions
603 BlastPressure = 0;
604 BlastRadius = 0;
605 DestroyJoinRadiusPercent = 0;
606 ExplosionType = "NoCraters";
607 }
608 };
609 Decal = { -- I included some common classnames to replace settings like AntiDecal, NerfExplosions, and AntiSound
610 Action = "None"; -- Set to "Delete" to prevent decals from being added
611 };
612 Sound = {
613 Action = "None"; -- Set to "Delete" to prevent new sounds from being added (WARNING THIS IS ALL SOUNDS INCLDING SCRIPT MADE ONES)
614 };
615 }
616
617 ---------------------
618 -- END OF SETTINGS --
619 ---------------------
620
621 --// Setting descriptions used for the in-game settings editor;
622
623 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 ]]
624 descs.DataStore = [[ DataStore the script will use for saving data; Changing this will lose any saved data ]]
625 descs.DataStoreKey = [[ Key used to encode all datastore entries; Changing this will lose any saved data ]]
626 descs.DataStoreEnabled = [[ Disable if you don't want settings and admins to be saveable in-game; PlayerData will still save ]]
627 descs.Storage = [[ Where things like tools are stored ]]
628
629 descs.Theme = [[ UI theme; ]]
630 descs.MobileTheme = [[ Theme to use on mobile devices; Mobile themes are optimized for smaller screens; Some GUIs are disabled ]]
631
632 descs.Moderators = [[ Mods; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
633 descs.Admins = [[ Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
634 descs.Owners = [[ Head Admins; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
635 descs.Creators = [[ Anyone to be identified as a place owner; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
636 descs.Banned = [[ List of people banned from the game; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
637 descs.Muted = [[ List of people muted; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
638 descs.Blacklist = [[ List of people banned from using admin; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
639 descs.Whitelist = [[ People who can join if whitelist enabled; Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";} ]]
640 descs.Permissions = [[ Command permissions; Format: {"Command:NewLevel";} ]]
641 descs.MusicList = [[ List of songs to appear in the script; Format: {{Name = "somesong",ID = 1234567},{Name = "anotherone",ID = 1243562}} ]]
642 descs.CapeList = [[ List of capes; Format: {{Name = "somecape",Material = "Fabric",Color = "Bright yellow",ID = 12345567,Reflectance = 1},{etc more stuff here}} ]]
643 descs.CustomRanks = [[ List of custom AdminLevel ranks Format: {RankName = {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID";};} ]]
644
645 descs.OnStartup = [[ List of commands ran at server start Format: {":notif TestNotif"} ]]
646 descs.OnJoin = [[ List of commands ran as player on join (ignores adminlevel) Format: {":cmds"} ]]
647 descs.OnSpawn = [[ List off commands ran as player on spawn (ignores adminlevel) Format: {"!fire Really red",":ff me"} ]]
648
649 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 ]]
650 descs.WhitelistEnabled = [[ If true enables the whitelist/server lock; Only lets admins & whitelisted users join ]]
651
652 descs.Prefix = [[ The : in :kill me ]]
653 descs.PlayerPrefix = [[ The ! in !donate; Mainly used for commands that any player can run ]]
654 descs.SpecialPrefix = [[ Used for things like "all", "me" and "others" (If changed to ! you would do :kill !me) ]]
655 descs.SplitKey = [[ The space in :kill me (eg if you change it to / :kill me would be :kill/me) ]]
656 descs.BatchKey = [[ :kill me | :ff bob | :explode scel ]]
657 descs.ConsoleKeyCode = [[ Keybind to open the console ]]
658
659 descs.HttpWait = [[ How long things that use the HttpService will wait before updating again ]]
660 descs.Trello_Enabled = [[ Are the Trello features enabled? ]]
661 descs.Trello_Primary = [[ Primary Trello board ]]
662 descs.Trello_Secondary = [[ Secondary Trello boards; Format: {"BoardID";"BoardID2","etc"} ]]
663 descs.Trello_AppKey = [[ Your Trello AppKey; Link: https://trello.com/app-key ]]
664 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 ]]
665
666 descs.G_API = [[ If true allows other server scripts to access certain functions described in the API module through _G.Adonis ]]
667 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) ]]
668 descs.G_Access_Key = [[ Key required to use the _G access API; Example_Key will not work for obvious reasons ]]
669 descs.G_Access_Perms = [[ Access perms level ]]
670 descs.Allowed_API_Calls = [[ Allowed calls ]]
671
672 descs.FunCommands = [[ Are fun commands enabled? ]]
673 descs.PlayerCommands = [[ Are players commands enabled? ]]
674 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 ]]
675
676 descs.BanMessage = [[ Message shown to banned users ]]
677 descs.LockMessage = [[ Message shown to people when they are kicked while the game is :slocked ]]
678 descs.SystemTitle = [[ Title to display in :sm ]]
679
680 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 ]]
681 descs.MaxLogs = [[ Maximum logs to save before deleting the oldest; Too high can lag the game ]]
682 descs.Notification = [[ Whether or not to show the "You're an admin" and "Updated" notifications ]]
683 descs.CodeExecution = [[ Enables the use of code execution in Adonis; Scripting related and a few other commands require this ]]
684 descs.SongHint = [[ Display a hint with the current song name and ID when a song is played via :music ]]
685
686 descs.AutoClean = [[ Will auto clean service.Workspace of things like hats and tools ]]
687 descs.AutoCleanDelay = [[ Time between auto cleans ]]
688
689 descs.CustomChat = [[ Custom chat ]]
690 descs.PlayerList = [[ Custom playerlist ]]
691 descs.Console = [[ Command console ]]
692
693 descs.DonorCommands = [[ Show your support for the script and let donors use commands like !sparkles ]]
694 descs.DonorCapes = [[ Determines if donors have capes ]]
695 descs.LocalCapes = [[ Makes Donor capes local instead of removing them ]]
696
697 descs.HelpSystem = [[ Allows players to call admins for help using !help ]]
698 descs.HelpButton = [[ Shows a little help button in the bottom right corner ]]
699
700 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) ]]
701 descs.ReplicationLogs = [[ Attempts to log who makes and deletes objects in the game ]]
702 descs.NetworkOwners = [[ Logs the first network owners of parts created in workspace; Can be used to see who made parts (only parts) in workspace ]]
703 descs.Detection = [[ Attempts to detect certain known exploits ]]
704 descs.CheckClients = [[ Checks clients every minute or two to make sure they are still active ]]
705
706 descs.AntiNil = [[ Try's to prevent non-admins from hiding in "nil" ]]
707 descs.AntiSpeed = [[ Attempted to detect speed exploits ]]
708 descs.AntiNoclip = [[ Attempts to detect noclipping and kills the player if found ]]
709 descs.AntiParanoid = [[ Attempts to detect paranoid and kills the player if found ]]
710 descs.AntiDeleteTool = [[ Attempts to block use of the delete tool and other building tools ]]
711 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...) ]]
712 descs.AntiUnAnchor = [[ Attempts to prevent the unanchoring of parts ]]
713 descs.AntiLeak = [[ Attempts to prevent place downloading/saving; Do not use if game saves ]]
714 descs.AntiBillboardImage = [[ Attempts to find billboard images and remove them; These are usually used to insert inappropriate images into the game ]]
715 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 ]]
716
717 order = {
718 "HideScript";
719 "DataStore";
720 "DataStoreKey";
721 "DataStoreEnabled";
722 "Storage";
723 " ";
724 "Theme";
725 "MobileTheme";
726 " ";
727 "Moderators";
728 "Admins";
729 "Owners";
730 "Creators";
731 "Banned";
732 "Muted";
733 "Blacklist";
734 "Whitelist";
735 "MusicList";
736 "CapeList";
737 "CustomRanks";
738 " ";
739 "OnStartup";
740 "OnJoin";
741 "OnSpawn";
742 " ";
743 "SaveAdmins";
744 "WhitelistEnabled";
745 " ";
746 "Prefix";
747 "PlayerPrefix";
748 "SpecialPrefix";
749 "SplitKey";
750 "BatchKey";
751 "ConsoleKeyCode";
752 " ";
753 "HttpWait";
754 "Trello_Enabled";
755 "Trello_Primary";
756 "Trello_Secondary";
757 "Trello_AppKey";
758 "Trello_Token";
759 " ";
760 "G_API";
761 "G_Access";
762 "G_Access_Key";
763 "G_Access_Perms";
764 "Allowed_API_Calls";
765 " ";
766 "FunCommands";
767 "PlayerCommands";
768 "ChatCommands";
769 "CreatorPowers";
770 "CodeExecution";
771 " ";
772 "BanMessage";
773 "LockMessage";
774 "SystemTitle";
775 " ";
776 "MaxLogs";
777 "Notification";
778 "SongHint";
779 "";
780 "AutoClean";
781 "AutoCleanDelay";
782 " ";
783 "CustomChat";
784 "PlayerList";
785 "Console";
786 " ";
787 "HelpSystem";
788 "HelpButton";
789 " ";
790 "DonorCommands";
791 "DonorCapes";
792 "LocalCapes";
793 " ";
794 "LocalLighting";
795 "ReplicationLogs";
796 "NetworkOwners";
797 "Detection";
798 "CheckClients";
799 " ";
800 "AntiNil";
801 "AntiSpeed";
802 "AntiNoclip";
803 "AntiParanoid";
804 "AntiDeleteTool";
805 "AntiDelete";
806 "AntiUnAnchor";
807 "AntiLeak";
808 "AntiBillboardImage";
809 "AntiInsert";
810 }
811
812return {Settings = settings, Descriptions = descs, Order = order}
813client = nil
814service = nil
815return function()
816 --Acts the same as a server plugin but with client functions instead of server.
817 --[[
818 local window = client.UI.Make("Window",{
819 Title = "Changing DataStore";
820 Size = {700,300};
821 Icon = "rbxassetid://357249130";
822 })
823
824 window.Add("ImageLabel",{
825 Image = "rbxassetid://531490964";
826 })
827
828 --]]
829end))