[OASIS!] BloxStrike Skin changer Script No Key

Get the BloxStrike Skin Changer Script for Roblox! Instantly swap weapon skins, unlock exclusive looks, and execute with ease — no key needed. Free!

Script

🔮

”[OASIS!

🎯Aimbot🔮Show FOV Circle📏FOV Radius🔮Aimbot Smoothing🔫Trigger Bot🔮Shot Delay📦Hitbox🐇Bunny Hop🎨Skin Changer🔪Custom Knife🗡️Karambit Knife Skins
💻 LUA CODE:
local Rayfield = loadstring(game:HttpGet("https://raw.githubusercontent.com/twistedk1d/BloxStrike/refs/heads/main/Source/UI/source.lua"))()--// Window creation local Window = Rayfield:CreateWindow({ Name = "Yukio", Icon = 0, LoadingTitle = "loading Yukio (Blox Strike)", LoadingSubtitle = "by Yukio", ShowText = "Menu", Theme = { TextColor = Color3.fromRGB(255,255,255),Background = Color3.fromRGB(8,8,8), Topbar = Color3.fromRGB(20,0,0), Shadow = Color3.fromRGB(0,0,0),NotificationBackground = Color3.fromRGB(15,15,15), NotificationActionsBackground = Color3.fromRGB(35,0,0),TabBackground = Color3.fromRGB(15,15,15), TabStroke = Color3.fromRGB(255,0,0), TabBackgroundSelected = Color3.fromRGB(80,0,0), TabTextColor = Color3.fromRGB(255,255,255), SelectedTabTextColor = Color3.fromRGB(255,255,255),ElementBackground = Color3.fromRGB(12,12,12), ElementBackgroundHover = Color3.fromRGB(30,0,0),SecondaryElementBackground = Color3.fromRGB(18,18,18), ElementStroke = Color3.fromRGB(255,0,0), SecondaryElementStroke = Color3.fromRGB(120,0,0),SliderBackground = Color3.fromRGB(50,0,0), SliderProgress = Color3.fromRGB(255,0,0), SliderStroke = Color3.fromRGB(255,0,0),ToggleBackground = Color3.fromRGB(20,20,20), ToggleEnabled = Color3.fromRGB(255,0,0), ToggleDisabled = Color3.fromRGB(60,60,60),ToggleEnabledStroke = Color3.fromRGB(255,40,40), ToggleDisabledStroke = Color3.fromRGB(100,100,100),ToggleEnabledOuterStroke = Color3.fromRGB(120,0,0), ToggleDisabledOuterStroke = Color3.fromRGB(60,60,60),DropdownSelected = Color3.fromRGB(80,0,0), DropdownUnselected = Color3.fromRGB(20,20,20),InputBackground = Color3.fromRGB(20,20,20), InputStroke = Color3.fromRGB(255,0,0),PlaceholderColor = Color3.fromRGB(170,170,170) }, ToggleUIKeybind = Enum.KeyCode.RightShift, DisableRayfieldPrompts = false, DisableBuildWarnings = false, ConfigurationSaving = { Enabled = true, FolderName = "Yukio", FileName = "Sqilss_config" } })--// Services & Globals local RS = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local CAS = game:GetService("ContextActionService") local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local camera = Workspace.CurrentCamera local CharactersFolder = Workspace:WaitForChild("Characters", 10)--// TABS local Tab_Combat = Window:CreateTab("Combat", "crosshair") local Tab_Skins = Window:CreateTab("Skins", "swords") local Tab_Visuals = Window:CreateTab("Visuals", "eye")Tab_Skins:CreateLabel("skin changerby twistedk1d (not made by me)", "code", Color3.fromRGB(80,80,80), false)--// SHARED LOGIC local function getTFolder() return CharactersFolder:FindFirstChild("Terrorists") end local function getCTFolder() return CharactersFolder:FindFirstChild("Counter-Terrorists") end local function isAlive() local t, ct = getTFolder(), getCTFolder() return (t and t:FindFirstChild(player.Name)) or (ct and ct:FindFirstChild(player.Name)) end local function getEnemyFolder() if not isAlive() then return nil end local t, ct = getTFolder(), getCTFolder() if t and t:FindFirstChild(player.Name) then return ct end if ct and ct:FindFirstChild(player.Name) then return t end return nil end--// AIMBOT (unchanged) local AimbotEnabled = false local ShowFOV = false local FOV_Radius = 100 local Smoothing = 3 local AimKey = Enum.UserInputType.MouseButton2 local isAiming = false local FOVCircle = Drawing.new("Circle") FOVCircle.Position = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2) FOVCircle.Radius = FOV_Radius FOVCircle.Filled = false FOVCircle.Color = Color3.fromRGB(255, 255, 255) FOVCircle.Visible = false FOVCircle.Thickness = 1local function getClosestEnemyToMouse() local closestEnemy = nil local shortestDistance = FOV_Radius local enemyFolder = getEnemyFolder() if not enemyFolder or not AimbotEnabled then return nil end local mousePos = UserInputService:GetMouseLocation() for _, enemy in ipairs(enemyFolder:GetChildren()) do local hum = enemy:FindFirstChildOfClass("Humanoid") local head = enemy:FindFirstChild("Head") if hum and hum.Health > 0 and head then local headPos, onScreen = camera:WorldToViewportPoint(head.Position) if onScreen then local distance = (Vector2.new(headPos.X, headPos.Y) - mousePos).Magnitude if distance < shortestDistance then shortestDistance = distance closestEnemy = head end end end end return closestEnemy endUserInputService.InputBegan:Connect(function(input) if input.UserInputType == AimKey then isAiming = true end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == AimKey then isAiming = false end end)RunService.RenderStepped:Connect(function() if ShowFOV then FOVCircle.Position = UserInputService:GetMouseLocation() FOVCircle.Radius = FOV_Radius FOVCircle.Visible = true else FOVCircle.Visible = false end if not isAiming or not isAlive() or not AimbotEnabled then return end local targetHead = getClosestEnemyToMouse() if targetHead then local headPos = camera:WorldToViewportPoint(targetHead.Position) local mousePos = UserInputService:GetMouseLocation() local moveX = (headPos.X - mousePos.X) / Smoothing local moveY = (headPos.Y - mousePos.Y) / Smoothing if mousemoverel then mousemoverel(moveX, moveY) end end end)Tab_Combat:CreateSection("Aimbot Settings") Tab_Combat:CreateToggle({Name = "Enable Aimbot (Hold Right Click)", CurrentValue = false, Flag = "AimbotToggle", Callback = function(Value) AimbotEnabled = Value end}) Tab_Combat:CreateToggle({Name = "Show FOV Circle", CurrentValue = false, Flag = "FOVToggle", Callback = function(Value) ShowFOV = Value end}) Tab_Combat:CreateSlider({Name = "FOV Radius", Range = {10, 500}, Increment = 10, Suffix = "px", CurrentValue = 100, Flag = "FOVSlider", Callback = function(Value) FOV_Radius = Value end}) Tab_Combat:CreateSlider({Name = "Aimbot Smoothing", Range = {1, 10}, Increment = 1, Suffix = " (Lower is faster)", CurrentValue = 3, Flag = "AimbotSmoothing", Callback = function(Value) Smoothing = Value end})--// TriggerBot, Hitbox, Bhop (unchanged) local TriggerBotEnabled = false local TriggerBotDelay = 0 Tab_Combat:CreateSection("TriggerBot Settings") Tab_Combat:CreateToggle({Name = "Enable TriggerBot", CurrentValue = false, Flag = "TriggerBotToggle", Callback = function(Value) TriggerBotEnabled = Value end}) Tab_Combat:CreateSlider({Name = "Shot Delay", Range = {0, 500}, Increment = 10, Suffix = "ms", CurrentValue = 0, Flag = "TriggerBotDelay", Callback = function(Value) TriggerBotDelay = Value end})task.spawn(function() while task.wait(0.01) do if TriggerBotEnabled and isAlive() then local viewportSize = camera.ViewportSize local ray = camera:ViewportPointToRay(viewportSize.X / 2, viewportSize.Y / 2) local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude local ignoreList = {camera} if player.Character then table.insert(ignoreList, player.Character) end raycastParams.FilterDescendantsInstances = ignoreList local result = Workspace:Raycast(ray.Origin, ray.Direction * 1000, raycastParams) if result and result.Instance then local hitPart = result.Instance local model = hitPart:FindFirstAncestorOfClass("Model") if model and model:FindFirstChildOfClass("Humanoid") then local enemyFolder = getEnemyFolder() if enemyFolder and model.Parent == enemyFolder then local hum = model:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then if TriggerBotDelay > 0 then task.wait(TriggerBotDelay / 1000) end if mouse1click then mouse1click() end task.wait(0.05) end end end end end end end)local HitboxEnabled = false local HitboxSize = 3 local originalHeadSizes = {} Tab_Combat:CreateSection("Simple Hitbox (Max 3)") Tab_Combat:CreateToggle({Name = "Enable Hitbox", CurrentValue = false, Flag = "HitboxToggle", Callback = function(Value) HitboxEnabled = Value end}) Tab_Combat:CreateSlider({Name = "Hitbox Size", Range = {1, 3}, Increment = 0.1, Suffix = " Studs", CurrentValue = 3, Flag = "HitboxSize", Callback = function(Value) HitboxSize = Value end})task.spawn(function() while task.wait(0.5) do local enemyFolder = getEnemyFolder() if enemyFolder then for _, enemy in ipairs(enemyFolder:GetChildren()) do local head = enemy:FindFirstChild("Head") local hum = enemy:FindFirstChildOfClass("Humanoid") if head and hum and hum.Health > 0 then if not originalHeadSizes[head] then originalHeadSizes[head] = head.Size end if HitboxEnabled then head.Size = Vector3.new(HitboxSize, HitboxSize, HitboxSize) head.CanCollide = false head.Transparency = 0.5 else if originalHeadSizes[head] and head.Size ~= originalHeadSizes[head] then head.Size = originalHeadSizes[head] head.Transparency = 0 end end end end end end end)local BhopEnabled = false Tab_Combat:CreateSection("Movement Settings") Tab_Combat:CreateToggle({Name = "Enable Bunny Hop (Hold Space)", CurrentValue = false, Flag = "BhopToggle", Callback = function(Value) BhopEnabled = Value end})RunService.RenderStepped:Connect(function() if BhopEnabled and UserInputService:IsKeyDown(Enum.KeyCode.Space) and isAlive() then if player.Character then local hum = player.Character:FindFirstChildOfClass("Humanoid") if hum and hum:GetState() ~= Enum.HumanoidStateType.Jumping and hum:GetState() ~= Enum.HumanoidStateType.Freefall then hum.Jump = true end end end end)--// SKINS TAB (unchanged) local scriptRunning = false local selectedKnife = "Butterfly Knife" local spawned = false local inspecting = false local swinging = false local lastAttackTime = 0 local ATTACK_COOLDOWN = 1 local ACTION_INSPECT = "InspectKnifeAction" local ACTION_ATTACK = "AttackKnifeAction"pcall(function() RS.Assets.Weapons.Karambit.Camera.ViewmodelLight.Transparency = 1 end)local knives = { ["Karambit"] = {Offset = CFrame.new(0, -1.5, 1.5)}, ["Butterfly Knife"] = {Offset = CFrame.new(0, -1.5, 1.5)}, ["M9 Bayonet"] = {Offset = CFrame.new(0, -1.5, 1)}, ["Flip Knife"] = {Offset = CFrame.new(0, -1.5, 1.25)}, ["Gut Knife"] = {Offset = CFrame.new(0, -1.5, 0.5)}, }local vm, animator local equipAnim, idleAnim, inspectAnim, HeavySwingAnim, Swing1Anim, Swing2Animlocal function getKnifeInCamera() return camera:FindFirstChild("T Knife") or camera:FindFirstChild("CT Knife") end local function cleanPart(part) if not part:IsA("BasePart") then return end part.CanCollide, part.Anchored, part.CastShadow, part.CanTouch, part.CanQuery = false, false, false, false, false end local function disableCollisions(model) for _, part in model:GetDescendants() do cleanPart(part) end end local function hideOriginalKnife(knife) for _, part in knife:GetDescendants() do if part:IsA("BasePart") or part:IsA("MeshPart") or part:IsA("Texture") then part.Transparency = 1 end end end local function playSound(folder, name) local weaponSounds = RS.Sounds:FindFirstChild(selectedKnife) if not weaponSounds then return end local sound = weaponSounds:WaitForChild(folder):WaitForChild(name):Clone() sound.Parent = camera sound:Play() sound.Ended:Once(function() sound:Destroy() end) return sound endlocal function attachAsset(folder, armPartName, assetModelName, finalName, offset) local targetArm = vm:FindFirstChild(armPartName) if not targetArm then return end local assetMesh = folder:WaitForChild(assetModelName):Clone() cleanPart(assetMesh) assetMesh.Name = finalName assetMesh.Parent = targetArm local motor = Instance.new("Motor6D") motor.Part0, motor.Part1, motor.C0, motor.Parent = targetArm, assetMesh, offset, targetArm endlocal function handleAction(actionName, inputState, inputObject) if inputState ~= Enum.UserInputState.Begin or not spawned or not animator or not isAlive() then return Enum.ContextActionResult.Pass end if actionName == ACTION_INSPECT then if (equipAnim and equipAnim.IsPlaying) or inspecting or swinging then return Enum.ContextActionResult.Pass end inspecting = true if idleAnim then idleAnim:Stop() end inspectAnim:Play() inspectAnim.Stopped:Once(function() inspecting = false end) elseif actionName == ACTION_ATTACK then local currentTime = os.clock() if (equipAnim and equipAnim.IsPlaying) or (currentTime - lastAttackTime < ATTACK_COOLDOWN) then return Enum.ContextActionResult.Pass end lastAttackTime = currentTime if inspecting then inspecting = false; if inspectAnim then inspectAnim:Stop() end end swinging = true if idleAnim then idleAnim:Stop() end local anims = {HeavySwingAnim, Swing1Anim, Swing2Anim} local chosenAnim = anims[math.random(1, #anims)] local soundFolder = (chosenAnim == HeavySwingAnim and "HitOne") or (chosenAnim == Swing1Anim and "HitTwo") or "HitThree" chosenAnim:Play() local s = playSound(soundFolder, "1") if s then s.Volume = 5 end chosenAnim.Stopped:Once(function() swinging = false end) end return Enum.ContextActionResult.Pass endlocal function removeViewmodel() spawned = false CAS:UnbindAction(ACTION_INSPECT) CAS:UnbindAction(ACTION_ATTACK) if vm then vm:Destroy() vm = nil end animator, inspecting, swinging = nil, false, false endlocal function spawnViewmodel(knife) if spawned or not scriptRunning then return end local myModel = isAlive() if not myModel then return end spawned = true local knifeTemplate = RS.Assets.Weapons:WaitForChild(selectedKnife) local knifeOffset = knives[selectedKnife].Offset vm = knifeTemplate:WaitForChild("Camera"):Clone() vm.Name, vm.Parent = selectedKnife, camera disableCollisions(vm) hideOriginalKnife(knife) if myModel.Parent.Name == "Terrorists" then local tGloves = RS.Assets.Weapons:WaitForChild("T Glove") attachAsset(tGloves, "Left Arm", "Left Arm", "Glove", CFrame.new(0, 0, -1.5)) attachAsset(tGloves, "Right Arm", "Right Arm", "Glove", CFrame.new(0, 0, -1.5)) else local sleeves = RS.Assets.Sleeves:WaitForChild("IDF") local ctGloves = RS.Assets.Weapons:WaitForChild("CT Glove") attachAsset(sleeves, "Left Arm", "Left Arm", "Sleeve", CFrame.new(0, 0, 0.5)) attachAsset(ctGloves, "Left Arm", "Left Arm", "Glove", CFrame.new(0, 0, -1.5)) attachAsset(sleeves, "Right Arm", "Right Arm", "Sleeve", CFrame.new(0, 0, 0.5)) attachAsset(ctGloves, "Right Arm", "Right Arm", "Glove", CFrame.new(0, 0, -1.5)) end local animController = vm:FindFirstChildOfClass("AnimationController") or vm:FindFirstChildOfClass("Animator") animator = animController:FindFirstChildWhichIsA("Animator") or animController local animFolder = RS.Assets.WeaponAnimations:WaitForChild(selectedKnife):WaitForChild("CameraAnimations") equipAnim = animator:LoadAnimation(animFolder:WaitForChild("Equip")) idleAnim = animator:LoadAnimation(animFolder:WaitForChild("Idle")) inspectAnim = animator:LoadAnimation(animFolder:WaitForChild("Inspect")) HeavySwingAnim = animator:LoadAnimation(animFolder:WaitForChild("Heavy Swing")) Swing1Anim = animator:LoadAnimation(animFolder:WaitForChild("Swing1")) Swing2Anim = animator:LoadAnimation(animFolder:WaitForChild("Swing2")) vm:SetPrimaryPartCFrame(camera.CFrame * CFrame.new(0, -1.5, 5)) TweenService:Create(vm.PrimaryPart, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { CFrame = camera.CFrame * knifeOffset }):Play() equipAnim:Play() playSound("Equip", "1") CAS:BindAction(ACTION_INSPECT, handleAction, false, Enum.KeyCode.F) CAS:BindAction(ACTION_ATTACK, handleAction, false, Enum.UserInputType.MouseButton1) endRunService.RenderStepped:Connect(function() if not scriptRunning or not vm or not vm.PrimaryPart then return end vm.PrimaryPart.CFrame = camera.CFrame * knives[selectedKnife].Offset if not (equipAnim and equipAnim.IsPlaying) and not inspecting and not swinging then if idleAnim and not idleAnim.IsPlaying then idleAnim:Play() end end end)task.spawn(function() while task.wait(0.1) do local living = isAlive() local currentKnife = getKnifeInCamera() if scriptRunning and living and currentKnife and not spawned then spawnViewmodel(currentKnife) elseif (not scriptRunning or not currentKnife or not living) and spawned then removeViewmodel() end end end)local SkinChangerEnabled = false local SelectedSkins = {} local DropdownObjects = {} local SkinOptions = {} local COOLDOWN = 0.1 local WEAR = "Factory New" local CT_ONLY = {["USP-S"]=true, ["Five-SeveN"]=true, ["MP9"]=true, ["FAMAS"]=true, ["M4A1-S"]=true, ["M4A4"]=true, ["AUG"]=true} local SHARED = {["P250"]=true, ["Desert Eagle"]=true, ["Dual Berettas"]=true, ["Negev"]=true, ["P90"]=true, ["Nova"]=true, ["XM1014"]=true, ["AWP"]=true, ["SSG 08"]=true} local KNIVES = {["Karambit"]=true, ["Butterfly Knife"]=true, ["M9 Bayonet"]=true, ["Flip Knife"]=true, ["Gut Knife"]=true, ["T Knife"]=true, ["CT Knife"]=true} local GLOVES = {["Sports Gloves"]=true} local SkinsFolder = RS:WaitForChild("Assets"):WaitForChild("Skins") local IgnoreFolders = {["HE Grenade"]=true, ["Incendiary Grenade"]=true, ["Molotov"]=true, ["Smoke Grenade"]=true, ["Flashbang"]=true, ["Decoy Grenade"]=true, ["C4"]=true, ["CT Glove"]=true, ["T Glove"]=true}local function applyWeaponSkin(model) if not model or not SkinChangerEnabled or not isAlive() then return end local skinName = SelectedSkins[model.Name] if not skinName then return end pcall(function() local skinFolder = SkinsFolder:FindFirstChild(model.Name) if not skinFolder then return end local skinType = skinFolder:FindFirstChild(skinName) local sourceFolder = skinType and skinType:FindFirstChild("Camera") and skinType.Camera:FindFirstChild(WEAR) if not sourceFolder then return end for _, obj in camera:GetChildren() do local left, right = obj:FindFirstChild("Left Arm"), obj:FindFirstChild("Right Arm") if left or right then local gloveFolder = SkinsFolder:FindFirstChild("Sports Gloves") local gloveSkin = gloveFolder and gloveFolder:FindFirstChild(SelectedSkins["Sports Gloves"]) local gloveSource = gloveSkin and gloveSkin:FindFirstChild("Camera") and gloveSkin.Camera:FindFirstChild(WEAR) if gloveSource then for _, side in {"Left Arm", "Right Arm"} do local arm, src = obj:FindFirstChild(side), gloveSource:FindFirstChild(side) if arm and src then local gloveMesh = arm:FindFirstChild("Glove") if gloveMesh then local existing = gloveMesh:FindFirstChildOfClass("SurfaceAppearance") if existing then existing:Destroy() end local clone = src:Clone() clone.Name, clone.Parent = "SurfaceAppearance", gloveMesh end end end end end end if not GLOVES[model.Name] then local weaponFolder = model:FindFirstChild("Weapon") if weaponFolder then for _, part in weaponFolder:GetDescendants() do if part:IsA("BasePart") then local newSkin = sourceFolder:FindFirstChild(part.Name) if newSkin then local existing = part:FindFirstChildOfClass("SurfaceAppearance") if existing then existing:Destroy() end local clone = newSkin:Clone() clone.Name, clone.Parent = "SurfaceAppearance", part end end end end end model:SetAttribute("SkinApplied", skinName) end) endTab_Skins:CreateToggle({Name = "Enable Skin Changer", CurrentValue = false, Flag = "SkinChangerToggle", Callback = function(Value) SkinChangerEnabled = Value; if not Value then for _, obj in camera:GetChildren() do obj:SetAttribute("SkinApplied", nil) end end end}) Tab_Skins:CreateButton({Name = "🎲 Randomize All Skins", Callback = function() for weaponName, optionsList in pairs(SkinOptions) do if #optionsList > 0 then local randomSkin = optionsList[math.random(1, #optionsList)] if DropdownObjects[weaponName] then for _, dropdown in ipairs(DropdownObjects[weaponName]) do dropdown:Set({randomSkin}) end end end end end})local function CreateSkinDropdown(weaponName) local folder = SkinsFolder:FindFirstChild(weaponName) if not folder then return end local options = {} for _, skin in folder:GetChildren() do table.insert(options, skin.Name) end SkinOptions[weaponName] = options if not SelectedSkins[weaponName] then SelectedSkins[weaponName] = options[1] end local dp = Tab_Skins:CreateDropdown({ Name = weaponName, Options = options, CurrentOption = {SelectedSkins[weaponName]}, Flag = "Skin_" .. weaponName, Callback = function(opt) local newSkin = opt[1] SelectedSkins[weaponName] = newSkin if DropdownObjects[weaponName] then for _, other in DropdownObjects[weaponName] do if other.CurrentOption[1] ~= newSkin then other:Set({newSkin}) end end end for _, obj in camera:GetChildren() do obj:SetAttribute("SkinApplied", nil); applyWeaponSkin(obj) end end }) DropdownObjects[weaponName] = DropdownObjects[weaponName] or {} table.insert(DropdownObjects[weaponName], dp) endTab_Skins:CreateToggle({Name = "Enable Custom Knife", CurrentValue = false, Flag = "KnifeToggle", Callback = function(Value) scriptRunning = Value; if not Value then removeViewmodel() end end}) Tab_Skins:CreateDropdown({Name = "Selected Custom Knife", Options = {"Butterfly Knife", "Karambit", "M9 Bayonet", "Flip Knife", "Gut Knife"}, CurrentOption = {"Butterfly Knife"}, MultipleOptions = false, Flag = "KnifeDropdown", Callback = function(Options) selectedKnife = Options[1]; if spawned then removeViewmodel() end end})Tab_Skins:CreateSection("Knives Skins") for name in pairs(KNIVES) do CreateSkinDropdown(name) end Tab_Skins:CreateSection("Gloves") for name in pairs(GLOVES) do CreateSkinDropdown(name) end Tab_Skins:CreateSection("CT Weapons") for name in pairs(CT_ONLY) do CreateSkinDropdown(name) end Tab_Skins:CreateSection("T Weapons") for name in pairs(SHARED) do CreateSkinDropdown(name) end for _, folder in SkinsFolder:GetChildren() do local n = folder.Name if not IgnoreFolders[n] and not KNIVES[n] and not GLOVES[n] and not CT_ONLY[n] and not SHARED[n] then CreateSkinDropdown(n) end endcamera.ChildAdded:Connect(function(obj) if not SkinChangerEnabled or not isAlive() then return end task.wait(COOLDOWN); applyWeaponSkin(obj) end)task.spawn(function() while task.wait(0.5) do if SkinChangerEnabled and isAlive() then for _, obj in camera:GetChildren() do if SelectedSkins[obj.Name] and obj:GetAttribute("SkinApplied") ~= SelectedSkins[obj.Name] then applyWeaponSkin(obj) end end end end end)--// ESP + CHAMS (unchanged) local EspEnabled = false local EspBox = true local EspName = true local EspHealth = true local EspDistance = true local EspSkeleton = false local EspHeadDot = false local EspTracers = false local EspMaxDistance = 0local RainbowESP = false local RainbowESP_Speed = 2.0 local RainbowChams = false local RainbowChams_Speed = 2.0local BoxColor = Color3.fromRGB(255, 50, 50) local TextColor = Color3.fromRGB(255, 255, 255) local SkeletonColor = Color3.fromRGB(255, 255, 255) local TracerColor = Color3.fromRGB(255, 50, 50) local HeadDotColor = Color3.fromRGB(255, 255, 255) local EspTextSize = 15 local BoxThickness = 1.5local ChamsEnabled = false local ChamsColor = Color3.fromRGB(255, 0, 255) local ChamsFillTransparency = 0.7 local ChamsOutlineTransparency = 0local WeaponChamsEnabled = false local WeaponChamsColor = Color3.fromRGB(0, 255, 255) local WeaponChamsFillTransparency = 0.5 local WeaponChamsOutlineTransparency = 0.0local espCache = {} local chamsCache = {} local weaponChamsCache = {}local function getRainbowColor(speed) local time = tick() * speed return Color3.fromHSV(time % 1, 1, 1) endlocal function createESP() local esp = { boxOutline = Drawing.new("Square"), box = Drawing.new("Square"), name = Drawing.new("Text"), distance = Drawing.new("Text"), healthOutline = Drawing.new("Line"), healthBackground = Drawing.new("Line"), healthBar = Drawing.new("Line"), headDot = Drawing.new("Circle"), tracer = Drawing.new("Line"), skeleton = { headToNeck = Drawing.new("Line"), neckToTorso = Drawing.new("Line"), torsoToLeftUpper = Drawing.new("Line"), torsoToRightUpper = Drawing.new("Line"), leftUpperToLower = Drawing.new("Line"), rightUpperToLower = Drawing.new("Line"), leftLowerToFoot = Drawing.new("Line"), rightLowerToFoot = Drawing.new("Line") } }esp.boxOutline.Thickness = 3 esp.boxOutline.Filled = false esp.boxOutline.Color = Color3.new(0, 0, 0)esp.box.Thickness = BoxThickness esp.box.Filled = falseesp.name.Center = true esp.name.Outline = true esp.name.Size = EspTextSizeesp.distance.Center = true esp.distance.Outline = true esp.distance.Size = EspTextSize - 2esp.healthOutline.Thickness = 3 esp.healthOutline.Color = Color3.new(0, 0, 0)esp.healthBackground.Thickness = 4 esp.healthBackground.Color = Color3.new(0, 0, 0) esp.healthBackground.Transparency = 0.7esp.healthBar.Thickness = 2esp.headDot.Radius = 3 esp.headDot.Filled = true esp.headDot.Transparency = 1esp.tracer.Thickness = 1.5 esp.tracer.Transparency = 0.8for _, line in pairs(esp.skeleton) do line.Thickness = 1.5 line.Transparency = 0.9 endreturn esp endRunService.RenderStepped:Connect(function() if not EspEnabled or not isAlive() then for _, e in pairs(espCache) do for _, drawing in pairs(e) do if typeof(drawing) == "table" then for _, line in pairs(drawing) do line.Visible = false end else drawing.Visible = false end end end return endlocal enemyFolder = getEnemyFolder() if not enemyFolder then return endlocal currentAlive = {} local screenCenter = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y) local rainbowColor = RainbowESP and getRainbowColor(RainbowESP_Speed) or nilfor _, enemy in ipairs(enemyFolder:GetChildren()) do local hum = enemy:FindFirstChildOfClass("Humanoid") local root = enemy:FindFirstChild("HumanoidRootPart") local head = enemy:FindFirstChild("Head")if hum and hum.Health > 0 and root and head then currentAlive[enemy] = true if not espCache[enemy] then espCache[enemy] = createESP() endlocal esp = espCache[enemy] local rootPos, onScreen = camera:WorldToViewportPoint(root.Position) local headPos = camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.4, 0)) local legPos = camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3.2, 0))local distance = (camera.CFrame.Position - root.Position).Magnitudeif EspMaxDistance > 0 and distance > EspMaxDistance then for _, d in pairs(esp) do if typeof(d) == "table" then for _, l in pairs(d) do l.Visible = false end else d.Visible = false end end continue endif onScreen then local boxHeight = math.abs(headPos.Y - legPos.Y) * 1.05 local boxWidth = boxHeight * 0.55 local boxX = rootPos.X - boxWidth / 2 local boxY = headPos.Ylocal currentBoxColor = RainbowESP and rainbowColor or BoxColor local currentTextColor = RainbowESP and rainbowColor or TextColor local currentSkeletonColor = RainbowESP and rainbowColor or SkeletonColor local currentTracerColor = RainbowESP and rainbowColor or TracerColor local currentHeadDotColor = RainbowESP and rainbowColor or HeadDotColorif EspBox then esp.boxOutline.Size = Vector2.new(boxWidth, boxHeight) esp.boxOutline.Position = Vector2.new(boxX, boxY) esp.boxOutline.Visible = trueesp.box.Size = Vector2.new(boxWidth, boxHeight) esp.box.Position = Vector2.new(boxX, boxY) esp.box.Color = currentBoxColor esp.box.Thickness = BoxThickness esp.box.Visible = true else esp.boxOutline.Visible = false esp.box.Visible = false endif EspHealth then local hpPct = hum.Health / hum.MaxHealth local barX = boxX - 7 local barTop = boxY local barBottom = boxY + boxHeightesp.healthBackground.From = Vector2.new(barX, barTop) esp.healthBackground.To = Vector2.new(barX, barBottom) esp.healthBackground.Visible = trueesp.healthOutline.From = Vector2.new(barX - 1, barTop - 1) esp.healthOutline.To = Vector2.new(barX + 1, barBottom + 1) esp.healthOutline.Visible = trueesp.healthBar.From = Vector2.new(barX, barBottom) esp.healthBar.To = Vector2.new(barX, barBottom - (boxHeight * hpPct)) esp.healthBar.Color = Color3.fromHSV(hpPct * 0.33, 1, 1) esp.healthBar.Visible = true else esp.healthBackground.Visible = false esp.healthOutline.Visible = false esp.healthBar.Visible = false endif EspName then esp.name.Text = enemy.Name esp.name.Position = Vector2.new(rootPos.X, headPos.Y - 22) esp.name.Color = currentTextColor esp.name.Size = EspTextSize esp.name.Visible = true else esp.name.Visible = false endif EspDistance then esp.distance.Text = string.format("[%d studs]", math.floor(distance)) esp.distance.Position = Vector2.new(rootPos.X, boxY + boxHeight + 4) esp.distance.Color = currentTextColor esp.distance.Size = EspTextSize - 2 esp.distance.Visible = true else esp.distance.Visible = false endif EspHeadDot then esp.headDot.Position = Vector2.new(headPos.X, headPos.Y) esp.headDot.Color = currentHeadDotColor esp.headDot.Visible = true else esp.headDot.Visible = false endif EspTracers then esp.tracer.From = screenCenter esp.tracer.To = Vector2.new(rootPos.X, rootPos.Y + boxHeight / 2) esp.tracer.Color = currentTracerColor esp.tracer.Visible = true else esp.tracer.Visible = false endif EspSkeleton then local neck = enemy:FindFirstChild("Neck") or head local torso = enemy:FindFirstChild("UpperTorso") or enemy:FindFirstChild("Torso") local leftUpper = enemy:FindFirstChild("LeftUpperArm") local rightUpper = enemy:FindFirstChild("RightUpperArm") local leftLower = enemy:FindFirstChild("LeftLowerArm") local rightLower = enemy:FindFirstChild("RightLowerArm") local leftFoot = enemy:FindFirstChild("LeftFoot") or enemy:FindFirstChild("Left Leg") local rightFoot = enemy:FindFirstChild("RightFoot") or enemy:FindFirstChild("Right Leg")local function w2s(pos) local p = camera:WorldToViewportPoint(pos) return Vector2.new(p.X, p.Y) endlocal lines = esp.skeleton for _, line in pairs(lines) do line.Color = currentSkeletonColor line.Visible = true endlines.headToNeck.From = Vector2.new(headPos.X, headPos.Y) lines.headToNeck.To = w2s(neck.Position)lines.neckToTorso.From = w2s(neck.Position) lines.neckToTorso.To = w2s(torso and torso.Position or root.Position)lines.torsoToLeftUpper.From = w2s(torso and torso.Position or root.Position) lines.torsoToLeftUpper.To = w2s(leftUpper and leftUpper.Position or root.Position)lines.torsoToRightUpper.From = w2s(torso and torso.Position or root.Position) lines.torsoToRightUpper.To = w2s(rightUpper and rightUpper.Position or root.Position)lines.leftUpperToLower.From = w2s(leftUpper and leftUpper.Position or root.Position) lines.leftUpperToLower.To = w2s(leftLower and leftLower.Position or root.Position)lines.rightUpperToLower.From = w2s(rightUpper and rightUpper.Position or root.Position) lines.rightUpperToLower.To = w2s(rightLower and rightLower.Position or root.Position)lines.leftLowerToFoot.From = w2s(leftLower and leftLower.Position or root.Position) lines.leftLowerToFoot.To = w2s(leftFoot and leftFoot.Position or root.Position)lines.rightLowerToFoot.From = w2s(rightLower and rightLower.Position or root.Position) lines.rightLowerToFoot.To = w2s(rightFoot and rightFoot.Position or root.Position) else for _, line in pairs(esp.skeleton) do line.Visible = false end end else for _, d in pairs(esp) do if typeof(d) == "table" then for _, l in pairs(d) do l.Visible = false end else d.Visible = false end end end end endfor cEnemy, e in pairs(espCache) do if not currentAlive[cEnemy] then for _, d in pairs(e) do if typeof(d) == "table" then for _, l in pairs(d) do l:Remove() end else d:Remove() end end espCache[cEnemy] = nil end end end)local function updatePlayerChams() local enemyFolder = getEnemyFolder() if not enemyFolder then return end local rainbowColor = RainbowChams and getRainbowColor(RainbowChams_Speed) or ChamsColorfor _, enemy in ipairs(enemyFolder:GetChildren()) do local hum = enemy:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then if not chamsCache[enemy] then local highlight = Instance.new("Highlight") highlight.Adornee = enemy highlight.Parent = enemy highlight.FillTransparency = ChamsFillTransparency highlight.OutlineTransparency = ChamsOutlineTransparency highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop chamsCache[enemy] = highlight end local hl = chamsCache[enemy] hl.FillColor = rainbowColor hl.OutlineColor = rainbowColor hl.FillTransparency = ChamsFillTransparency hl.OutlineTransparency = ChamsOutlineTransparency end endfor model, hl in pairs(chamsCache) do if not model.Parent or (model:FindFirstChildOfClass("Humanoid") and model:FindFirstChildOfClass("Humanoid").Health 0) and BulletTracerTransparency or 1 RunService.Heartbeat:Wait() end if tracer.Parent then tracer:Destroy() end end) else task.delay(BulletTracerDuration, function() if tracer and tracer.Parent then tracer:Destroy() end end) endtable.insert(tracerParts, tracer) endUserInputService.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 and BulletTracersEnabled and isAlive() then local origin = camera.CFrame.Position local direction = camera.CFrame.LookVector * 300 createAdvancedTracer(origin, direction) end end)RunService.Heartbeat:Connect(function() for i = #tracerParts, 1, -1 do if not tracerParts[i].Parent then table.remove(tracerParts, i) end end end)--// PARTICLE EFFECTS (unchanged) local ParticleEffectsEnabled = false local ParticleColor = Color3.fromRGB(255, 100, 0) local ParticleAmount = 25 local ParticleLifetime = 1.2 local ParticleStyle = "Spark"local function createParticleEffect(position) if not ParticleEffectsEnabled then return endlocal attachment = Instance.new("Attachment") attachment.Position = position attachment.Parent = Workspace.Terrainlocal particle = Instance.new("ParticleEmitter") particle.Color = ColorSequence.new(ParticleColor) particle.Texture = "rbxassetid://243660364" particle.Lifetime = NumberRange.new(ParticleLifetime * 0.6, ParticleLifetime) particle.Rate = 0 particle.EmissionDirection = Enum.NormalId.Front particle.SpreadAngle = Vector2.new(35, 35) particle.Speed = NumberRange.new(8, 18) particle.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 0.6), NumberSequenceKeypoint.new(1, 0.1)}) particle.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1)}) particle.Parent = attachmentif ParticleStyle == "Smoke" then particle.Texture = "rbxassetid://243098098" particle.Speed = NumberRange.new(2, 6) elseif ParticleStyle == "Fire" then particle.Texture = "rbxassetid://241650934" particle.Speed = NumberRange.new(5, 12) elseif ParticleStyle == "Explosion" then particle.Lifetime = NumberRange.new(0.4, 0.8) particle.Speed = NumberRange.new(15, 30) particle.SpreadAngle = Vector2.new(80, 80) particle.Amount = ParticleAmount * 2 elseif ParticleStyle == "Magic" then particle.Texture = "rbxassetid://243098098" particle.RotSpeed = NumberRange.new(-200, 200) endparticle:Emit(ParticleAmount)task.delay(ParticleLifetime + 0.5, function() if attachment then attachment:Destroy() end end) endUserInputService.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 and ParticleEffectsEnabled and isAlive() then local ray = camera:ViewportPointToRay(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2) local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude raycastParams.FilterDescendantsInstances = {camera, player.Character or {}} local result = Workspace:Raycast(ray.Origin, ray.Direction * 500, raycastParams)if result and result.Position then createParticleEffect(result.Position) else local muzzlePos = camera.CFrame.Position + camera.CFrame.LookVector * 3 createParticleEffect(muzzlePos) end end end)--// KILL EFFECTS (NEW) local KillEffectsEnabled = false local KillEffectColor = Color3.fromRGB(255, 0, 100) local KillEffectDuration = 0.8 local KillEffectIntensity = 0.6local killFlashGui = nil local killText = nillocal function createKillEffects() if not KillEffectsEnabled then return end-- Screen Flash if not killFlashGui then killFlashGui = Instance.new("ScreenGui") killFlashGui.ResetOnSpawn = false killFlashGui.Parent = player:WaitForChild("PlayerGui")local flashFrame = Instance.new("Frame") flashFrame.Size = UDim2.new(1, 0, 1, 0) flashFrame.BackgroundColor3 = KillEffectColor flashFrame.BackgroundTransparency = 1 flashFrame.BorderSizePixel = 0 flashFrame.Parent = killFlashGui killFlashGui.Frame = flashFrame endlocal flash = killFlashGui.Frame flash.BackgroundTransparency = 0.2 TweenService:Create(flash, TweenInfo.new(KillEffectDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play()-- Floating Kill Text local text = Instance.new("TextLabel") text.Size = UDim2.new(0, 300, 0, 100) text.Position = UDim2.new(0.5, -150, 0.4, 0) text.BackgroundTransparency = 1 text.Text = "KILL" text.TextColor3 = KillEffectColor text.TextScaled = true text.Font = Enum.Font.GothamBold text.TextStrokeTransparency = 0 text.TextStrokeColor3 = Color3.new(0, 0, 0) text.Parent = player.PlayerGuiTweenService:Create(text, TweenInfo.new(KillEffectDuration * 0.7, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0.5, -150, 0.25, 0), TextTransparency = 1}):Play()task.delay(KillEffectDuration, function() if text and text.Parent then text:Destroy() end end) end-- Detect kills (monitor enemy health dropping to 0) task.spawn(function() local lastHealth = {} while task.wait(0.1) do if not KillEffectsEnabled then continue end local enemyFolder = getEnemyFolder() if not enemyFolder then continue endfor _, enemy in ipairs(enemyFolder:GetChildren()) do local hum = enemy:FindFirstChildOfClass("Humanoid") if hum then local currentHealth = hum.Health if lastHealth[enemy] and lastHealth[enemy] > 0 and currentHealth

Leave a Comment