Junkie KeySystem Example
Key RequiredUniversal

Junkie KeySystem Example

Universal ScriptScriptPasterScriptPaster 5.9K views 235 executesUpdated Dec 22, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•513 lines (18625 chars)
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")

local LocalPlayer = Players.LocalPlayer

local cfg = {
    api = "put your junkie api key here",
    service = "put your junkie service name here",
    provider = "put your junkie provider name here",
    discord = "https://work.ink/29FJ/first-step",
    logo = "rbxassetid://121595097202790",
    barColor = Color3.fromRGB(90,170,255),
    keyFile = "&R4_key2.txt"
}

local notifActive = {}

local function createNotification(title,content,length,iconId)
    local screen = Instance.new("ScreenGui")
    screen.Name = "NotifGui"
    screen.ResetOnSpawn = false
    screen.DisplayOrder = 2147483647
    screen.Parent = CoreGui

    local scale = math.clamp(math.min(workspace.CurrentCamera.ViewportSize.X,workspace.CurrentCamera.ViewportSize.Y)/1366,0.6,1.6)
    local w = math.clamp(320*scale,200,520)
    local h = math.clamp(72*scale,54,140)

    local main = Instance.new("Frame")
    main.Size = UDim2.new(0,w,0,h)
    main.Position = UDim2.new(1,-12,1,-12-h-16)
    main.AnchorPoint = Vector2.new(1,1)
    main.BackgroundTransparency = 0
    main.BackgroundColor3 = Color3.fromRGB(20,40,70)
    main.BorderSizePixel = 0
    main.Parent = screen

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0,10)
    corner.Parent = main

    local bar = Instance.new("Frame")
    bar.Size = UDim2.new(1,0,0,4)
    bar.Position = UDim2.new(0,0,1,-4)
    bar.BackgroundColor3 = cfg.barColor
    bar.BorderSizePixel = 0
    bar.ClipsDescendants = true
    bar.Parent = main

    local barCorner = Instance.new("UICorner")
    barCorner.CornerRadius = UDim.new(0,2)
    barCorner.Parent = bar

    local fill = Instance.new("Frame")
    fill.Size = UDim2.new(1,0,1,0)
    fill.Position = UDim2.new(0,0,0,0)
    fill.BackgroundColor3 = cfg.barColor
    fill.BorderSizePixel = 0
    fill.Parent = bar

    local icon = Instance.new("ImageLabel")
    icon.Size = UDim2.new(0,h,1,0)
    icon.Position = UDim2.new(0,0,0,0)
    icon.BackgroundTransparency = 1
    icon.Image = iconId or cfg.logo
    icon.ImageColor3 = cfg.barColor
    icon.ScaleType = Enum.ScaleType.Stretch
    icon.Parent = main

    local txt = Instance.new("TextLabel")
    txt.BackgroundTransparency = 1
    txt.Size = UDim2.new(1,-h-8,0.4,0)
    txt.Position = UDim2.new(0,h+8,0,0)
    txt.Font = Enum.Font.Code
    txt.TextSize = math.clamp(14*scale,12,20)
    txt.TextXAlignment = Enum.TextXAlignment.Left
    txt.TextYAlignment = Enum.TextYAlignment.Top
    txt.TextColor3 = Color3.new(1,1,1)
    txt.Text = title
    txt.Parent = main

    local sub = Instance.new("TextLabel")
    sub.BackgroundTransparency = 1
    sub.Size = UDim2.new(1,-h-8,0.5,0)
    sub.Position = UDim2.new(0,h+8,0.4,0)
    sub.Font = Enum.Font.Code
    sub.TextSize = math.clamp(12*scale,10,16)
    sub.TextXAlignment = Enum.TextXAlignment.Left
    sub.TextYAlignment = Enum.TextYAlignment.Top
    sub.TextColor3 = Color3.fromRGB(200,200,200)
    sub.Text = content
    sub.TextWrapped = true
    sub.Parent = main

    local id = tostring(math.floor(tick()*1000)).."-"..HttpService:GenerateGUID(false)
    table.insert(notifActive,{id=id,frame=main,sizeY=h})

    local function restack()
        local spacing = 8*scale
        local yoff = 0
        for i = #notifActive,1,-1 do
            local node = notifActive[i]
            if node and node.frame and node.frame.Parent then
                local target = -12-yoff-node.sizeY
                TweenService:Create(node.frame,TweenInfo.new(0.25,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),{Position=UDim2.new(1,-12,1,target)}):Play()
                yoff = yoff+node.sizeY+spacing
            end
        end
    end

    restack()

    local function destroy()
        for i = 1,#notifActive do
            if notifActive[i].id == id then
                table.remove(notifActive,i)
                break
            end
        end
        TweenService:Create(main,TweenInfo.new(0.35,Enum.EasingStyle.Quad,Enum.EasingDirection.In),{Position=UDim2.new(1,16,main.Position.Y.Scale,main.Position.Y.Offset),BackgroundTransparency=1}):Play()
        TweenService:Create(txt,TweenInfo.new(0.35),{TextTransparency=1}):Play()
        TweenService:Create(sub,TweenInfo.new(0.35),{TextTransparency=1}):Play()
        TweenService:Create(icon,TweenInfo.new(0.35),{ImageTransparency=1}):Play()
        task.wait(0.35)
        pcall(function() main:Destroy() end)
        restack()
    end

    if length and length > 0 then
        TweenService:Create(fill,TweenInfo.new(length,Enum.EasingStyle.Linear,Enum.EasingDirection.Out),{Size=UDim2.new(0,0,1,0)}):Play()
        task.delay(length,destroy)
    end

    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1,0,1,0)
    btn.BackgroundTransparency = 1
    btn.Text = ""
    btn.ZIndex = 10
    btn.Parent = main
    btn.MouseButton1Click:Connect(destroy)

    return {Close=destroy}
