--제작 마인민이--
local plrs = game:GetService("Players")
local reps = game:GetService("ReplicatedStorage")
local http = game:GetService("HttpService")
local lp = plrs.LocalPlayer
local lps = lp.PlayerScripts
local ctrls = lps.Controllers
local rmods = reps.Modules
local elib = require(rmods:WaitForChild("EnumLibrary", 10))
if elib then elib:WaitForEnumBuilder() end
local clib = require(rmods:WaitForChild("CosmeticLibrary", 10))
local ilib = require(rmods:WaitForChild("ItemLibrary", 10))
local dctrl = require(ctrls:WaitForChild("PlayerDataController", 10))
local coss = clib.Cosmetics
local cdata = dctrl.CurrentData
if not cdata then
task.spawn(function()
repeat task.wait() until dctrl.CurrentData
cdata = dctrl.CurrentData
end)
end
local equip, favs = {}, {}
local cwep, vprof, lwep
local lpname = lp.Name
local fcache = {}
local function banned(n)
if type(n) ~= "string" then return true end
return n:find("MISSING_") or n:find("Bubblegum") or n:find("Ragdoll") or n:find("Fall Apart") or n:find("Every Finisher Ever")
end
local function toenum(n)
if not elib then return nil end
local ok, id = pcall(elib.ToEnum, elib, n)
return ok and id or nil
end
local function clonecos(name, ctype, inv, favonly)
if banned(name) then return nil end
local base = coss[name]
if not base then return nil end
local d = table.clone(base)
d.Name = name
d.Type = d.Type or ctype
d.Seed = d.Seed or math.random(1, 1000000)
local eid = toenum(name)
if eid then d.Enum = eid d.ObjectID = d.ObjectID or eid end
if inv ~= nil then d.Inverted = inv end
if favonly ~= nil then d.OnlyUseFavorites = favonly end
return d
end
local savef = "unlockall/config.json"
local function savecfg()
if not writefile then return end
pcall(function()
local cfg = { equipped = {}, favorites = favs }
for wep, cos in equip do
local slot = {}
cfg.equipped[wep] = slot
for ct, cd in cos do
if cd and cd.Name and not banned(cd.Name) then
slot[ct] = { name = cd.Name, seed = cd.Seed, inverted = cd.Inverted }
end
end
end
makefolder("unlockall")
writefile(savef, http:JSONEncode(cfg))
end)
end
local function loadcfg()
if not readfile or not isfile or not isfile(savef) then return end
pcall(function()
local cfg = http:JSONDecode(readfile(savef))
if cfg.equipped then
for wep, cos in cfg.equipped do
equip[wep] = {}
for ct, cd in cos do
if not banned(cd.name) then
local cl = clonecos(cd.name, ct, cd.inverted)
if cl then
cl.Seed = cd.seed
equip[wep][ct] = cl
end
end
end
end
end
favs = cfg.favorites or {}
end)
end
local finv = {}
local function rebuildinv()
table.clear(finv)
for name in coss do
if not banned(name) then finv[name] = true end
end
for _, cos in equip do
for _, cd in cos do
if cd and cd.Name and not banned(cd.Name) then finv[cd.Name] = true end
end
end
end
rebuildinv()
local oget = dctrl.Get
dctrl.Get = function(self, key)
local data = oget(self, key)
if key == "CosmeticInventory" then
local proxy = {}
if data then for k, v in data do if not banned(k) then proxy[k] = v end end end
for name in finv do proxy[name] = true end
return proxy
end
if key == "FavoritedCosmetics" then
local res = data and table.clone(data) or {}
for wep, fv in favs do
local slot = res[wep] or {}
res[wep] = slot
for name, isfav in fv do
if not banned(name) then slot[name] = isfav end
end
end
return res
end
return data
end
local ogetwep = dctrl.GetWeaponData
dctrl.GetWeaponData = function(self, wname)
local data = ogetwep(self, wname)
if not data then return nil end
local merged = table.clone(data)
merged.Name = wname
local weq = equip[wname]
if weq then for ct, cd in weq do merged[ct] = cd end end
return merged
end
local function saferep(key)
pcall(function()
if not cdata and dctrl.CurrentData then cdata = dctrl.CurrentData end
if cdata then cdata:Replicate(key) end
end)
end
local fctrl
pcall(function() fctrl = require(ctrls:WaitForChild("FighterController", 10)) end)
local function getewep()
if not fctrl then return nil end
local fighter = fctrl:GetFighter(lp)
if not fighter or not fighter.Items then return nil end
for _, item in fighter.Items do
if item.IsEquipped then return item.Name end
end
return nil
end
if hookmetamethod then
local rems = reps:FindFirstChild("Remotes")
local drems = rems and rems:FindFirstChild("Data")
local eqrem = drems and drems:FindFirstChild("EquipCosmetic")
local favrem = drems and drems:FindFirstChild("FavoriteCosmetic")
local rrems = rems and rems:FindFirstChild("Replication")
local frems = rrems and rrems:FindFirstChild("Fighter")
local uirem = frems and frems:FindFirstChild("UseItem")
if eqrem then
local oncall
oncall = hookmetamethod(game, "__namecall", function(self, ...)
if getnamecallmethod() ~= "FireServer" then return oncall(self, ...) end
local args = { ... }
if uirem and self == uirem and fctrl then
pcall(function()
local fighter = fctrl:GetFighter(lp)
if fighter and fighter.Items then
local oid = args[1]
for _, item in fighter.Items do
if item:Get("ObjectID") == oid then
lwep = item.Name
break
end
end
end
end)
end
if self == eqrem then
local wname, ctype, cname, opts = args[1], args[2], args[3], args[4] or {}
if not cname or cname == "None" or cname == "" then
equip[wname] = equip[wname] or {}
equip[wname][ctype] = nil
if not next(equip[wname]) then equip[wname] = nil end
rebuildinv()
task.defer(function()
saferep("WeaponInventory")
task.wait(0.2)
savecfg()
end)
return oncall(self, ...)
end
if banned(cname) then return oncall(self, ...) end
local rdata = oget(dctrl, "CosmeticInventory")
if rdata and type(rdata[cname]) ~= "boolean" and rdata[cname] ~= nil then
return oncall(self, ...)
end
equip[wname] = equip[wname] or {}
local cloned = clonecos(cname, ctype, opts.IsInverted, opts.OnlyUseFavorites)
if cloned then equip[wname][ctype] = cloned end
if ctype == "Finisher" then fcache[wname] = cname end
rebuildinv()
task.defer(function()
saferep("WeaponInventory")
task.wait(0.2)
savecfg()
end)
return
end
if self == favrem then
local fwep, fname, fstate = args[1], args[2], args[3]
if not fname or fname == "None" or fname == "" then return oncall(self, ...) end
if banned(fname) then return oncall(self, ...) end
favs[fwep] = favs[fwep] or {}
favs[fwep][fname] = fstate or nil
savecfg()
task.spawn(saferep, "FavoritedCosmetics")
return
end
return oncall(self, ...)
end)
end
end
local citem
pcall(function() citem = require(lps.Modules.ClientReplicatedClasses.ClientFighter.ClientItem) end)
if citem and citem._CreateViewModel then
local ocvm = citem._CreateViewModel
citem._CreateViewModel = function(self, vmref)
local wname = self.Name
local wplr = self.ClientFighter and self.ClientFighter.Player
cwep = (wplr == lp) and wname or nil
if wplr == lp and equip[wname] and equip[wname].Skin and vmref then
local skin = equip[wname].Skin
local dk = self:ToEnum("Data")
if vmref[dk] then
vmref[dk][self:ToEnum("Skin")] = skin
vmref[dk][self:ToEnum("Name")] = skin.Name
elseif vmref.Data then
vmref.Data.Skin = skin
vmref.Data.Name = skin.Name
end
end
local res = ocvm(self, vmref)
cwep = nil
return res
end
end
local vmmod = lps.Modules.ClientReplicatedClasses.ClientFighter.ClientItem:FindFirstChild("ClientViewModel")
if vmmod then
local cvm = require(vmmod)
if cvm.GetWrap then
local ogw = cvm.GetWrap
cvm.GetWrap = function(self)
local ci = self.ClientItem
local wname = ci and ci.Name
local wplr = ci and ci.ClientFighter and ci.ClientFighter.Player
local weq = wname and wplr == lp and equip[wname]
return (weq and weq.Wrap) or ogw(self)
end
end
local onew = cvm.new
cvm.new = function(rdata, cliitm)
local wplr = cliitm.ClientFighter and cliitm.ClientFighter.Player
local wname = cwep or cliitm.Name
if wplr == lp and equip[wname] then
local rcls = require(reps.Modules.ReplicatedClass)
local dk = rcls:ToEnum("Data")
rdata[dk] = rdata[dk] or {}
local cos = equip[wname]
local slot = rdata[dk]
if cos.Skin then slot[rcls:ToEnum("Skin")] = cos.Skin end
if cos.Wrap then slot[rcls:ToEnum("Wrap")] = cos.Wrap end
if cos.Charm then slot[rcls:ToEnum("Charm")] = cos.Charm end
end
local res = onew(rdata, cliitm)
if wplr == lp and equip[wname] and equip[wname].Wrap and res._UpdateWrap then
res:_UpdateWrap()
task.delay(0.1, function() if not res._destroyed then res:_UpdateWrap() end end)
end
return res
end
end
local ogvi = ilib.GetViewModelImageFromWeaponData
ilib.GetViewModelImageFromWeaponData = function(self, wdata, hires)
if not wdata then return ogvi(self, wdata, hires) end
local wname = wdata.Name
local weq = equip[wname]
if weq and weq.Skin and (wdata.Skin == weq.Skin or vprof == lp) then
local sinfo = self.ViewModels[weq.Skin.Name]
if sinfo then return sinfo[hires and "ImageHighResolution" or "Image"] or sinfo.Image end
end
return ogvi(self, wdata, hires)
end
pcall(function()
local vpmod = require(lps.Modules.Pages.ViewProfile)
if vpmod and vpmod.Fetch then
local ofetch = vpmod.Fetch
vpmod.Fetch = function(self, tplr)
vprof = tplr
return ofetch(self, tplr)
end
end
end)
local cent
pcall(function() cent = require(lps.Modules.ClientReplicatedClasses.ClientEntity) end)
if cent and cent._PlayFinisher then
local ofin = cent._PlayFinisher
cent._PlayFinisher = function(self, fname, ...)
local ewep = getewep()
local tfin = ewep and (fcache[ewep] or (equip[ewep] and equip[ewep].Finisher and equip[ewep].Finisher.Name))
return ofin(self, tfin or fname, ...)
end
end
loadcfg()
rebuildinv()
for wname, wdata in equip do
if wdata.Finisher and wdata.Finisher.Name then
fcache[wname] = wdata.Finisher.Name
end
end
To embed this project on your website, copy the following code and paste it into your website's HTML: