Is the only way to prevent people from editing a script (in a free model) to use a Module Script? Surely there's another method? All help is appreciated.
This is an unintended side effect of ModuleScripts. It is highly recommended you use them, though, as it does the job well.
Create a ModuleScript:
local module = 'Hello World!' return module
Save it to ROBLOX by right clicking and click 'Save to Roblox...' Name it MainModule IN THE EXPLORER. The model can be named whatever. When the model has been created, copy the ID from the share link. Then:
From a Script in your model:
local module = require(ID) -- Still runs but people cannot see the source print(module) -- Prints hello world