end

local function saveKey(key)
    if writefile then
        pcall(function() writefile(cfg.keyFile,key) end)
    end
end

local function loadKey()
    if readfile then
        local ok,data = pcall(function() return readfile(cfg.keyFile) end)
        if ok then return data end
    end
    return ""
end

local function buildUI()
    local Part1 = {}
    local Part2 = {}
    local Part3 = {}

    Part1.Screen = Instance.new("ScreenGui")
    Part1.Screen.Name = "&R4 Tuff"
    Part1.Screen.ZIndexBehavior = Enum.ZIndexBehavior.Global
    Part1.Screen.ResetOnSpawn = false
    Part1.Screen.IgnoreGuiInset = true
    Part1.Screen.Parent = CoreGui

    Part1.Main = Instance.new("Frame")
    Part1.Main.Name = "Main"
    Part1.Main.Size = UDim2.new(0,370,0,200)
    Part1.Main.Position = UDim2.new(0.5,0,0.5,0)
    Part1.Main.AnchorPoint = Vector2.new(0.5,0.5)
    Part1.Main.BackgroundColor3 = Color3.fromRGB(20,30,50)
    Part1.Main.BackgroundTransparency = 0
    Part1.Main.BorderSizePixel = 0
    Part1.Main.ClipsDescendants = false
    Part1.Main.Parent = Part1.Screen

    Part1.Corner = Instance.new("UICorner")
    Part1.Corner.CornerRadius = UDim.new(0,10)
    Part1.Corner.Parent = Part1.Main

    Part2.Top = Instance.new("Frame")
    Part2.Top.Name = "Top"
    Part2.Top.Size = UDim2.new(1,0,0,35)
    Part2.Top.Position = UDim2.new(0,0,0,0)
    Part2.Top.BackgroundColor3 = Color3.fromRGB(30,60,100)
    Part2.Top.BorderSizePixel = 0
    Part2.Top.Parent = Part1.Main

    Part2.TopCorner = Instance.new("UICorner")
    Part2.TopCorner.CornerRadius = UDim.new(0,10)
    Part2.TopCorner.Parent = Part2.Top

    Part2.TopCover = Instance.new("Frame")
    Part2.TopCover.Name = "TopCover"
    Part2.TopCover.Size = UDim2.new(1,0,0,20)
    Part2.TopCover.Position = UDim2.new(0,0,1,-20)
    Part2.TopCover.BackgroundColor3 = Color3.fromRGB(30,60,100)
    Part2.TopCover.BorderSizePixel = 0
    Part2.TopCover.Parent = Part2.Top

    Part2.Line = Instance.new("Frame")
    Part2.Line.Name = "Line"
    Part2.Line.Size = UDim2.new(1,0,0,1)
    Part2.Line.Position = UDim2.new(0,0,1,0)
    Part2.Line.BackgroundColor3 = Color3.fromRGB(25,50,90)
    Part2.Line.BorderSizePixel = 0
    Part2.Line.Parent = Part2.Top

    Part2.Logo = Instance.new("ImageLabel")
    Part2.Logo.Name = "Logo"
    Part2.Logo.Size = UDim2.new(0,20,0,20)
    Part2.Logo.Position = UDim2.new(0,10,0,7)
    Part2.Logo.BackgroundTransparency = 1
    Part2.Logo.Image = cfg.logo
    Part2.Logo.ImageColor3 = cfg.barColor
    Part2.Logo.Parent = Part2.Top

    Part2.Title = Instance.new("TextLabel")
    Part2.Title.Name = "Title"
    Part2.Title.Size = UDim2.new(0,100,0,35)
    Part2.Title.Position = UDim2.new(0,35,0,0)
    Part2.Title.BackgroundTransparency = 1
    Part2.Title.Text = "&R4 Hideout"
    Part2.Title.TextColor3 = Color3.fromRGB(200,230,255)
    Part2.Title.TextSize = 18
    Part2.Title.Font = Enum.Font.GothamBold
    Part2.Title.TextXAlignment = Enum.TextXAlignment.Left
    Part2.Title.Parent = Part2.Top

    Part2.Close = Instance.new("ImageButton")
    Part2.Close.Name = "Close"
    Part2.Close.Size = UDim2.new(0,20,0,20)
    Part2.Close.Position = UDim2.new(1,-10,0.5,0)
    Part2.Close.AnchorPoint = Vector2.new(1,0.5)
    Part2.Close.BackgroundTransparency = 1
    Part2.Close.Image = "rbxassetid://122931434733842"
    Part2.Close.ImageColor3 = Color3.fromRGB(200,230,255)
    Part2.Close.ScaleType = Enum.ScaleType.Fit
    Part2.Close.Parent = Part2.Top

    Part3.Input = Instance.new("Frame")
    Part3.Input.Name = "Input"
    Part3.Input.Size = UDim2.new(0.9,0,0,35)
    Part3.Input.Position = UDim2.new(0.5,0,0,60)
    Part3.Input.AnchorPoint = Vector2.new(0.5,0)
    Part3.Input.BackgroundColor3 = Color3.fromRGB(15,35,65)
    Part3.Input.BackgroundTransparency = 0.3
    Part3.Input.BorderSizePixel = 0
    Part3.Input.Parent = Part1.Main

    Part3.InputStroke = Instance.new("UIStroke")
    Part3.InputStroke.Color = cfg.barColor
    Part3.InputStroke.Thickness = 1
    Part3.InputStroke.Transparency = 0.5
    Part3.InputStroke.Parent = Part3.Input

    Part3.InputCorner = Instance.new("UICorner")
    Part3.InputCorner.CornerRadius = UDim.new(0,6)
    Part3.InputCorner.Parent = Part3.Input

    Part3.Box = Instance.new("TextBox")
    Part3.Box.Name = "Box"
    Part3.Box.Size = UDim2.new(0.9,0,1,0)
    Part3.Box.Position = UDim2.new(0.5,0,0.5,0)
    Part3.Box.AnchorPoint = Vector2.new(0.5,0.5)
    Part3.Box.BackgroundTransparency = 1
    Part3.Box.Text = loadKey()
    Part3.Box.TextColor3 = Color3.fromRGB(200,230,255)
    Part3.Box.PlaceholderText = "00000000-0000-0000-0000-000000000000"
    Part3.Box.PlaceholderColor3 = Color3.fromRGB(100,120,150)
    Part3.Box.TextSize = 14
    Part3.Box.Font = Enum.Font.Gotham
    Part3.Box.ClearTextOnFocus = false
    Part3.Box.Parent = Part3.Input

    Part3.Buttons = Instance.new("Frame")
    Part3.Buttons.Name = "Buttons"
    Part3.Buttons.Size = UDim2.new(0.9,0,0,30)
    Part3.Buttons.Position = UDim2.new(0.5,0,1,-40)
    Part3.Buttons.AnchorPoint = Vector2.new(0.5,1)
    Part3.Buttons.BackgroundTransparency = 1
    Part3.Buttons.Parent = Part1.Main

    local btnColor = Color3.fromRGB(30,80,150)

    Part3.GetKey = Instance.new("TextButton")
    Part3.GetKey.Name = "GetKey"
    Part3.GetKey.Size = UDim2.new(0.45,-4,1,0)
    Part3.GetKey.Position = UDim2.new(0.25,0,0,0)
    Part3.GetKey.AnchorPoint = Vector2.new(0.5,0)
    Part3.GetKey.BackgroundColor3 = btnColor
    Part3.GetKey.BorderSizePixel = 0
    Part3.GetKey.Text = ""
    Part3.GetKey.AutoButtonColor = false
    Part3.GetKey.Parent = Part3.Buttons

    local getKeyIco = Instance.new("ImageLabel")
    getKeyIco.Size = UDim2.new(0,16,0,16)
    getKeyIco.Position = UDim2.new(0.5,-20,0.5,0)
    getKeyIco.AnchorPoint = Vector2.new(0.5,0.5)
    getKeyIco.BackgroundTransparency = 1
    getKeyIco.Image = "rbxassetid://96510194465420"
    getKeyIco.ImageColor3 = Color3.new(1,1,1)
    getKeyIco.Parent = Part3.GetKey

    local getKeyTxt = Instance.new("TextLabel")
    getKeyTxt.Size = UDim2.new(1,0,1,0)
    getKeyTxt.Position = UDim2.new(0.5,8,0,0)
    getKeyTxt.AnchorPoint = Vector2.new(0.5,0)
    getKeyTxt.BackgroundTransparency = 1
    getKeyTxt.Text = "Get Key"
    getKeyTxt.TextColor3 = Color3.new(1,1,1)
    getKeyTxt.TextSize = 12
    getKeyTxt.Font = Enum.Font.GothamBold
    getKeyTxt.Parent = Part3.GetKey

    Part3.GetKeyCorner = Instance.new("UICorner")
    Part3.GetKeyCorner.CornerRadius = UDim.new(0,8)
    Part3.GetKeyCorner.Parent = Part3.GetKey

    Part3.Verify = Instance.new("TextButton")
    Part3.Verify.Name = "Verify"
    Part3.Verify.Size = UDim2.new(0.45,-4,1,0)
    Part3.Verify.Position = UDim2.new(0.75,0,0,0)
    Part3.Verify.AnchorPoint = Vector2.new(0.5,0)
    Part3.Verify.BackgroundColor3 = btnColor
    Part3.Verify.BorderSizePixel = 0
    Part3.Verify.Text = ""
    Part3.Verify.AutoButtonColor = false
    Part3.Verify.Parent = Part3.Buttons

    local verifyIco = Instance.new("ImageLabel")
    verifyIco.Size = UDim2.new(0,16,0,16)
    verifyIco.Position = UDim2.new(0.5,-20,0.5,0)
    verifyIco.AnchorPoint = Vector2.new(0.5,0.5)
    verifyIco.BackgroundTransparency = 1
    verifyIco.Image = "rbxassetid://87354736164608"
    verifyIco.ImageColor3 = Color3.new(1,1,1)
    verifyIco.Parent = Part3.Verify

    local verifyTxt = Instance.new("TextLabel")
    verifyTxt.Size = UDim2.new(1,0,1,0)
    verifyTxt.Position = UDim2.new(0.5,8,0,0)
    verifyTxt.AnchorPoint = Vector2.new(0.5,0)
    verifyTxt.BackgroundTransparency = 1
    verifyTxt.Text = "Verify"
    verifyTxt.TextColor3 = Color3.new(1,1,1)
    verifyTxt.TextSize = 12
    verifyTxt.Font = Enum.Font.GothamBold
    verifyTxt.Parent = Part3.Verify

    Part3.VerifyCorner = Instance.new("UICorner")
    Part3.VerifyCorner.CornerRadius = UDim.new(0,8)
    Part3.VerifyCorner.Parent = Part3.Verify

    return {
        gui = Part1.Screen,
        main = Part1.Main,
        box = Part3.Box,
        verify = Part3.Verify,
        getKey = Part3.GetKey,
        close = Part2.Close,
        top = Part2.Top
    }
