[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Plugins & Modules

Jump to bottom

Expertcoderz edited this page Jul 8, 2022 · [12 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules/_history)

Adonis expects any modules it's loading to return a function containing the module's code to run. Adonis will require the module, set the returned function's environment to a custom one containing all important variables, and will execute the function.

Plugins are loaded without yielding and will be loaded only after all of the core modules are loaded.

## User-defined modules (plugins)

Developers can create custom modules for Adonis to load without needing to alter Adonis's MainModule. Simply add modules to `Adonis_Loader` > `Config` > `Plugins`

👉 Server modules should have names starting with "Server:" or "Server-"

👉 Client modules should have names starting with "Client:" or "Client-"

Example: "Server: CustomChatHandler"

The module's name will be used by Adonis to determine if the module is a client plugin or a server plugin. The modules will be loaded after the "Core" modules finish loading.

Plugins have the same level of access as any of Adonis's "Core" modules. Because of this, plugin modules are free to add, remove, and change whatever they like. It is advised, however, that you avoid removing any existing tables, functions, or objects and instead replace them with "dummy" alternatives to avoid causing serious errors.

## Example server plugin

The following is an example server plugin

    return function(Vargs)
        local server = Vargs.Server
        local service = Vargs.Service

            --// Add a new command to the Commands table at index "ExampleCommand1"
        server.Commands.ExampleCommand1 = {                        --// The index & table of the command
            Prefix = server.Settings.Prefix;                    --// The prefix the command will use, this is the ':' in ':ff me'
            Commands = {"examplecommand1", "examplealias1", "examplealias2"};    --// A table containing the command strings (the things you chat in-game to run the command, the 'ff' in ':ff me')
            Args = {"arg1", "arg2", "etc"};                        --// Command arguments, these will be available in order as args[1], args[2], args[3], etc; This is the 'me' in ':ff me'
            Description = "Example command";                    --// The description of the command
            AdminLevel = 100; -- Moderators                        --// The command's minimum admin level; This can also be a table containing specific levels rather than a minimum level: {124, 152, "HeadAdmins", etc};
            --// Alternative option: AdminLevel = "Moderators";
            Filter = true;                                --// Should user supplied text passed to this command be filtered automatically? Use this if you plan to display a user-defined message to other players
            Fun = false;                                --// Is this command considered as fun?
            Hidden = true;                                --// Should this command be hidden from the command list?
            Disabled = true;                            --// Should this command be unusable?
            NoStudio = false;                            --// Should this command be blocked from being executed in a Studio environment?
            NonChattable = false;                            --// Should this command be blocked from being executed via chat?
            CrossServerDenied = false;                        --// If true, this command will not be usable via :crossserver
            Function = function(plr: Player, args: {string}, data: {})        --// The command's function; This is the actual code of the command which runs when you run the command
                --// "plr" is the player running the command
                --// "args" is a table containing command arguments supplied by the user
                --// "data" is a table containing information related to the command and the player running it, such as data.PlayerData.Level (the player's admin level)
                print("This is 'arg1':", args[1])
                print("This is 'arg2':", args[2])
                print("This is 'etc'(arg 3):", args[3])
                error("this is an example error :o !")
            end
    end

In this example, we create a new command named "ExampleCommand1" which can be ran using ":examplecommand1" (assuming the command Prefix is set to ":" in loader settings).

In the same way we can add commands, we can use the same method to remove or alter commands. Instead of creating an entirely new command named ExampleCommand, the following would remove the command ":ff" from the script and make it so the :kick command still exists but does nothing.

    return function(Vargs)
        local server = Vargs.Server
        local service = Vargs.Service

        --// Remove ForceField from the Commands table
        server.Commands.ForceField = nil

        --// Change the Kick command to do nothing:
        server.Commands.Kick.Function = function(plr: Player, args: {string})
            print(plr.Name .." tried to kick someone")
        end
    end

If you wish to do this, refer to the appropriate commands module located under `MainModule` > `Server` > `Commands` to view the internal index of a command. Alternatively, you may run `:cmdinfo <command>` in-game which will also display the command's index.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Process

Jump to bottom

Sky edited this page Jul 5, 2021 · [1 revision](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process/_history)

This table contains functions that handle various events, such as calls to the RemoteEvent or player messages/commands.

## Variables

    MsgStringLimit = 500; --// Max message string length to prevent long length chat spam server crashing (chat & command bar); Anything over will be truncated;
    MaxChatCharacterLimit = 250; --// Roblox chat character limit; The actual limit of the Roblox chat's textbox is 200 characters; I'm paranoid so I added 50 characters; Users should not be able to send a message larger than that;
    RateLimits = { --// Rate limit values for various events that may occur to prevent spam/performance issues
        Remote = 0.01;
        Command = 0.1;
        Chat = 0.1;
        CustomChat = 0.1;
        RateLog = 10;
    };

## Remote (userdata: Player, table: ClientData, string: Command, tuple: Arguments)

Handles client to server communication. This is called whenever the RemoteEvent is triggered by the client.

## Command (userdata: Player, string: Message, table: Options, bool: noYield)

Processes player commands.

## DataStoreUpdated (string: Key, table: Data)

Runs when the datastore updates and passes 'Key' and 'Data' to Core.LoadData

## CrossServerChat (table: Data)

Handles cross-server chat messages.

## CustomChat (userdata: Player, string: Message, string: Mode, bool CanCross)

Handles messages sent via Adonis's custom chat.

## Chat (userdata: Player, string: Message)

Handles player chats.

## WorkspaceChildAdded (userdata: Child)

Runs when a new child is added to Workspace. Previously, this was used as an alternative to player.CharacterAdded however is no longer in use.

## LogService (Message, Trace, Script)

Runs whenever a new message is added by the LogService. Not currently used.

## PlayerAdded (userdata: Player)

Runs when a new player joins the game and handles the initial loading process, such as player removal (if banned) and client hooking.

## PlayerRemoving (userdata: Player)

Runs when a player is leaving. Fires service.Events.PlayerRemoving(Player)

## NetworkAdded (userdata: NetworkClient)

Runs when a new NetworkClient object is added to NetworkServer Fires service.Events.NetworkAdded(NetworkClient)

## NetworkRemoved (userdata: NetworkClient)

Runs when a NetworkClient is removed. Fires service.Events.NetworkRemoved(NetworkClient)

## FinishLoading (userdata: Player)

Assuming the player isn't removed or leaves while loading (during PlayerAdded) this function will run when the player and client are fully finished loading and are ready for communication. This handles the "You're an admin!" messages as well as other things that happen when the player finishes loading, such as the enabling of various client-side anti-exploit handlers and misc features. Fires service.Events.PlayerAdded(Player)

## CharacterAdded (userdata: Player)

Runs whenever a player's character loads.

## PlayerTeleported (userdata: Player, data)

Runs whenever a player teleports to the current server. Not currently used.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Functions

Jump to bottom

Expertcoderz edited this page Jun 23, 2022 · [2 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions/_history)

Contains various server-specific miscellaneous functions.

**ℹ This page is currently incomplete.**

### PlayerFinders

These are used when `service.GetPlayers` is called to search for players based on the user's input. The default built-in player finders (at the time of writing this) can be found below to be used as examples:

    PlayerFinders = {
        ["me"] = {
            Match = "me";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                table.insert(players,plr)
                plus()
            end;
        };

        ["all"] = {
            Match = "all";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local everyone = true
                if isKicking then
                    for i,v in next,parent:GetChildren() do
                        local p = getplr(v)
                        if p.Name:lower():sub(1,#msg)==msg:lower() then
                            everyone = false
                            table.insert(players,p)
                            plus()
                        end
                    end
                end
                if everyone then
                    for i,v in next,parent:GetChildren() do
                        local p = getplr(v)
                        if p then
                            table.insert(players,p)
                            plus()
                        end
                    end
                end
            end;
        };

        ["@everyone"] = {
            Match = "@everyone";
            Absolute = true;
            Function = function(...)
                return Functions.PlayerFinders.all.Function(...)
            end
        };

        ["others"] = {
            Match = "others";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                for i,v in next,parent:GetChildren() do
                    local p = getplr(v)
                    if p ~= plr then
                        table.insert(players,p)
                        plus()
                    end
                end
            end;
        };

        ["random"] = {
            Match = "random";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                if #players>=#parent:GetChildren() then return end
                local rand = parent:GetChildren()[math.random(#parent:children())]
                local p = getplr(rand)
                    for i,v in pairs(players) do
                    if(v.Name == p.Name)then
                        Functions.PlayerFinders.random.Function(msg, plr, parent, players, getplr, plus, isKicking)
                        return;
                    end
                end
                    table.insert(players,p)
                plus();
            end;
        };

        ["admins"] = {
            Match = "admins";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                for i,v in next,parent:GetChildren() do
                    local p = getplr(v)
                    if Admin.CheckAdmin(p,false) then
                        table.insert(players, p)
                        plus()
                    end
                end
            end;
        };

        ["nonadmins"] = {
            Match = "nonadmins";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                for i,v in next,parent:GetChildren() do
                    local p = getplr(v)
                    if not Admin.CheckAdmin(p,false) then
                        table.insert(players,p)
                        plus()
                    end
                end
            end;
        };

        ["friends"] = {
            Match = "friends";
            Prefix = true;
            Absolute = true;
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                for i,v in next,parent:GetChildren() do
                    local p = getplr(v)
                    if p:IsFriendsWith(plr.userId) then
                        table.insert(players,p)
                        plus()
                    end
                end
            end;
        };

        ["@username"] = {
            Match = "@";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = tonumber(msg:match("@(.*)"))
                local foundNum = 0
                    if matched then
                    for i,v in next,parent:GetChildren() do
                        local p = getplr(v)
                        if p and p.Name == matched then
                            table.insert(players,p)
                            plus()
                            foundNum = foundNum+1
                        end
                    end
                end
            end;
        };

        ["%team"] = {
            Match = "%";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = msg:match("%%(.*)")
                if matched then
                    for i,v in next,service.Teams:GetChildren() do
                        if v.Name:lower():sub(1,#matched) == matched:lower() then
                            for k,m in next,parent:GetChildren() do
                                local p = getplr(m)
                                if p.TeamColor == v.TeamColor then
                                    table.insert(players,p)
                                    plus()
                                end
                            end
                        end
                    end
                end
            end;
        };

        ["$group"] = {
            Match = "$";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = msg:match("%$(.*)")
                if matched and tonumber(matched) then
                    for i,v in next,parent:children() do
                        local p = getplr(v)
                        if p:IsInGroup(tonumber(matched)) then
                            table.insert(players,p)
                            plus()
                        end
                    end
                end
            end;
        };

        ["id-"] = {
            Match = "id-";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = tonumber(msg:match("id%-(.*)"))
                local foundNum = 0
                if matched then
                    for i,v in next,parent:children() do
                        local p = getplr(v)
                        if p and p.userId == matched then
                            table.insert(players,p)
                            plus()
                            foundNum = foundNum+1
                        end
                    end
                    if foundNum == 0 then
                        local ran,name = pcall(function() return service.Players:GetNameFromUserIdAsync(matched) end)
                        if ran and name then
                            local fakePlayer = service.Wrap(service.New("Folder"))
                            local data = {
                                Name = name;
                                ToString = name;
                                ClassName = "Player";
                                AccountAge = 0;
                                CharacterAppearanceId = tostring(matched);
                                UserId = tonumber(matched);
                                userId = tonumber(matched);
                                Parent = service.Players;
                                Character = Instance.new("Model");
                                Backpack = Instance.new("Folder");
                                PlayerGui = Instance.new("Folder");
                                PlayerScripts = Instance.new("Folder");
                                Kick = function() fakePlayer:Destroy() fakePlayer:SetSpecial("Parent", nil) end;
                                IsA = function(ignore, arg) if arg == "Player" then return true end end;
                            for i,v in next,data do fakePlayer:SetSpecial(i, v) end
                            table.insert(players, fakePlayer)
                            plus()
                        end
                    end
                end
            end;
        };

        ["displayname-"] = {
            Match = "displayname-";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = tonumber(msg:match("displayname%-(.*)"))
                local foundNum = 0
                if matched then
                    for i,v in next,parent:children() do
                        local p = getplr(v)
                        if p and p.DisplayName == matched then
                            table.insert(players,p)
                            plus()
                            foundNum = foundNum+1
                        end
                    end
                end
            end;
        };

        ["team-"] = {
            Match = "team-";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                print(1)
                local matched = msg:match("team%-(.*)")
                if matched then
                    for i,v in next,service.Teams:GetChildren() do
                        if v.Name:lower():sub(1,#matched) == matched:lower() then
                            for k,m in next,parent:GetChildren() do
                                local p = getplr(m)
                                if p.TeamColor == v.TeamColor then
                                    table.insert(players, p)
                                    plus()
                                end
                            end
                        end
                    end
                end
            end;
        };

        ["group-"] = {
            Match = "group-";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = msg:match("group%-(.*)")
                if matched and tonumber(matched) then
                    for i,v in next,parent:children() do
                        local p = getplr(v)
                        if p:IsInGroup(tonumber(matched)) then
                            table.insert(players,p)
                            plus()
                        end
                    end
                end
            end;
        };

        ["-name"] = {
            Match = "-";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = msg:match("%-(.*)")
                if matched then
                    local removes = service.GetPlayers(plr,matched,true)
                    for i,v in next,players do
                        for k,p in next,removes do
                            if v.Name == p.Name then
                                table.remove(players,i)
                                plus()
                            end
                        end
                    end
                end
            end;
        };

        ["#number"] = {
            Match = "#";
            Function = function(msg, plr, ...)
                local matched = msg:match("%#(.*)")
                if matched and tonumber(matched) then
                    local num = tonumber(matched)
                    if not num then
                        Remote.MakeGui(plr,'Output',{Title = 'Output'; Message = "Invalid number!"})
                    end
                        for i = 1,num do
                        Functions.PlayerFinders.random.Function(msg, plr, ...)
                    end
                end
            end;
        };

        ["radius-"] = {
            Match = "radius-";
            Function = function(msg, plr, parent, players, getplr, plus, isKicking)
                local matched = msg:match("radius%-(.*)")
                if matched and tonumber(matched) then
                    local num = tonumber(matched)
                    if not num then
                        Remote.MakeGui(plr,'Output',{Title = 'Output'; Message = "Invalid number!"})
                    end
                        for i,v in next,parent:GetChildren() do
                        local p = getplr(v)
                        if p ~= plr and plr:DistanceFromCharacter(p.Character.Head.Position) <= num then
                            table.insert(players,p)
                            plus()
                        end
                    end
                end
            end;
        };
    };

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Anti

Jump to bottom

Sky edited this page Jul 5, 2021 · [1 revision](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti/_history)

This table contains all server-side anti-exploit related functions/variables. They can be accessed via server.Anti

## ClientTimeoutLimit

Default: 120 How long a player's client can 'go dark' before the player is kicked from the game.

## RemovePlayer (Player (Object), Reason (Optional String))

Removes 'Player' for 'Reason'

## CheckAllClients ()

Checks if all clients are alive and responding. If client has not communicated for more than Anti.ClientTimeoutLimit the player the client belongs to will be removed from the server.

## UserSpoofCheck (Player (Object))

Attempts to detect username/userid spoofing.

Returns: true if spoofing detected

## Sanitize (Object, ClassList (Table))

Searches 'Object' for children matching 'ClassList' and attempts to remove them if found. An example use case would be removing all scripts from a given hat.

## isFake (Player (Object))

Attempts to determine if a player object is a real player.

Returns: true if "fake"

## RemoveIfFake (Player (Object))

Removes 'Player' if isFake returns true

## FindFakePlayers ()

Attempts to find and remove "fake" players.

## GetClassName (Object)

Attempts to get the class name of the given 'Object' regardless of whether or not it's RobloxLocked.

## RLocked (Object)

Returns true if 'Object' is RobloxLocked

## ObjRLocked (Object)

Identical to RLocked.

## AssignName ()

Returns a random 6 digit number.

## Detected (Player (Object), Action (String), Info (String))

Actions: Log - Only logs the event Kick - Logs the event and kicks the player Crash - Logs the event and attempts to crash the player in addition to kicking them.

This function is called whenever a player is detected by the anti-exploit system. The player and 'Info' are logged and the specified action is performed.

## CheckNameID (Player (Object))

Another method to attempt to detect Name/UserId spoofing.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Admin

Jump to bottom

joritochip edited this page Mar 19, 2023 · [3 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin/_history)

The 'Admin' sub-table (server.Admin) contains admin-related functions and variables. The below functions can be accessed as members of server.Admin (For example: server.Admin.GetLevel(p))

## DoHideChatCmd (Player (Object), Message (String), Data (Optional Player Data Table))

Checks whether or not to hide commands ran from the chat for the specific player.

## GetTrueRank (Player (Object), GroupId (Int))

Deprecated Runs GetRankInGroup from the target player's client and returns the result. This is intended to be a less secure way to avoid group rank caching, however due to security concerns should really not be used.

## GetPlayerGroup (Player (Object), GroupName or GroupId (String or Int))

Checks groups the player is in against the GroupName/GroupId provided and returns the group if found.

Returns: Group

## IsMuted (Player (Object))

Checks if the given player is muted.

Returns true if muted

## DoCheck (Player (Object, String, Int), Check (String, Int, Table))

Checks the given player/string/int (Player) against the given string/int/table (Check) and will return true if they match. This function is responsible for checking if a given player/input matches something else. For example, DoCheck(Player, "Group:181") would return true if Player is in the group with ID 181.

Returns: true if matched, false or nil if not

## UpdateCachedLevel (Player (Object))

Updates the cached version of the player's admin level. Admin levels are cached for a set period of time to lower any performance impacts that may arise from constantly checking if a player is an admin.

Returns: AdminLevel

## LevelToList (Level (Int))

Takes a given level value and returns the list the level belongs to. This may become inaccurate if there are multiple lists/admin ranks that share the same level. If there are multiple ranks with the same level, built in/default ranks (HeadAdmins, Admins, Moderators, Creators) will be preferred over custom ranks.

Returns: list.Users, listName, list

## LevelToListName (Level (Int))

Similar to LevelToList however only returns the name of the found rank.

Returns: RankName

## GetLevel (Player (Object))

Returns the admin level for the given player. This will match the level of the highest admin rank the player belongs to. The default level values are: Place Owner: 1000 Creators: 900 HeadAdmins: 300 Admins: 200 Moderators: 100 Players: 0

Returns: AdminLevel

## GetUpdatedLevel (Player (Object))

Gets the updated admin level for the provided player. This called automatically when the cached version of the player's admin level expires and should not be used too often for performance reasons.

Returns: AdminLevel

## CheckAdmin (Player (Object))

Returns true if the player is an admin (level > 0), false if not.

Returns: boolean

## SetLevel (Player (Object), NewLevel (Int))

Sets the target player's level to the new level indicated. Cannot set level of any user at level 1000 or higher (place owner) This will not change the player's rank, but will rather set a "level override" via Admin.SpecialLevels which takes priority over rank tables.

## IsTempAdmin (Player (Object))

Returns true if the player is a temporary administrator.

## RemoveAdmin (Player (Object), isTemp (Optional Bool))

Removes the target player as an admin. If isTemp is true, it will remove them from the TempAdmins table.

## AddAdmin (Player (Object), Level (String/Int), isTemp(Bool))

Makes the target player an admin, removing them from the admin table they are currently in (if any.) If isTemp is true, will make them a temporary admin. If Level is a string it will be converted to it's level equivalent if possible.

## CheckDonor (Player (Object))

Checks if the player is a donor.

Returns: true if donor

## CheckBan (Player (Object))

Checks if the given player is banned.

Returns: true if banned

## AddBan (Player (Object), Reason (String), doSave (Bool), moderator (Object))

Bans Player with the given Reason and will save if doSave is true.

## DoBanCheck (Player (String, Int), Check (String, Int, Table))

Similar to Admin.DoCheck but specifically for bans.

Returns: true if matched, false if not

## RemoveBan (Player (String, Int), doSave (Bool))

Unbans the given player name/id/etc and will save if doSave is true.

## RunCommand (Command (String), ArgsTuple (Tuple))

Runs the given command with the given arguments as the server.

## RunCommandAsPlayer (Command (String), Player (Object), ArgsTuple (Tuple))

Runs the given command as the given player with the given arguments. Overrides player's level.

## RunCommandAsNonAdmin (Command (String), Player (Object), ArgsTuple (Tuple))

Runs the given command as the given player with the given arguments. Treats the player as a non-admin. Overrides command level.

## CacheCommands ()

Updates the command cache. Commands are cached to avoid performance impacts caused by constantly iterating through and checking the entirety of the commands table whenever a player chats or runs a command. If a command is added after this is called, it might not appear in-game until this function is called to forcibly re-cache all commands.

## GetCommand (Command (String))

Based on the command provided, will return the command's Index, DataTable, and the command string that was matched from the given string.

Returns: String, Table, String

## FindCommands (Command (String))

Returns a list of commands matching 'Command'

## SetPermission (Command (String), NewLevel (String, Int))

Sets the AdminLevel of all commands matching 'Command' to 'NewLevel'

## FormatCommand (Command (Table))

Converts data about the given command into a string that can be used in :cmds, the console, etc.

## CheckTable (Check1 (Player, String, Int), Table)

Check 'Check1' against all entries in 'Table'

Returns: true if match is found

## CheckAliasBlacklist (Alias (String)

Checks if a given alias is blacklisted. This is to prevent the accidental override of important commands, such as those used to alter aliases.

Returns: true if blacklisted

## GetArgs (Message (String), NumArgs (Int), AdditionalArgs (Tuple))

Returns a table containing all arguments extracted from 'Message'

Returns: Args table

## AliasFormat (Aliases (Table), Message (String))

Alters the given message based on aliases found in the provided alias table 'Aliases.'

Returns: Updated message string

## IsComLevel (TestLevel (Int, String, Table), ComLevel (Int, String, Table))

Checks if 'TestLevel' matches 'ComLevel'

Returns: true or index,value if found.

## StringToComLevel (Rank (String))

Converts 'Rank' to it's level if found.

Returns: level

## CheckComLevel (PlayerLevel (Int), ComLevel (Int, String))

Checks if the player's level matches 'ComLevel'

Returns: true if matched

## IsBlacklisted (Player (Object))

Checks if 'Player' is blacklisted.

Returns: true if blacklisted

## CheckPermission (PlayerData (Table), Command (Table))

Checks if 'PlayerData' has permission to use 'Command.' This is responsible for command permission checks when a player runs a command.

Returns: true if allowed

## SearchCommands (Player (Object), Search (String))

Searches commands matching 'Search' that the player is allowed to run. This is mainly used by the console.

Returns: Table containing matched commands

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Variables

Jump to bottom

Sky edited this page Jul 5, 2021 · [1 revision](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables/_history)

Contains various miscellaneous variables used by Adonis that are either not appropriate for other modules or are intended to change constantly/be changed by plugins.

Documentation needed.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Guide: Creating a theme

Jump to bottom

Dimenpsyonal edited this page Mar 11, 2024 · [2 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme/_history)

# Getting started

In order to create a theme, you must have the Adonis Loader inside your game. You will also need to have access to the Adonis MainModule, but you do not need to keep this.

# Part 1

## Copying the theme

Go to the temporary Adonis MainModule copy and go to `MainModule > Client > UI`. This will allow you to see all the UI themes that Adonis uses. Select whichever one it is that you would like to base your new theme on! In our example, we will use Unity.

## Transferring the theme

Copy the theme you wish to base your new theme on and paste it in your loader at: `Adonis_Loader > Config > Themes`. You can now delete MainModule if you wish.

# Part 2

## Setting up your new theme

  1. Now you've successfully copied your theme over to your loader, you can start setting it up. Rename the theme to whatever it is you wish for it to be called. In this guide we will call it `ExampleTheme`.
  2. Now check that your theme has a StringValue inside called `Base_Theme`. If it doesn't, create it! This is the theme that Adonis will use if it cannot find a specific GUI. In our example we will set this to Aero.
  3. You've successfully installed the new theme! You can now select it in the menu. However, at the moment it is the exact same as another theme.

## Creating your new theme

  * Now it's time to customise your new theme. You can delete any GUIs you don't want to customise, and Adonis will automatically use the Base_Theme for these cases.
  * In this example, we will turn the colour of the UI into red and change the font to Source Sans Pro.
  *     * To do this, we will go to `ExampleTheme > Window > Drag` and change the FontFace from Ubuntu to Source Sans Pro. Then we will go into Drag and change the background frame to Red.
  * You can edit the UI further. If you wish to see the changes you are making, drag the ScreenGui into StarterGui. Just remember to put it back into the theme folder when you're done editing!
  * Additionally, you can also edit the UI code to include new features or change existing ones, such as click sounds.
  *     * Note that some UIs do not have ScreenGuis by default (such as Notifications/Hints)- this is intentional and you will have to add a ScreenGui to see these in StarterGui.

Congratulations! Just publish the game and you've successfully made an Adonis theme. If you have any queries, or would like to see a different guide, just ask in our communications server.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Remote

Jump to bottom

Sky edited this page Jul 5, 2021 · [1 revision](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote/_history)

Remote handles all remote server-client communication.

## Table: Returnables

This is a table containing functions that can be called via client.Remote.Get and will return something to the calling client.

## Table: UnEncrypted

This is a table containing functions that can be used by clients without needing encryption/various security checks. This contains functions mostly related to initial loading before keys are exchanged, or communication with non-adonis-client localscripts, as well as very basic rapid fire events like chat handling.

## Table: Commands

These are functions which can be ran by clients via client.Remote.Send They cannot return data and are purely "fire and forget."

## NewSession (string: SessionType)

Creates and returns a new session handler that can be used to facilitate temporary communication between the server and multiple users with special commands/event defined.

Clients can listen for session events as needed via service.Events.SessionData

Here's an example of NewSession in action in the form of a, at the time of writing this, work in process private chat command & GUI:

Server code:

    local newSession = Remote.NewSession("PrivateChat");
    local eventConnection = newSession.SessionEvent.Event:Connect(function(p, ...)
        local args = {...};
        local cmd = args[1];

        if cmd == "SendMessage" then
            if newSession.Users[p] then
                table.insert(newSession.Users[p].Messages, args[2]);
            end

            newSession.SendToUsers("PlayerSentMessage", p, args[2]);
        elseif cmd == "LeaveSession" then
            newSession.Users[p] = nil;
            newSession.SendToUsers("PlayerLeftSession", p);
        elseif cmd == "EndSession" and p == plr then
            newSession.End();
        end
    end)

    for i,v in ipairs(service.GetPlayers(plr, args[1])) do
        newSession.AddUser(v, {
            Messages = {};
        });

        Remote.MakeGui(v, "PrivateChat", {
            Owner = plr;
            SessionKey = newSession.SessionKey;
        })

        -- testing stuff below
        wait(2)
        newSession.SendToUsers("PlayerSentMessage", plr, "this is a test message");
    end

Client Code:

    local sessionEvent = service.Events.SessionData:Connect(function(sessionKey, cmd, ...)
        local vargs = {...};
        print("we got session thing!");
        if SessionKey == sessionKey then
          print("SESSION KEY VALID")
          if cmd == "PlayerSentChat" then
            local p = vargs[1];
            local message = vargs[2];

            print("got chat: ".. p.Name, "Message: ".. message)
          end
       end
    end)

## GetSession (string: SessionKey)

Gets the session belonging to 'SessionKey'

## Fire (userdata: Player, tuple: Arguments)

(Raw fire) Sends data to the client belonging to 'Player' with any arguments passed. Does not handle command encryption before sending. This should not be used for normal server-client communication.

## GetFire (userdata: Player, tuple: Arguments)

(Raw fire) Functionally similar to Remote.Fire except it uses the RemoteFunction and is thus able to return data from the client. This should not be used for normal server-client communication.

## Send (userdata: Player, string: Command, tuple: Arguments)

Encrypts 'Command' and sends it with 'Arguments' to client of 'Player' This should be used for normal communication.

## Get (userdata: Player, string: Command, tuple: Arguments)

Encrypts 'Command' and sends it with 'Arguments' to client of 'Player' Functionally similar to Remote.Send except it uses the RemoteFunction and is thus able to return data from the client. This should be used for normal communication.

## CheckClient (userdata: Player)

Checks if the 'Player's client is hooked and ready for communication.

## Ping (userdata: Player)

Runs Remote.Get(Player, "Ping") and returns the result.

## MakeGui (userdata: Player, string: GuiName, table: Data, table: ThemeData)

Tells 'Player's client to create the specified GUI with the specified data provided.

## MakeGuiGet (userdata: Player, string: GuiName, table: Data, table: ThemeData)

Identical to Remote.MakeGui except this will yield and return any data returned by the GUI created. This is used in conjunction with UI elements like the YesNoPrompt.

## GetGui (userdata: Player, string: GuiName, table: Data, table: ThemeData)

Alternative method of calling Remote.MakeGuiGet

## RemoveGui (userdata: Player, string: GuiName)

Removes the specified UI element belonging to 'GuiName' from 'Player'

## NewParticle (userdata: Player, userdata: Parent, string: Type, table: Properties)

Creates a new particle of 'Type' in 'Parent' locally for 'Player'

## RemoveParticle (userdata: Player, userdata: Parent, string: Name)

Removes particle from 'Parent' for 'Player'

## NewLocal (userdata: Player, string: ClassName, table: Properties, userdata: Parent)

Creates a new particle locally for 'Player' of 'ClassName' with 'Properties' in 'Parent'

## MakeLocal (userdata: Player, userdata: Object, userdata: Parent, bool: Clone)

Makes 'Object' local to 'Player'

## MoveLocal (Player, Object, Parent, newParent)

Moves local object to new parent for 'Player'

## RemoveLocal (Player, Object, Parent, string: Match)

Removes local from 'Player' in 'Parent' matching 'Object' or 'Match'

## SetLighting (Player, string: Property, Value)

Sets game.Lighting[Property] to 'Value' for 'Player'

## FireEvent (Player, tuple: Arguments)

Triggers client event on 'Player' with 'Arguments'

## NewPlayerEvent (Player, string: Type, function: Function)

Creates a new player event and can be triggered by the client.

## PlayAudio (Player, int: AudioId, int: Volume, int: Pitch, bool: Looped)

Plays audio locally on 'Player'

## StopAudio (Player, int: AudioId)

Stops current playing local audio on 'Player'

## StopAllAudio (userdata: Player)

Stops all playing audio (locally created by Adonis)

## LoadCode (Player, string: LuaCode, bool: GetResult)

Runs 'LuaCode' on the player's client and gets the result if 'GetResult' is true.

## Encrypt (string: String, string: Key, table: Cache)

Handles encryption.

## Decrypt (string: String, string: Key, table: Cache)

Handles decryption.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Home/_history).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# [History](https://github.com/Epix-Incorporated/Adonis/wiki/_history) / Home

## Revisions

Compare revisions

  * Fix link

[ Dimenpsyonal ](https://github.com/Dimenpsyonal) committed Sep 6, 2024

[1eeb211](https://github.com/Epix-Incorporated/Adonis/wiki/Home/1eeb2111fa70cc2aa67e6c6b0634a88e3846b9ce)

  * Updated Home (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jul 6, 2022

[eab7929](https://github.com/Epix-Incorporated/Adonis/wiki/Home/eab79299e6bd116d3dbb91499e0bc806c6bb6438)

  * Updated Home (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[a97640b](https://github.com/Epix-Incorporated/Adonis/wiki/Home/a97640ba704f0549c173c4203ce229cf857c4dbd)

  * Updated Home (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 23, 2022

[624526b](https://github.com/Epix-Incorporated/Adonis/wiki/Home/624526b1e46944b3cbdbf2825a6e6b95bd28c78f)

  * Updated Home (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 23, 2022

[f1cc0c3](https://github.com/Epix-Incorporated/Adonis/wiki/Home/f1cc0c37afc5a3a1eb573927546a95c51f2efab0)

  * added the new links

[ TruelyCald ](https://github.com/TruelyCald) committed Jun 6, 2022

[7bcdf1c](https://github.com/Epix-Incorporated/Adonis/wiki/Home/7bcdf1c4a035cfed233e7d47fae0c3c91810ebd9)

  * Updated Home (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed May 29, 2021

[5a22aec](https://github.com/Epix-Incorporated/Adonis/wiki/Home/5a22aec0cbd3e5a1135405c672d2ed35f1aa539f)

  * Updated Home (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Sep 25, 2020

[733e23e](https://github.com/Epix-Incorporated/Adonis/wiki/Home/733e23e3742928c3c0b5a4701c8228094e974bf5)

  * Updated Home (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[5f961b7](https://github.com/Epix-Incorporated/Adonis/wiki/Home/5f961b77087bcc3203d798a33d5e409b4fcf0a01)

  * Updated Home (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[1868546](https://github.com/Epix-Incorporated/Adonis/wiki/Home/1868546d3f671af6cb618a69b111a0b07785c441)

  * Updated Home (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[0475358](https://github.com/Epix-Incorporated/Adonis/wiki/Home/04753580e679b1a88f7d0c138f071d58132b7387)

  * Initial Home page

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[5999c38](https://github.com/Epix-Incorporated/Adonis/wiki/Home/5999c38e65b934fc6b3881333287fcba307234bc)


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Structure).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Structure

Jump to bottom

Expertcoderz edited this page Jun 23, 2022 · [4 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/Structure/_history)

# File Structure

The internal file structure of both Adonis's client and server can be broken down into four main parts:

## Core

This folder contains modules essential to the script's functionality. When Adonis starts, all modules within the core folder are loaded in a specific order. These modules must be loaded, in order, before the script can start doing anything.

### Server Load Order:

  1. Service
  2. Logs
  3. Variables
  4. Core
  5. Remote
  6. Functions
  7. Process
  8. Admin
  9. HTTP
  10. Anti
  11. Commands

### Client Load Order:

  1. Service
  2. Variables
  3. UI
  4. Core
  5. Remote
  6. Functions
  7. Process
  8. Anti

## Dependencies

All dependencies of the client or server are contained within the respective "Dependencies" folder. This can include pre-made scripts and UI elements.

## Plugins

The "Plugins" folders specific non-essential modules to be loaded. The server will automatically populate the client's Plugins folder if user defined client plugins are present in Loader > Config > Plugins

## Main Scripts

### Server

Handles the server-side loading process.

### Client

Handles the client-side loading process.

# Code Structure

Adonis has three main tables that nearly all variables, functions, settings, objects, and folders, can be accessed from.

## "server" & "client"

The "server" and "client" variables are tables containing everything related to Adonis's functionality. This includes any tables, functions, and variables added by loaded modules.

## service

The "service" metatable is a variable unique to Adonis and it's modules that provides many functions and services used throughout both the client and server. Within the service metatable are functions to handle anything from task creation and tracking to object deletion. If the index requested is not found within the service table, it will return a game service matching the index if it can. (Specifically, it just returns `game:GetService(index)`.)

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Commands

Jump to bottom

Sky edited this page Jul 5, 2021 · [1 revision](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands/_history)

This is the commands table. It contains all commands to be used by administrators in-game. It does not contain any additional functions or variables.

To add a command, simply do: server.Commands.CommandIndexHere = CommandDataTableHere

For example:

    server.Commands.SomeNewCommand = {    --// The index & table of the command
        Prefix = Settings.Prefix;                --// The prefix the command will use, this is the ':' in ':ff me'
        Commands = {"examplecommand"};    --// A table containing the command strings (the things you chat in-game to run the command, the 'ff' in ':ff me')
        Args = {"arg1", "arg2", "etc"};    --// Command arguments, these will be available in order as args[1], args[2], args[3], etc; This is the 'me' in ':ff me'
        Description = "Example command";--// The description of the command
        AdminLevel = 100; -- Moderators    --// The commands minimum admin level; This can also be a table containing specific levels rather than a minimum level: {124, 152, "HeadAdmins", etc};
        -- Alternative option: AdminLevel = "Moderators"
        Filter = true;                                    --// Should user supplied text passed to this command be filtered automatically? Use this if you plan to display a user-defined message to other players
        Hidden = true;                                    --// Should this command be hidden from the command list?
        Function = function(plr, args, data)    --// The command's function; This is the actual code of the command which runs when you run the command
            --// "plr" is the player running the command
            --// "args" is a table containing command arguments supplied by the user
            --// "data" is a table containing information related to the command and the player running it, such as data.PlayerData.Level (the player's admin level)
            print("This is 'arg1': ".. tostring(args[1]));
            print("This is 'arg2': ".. tostring(args[2]));
            print("This is 'etc'(arg 3): ".. tostring(args[3]));
        end
    };

Note: After adding new commands it's always a good idea to call Admin.CacheCommands() to ensure they are added to the command cache (otherwise they won't be usable.)

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/G-API).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# G API

Jump to bottom

Dimenpsyonal edited this page Aug 11, 2024 · [16 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/G-API/_history)

**First of all, what is the _G API?**
The **_G API** is an API which allows scripts to interact globally. Adonis uses this to create select functions that can be interacted with by any server script, meaning any server script can access certain Adonis events using _G.Adonis.

## Table of Contents

    * Using the API
      * Settings
      * Usage in scripts
        * With _G.Access disabled
        * With _G.Access enabled
    * Functions

## Using the API

### Settings

To start, you need to have the appropriate settings enabled.

  * `settings.G_API = true` This needs to be set to true so that the _G.Adonis API can be used.
  * `settings.G_Access = false` This is optional for security, can be left false if you want. This controls whether scripts need an access key to use _G.Adonis.
  * `settings.G_Access_Key = "Example_Key"` This can be used to set an access key if the above setting is set to true. Example_Key is excluded and will not work.
  * `settings.G_Access_Perms = "Read"` This controls what permissions other scripts have over the _G API, read or write.

### Usage in scripts

#### With _G.Access disabled

  * `_G.Adonis.Function(Input, Player(s))`

For example,

`_G.Adonis.Hint("Message", game.Players:GetPlayers())` would create a hint for all players with the word "Message".

#### With _G.Access enabled

  * `Functions = _G.Adonis.Access("API Key", "Functions")` \- Replace Functions with whatever functions you wish to access.

For example,
  * `local AdminAccess = _G.Adonis.Access("TEST_KEY_SAMPLE", "Admin")`
  * `AdminAccess.AddAdmin(game:GetService("Players")["epix_agent"], 900)` would give Creator admin to the player called "epix_agent".

## Functions

These are all the functions you can use with _G.Adonis. Most of them are self-explanatory.

Function  |  Description  |  Usage
---|---|---
Some arguments are optional.
CheckAdmin / IsAdmin  |  Checks if a player... is an admin. Obviously.  |  `_G.Adonis.CheckAdmin(player)`
CheckBan / IsBanned  |  Checks if a player is banned.  |  `_G.Adonis.CheckBan(player)`
IsMuted  |  Checks if a player is muted.  |  `_G.Adonis.IsMuted(player)`
CheckDonor  |  Checks if a player is a donor.  |  `_G.Adonis.CheckDonor(player)`
GetLevel  |  Gets the player's admin level.  |  `_G.Adonis.GetLevel(player)`
SetLighting  |  Sets the game lighting.  |  `_G.Adonis.SetLighting(property, value)`
SetPlayerLighting  |  Sets the lighting for an individual player.  |  `_G.Adonis.SetLighting(player, property, value)`
NewParticle  |  Creates a new particle effect on a player.  |  `_G.Adonis.NewParticle(player, particleType, properties)`
RemoveParticle  |  Removes a particle effect from a player.  |  `_G.Adonis.NewParticle(player, particleName)`
NewLocal  |  Removes a particle effect from a player.  |  `_G.Adonis.NewLocal(player, class, properties, parent)`
MakeLocal  |  Makes an object local.  |  `_G.Adonis.MakeLocal(player, object, parent, isClone)`
MoveLocal  |  Moves a local object from one player to another.  |  `_G.Adonis.MoveLocal(player, object, parent, newParent)`
RemoveLocal  |  Removes a local object.  |  `_G.Adonis.RemoveLocal(player, object, parent, shouldMatch)`
Hint  |  Makes a hint.  |  `_G.Adonis.Hint(message, players, duration, title, image)`
Message  |  Makes a big message.  |  `_G.Adonis.Message(sender, title, message, image, players, scroll, duration)`
RunCommandAsNonAdmin  |  Runs a command as if the player was a non-admin  |  `_G.Adonis.RunCommandAsNonAdmin(command, plr, ...)`

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.HTTP

Jump to bottom

Sky edited this page Jul 5, 2021 · [1 revision](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP/_history)

This table contains HTTP related functionality, including a Trello sub-table which handles everything Trello related.

This page is currently incomplete and requires documentation to be added.

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# Tables: server.Logs

Jump to bottom

Sky edited this page Jul 5, 2021 · [3 revisions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs/_history)

This table is responsible for all logging in Adonis.

## Log Tables

    Chats = {}; --// Chat logs
    Joins = {}; --// Join logs
    Script = {}; --// Script-related logs
    RemoteFires = {}; --// RemoteEvent logs
    Commands = {}; --// Command logs
    Exploit = {}; --// Exploit logs
    Errors = {}; --// Error logs
    TempUpdaters = {} --// Temporary functions used as list updaters

## TabToType (table: Table)

Returns a string describing what the provided table is logging.

Possible returns: "Chat", "Join", "Script", "RemoteFire", "Command", "Exploit", "Error", "ServerDetails", "DateTime"

## AddLog (table, string: LogTable, table, string: Log)

Adds 'Log' to 'LogTable' and automatically adds a timestamp if one is not provided (unless 'Log' is a table and Log.NoTime is true)

Fires service.Events.LogAdded:Fire(TabToType(LogTable), Log, LogTable)

## SaveCommandLogs ()

Saves command logs to the datastore as "OldCommandLogs"

## Table: ListUpdaters

These are functions used by lists to update their contents when the user refreshes the list.

Here's the list updater for ChatLogs as an example:

    ListUpdaters = {
        ChatLogs = function()
            return Logs.Chats
        end;

Adonis Navigation Start  |  Guides  |  Tables
---|---|---
[Home](https://github.com/Epix-Incorporated/Adonis/wiki/Home) |  [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide%3A-Creating-a-theme) |  [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)

  * [Home](https://github.com/Epix-Incorporated/Adonis/wiki)
  * [User Manual & Feature Showcase](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase)
  * [_G API](https://github.com/Epix-Incorporated/Adonis/wiki/G-API)
  * [Plugins and Modules](https://github.com/Epix-Incorporated/Adonis/wiki/Plugins-&-Modules)
  * [Structure](https://github.com/Epix-Incorporated/Adonis/wiki/Structure)

## Guides

  * [Creating a theme](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme)

## Tables

  * [The "Service" Metatable](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable)
  * [server.Admin](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Admin)
  * [server.Anti](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Anti)
  * [server.Commands](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Commands)
  * [server.Core](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core)
  * [server.Functions](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Functions)
  * [server.HTTP](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.HTTP)
  * [server.Logs](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Logs)
  * [server.Process](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Process)
  * [server.Remote](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Remote)
  * [server.Variables](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Variables)

### Clone this wiki locally


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/_history).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# [History](https://github.com/Epix-Incorporated/Adonis/wiki/_history) / User Manual & Feature Showcase

## Revisions

Compare revisions

  * Erratum for errata

[ Expertcoderz ](https://github.com/Expertcoderz) committed Sep 20, 2023

[2beba75](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/2beba75e3ff082320f2f6b00cecc84a40b4ac41e)

  * Errata and editorial fixes.

[ Expertcoderz ](https://github.com/Expertcoderz) committed Sep 20, 2023

[40f75a2](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/40f75a2660cf0605e8b90d24c12151ee249f23c6)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 30, 2022

[58d2add](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/58d2addb323ee78596803a5aa1209026db1cbe74)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 30, 2022

[073a090](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/073a090660b148c9e29f43ea5ebdb8520e60b257)

  * Moderator's Reference

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 28, 2022

[b160479](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/b160479311939d7fbb06f5bfd09b2c3ea9725caa)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 28, 2022

[bb5358c](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/bb5358c658408e331a7fe409a5728104d942289c)

  * Add "Return to Top" links

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 27, 2022

[c4cc5e2](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/c4cc5e24fff75352079ec3c17fdbbb12ecd35d8c)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 27, 2022

[dae01cf](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/dae01cf89d909d93973f77872e9baf2b70d89df6)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[b56219e](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/b56219ebc7e6a43cb78c296dda149ef3650ca923)

  * Add contents

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[8ead5cc](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/8ead5cc851914f01998900aa91ced8e7d20ca608)

  * Themes showcase

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[3f68797](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/3f6879730ff6e9d1797cc3bec40a6179489a4048)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[76d5816](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/76d5816488d0a86555438edb25dc277ad8d3c3b5)

  * Updated User Manual & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[7020aa4](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/7020aa46d7018c3fc2398c56397989c8aa1997b0)

  * Updated Usage Guide & Feature Showcase (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 25, 2022

[64ea4ac](https://github.com/Epix-Incorporated/Adonis/wiki/User-Manual-&-Feature-Showcase/64ea4ac406e503a5928b7c7b95e296dacd56ce7b)


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/_history).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# [History](https://github.com/Epix-Incorporated/Adonis/wiki/_history) / The "Service" Metatable

## Revisions

Compare revisions

  * ROBLOX -> Roblox

[ Dimenpsyonal ](https://github.com/Dimenpsyonal) committed Mar 11, 2024

[d937d92](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/d937d925b4ecae66ab6327eec1d80c7081299439)

  * Updated The "Service" Metatable (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jul 28, 2022

[1a991b1](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/1a991b10e19b033bc4e35c01238f613f8ec02bb9)

  * Updated The "Service" Metatable (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 23, 2022

[7c8abf4](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/7c8abf438c15fb706f0ee04e16adad4a65c35330)

  * Fix syntax error

[ joritochip ](https://github.com/joritochip) committed Oct 30, 2021

[e96683a](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/e96683a586fd5955c6ebe5754d2df438baab8a9f)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Nov 29, 2020

[6d63e1d](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/6d63e1dc0d528cf2056268ce8891b2e94a58423e)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[80a0704](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/80a0704fda09041f8b7b293a50585c7dbdf166bf)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[be191fc](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/be191fca4b91e2be038b5e2c6627220834bad9f0)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[5109f4f](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/5109f4f7a827b639717d5338bed4123b3a60619a)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[0df8847](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/0df884742590632b242443ca37d5b03aa687d359)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[1d4c799](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/1d4c7991eee26f641a640b6e17fc43a704053ca4)

  * Updated The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[bdc45ff](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/bdc45ff619f6a2cf06fc243ca35ee93cf524a017)

  * Created The "Service" Metatable (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Apr 7, 2020

[719ad70](https://github.com/Epix-Incorporated/Adonis/wiki/The-%22Service%22-Metatable/719ad70377fa361b087ec7d14501d5e54e5d0231)


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core/_history).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# [History](https://github.com/Epix-Incorporated/Adonis/wiki/_history) / Tables: server.Core

## Revisions

Compare revisions

  * Fixed notation to be correct with LuaU

[ Dimenpsyonal ](https://github.com/Dimenpsyonal) committed Dec 6, 2023

[8a73e14](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core/8a73e140b254a2228c69030f5ce26e8027dfa0ae)

  * Updated Tables: server.Core (markdown)

[ Expertcoderz ](https://github.com/Expertcoderz) committed Jun 23, 2022

[31b202d](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core/31b202d4df5f443cd668e944d084f6a3df028426)

  * Created Tables: server.Core (markdown)

[ Sceleratis ](https://github.com/Sceleratis) committed Jul 5, 2021

[5f29448](https://github.com/Epix-Incorporated/Adonis/wiki/Tables:-server.Core/5f2944801b11cc9ff86720023e8296c4df7c1495)


[ Epix-Incorporated ](https://github.com/Epix-Incorporated) / ** [Adonis](https://github.com/Epix-Incorporated/Adonis) ** Public

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme/_history).

  * [ Notifications ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis) You must be signed in to change notification settings
  * [ Fork 225 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)
  * [ Star  455 ](https://github.com/login?return_to=%2FEpix-Incorporated%2FAdonis)

# [History](https://github.com/Epix-Incorporated/Adonis/wiki/_history) / Guide: Creating a theme

## Revisions

Compare revisions

  * Add some images

[ Dimenpsyonal ](https://github.com/Dimenpsyonal) committed Mar 11, 2024

[bd9ea47](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme/bd9ea47e994c7aee16f0ea03e969c552919fb3da)

  * Initial page creation

[ Dimenpsyonal ](https://github.com/Dimenpsyonal) committed Feb 7, 2024

[0b2a7dc](https://github.com/Epix-Incorporated/Adonis/wiki/Guide:-Creating-a-theme/0b2a7dc0dcabb3d58320ad9fd106d792f3313374)