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

How can i make GetMouse() without a localscript?

Asked by
Rukreep 15
4 years ago

I am doing a simple building script. I want to get the mouse of the localplayer to clone a part into a carpet on workspace. The script that i tested works (sort of), but what happens is that other players cannot see the blocks you placed. is there any way to get the mouse of a player without a localscript? Thank you!

0
thanks guys very cool Rukreep 15 — 4y

3 answers

Log in to vote
1
Answered by 4 years ago
Edited 4 years ago

No you can't do :GetMouse() on a normal script. This is because the server does not have a mouse - the server is not a player it is a machine. What you should be doing instead is using remote events and remote functions whenever you want something from the client to be sent over to the server, like pressing a button or getting the mouse's position.

1-- in a local script
2local Player = game:GetService("Players").LocalPlayer
3 
4while wait(1) do
5    local Mouse = Player:GetMouse()
6    RemoteEvent:FireServer(Mouse.Hit.p)
7end)

And then:

1-- in a server script
2 
3RemoteEvent.OnServerEvent:Connect(function(player, mousePosition)
4    print(player.Name.." has his mouse at "..mousePosition)
5end)

I think you are competent enough to know how to fit this into your script without further help.

Edit (you didn't know how to):

01--this is located on ServerScriptService
02local Plain = game.Lighting.Blocks.Plain
03local build = Instance.new("RemoteEvent")
04build.Parent = game.ReplicatedStorage
05build.Name = "BuildEvent"
06 
07local function InsertPart (player, mousePosition)
08    local Clone = Plain:Clone()
09    Clone.Parent = game.Workspace.BuildParts
10        Clone.Position = mousePosition
11        script.Parent.Handle["Pop!"]:Play()
12end
13build.OnServerEvent:Connect(InsertPart)
14 
15-- in a local script in the tool
View all 24 lines...
0
i have just heard about remoteevents, i have no idea what to do Rukreep 15 — 4y
0
Read through the Wiki, that's what. radiant_Light203 1166 — 4y
0
i've read it when danklua sent me the answer, still don't understand Rukreep 15 — 4y
0
i should also mention that i'm doing a tool Rukreep 15 — 4y
0
Create a remote event (it's an insertable object), and instead of creating a block on the client, fire the remote event with the mouse's position; connect a server script to that remote event and create the block there. radiant_Light203 1166 — 4y
Ad
Log in to vote
1
Answered by
danklua 72
4 years ago
Edited 4 years ago

:GetMouse() is only on the client, you would have to use RemoteEvents to transfer the data from the client to server here you can look what remote events are

0
i have no idea how to set that up Rukreep 15 — 4y
Log in to vote
0
Answered by
Rukreep 15
4 years ago

I have a new problem: I've followed the steps of this tutorial: https://www.youtube.com/watch?v=3wkPekjQvKg and the same problem happens when you put GetMouse() into a regular script i'll give you the piece of code

01--this is located on ServerScriptService
02local build = Instance.new("RemoteEvent")
03build.Parent = game.ReplicatedStorage
04build.Name = "BuildEvent"
05local function InsertPart ()
06    local Tool = script.Parent
07    local Players = game:GetService("Players")
08    local player = game.Players.LocalPlayer
09    local mouse = player:GetMouse()
10 
11    --Building blocks--
12    local Plain = game.Lighting.Blocks.Plain
13    --Function--
14    function onActivated()
15        local clone = Plain:Clone()
View all 23 lines...

and here's the tool

1local build = game.ReplicatedStorage:WaitForChild("BuildEvent")
2build:FireServer()
0
I've edited my answer have a look and tell me if it works. radiant_Light203 1166 — 4y
0
Did my answer work? Accept it if it did and if it didn't tell me what went wrong. radiant_Light203 1166 — 4y
0
Yes, it did. Rukreep 15 — 4y

Answer this question