end

local function drag(ui)
    local dragInput,dragStart,startPos
    ui.top.InputBegan:Connect(function(inp)
        if inp.UserInputType == Enum.UserInputType.MouseButton1 then
            dragInput = inp
            dragStart = inp.Position
            startPos = ui.main.Position
            inp.Changed:Connect(function() if inp.UserInputState == Enum.UserInputState.End then dragInput = nil end end)
        end
    end)
    UserInputService.InputChanged:Connect(function(inp)
        if inp == dragInput and inp.UserInputType == Enum.UserInputType.MouseMovement then
            local delta = inp.Position - dragStart
            ui.main.Position = UDim2.new(startPos.X.Scale,startPos.X.Offset+delta.X,startPos.Y.Scale,startPos.Y.Offset+delta.Y)
        end
    end)
end

local function pulse(btn)
    local orig = btn.BackgroundColor3
    local pop = Color3.new(math.min(orig.R*1.3,1),math.min(orig.G*1.3,1),math.min(orig.B*1.3,1))
    TweenService:Create(btn,TweenInfo.new(0.15),{BackgroundColor3=pop}):Play()
    task.wait(0.15)
    TweenService:Create(btn,TweenInfo.new(0.25,Enum.EasingStyle.Back,Enum.EasingDirection.Out),{BackgroundColor3=orig}):Play()
