Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Does anyone know how to edit this archaic script so the mouse target selects a whole model?

Asked by 5 years ago

I know you technically aren't supposed to request scripts here, but this seems very simple. I'm just really inexperienced at scripting when it comes to tools.

I am basically trying to redesign the old clone tool from 2006. I made multiple-part crates that are all grouped in separate models that are supposed to be unanchored and weld to other parts. This script only clones and moves one part at a time, not the entire crate. Is there a way to easily fix this script so it clones the entire model and not just one part in it?

debounce = false
local vPlayer = game.Players.LocalPlayer
local SBox = Instance.new("SelectionBox")
local Tool = script.Parent;

local Select
local Orig  
local Dragger

function onButton1Down(mouse)

    local Target = mouse.Target
    local Sound = Instance.new("Sound")-- The "ding" sound
    Sound.SoundId = "rbxasset://sounds\\electronicpingshort.wav"
    Sound.Name = "PewPew"
    Sound.Parent = Tool

    if Target and Target:IsA("BasePart") and not Target.Locked then
        if debounce == false then
        debounce = true
        Orig = Target
        Select = Orig:clone()

        Select.Parent = game.Workspace
        Select.Position = Orig.Position + Vector3.new(0, 0.4, 0)

        Dragger = Instance.new("Dragger")
        pcall(function() Dragger:MouseDown(Select, Vector3.new(0, 0, 0), {Select}) end)

        SBox.Adornee = Select
        Sound:Play()
        wait(1.5)
        mouse.Icon = "rbxasset://textures\\DragCursor.png"
        debounce = false
        end
    end
end

function onButton1Up(mouse)
    if Dragger then
        Orig = nil
        pcall(function() Dragger:MouseUp() end)
        Select = nil
        SBox.Adornee = nil
        Dragger = nil
        mouse.Icon = "rbxasset://textures\\CloneOverCursor.png"
    end
end

function onMouseMove(mouse)
    if Dragger then
        mouse.Icon = "rbxasset://textures\\GrabRotateCursor.png"
        pcall(function() Dragger:MouseMove(mouse.UnitRay) end)
    else
        local Target = mouse.Target
        if Target and Target:IsA("BasePart") and not Target.Locked then
            mouse.Icon = "rbxasset://textures\\CloneOverCursor.png"
        else
            mouse.Icon = "rbxasset://textures\\CloneCursor.png"
        end
    end
end

function onKeyDown(key)
    if Dragger then
        key = key:lower()
        if key == 'r' then
            Dragger:AxisRotate(Enum.Axis.Y)
        elseif key == 't' then
            Dragger:AxisRotate(Enum.Axis.Z)
        end
    end
end

function onEquippedLocal(mouse)
    SBox.Color = BrickColor.new("Cyan")
    SBox.Parent = vPlayer.PlayerGui

    mouse.Button1Down:connect(function() onButton1Down(mouse) end)
    mouse.Button1Up:connect(function() onButton1Up(mouse) end)
    mouse.Move:connect(function() onMouseMove(mouse) end)
    mouse.KeyDown:connect(onKeyDown)
end

function onUnequippedLocal(mouse)
    if Tool:findFirstChild("PewPew") then
        Tool.PewPew:remove()
    end
    if Dragger then
        Orig = nil
        pcall(function() Dragger:MouseUp() end)
        Select = nil
        SBox.Adornee = nil
        Dragger = nil
    end
end

Tool.Equipped:connect(onEquippedLocal)
Tool.Unequipped:connect(onUnequippedLocal)

I obviously didn't type most of this script, so some parts may seem outdated.

Answer this question