local oldWarn = warn warn = function(...) end local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local HttpService = game:GetService("HttpService") local StarterPlayer = game:GetService("StarterPlayer") local plr = Players.LocalPlayer local VALID_KEY = "KEY39277716@dj293X67" local KEY_URL = "https://work.ink/2grE/yorijinkey" local CONFIG_FOLDER = "Yorijin Changer" local SAVE_FILE = CONFIG_FOLDER .. "/YorijinChanger.json" local KEY_FILE = CONFIG_FOLDER .. "/YorijinKey.txt" local SPOOFER_FILE = CONFIG_FOLDER .. "/YorijinSpoofer.json" local UNLOCK_SAVE_FILE = CONFIG_FOLDER .. "/unlockall.json" local SELECTIVE_UNLOCK_FILE = CONFIG_FOLDER .. "/selectiveunlock.json" local AUTOLOAD_FILE = "autoexec/YorijinAutoLoad.lua" local DISCORD_URL = "https://discord.gg/zv8Tdmds" pcall(function() if makefolder and not isfolder(CONFIG_FOLDER) then makefolder(CONFIG_FOLDER) end end) local keyVerified = false local function saveKey(key) pcall(function() writefile(KEY_FILE, key) end) end local function loadSavedKey() local ok, result = pcall(function() if isfile(KEY_FILE) then return readfile(KEY_FILE) end return nil end) if ok and result then return result:gsub("%s+", "") end return nil end local function setupAutoLoad(enabled) pcall(function() if enabled then local src = 'if game.PlaceId == 17625359962 then\n' src = src .. ' task.wait(3)\n' src = src .. ' local ok, err = pcall(function()\n' src = src .. ' if isfile and isfile("Yorijin Changer/YorijinKey.txt") then\n' src = src .. ' loadstring(game:HttpGet("https://raw.githubusercontent.com/ofugii/Yorijin/refs/heads/main/rivals.lua", true))()\n' src = src .. ' end\n' src = src .. ' end)\n' src = src .. 'end\n' pcall(function() writefile(AUTOLOAD_FILE, src) end) pcall(function() writefile("autoexec\\YorijinAutoLoad.lua", src) end) else pcall(function() if isfile(AUTOLOAD_FILE) then writefile(AUTOLOAD_FILE, "") end end) pcall(function() if isfile("autoexec\\YorijinAutoLoad.lua") then writefile("autoexec\\YorijinAutoLoad.lua", "") end end) end end) end local savedKey = loadSavedKey() if savedKey and savedKey == VALID_KEY then keyVerified = true end if not keyVerified then local function tw(obj, t, props) TweenService:Create(obj, TweenInfo.new(t, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), props):Play() end local kGui = Instance.new("ScreenGui") kGui.Name = "YorijinKey" kGui.ResetOnSpawn = false kGui.DisplayOrder = 999 kGui.Parent = plr:WaitForChild("PlayerGui") local bg = Instance.new("Frame", kGui) bg.Size = UDim2.new(1, 0, 1, 0) bg.BackgroundColor3 = Color3.fromRGB(0, 0, 0) bg.BackgroundTransparency = 0.3 bg.BorderSizePixel = 0 local win = Instance.new("Frame", kGui) win.Size = UDim2.new(0, 340, 0, 260) win.Position = UDim2.new(0.5, -170, 0.5, -130) win.BackgroundColor3 = Color3.fromRGB(12, 12, 12) win.BorderSizePixel = 0 win.BackgroundTransparency = 1 win.ZIndex = 2 Instance.new("UICorner", win).CornerRadius = UDim.new(0, 10) local winStroke = Instance.new("UIStroke", win) winStroke.Color = Color3.fromRGB(30, 30, 30) winStroke.Thickness = 1 winStroke.Transparency = 1 local titleLbl = Instance.new("TextLabel", win) titleLbl.Size = UDim2.new(1, 0, 0, 44) titleLbl.BackgroundTransparency = 1 titleLbl.Text = "Yorijin" titleLbl.TextColor3 = Color3.fromRGB(255, 255, 255) titleLbl.TextSize = 15 titleLbl.Font = Enum.Font.GothamBold titleLbl.ZIndex = 3 local inputBox = Instance.new("TextBox", win) inputBox.Size = UDim2.new(1, -32, 0, 42) inputBox.Position = UDim2.new(0, 16, 0, 50) inputBox.BackgroundColor3 = Color3.fromRGB(20, 20, 20) inputBox.Text = "" inputBox.PlaceholderText = "Paste key here" inputBox.PlaceholderColor3 = Color3.fromRGB(55, 55, 55) inputBox.TextColor3 = Color3.fromRGB(255, 255, 255) inputBox.TextSize = 13 inputBox.Font = Enum.Font.GothamMedium inputBox.TextXAlignment = Enum.TextXAlignment.Left inputBox.ClearTextOnFocus = false inputBox.BorderSizePixel = 0 inputBox.ZIndex = 3 Instance.new("UICorner", inputBox).CornerRadius = UDim.new(0, 8) Instance.new("UIPadding", inputBox).PaddingLeft = UDim.new(0, 12) local statusLbl = Instance.new("TextLabel", win) statusLbl.Size = UDim2.new(1, -32, 0, 18) statusLbl.Position = UDim2.new(0, 16, 0, 96) statusLbl.BackgroundTransparency = 1 statusLbl.Text = "" statusLbl.TextColor3 = Color3.fromRGB(100, 100, 100) statusLbl.TextSize = 11 statusLbl.Font = Enum.Font.GothamMedium statusLbl.TextXAlignment = Enum.TextXAlignment.Left statusLbl.ZIndex = 3 local verifyBtn = Instance.new("TextButton", win) verifyBtn.Size = UDim2.new(1, -32, 0, 42) verifyBtn.Position = UDim2.new(0, 16, 0, 120) verifyBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) verifyBtn.Text = "Verify" verifyBtn.TextColor3 = Color3.fromRGB(0, 0, 0) verifyBtn.TextSize = 13 verifyBtn.Font = Enum.Font.GothamBold verifyBtn.BorderSizePixel = 0 verifyBtn.ZIndex = 3 Instance.new("UICorner", verifyBtn).CornerRadius = UDim.new(0, 8) verifyBtn.MouseEnter:Connect(function() tw(verifyBtn, 0.1, {BackgroundColor3 = Color3.fromRGB(210, 210, 210)}) end) verifyBtn.MouseLeave:Connect(function() tw(verifyBtn, 0.1, {BackgroundColor3 = Color3.fromRGB(255, 255, 255)}) end) local bottomRow = Instance.new("Frame", win) bottomRow.Size = UDim2.new(1, -32, 0, 34) bottomRow.Position = UDim2.new(0, 16, 0, 170) bottomRow.BackgroundTransparency = 1 bottomRow.ZIndex = 3 local getKeyBtn = Instance.new("TextButton", bottomRow) getKeyBtn.Size = UDim2.new(0.5, -4, 1, 0) getKeyBtn.Position = UDim2.new(0, 0, 0, 0) getKeyBtn.BackgroundTransparency = 1 getKeyBtn.Text = "Get Key" getKeyBtn.TextColor3 = Color3.fromRGB(100, 100, 100) getKeyBtn.TextSize = 12 getKeyBtn.Font = Enum.Font.GothamMedium getKeyBtn.BorderSizePixel = 0 getKeyBtn.ZIndex = 3 getKeyBtn.MouseEnter:Connect(function() getKeyBtn.TextColor3 = Color3.fromRGB(255, 255, 255) end) getKeyBtn.MouseLeave:Connect(function() getKeyBtn.TextColor3 = Color3.fromRGB(100, 100, 100) end) local discordBtn = Instance.new("TextButton", bottomRow) discordBtn.Size = UDim2.new(0.5, -4, 1, 0) discordBtn.Position = UDim2.new(0.5, 4, 0, 0) discordBtn.BackgroundTransparency = 1 discordBtn.Text = "Discord" discordBtn.TextColor3 = Color3.fromRGB(100, 100, 100) discordBtn.TextSize = 12 discordBtn.Font = Enum.Font.GothamMedium discordBtn.BorderSizePixel = 0 discordBtn.ZIndex = 3 discordBtn.MouseEnter:Connect(function() discordBtn.TextColor3 = Color3.fromRGB(255, 255, 255) end) discordBtn.MouseLeave:Connect(function() discordBtn.TextColor3 = Color3.fromRGB(100, 100, 100) end) local sep = Instance.new("Frame", win) sep.Size = UDim2.new(1, -32, 0, 1) sep.Position = UDim2.new(0, 16, 0, 212) sep.BackgroundColor3 = Color3.fromRGB(22, 22, 22) sep.BorderSizePixel = 0 sep.ZIndex = 3 local footLbl = Instance.new("TextLabel", win) footLbl.Size = UDim2.new(1, -32, 0, 40) footLbl.Position = UDim2.new(0, 16, 0, 218) footLbl.BackgroundTransparency = 1 footLbl.Text = "Key resets every 24h" footLbl.TextColor3 = Color3.fromRGB(35, 35, 35) footLbl.TextSize = 10 footLbl.Font = Enum.Font.Gotham footLbl.ZIndex = 3 getKeyBtn.MouseButton1Click:Connect(function() pcall(function() setclipboard(KEY_URL) end) statusLbl.Text = "Link copied" statusLbl.TextColor3 = Color3.fromRGB(255, 255, 255) task.delay(2, function() statusLbl.Text = "" end) end) discordBtn.MouseButton1Click:Connect(function() pcall(function() setclipboard(DISCORD_URL) end) statusLbl.Text = "Discord link copied" statusLbl.TextColor3 = Color3.fromRGB(255, 255, 255) task.delay(0.3, function() pcall(function() if request or http_request or syn then (request or http_request or syn.request)({ Url = "http://127.0.0.1:6463/rpc?v=1", Method = "POST", Headers = {["Content-Type"] = "application/json", Origin = "https://discord.com"}, Body = HttpService:JSONEncode({cmd = "INVITE_BROWSER", args = {code = "zv8Tdmds"}, nonce = HttpService:GenerateGUID(false)}) }) end end) end) task.delay(2, function() statusLbl.Text = "" end) end) verifyBtn.MouseButton1Click:Connect(function() local entered = inputBox.Text:gsub("%s+", "") if entered == "" then statusLbl.Text = "Enter a key" statusLbl.TextColor3 = Color3.fromRGB(100, 100, 100) return end if entered == VALID_KEY then saveKey(entered) statusLbl.Text = "Verified" statusLbl.TextColor3 = Color3.fromRGB(255, 255, 255) verifyBtn.Text = "Done" task.delay(0.6, function() tw(win, 0.25, {BackgroundTransparency = 1}) tw(winStroke, 0.25, {Transparency = 1}) tw(bg, 0.25, {BackgroundTransparency = 1}) task.delay(0.3, function() kGui:Destroy() keyVerified = true end) end) else statusLbl.Text = "Invalid key" statusLbl.TextColor3 = Color3.fromRGB(180, 50, 50) local orig = inputBox.Position task.spawn(function() for _, v in ipairs({5, -4, 3, -2, 1, 0}) do inputBox.Position = UDim2.new(orig.X.Scale, orig.X.Offset + v, orig.Y.Scale, orig.Y.Offset) task.wait(0.03) end inputBox.Position = orig task.delay(2, function() statusLbl.Text = "" end) end) end end) inputBox.FocusLost:Connect(function(enter) if enter then verifyBtn.MouseButton1Click:Fire() end end) task.spawn(function() task.wait(0.05) win.Position = UDim2.new(0.5, -170, 0.5, -150) TweenService:Create(win, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { BackgroundTransparency = 0, Position = UDim2.new(0.5, -170, 0.5, -130) }):Play() tw(winStroke, 0.3, {Transparency = 0}) end) repeat task.wait(0.05) until keyVerified end local SkinLists = { ["Assault Rifle"] = {"Default","AK-47","AUG","Tommy Gun","Boneclaw Rifle","Gingerbread AUG","AKEY-47","Phoenix Rifle","10B Visits","Glorious Assault Rifle"}, ["Bow"] = {"Default","Compound Bow","Raven Bow","Dream Bow","Bat Bow","Balloon Bow","Frostbite Bow","Beloved Bow","Key Bow","Glorious Bow"}, ["Burst Rifle"] = {"Default","Electro Rifle","Aqua Burst","FAMAS","Spectral Burst","Pine Burst","Pixel Burst","Keyst Rifle","Glorious Burst Rifle"}, ["Crossbow"] = {"Default","Pixel Crossbow","Harpoon Crossbow","Violin Crossbow","Frostbite Crossbow","Crossbone","Arch Crossbow","Glorious Crossbow"}, ["Distortion"] = {"Default","Electropunk Distortion","Glorious Distortion","Experiment D15","Plasma Distortion","Magma Distortion","Sleighstortion","Cyber Distortion"}, ["Energy Rifle"] = {"Default","Hacker Rifle","Hydro Rifle","Void Rifle","New Year Energy Rifle","Apex Rifle","Soul Rifle","Glorious Energy Rifle"}, ["Flamethrower"] = {"Default","Pixel Flamethrower","Lamethrower","Rainbowthrower","Glitterthrower","Jack o' Thrower","Snowblower","Keythrower","Glorious Flamethrower"}, ["Grenade Launcher"] = {"Default","Swashbuckler","Uranium Launcher","Balloon Launcher","Gearnade Launcher","Skull Launcher","Snowball Launcher","Glorious Grenade Launcher"}, ["Gunblade"] = {"Default","Hyper Gunblade","Crude Gunblade","Gunsaw","Boneblade","Elf's Gunblade","Glorious Gunblade"}, ["Minigun"] = {"Default","Lasergun 3000","Pixel Minigun","Fighter Jet","Pumpkin Minigun","Wrapped Minigun","Glorious Minigun"}, ["Paintball Gun"] = {"Default","Slime Gun","Boba Gun","Paintballoon Gun","Ketchup Gun","Brain Gun","Snowball Gun","Glorious Paintball Gun"}, ["Permafrost"] = {"Default","Snowman Permafrost","Ice Permafrost","Glorious Permafrost"}, ["RPG"] = {"Default","Nuke Launcher","Spaceship Launcher","Squid Launcher","Pumpkin Launcher","Firework Launcher","Pencil Launcher","Rocket Launcher","RPKEY","Glorious RPG"}, ["Shotgun"] = {"Default","Balloon Shotgun","Hyper Shotgun","Cactus Shotgun","Broomstick","Wrapped Shotgun","Shotkey","Glorious Shotgun"}, ["Sniper"] = {"Default","Pixel Sniper","Hyper Sniper","Event Horizon","Eyething Sniper","Gingerbread Sniper","Keyper","Glorious Sniper"}, ["Daggers"] = {"Default","Aces","Paper Planes","Shurikens","Cookies","Crystal Daggers","Broken Hearts","Bat Daggers","Keynais","Glorious Daggers"}, ["Energy Pistols"] = {"Default","Void Pistols","Hyperlaser Guns","Hydro Pistols","Soul Pistols","Apex Pistols","Hacker Pistols","New Year Energy Pistols","Glorious Energy Pistols"}, ["Exogun"] = {"Default","Singularity","Ray Gun","Repulsor","Wondergun","Exogourd","Midnight Festive Exogun","Glorious Exogun"}, ["Flare Gun"] = {"Default","Firework Gun","Dynamite Gun","Banana Flare","Vexed Flare Gun","Wrapped Flare Gun","Glorious Flare Gun"}, ["Handgun"] = {"Default","Blaster","Stealth Handgun","Gumball Handgun","Pumpkin Handgun","Towerstone Handgun","Warp Handgun","Gingerbread Handgun","Pixel Handgun","Glorious Handgun"}, ["Revolver"] = {"Default","Desert Eagle","Sheriff","Peppergun","Boneclaw Revolver","Peppermint Sheriff","Keyvolver","Glorious Revolver"}, ["Shorty"] = {"Default","Not So Shorty","Lovely Shorty","Balloon Shorty","Demon Shorty","Wrapped Shorty","Too Shorty","Glorious Shorty"}, ["Slingshot"] = {"Default","Stick","Goalpost","Harp","Boneshot","Reindeer Slingshot","Lucky Horseshoe","Glorious Slingshot"}, ["Spray"] = {"Default","Lovely Spray","Nail Gun","Spray Bottle","Boneclaw Spray","Pine Spray","Key Spray","Glorious Spray"}, ["Uzi"] = {"Default","Water Uzi","Electro Uzi","Money Gun","Demon Uzi","Pine Uzi","Keyzi","Glorious Uzi"}, ["Warper"] = {"Default","Glitter Warper","Arcane Warper","Hotel Bell","Experiment W4","Frost Warper","Electropunk Warper","Glorious Warper"}, ["Battle Axe"] = {"Default","The Shred","Ban Axe","Cerulean Axe","Mimic Axe","Balloon Axe","Nordic Axe","Keyttle Axe","Glorious Battle Axe"}, ["Chainsaw"] = {"Default","Blobsaw","Handsaws","Mega Drill","Buzzsaw","Festive Buzzsaw","Glorious Chainsaw"}, ["Fists"] = {"Default","Boxing Gloves","Brass Knuckles","Fists of Hurt","Pumpkin Claws","Festive Fists","Fist","Glorious Fists"}, ["Katana"] = {"Default","Saber","Lightning Bolt","Stellar Katana","Evil Trident","New Year Katana","Keytana","Arch Katana","Crystal Katana","Pixel Katana","Linked Sword","Glorious Katana"}, ["Knife"] = {"Default","Chancla","Karambit","Armature.001","Balisong","Machete","Candy Cane","Keylisong","Keyrambit","Caladbolg","Glorious Knife"}, ["Maul"] = {"Default","Ban Hammer","Ice Maul","Sleigh Maul","Glorious Maul"}, ["Riot Shield"] = {"Default","Door","Energy Shield","Masterpiece","Tombstone Shield","Sled","Glorious Riot Shield"}, ["Scythe"] = {"Default","Scythe of Death","Anchor","Bug Net","Sakura Scythe","Bat Scythe","Cryo Scythe","Crystal Scythe","Keythe","Glorious Scythe"}, ["Trowel"] = {"Default","Plastic Shovel","Garden Shovel","Paintbrush","Pumpkin Carver","Snow Shovel","Glorious Trowel"}, ["Flashbang"] = {"Default","Disco Ball","Camera","Pixel Flashbang","Lightbulb","Skullbang","Shining Star","Glorious Flashbang"}, ["Freeze Ray"] = {"Default","Temporal Ray","Bubble Ray","Gum Ray","Spider Ray","Wrapped Freeze Ray","Glorious Freeze Ray"}, ["Grenade"] = {"Default","Whoopee Cushion","Water Balloon","Dynamite","Soul Grenade","Jingle Grenade","Frozen Grenade","Cuddle Bomb","Keynade","Glorious Grenade"}, ["Jump Pad"] = {"Default","Trampoline","Bounce House","Shady Chicken Sandwhich","Spider Web","Jolly Man","Glorious Jump Pad"}, ["Medkit"] = {"Default","Sandwich","Laptop","Medkitty","Box of Chocolates","Bucket of Candy","Milk & Cookies","Briefcase","Glorious Medkit"}, ["Molotov"] = {"Default","Coffee","Torch","Lava Lamp","Vexed Candle","Hot Coals","Arch Molotov","Glorious Molotov"}, ["Satchel"] = {"Default","Advanced Satchel","Notebook Satchel","Bag o' Money","Potion Satchel","Suspicious Gift","Glorious Satchel"}, ["Smoke Grenade"] = {"Default","Emoji Cloud","Balance","Hourglass","Eyeball","Snowglobe","Glorious Smoke Grenade"}, ["Subspace Tripmine"] = {"Default","Don't Press","Spring","DIY Tripmine","Trick or Treat","Dev-in-the-Box","Pot o' Keys","Glorious Subspace Tripmine"}, ["War Horn"] = {"Default","Trumpet","Megaphone","Air Horn","Boneclaw Horn","Mammoth Horn","Glorious War Horn"}, ["Warpstone"] = {"Default","Cyber Warpstone","Teleport Disc","Electropunk Warpstone","Warpbone","Warpstar","Warpeye","Unstable Warpstone","Glorious Warpstone"}, ["Elixir"] = {"Default"}, ["Glass Cannon"] = {"Default"}, ["Glast Shard"] = {"Default"}, ["RNG Dice"] = {"Default"}, ["Scepter"] = {"Default"}, } local WrapList = { "None", "Beige","Blue","Bluesteel","Blush","Brown","Cheese","Cool","Copper", "Crimson","Cursed","Frigid","Glorious","Green","Gunmetal","Haunted", "Highlighter","Hot Cocoa","Jean","Lapis","Lavish Crystal","Lemon", "Lumber","Machine","MaGGenta","Maroon","Midnight","Mint","Mustard", "Navy","Noir","Normal","Olive","Olo","Orange","Ornate","Pink", "Pink Lemonade","Playful","Purple","Red","Rust","Salmon","Sky", "Sleet","Slush","Spiral","Stained","Tawny","Teal","Titanium", "Tungsten","Tusky","Venom","Vexed","Violet","Yellow","Zombie", "Ancient","Antimatter","Arbiter","Arctic Camo","Black","Black Granite", "Bliss","Blush Wrapping","Brain","Bunsen","Caned Wrapping", "Carbon Wrapping","Carmine","Carpet","Cashmere Wrapping","Celtic", "Cerulean","Chilled Wrapping","Chrome Webs","Circuit","Clamshell", "Clouds","Cold Metal","Cool Crochet","Cork","Creme Wrapping", "Crimson Art","Crossed","Dawn","Desert Camo","Digital Camo","Dunes", "Dusky Wrapping","Eco","Evergreen Wrapping","Experience","Facility", "Fiery","Fire","Forest Camo","Forest Wrapping","Fortune Wrapping", "Frosted","Frosty Wrapping","Glisten","Glossy","Gold","Grass", "Green Goo","Hammered Copper","Holly Wrapping","Honeycomb","Hypnotic", "Igneous","Indigo Wrapping","Inlets","Jolly Wrapping","Leafy Grass", "Liquid Chrome","Lovely Leopard","Luxury Wrapping","Mahogany", "Mainframe","Maize","Medium stone grey","Merlot Wrapping","Mintbread", "Minty Wrapping","Mocha Wrapping","Model","Money","Mousse Wrapping", "Neo","Nova","Obsidian","Ocean Camo","OranGG","Patriot","PB & J", "Pearly Wrapping","Peppermint Wrapping","Periwinkle Wrapping", "Pink Crochet","Pink Glitter","Plasma","Polar Wrapping","Portal", "Purple Goo","Purpleize","Rage","Regal","Regal Wrapping","Reptile", "Rug","Rustic","Scales","Sentinel","Snowfall","Spartan", "Spellslinger","Steel","Storm","Street Camo","Strobe","Studded", "Studs","Surge","Swirls","Tealur","Tempest","Termination","TIX", "Toy","Trophy","Ugly Sweater","Universal","Urban Camo","Vigor", "Vile","Voltaic","Waste","Well Done","Werewolf Fur","White", "Winter Solstice","Winter Wrapping","Yang","Yin", ".dll",".exe","2025 Wrapping","2026 Wrapping","A5","Amber", "Arabesque","Arena","Aurora","Aurum","Beach","Bee", "Birthday Wrapping","Black Damascus","Black Glass","Black Opal", "Blaze","Bombastic","Bright","Bubbles","Candlelight","Candy Apple", "Carbon Fiber","Cardboard","Cardinal","Chrome","Classic","Clovers", "Crystallized","Damascus","Dark","Dark Arena","Devourer","Diamond", "Disco","Empress","Encrypt","Fire Horse","Frankenstein","Frostbite", "Geometric","Gingerbread","Glass","Green Sparkle","Greenflame", "Groove","Hallow","Heirloom","Hesper","Hologram","Hologram Arena", "Honey","Hyperdrive","Indigo Sparkle","Insidious","Insignia", "Iridescent","Ladybug","Lightning","Liquid Gold","Lucre","Luxe", "Luxurious","Magma","Magnetite","Malachite","Malevolent","Mesh", "Messis","Mint Choco Chip","Mischief","Moonstone","Mummy","Nebula", "Necromancer","Omnisand","Ornamented","Paint","Peppermint","Peril", "Pixel Blight","Plaid Pajama","Plastic","Quasar","Red Rubber", "Resolute","Rift","RIVALS Wrapping","Scorched","Scourge","Serenity", "Shadow Ink","Simulation","Slime","Spectral","Starblaze","Starfall", "Stocking Fur","Sunset","Sunset Sparkle","Supernova","Thunderburst", "Tiger","Triplaser","Water","Watermelon","Wealth","Webbed", "Wintergreen","Wintry","Woven", "Aegis","Blizzard","Borealis","Celestial","Dark Matter","Encroached", "Festive Lights","Fracture","Heartfelt","Ice Queen","Neon Lights", "Polaris","Solar","Soul Scourge","Speed","The Heights", "1B Visits","Beggar","Cream","Community","Danger","Glamour", "Glacier","Pine","Snowy Night","Boomore","Brianore","Nekore", "Nosnite","Sensite","Shadore", "Scribble","Net","Rivalry","Only Six" } local CharmList = { "None", "Armchair","Bone","Bowling Pin","Cage","Candy","Candy Corn", "Chombie Head","Cobweb","Cog","Cookie","Crystal","Cupcake","Dice", "Elf Hat","Fedora Stack","Firework","Glory Coin","Hammer", "Happy Gingerbread","Heart","Hook","Ice Cube","Jolly Hat", "Lemon Slice","Life Buoy","Magnet","Mini Candy Cane", "Mini Shining Star","Ninja Star","Ornament","Pawn","Peppermint Candy", "Potted Cactus","Potted Flower","Rune Ring","Runes","Ship Wheel", "Snowflake","Snowflake Ring","Snowman","Spider","Star","Table Lamp", "Thorn Circle","Traffic Cone","Witch Hat", "10 Gallon Hat","Anvil","Basketball","Bitster","Blobfish", "Candy Bucket","Caramel Apple","Chocolate Scoop","Decorated Tree", "Devious Pumpkin","Emoji: Weary","Festive Light","Football", "Golf Ball","Gravestone","Hot Chocolate","Hotdog","Jolly Chair", "Melonkin","Mini Portal","Mini Unstable Portal","Moai","Money Bag", "Mystery Block","Potion","Pufferfish","Rainbow","Rocket Ship", "Rubber Duck","Snowflakes","Stocking","Tennis Ball","UFO", "Alien Head","Balloon Dog","Black Cat","Cauldron","Chillman", "Cryo Capsule","Crystal Heart","Dumbkin","Emoji: Imp", "Emoji: Nauseated","Emoji: Nerd","Energy Cell","Explosion", "Eyeclipse","EZ","First Aid","Four-Leaf Clover","Frankenblob", "Ghost","Gingerbread Cat","Gingerbread Man","Happy Home","Jingle Bell", "Keycard 3","Mini Ban Hammer","Mini Disco Ball","Mini Key", "Mini Snowglobe","Penguin","Pierced Heart","Pumpkin Cat","Skull", "Skullgourd","Sneaker","Snowblob","Warp Disc","Wreath","Yeti", "100M Visits","1st Birthday Cake","3D Glasses","8sty","Applino", "atorix","Bandites","Bell","Blizmid","BobbVX","Brian1KB", "Bungeoppang","CarbonMeister","Chex","D_reamz","Darktru","Day 1", "DV","elixir","enriquebruv","Fireplace","Frozen Gaming Chair", "Gaming Headset","GreatGuyBoom","Hoopie","hoppy819","Hunt Token", "I Survived Season 0","KaiM","Karful","Kashy","Kaye","Khayri", "Mega Token","Milo","Mini Present","MiniBloxia","Mud","nekoanims", "Nosniy","Nosniy Games","oPixel","philhood","RIA25 Award","RIVALS", "Season 0","Season 1","Season 2","SenseiWarrior","ShadowTrojan", "SharkTactics","Shooting Star","Streamer Microphone","TanqR","viecti", "WE1RD", "Alpha Coin","Coinbama","Team Crown", "Chibi Assault Rifle","Chibi Bow","Chibi Burst Rifle","Chibi Crossbow", "Chibi Energy Rifle","Chibi Flamethrower","Chibi Grenade Launcher", "Chibi Gunblade","Chibi Minigun","Chibi Paintball Gun","Chibi RPG", "Chibi Shotgun","Chibi Sniper","Chibi Daggers","Chibi Energy Pistols", "Chibi Exogun","Chibi Flare Gun","Chibi Handgun","Chibi Revolver", "Chibi Shorty","Chibi Slingshot","Chibi Spray","Chibi Uzi", "Chibi Warper","Chibi Battle Axe","Chibi Chainsaw","Chibi Fists", "Chibi Katana","Chibi Knife","Chibi Riot Shield","Chibi Scythe", "Chibi Trowel","Chibi Flashbang","Chibi Freeze Ray","Chibi Grenade", "Chibi Jump Pad","Chibi Medkit","Chibi Molotov","Chibi Satchel", "Chibi Smoke Grenade","Chibi Subspace Tripmine","Chibi War Horn", "Chibi Warpstone" } local FinisherList = { "None","Ragdoll", "Flop","Confetti","Hacked","Petrify","Toot","Yoink", "Spooky Confetti","Bite","Batsplosion","Festive Confetti","Wrapped", "Ascend","Bad Mood","Bogey","Bonesplosion","Collapse", "Decorated Player","Flick","Freeze","Frozen","Gingerbreadify", "Heavy Head","High Gravity","Hooked","Lost Soul","Midas Touch", "Reaper","Roadrunner","Rush","Snowmanify","Splatter","Tremble", "Warp Sickness", "Balloons","Beacon","BONK!","Boogie","Broom Ride","Chark Attack", "Clapped","Crushed","Darkheart","David","Dematerialize", "Diamond Hands","Disintegrate","DRIP","Electrocute","Enlightened", "Erased","Falling Icicles","Firework Show","Giant Ice Spike", "Giant Snowball","GOOAAALLLL","Greenflame","Heartbeat","Ignite", "Impaled","Inflate","Instability","Leprechaunify","Low Gravity","OOF", "Opulent","Orbital Strike","Pixel Coins","Plushify","Poof", "Rainbow Barf","RIP","Sleigh Away","Snowballed","Spaghettified", "Stiff","Those Who Know","Tough Crowd","Zombified", "5B Visits","Director's Cut","Elfify","Jolly Judgement" } local AllSkinNames = {} do local seen = {} for _, skins in pairs(SkinLists) do for _, s in ipairs(skins) do if s ~= "Default" and not seen[s] then seen[s] = true table.insert(AllSkinNames, s) end end end table.sort(AllSkinNames) end local PlayerScripts = plr:WaitForChild("PlayerScripts") local Controllers = PlayerScripts:WaitForChild("Controllers") local PlayerDataController = require(Controllers:WaitForChild("PlayerDataController", 10)) repeat task.wait() until PlayerDataController.CurrentData local PlayerData = PlayerDataController.CurrentData local CosmeticLibrary = require(ReplicatedStorage.Modules.CosmeticLibrary) local EnumLibrary = require(ReplicatedStorage.Modules:WaitForChild("EnumLibrary", 10)) local ItemLibrary pcall(function() ItemLibrary = require(ReplicatedStorage.Modules.ItemLibrary) end) local cosmeticConfig = {} pcall(function() if readfile and isfile and isfile(SAVE_FILE) then cosmeticConfig = HttpService:JSONDecode(readfile(SAVE_FILE)) end end) local function saveConfig() pcall(function() if writefile then writefile(SAVE_FILE, HttpService:JSONEncode(cosmeticConfig)) end end) end _G.GlobalData = _G.GlobalData or {AutoLoad = false, SilentLoad = false} if cosmeticConfig._global then _G.GlobalData.AutoLoad = cosmeticConfig._global.AutoLoad or false _G.GlobalData.SilentLoad = cosmeticConfig._global.SilentLoad or false end local function saveGlobalToConfig() cosmeticConfig._global = { AutoLoad = _G.GlobalData.AutoLoad, SilentLoad = _G.GlobalData.SilentLoad, } saveConfig() end setupAutoLoad(_G.GlobalData.AutoLoad) local function waitForAssets(timeout) local start = tick() local assetsFolder, charmsFolder while tick() - start < (timeout or 10) do pcall(function() local ps = plr:FindFirstChild("PlayerScripts") if ps then assetsFolder = ps:FindFirstChild("Assets") if assetsFolder then charmsFolder = assetsFolder:FindFirstChild("Charms") end end end) if assetsFolder and charmsFolder then return assetsFolder, charmsFolder end task.wait(0.1) end return assetsFolder, charmsFolder end local AssetsFolder, CharmsFolder = waitForAssets(15) if not CharmsFolder then pcall(function() local sps = StarterPlayer:WaitForChild("StarterPlayerScripts", 5) if sps then local af = sps:FindFirstChild("Assets") if af then CharmsFolder = af:FindFirstChild("Charms") end end end) end local SkinImageIds = {} local function buildSkinImageMap() pcall(function() for name, data in pairs(CosmeticLibrary.Cosmetics) do if type(data) == "table" then local img = data.Icon or data.Image or data.Thumbnail or data.ImageId or data.TextureId if img and type(img) == "string" and img ~= "" then SkinImageIds[name] = img end end end end) pcall(function() local folders = {"ViewModels", "Assets", "Weapons", "Cosmetics", "CosmeticModels", "Icons", "SkinIcons", "ItemIcons"} for _, folderName in ipairs(folders) do local folder = ReplicatedStorage:FindFirstChild(folderName) if folder then for _, desc in pairs(folder:GetDescendants()) do if desc:IsA("Decal") or desc:IsA("Texture") then local skinName = desc.Parent and desc.Parent.Name if skinName and desc.Texture ~= "" and not SkinImageIds[skinName] then SkinImageIds[skinName] = desc.Texture end elseif desc:IsA("MeshPart") and desc.TextureID ~= "" then if not SkinImageIds[desc.Name] then SkinImageIds[desc.Name] = desc.TextureID end elseif (desc:IsA("ImageLabel") or desc:IsA("ImageButton")) and desc.Image ~= "" then if not SkinImageIds[desc.Name] then SkinImageIds[desc.Name] = desc.Image end end end end end end) pcall(function() if ItemLibrary then for weaponName in pairs(SkinLists) do pcall(function() local img = ItemLibrary:GetViewModelImage(weaponName) if img and img ~= "" and not SkinImageIds[weaponName] then SkinImageIds[weaponName] = img end end) end end end) end buildSkinImageMap() local function getSkinImage(skinName) if SkinImageIds[skinName] then return SkinImageIds[skinName] end if ItemLibrary then local ok, img = pcall(function() return ItemLibrary:GetViewModelImage(skinName) end) if ok and img and img ~= "" then SkinImageIds[skinName] = img return img end end return "" end local function cloneCosmetic(name, cosmeticType) if not name or name:lower() == "none" or name == "Default" then return nil end local base = CosmeticLibrary.Cosmetics[name] local data = {} if base then for k, v in pairs(base) do data[k] = v end end data.Name = name data.Type = cosmeticType data.Seed = data.Seed or math.random(1, 1000000) pcall(function() if EnumLibrary then local e = EnumLibrary:ToEnum(name) if e then data.Enum = e data.ObjectID = e end end end) if not base then pcall(function() for _, obj in pairs(getgc(true)) do if type(obj) == "table" and rawget(obj, name) and type(rawget(obj, name)) == "table" then local candidate = rawget(obj, name) if candidate.Type == cosmeticType or candidate.Name == name then for k, v in pairs(candidate) do if data[k] == nil then data[k] = v end end break end end end end) end return data end local function findWeaponEntry(weaponName) local weaponInventory = PlayerData:Get("WeaponInventory") if not weaponInventory then return nil end for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == weaponName then return weaponEntry end end return nil end local function injectWeaponData(weaponName) local weaponInventory = PlayerData:Get("WeaponInventory") if not weaponInventory then return end local cfg = cosmeticConfig[weaponName] if not cfg then return end local weaponEntry = findWeaponEntry(weaponName) if not weaponEntry then return end weaponEntry.Skin = cfg.Skin weaponEntry.Wrap = cfg.Wrap weaponEntry.Charm = cfg.Charm weaponEntry.Finisher = cfg.Finisher return weaponEntry end local function injectActiveWeapon() local ok, FighterController = pcall(function() return require(Controllers:WaitForChild("FighterController", 10)) end) if not ok then return end local fighter = FighterController:GetFighter(plr) if not fighter or not fighter.Items then return end for _, item in pairs(fighter.Items) do local weaponName = item.Name if cosmeticConfig[weaponName] then local cfg = cosmeticConfig[weaponName] pcall(function() if cfg.Skin then item:Set("Skin", cfg.Skin) end if cfg.Wrap then item:Set("Wrap", cfg.Wrap) end if cfg.Charm then item:Set("Charm", cfg.Charm) end if cfg.Finisher then item:Set("Finisher", cfg.Finisher) end if item._ViewModel then local vm = item._ViewModel if cfg.Skin and vm.SetSkin then vm:SetSkin(cfg.Skin) end if cfg.Wrap and vm.SetWrap then vm:SetWrap(cfg.Wrap) end if cfg.Charm and vm.SetCharm then vm:SetCharm(cfg.Charm) end if vm._UpdateSkin then vm:_UpdateSkin() end if vm._UpdateWrap then vm:_UpdateWrap() end if vm._UpdateCharm then vm:_UpdateCharm() end end end) end end end pcall(function() local ClientItem = require(PlayerScripts.Modules.ClientReplicatedClasses.ClientFighter.ClientItem) local original_CreateViewModel = ClientItem._CreateViewModel ClientItem._CreateViewModel = function(self, replicatedData) local weaponName = self.Name local ownerPlayer = self.ClientFighter and self.ClientFighter.Player if ownerPlayer == plr and cosmeticConfig[weaponName] then local cfg = cosmeticConfig[weaponName] if not replicatedData then replicatedData = {} end if cfg.Skin then pcall(function() if replicatedData.Data then replicatedData.Data.Skin = cfg.Skin replicatedData.Data.Name = cfg.Skin.Name else local RepClass = require(ReplicatedStorage.Modules.ReplicatedClass) local dataKey = RepClass:ToEnum("Data") local skinKey = RepClass:ToEnum("Skin") local nameKey = RepClass:ToEnum("Name") if replicatedData[dataKey] then replicatedData[dataKey][skinKey] = cfg.Skin replicatedData[dataKey][nameKey] = cfg.Skin.Name end end end) end end return original_CreateViewModel(self, replicatedData) end end) pcall(function() local vmModule = PlayerScripts.Modules.ClientReplicatedClasses.ClientFighter.ClientItem:FindFirstChild("ClientViewModel") if not vmModule then return end local ClientViewModel = require(vmModule) local originalGetWrap = ClientViewModel.GetWrap ClientViewModel.GetWrap = function(self) local clientItem = self.ClientItem if not clientItem then return originalGetWrap(self) end local weaponName = clientItem.Name local ownerPlayer = clientItem.ClientFighter and clientItem.ClientFighter.Player if ownerPlayer == plr and cosmeticConfig[weaponName] and cosmeticConfig[weaponName].Wrap then return cosmeticConfig[weaponName].Wrap end return originalGetWrap(self) end local originalNew = ClientViewModel.new ClientViewModel.new = function(replicatedData, clientItem) if not clientItem then return originalNew(replicatedData, clientItem) end local ownerPlayer = clientItem.ClientFighter and clientItem.ClientFighter.Player local weaponName = clientItem.Name if ownerPlayer == plr and cosmeticConfig[weaponName] then pcall(function() local RepClass = require(ReplicatedStorage.Modules.ReplicatedClass) local dataKey = RepClass:ToEnum("Data") replicatedData[dataKey] = replicatedData[dataKey] or {} local cfg = cosmeticConfig[weaponName] if cfg.Skin then replicatedData[dataKey][RepClass:ToEnum("Skin")] = cfg.Skin end if cfg.Wrap then replicatedData[dataKey][RepClass:ToEnum("Wrap")] = cfg.Wrap end if cfg.Charm then replicatedData[dataKey][RepClass:ToEnum("Charm")] = cfg.Charm end end) end local vm = originalNew(replicatedData, clientItem) if vm and ownerPlayer == plr and cosmeticConfig[weaponName] then local cfg = cosmeticConfig[weaponName] pcall(function() if cfg.Wrap and vm._UpdateWrap then vm:_UpdateWrap() end if cfg.Skin and vm._UpdateSkin then vm:_UpdateSkin() end end) end return vm end end) local function equipCosmetic(weaponName, cosmeticType, cosmeticName) if cosmeticName == "None" or cosmeticName == "Default" then if cosmeticConfig[weaponName] then cosmeticConfig[weaponName][cosmeticType] = nil local hasKeys = false for k, _ in pairs(cosmeticConfig[weaponName]) do hasKeys = true break end if not hasKeys then cosmeticConfig[weaponName] = nil end end if findWeaponEntry(weaponName) then injectWeaponData(weaponName) end injectActiveWeapon() saveConfig() pcall(function() PlayerData:Replicate("WeaponInventory") end) return end local cloned = cloneCosmetic(cosmeticName, cosmeticType) if not cloned then return end if not cosmeticConfig[weaponName] then cosmeticConfig[weaponName] = {} end cosmeticConfig[weaponName][cosmeticType] = cloned if findWeaponEntry(weaponName) then injectWeaponData(weaponName) end injectActiveWeapon() saveConfig() pcall(function() PlayerData:Replicate("WeaponInventory") end) end local function applyWrapToAll(wrapName) for weapon in pairs(SkinLists) do if wrapName == "None" then if cosmeticConfig[weapon] then cosmeticConfig[weapon].Wrap = nil local hasKeys = false for k, _ in pairs(cosmeticConfig[weapon]) do hasKeys = true break end if not hasKeys then cosmeticConfig[weapon] = nil end end else local cloned = cloneCosmetic(wrapName, "Wrap") if cloned then if not cosmeticConfig[weapon] then cosmeticConfig[weapon] = {} end cosmeticConfig[weapon].Wrap = cloned end end if findWeaponEntry(weapon) then injectWeaponData(weapon) end end injectActiveWeapon() saveConfig() pcall(function() PlayerData:Replicate("WeaponInventory") end) end local _unlockAllApplied = false local function unlockAllCosmetics() if _unlockAllApplied then return end _unlockAllApplied = true local _player = plr local _playerScripts = _player:WaitForChild("PlayerScripts") local _controllers = _playerScripts:WaitForChild("Controllers") local _EnumLibrary = require(ReplicatedStorage.Modules:WaitForChild("EnumLibrary", 10)) if _EnumLibrary then _EnumLibrary:WaitForEnumBuilder() end local _CosmeticLibrary = require(ReplicatedStorage.Modules:WaitForChild("CosmeticLibrary", 10)) local _ItemLibrary = require(ReplicatedStorage.Modules:WaitForChild("ItemLibrary", 10)) local _DataController = require(_controllers:WaitForChild("PlayerDataController", 10)) local _equipped, _favorites = {}, {} local _constructingWeapon, _viewingProfile = nil, nil local _lastUsedWeapon = nil local function _cloneCosmetic(name, cosmeticType, options) local base = _CosmeticLibrary.Cosmetics[name] if not base then return nil end local data = {} for key, value in pairs(base) do data[key] = value end data.Name = name data.Type = data.Type or cosmeticType data.Seed = data.Seed or math.random(1, 1000000) if _EnumLibrary then local success, enumId = pcall(_EnumLibrary.ToEnum, _EnumLibrary, name) if success and enumId then data.Enum, data.ObjectID = enumId, data.ObjectID or enumId end end if options then if options.inverted ~= nil then data.Inverted = options.inverted end if options.favoritesOnly ~= nil then data.OnlyUseFavorites = options.favoritesOnly end end return data end local function _saveConfig() if not writefile then return end pcall(function() local config = {equipped = {}, favorites = _favorites} for weapon, cosmetics in pairs(_equipped) do config.equipped[weapon] = {} for cosmeticType, cosmeticData in pairs(cosmetics) do if cosmeticData and cosmeticData.Name then config.equipped[weapon][cosmeticType] = { name = cosmeticData.Name, seed = cosmeticData.Seed, inverted = cosmeticData.Inverted } end end end writefile(UNLOCK_SAVE_FILE, HttpService:JSONEncode(config)) end) end local function _loadConfig() if not readfile or not isfile or not isfile(UNLOCK_SAVE_FILE) then return end pcall(function() local config = HttpService:JSONDecode(readfile(UNLOCK_SAVE_FILE)) if config.equipped then for weapon, cosmetics in pairs(config.equipped) do _equipped[weapon] = {} for cosmeticType, cosmeticData in pairs(cosmetics) do local cloned = _cloneCosmetic(cosmeticData.name, cosmeticType, {inverted = cosmeticData.inverted}) if cloned then cloned.Seed = cosmeticData.seed _equipped[weapon][cosmeticType] = cloned end end end end _favorites = config.favorites or {} end) end _CosmeticLibrary.OwnsCosmeticNormally = function() return true end _CosmeticLibrary.OwnsCosmeticUniversally = function() return true end _CosmeticLibrary.OwnsCosmeticForWeapon = function() return true end local _originalOwnsCosmetic = _CosmeticLibrary.OwnsCosmetic _CosmeticLibrary.OwnsCosmetic = function(self, inventory, name, weapon) if name:find("MISSING_") then return _originalOwnsCosmetic(self, inventory, name, weapon) end return true end local _originalGet = _DataController.Get _DataController.Get = function(self, key) local data = _originalGet(self, key) if key == "CosmeticInventory" then local proxy = {} if data then for k, v in pairs(data) do proxy[k] = v end end return setmetatable(proxy, {__index = function() return true end}) end if key == "FavoritedCosmetics" then local result = data and table.clone(data) or {} for weapon, favs in pairs(_favorites) do result[weapon] = result[weapon] or {} for name, isFav in pairs(favs) do result[weapon][name] = isFav end end return result end return data end local _originalGetWeaponData = _DataController.GetWeaponData _DataController.GetWeaponData = function(self, weaponName) local data = _originalGetWeaponData(self, weaponName) if not data then return nil end local merged = {} for key, value in pairs(data) do merged[key] = value end merged.Name = weaponName if _equipped[weaponName] then for cosmeticType, cosmeticData in pairs(_equipped[weaponName]) do merged[cosmeticType] = cosmeticData end end return merged end local _FighterController pcall(function() _FighterController = require(_controllers:WaitForChild("FighterController", 10)) end) if hookmetamethod then local remotes = ReplicatedStorage:FindFirstChild("Remotes") local dataRemotes = remotes and remotes:FindFirstChild("Data") local equipRemote = dataRemotes and dataRemotes:FindFirstChild("EquipCosmetic") local favoriteRemote = dataRemotes and dataRemotes:FindFirstChild("FavoriteCosmetic") local replicationRemotes = remotes and remotes:FindFirstChild("Replication") local fighterRemotes = replicationRemotes and replicationRemotes:FindFirstChild("Fighter") local useItemRemote = fighterRemotes and fighterRemotes:FindFirstChild("UseItem") if equipRemote then local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) if getnamecallmethod() ~= "FireServer" then return oldNamecall(self, ...) end local args = {...} if useItemRemote and self == useItemRemote then local objectID = args[1] if _FighterController then pcall(function() local fighter = _FighterController:GetFighter(_player) if fighter and fighter.Items then for _, item in pairs(fighter.Items) do if item:Get("ObjectID") == objectID then _lastUsedWeapon = item.Name break end end end end) end end if self == equipRemote then local weaponName, cosmeticType, cosmeticName, options = args[1], args[2], args[3], args[4] or {} if cosmeticName and cosmeticName ~= "None" and cosmeticName ~= "" then local inventory = _DataController:Get("CosmeticInventory") if inventory and rawget(inventory, cosmeticName) then return oldNamecall(self, ...) end end _equipped[weaponName] = _equipped[weaponName] or {} if not cosmeticName or cosmeticName == "None" or cosmeticName == "" then _equipped[weaponName][cosmeticType] = nil if not next(_equipped[weaponName]) then _equipped[weaponName] = nil end else local cloned = _cloneCosmetic(cosmeticName, cosmeticType, {inverted = options.IsInverted, favoritesOnly = options.OnlyUseFavorites}) if cloned then _equipped[weaponName][cosmeticType] = cloned end end task.defer(function() pcall(function() _DataController.CurrentData:Replicate("WeaponInventory") end) task.wait(0.2) _saveConfig() end) return end if self == favoriteRemote then _favorites[args[1]] = _favorites[args[1]] or {} _favorites[args[1]][args[2]] = args[3] or nil _saveConfig() task.spawn(function() pcall(function() _DataController.CurrentData:Replicate("FavoritedCosmetics") end) end) return end return oldNamecall(self, ...) end) end end local _ClientItem pcall(function() _ClientItem = require(_player.PlayerScripts.Modules.ClientReplicatedClasses.ClientFighter.ClientItem) end) if _ClientItem and _ClientItem._CreateViewModel then local _originalCreateViewModel = _ClientItem._CreateViewModel _ClientItem._CreateViewModel = function(self, viewmodelRef) local weaponName = self.Name local weaponPlayer = self.ClientFighter and self.ClientFighter.Player _constructingWeapon = (weaponPlayer == _player) and weaponName or nil if weaponPlayer == _player and _equipped[weaponName] and _equipped[weaponName].Skin and viewmodelRef then local dataKey, skinKey, nameKey = self:ToEnum("Data"), self:ToEnum("Skin"), self:ToEnum("Name") if viewmodelRef[dataKey] then viewmodelRef[dataKey][skinKey] = _equipped[weaponName].Skin viewmodelRef[dataKey][nameKey] = _equipped[weaponName].Skin.Name elseif viewmodelRef.Data then viewmodelRef.Data.Skin = _equipped[weaponName].Skin viewmodelRef.Data.Name = _equipped[weaponName].Skin.Name end end local result = _originalCreateViewModel(self, viewmodelRef) _constructingWeapon = nil return result end end local _viewModelModule = _player.PlayerScripts.Modules.ClientReplicatedClasses.ClientFighter.ClientItem:FindFirstChild("ClientViewModel") if _viewModelModule then local _ClientViewModel = require(_viewModelModule) if _ClientViewModel.GetWrap then local _originalGetWrap = _ClientViewModel.GetWrap _ClientViewModel.GetWrap = function(self) local weaponName = self.ClientItem and self.ClientItem.Name local weaponPlayer = self.ClientItem and self.ClientItem.ClientFighter and self.ClientItem.ClientFighter.Player if weaponName and weaponPlayer == _player and _equipped[weaponName] and _equipped[weaponName].Wrap then return _equipped[weaponName].Wrap end return _originalGetWrap(self) end end local _originalNew = _ClientViewModel.new _ClientViewModel.new = function(replicatedData, clientItem) local weaponPlayer = clientItem.ClientFighter and clientItem.ClientFighter.Player local weaponName = _constructingWeapon or clientItem.Name if weaponPlayer == _player and _equipped[weaponName] then local ReplicatedClass = require(ReplicatedStorage.Modules.ReplicatedClass) local dataKey = ReplicatedClass:ToEnum("Data") replicatedData[dataKey] = replicatedData[dataKey] or {} local cosmetics = _equipped[weaponName] if cosmetics.Skin then replicatedData[dataKey][ReplicatedClass:ToEnum("Skin")] = cosmetics.Skin end if cosmetics.Wrap then replicatedData[dataKey][ReplicatedClass:ToEnum("Wrap")] = cosmetics.Wrap end if cosmetics.Charm then replicatedData[dataKey][ReplicatedClass:ToEnum("Charm")] = cosmetics.Charm end end local result = _originalNew(replicatedData, clientItem) if weaponPlayer == _player and _equipped[weaponName] and _equipped[weaponName].Wrap and result._UpdateWrap then result:_UpdateWrap() task.delay(0.1, function() if not result._destroyed then result:_UpdateWrap() end end) end return result end end if _ItemLibrary and _ItemLibrary.GetViewModelImageFromWeaponData then local _originalGetViewModelImage = _ItemLibrary.GetViewModelImageFromWeaponData _ItemLibrary.GetViewModelImageFromWeaponData = function(self, weaponData, highRes) if not weaponData then return _originalGetViewModelImage(self, weaponData, highRes) end local weaponName = weaponData.Name local shouldShowSkin = (weaponData.Skin and _equipped[weaponName] and weaponData.Skin == _equipped[weaponName].Skin) or (_viewingProfile == _player and _equipped[weaponName] and _equipped[weaponName].Skin) if shouldShowSkin and _equipped[weaponName] and _equipped[weaponName].Skin then local skinInfo = self.ViewModels[_equipped[weaponName].Skin.Name] if skinInfo then return skinInfo[highRes and "ImageHighResolution" or "Image"] or skinInfo.Image end end return _originalGetViewModelImage(self, weaponData, highRes) end end pcall(function() local ViewProfile = require(_player.PlayerScripts.Modules.Pages.ViewProfile) if ViewProfile and ViewProfile.Fetch then local _originalFetch = ViewProfile.Fetch ViewProfile.Fetch = function(self, targetPlayer) _viewingProfile = targetPlayer return _originalFetch(self, targetPlayer) end end end) local _ClientEntity pcall(function() _ClientEntity = require(_player.PlayerScripts.Modules.ClientReplicatedClasses.ClientEntity) end) if _ClientEntity and _ClientEntity.ReplicateFromServer then local _originalReplicateFromServer = _ClientEntity.ReplicateFromServer _ClientEntity.ReplicateFromServer = function(self, action, ...) if action == "FinisherEffect" then local args = {...} local killerName = args[3] local decodedKiller = killerName if type(killerName) == "userdata" and _EnumLibrary and _EnumLibrary.FromEnum then local ok, decoded = pcall(_EnumLibrary.FromEnum, _EnumLibrary, killerName) if ok and decoded then decodedKiller = decoded end end local isOurKill = tostring(decodedKiller) == _player.Name or tostring(decodedKiller):lower() == _player.Name:lower() if isOurKill and _lastUsedWeapon and _equipped[_lastUsedWeapon] and _equipped[_lastUsedWeapon].Finisher then local finisherData = _equipped[_lastUsedWeapon].Finisher local finisherEnum = finisherData.Enum if not finisherEnum and _EnumLibrary then local ok, result = pcall(_EnumLibrary.ToEnum, _EnumLibrary, finisherData.Name) if ok and result then finisherEnum = result end end if finisherEnum then args[1] = finisherEnum return _originalReplicateFromServer(self, action, unpack(args)) end end end return _originalReplicateFromServer(self, action, ...) end end _loadConfig() end local _selectiveUnlockApplied = false local _selectiveUnlockedItems = {} local _selectiveEquipped = {} local _selectiveFavorites = {} local _selectiveLastUsedWeapon = nil local function _saveSelectiveConfig() if not writefile then return end pcall(function() local config = {equipped = {}, favorites = _selectiveFavorites, unlocked = {}} for name, _ in pairs(_selectiveUnlockedItems) do config.unlocked[name] = true end for weapon, cosmetics in pairs(_selectiveEquipped) do config.equipped[weapon] = {} for cosmeticType, cosmeticData in pairs(cosmetics) do if cosmeticData and cosmeticData.Name then config.equipped[weapon][cosmeticType] = { name = cosmeticData.Name, seed = cosmeticData.Seed, inverted = cosmeticData.Inverted } end end end writefile(SELECTIVE_UNLOCK_FILE, HttpService:JSONEncode(config)) end) end local function _loadSelectiveConfig() if not readfile or not isfile or not isfile(SELECTIVE_UNLOCK_FILE) then return end pcall(function() local _CosmeticLibrary = require(ReplicatedStorage.Modules:WaitForChild("CosmeticLibrary", 10)) local _EnumLibrary = require(ReplicatedStorage.Modules:WaitForChild("EnumLibrary", 10)) local config = HttpService:JSONDecode(readfile(SELECTIVE_UNLOCK_FILE)) if config.unlocked then for name, _ in pairs(config.unlocked) do _selectiveUnlockedItems[name] = true end end if config.equipped then for weapon, cosmetics in pairs(config.equipped) do _selectiveEquipped[weapon] = {} for cosmeticType, cosmeticData in pairs(cosmetics) do local base = _CosmeticLibrary.Cosmetics[cosmeticData.name] if base then local data = {} for key, value in pairs(base) do data[key] = value end data.Name = cosmeticData.name data.Type = data.Type or cosmeticType data.Seed = cosmeticData.seed or math.random(1, 1000000) if cosmeticData.inverted ~= nil then data.Inverted = cosmeticData.inverted end if _EnumLibrary then local success, enumId = pcall(_EnumLibrary.ToEnum, _EnumLibrary, cosmeticData.name) if success and enumId then data.Enum = enumId data.ObjectID = data.ObjectID or enumId end end _selectiveEquipped[weapon][cosmeticType] = data end end end end _selectiveFavorites = config.favorites or {} end) end local function unlockSelectiveCosmetics(selectedSkins, selectedWraps, selectedCharms, selectedFinishers) local _player = plr local _playerScripts = _player:WaitForChild("PlayerScripts") local _controllers = _playerScripts:WaitForChild("Controllers") local _EnumLibrary = require(ReplicatedStorage.Modules:WaitForChild("EnumLibrary", 10)) if _EnumLibrary then _EnumLibrary:WaitForEnumBuilder() end local _CosmeticLibrary = require(ReplicatedStorage.Modules:WaitForChild("CosmeticLibrary", 10)) local _ItemLibrary = require(ReplicatedStorage.Modules:WaitForChild("ItemLibrary", 10)) local _DataController = require(_controllers:WaitForChild("PlayerDataController", 10)) local unlockSet = {} if selectedSkins then for _, name in ipairs(selectedSkins) do unlockSet[name] = true end end if selectedWraps then for _, name in ipairs(selectedWraps) do unlockSet[name] = true end end if selectedCharms then for _, name in ipairs(selectedCharms) do unlockSet[name] = true end end if selectedFinishers then for _, name in ipairs(selectedFinishers) do unlockSet[name] = true end end for name, _ in pairs(unlockSet) do _selectiveUnlockedItems[name] = true end local function _selCloneCosmetic(name, cosmeticType, options) local base = _CosmeticLibrary.Cosmetics[name] if not base then return nil end local data = {} for key, value in pairs(base) do data[key] = value end data.Name = name data.Type = data.Type or cosmeticType data.Seed = data.Seed or math.random(1, 1000000) if _EnumLibrary then local success, enumId = pcall(_EnumLibrary.ToEnum, _EnumLibrary, name) if success and enumId then data.Enum = enumId data.ObjectID = data.ObjectID or enumId end end if options then if options.inverted ~= nil then data.Inverted = options.inverted end if options.favoritesOnly ~= nil then data.OnlyUseFavorites = options.favoritesOnly end end return data end if not _selectiveUnlockApplied then _selectiveUnlockApplied = true _loadSelectiveConfig() local _origOwnsCosmetic = _CosmeticLibrary.OwnsCosmetic _CosmeticLibrary.OwnsCosmetic = function(self, inventory, name, weapon) if _selectiveUnlockedItems[name] then return true end return _origOwnsCosmetic(self, inventory, name, weapon) end if _CosmeticLibrary.OwnsCosmeticNormally then local _origNormally = _CosmeticLibrary.OwnsCosmeticNormally _CosmeticLibrary.OwnsCosmeticNormally = function(self, inventory, name, weapon) if _selectiveUnlockedItems[name] then return true end if type(_origNormally) == "function" then return _origNormally(self, inventory, name, weapon) end return false end end if _CosmeticLibrary.OwnsCosmeticUniversally then local _origUniversally = _CosmeticLibrary.OwnsCosmeticUniversally _CosmeticLibrary.OwnsCosmeticUniversally = function(self, inventory, name) if _selectiveUnlockedItems[name] then return true end if type(_origUniversally) == "function" then return _origUniversally(self, inventory, name) end return false end end if _CosmeticLibrary.OwnsCosmeticForWeapon then local _origForWeapon = _CosmeticLibrary.OwnsCosmeticForWeapon _CosmeticLibrary.OwnsCosmeticForWeapon = function(self, inventory, name, weapon) if _selectiveUnlockedItems[name] then return true end if type(_origForWeapon) == "function" then return _origForWeapon(self, inventory, name, weapon) end return false end end local _origGet = _DataController.Get _DataController.Get = function(self, key) local data = _origGet(self, key) if key == "CosmeticInventory" then local proxy = {} if data then for k, v in pairs(data) do proxy[k] = v end end return setmetatable(proxy, { __index = function(_, k) if _selectiveUnlockedItems[k] then return true end return nil end }) end if key == "FavoritedCosmetics" then local result = data and table.clone(data) or {} for weapon, favs in pairs(_selectiveFavorites) do result[weapon] = result[weapon] or {} for name, isFav in pairs(favs) do result[weapon][name] = isFav end end return result end return data end local _origGetWeaponData = _DataController.GetWeaponData _DataController.GetWeaponData = function(self, weaponName) local data = _origGetWeaponData(self, weaponName) if not data then return nil end local merged = {} for key, value in pairs(data) do merged[key] = value end merged.Name = weaponName if _selectiveEquipped[weaponName] then for cosmeticType, cosmeticData in pairs(_selectiveEquipped[weaponName]) do merged[cosmeticType] = cosmeticData end end return merged end local _FighterController pcall(function() _FighterController = require(_controllers:WaitForChild("FighterController", 10)) end) if hookmetamethod then local remotes = ReplicatedStorage:FindFirstChild("Remotes") local dataRemotes = remotes and remotes:FindFirstChild("Data") local equipRemote = dataRemotes and dataRemotes:FindFirstChild("EquipCosmetic") local favoriteRemote = dataRemotes and dataRemotes:FindFirstChild("FavoriteCosmetic") local replicationRemotes = remotes and remotes:FindFirstChild("Replication") local fighterRemotes = replicationRemotes and replicationRemotes:FindFirstChild("Fighter") local useItemRemote = fighterRemotes and fighterRemotes:FindFirstChild("UseItem") if equipRemote then local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) if getnamecallmethod() ~= "FireServer" then return oldNamecall(self, ...) end local args = {...} if useItemRemote and self == useItemRemote then local objectID = args[1] if _FighterController then pcall(function() local fighter = _FighterController:GetFighter(_player) if fighter and fighter.Items then for _, item in pairs(fighter.Items) do if item:Get("ObjectID") == objectID then _selectiveLastUsedWeapon = item.Name break end end end end) end end if self == equipRemote then local weaponName, cosmeticType, cosmeticName, options = args[1], args[2], args[3], args[4] or {} if cosmeticName and cosmeticName ~= "None" and cosmeticName ~= "" then if not _selectiveUnlockedItems[cosmeticName] then return oldNamecall(self, ...) end local inventory = _origGet(_DataController, "CosmeticInventory") if inventory and type(inventory) == "table" and rawget(inventory, cosmeticName) then return oldNamecall(self, ...) end end _selectiveEquipped[weaponName] = _selectiveEquipped[weaponName] or {} if not cosmeticName or cosmeticName == "None" or cosmeticName == "" then _selectiveEquipped[weaponName][cosmeticType] = nil if not next(_selectiveEquipped[weaponName]) then _selectiveEquipped[weaponName] = nil end else local cloned = _selCloneCosmetic(cosmeticName, cosmeticType, {inverted = options.IsInverted, favoritesOnly = options.OnlyUseFavorites}) if cloned then _selectiveEquipped[weaponName][cosmeticType] = cloned end end task.defer(function() pcall(function() _DataController.CurrentData:Replicate("WeaponInventory") end) task.wait(0.2) _saveSelectiveConfig() end) return end if self == favoriteRemote then local cosmeticName = args[2] if cosmeticName and _selectiveUnlockedItems[cosmeticName] then _selectiveFavorites[args[1]] = _selectiveFavorites[args[1]] or {} _selectiveFavorites[args[1]][cosmeticName] = args[3] or nil _saveSelectiveConfig() task.spawn(function() pcall(function() _DataController.CurrentData:Replicate("FavoritedCosmetics") end) end) return end end return oldNamecall(self, ...) end) end end local _selConstructingWeapon = nil local _ClientItem pcall(function() _ClientItem = require(_player.PlayerScripts.Modules.ClientReplicatedClasses.ClientFighter.ClientItem) end) if _ClientItem and _ClientItem._CreateViewModel then local _originalCreateViewModel = _ClientItem._CreateViewModel _ClientItem._CreateViewModel = function(self, viewmodelRef) local weaponName = self.Name local weaponPlayer = self.ClientFighter and self.ClientFighter.Player _selConstructingWeapon = (weaponPlayer == _player) and weaponName or nil if weaponPlayer == _player and _selectiveEquipped[weaponName] and _selectiveEquipped[weaponName].Skin and viewmodelRef then pcall(function() local dataKey, skinKey, nameKey = self:ToEnum("Data"), self:ToEnum("Skin"), self:ToEnum("Name") if viewmodelRef[dataKey] then viewmodelRef[dataKey][skinKey] = _selectiveEquipped[weaponName].Skin viewmodelRef[dataKey][nameKey] = _selectiveEquipped[weaponName].Skin.Name elseif viewmodelRef.Data then viewmodelRef.Data.Skin = _selectiveEquipped[weaponName].Skin viewmodelRef.Data.Name = _selectiveEquipped[weaponName].Skin.Name end end) end local result = _originalCreateViewModel(self, viewmodelRef) _selConstructingWeapon = nil return result end end local _viewModelModule = _player.PlayerScripts.Modules.ClientReplicatedClasses.ClientFighter.ClientItem:FindFirstChild("ClientViewModel") if _viewModelModule then local _ClientViewModel = require(_viewModelModule) if _ClientViewModel.GetWrap then local _originalGetWrap = _ClientViewModel.GetWrap _ClientViewModel.GetWrap = function(self) local weaponName = self.ClientItem and self.ClientItem.Name local weaponPlayer = self.ClientItem and self.ClientItem.ClientFighter and self.ClientItem.ClientFighter.Player if weaponName and weaponPlayer == _player and _selectiveEquipped[weaponName] and _selectiveEquipped[weaponName].Wrap then return _selectiveEquipped[weaponName].Wrap end return _originalGetWrap(self) end end local _originalNew = _ClientViewModel.new _ClientViewModel.new = function(replicatedData, clientItem) local weaponPlayer = clientItem.ClientFighter and clientItem.ClientFighter.Player local weaponName = _selConstructingWeapon or clientItem.Name if weaponPlayer == _player and _selectiveEquipped[weaponName] then pcall(function() local ReplicatedClass = require(ReplicatedStorage.Modules.ReplicatedClass) local dataKey = ReplicatedClass:ToEnum("Data") replicatedData[dataKey] = replicatedData[dataKey] or {} local cosmetics = _selectiveEquipped[weaponName] if cosmetics.Skin then replicatedData[dataKey][ReplicatedClass:ToEnum("Skin")] = cosmetics.Skin end if cosmetics.Wrap then replicatedData[dataKey][ReplicatedClass:ToEnum("Wrap")] = cosmetics.Wrap end if cosmetics.Charm then replicatedData[dataKey][ReplicatedClass:ToEnum("Charm")] = cosmetics.Charm end end) end local result = _originalNew(replicatedData, clientItem) if weaponPlayer == _player and _selectiveEquipped[weaponName] and _selectiveEquipped[weaponName].Wrap and result._UpdateWrap then result:_UpdateWrap() task.delay(0.1, function() if not result._destroyed then result:_UpdateWrap() end end) end return result end end if _ItemLibrary and _ItemLibrary.GetViewModelImageFromWeaponData then local _originalGetViewModelImage = _ItemLibrary.GetViewModelImageFromWeaponData _ItemLibrary.GetViewModelImageFromWeaponData = function(self, weaponData, highRes) if not weaponData then return _originalGetViewModelImage(self, weaponData, highRes) end local weaponName = weaponData.Name if _selectiveEquipped[weaponName] and _selectiveEquipped[weaponName].Skin then local skinInfo = self.ViewModels[_selectiveEquipped[weaponName].Skin.Name] if skinInfo then return skinInfo[highRes and "ImageHighResolution" or "Image"] or skinInfo.Image end end return _originalGetViewModelImage(self, weaponData, highRes) end end local _ClientEntity pcall(function() _ClientEntity = require(_player.PlayerScripts.Modules.ClientReplicatedClasses.ClientEntity) end) if _ClientEntity and _ClientEntity.ReplicateFromServer then local _originalReplicateFromServer = _ClientEntity.ReplicateFromServer _ClientEntity.ReplicateFromServer = function(self, action, ...) if action == "FinisherEffect" then local args = {...} local killerName = args[3] local decodedKiller = killerName if type(killerName) == "userdata" and _EnumLibrary and _EnumLibrary.FromEnum then local ok, decoded = pcall(_EnumLibrary.FromEnum, _EnumLibrary, killerName) if ok and decoded then decodedKiller = decoded end end local isOurKill = tostring(decodedKiller) == _player.Name or tostring(decodedKiller):lower() == _player.Name:lower() if isOurKill and _selectiveLastUsedWeapon and _selectiveEquipped[_selectiveLastUsedWeapon] and _selectiveEquipped[_selectiveLastUsedWeapon].Finisher then local finisherData = _selectiveEquipped[_selectiveLastUsedWeapon].Finisher local finisherEnum = finisherData.Enum if not finisherEnum and _EnumLibrary then local ok2, result = pcall(_EnumLibrary.ToEnum, _EnumLibrary, finisherData.Name) if ok2 and result then finisherEnum = result end end if finisherEnum then args[1] = finisherEnum return _originalReplicateFromServer(self, action, unpack(args)) end end end return _originalReplicateFromServer(self, action, ...) end end end _saveSelectiveConfig() pcall(function() _DataController.CurrentData:Replicate("CosmeticInventory") end) pcall(function() _DataController.CurrentData:Replicate("WeaponInventory") end) return unlockSet end RunService.Heartbeat:Connect(injectActiveWeapon) PlayerData:GetDataChangedSignal("WeaponInventory"):Connect(function() for weaponName, _ in pairs(cosmeticConfig) do if weaponName ~= "_global" then if findWeaponEntry(weaponName) then injectWeaponData(weaponName) end end end end) for weaponName, _ in pairs(cosmeticConfig) do if weaponName ~= "_global" then if findWeaponEntry(weaponName) then injectWeaponData(weaponName) end end end local function getEquippedSkin(weapon) if cosmeticConfig[weapon] and cosmeticConfig[weapon].Skin then return cosmeticConfig[weapon].Skin.Name or "Default" end local weaponInventory = PlayerData:Get("WeaponInventory") if weaponInventory then for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == weapon then if weaponEntry.Skin and type(weaponEntry.Skin) == "table" and weaponEntry.Skin.Name then return weaponEntry.Skin.Name elseif weaponEntry.Skin and type(weaponEntry.Skin) == "string" and weaponEntry.Skin ~= "" then return weaponEntry.Skin end break end end end return "Default" end local function getEquippedWrap(weapon) if cosmeticConfig[weapon] and cosmeticConfig[weapon].Wrap then return cosmeticConfig[weapon].Wrap.Name or "None" end local weaponInventory = PlayerData:Get("WeaponInventory") if weaponInventory then for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == weapon then if weaponEntry.Wrap and type(weaponEntry.Wrap) == "table" and weaponEntry.Wrap.Name then return weaponEntry.Wrap.Name elseif weaponEntry.Wrap and type(weaponEntry.Wrap) == "string" and weaponEntry.Wrap ~= "" then return weaponEntry.Wrap end break end end end return "None" end local function getEquippedCharm(weapon) if cosmeticConfig[weapon] and cosmeticConfig[weapon].Charm then return cosmeticConfig[weapon].Charm.Name or "None" end local weaponInventory = PlayerData:Get("WeaponInventory") if weaponInventory then for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == weapon then if weaponEntry.Charm and type(weaponEntry.Charm) == "table" and weaponEntry.Charm.Name then return weaponEntry.Charm.Name elseif weaponEntry.Charm and type(weaponEntry.Charm) == "string" and weaponEntry.Charm ~= "" then return weaponEntry.Charm end break end end end return "None" end local function getEquippedFinisher(weapon) if cosmeticConfig[weapon] and cosmeticConfig[weapon].Finisher then return cosmeticConfig[weapon].Finisher.Name or "None" end local weaponInventory = PlayerData:Get("WeaponInventory") if weaponInventory then for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == weapon then if weaponEntry.Finisher and type(weaponEntry.Finisher) == "table" and weaponEntry.Finisher.Name then return weaponEntry.Finisher.Name elseif weaponEntry.Finisher and type(weaponEntry.Finisher) == "string" and weaponEntry.Finisher ~= "" then return weaponEntry.Finisher end break end end end return "None" end local sortedWeapons = {} for weapon in pairs(SkinLists) do table.insert(sortedWeapons, weapon) end table.sort(sortedWeapons) local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/" local Library = loadstring(game:HttpGet(repo .. "Library.lua"))() local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))() local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))() local Options = Library.Options local Toggles = Library.Toggles Library.ShowToggleFrameInKeybinds = true local Window = Library:CreateWindow({ Title = "Yorijin", Footer = "Cosmetic Changer", Center = true, AutoShow = not _G.GlobalData.SilentLoad, ShowCustomCursor = true, NotifySide = "Right", }) local Tabs = { Weapons = Window:AddTab("Weapons", "swords"), Unlock = Window:AddTab("Unlock", "unlock"), Spoofer = Window:AddTab("Spoofer", "eye"), Settings = Window:AddTab("Settings", "settings"), ["UI Settings"] = Window:AddTab("UI Settings", "palette"), } local WeaponSelectGroup = Tabs.Weapons:AddLeftGroupbox("Weapon Selection") WeaponSelectGroup:AddDropdown("WeaponSelect", { Text = "Select Weapon", Values = sortedWeapons, Default = nil, Multi = false, }) local PreviewGroup = Tabs.Weapons:AddLeftGroupbox("Preview") local previewImage = nil local previewLabel = nil local previewSubLabel = nil do local container = PreviewGroup.Container local previewHolder = Instance.new("Frame") previewHolder.Name = "PreviewHolder" previewHolder.Size = UDim2.new(1, 0, 0, 160) previewHolder.BackgroundColor3 = Color3.fromRGB(20, 20, 20) previewHolder.BorderSizePixel = 0 previewHolder.LayoutOrder = 1 previewHolder.Parent = container Instance.new("UICorner", previewHolder).CornerRadius = UDim.new(0, 8) previewImage = Instance.new("ImageLabel") previewImage.Name = "PreviewImage" previewImage.Size = UDim2.new(1, -16, 1, -50) previewImage.Position = UDim2.new(0, 8, 0, 8) previewImage.BackgroundTransparency = 1 previewImage.Image = "" previewImage.ScaleType = Enum.ScaleType.Fit previewImage.Parent = previewHolder previewLabel = Instance.new("TextLabel") previewLabel.Name = "PreviewName" previewLabel.Size = UDim2.new(1, -16, 0, 20) previewLabel.Position = UDim2.new(0, 8, 1, -38) previewLabel.BackgroundTransparency = 1 previewLabel.Text = "No selection" previewLabel.TextColor3 = Color3.fromRGB(255, 255, 255) previewLabel.Font = Enum.Font.GothamBold previewLabel.TextSize = 12 previewLabel.TextXAlignment = Enum.TextXAlignment.Left previewLabel.TextTruncate = Enum.TextTruncate.AtEnd previewLabel.Parent = previewHolder previewSubLabel = Instance.new("TextLabel") previewSubLabel.Name = "PreviewSub" previewSubLabel.Size = UDim2.new(1, -16, 0, 16) previewSubLabel.Position = UDim2.new(0, 8, 1, -18) previewSubLabel.BackgroundTransparency = 1 previewSubLabel.Text = "" previewSubLabel.TextColor3 = Color3.fromRGB(120, 120, 120) previewSubLabel.Font = Enum.Font.GothamMedium previewSubLabel.TextSize = 10 previewSubLabel.TextXAlignment = Enum.TextXAlignment.Left previewSubLabel.TextTruncate = Enum.TextTruncate.AtEnd previewSubLabel.Parent = previewHolder end local function updatePreview(itemName, itemType) if not itemName or itemName == "None" or itemName == "Default" then previewImage.Image = "" previewLabel.Text = itemName or "No selection" previewSubLabel.Text = itemType or "" return end local img = getSkinImage(itemName) previewImage.Image = img previewLabel.Text = itemName local rarity = "" pcall(function() local cosData = CosmeticLibrary.Cosmetics[itemName] if cosData and cosData.Rarity then rarity = " • " .. cosData.Rarity end end) previewSubLabel.Text = (itemType or "") .. rarity end local SkinGroup = Tabs.Weapons:AddRightGroupbox("Skin") local WrapGroup = Tabs.Weapons:AddRightGroupbox("Wrap") local CharmGroup = Tabs.Weapons:AddRightGroupbox("Charm") local FinisherGroup = Tabs.Weapons:AddRightGroupbox("Finisher") SkinGroup:AddDropdown("SkinSelect", { Text = "Select Skin", Values = {"Default"}, Default = "Default", Multi = false, }) WrapGroup:AddDropdown("WrapSelect", { Text = "Select Wrap", Values = WrapList, Default = "None", Multi = false, }) CharmGroup:AddDropdown("CharmSelect", { Text = "Select Charm", Values = CharmList, Default = "None", Multi = false, }) FinisherGroup:AddDropdown("FinisherSelect", { Text = "Select Finisher", Values = FinisherList, Default = "None", Multi = false, }) local selectedWeapon = nil local ignoreCallbacks = false local lastPreviewType = "Weapon" local function refreshDropdownsForWeapon(weapon) if not weapon then return end selectedWeapon = weapon ignoreCallbacks = true local skins = SkinLists[weapon] or {"Default"} Options.SkinSelect:SetValues(skins) Options.SkinSelect:SetValue(getEquippedSkin(weapon)) Options.WrapSelect:SetValue(getEquippedWrap(weapon)) Options.CharmSelect:SetValue(getEquippedCharm(weapon)) Options.FinisherSelect:SetValue(getEquippedFinisher(weapon)) updatePreview(weapon, "Weapon") lastPreviewType = "Weapon" ignoreCallbacks = false end Options.WeaponSelect:OnChanged(function() local val = Options.WeaponSelect.Value if val and SkinLists[val] then refreshDropdownsForWeapon(val) end end) Options.SkinSelect:OnChanged(function() if ignoreCallbacks then return end if not selectedWeapon then return end local val = Options.SkinSelect.Value if val then equipCosmetic(selectedWeapon, "Skin", val) updatePreview(val, "Skin") lastPreviewType = "Skin" end end) Options.WrapSelect:OnChanged(function() if ignoreCallbacks then return end if not selectedWeapon then return end local val = Options.WrapSelect.Value if val then equipCosmetic(selectedWeapon, "Wrap", val) updatePreview(val, "Wrap") lastPreviewType = "Wrap" end end) Options.CharmSelect:OnChanged(function() if ignoreCallbacks then return end if not selectedWeapon then return end local val = Options.CharmSelect.Value if val then equipCosmetic(selectedWeapon, "Charm", val) updatePreview(val, "Charm") lastPreviewType = "Charm" end end) Options.FinisherSelect:OnChanged(function() if ignoreCallbacks then return end if not selectedWeapon then return end local val = Options.FinisherSelect.Value if val then equipCosmetic(selectedWeapon, "Finisher", val) updatePreview(val, "Finisher") lastPreviewType = "Finisher" end end) local WrapAllGroup = Tabs.Weapons:AddLeftGroupbox("Batch Actions") WrapAllGroup:AddButton({ Text = "Apply Current Wrap to All Weapons", Func = function() if not selectedWeapon then Library:Notify("Select a weapon first", 2) return end local currentWrap = getEquippedWrap(selectedWeapon) if currentWrap == "None" then Library:Notify("Select a wrap on the current weapon first", 2) return end applyWrapToAll(currentWrap) Library:Notify("Wrap '" .. currentWrap .. "' applied to all weapons!", 3) end, }) WrapAllGroup:AddButton({ Text = "Remove All Wraps", Func = function() applyWrapToAll("None") if selectedWeapon then ignoreCallbacks = true Options.WrapSelect:SetValue("None") ignoreCallbacks = false end Library:Notify("All wraps removed!", 2) end, }) WrapAllGroup:AddButton({ Text = "Reset Current Weapon", Func = function() if not selectedWeapon then Library:Notify("Select a weapon first", 2) return end cosmeticConfig[selectedWeapon] = nil if findWeaponEntry(selectedWeapon) then local weaponInventory = PlayerData:Get("WeaponInventory") if weaponInventory then for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == selectedWeapon then weaponEntry.Skin = nil weaponEntry.Wrap = nil weaponEntry.Charm = nil weaponEntry.Finisher = nil break end end end end injectActiveWeapon() saveConfig() pcall(function() PlayerData:Replicate("WeaponInventory") end) refreshDropdownsForWeapon(selectedWeapon) Library:Notify(selectedWeapon .. " reset to default!", 2) end, }) WrapAllGroup:AddButton({ Text = "Reset All Weapons", Func = function() local weaponInventory = PlayerData:Get("WeaponInventory") for weaponName, _ in pairs(cosmeticConfig) do if weaponName ~= "_global" and weaponInventory then for _, weaponEntry in pairs(weaponInventory) do if weaponEntry.Name == weaponName then weaponEntry.Skin = nil weaponEntry.Wrap = nil weaponEntry.Charm = nil weaponEntry.Finisher = nil break end end end end local globalBackup = cosmeticConfig._global cosmeticConfig = {} if globalBackup then cosmeticConfig._global = globalBackup end injectActiveWeapon() saveConfig() pcall(function() PlayerData:Replicate("WeaponInventory") end) if selectedWeapon then refreshDropdownsForWeapon(selectedWeapon) end Library:Notify("All weapons reset to default!", 2) end, }) local UnlockAllGroup = Tabs.Unlock:AddLeftGroupbox("Unlock All") UnlockAllGroup:AddButton({ Text = "Unlock All Cosmetics", Func = function() task.spawn(function() unlockAllCosmetics() Library:Notify("All cosmetics unlocked! You can now equip anything from the in-game menu.", 4) end) end, }) UnlockAllGroup:AddLabel("Unlocks every skin, wrap, charm & finisher at once.") local UnlockSkinsGroup = Tabs.Unlock:AddRightGroupbox("Unlock Specific Skins") UnlockSkinsGroup:AddDropdown("SelectiveUnlockSkins", { Text = "Select Skins", Values = AllSkinNames, Default = {}, Multi = true, }) UnlockSkinsGroup:AddButton({ Text = "Unlock Selected Skins", Func = function() local selected = Options.SelectiveUnlockSkins.Value local list = {} for name, enabled in pairs(selected) do if enabled then table.insert(list, name) end end if #list == 0 then Library:Notify("No skins selected", 2) return end unlockSelectiveCosmetics(list, nil, nil, nil) Library:Notify("Unlocked " .. #list .. " skin(s)!", 3) end, }) local UnlockWrapsGroup = Tabs.Unlock:AddRightGroupbox("Unlock Specific Wraps") local wrapUnlockValues = {} for _, w in ipairs(WrapList) do if w ~= "None" then table.insert(wrapUnlockValues, w) end end UnlockWrapsGroup:AddDropdown("SelectiveUnlockWraps", { Text = "Select Wraps", Values = wrapUnlockValues, Default = {}, Multi = true, }) UnlockWrapsGroup:AddButton({ Text = "Unlock Selected Wraps", Func = function() local selected = Options.SelectiveUnlockWraps.Value local list = {} for name, enabled in pairs(selected) do if enabled then table.insert(list, name) end end if #list == 0 then Library:Notify("No wraps selected", 2) return end unlockSelectiveCosmetics(nil, list, nil, nil) Library:Notify("Unlocked " .. #list .. " wrap(s)!", 3) end, }) local UnlockCharmsGroup = Tabs.Unlock:AddLeftGroupbox("Unlock Specific Charms") local charmUnlockValues = {} for _, c in ipairs(CharmList) do if c ~= "None" then table.insert(charmUnlockValues, c) end end UnlockCharmsGroup:AddDropdown("SelectiveUnlockCharms", { Text = "Select Charms", Values = charmUnlockValues, Default = {}, Multi = true, }) UnlockCharmsGroup:AddButton({ Text = "Unlock Selected Charms", Func = function() local selected = Options.SelectiveUnlockCharms.Value local list = {} for name, enabled in pairs(selected) do if enabled then table.insert(list, name) end end if #list == 0 then Library:Notify("No charms selected", 2) return end unlockSelectiveCosmetics(nil, nil, list, nil) Library:Notify("Unlocked " .. #list .. " charm(s)!", 3) end, }) local UnlockFinishersGroup = Tabs.Unlock:AddLeftGroupbox("Unlock Specific Finishers") local finisherUnlockValues = {} for _, f in ipairs(FinisherList) do if f ~= "None" and f ~= "Ragdoll" then table.insert(finisherUnlockValues, f) end end UnlockFinishersGroup:AddDropdown("SelectiveUnlockFinishers", { Text = "Select Finishers", Values = finisherUnlockValues, Default = {}, Multi = true, }) UnlockFinishersGroup:AddButton({ Text = "Unlock Selected Finishers", Func = function() local selected = Options.SelectiveUnlockFinishers.Value local list = {} for name, enabled in pairs(selected) do if enabled then table.insert(list, name) end end if #list == 0 then Library:Notify("No finishers selected", 2) return end unlockSelectiveCosmetics(nil, nil, nil, list) Library:Notify("Unlocked " .. #list .. " finisher(s)!", 3) end, }) do local cloneref = cloneref or function(o) return o end local clonefunction = clonefunction or clonefunc or function(f) return f end local hookfunction = hookfunction or replaceclosure or detour_function local hookmetamethod = hookmetamethod local newcclosure = newcclosure local checkcaller = checkcaller local getconnections = getconnections local getnamecallmethod = getnamecallmethod local iscclosure = iscclosure local getinfo = getinfo or debug.getinfo local Ps = cloneref(game:GetService("Players")) local Sg = cloneref(game:GetService("StarterGui")) local Cg = cloneref(game:GetService("CoreGui")) local Tcs = cloneref(game:GetService("TextChatService")) local LP = Ps.LocalPlayer local RealDisplayName = LP.DisplayName local RealName = LP.Name local RealUserId = LP.UserId local SPOOFED_DISPLAY_NAME = RealDisplayName local SPOOFED_USERNAME = RealName local SPOOFED_USERID = nil local spooferActive = false local oldKick oldKick = hookmetamethod(game, "__namecall", newcclosure(function(self, ...) local method = getnamecallmethod() if method == "Kick" and self == LP then return end if not checkcaller() and spooferActive then if self == LP and method == "GetFullName" then return "Players." .. SPOOFED_USERNAME end end return oldKick(self, ...) end)) local oldIndex oldIndex = hookmetamethod(game, "__index", newcclosure(function(self, key) if not checkcaller() and spooferActive then if self == LP then if key == "DisplayName" then return SPOOFED_DISPLAY_NAME end if key == "Name" then return SPOOFED_USERNAME end if key == "UserId" and SPOOFED_USERID then return SPOOFED_USERID end end if typeof(self) == "Instance" and self:IsA("Humanoid") then local ch = LP.Character if ch and self:IsDescendantOf(ch) and key == "DisplayName" then return SPOOFED_DISPLAY_NAME end end end return oldIndex(self, key) end)) local oldNewindex oldNewindex = hookmetamethod(game, "__newindex", newcclosure(function(self, key, value) if not checkcaller() and spooferActive then if typeof(self) == "Instance" and self:IsA("Humanoid") then local ch = LP.Character if ch and self:IsDescendantOf(ch) and key == "DisplayName" and value ~= SPOOFED_DISPLAY_NAME then return oldNewindex(self, key, SPOOFED_DISPLAY_NAME) end end end return oldNewindex(self, key, value) end)) pcall(function() for _, conn in getconnections(LP.OnTeleport) do if conn.Function then pcall(function() conn:Disable() end) end end end) pcall(function() for _, v in Ps:GetPlayers() do if v == LP then for _, conn in getconnections(v.Idled) do pcall(function() conn:Disable() end) end end end end) local realGetName = clonefunction(Ps.GetNameFromUserIdAsync) hookfunction(Ps.GetNameFromUserIdAsync, newcclosure(function(self, userId) if not checkcaller() and spooferActive and userId == RealUserId then return SPOOFED_USERNAME end return realGetName(self, userId) end)) local realGetId = clonefunction(Ps.GetUserIdFromNameAsync) hookfunction(Ps.GetUserIdFromNameAsync, newcclosure(function(self, name) if not checkcaller() and spooferActive and name == SPOOFED_USERNAME then return SPOOFED_USERID or RealUserId end return realGetId(self, name) end)) pcall(function() local realGetInfo = clonefunction(Ps.GetPlayerInfoAsync) hookfunction(Ps.GetPlayerInfoAsync, newcclosure(function(self, userId) local info = realGetInfo(self, userId) if not checkcaller() and spooferActive and userId == RealUserId then info.Username = SPOOFED_USERNAME info.DisplayName = SPOOFED_DISPLAY_NAME end return info end)) end) local function forceHumanoid() local ch = LP.Character if not ch then return end local hum = ch:FindFirstChildOfClass("Humanoid") if hum then oldNewindex(hum, "DisplayName", SPOOFED_DISPLAY_NAME) end end local bound = setmetatable({}, { __mode = "k" }) local function shouldReplace(t) if t == RealDisplayName then return SPOOFED_DISPLAY_NAME end if t == RealName then return SPOOFED_USERNAME end if t == "@" .. RealName then return "@" .. SPOOFED_USERNAME end return nil end local function isLibraryGui(obj) local p = obj while p do if p == Library.ScreenGui then return true end if p:IsA("ScreenGui") and p.Name == "Obsidian" then return true end p = p.Parent end return false end local function bindText(obj) if bound[obj] then return end if isLibraryGui(obj) then return end bound[obj] = true pcall(function() local r = shouldReplace(obj.Text) if r then obj.Text = r end end) pcall(function() obj:GetPropertyChangedSignal("Text"):Connect(function() if not spooferActive then return end local r = shouldReplace(obj.Text) if r then obj.Text = r end end) end) end local function scanRoot(root) for _, obj in root:GetDescendants() do pcall(function() if (obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox")) and not isLibraryGui(obj) then bindText(obj) end end) end end local function hookRoot(root) scanRoot(root) root.DescendantAdded:Connect(function(obj) task.defer(function() if not spooferActive then return end pcall(function() if (obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox")) and not isLibraryGui(obj) then bindText(obj) end end) end) end) end local function fullApply() if not spooferActive then return end forceHumanoid() pcall(function() hookRoot(Cg) end) pcall(function() local pg = LP:FindFirstChild("PlayerGui") if pg then hookRoot(pg) end end) end LP.CharacterAdded:Connect(function(character) if not spooferActive then return end local hum = character:WaitForChild("Humanoid", 10) if hum then oldNewindex(hum, "DisplayName", SPOOFED_DISPLAY_NAME) hum:GetPropertyChangedSignal("DisplayName"):Connect(function() if spooferActive and hum.DisplayName ~= SPOOFED_DISPLAY_NAME then oldNewindex(hum, "DisplayName", SPOOFED_DISPLAY_NAME) end end) end task.defer(fullApply) end) pcall(function() local ch = LP.Character if ch then local hum = ch:FindFirstChildOfClass("Humanoid") if hum then hum:GetPropertyChangedSignal("DisplayName"):Connect(function() if spooferActive and hum.DisplayName ~= SPOOFED_DISPLAY_NAME then oldNewindex(hum, "DisplayName", SPOOFED_DISPLAY_NAME) end end) end end end) local spoofConfig = {} pcall(function() if readfile and isfile and isfile(SPOOFER_FILE) then spoofConfig = HttpService:JSONDecode(readfile(SPOOFER_FILE)) end end) local function saveSpoofConfig() pcall(function() if writefile then writefile(SPOOFER_FILE, HttpService:JSONEncode(spoofConfig)) end end) end local NameSpooferGroup = Tabs.Spoofer:AddLeftGroupbox("Name Spoofer") NameSpooferGroup:AddInput("SpoofDisplayName", { Default = RealDisplayName, Numeric = false, Finished = false, Text = "Display Name", Placeholder = "Enter display name...", }) NameSpooferGroup:AddInput("SpoofUsername", { Default = RealName, Numeric = false, Finished = false, Text = "Username", Placeholder = "Enter username...", }) NameSpooferGroup:AddButton({ Text = "Apply Spoof", Func = function() local dName = Options.SpoofDisplayName.Value local uName = Options.SpoofUsername.Value if dName == "" then dName = RealDisplayName end if uName == "" then uName = RealName end SPOOFED_DISPLAY_NAME = dName SPOOFED_USERNAME = uName spooferActive = true spoofConfig.DisplayName = dName spoofConfig.Username = uName spoofConfig.Active = true saveSpoofConfig() bound = setmetatable({}, { __mode = "k" }) fullApply() Library:Notify("Name spoofed to: " .. dName .. " (@" .. uName .. ")", 3) end, }) NameSpooferGroup:AddButton({ Text = "Reset to Real Name", Func = function() SPOOFED_DISPLAY_NAME = RealDisplayName SPOOFED_USERNAME = RealName spooferActive = false Options.SpoofDisplayName:SetValue(RealDisplayName) Options.SpoofUsername:SetValue(RealName) spoofConfig.DisplayName = RealDisplayName spoofConfig.Username = RealName spoofConfig.Active = false saveSpoofConfig() forceHumanoid() bound = setmetatable({}, { __mode = "k" }) Library:Notify("Name restored to: " .. RealDisplayName .. " (@" .. RealName .. ")", 3) end, }) local DeviceSpooferGroup = Tabs.Spoofer:AddLeftGroupbox("Device Spoofer") local SetControlsRemote = nil pcall(function() SetControlsRemote = ReplicatedStorage:WaitForChild("Remotes", 5) :WaitForChild("Replication", 5) :WaitForChild("Fighter", 5) :WaitForChild("SetControls", 5) end) local deviceOptions = {"MouseKeyboard", "Gamepad", "Touch", "VR"} local currentSpoofedDevice = "MouseKeyboard" local deviceSpoofEnabled = false local function detectCurrentDevice() if UserInputService.VREnabled then return "VR" elseif UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then return "Touch" elseif UserInputService.GamepadEnabled and not UserInputService.KeyboardEnabled then return "Gamepad" else return "MouseKeyboard" end end local realDevice = detectCurrentDevice() currentSpoofedDevice = spoofConfig.SpoofedDevice or realDevice DeviceSpooferGroup:AddDropdown("DeviceSpoofSelect", { Text = "Spoof Device", Values = deviceOptions, Default = currentSpoofedDevice, Multi = false, }) local deviceStatusLabel = DeviceSpooferGroup:AddLabel("Device: " .. realDevice) local function applyDeviceSpoof() if not deviceSpoofEnabled then return end if not SetControlsRemote then return end pcall(function() SetControlsRemote:FireServer(currentSpoofedDevice) end) deviceStatusLabel:SetText("Device: " .. currentSpoofedDevice .. " (Spoofed)") end local function removeDeviceSpoof() if not SetControlsRemote then return end pcall(function() SetControlsRemote:FireServer(realDevice) end) deviceStatusLabel:SetText("Device: " .. realDevice) end DeviceSpooferGroup:AddToggle("DeviceSpoofToggle", { Text = "Enable Device Spoof", Default = spoofConfig.DeviceSpoofEnabled or false, }) Toggles.DeviceSpoofToggle:OnChanged(function() deviceSpoofEnabled = Toggles.DeviceSpoofToggle.Value spoofConfig.DeviceSpoofEnabled = deviceSpoofEnabled saveSpoofConfig() if deviceSpoofEnabled then applyDeviceSpoof() Library:Notify("Device spoofed to: " .. currentSpoofedDevice, 2) else removeDeviceSpoof() Library:Notify("Device spoof disabled", 2) end end) Options.DeviceSpoofSelect:OnChanged(function() local selected = Options.DeviceSpoofSelect.Value if not selected then return end currentSpoofedDevice = selected spoofConfig.SpoofedDevice = selected saveSpoofConfig() if deviceSpoofEnabled then applyDeviceSpoof() Library:Notify("Device spoofed to: " .. selected, 2) end end) if spoofConfig.DeviceSpoofEnabled and SetControlsRemote then deviceSpoofEnabled = true task.defer(applyDeviceSpoof) end local SpoofInfoGroup = Tabs.Spoofer:AddRightGroupbox("Info") SpoofInfoGroup:AddLabel("More Spoofing Options coming Soon...") local StatusGroup = Tabs.Spoofer:AddRightGroupbox("Status") local spoofStatusLabel = StatusGroup:AddLabel("Spoofer: Inactive") local function updateStatusLabel() local deviceStr = deviceSpoofEnabled and (currentSpoofedDevice .. " (Spoofed)") or realDevice if spooferActive then spoofStatusLabel:SetText("Spoofer: Active\nDisplay: " .. SPOOFED_DISPLAY_NAME .. "\nUsername: " .. SPOOFED_USERNAME .. "\nDevice: " .. deviceStr) else spoofStatusLabel:SetText("Spoofer: Inactive\nDevice: " .. deviceStr) end end if spoofConfig.Active and spoofConfig.DisplayName and spoofConfig.Username then SPOOFED_DISPLAY_NAME = spoofConfig.DisplayName SPOOFED_USERNAME = spoofConfig.Username spooferActive = true pcall(function() Options.SpoofDisplayName:SetValue(spoofConfig.DisplayName) Options.SpoofUsername:SetValue(spoofConfig.Username) end) task.defer(function() fullApply() updateStatusLabel() end) end task.spawn(function() while task.wait(1) do pcall(updateStatusLabel) end end) end local GeneralGroup = Tabs.Settings:AddLeftGroupbox("General") GeneralGroup:AddToggle("AutoLoadToggle", { Text = "Auto Load on Join", Default = _G.GlobalData.AutoLoad, }) GeneralGroup:AddToggle("SilentLoadToggle", { Text = "Silent Load", Default = _G.GlobalData.SilentLoad, }) Toggles.AutoLoadToggle:OnChanged(function() _G.GlobalData.AutoLoad = Toggles.AutoLoadToggle.Value setupAutoLoad(_G.GlobalData.AutoLoad) saveGlobalToConfig() end) Toggles.SilentLoadToggle:OnChanged(function() _G.GlobalData.SilentLoad = Toggles.SilentLoadToggle.Value saveGlobalToConfig() end) local LinksGroup = Tabs.Settings:AddLeftGroupbox("Links") LinksGroup:AddButton({ Text = "Copy Discord Invite", Func = function() pcall(function() setclipboard(DISCORD_URL) end) Library:Notify("Discord link copied to clipboard!", 2) pcall(function() if request or http_request or (syn and syn.request) then (request or http_request or syn.request)({ Url = "http://127.0.0.1:6463/rpc?v=1", Method = "POST", Headers = {["Content-Type"] = "application/json", Origin = "https://discord.com"}, Body = HttpService:JSONEncode({cmd = "INVITE_BROWSER", args = {code = "zv8Tdmds"}, nonce = HttpService:GenerateGUID(false)}) }) end end) end, }) LinksGroup:AddButton({ Text = "Copy Key Link", Func = function() pcall(function() setclipboard(KEY_URL) end) Library:Notify("Key link copied to clipboard!", 2) end, }) local MenuGroup = Tabs["UI Settings"]:AddLeftGroupbox("Menu") MenuGroup:AddButton({ Text = "Unload Script", Func = function() Library:Unload() end, }) MenuGroup:AddLabel("Menu bind") MenuGroup:AddKeybind("MenuKeybind", { Default = "RightShift", NoUI = true, Text = "Menu Toggle", }) Library.ToggleKeybind = Options.MenuKeybind ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() ThemeManager:SetFolder("Yorijin") SaveManager:SetFolder("Yorijin/configs") SaveManager:BuildConfigSection(Tabs["UI Settings"]) ThemeManager:ApplyToTab(Tabs["UI Settings"]) Library:Notify("Yorijin loaded! (" .. #sortedWeapons .. " weapons)", 3)