end

local function loadScript()
    print("hi")
end

local function main()
    if getgenv().JunkieUILoaded then return end
    getgenv().JunkieUILoaded = true
    
    local ui = buildUI()
    drag(ui)

    local function validate()
        local key = ui.box.Text:gsub("%s+","")
        if key == "" then 
            createNotification("Key Required","Please enter a key to continue.",3,"rbxassetid://82094603330968") 
            return 
        end
        
        createNotification("Checking...","Validating your key, please wait.",2,"rbxassetid://92630967969808")
        
        local success, sdk = pcall(function()
            return loadstring(game:HttpGet("https://junkie-development.de/sdk/JunkieKeySystem.lua"))()
        end)
        
        if not success then
            createNotification("Error", "Failed to load SDK. Please try again.", 3, "rbxassetid://78733624425654")
            return
        end
        
        local ok = sdk.verifyKey(cfg.api, key, cfg.service)
        
        if ok then
            saveKey(key)
            createNotification("Success!", "Key verified. Loading script...", 3, "rbxassetid://87094841427580")
            TweenService:Create(ui.main, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
                Position = UDim2.new(0.5, 0, -0.5, 0),
                BackgroundTransparency = 1
            }):Play()
            task.wait(0.4)
            ui.gui:Destroy()
            loadScript()
        else
            createNotification("Invalid Key", "The key you entered is incorrect.", 3, "rbxassetid://78733624425654")
        end
    end

    ui.verify.MouseButton1Click:Connect(function()
        pulse(ui.verify)
        validate()
    end)

    ui.box.FocusLost:Connect(function(enter) 
        if enter then 
            validate() 
        end 
    end)

    ui.getKey.MouseButton1Click:Connect(function()
        pulse(ui.getKey)
        createNotification("Getting Key...", "Generating your key link...", 2, "rbxassetid://83281479437771")
        
        local success, sdk = pcall(function()
            return loadstring(game:HttpGet("https://junkie-development.de/sdk/JunkieKeySystem.lua"))()
        end)
        
        if success then
            local link = sdk.getLink(cfg.api, cfg.provider, cfg.service)
            if link and setclipboard then
                setclipboard(link)
                createNotification("Link Copied", "Get-key link has been copied to clipboard.", 3, "rbxassetid://128463727794542")
            else
                createNotification("Failed", "Could not generate get-key link.", 3, "rbxassetid://78733624425654")
            end
        else
            createNotification("Error", "Failed to load SDK. Please try again.", 3, "rbxassetid://78733624425654")
        end
    end)

    ui.close.MouseButton1Click:Connect(function()
        createNotification("Closing...", "See you next time!", 2, "rbxassetid://116998807311805")
        TweenService:Create(ui.main, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
            Position = UDim2.new(0.5, 0, -0.5, 0),
            BackgroundTransparency = 1
        }):Play()
        task.wait(0.4)
        ui.gui:Destroy()
    end)

    ui.box.Focused:Connect(function()
        TweenService:Create(ui.box.Parent, TweenInfo.new(0.2), {BackgroundTransparency = 0}):Play()
    end)

    ui.box.FocusLost:Connect(function()
        TweenService:Create(ui.box.Parent, TweenInfo.new(0.2), {BackgroundTransparency = 0.3}):Play()
    end)

    for _,btn in ipairs({ui.verify, ui.getKey}) do
        btn.MouseEnter:Connect(function()
            local orig = btn.BackgroundColor3
            local bright = Color3.new(math.min(orig.R*1.15,1), math.min(orig.G*1.15,1), math.min(orig.B*1.15,1))
            TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = bright}):Play()
        end)
        btn.MouseLeave:Connect(function()
            local orig = btn.BackgroundColor3
            local dim = Color3.new(orig.R/1.15, orig.G/1.15, orig.B/1.15)
            TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = dim}):Play()
        end)
    end
end

main()

Features & Information

Key System Save Key Verify Get Key Close Junkie
#Junkie#Roblox#Script#Key System#Universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts