I am developing a Roblox game called Train Tycoon. I understand how Studio works, but I know only the basics of scripting. I am now adding the key feature of the game: Crate deliveries. I tryed out by modifying the script you can get from the tutorial about tools in the Roblox Wiki.

The WoodCrate is the object i'm trying to pick up here

-- LocalScript

local tool = script.Parent
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local model = game.Workspace.WoodCrate
local clickEvent = tool.ClickEvent
 
local function onActivate()
	local clickLocation = mouse.Hit
	clickEvent:FireServer(clickLocation)
	
	
end

 
tool.Activated:connect(onActivate)
-- Server (normal) Script


local tool = script.Parent
local clickEvent = tool.ClickEvent
local clickEventConnection
local model = game.Workspace.WoodCrate

local function onClick(player, clickLocation)
	if clickLocation:FindFirstChild(model) then
		model.Parent = tool
	end
end
 
local function onEquip()
	clickEventConnection = clickEvent.OnServerEvent:connect(onClick)
end
 
local function onUnequip()
	clickEventConnection:disconnect()
end
 
tool.Equipped:connect(onEquip)
tool.Unequipped:connect(onUnequip)

Sadly, it doesn't work. The crate should be able to be moved by a player and put in the train's cart and be drived around. Also, I want the crate to stay at the place where I put it when the train is moving. I don't want to risk encountering bugs similar to those in Lumber Tycoon 2. I would like help about that too. That has been done in Tradelands, where crates stick at a designated spot in a ship. that would be great to have. if that's of any help, trains in my game are just like normal cars, they don't have a script to move them. Thanks in advance for any help.