From 776e131e8d027059e90c1599ced56e382221cf9d Mon Sep 17 00:00:00 2001 From: Bitl Date: Tue, 7 Nov 2023 15:56:53 -0700 Subject: [PATCH] code from snapshot release, add new splashes --- Novetus/Novetus.Bootstrapper/LocalFuncs.cs | 2 + .../Novetus.Bootstrapper.csproj | 156 ------------------ Novetus/Novetus.Bootstrapper/NovetusLaunch.cs | 7 +- .../Novetus.Bootstrapper/NovetusLaunchForm.cs | 4 +- Novetus/Novetus.Bootstrapper/packages.config | 58 ------- Novetus/NovetusCore/Classes/UHWIDEngine.cs | 105 ++---------- .../StorageAndFunctions/FileManagement.cs | 2 + .../NovetusCore/StorageAndFunctions/Util.cs | 6 +- changelog.txt | 10 +- scripts/game/2006S-Shaders/CSMPFunctions.lua | 42 +++++ scripts/game/2006S/CSMPFunctions.lua | 42 +++++ scripts/game/2007E-Shaders/CSMPFunctions.lua | 42 +++++ scripts/game/2007E/CSMPFunctions.lua | 42 +++++ scripts/game/2007M-Shaders/CSMPFunctions.lua | 44 ++++- scripts/game/2007M/CSMPFunctions.lua | 42 +++++ scripts/game/2008M/CSMPFunctions.lua | 44 ++++- scripts/game/2009E-HD/CSMPFunctions.lua | 44 ++++- scripts/game/2009E/CSMPFunctions.lua | 44 ++++- scripts/game/2009L/CSMPFunctions.lua | 44 ++++- scripts/game/2010L/CSMPFunctions.lua | 44 ++++- scripts/launcher/info.ini | 2 +- scripts/launcher/splashes-special.txt | 1 + scripts/launcher/splashes.txt | 4 +- 23 files changed, 510 insertions(+), 321 deletions(-) delete mode 100644 Novetus/Novetus.Bootstrapper/packages.config diff --git a/Novetus/Novetus.Bootstrapper/LocalFuncs.cs b/Novetus/Novetus.Bootstrapper/LocalFuncs.cs index fbe5d71..7fca77b 100644 --- a/Novetus/Novetus.Bootstrapper/LocalFuncs.cs +++ b/Novetus/Novetus.Bootstrapper/LocalFuncs.cs @@ -1,5 +1,7 @@ #region Usings +#if !BASICLAUNCHER using NLog; +#endif using Novetus.Core; using System; using System.Diagnostics; diff --git a/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj b/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj index 9333d5f..7b04ba0 100644 --- a/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj +++ b/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj @@ -43,166 +43,16 @@ app.manifest - - ..\packages\Microsoft.Bcl.AsyncInterfaces.7.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll - - - ..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll - True - True - - - ..\packages\NLog.5.1.0\lib\net46\NLog.dll - - - ..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll - True - True - - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - ..\packages\System.Console.4.3.0\lib\net46\System.Console.dll - True - True - - - ..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll - True - True - - - ..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll - True - True - - - ..\packages\System.IO.4.3.0\lib\net462\System.IO.dll - True - True - - - ..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll - True - True - - - ..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll - True - True - - - ..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll - True - True - - - ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll - True - True - - - ..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll - True - True - - - ..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll - True - True - - - ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll - - - ..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll - True - True - - - ..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll - True - True - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll - True - True - - - ..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll - True - True - - - ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - ..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll - True - True - - - ..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll - True - True - - - ..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll - True - True - - - ..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll - True - True - - - ..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll - True - True - - - ..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll - True - True - - - ..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll - True - True - - - ..\packages\System.Text.Encodings.Web.7.0.0\lib\net462\System.Text.Encodings.Web.dll - - - ..\packages\System.Text.Json.7.0.3\lib\net462\System.Text.Json.dll - - - ..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll - True - True - - - ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll - - - ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll - @@ -211,11 +61,6 @@ - - ..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll - True - True - @@ -243,7 +88,6 @@ - SettingsSingleFileGenerator Settings.Designer.cs diff --git a/Novetus/Novetus.Bootstrapper/NovetusLaunch.cs b/Novetus/Novetus.Bootstrapper/NovetusLaunch.cs index f9a93e3..de63396 100644 --- a/Novetus/Novetus.Bootstrapper/NovetusLaunch.cs +++ b/Novetus/Novetus.Bootstrapper/NovetusLaunch.cs @@ -1,5 +1,7 @@ #region Usings +#if !BASICLAUNCHER using NLog; +#endif using Novetus.Core; using System; using System.IO; @@ -24,11 +26,6 @@ namespace Novetus.Bootstrapper Directory.CreateDirectory(GlobalPaths.LogDir); } - var config = new NLog.Config.LoggingConfiguration(); - var logfile = new NLog.Targets.FileTarget("logfile") { FileName = GlobalPaths.LogDir + "\\Bootstrapper-log-" + DateTime.Today.ToString("MM-dd-yyyy") + ".log" }; - config.AddRuleForAllLevels(logfile); - LogManager.Configuration = config; - Application.Run(new NovetusLaunchForm()); } } diff --git a/Novetus/Novetus.Bootstrapper/NovetusLaunchForm.cs b/Novetus/Novetus.Bootstrapper/NovetusLaunchForm.cs index 54603d4..37f045d 100644 --- a/Novetus/Novetus.Bootstrapper/NovetusLaunchForm.cs +++ b/Novetus/Novetus.Bootstrapper/NovetusLaunchForm.cs @@ -1,4 +1,6 @@ -using NLog; +#if !BASICLAUNCHER +using NLog; +#endif using Novetus.Core; using System; using System.Drawing; diff --git a/Novetus/Novetus.Bootstrapper/packages.config b/Novetus/Novetus.Bootstrapper/packages.config deleted file mode 100644 index 387d921..0000000 --- a/Novetus/Novetus.Bootstrapper/packages.config +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Novetus/NovetusCore/Classes/UHWIDEngine.cs b/Novetus/NovetusCore/Classes/UHWIDEngine.cs index 205586c..c6a9487 100644 --- a/Novetus/NovetusCore/Classes/UHWIDEngine.cs +++ b/Novetus/NovetusCore/Classes/UHWIDEngine.cs @@ -5,76 +5,21 @@ using System.Security.Cryptography; using System.Text; using System.IO; using System.Runtime.InteropServices; +using System.Text.RegularExpressions; #endregion //https://github.com/davcs86/csharp-uhwid -//merged into one class +//using only cpu id. namespace Novetus.Core { #region UHWIDEngine public static class UHWIDEngine { - public static string SimpleUid { get; private set; } - - public static string AdvancedUid { get; private set; } - - static UHWIDEngine() - { - var volumeSerial = DiskId.GetDiskId(); - var cpuId = CpuId.GetCpuId(); - var windowsId = WindowsId.GetWindowsId(); - SimpleUid = volumeSerial + cpuId; - AdvancedUid = SimpleUid + windowsId; - } - } - #endregion - - #region DiskId - internal class DiskId - { - public static string GetDiskId() - { - return GetDiskId(""); - } - private static string GetDiskId(string diskLetter) - { - //Find first drive - if (string.IsNullOrEmpty(diskLetter)) - { - foreach (var compDrive in DriveInfo.GetDrives()) - { - if (compDrive.IsReady) - { - diskLetter = compDrive.RootDirectory.ToString(); - break; - } - } - } - if (!string.IsNullOrEmpty(diskLetter) && diskLetter.EndsWith(":\\")) - { - //C:\ -> C - diskLetter = diskLetter.Substring(0, diskLetter.Length - 2); - } - var disk = new ManagementObject(@"win32_logicaldisk.deviceid=""" + diskLetter + @":"""); - disk.Get(); - - var volumeSerial = disk["VolumeSerialNumber"].ToString(); - disk.Dispose(); - - return volumeSerial; - } - } - #endregion - - #region CpuId - internal static class CpuId - { - [DllImport("user32", EntryPoint = "CallWindowProcW", CharSet = CharSet.Unicode, SetLastError = true, - ExactSpelling = true)] + ExactSpelling = true)] private static extern IntPtr CallWindowProcW([In] byte[] bytes, IntPtr hWnd, int msg, [In, Out] byte[] wParam, - IntPtr lParam); + IntPtr lParam); [return: MarshalAs(UnmanagedType.Bool)] [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)] @@ -82,6 +27,16 @@ namespace Novetus.Core const int PAGE_EXECUTE_READWRITE = 0x40; + public static string AdvancedUid { get; private set; } + + static UHWIDEngine() + { + var cpuId = GetCpuId(); + Regex rx = new Regex(@"[A-Za-z.]"); + var ver = rx.Replace(GlobalVars.ProgramInformation.Version, ""); + AdvancedUid = SecurityFuncs.Encode(cpuId + ver); + } + public static string GetCpuId() { var sn = new byte[8]; @@ -145,36 +100,4 @@ namespace Novetus.Core } } #endregion - - #region WindowsId - internal class WindowsId - { - public static string GetWindowsId() - { - var windowsInfo = ""; - var managClass = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem"); - - var managCollec = managClass.Get(); - - var is64Bits = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")); - - foreach (var o in managCollec) - { - var managObj = (ManagementObject)o; - windowsInfo = managObj.Properties["Caption"].Value + Environment.UserName + (string)managObj.Properties["Version"].Value; - break; - } - windowsInfo = windowsInfo.Replace(" ", ""); - windowsInfo = windowsInfo.Replace("Windows", ""); - windowsInfo = windowsInfo.Replace("windows", ""); - windowsInfo += (is64Bits) ? " 64bit" : " 32bit"; - - //md5 hash of the windows version - var md5Hasher = MD5.Create(); - var wi = md5Hasher.ComputeHash(Encoding.Default.GetBytes(windowsInfo)); - var wiHex = BitConverter.ToString(wi).Replace("-", ""); - return wiHex; - } - } - #endregion } \ No newline at end of file diff --git a/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs b/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs index 09c3646..3511b26 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs @@ -13,7 +13,9 @@ using System.Windows.Forms; using System.Xml.Serialization; using System.Xml; using System.Xml.Linq; +#if !BASICLAUNCHER using System.Text.Json; +#endif #endregion namespace Novetus.Core diff --git a/Novetus/NovetusCore/StorageAndFunctions/Util.cs b/Novetus/NovetusCore/StorageAndFunctions/Util.cs index 6957c4a..92329a1 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/Util.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/Util.cs @@ -10,7 +10,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Net; +#if !BASICLAUNCHER using NLog; +#endif using System.Text.RegularExpressions; using System.Drawing.Imaging; using System.Runtime.InteropServices; @@ -504,9 +506,10 @@ namespace Novetus.Core return Task.Delay(milliseconds); #endif } - public static void LogPrint(string text, int type = 1) { + //TODO, remove nlog support for bootstrapper completely. this is a temp fix. +#if !BASICLAUNCHER Logger log = LogManager.GetCurrentClassLogger(); switch (type) @@ -521,6 +524,7 @@ namespace Novetus.Core log.Info(text); break; } +#endif } public static void LogExceptions(Exception ex) diff --git a/changelog.txt b/changelog.txt index aed73a3..99f9fa6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,14 @@ -EDGE Snapshot v23.8574.19965.1 + +Enhancements: +- Added proper metatable protection on all affected clients. (2006S-2010L) +---------------------------------------------------------------------------- +EDGE Snapshot v23.8700.30967.1 Notes: - Novetus' license has switched to the GPL 3.0. +- 💙 + +Enhancements: +- Improved tripcode generation to fix various issues. Fixes: - Fixed tripcodes not working diff --git a/scripts/game/2006S-Shaders/CSMPFunctions.lua b/scripts/game/2006S-Shaders/CSMPFunctions.lua index 2ede04c..fea13c9 100644 --- a/scripts/game/2006S-Shaders/CSMPFunctions.lua +++ b/scripts/game/2006S-Shaders/CSMPFunctions.lua @@ -465,3 +465,45 @@ _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo _G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2006S/CSMPFunctions.lua b/scripts/game/2006S/CSMPFunctions.lua index fed6757..812794a 100644 --- a/scripts/game/2006S/CSMPFunctions.lua +++ b/scripts/game/2006S/CSMPFunctions.lua @@ -465,3 +465,45 @@ _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo _G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2007E-Shaders/CSMPFunctions.lua b/scripts/game/2007E-Shaders/CSMPFunctions.lua index c8ca043..fbddbaf 100644 --- a/scripts/game/2007E-Shaders/CSMPFunctions.lua +++ b/scripts/game/2007E-Shaders/CSMPFunctions.lua @@ -523,3 +523,45 @@ _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo _G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2007E/CSMPFunctions.lua b/scripts/game/2007E/CSMPFunctions.lua index d2474dc..418ca2e 100644 --- a/scripts/game/2007E/CSMPFunctions.lua +++ b/scripts/game/2007E/CSMPFunctions.lua @@ -523,3 +523,45 @@ _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo _G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2007M-Shaders/CSMPFunctions.lua b/scripts/game/2007M-Shaders/CSMPFunctions.lua index 24d5090..2562b3b 100644 --- a/scripts/game/2007M-Shaders/CSMPFunctions.lua +++ b/scripts/game/2007M-Shaders/CSMPFunctions.lua @@ -578,4 +578,46 @@ end _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo -_G.CSStudio=CSStudio \ No newline at end of file +_G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2007M/CSMPFunctions.lua b/scripts/game/2007M/CSMPFunctions.lua index c8cde72..db3abe9 100644 --- a/scripts/game/2007M/CSMPFunctions.lua +++ b/scripts/game/2007M/CSMPFunctions.lua @@ -579,3 +579,45 @@ _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo _G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2008M/CSMPFunctions.lua b/scripts/game/2008M/CSMPFunctions.lua index 095b613..5de80a1 100644 --- a/scripts/game/2008M/CSMPFunctions.lua +++ b/scripts/game/2008M/CSMPFunctions.lua @@ -697,4 +697,46 @@ end _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo -_G.CSStudio=CSStudio \ No newline at end of file +_G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2009E-HD/CSMPFunctions.lua b/scripts/game/2009E-HD/CSMPFunctions.lua index ec70627..c95ab2d 100644 --- a/scripts/game/2009E-HD/CSMPFunctions.lua +++ b/scripts/game/2009E-HD/CSMPFunctions.lua @@ -791,4 +791,46 @@ end _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo -_G.CSStudio=CSStudio \ No newline at end of file +_G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2009E/CSMPFunctions.lua b/scripts/game/2009E/CSMPFunctions.lua index a171848..ae5d933 100644 --- a/scripts/game/2009E/CSMPFunctions.lua +++ b/scripts/game/2009E/CSMPFunctions.lua @@ -791,4 +791,46 @@ end _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo -_G.CSStudio=CSStudio \ No newline at end of file +_G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2009L/CSMPFunctions.lua b/scripts/game/2009L/CSMPFunctions.lua index 46c398a..27c966a 100644 --- a/scripts/game/2009L/CSMPFunctions.lua +++ b/scripts/game/2009L/CSMPFunctions.lua @@ -797,4 +797,46 @@ end _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo -_G.CSStudio=CSStudio \ No newline at end of file +_G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/game/2010L/CSMPFunctions.lua b/scripts/game/2010L/CSMPFunctions.lua index cdab3e7..517a26d 100644 --- a/scripts/game/2010L/CSMPFunctions.lua +++ b/scripts/game/2010L/CSMPFunctions.lua @@ -798,4 +798,46 @@ end _G.CSServer=CSServer _G.CSConnect=CSConnect _G.CSSolo=CSSolo -_G.CSStudio=CSStudio \ No newline at end of file +_G.CSStudio=CSStudio + +-- credit to KeyboardCombination +local succ = pcall(function() --check if the metatables are already read only lol + local canChange = getmetatable(game.Close); + canChange.__metatable = canChange.__metatable +end) + +if not succ then + return; +end + +function readonlytable(table) + return setmetatable({}, { + __index = table, + __newindex = function(table, key, value) + error("Attempt to modify read-only table") + end, + __metatable = false + }); +end + +function readonlytablechildren(table) + for i,v in pairs(table) do + if type(v)=="table" and table[i]~=_G._G then + readonlytablechildren(table[i]) + table[i] = readonlytable(table[i]) + end + if type(v)=="userdata" then + local mt = getmetatable(table[i]) + if mt~=nil and mt~=false then + mt.__metatable=false + end + end + end +end +_G.rawset=nil +readonlytablechildren(_G) +_G._G = readonlytable(_G) +mt = getmetatable(game.Changed) +mt.__metatable=false +mt = getmetatable("curse you roblox") +mt.__metatable=false \ No newline at end of file diff --git a/scripts/launcher/info.ini b/scripts/launcher/info.ini index fce8d45..f30735a 100644 --- a/scripts/launcher/info.ini +++ b/scripts/launcher/info.ini @@ -10,5 +10,5 @@ ExtendedVersionNumber=True //ExtendedVersionTemplate=%version% Snapshot v23.%build%.%revision%.%extended-revision% ExtendedVersionTemplate=EDGE Snapshot v23.%build%.%revision%.%extended-revision% ExtendedVersionRevision=1 -InitialBootup=True +InitialBootup=False IsLite=False diff --git a/scripts/launcher/splashes-special.txt b/scripts/launcher/splashes-special.txt index 244e55b..8ea221d 100644 --- a/scripts/launcher/splashes-special.txt +++ b/scripts/launcher/splashes-special.txt @@ -1,5 +1,6 @@ Happy New Year!|Have a happy %year%!|1/1 RIP Erik Cassel|Erik Cassel, was a co-founder, administrator%newline%and former VP of Engineering of Roblox.|2/11 +Blueheart Forever.|Dedicated to Pepper and Sophie.|4/14 smoke weed every day|blaze it|4/20 Happy Birthday, Bitl!|Bitl is the developer of Novetus and RBXLegacy.|6/10 Happy Pride Month!|6/1-6/30-6/7-6/15 diff --git a/scripts/launcher/splashes.txt b/scripts/launcher/splashes.txt index a23213c..7923d3e 100644 --- a/scripts/launcher/splashes.txt +++ b/scripts/launcher/splashes.txt @@ -270,4 +270,6 @@ Supports USB C! NOW. UNDER. MILITARY. COMMAND. ONE MILLION DOLLARS! It's the new wave of the future! -In the face of extermination, say "FUCK YOU"!|Dedicated to Pepper \ No newline at end of file +In the face of extermination, say "FUCK YOU"!|Dedicated to Pepper +roblox for steam deck when|Just fuckin play novetus +you're still standing here, despite everything|Dedicated to Pepper \ No newline at end of file