By this I mean, lets say you have a script that you want on different places in your game. Whenever I'd want to change the script, I'd have to change the script on all places. Is there a way to store the script somewhere where all the places would be able to access it, so I only have to change the script one? Thanks in advance!
Is there a way to have the same script on a bunch of different games?
2 answers
The standard method is to create Linked-Scripts which basicly treats the code (source) as a game asset.
To create a linked script right click on the script and select "Create new LinkedSource". To use the code in another place create a script and select a new LinkedSource.
Note that you need to publish any changes made in the source code as they do not upload when published. You need to goto the game explorer, right click then publish the changes there.
There are however other options but these are currently not upto the task as private module are being removed and packages do not currently auto update across your game.
I hope this helps. Please comment if you have any other questions about how this works.
ROBLOX has a handy feature called ModuleScripts. You can think of a module script essentially as another table in your scripts. It can store values, including functions, so you can use them in all your scripts. The main purpose of them is to reduce clutter and avoid repeated code. To utilize them, we use the built-in require() function, accompanied by either an object value referencing the module script in your game, or a rbxassetid.
Using an asset ID, you can utilize module scripts that aren't even in your game. To do this, name the module script MainModule and publish it to the ROBLOX library. You then simply run require("AssetId"). Here's a couple examples of the usage of module scripts.
Note: this code assumes you have a script in ServerScriptService with a ModuleScript inside it, as well as the defined bricks in the workspace.
--Module Script
local module = {
Kill = function(humanoid)
if humanoid then
humanoid.Health = 0
end
end,
Heal = function(humanoid)
if humanoid then
humanoid.Health = 100
end
end,
Respawn = function(player)
if player then
player:LoadCharacter()
end
end
}
return module
--Server Script
local module = require(script.ModuleScript)
---
local KillBrick = workspace:WaitForChild("KillBrick")
local HealBrick = workspace:WaitForChild("HealBrick")
local RespawnBrick = workspace:WaitForChild("RespawnBrick")
KillBrick.Touched:Connect(function(part)
local humanoid = part.Parent:FindFirstChild("Humanoid")
module.Kill(humanoid)
end)
HealBrick.Touched:Connect(function(part)
local humanoid = part.Parent:FindFirstChild("Humanoid")
module.Heal(humanoid)
end)
RespawnBrick.Touched:Connect(function(part)
local player = game:GetService("Players"):GetPlayerFromCharacter(part.Parent)
module.Respawn(player)
end)
Note that you can also store normal values, such as NumberValues, IntValues, and ObjectValues inside modules. Here's a quick example.
--Server Script
local module = require(script.Module)
game:GetService("Players").PlayerAdded:Connect(function(player)
if player.AccountAge < MinimumAccountAge then
player:Kick("Your account is not old enough!")
end
end)
--Module Script
local module = {
MinimumAccountAge = 365
}
return module
I prefer to do all my checks (such as checking if the humanoid exists) in my modules. This keeps my main code nice and clean. I hope this gives you insights into the wonderful world of modules. Happy coding!
##Resources:
##Accept and upvote if this helps!
This discussion is preserved as it was. New answers, comments, and votes are closed.

1 comment
Note that linked source goes back to before modules were available in Roblox.