XLQP Gen1

Key system

Configure the new XLQP key gate, validators, providers, themes, get-key menu, saved keys, and success callbacks.

Key system

The current source bundles a new key-system window. Configure it inside Library:MakeWindow() or its CreateWindow alias. The main UI opens after a valid key is accepted. Closing the gate cancels startup and unloads the library.

local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/josediaz765/XLQP-UIS/main/xlqp%20gen1"))()

local Window = Library:MakeWindow({
    Branding = {Name = "My Hub", Icon = "home"},
    KeySystem = {
        Enabled = true,
        Title = "My Hub",
        Description = "Enter your access key",
        Key = {"XLQP-DEMO"},
        CaseSensitive = true,
        SaveKey = true,
        Folder = "MyHub",
        Theme = "Plant-Dark",
    },
})

Replace the demonstration key with your own. The supplied full example sets UseKeySystem = false; change that variable to true to enable its gate.

Validation behavior

The gate trims whitespace around the entered key. Raw keys are case-insensitive by default; set CaseSensitive = true or KeyCaseSensitive = true for exact case matching. Prefer Key; Keys, CustomKey, CustomKeys, CorrectKey, and KeySettingsKey remain compatibility names.

Key accepts a string, number, list, map of accepted keys to true, function, or callable table. A function receives the trimmed key and returns true on success or false, reason on failure. An additional Validate, Validator, or Check callback receives (key, settings).

KeySystem = {
    Enabled = true,
    Key = function(key)
        if key == "XLQP-DEMO" then
            return true
        end
        return false, "This key is not valid"
    end,
    SaveKey = false,
}

Hashes may be configured through Hashes, KeyHashes, HashedKeys, or KeyHash. They are still checked after a failed raw-key match; the old AllowKeyHashesWithRaw rule no longer applies. Hash checks use the original trimmed key, so do not assume raw-key case normalization also applies to hashes. The gate then tries configured API providers.

Always configure a key or a provider. If neither is configured, the bundled gate falls back to the demonstration key key.

Key providers

API accepts one entry or a list. Providers, Services, Auths, and Auth are also collected. Each entry chooses a provider using Type.

TypeConfiguration
platoboost / platoPlatoboost entry passed to its bundled adapter.
panda / pandaauth / pandaauthenticationPanda adapter; accepts provider settings such as ServiceId.
jnkie / junkieJnkie adapter; accepts settings such as Service, Identifier, and Provider.
custom / authsRequired CheckKey(key, context); optional GetKeyLink(context).

Custom-provider context contains the entry's fields and Request, the runtime's HTTP request function when available. Return true for acceptance, or false, reason for rejection. Provider errors are caught and reported; they do not automatically accept a key. Provider credentials and service identifiers must come from your configured service.

Fields

FieldBehavior
EnabledEnables the gate; use an explicit boolean.
Title, Description / Subtitle, LogoGate branding and heading.
Key, CaseSensitive, Hashes, ValidateLocal validation settings described above.
API, Providers, Services, Auths, AuthProvider configuration.
SaveKey / SaveSaves accepted keys when runtime file APIs are available.
FolderSaved-key and gate-data folder.
URL / LinkDefault get-key destination.
GetKey.Enabled, getkeyControls whether the get-key action is available.
GetKey.Title, GetKey.Icon, GetKey.MethodsAction label, icon, and menu methods.
Methods, GetKeyMethodsAlternative method lists.
Theme, Themes, CustomThemesBuilt-in selection and custom theme tables.
Discord, WebsiteBoolean flags or tables with Enabled and Link / URL.
Informations / InformationShows the information card.
Intro, startintro_size, squareintro_time, squarecontornIntro presentation and timing.
ChangeTheme, Changelogocolor, ChangeiconscolorTheme selection, logo color, and icon-color switches. Names are case-sensitive.
NotifStyle"1" Stripe, "2" Pill, "3" Island, "4" Ring, "5" Solid.
UIFont, TitleFontFont configuration.
Draggable, ShowDragGripDrag behavior and grip visibility.
ImplementationNotice, ImplementationNoticeTitle, ImplementationNoticeText, ImplementationNoticeDurationGate implementation notice.
SupportedGamesSupported-game information supplied to the gate.
Callback / OnSuccessCalled after acceptance. The current adapter reports (key, "Original", nil).

Note, FileName, and Skip appear in older configurations. The new gate does not use Note as expiry enforcement or FileName to choose its key file. Skip is a saving compatibility flag, not permission to bypass validation.

Themes and helpers

Built-in themes: Carmim, Plant, Plant-Dark, Dark, Light, Violet, Midnight, Amber, Indigo, and Amethyst.

Library methodResult
SetGetkeyTitle(value), SetGetkeyIcon(value)Sets defaults and updates the active key UI.
SetNotifStyle(style) / NotifStyle(style)Selects one of the five notification styles.
SetUIFont(font), SetTitleFont(font)Sets gate font preferences.
SetKeyTheme(name)Stores the default key theme.
GetKeySystemThemes()Returns the theme-name list and theme tables.
GetMethod(entry)Appends a get-key menu entry and returns the method count.

Saved keys and troubleshooting

The new window saves the accepted raw key to a deterministic filename derived from Folder and Title. It revalidates that key on the next launch. This differs from the previous signed key-set record and configurable FileName path.

If access fails, check Enabled, the trimmed key, CaseSensitive, custom validator return values, and provider connectivity. A phrase such as “Keys reset every 24 hours” is only a label; configure expiration in your provider or validator. If file APIs are unavailable, saving will not persist across launches.

See Window configuration, Full example, and AI agent.