Voltar ao catálogo

Key System

Cookieskeysystem.lua · v2.0.0

Uma janela que pede uma key antes de carregar seu hub, no mesmo estilo da CookiesLib. Valida contra uma lista, uma URL, sua própria função ou o KeyForge, lembra a key e bloqueia depois de várias tentativas erradas.

Nesta página

Teste antes de usar

Este script abre o Key System com uma única key válida, COOKIES-DEMO (sem diferenciar maiúsculas). Cole no seu executor e teste uma key errada e uma certa:

KeySystemTest.lua
local KeySystem = loadstring(game:HttpGet("https://raw.githubusercontent.com/Lilwero20/CookiesLib/main/Cookieskeysystem.lua"))()

local ok, key = KeySystem.Prompt({
    Title = "Test",
    Keys = { "COOKIES-DEMO" },
    CaseSensitive = false,
    SaveKey = false,
})

print("Key valid:", ok, key)

Ele também está dentro do menu de teste da CookiesLib: abra a aba Personalizar e clique em Abrir key system. Lá a key também é COOKIES-DEMO, e 3 erros ativam uma espera de 10 segundos.

CookiesDemo.lua
loadstring(game:HttpGet("https://raw.githubusercontent.com/Lilwero20/CookiesLib/main/CookiesDemo.lua"))()

Início rápido

Carregue a biblioteca e o Key System, peça a key e, só se ela for válida, crie sua janela. Se você passar Library, o Key System usa o tema dela (incluindo o que o jogador escolheu) e as fontes.

lua
local Library   = loadstring(game:HttpGet("https://raw.githubusercontent.com/Lilwero20/CookiesLib/main/CookiesLib.lua"))()
local KeySystem = loadstring(game:HttpGet("https://raw.githubusercontent.com/Lilwero20/CookiesLib/main/Cookieskeysystem.lua"))()

local ok, key = KeySystem.Prompt({
    Library = Library,
    Title = "My Hub",
    Subtitle = "Key System",
    KeyLink = "https://example.com/get-key",
    DiscordLink = "https://discord.gg/xxxxxx",
    Keys = { "COOKIE-1234", "COOKIE-5678" },
})
if not ok then return end

local Window = Library:CreateWindow({ Title = "My Hub" })

KeySystem.Prompt(opções) espera até o jogador validar ou fechar e retorna ok, key. É um atalho para KeySystem.new(opções):Wait().

Como a key é validada

É usado o primeiro método disponível, nesta ordem:

  1. 1`KeyForge`: serviço externo de keys (veja abaixo).
  2. 2`Validate`: sua própria função.
  3. 3`KeyUrl`: uma URL com uma key por linha (fica em cache por 30 segundos).
  4. 4`Keys`: uma lista dentro do script.
lua
Validate = function(key)
    if key == "secret" then
        return true, "Welcome"
    end
    return false, "Wrong key"
end,

KeyUrl = "https://raw.githubusercontent.com/user/repo/main/keys.txt",

Validate retorna se a key é válida e, opcionalmente, uma mensagem para o jogador. Espaços no começo e no fim da key são ignorados, e com CaseSensitive = false tanto faz maiúsculas ou minúsculas.

Uma lista Keys dentro do script pode ser lida por qualquer um que abra o script. Para algo sério, use KeyUrl, Validate contra seu servidor ou o KeyForge.

Personalizar

Você pode mudar o tema, a cor, os textos e os passos de ajuda. Este exemplo deixa com tema rosa e os textos em português:

