So I have a tool that a user holds when they equip it, and if a they press on a certain part, a boat should spawn at the coordinate the mouse was pressed on for said part. I use a remote event to spawn the boat model to the server based on client side request.
Here is the local script, followed by the server script:
local ReplicatedStorage= game:GetService("ReplicatedStorage")
local createPlaceBuildingEvent= ReplicatedStorage:WaitForChild("CreatePlaceBuildingEvent")
tool= script.Parent
handle= tool:WaitForChild("Handle")
--enabled= true
--game.Players.LocalPlayer.Character:WaitForChild("Humanoid")
local Plr= game.Players.LocalPlayer
local Char = Plr.Character or Plr.CharacterAdded:wait()
while game.Players.LocalPlayer.Character.Parent == nil do
game.Players.LocalPlayer.Character.AncestryChanged:wait()
end
--local Player= game.Players.LocalPlayer
local Mouse= Plr:GetMouse()
local animTrack = game.Players.LocalPlayer.Character:WaitForChild("Humanoid"):LoadAnimation(script.Parent.slashDown)
script.Parent.CanBeDropped= false
local enabled= false
local equipped= false
tool.Equipped:connect(function()
--equipped= true
end)
local count= 0
tool.Activated:connect(function()
animTrack:Play()
--game.StarterGui.checkBoatBuilt.Value= 1
--print("v pressed")
if not Mouse.Target then
return
end
if tostring(Mouse.Target)== "Seafloorfloorsea" and script.Parent.Name~= "Junk" then
local mouseHitX= Mouse.Hit.X
local mouseHitY= Mouse.Hit.Y
local mouseHitZ= Mouse.Hit.Z
local toolValue= script.Parent.isTool.Value
local count= 0
createPlaceBuildingEvent:FireServer(mouseHitX,mouseHitY,mouseHitZ,count)
--game.Players.LocalPlayer.PlayerGui.ToolboxGui:FindFirstChild("frame"..tostring(script.Parent.isTool.Value)).TextButton:Destroy()
--script.Parent= game.ServerStorage.trashCan
--script.Parent:Destroy()
game.Players.LocalPlayer.PlayerGui.ToolboxGui:FindFirstChild("frame"..tostring(script.Parent.isTool.Value)).TextButton.Text= "Junk"
script.Parent.Name= "Junk"
script.Parent.Handle.BrickColor= BrickColor.Black()
count= count+1
--print(count)
--enabled= false
--script.Parent= nil
end
end)
tool.Unequipped:connect(function()
--equipped= false
end)
tool.Deactivated:connect(function()
animTrack:Stop()
end)
Next:
--this script places buildings on the ws from tools
local ReplicatedStorage= game:GetService("ReplicatedStorage")
local createPlaceBuildingEvent= Instance.new("RemoteEvent",ReplicatedStorage)
createPlaceBuildingEvent.Name= "CreatePlaceBuildingEvent"
--local count= 0--debounce
--local enabled= false
function onToolToBuilding(sender,mouseHitX,mouseHitY,mouseHitZ)
if workspace.checkBoatBuilt.Value== 0 then
workspace.checkBoatBuilt.Value= 1
--enabled= true
--local cloneSmallBoat= workspace.AdminRoom["Small Boat"]:Clone()
local cloneSmallBoat= workspace["Small Boat Master"]:Clone()
cloneSmallBoat.Name= "Small Boat"
--local cloneSmallBoat= workspace["Raft"]:Clone()
cloneSmallBoat.Parent= workspace
for index,descandant in pairs(cloneSmallBoat:GetDescendants()) do
if descandant:IsA("Part") then
descandant.CanCollide= true
descandant.Transparency= 0
if descandant.Name== "MainPart" then
descandant.BottomSurface= "Smooth"
end
elseif descandant:IsA("VehicleSeat") then
descandant.Disabled= false
descandant.CanCollide= true
descandant.Transparency= 0
elseif descandant:IsA("ClickDetector") then
descandant.MaxActivationDistance= 32
end
end
--]]
cloneSmallBoat:MakeJoints()
cloneSmallBoat:MoveTo(Vector3.new(mouseHitX,23,mouseHitZ))
--count= count+1
--print(count)
--[[
if count== 1 then
enabled= true
elseif count== 2 then
enabled= false
end
--]]
end--if enabled
end
createPlaceBuildingEvent.OnServerEvent:Connect(onToolToBuilding)
As you can see in the commented areas I edited my script by using the variable count as an attempt to count how many boats spawn at a time; if two boats spawn within a short time then it should delete one of the boats. This works the first time, and the first time only. After that, every mouse click spawns two boats again (though at least by printing out the variable I find the the event runs twice). I only want one boat to spawn for each single mouse click.
I would be willing to provide any further clarifications regarding my code, and may play around with debounce in the meantime.
EDIT: to add more info it it would help: this happens both on Studio and online, without any errors. When the boats spawn one boat spawns right on top of the other. I made the bottom side of the main part smooth so that I could at least move the boat on top off of the one below it, but is not a good quick fix.

1 comment
I can kind of see what you're saying, assuming you're talking about error as in there's no mouse on the server side and not as in red error in the output box. Are you suggesting that I should indirectly pass the mouse information?