dw model changer
Key Required

dw model changer

🎃 Dandy's World [ALPHA]hunteroukiee1hunteroukiee1 2.6K views 1.4K executesUpdated Apr 1, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•228 lines (8520 chars)
--- DANDY'S WORLD OC SYNC (V14 - MARKETPLACE UPDATE) ---

local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

local Window = Rayfield:CreateWindow({
   Name = "Dandy's World OC Sync (V14)",
   LoadingTitle = "OC Loader - Marketplace Edition",
   LoadingSubtitle = "V14: Public Assets & Outfit Sync",
   ConfigurationSaving = { Enabled = false },
   KeySystem = false 
})

local MainTab = Window:CreateTab("Apply OC", 4483362458)
local MarketTab = Window:CreateTab("Marketplace", 4483362458) -- NEW TAB
local AdjustTab = Window:CreateTab("Adjust Model", 4483362458)
local SyncTab = Window:CreateTab("Sync with Friends", 4483362458)

local lp = game.Players.LocalPlayer
local CurrentOC = nil
local TargetID = ""
local ActiveSyncModels = {} 
local ForceAnimate = false

-- CLEANUP/FIXER FUNCTION
local function DeepFix(model)
    if not model then return end
    for _, part in pairs(model:GetDescendants()) do
        if part:IsA("BasePart") then
            part.CanCollide = false
            task.delay(1, function() if part then part.CanCollide = true end end)
            
            local hasTexture = false
            if (part:IsA("MeshPart") and part.TextureID ~= "") or 
               (part:FindFirstChildWhichIsA("SpecialMesh") and part:FindFirstChildWhichIsA("SpecialMesh").TextureID ~= "") or 
               part:FindFirstChildWhichIsA("SurfaceAppearance") then 
                hasTexture = true 
            end
            if hasTexture then part.Color = Color3.new(1, 1, 1) end
        end
        if part:IsA("Decal") or part:IsA("Texture") then part.ZIndex = 25 end
        
        -- Force Animations if enabled
        if ForceAnimate and part:IsA("Humanoid") then
            part.RigType = Enum.HumanoidRigType.R15
        end
    end
end

-- MAIN APPLY LOGIC
local function ApplyLocalOC(id)
    if id == "" then return end
    local char = lp.Character or lp.CharacterAdded:Wait()
    
    -- Marketplace IDs can be Models or Packages
    local s, result = pcall(function() 
        return game:GetObjects("rbxassetid://" .. id)[1] 
    end)
    
    if s and result then
        local oldPos = char:GetPrimaryPartCFrame()
        if CurrentOC then CurrentOC:Destroy() end
        
        CurrentOC = result:Clone()
        CurrentOC.Name = "OC_" .. lp.Name
        CurrentOC.Parent = workspace
        DeepFix(CurrentOC)
        
        lp.Character = CurrentOC
        CurrentOC:SetPrimaryPartCFrame(oldPos)
        char:Destroy()
        
        lp:SetAttribute("CurrentOCID", id)
        
        local hum = CurrentOC:FindFirstChildWhichIsA("Humanoid")
        if hum then 
            workspace.CurrentCamera.CameraSubject = hum 
        end
        Rayfield:Notify({Title = "OC Applied", Content = "Loaded ID: "..id, Duration = 3})
    else
        Rayfield:Notify({Title = "Error", Content = "Failed to load ID. Ensure it's a Public Model.", Duration = 5})
    end
end

-- MARKETPLACE OUTFIT LOGIC (FOR USERS)
local function ApplyUserOutfit(username)
    local success, userId = pcall(function() return game.Players:GetUserIdFromNameAsync(username) end)
    if success then
        local char = lp.Character or lp.CharacterAdded:Wait()
        local hum = char:FindFirstChildOfClass("Humanoid")
        if hum then
            local description = game.Players:GetHumanoidDescriptionFromUserId(userId)
            hum:ApplyDescription(description)
            Rayfield:Notify({Title = "Outfit Synced", Content = "Applied " .. username .. "'s Marketplace items.", Duration = 3})
        end
    else
        Rayfield:Notify({Title = "Error", Content = "User not found.", Duration = 3})
    end
end

-- MAIN TAB UI
MainTab:CreateInput({
   Name = "Model ID",
   PlaceholderText = "Paste Model ID...",
   Callback = function(Text) TargetID = Text:gsub("%D", "") end,
})

MainTab:CreateButton({
   Name = "Apply Custom Model ID",
   Callback = function() ApplyLocalOC(TargetID) end,
})

MainTab:CreateToggle({
   Name = "Enable Basic Animations",
   CurrentValue = false,
   Flag = "AnimToggle",
   Callback = function(Value) ForceAnimate = Value end,
})

