I will recommend creating values in drone (save values that way instead of keeping them in script) so that you can change it on server side using remote event. Since you probably want other players to see the drone move…
If the drone is created from the server, and the client get’s network ownership. Then remote events are pointless. Unless OP wants the drone to also be network owned by the server. Other players would see the drone regardless.
If your using the function in the module script using a local script it will be locally done (if my memory is right).
If he requires the module and creates the drone from a localscript then yes. But if he does it your way which you recommended server side. Then he can just assign the network ownership to the owning client. And then manipulate it directly on the client.
I made the drone the startercharacter, but when a player joins I create a new object and set ownership to it.
Edit: The problem is I don’t know how to specifically get the players character, can I get it in a localscript as it runs for each player?
I mean he will have to do it anyway since he would need to get the input through a local script. He doesn’t need any module scripts at all but I’m guessing its just for more simplicity.