lua
KeySystem.new({
    Library = Library,
    Theme = "Strawberry",
    Accent = Color3.fromRGB(255, 105, 140),
    Title = "Meu Hub",
    Subtitle = "Acesso",
    Description = "Digite sua key para desbloquear o hub.",
    Steps = {
        "Clique em Get key para copiar o link",
        "Complete os passos no seu navegador",
        "Cole sua key e clique em Verify",
    },
    Keys = { "COOKIE-1234" },
    CaseSensitive = false,
    MaxAttempts = 3,
    Cooldown = 10,
    Blur = true,
})
OpçãoPadrãoO que faz
LibrarynilHerda o tema e as fontes da CookiesLib
ThemenilNome de um tema da CookiesLib ou tabela de cores
AccentnilCor de destaque só para o Key System
Title / Subtitle"Cookies Hub" / "Key System"Textos do cabeçalho
Logologo do CookiesImagem; false remove
Descriptiontexto em inglêsTexto abaixo do título
Steps3 passos em inglêsAté 3 passos no painel “Need a key?”
NotenilTexto livre no lugar dos passos
KeyLinknilLink do botão Get key
DiscordLinknilBotão Join Discord
CaseSensitivetruefalse ignora maiúsculas e minúsculas
SaveKeytruePermite lembrar a key no dispositivo
AutoVerifytrueVerifica sozinho a key salva ao abrir
MaxAttempts5Tentativas erradas antes do bloqueio
Cooldown15Segundos de bloqueio
Blur / ShadowtrueDesfoque do fundo e sombra da janela
Folder / FileName"CookiesHub" / autoOnde a key é salva
IdautomáticoSepara a key e o bloqueio de cada script

Os botões só aparecem quando têm algo a fazer: Get key com KeyLink ou KeyForge, Join Discord com DiscordLink, e Paste se o executor tiver acesso à área de transferência.

Objeto e eventos

KeySystem.new retorna um objeto que você controla pelo script:

lua
local ks = KeySystem.new({ Keys = { "COOKIE-1234" } })

local ok, key = ks:Wait()
ks:Submit("COOKIE-1234")
ks:SetStatus("Checking...", "Warning")
ks:Close()
ks:Destroy()
MétodoO que faz
ks:Wait()Espera terminar e retorna success, key
ks:Submit(key)Envia uma key pelo código (sem argumento usa o que foi digitado)
ks:SetStatus(texto, tipo)Mensagem abaixo do botão: Success, Warning, Error ou nil
ks:Close()Fecha sem validar
ks:Destroy()Fecha e limpa tudo

Em vez de esperar com Wait(), você pode usar eventos:

lua
KeySystem.new({
    Keys = { "COOKIE-1234" },
    OnSuccess = function(key)
        loadstring(game:HttpGet("https://example.com/my-hub.lua"))()
    end,
    OnFail = function(key, message)
        warn("Wrong key:", key, message)
    end,
    OnClose = function()
        warn("Closed without a key")
    end,
})

Como ele se comporta

  • Key lembrada: se o executor puder salvar arquivos, aparece a caixa *Remember key*. A key válida é salva e, na próxima vez, é preenchida e verificada sozinha. Se deixar de ser válida, é apagada.
  • Tentativas: as restantes aparecem na tela. Quando acabam, o botão trava por Cooldown segundos, mesmo que o script seja executado de novo na mesma partida.
  • Erros de conexão (URL fora do ar, KeyForge sem resposta, erro em Validate) não gastam tentativas.
  • A janela pode ser arrastada pela parte de cima e se adapta a telas pequenas.

Vários scripts com key

Cada Key System tem seu próprio Id, então vários scripts podem usá-lo ao mesmo tempo sem conflito: cada um salva sua key em Folder/keys/<Id>.txt e tem seu próprio bloqueio de tentativas.

Se você usa`Id` automático
Id = "meu-hub"meu-hub
KeyForgekf_<scriptId>
KeyUrlurl_<hash da URL>
Keyskeys_<hash da lista>
Só ValidateO Title

Se dois scripts seus usam Validate com o mesmo Title, dê um Id diferente para cada um:

lua
KeySystem.new({ Id = "blox-fruits", Title = "Cookies Hub", Validate = check })
KeySystem.new({ Id = "steal-an-egg", Title = "Cookies Hub", Validate = check })

KeyForge

Integração opcional com o KeyForge, o serviço que o Cookies Hub usa. O KeyForge cuida do status das keys, dos limites, do HWID e da entrega do script. O SDK baixa em segundo plano quando a janela abre, então a verificação é quase instantânea.

lua
KeySystem.new({
    Library = Library,
    DiscordLink = "https://discord.gg/xxxxxx",
    KeyForge = {
        projectId = "YOUR_PROJECT_ID",
        scriptId = "YOUR_SCRIPT_ID",
        integrationToken = "YOUR_TOKEN",
    },
    LoadScript = true,
})

Os IDs e o token vêm do painel do KeyForge: edite um script com key, abra In-game UI e escolha Custom Lua GUI. Guia oficial do KeyForge.

Botão / momentoChamadaO que a janela faz
Get keyclient:getKeyUrl()Copia o link da página de keys
Verifyclient:verify(key)Continua se for válida; se não, mostra a mensagem do KeyForge
Depois de validar (LoadScript = true)client:loadScript()Carrega o script protegido. Se falhar, a janela não fecha e mostra o motivo
CódigoSignificadoGasta tentativa?
KEY_INVALIDA key não existe ou está vaziaSim
KEY_EXPIREDA key expirouSim (e a salva é apagada)
KEY_REVOKEDA key foi revogadaSim (e a salva é apagada)
KEY_SCRIPT_MISMATCHA key é de outro scriptSim
HWID_MISMATCHA key está ligada a outro dispositivoSim
RATE_LIMITEDTentativas demais no KeyForgeNão
SESSION_EXPIREDA verificação expirouNão
NETWORK_ERRORNão foi possível conectar ao KeyForgeNão
PROJECT_DISABLEDProjeto desativado ou pausadoNão

Não coloque segredos nem regras de validação dentro do seu script: um script extraído pode ser lido. Deixe isso com o KeyForge ou com seu servidor.

Exemplo completo

Key System com o tema da CookiesLib, 3 tentativas e espera de 10 segundos, e uma janela que só aparece com uma key válida. A key de teste é COOKIES-DEMO:

MyHubWithKey.lua
local Library   = loadstring(game:HttpGet("https://raw.githubusercontent.com/Lilwero20/CookiesLib/main/CookiesLib.lua"))()
local KeySystem = loadstring(game:HttpGet("https://raw.githubusercontent.com/Lilwero20/CookiesLib/main/Cookieskeysystem.lua"))()

local ok, key = KeySystem.Prompt({
    Library = Library,
    Title = "My Hub",
    Subtitle = "Key System",
    KeyLink = "https://example.com/get-key",
    DiscordLink = "https://discord.gg/xxxxxx",
    Keys = { "COOKIES-DEMO" },
    CaseSensitive = false,
    SaveKey = false,
    MaxAttempts = 3,
    Cooldown = 10,
    OnFail = function(_, message)
        warn(message)
    end,
})
if not ok then return end

local Window = Library:CreateWindow({ Title = "My Hub", Subtitle = "Unlocked" })
local Main = Window:CreateTab("Main", "M")
local Welcome = Main:CreateSection({ Name = "Welcome", Full = true })
Welcome:AddAlert({ Type = "Success", Title = "Key accepted", Content = "Your key: <b>" .. key .. "</b>" })
Welcome:AddButton({ Name = "Say hi", Primary = true, Callback = function()
    Window:Notify({ Title = "My Hub", Content = "Hi!", Type = "Success" })
end })
Window:CreateSettingsTab()

Problemas comuns

  • Não lembra a key: o executor precisa suportar writefile, readfile, isfolder, makefolder e isfile, e *Remember key* precisa estar marcada ao validar.
  • O botão Get key não aparece: ele precisa de KeyLink ou KeyForge.
  • Fui bloqueado e executei o script de novo: o bloqueio dura Cooldown segundos mesmo executando de novo na mesma partida; é de propósito.
  • Dois scripts apagam a key um do outro: dê um Id diferente para cada um.