-- MARKETPLACE TAB UI
MarketTab:CreateSection("Marketplace Outfits")
MarketTab:CreateParagraph({Title = "Instructions", Content = "Type a username to take their full Marketplace look (Clothes/Hats/Hair). This works on your current character."})

MarketTab:CreateInput({
    Name = "Username",
    PlaceholderText = "Search User...",
    Callback = function(Text) 
        ApplyUserOutfit(Text)
    end,
})

MarketTab:CreateSection("Popular Tags")
MarketTab:CreateButton({
    Name = "Reset to Default Marketplace Look",
    Callback = function() lp:LoadCharacter() end,
})

-- SYNC SYSTEM (Retained from V13)
local FriendName = ""
SyncTab:CreateSection("The Handshake")
SyncTab:CreateInput({
    Name = "Friend's Username",
    PlaceholderText = "Case Sensitive...",
    Callback = function(T) FriendName = T end 
})

SyncTab:CreateButton({
    Name = "Set Sync Partner",
    Callback = function()
        if FriendName == "" then return end
        lp:SetAttribute("SyncPartner", FriendName)
        Rayfield:Notify({Title = "Partner Set", Content = "Looking for " .. FriendName, Duration = 5})
    end
})

-- BACKGROUND SYNC HANDLER
task.spawn(function()
    while task.wait(1) do
        local partnerName = lp:GetAttribute("SyncPartner")
        if partnerName then
            local partner = game.Players:FindFirstChild(partnerName)
            if partner and partner:GetAttribute("SyncPartner") == lp.Name then
                local partnerModelID = partner:GetAttribute("CurrentOCID")
                
                if partnerModelID and partnerModelID ~= "" then
                    if not ActiveSyncModels[partner.Name] or ActiveSyncModels[partner.Name].ID ~= partnerModelID then
                        if ActiveSyncModels[partner.Name] then 
                            ActiveSyncModels[partner.Name].Model:Destroy() 
                        end
                        
                        local s, r = pcall(function() return game:GetObjects("rbxassetid://" .. partnerModelID)[1] end)
                        if s and r then
                            local fOC = r:Clone()
                            fOC.Parent = workspace
                            DeepFix(fOC)
                            ActiveSyncModels[partner.Name] = {Model = fOC, ID = partnerModelID}
                            
                            task.spawn(function()
                                while ActiveSyncModels[partner.Name] and ActiveSyncModels[partner.Name].ID == partnerModelID do
                                    if partner.Character and partner.Character:FindFirstChild("HumanoidRootPart") then
                                        fOC:SetPrimaryPartCFrame(partner.Character.HumanoidRootPart.CFrame)
                                        for _, p in pairs(partner.Character:GetDescendants()) do
                                            if p:IsA("BasePart") or p:IsA("Decal") then p.Transparency = 1 end
                                        end
                                    end
                                    task.wait()
                                end
                                fOC:Destroy()
                            end)
                        end
                    end
                end
            else
                if ActiveSyncModels[partnerName] then
                    ActiveSyncModels[partnerName].Model:Destroy()
                    ActiveSyncModels[partnerName] = nil
                end
            end
        end
    end
end)

-- ADJUST TAB
AdjustTab:CreateSection("Scaling")
AdjustTab:CreateSlider({
   Name = "Model Scale",
   Range = {0.1, 5},
   Increment = 0.1,
   Suffix = "x Size",
   CurrentValue = 1,
   Callback = function(Value)
      if CurrentOC and CurrentOC:FindFirstChildOfClass("Humanoid") then
          local hum = CurrentOC:FindFirstChildOfClass("Humanoid")
          local description = hum:FindFirstChildOfClass("HumanoidDescription") or Instance.new("HumanoidDescription", hum)
          description.HeightScale = Value
          description.WidthScale = Value
      end
   end,
})

SyncTab:CreateButton({
    Name = "Clear All Syncs",
    Callback = function()
        lp:SetAttribute("SyncPartner", nil)
        for _, data in pairs(ActiveSyncModels) do data.Model:Destroy() end
        ActiveSyncModels = {}
        Rayfield:Notify({Title = "Cleaned", Content = "All syncs cleared.", Duration = 3})
    end
})

Features & Information

(ai slop) this just lets you change models for dw
#ai#slop#dandys world

Community Comments (2)

hunteroukiee1hunteroukiee1Apr 1, 2026(edited)

before you flood my comments with stuff like "ts ai" or other stuff.. IT IS

hannahintzhannahintzApr 1, 2026

aight

More Scripts for 🎃 Dandy's World [ALPHA]