[Web/Game] Startup Module

I got a game idea where people will be able to create places in their inventory.
There’ll be scripts that’ll require my (copylocked) ModuleScripts so the game actually works.

The only problem, however, is that the “owner” of a game, can use the Dev Console Command Bar to script.
While I don’t find that’s a big issue, that should be fixed anyways.

But an idea I got from that, was something what I call “Startup Module”.
Whenever you use CreatePlaceAsync() or CreatePlaceInPlayerInventoryAsync(), you give it the ID of a template place.
That place copies the SavePlace-property of the template place, and its content is also copied.
Basicly, there would be another property “Startup Module” where you would set the assetId of a MainModule.
That way, whenever a place that used that place as template runs, that ModuleScript is required (as in, it gets ran).
That would allow us to (safely) create places in other players their inventory, while making sure
that our code never gets deleted, while still being able to “copylock” the code (as with ModuleScripts is standard).

I believe you can do this with DataStores.

One of the big points I said is:
The player in who’s inventory the place is created, has access to the Developer Console.
(Due game.CreatorId being him, even if the place isn’t part of an universe he owns)
He can use the commandbar to delete all scripts if he wants.
(What about “script.Parent = nil”? Then just saving the place and rejoining “deletes” it)
There is no way to force a script to stay in the place.

If he deletes the scripts, it’s his loss.

But since I limit it to one place per player, I also lose a customer (in a sort of way)