Bear Alpha Custom Skin Maker
Key RequiredUniversal

Bear Alpha Custom Skin Maker

Universal ScriptProScriptsProScripts 4.4K views 182 executesUpdated Oct 14, 2025
Unrated
00
Lua Script•169 lines (6001 chars)
-- LocalScript (StarterPlayerScripts)

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

-- Wait for character
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local HRP = Character:WaitForChild("HumanoidRootPart")
local Humanoid = Character:WaitForChild("Humanoid")

-- ==================== SCREEN GUI ====================
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "BillboardEditorGui"
screenGui.Parent = PlayerGui

-- ==================== LEFT FRAME (EDITOR) ====================
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0,360,0,400)
frame.Position = UDim2.new(0,50,0,50)
frame.BackgroundColor3 = Color3.fromRGB(30,30,30)
frame.Parent = screenGui

-- Helper: label + textbox
local function createLabelAndBox(name, yPos, placeholder)
    local label = Instance.new("TextLabel")
    label.Text = name
    label.TextColor3 = Color3.fromRGB(255,255,255)
    label.Size = UDim2.new(0,140,0,25)
    label.Position = UDim2.new(0,10,0,yPos)
    label.BackgroundTransparency = 1
    label.Parent = frame

    local box = Instance.new("TextBox")
    box.Size = UDim2.new(0,200,0,25)
    box.Position = UDim2.new(0,160,0,yPos)
    box.PlaceholderText = placeholder
    box.Text = placeholder -- Set the template value as default
    box.TextColor3 = Color3.fromRGB(0,0,0)
    box.BackgroundColor3 = Color3.fromRGB(200,200,200)
    box.Parent = frame

    return box
end

-- Textboxes (default template values included)
local studsOffsetBox = createLabelAndBox("StudsOffset",10,'0,1.3,0')
local billboardSizeBox = createLabelAndBox("BillboardSize",50,'9,0,9,0')
local imgPosBox = createLabelAndBox("ImageLabelPosition",90,'0,0,0,0')
local imgSizeBox = createLabelAndBox("ImageLabelSize",130,'1,0,1,0')
local idleBox = createLabelAndBox("Idle",170,'5563198794')
local walk1Box = createLabelAndBox("Walk1",210,'138441800759661')
local walk2Box = createLabelAndBox("Walk2",250,'18867835362')
local playerTransparencyBox = createLabelAndBox("PlayerTransparency",290,'0')

-- Apply button
local applyButton = Instance.new("TextButton")
applyButton.Size = UDim2.new(0,100,0,30)
applyButton.Position = UDim2.new(0,50,0,330)
applyButton.Text = "Apply"
applyButton.Parent = frame

-- Destroy Everything button
local destroyButton = Instance.new("TextButton")
destroyButton.Size = UDim2.new(0,140,0,30)
destroyButton.Position = UDim2.new(0,200,0,330)
destroyButton.Text = "Destroy Everything"
destroyButton.BackgroundColor3 = Color3.fromRGB(180,50,50)
destroyButton.TextColor3 = Color3.fromRGB(255,255,255)
destroyButton.Parent = frame

-- ==================== HELPERS ====================
local function parseUDim2(str)
    local a,b,c,d = str:match("(%-?%d*%.?%d*),(%-?%d+),(%-?%d*%.?%d*),(%-?%d+)")
    return UDim2.new(tonumber(a) or 0, tonumber(b) or 0, tonumber(c) or 0, tonumber(d) or 0)
end
local function parseVector3(str)
    local x,y,z = str:match("(%-?%d*%.?%d*),(%-?%d*%.?%d*),(%-?%d*%.?%d*)")
    return Vector3.new(tonumber(x) or 0, tonumber(y) or 0, tonumber(z) or 0)
end
local function formatImage(input)
    if input == "" then return "" end
    if input:match("^rbxassetid://") or input:match("^https?://") then
        return input
    else
        return "rbxassetid://"..input
    end
end

-- ==================== BILLBOARD GUI ====================
local billboardGui
local imageLabel
local Idle, Walk1, Walk2 = "", "", ""
local walkImages = {}
local walkIndex = 1
local lastStep = 0

local function createBillboard()
    if billboardGui then
        billboardGui:Destroy()
        billboardGui = nil
        imageLabel = nil
    end

    -- Ensure Character and HRP
    Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    HRP = Character:WaitForChild("HumanoidRootPart")

    billboardGui = Instance.new("BillboardGui")
    billboardGui.Name = "PlayerBillboard"
    billboardGui.Adornee = HRP
    billboardGui.Size = parseUDim2(billboardSizeBox.Text or '9,0,9,0')
    billboardGui.StudsOffset = parseVector3(studsOffsetBox.Text or '0,2,0')
    billboardGui.AlwaysOnTop = false
    billboardGui.Parent = workspace

    imageLabel = Instance.new("ImageLabel")
    imageLabel.Size = parseUDim2(imgSizeBox.Text or '1,0,1,0')
    imageLabel.Position = parseUDim2(imgPosBox.Text or '0,0,0,0')
    imageLabel.BackgroundTransparency = 1
    imageLabel.Image = formatImage(idleBox.Text)
    imageLabel.Parent = billboardGui
end

-- ==================== APPLY BUTTON ====================
applyButton.MouseButton1Click:Connect(function()
    createBillboard()
    Idle = formatImage(idleBox.Text)
    Walk1 = formatImage(walk1Box.Text)
    Walk2 = formatImage(walk2Box.Text)

    -- Handle player transparency
    local transparencyValue = tonumber(playerTransparencyBox.Text) or 0
    for _, part in pairs(Character:GetDescendants()) do
        if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
            if transparencyValue == 1 then
                part.Transparency = 1
            else
                part.Transparency = 0
            end
        end
    end
end)

-- ==================== DESTROY EVERYTHING ====================
destroyButton.MouseButton1Click:Connect(function()
    if billboardGui then
        billboardGui:Destroy()
        billboardGui = nil
        imageLabel = nil
    end
    if frame then frame:Destroy() end
    if screenGui then screenGui:Destroy() end
end)

-- ==================== ANIMATION ====================
RunService.RenderStepped:Connect(function()
    if imageLabel and Humanoid.MoveDirection.Magnitude > 0 then
        walkImages = {Walk1,Walk2}
        if tick() - (lastStep or 0) > 0.2 then
            imageLabel.Image = walkImages[walkIndex] or Idle
            walkIndex = walkIndex % #walkImages + 1
            lastStep = tick()
        end
    elseif imageLabel then
        imageLabel.Image = Idle
    end
end)

Features & Information

You Can Make A Custom Skin Using The Tools On The Gui -You Can Change The Size The Studs The Properties -Have Fun
#bear alpha#bear alpha skin#custom skins

Community Comments (4)

BloxxernerBloxxernerApr 25, 2026

Will the skins be visible to everyone?

Replying to @Bloxxerner
9090990909May 28, 2026

@Bloxxerner hell no

Replying to @90909
ProScriptsProScriptsJun 17, 2026(edited)

@90909 yes he's right

geehsf26geehsf26Oct 1, 2026

How i MAKE The frames appears?

More Scripts for Universal Scripts