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.
