M
Description
тут есть почти все скины что только есть в bloxstrike так что не все скины будут он делает так чтобы у вас были видны эти скины никто другой их не видеть я просто не хочу вживать скрипт в систему игры и если это делать то вам могут дать бан иль просто не даст вам это сделать и пришлос ьыб еще тратить куча времени чтоб это сделать
GAME[OPEN TESTING] BloxStrike
UPDATEDOct 15, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[
GAS_YT Skin Changer v3 — BloxStrike
+ SKIN ALL: один скин на ВСЁ оружие
+ RANDOM ALL: случайный скин на каждое оружие
+ BEST ALL: самый редкий скин на каждое оружие
- Сохранён UI из v2: выбор скина + износа для каждого оружия
- Автоприменение при смене оружия
- Только визуал
]]
local Players = game:GetService("Players")
local RS = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local LP = Players.LocalPlayer
local camera = Workspace.CurrentCamera
local SkinsFolder = RS:WaitForChild("Assets"):WaitForChild("Skins")
local WEARS = {
"Factory New",
"Minimal Wear",
"Field-Tested",
"Well-Worn",
"Battle-Scarred",
}
local IgnoreFolders = {
"HE Grenade", "Incendiary Grenade", "Molotov", "Smoke Grenade",
"Flashbang", "Decoy Grenade", "C4", "CT Glove", "T Glove",
}
-- Ключевые слова редкости (от редкого к обычному)
local RARE_KEYWORDS = {
"Special", "Ruby", "Sapphire", "Emerald", "Pearl", "Gold", "Diamond",
"Karambit", "Butterfly", "M9 Bayonet", "Flip", "Gut",
"Dragon", "Lore", "Fire", "Serpent", "Medusa", "Hyperbeast",
"Asiimov", "Vulcan", "Slayer", "Howl", "Comics", "Conspiracy",
"Lightning", "Crown", "Royal", "Emperor", "Phoenix",
"Crimson", "Vine", "Doppler", "Marble", "Fade", "Tiger",
"Damascus", "Boreal", "Case", "Neo", "Cyrex",
"Red", "Blue", "Green", "Purple", "Orange", "Black", "White",
}
local function getSkinRarity(skinName)
local name = skinName:lower()
for i, kw in ipairs(RARE_KEYWORDS) do
if name:match(kw:lower()) then
return #RARE_KEYWORDS - i + 1 -- чем раньше найдено — тем выше редкость
end
end
return 0
end
--==================================================================
-- STATE
--==================================================================
local skinChangerOn = false
local selectedSkins = {}
local allWeapons = {}
local weaponButtons = {}
local currentDetailWeapon = nil
--==================================================================
-- GUI
--==================================================================
local function getGuiParent()
local ok, hui = pcall(function() return gethui and gethui() end)
if ok and hui then return hui end
local ok2, cg = pcall(function() return game:GetService("CoreGui") end)
if ok2 and cg then return cg end
return LP:WaitForChild("PlayerGui")
end
local parent = getGuiParent()
local neonGray = Color3.fromRGB(120, 120, 140)
local neonGreen = Color3.fromRGB(0, 255, 136)
local neonBlue = Color3.fromRGB(80, 170, 255)
local neonRed = Color3.fromRGB(220, 60, 80)
local neonGold = Color3.fromRGB(255, 200, 80)
local neonPurple = Color3.fromRGB(180, 100, 255)
local panelBg = Color3.fromRGB(14, 14, 20)
local itemBg = Color3.fromRGB(20, 20, 28)
local oldGui = parent:FindFirstChild("GAS_SkinChanger3")
if oldGui then oldGui:Destroy() end
local sg = Instance.new("ScreenGui")
sg.Name = "GAS_SkinChanger3"
sg.ResetOnSpawn = false
sg.IgnoreGuiInset = true
sg.Parent = parent
local win = Instance.new("Frame")
win.Size = UDim2.new(0, 400, 0, 520)
win.Position = UDim2.new(0, 20, 0, 60)
win.BackgroundColor3 = panelBg
win.BorderSizePixel = 0
win.Active = true
win.Parent = sg
Instance.new("UICorner", win).CornerRadius = UDim.new(0, 12)
local winStroke = Instance.new("UIStroke", win)
winStroke.Color = neonGray
winStroke.Thickness = 1.5
winStroke.Transparency = 0.2
-- Заголовок
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 36)
titleBar.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
titleBar.BorderSizePixel = 0
titleBar.Parent = win
Instance.new("UICorner", titleBar).CornerRadius = UDim.new(0, 12)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -200, 1, 0)
title.Position = UDim2.new(0, 10, 0, 0)
title.BackgroundTransparency = 1
title.Text = "\u{273F} Skin Changer v3"
title.TextColor3 = neonGray
title.Font = Enum.Font.GothamBold
title.TextSize = 13
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = titleBar
local enableBtn = Instance.new("TextButton")
enableBtn.Size = UDim2.new(0, 160, 0, 28)
enableBtn.Position = UDim2.new(1, -170, 0, 4)
enableBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 26)
enableBtn.Text = "SKIN CHANGER: OFF"
enableBtn.Font = Enum.Font.GothamBold
enableBtn.TextSize = 10
enableBtn.TextColor3 = Color3.fromRGB(130, 130, 145)
enableBtn.BorderSizePixel = 0
enableBtn.Parent = titleBar
Instance.new("UICorner", enableBtn).CornerRadius = UDim.new(0, 6)
--==================================================================
-- ПАНЕЛЬ "SKIN ALL"
--==================================================================
local allLabel = Instance.new("TextLabel")
allLabel.Size = UDim2.new(1, -20, 0, 20)
allLabel.Position = UDim2.new(0, 10, 0, 42)
allLabel.BackgroundTransparency = 1
allLabel.Text = "МАССОВОЕ НАЛОЖЕНИЕ:"
allLabel.TextColor3 = neonGold
allLabel.Font = Enum.Font.GothamBold
allLabel.TextSize = 12
allLabel.TextXAlignment = Enum.TextXAlignment.Left
allLabel.Parent = win
-- Выбор скина для ALL
local allSkinInput = Instance.new("TextBox")
allSkinInput.Size = UDim2.new(1, -20, 0, 28)
allSkinInput.Position = UDim2.new(0, 10, 0, 64)
allSkinInput.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
allSkinInput.Text = ""
allSkinInput.PlaceholderText = "Название скина (пусто = лучший на каждое)"
allSkinInput.PlaceholderColor3 = Color3.fromRGB(70, 70, 85)
allSkinInput.TextColor3 = Color3.fromRGB(220, 220, 230)
allSkinInput.Font = Enum.Font.Gotham
allSkinInput.TextSize = 12
allSkinInput.TextXAlignment = Enum.TextXAlignment.Left
allSkinInput.BorderSizePixel = 0
allSkinInput.Parent = win
Instance.new("UICorner", allSkinInput).CornerRadius = UDim.new(0, 6)
local allStroke = Instance.new("UIStroke", allSkinInput)
allStroke.Color = neonGray
allStroke.Thickness = 1
allStroke.Transparency = 0.5
-- Кнопки массового наложения
local skinAllBtn = Instance.new("TextButton")
skinAllBtn.Size = UDim2.new(0.32, -2, 0, 32)
skinAllBtn.Position = UDim2.new(0, 10, 0, 98)
skinAllBtn.BackgroundColor3 = Color3.fromRGB(20, 35, 25)
skinAllBtn.Text = "SKIN ALL"
skinAllBtn.TextColor3 = neonGreen
skinAllBtn.Font = Enum.Font.GothamBold
skinAllBtn.TextSize = 11
skinAllBtn.BorderSizePixel = 0
skinAllBtn.Parent = win
Instance.new("UICorner", skinAllBtn).CornerRadius = UDim.new(0, 6)
local randomAllBtn = Instance.new("TextButton")
randomAllBtn.Size = UDim2.new(0.32, -2, 0, 32)
randomAllBtn.Position = UDim2.new(0.34, 6, 0, 98)
randomAllBtn.BackgroundColor3 = Color3.fromRGB(35, 20, 45)
randomAllBtn.Text = "RANDOM ALL"
randomAllBtn.TextColor3 = neonPurple
randomAllBtn.Font = Enum.Font.GothamBold
randomAllBtn.TextSize = 11
randomAllBtn.BorderSizePixel = 0
randomAllBtn.Parent = win
Instance.new("UICorner", randomAllBtn).CornerRadius = UDim.new(0, 6)
local bestAllBtn = Instance.new("TextButton")
bestAllBtn.Size = UDim2.new(0.32, -2, 0, 32)
bestAllBtn.Position = UDim2.new(0.67, 2, 0, 98)
bestAllBtn.BackgroundColor3 = Color3.fromRGB(40, 30, 15)
bestAllBtn.Text = "BEST ALL"
bestAllBtn.TextColor3 = neonGold
bestAllBtn.Font = Enum.Font.GothamBold
bestAllBtn.TextSize = 11
bestAllBtn.BorderSizePixel = 0
bestAllBtn.Parent = win
Instance.new("UICorner", bestAllBtn).CornerRadius = UDim.new(0, 6)
-- Выбор износа для ALL
local allWearLabel = Instance.new("TextLabel")
allWearLabel.Size = UDim2.new(0, 60, 0, 20)
allWearLabel.Position = UDim2.new(0, 10, 0, 136)
allWearLabel.BackgroundTransparency = 1
allWearLabel.Text = "Износ:"
allWearLabel.TextColor3 = Color3.fromRGB(100, 100, 115)
allWearLabel.Font = Enum.Font.Gotham
allWearLabel.TextSize = 11
allWearLabel.TextXAlignment = Enum.TextXAlignment.Left
allWearLabel.Parent = win
local allWearBtn = Instance.new("TextButton")
allWearBtn.Size = UDim2.new(0, 150, 0, 24)
allWearBtn.Position = UDim2.new(0, 60, 0, 134)
allWearBtn.BackgroundColor3 = itemBg
allWearBtn.Text = "Factory New"
allWearBtn.TextColor3 = neonBlue
allWearBtn.Font = Enum.Font.Gotham
allWearBtn.TextSize = 11
allWearBtn.TextXAlignment = Enum.TextXAlignment.Left
allWearBtn.BorderSizePixel = 0
allWearBtn.Parent = win
Instance.new("UICorner", allWearBtn).CornerRadius = UDim.new(0, 4)
local allWear = "Factory New"
local allWearIndex = 1
allWearBtn.MouseButton1Click:Connect(function()
allWearIndex = allWearIndex + 1
if allWearIndex > #WEARS then allWearIndex = 1 end
allWear = WEARS[allWearIndex]
allWearBtn.Text = allWear
end)
-- Сбросить всё
local resetAllBtn = Instance.new("TextButton")
resetAllBtn.Size = UDim2.new(0, 120, 0, 24)
resetAllBtn.Position = UDim2.new(1, -130, 0, 134)
resetAllBtn.BackgroundColor3 = Color3.fromRGB(30, 15, 20)
resetAllBtn.Text = "СБРОСИТЬ ВСЁ"
resetAllBtn.TextColor3 = neonRed
resetAllBtn.Font = Enum.Font.GothamBold
resetAllBtn.TextSize = 10
resetAllBtn.BorderSizePixel = 0
resetAllBtn.Parent = win
Instance.new("UICorner", resetAllBtn).CornerRadius = UDim.new(0, 4)
-- Разделитель
local divider = Instance.new("Frame")
divider.Size = UDim2.new(1, -20, 0, 1)
divider.Position = UDim2.new(0, 10, 0, 164)
divider.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
divider.BorderSizePixel = 0
divider.Parent = win
--==================================================================
-- ЛЕВАЯ ПАНЕЛЬ: список оружия
--==================================================================
local listLabel = Instance.new("TextLabel")
listLabel.Size = UDim2.new(0, 160, 0, 20)
listLabel.Position = UDim2.new(0, 10, 0, 170)
listLabel.BackgroundTransparency = 1
listLabel.Text = "Оружие (индивидуально):"
listLabel.TextColor3 = Color3.fromRGB(100, 100, 115)
listLabel.Font = Enum.Font.GothamBold
listLabel.TextSize = 11
listLabel.TextXAlignment = Enum.TextXAlignment.Left
listLabel.Parent = win
local weaponList = Instance.new("ScrollingFrame")
weaponList.Size = UDim2.new(0, 160, 0, 300)
weaponList.Position = UDim2.new(0, 10, 0, 192)
weaponList.BackgroundColor3 = Color3.fromRGB(8, 8, 12)
weaponList.BorderSizePixel = 0
weaponList.ScrollBarThickness = 4
weaponList.ScrollBarImageColor3 = neonGray
weaponList.CanvasSize = UDim2.new(0, 0, 0, 0)
weaponList.AutomaticCanvasSize = Enum.AutomaticSize.Y
weaponList.Parent = win
Instance.new("UICorner", weaponList).CornerRadius = UDim.new(0, 6)
local weaponLayout = Instance.new("UIListLayout", weaponList)
weaponLayout.SortOrder = Enum.SortOrder.Name
weaponLayout.Padding = UDim.new(0, 2)
--==================================================================
-- ПРАВАЯ ПАНЕЛЬ: выбор скина и износа
--==================================================================
local detailPanel = Instance.new("Frame")
detailPanel.Size = UDim2.new(0, 210, 0, 300)
detailPanel.Position = UDim2.new(0, 180, 0, 192)
detailPanel.BackgroundColor3 = Color3.fromRGB(8, 8, 12)
detailPanel.BorderSizePixel = 0
detailPanel.Parent = win
Instance.new("UICorner", detailPanel).CornerRadius = UDim.new(0, 6)
local detailTitle = Instance.new("TextLabel")
detailTitle.Size = UDim2.new(1, -10, 0, 22)
detailTitle.Position = UDim2.new(0, 5, 0, 4)
detailTitle.BackgroundTransparency = 1
detailTitle.Text = "Выбери оружие \u{2192}"
detailTitle.TextColor3 = Color3.fromRGB(100, 100, 115)
detailTitle.Font = Enum.Font.GothamBold
detailTitle.TextSize = 12
detailTitle.TextXAlignment = Enum.TextXAlignment.Left
detailTitle.Parent = detailPanel
local currentSkinLabel = Instance.new("TextLabel")
currentSkinLabel.Size = UDim2.new(1, -10, 0, 16)
currentSkinLabel.Position = UDim2.new(0, 5, 0, 28)
currentSkinLabel.BackgroundTransparency = 1
currentSkinLabel.Text = "Скин: —"
currentSkinLabel.TextColor3 = neonGold
currentSkinLabel.Font = Enum.Font.Gotham
currentSkinLabel.TextSize = 11
currentSkinLabel.TextXAlignment = Enum.TextXAlignment.Left
currentSkinLabel.Parent = detailPanel
local skinSelectBtn = Instance.new("TextButton")
skinSelectBtn.Size = UDim2.new(1, -10, 0, 28)
skinSelectBtn.Position = UDim2.new(0, 5, 0, 46)
skinSelectBtn.BackgroundColor3 = itemBg
skinSelectBtn.Text = "Выбрать скин..."
skinSelectBtn.TextColor3 = Color3.fromRGB(200, 200, 210)
skinSelectBtn.Font = Enum.Font.Gotham
skinSelectBtn.TextSize = 11
skinSelectBtn.TextXAlignment = Enum.TextXAlignment.Left
skinSelectBtn.BorderSizePixel = 0
skinSelectBtn.Parent = detailPanel
Instance.new("UICorner", skinSelectBtn).CornerRadius = UDim.new(0, 6)
local currentWearLabel = Instance.new("TextLabel")
currentWearLabel.Size = UDim2.new(1, -10, 0, 16)
currentWearLabel.Position = UDim2.new(0, 5, 0, 78)
currentWearLabel.BackgroundTransparency = 1
currentWearLabel.Text = "Износ: Factory New"
currentWearLabel.TextColor3 = neonBlue
currentWearLabel.Font = Enum.Font.Gotham
currentWearLabel.TextSize = 11
currentWearLabel.TextXAlignment = Enum.TextXAlignment.Left
currentWearLabel.Parent = detailPanel
local wearButtons = {}
for i, wear in ipairs(WEARS) do
local wb = Instance.new("TextButton")
wb.Size = UDim2.new(1, -10, 0, 22)
wb.Position = UDim2.new(0, 5, 0, 96 + (i - 1) * 24)
wb.BackgroundColor3 = itemBg
wb.Text = wear
wb.TextColor3 = Color3.fromRGB(160, 160, 175)
wb.Font = Enum.Font.Gotham
wb.TextSize = 10
wb.TextXAlignment = Enum.TextXAlignment.Left
wb.BorderSizePixel = 0
wb.Parent = detailPanel
Instance.new("UICorner", wb).CornerRadius = UDim.new(0, 4)
wearButtons[wear] = wb
end
local applyDetailBtn = Instance.new("TextButton")
applyDetailBtn.Size = UDim2.new(1, -10, 0, 28)
applyDetailBtn.Position = UDim2.new(0, 5, 1, -64)
applyDetailBtn.BackgroundColor3 = Color3.fromRGB(20, 35, 25)
applyDetailBtn.Text = "ПРИМЕНИТЬ"
applyDetailBtn.TextColor3 = neonGreen
applyDetailBtn.Font = Enum.Font.GothamBold
applyDetailBtn.TextSize = 11
applyDetailBtn.BorderSizePixel = 0
applyDetailBtn.Parent = detailPanel
Instance.new("UICorner", applyDetailBtn).CornerRadius = UDim.new(0, 6)
local resetWeaponBtn = Instance.new("TextButton")
resetWeaponBtn.Size = UDim2.new(1, -10, 0, 24)
resetWeaponBtn.Position = UDim2.new(0, 5, 1, -32)
resetWeaponBtn.BackgroundColor3 = Color3.fromRGB(30, 15, 20)
resetWeaponBtn.Text = "СБРОСИТЬ ОРУЖИЕ"
resetWeaponBtn.TextColor3 = neonRed
resetWeaponBtn.Font = Enum.Font.GothamBold
resetWeaponBtn.TextSize = 10
resetWeaponBtn.BorderSizePixel = 0
resetWeaponBtn.Parent = detailPanel
Instance.new("UICorner", resetWeaponBtn).CornerRadius = UDim.new(0, 6)
--==================================================================
-- ЛОГ
--==================================================================
local logFrame = Instance.new("Frame")
logFrame.Size = UDim2.new(1, -20, 0, 50)
logFrame.Position = UDim2.new(0, 10, 1, -56)
logFrame.BackgroundColor3 = Color3.fromRGB(6, 6, 10)
logFrame.BorderSizePixel = 0
logFrame.Parent = win
Instance.new("UICorner", logFrame).CornerRadius = UDim.new(0, 6)
local logScroll = Instance.new("ScrollingFrame")
logScroll.Size = UDim2.new(1, -6, 1, -6)
logScroll.Position = UDim2.new(0, 3, 0, 3)
logScroll.BackgroundTransparency = 1
logScroll.BorderSizePixel = 0
logScroll.ScrollBarThickness = 3
logScroll.ScrollBarImageColor3 = neonGray
logScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
logScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
logScroll.Parent = logFrame
local logLayout = Instance.new("UIListLayout", logScroll)
logLayout.SortOrder = Enum.SortOrder.LayoutOrder
logLayout.Padding = UDim.new(0, 1)
logLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
local logOrder = 0
local function addLog(text, color)
color = color or Color3.fromRGB(180, 180, 190)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -4, 0, 14)
lbl.BackgroundTransparency = 1
lbl.Text = text
lbl.TextColor3 = color
lbl.Font = Enum.Font.Code
lbl.TextSize = 10
lbl.TextXAlignment = Enum.TextXAlignment.Left
logOrder = logOrder + 1
lbl.LayoutOrder = logOrder
lbl.Parent = logScroll
local count = 0
for _ in ipairs(logScroll:GetChildren()) do count = count + 1 end
if count > 6 then
local first = logScroll:GetChildren()[1]
if first then first:Destroy() end
end
end
--==================================================================
-- СБОР ОРУЖИЯ И СКИНОВ
--==================================================================
local function getAllWeaponNames()
local names = {}
for _, folder in ipairs(SkinsFolder:GetChildren()) do
if not IgnoreFolders[folder.Name] then
table.insert(names, folder.Name)
end
end
table.sort(names)
return names
end
local function getSkinNames(weaponName)
local folder = SkinsFolder:FindFirstChild(weaponName)
if not folder then return {} end
local names = {}
for _, skin in ipairs(folder:GetChildren()) do
table.insert(names, skin.Name)
end
table.sort(names)
return names
end
local function getBestSkin(weaponName)
local skins = getSkinNames(weaponName)
if #skins == 0 then return nil end
local bestSkin = skins[1]
local bestRarity = -1
for _, skin in ipairs(skins) do
local r = getSkinRarity(skin)
if r > bestRarity then
bestRarity = r
bestSkin = skin
end
end
return bestSkin
end
local function findSkinByName(weaponName, skinName)
local skins = getSkinNames(weaponName)
local lower = skinName:lower()
-- Точное совпадение
for _, s in ipairs(skins) do
if s:lower() == lower then return s end
end
-- Частичное
for _, s in ipairs(skins) do
if s:lower():match(lower) then return s end
end
return nil
end
allWeapons = getAllWeaponNames()
--==================================================================
-- ПРИМЕНЕНИЕ СКИНА
--==================================================================
local function applyWeaponSkin(model, weaponName, skinName, wearName)
if not model or not skinName or not wearName then return end
pcall(function()
local skinFolder = SkinsFolder:FindFirstChild(weaponName)
if not skinFolder then return end
local skinType = skinFolder:FindFirstChild(skinName)
if not skinType then return end
local cameraFolder = skinType:FindFirstChild("Camera")
if not cameraFolder then return end
local sourceFolder = cameraFolder:FindFirstChild(wearName)
if not sourceFolder then
for _, w in ipairs(WEARS) do
sourceFolder = cameraFolder:FindFirstChild(w)
if sourceFolder then break end
end
end
if not sourceFolder then return end
for _, part in ipairs(model:GetDescendants()) do
if part:IsA("BasePart") then
local newSkin = sourceFolder:FindFirstChild(part.Name)
if newSkin then
local existing = part:FindFirstChild("GAS_SkinSA")
if existing then existing:Destroy() end
local clone = newSkin:Clone()
clone.Name = "GAS_SkinSA"
clone.Parent = part
end
end
end
model:SetAttribute("GAS_Skin", skinName)
model:SetAttribute("GAS_Wear", wearName)
end)
end
local function applyAllSkins()
for _, obj in ipairs(camera:GetChildren()) do
local sel = selectedSkins[obj.Name]
if sel and sel.skin then
applyWeaponSkin(obj, obj.Name, sel.skin, sel.wear or "Factory New")
end
end
end
local function resetAllSkins()
for _, obj in ipairs(camera:GetChildren()) do
for _, desc in ipairs(obj:GetDescendants()) do
if desc.Name == "GAS_SkinSA" then desc:Destroy() end
end
obj:SetAttribute("GAS_Skin", nil)
obj:SetAttribute("GAS_Wear", nil)
end
selectedSkins = {}
for _, data in pairs(weaponButtons) do
if data.ind then data.ind.BackgroundColor3 = Color3.fromRGB(50, 50, 60) end
end
addLog("Все скины сброшены", neonRed)
end
--==================================================================
-- SKIN ALL — один скин на всё оружие
--==================================================================
local function skinAll(skinName, wearName)
local applied = 0
local failed = 0
for _, weaponName in ipairs(allWeapons) do
local skin = nil
if skinName and skinName ~= "" then
-- Ищем скин по имени на этом оружии
skin = findSkinByName(weaponName, skinName)
end
if not skin then
-- Не нашли — берём лучший
skin = getBestSkin(weaponName)
end
if skin then
selectedSkins[weaponName] = { skin = skin, wear = wearName }
-- Подсветка
local data = weaponButtons[weaponName]
if data and data.ind then
data.ind.BackgroundColor3 = neonGreen
end
applied = applied + 1
else
failed = failed + 1
end
end
if skinChangerOn then
applyAllSkins()
end
addLog(string.format("SKIN ALL: %d оружий, %d не нашли скин", applied, failed), neonGreen)
return applied
end
--==================================================================
-- RANDOM ALL — случайный скин на каждое оружие
--==================================================================
local function randomAll(wearName)
local applied = 0
for _, weaponName in ipairs(allWeapons) do
local skins = getSkinNames(weaponName)
if #skins > 0 then
local skin = skins[math.random(1, #skins)]
selectedSkins[weaponName] = { skin = skin, wear = wearName }
local data = weaponButtons[weaponName]
if data and data.ind then
data.ind.BackgroundColor3 = neonPurple
end
applied = applied + 1
end
end
if skinChangerOn then
applyAllSkins()
end
addLog("RANDOM ALL: " .. applied .. " оружий получили случайные скины", neonPurple)
return applied
end
--==================================================================
-- BEST ALL — самый редкий скин на каждое оружие
--==================================================================
local function bestAll(wearName)
local applied = 0
local log = {}
for _, weaponName in ipairs(allWeapons) do
local skin = getBestSkin(weaponName)
if skin then
selectedSkins[weaponName] = { skin = skin, wear = wearName }
local data = weaponButtons[weaponName]
if data and data.ind then
data.ind.BackgroundColor3 = neonGold
end
applied = applied + 1
table.insert(log, weaponName .. " \u{2192} " .. skin)
end
end
if skinChangerOn then
applyAllSkins()
end
addLog("BEST ALL: " .. applied .. " оружий получили лучшие скины", neonGold)
-- Выводим первые 5 в лог
for i = 1, math.min(5, #log) do
addLog(" " .. log[i], neonGold)
end
if #log > 5 then
addLog(" ...и ещё " .. (#log - 5) .. " оружий", neonGold)
end
return applied
end
--==================================================================
-- КНОПКИ МАССОВОГО НАЛОЖЕНИЯ
--==================================================================
skinAllBtn.MouseButton1Click:Connect(function()
if not skinChangerOn then
addLog("Сначала включи Skin Changer", neonRed)
return
end
local skinName = allSkinInput.Text
addLog("SKIN ALL: \"" .. (skinName == "" and "лучший" or skinName) .. "\" | " .. allWear, neonGreen)
skinAll(skinName, allWear)
end)
randomAllBtn.MouseButton1Click:Connect(function()
if not skinChangerOn then
addLog("Сначала включи Skin Changer", neonRed)
return
end
addLog("RANDOM ALL | " .. allWear, neonPurple)
randomAll(allWear)
end)
bestAllBtn.MouseButton1Click:Connect(function()
if not skinChangerOn then
addLog("Сначала включи Skin Changer", neonRed)
return
end
addLog("BEST ALL | " .. allWear, neonGold)
bestAll(allWear)
end)
resetAllBtn.MouseButton1Click:Connect(function()
resetAllSkins()
addLog("Полный сброс", neonRed)
end)
--==================================================================
-- ВЫПАДАЮЩИЙ СПИСОК СКИНОВ
--==================================================================
local dropdownOpen = nil
local function closeDropdown()
if dropdownOpen then dropdownOpen:Destroy() end
dropdownOpen = nil
end
local function openSkinDropdown(weaponName, currentSelection)
closeDropdown()
local skins = getSkinNames(weaponName)
if #skins == 0 then return end
local dd = Instance.new("ScrollingFrame")
dd.Size = UDim2.new(0, 170, 0, math.min(#skins * 26 + 8, 300))
dd.Position = UDim2.new(0, 190, 0, 244)
dd.BackgroundColor3 = Color3.fromRGB(12, 12, 18)
dd.BorderSizePixel = 0
dd.ScrollBarThickness = 4
dd.ZIndex = 20
dd.Parent = win
Instance.new("UICorner", dd).CornerRadius = UDim.new(0, 6)
local stroke = Instance.new("UIStroke", dd)
stroke.Color = neonGray
stroke.Thickness = 1
stroke.Transparency = 0.2
local layout = Instance.new("UIListLayout", dd)
layout.SortOrder = Enum.SortOrder.Name
layout.Padding = UDim.new(0, 2)
for _, skinName in ipairs(skins) do
local item = Instance.new("TextButton")
item.Size = UDim2.new(1, -8, 0, 24)
item.BackgroundColor3 = itemBg
item.Text = " " .. skinName
item.TextColor3 = (skinName == currentSelection) and neonGreen or Color3.fromRGB(200, 200, 210)
item.Font = Enum.Font.Gotham
item.TextSize = 11
item.TextXAlignment = Enum.TextXAlignment.Left
item.BorderSizePixel = 0
item.ZIndex = 20
item.Parent = dd
Instance.new("UICorner", item).CornerRadius = UDim.new(0, 4)
item.MouseButton1Click:Connect(function()
if not selectedSkins[weaponName] then
selectedSkins[weaponName] = { skin = skinName, wear = "Factory New" }
else
selectedSkins[weaponName].skin = skinName
end
currentSkinLabel.Text = "Скин: " .. skinName
skinSelectBtn.Text = skinName
local data = weaponButtons[weaponName]
if data and data.ind then data.ind.BackgroundColor3 = neonGreen end
addLog(weaponName .. " \u{2192} " .. skinName, neonGreen)
if skinChangerOn then applyAllSkins() end
closeDropdown()
end)
end
dropdownOpen = dd
end
--==================================================================
-- ЗАПОЛНЕНИЕ СПИСКА ОРУЖИЯ
--==================================================================
for _, weaponName in ipairs(allWeapons) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -4, 0, 26)
btn.BackgroundColor3 = itemBg
btn.Text = " " .. weaponName
btn.TextColor3 = Color3.fromRGB(170, 170, 185)
btn.Font = Enum.Font.Gotham
btn.TextSize = 11
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.BorderSizePixel = 0
btn.Parent = weaponList
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
local skinInd = Instance.new("Frame")
skinInd.Size = UDim2.new(0, 6, 0, 6)
skinInd.Position = UDim2.new(1, -12, 0.5, -3)
skinInd.BackgroundColor3 = Color3.fromRGB(50, 50, 60)
skinInd.BorderSizePixel = 0
skinInd.Parent = btn
Instance.new("UICorner", skinInd).CornerRadius = UDim.new(1, 0)
weaponButtons[weaponName] = { btn = btn, ind = skinInd }
btn.MouseButton1Click:Connect(function()
closeDropdown()
currentDetailWeapon = weaponName
for name, data in pairs(weaponButtons) do
data.btn.BackgroundColor3 = itemBg
data.btn.TextColor3 = Color3.fromRGB(170, 170, 185)
end
btn.BackgroundColor3 = Color3.fromRGB(30, 35, 50)
btn.TextColor3 = neonBlue
detailTitle.Text = weaponName
local sel = selectedSkins[weaponName]
if sel and sel.skin then
currentSkinLabel.Text = "Скин: " .. sel.skin
skinSelectBtn.Text = sel.skin
else
currentSkinLabel.Text = "Скин: —"
skinSelectBtn.Text = "Выбрать скин..."
end
local wear = (sel and sel.wear) or "Factory New"
currentWearLabel.Text = "Износ: " .. wear
for w, wb in pairs(wearButtons) do
if w == wear then
wb.BackgroundColor3 = Color3.fromRGB(25, 35, 55)
wb.TextColor3 = neonBlue
else
wb.BackgroundColor3 = itemBg
wb.TextColor3 = Color3.fromRGB(160, 160, 175)
end
end
end)
end
skinSelectBtn.MouseButton1Click:Connect(function()
if not currentDetailWeapon then
addLog("Выбери оружие слева", neonRed)
return
end
local sel = selectedSkins[currentDetailWeapon]
openSkinDropdown(currentDetailWeapon, sel and sel.skin or nil)
end)
for wear, wb in pairs(wearButtons) do
wb.MouseButton1Click:Connect(function()
if not currentDetailWeapon then return end
for w, b in pairs(wearButtons) do
b.BackgroundColor3 = itemBg
b.TextColor3 = Color3.fromRGB(160, 160, 175)
end
wb.BackgroundColor3 = Color3.fromRGB(25, 35, 55)
wb.TextColor3 = neonBlue
currentWearLabel.Text = "Износ: " .. wear
if not selectedSkins[currentDetailWeapon] then
selectedSkins[currentDetailWeapon] = { skin = nil, wear = wear }
else
selectedSkins[currentDetailWeapon].wear = wear
end
if skinChangerOn and selectedSkins[currentDetailWeapon].skin then
applyAllSkins()
end
end)
end
applyDetailBtn.MouseButton1Click:Connect(function()
if not currentDetailWeapon then return end
local sel = selectedSkins[currentDetailWeapon]
if not sel or not sel.skin then
addLog("Выбери скин для " .. currentDetailWeapon, neonRed)
return
end
if skinChangerOn then
applyAllSkins()
addLog(currentDetailWeapon .. " \u{2192} " .. sel.skin .. " (" .. (sel.wear or "Factory New") .. ")", neonGreen)
else
addLog("Включи Skin Changer", neonRed)
end
end)
resetWeaponBtn.MouseButton1Click:Connect(function()
if not currentDetailWeapon then return end
for _, obj in ipairs(camera:GetChildren()) do
if obj.Name == currentDetailWeapon then
for _, desc in ipairs(obj:GetDescendants()) do
if desc.Name == "GAS_SkinSA" then desc:Destroy() end
end
obj:SetAttribute("GAS_Skin", nil)
obj:SetAttribute("GAS_Wear", nil)
end
end
selectedSkins[currentDetailWeapon] = nil
local data = weaponButtons[currentDetailWeapon]
if data and data.ind then data.ind.BackgroundColor3 = Color3.fromRGB(50, 50, 60) end
currentSkinLabel.Text = "Скин: —"
skinSelectBtn.Text = "Выбрать скин..."
addLog("Сброшен: " .. currentDetailWeapon, neonRed)
end)
--==================================================================
-- ON/OFF
--==================================================================
enableBtn.MouseButton1Click:Connect(function()
skinChangerOn = not skinChangerOn
if skinChangerOn then
enableBtn.Text = "SKIN CHANGER: ON"
enableBtn.TextColor3 = neonGreen
enableBtn.BackgroundColor3 = Color3.fromRGB(20, 35, 25)
addLog("Skin Changer включён", neonGreen)
applyAllSkins()
else
enableBtn.Text = "SKIN CHANGER: OFF"
enableBtn.TextColor3 = Color3.fromRGB(130, 130, 145)
enableBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 26)
addLog("Skin Changer выключен", neonRed)
for _, obj in ipairs(camera:GetChildren()) do
for _, desc in ipairs(obj:GetDescendants()) do
if desc.Name == "GAS_SkinSA" then desc:Destroy() end
end
obj:SetAttribute("GAS_Skin", nil)
obj:SetAttribute("GAS_Wear", nil)
end
end
end)
--==================================================================
-- АВТОПРИМЕНЕНИЕ
--==================================================================
camera.ChildAdded:Connect(function(obj)
if not skinChangerOn then return end
task.wait(0.1)
local sel = selectedSkins[obj.Name]
if sel and sel.skin then
applyWeaponSkin(obj, obj.Name, sel.skin, sel.wear or "Factory New")
end
end)
task.spawn(function()
while true do
task.wait(0.5)
if skinChangerOn then
for _, obj in ipairs(camera:GetChildren()) do
local sel = selectedSkins[obj.Name]
if sel and sel.skin then
local cur = obj:GetAttribute("GAS_Skin")
local curW = obj:GetAttribute("GAS_Wear")
if cur ~= sel.skin or curW ~= (sel.wear or "Factory New") then
applyWeaponSkin(obj, obj.Name, sel.skin, sel.wear or "Factory New")
end
end
end
end
end
end)
UIS.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
task.wait(0.15)
if dropdownOpen then
local mp = UIS:GetMouseLocation()
local dp = dropdownOpen.AbsolutePosition
local ds = dropdownOpen.AbsoluteSize
if mp.X < dp.X or mp.X > dp.X + ds.X or mp.Y < dp.Y or mp.Y > dp.Y + ds.Y then
closeDropdown()
end
end
end
end)
--==================================================================
-- ПЕРЕТАСКИВАНИЕ
--==================================================================
local dragging = false
local dragStart, startPos
titleBar.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
local mp = i.Position
local ep = enableBtn.AbsolutePosition
local es = enableBtn.AbsoluteSize
if mp.X >= ep.X and mp.X <= ep.X + es.X and mp.Y >= ep.Y and mp.Y <= ep.Y + es.Y then
return
end
dragging = true
dragStart = i.Position
startPos = win.Position
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
UIS.InputChanged:Connect(function(i)
if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then
local d = i.Position - dragStart
win.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
--==================================================================
-- СТАРТ
--==================================================================
addLog("Skin Changer v3 загружен", neonGray)
addLog("Оружий: " .. #allWeapons, neonGray)
addLog("SKIN ALL — один скин на всё", neonGray)
addLog("RANDOM ALL — случайные скины", neonGray)
addLog("BEST ALL — лучшие скины на всё", neonGold)
print("========================================")
print("[GAS_YT] Skin Changer v3 loaded!")
print("[Skin] " .. #allWeapons .. " weapons")
print("[Skin] SKIN ALL — apply one skin to ALL weapons")
print("[Skin] RANDOM ALL — random skin per weapon")
print("[Skin] BEST ALL — rarest skin per weapon")
print("[Skin] Per-weapon selection still available")
print("========================================")
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place