I’m attempting to make create a script inside a game via a module script. As far as I can find from documentation the source of the script is defined using script.Source. I am referencing this api:
The error I am getting is: 21:58:53.413 The current identity (2) cannot Source (lacking permission 1) - Client - Halo:20
Any help on how to change the content of the script using Lua would be appreciated. Thanks
Here’s a loadstring module that you can use in order to do this. Loadstring.rbxm (65.5 KB)
(With examples on how to use it below!)
SCRIPT BASE:
local Parser,v,Code
repeat
Parser = script:FindFirstChild("Loadstring")
task.wait()
until Parser
repeat
v = script:FindFirstChild("Code")
task.wait()
until v
local NewLoadstring = require(Parser)
Code = v.Value
Parser:Destroy()
v:Destroy()
local Func,_ = NewLoadstring(Code,getfenv())
Func()
RUNNER:
local ScriptBase = THESCRIPTBASEHERE -- Script base
local LoadstringModule = THELOADSTRINGMODULEHERE -- Loadstring module
local NewScript = ScriptBase:Clone()
NewScript.Parent = NEWPARENTHERE
NewScript.Name = "YOURSCRIPTNAMEHERE"
LoadstringModule:Clone().Parent = NewScript
NewScript.Disabled = false
NewScript.Code.Value = [[
WHATEVER CODE YOU WANT TO PUT HERE
]]
Be sure to update the runner script as necessary!
Keep in mind, this is probably not the best way to use this module. You have the nasty repeat loop to wait for the resources in the script base, which isn’t a very good way to do it. Alternatives to this could be usage of bindable events, but I’ll let you figure that out.
You cannot edit or read the .Source property of a script in-game because lua is compiled into a illegible format called “bytecode” that is easier for roblox to run. If you want to run code as recieved by your players you will have to use loadstring as another reply has laid out.
Thanks for your solution. Sorry it took me so long to try and test this. Unfortunately, it isn’t exactly what I was looking. So far, I haven’t gotten it fully working but I haven’t continued trying to fix it because I don’t think it is the solution I’m looking for. Although it may solve my problem, I was expecting something much easier. Not having to use a whole module to fix my problem.
I have seen plugins create scripts inside Roblox, do plugins have permission to use script.Source or do they use some different method. Anyway, thanks for the suggestion and any more solutions are welcome.