Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do I make this evaluator not print twice?

Asked by 6 years ago

So I was having trouble with my evaluator and global variables, and since I didn't want to rewrite every variable, I added {__index = _G } after my setfenv my current code looks like this


script.Parent.MouseButton1Click:Connect(function() local eval = script.Parent.Parent.Input.Text local output = '' local environment = setmetatable({ ------------------------------------------- hs = game:GetService("HttpService"), ------------------------------------------- print = function(...) local args = {...} for i = 1, select('#', ...) do args[i] = tostring(args[i]) end output = output .. table.concat(args, '\t') end ------------------------------------------- },{__index = _G} ) local func, err = loadstring(eval) if func then setfenv(func, environment){__index = _G} local ok, ret = pcall(func) if ret ~= nil then output = tostring(ret) .. '\n' end else output = err end script.Parent.Parent.Output.Text = output end)

When doing something like printing Hello World!, it prints

Hello World!Hello World!

and I have no idea why. It did not do this before I added global variables, and I think It has something to do with me having the print function in my meta table, but I don't know.

Answer this question