Goal: I would like to select a player created troop and move the troop to the mouse.Target smoothly.
This is what I have currently:
Local Script - Highlights the first selected part [1] of the array and sends the first part over to the server, this is what I want sent.
local function HightlightPart(part) local box = table.remove(Boxes.Cache, 1) if not box then box = Instance.new("SelectionBox") box.LineThickness = 0.05 box.Adornee = part box.Parent = workspace end box.Adornee = part table.insert(Boxes.InUse, box) end local function UnhightlightPart(part) local position, box for i,selection in pairs(Boxes.InUse) do if selection.Adornee == part then position = i box = selection end end if box then box.Adornee = nil table.insert(Boxes.Cache, table.remove(Boxes.InUse, position)) end end mouse.Button1Down:Connect(function() local SelectMultiple = UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) local Target = mouse.Target local MousePos = mouse.Hit.p local check = table.find(Selected, Target) if Target and Target.Parent then if Selected then MousePosServerTransfer:FireServer(Selected[1], MousePos) UnhightlightPart(part) table.remove(Selected, check) end if SelectMultiple then if check then UnhightlightPart(Target) table.remove(Selected, check) else HightlightPart(Target) table.insert(Selected, Target) end elseif not check then HightlightPart(Target) table.insert(Selected, Target) end elseif not SelectMultiple then for _,part in pairs(Selected) do UnhightlightPart(part) end table.clear(Selected) end end)
Server Script - Makes the part move to the mouse position of the client.
RP:WaitForChild("Client"):WaitForChild("Remotes"):WaitForChild("UnitMove").OnServerEvent:Connect(function(plr, part, MousePos) print("Recieved:", MousePos) part.Position = MousePos part.CFrame = CFrame.new(MousePos) end)
All the variables are sorted out. Please comment if you want me to elaborate, sorry if it is messy.
This is the best version I can produce but if anyone can improve the script or give me an explanation, please help, thanks.