├── .gitattributes ├── .gitignore ├── LICENSE ├── LInjector ├── .editorconfig ├── LInjector.sln └── LInjector │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── Classes │ ├── ConfigHandler.cs │ ├── ConsoleManager.cs │ ├── CustomCw.cs │ ├── FluxInterfacing.cs │ ├── FunctionWatch.cs │ ├── InternalFunctions.cs │ ├── LogToConsole.cs │ ├── MonacoInterfacer.cs │ ├── Notifications.cs │ ├── RPCManager.cs │ ├── ThreadBox.cs │ └── Updater.cs │ ├── FodyWeavers.xml │ ├── FodyWeavers.xsd │ ├── LInjector.csproj │ ├── LInjector.csproj.user │ ├── Linjector.ico │ ├── Pages │ ├── TabSystem.xaml │ └── TabSystem.xaml.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ ├── Excel.png │ ├── Icons │ │ ├── Attach.png │ │ ├── Console.png │ │ ├── Discord.png │ │ ├── Execute.png │ │ ├── GitHub.png │ │ ├── Place.png │ │ ├── Script.png │ │ └── Settings.png │ ├── Internal │ │ └── Init.lua │ ├── LInjector.png │ ├── LInjectorr.png │ ├── depso.png │ └── linj_shadow.png │ ├── Windows │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── SplashScreen.xaml │ └── SplashScreen.xaml.cs │ ├── app.manifest │ └── packages.config ├── Monaco ├── LICENSE ├── README.md ├── index.html └── vs │ ├── base │ ├── browser │ │ └── ui │ │ │ └── codicons │ │ │ └── codicon │ │ │ └── codicon.ttf │ └── worker │ │ └── workerMain.js │ ├── basic-languages │ ├── lua │ │ ├── autocompletes.js │ │ ├── autocompletes │ │ │ ├── base.js │ │ │ ├── classes.js │ │ │ ├── classes │ │ │ │ ├── DataModel.js │ │ │ │ ├── Enum.js │ │ │ │ ├── EnumItem.js │ │ │ │ ├── Enums.js │ │ │ │ ├── Instance.js │ │ │ │ ├── Model.js │ │ │ │ ├── RBXScriptSignal.js │ │ │ │ ├── ServiceProvider.js │ │ │ │ └── Workspace.js │ │ │ ├── functions-krnl.js │ │ │ ├── functions.js │ │ │ ├── globals.js │ │ │ ├── keywords.js │ │ │ ├── libraries │ │ │ │ ├── Drawing.js │ │ │ │ ├── Krnl.js │ │ │ │ ├── debug.js │ │ │ │ ├── math.js │ │ │ │ ├── table.js │ │ │ │ └── task.js │ │ │ ├── modules-table.js │ │ │ ├── modules.js │ │ │ ├── params │ │ │ │ ├── DataModelServices.js │ │ │ │ ├── DrawingTypes.js │ │ │ │ └── InstanceClasses.js │ │ │ └── snippets.js │ │ ├── lua.js │ │ └── snippets.js │ └── monaco.contribution.js │ ├── editor │ ├── contrib │ │ └── suggest │ │ │ └── media │ │ │ ├── String_16x.svg │ │ │ └── String_inverse_16x.svg │ ├── editor.main.css │ ├── editor.main.js │ ├── editor.main.nls.de.js │ ├── editor.main.nls.es.js │ ├── editor.main.nls.fr.js │ ├── editor.main.nls.it.js │ ├── editor.main.nls.ja.js │ ├── editor.main.nls.js │ ├── editor.main.nls.ko.js │ ├── editor.main.nls.ru.js │ ├── editor.main.nls.zh-cn.js │ ├── editor.main.nls.zh-tw.js │ └── standalone │ │ └── browser │ │ └── quickOpen │ │ └── symbol-sprite.svg │ ├── language │ ├── css │ │ ├── cssMode.js │ │ └── cssWorker.js │ ├── html │ │ ├── htmlMode.js │ │ └── htmlWorker.js │ ├── json │ │ ├── jsonMode.js │ │ └── jsonWorker.js │ └── typescript │ │ ├── lib │ │ └── typescriptServices.js │ │ ├── tsMode.js │ │ └── tsWorker.js │ └── loader.js ├── README.md └── Redistributables ├── DLLs ├── FluxteamAPI.dll └── Module.dll ├── Lua Scripts ├── GetProperities.lua └── Init.lua └── Pinned_Scripts.json /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd 364 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023, The LInjector Project 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LInjector/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{cs,vb}] 2 | 3 | # IDE0044: Add readonly modifier 4 | dotnet_diagnostic.IDE0044.severity = none 5 | 6 | # Default severity for all analyzer diagnostics 7 | dotnet_analyzer_diagnostic.severity = none 8 | 9 | [*.{cs,vb}] 10 | #### Naming styles #### 11 | 12 | # Naming rules 13 | 14 | dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion 15 | dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface 16 | dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i 17 | 18 | dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion 19 | dotnet_naming_rule.types_should_be_pascal_case.symbols = types 20 | dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case 21 | 22 | dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion 23 | dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members 24 | dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case 25 | 26 | # Symbol specifications 27 | 28 | dotnet_naming_symbols.interface.applicable_kinds = interface 29 | dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 30 | dotnet_naming_symbols.interface.required_modifiers = 31 | 32 | dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum 33 | dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 34 | dotnet_naming_symbols.types.required_modifiers = 35 | 36 | dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method 37 | dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 38 | dotnet_naming_symbols.non_field_members.required_modifiers = 39 | 40 | # Naming styles 41 | 42 | dotnet_naming_style.begins_with_i.required_prefix = I 43 | dotnet_naming_style.begins_with_i.required_suffix = 44 | dotnet_naming_style.begins_with_i.word_separator = 45 | dotnet_naming_style.begins_with_i.capitalization = pascal_case 46 | 47 | dotnet_naming_style.pascal_case.required_prefix = 48 | dotnet_naming_style.pascal_case.required_suffix = 49 | dotnet_naming_style.pascal_case.word_separator = 50 | dotnet_naming_style.pascal_case.capitalization = pascal_case 51 | 52 | dotnet_naming_style.pascal_case.required_prefix = 53 | dotnet_naming_style.pascal_case.required_suffix = 54 | dotnet_naming_style.pascal_case.word_separator = 55 | dotnet_naming_style.pascal_case.capitalization = pascal_case 56 | dotnet_style_operator_placement_when_wrapping = beginning_of_line 57 | tab_width = 4 58 | indent_size = 4 59 | end_of_line = crlf 60 | dotnet_style_coalesce_expression = true:suggestion 61 | dotnet_style_null_propagation = true:suggestion 62 | dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion 63 | dotnet_style_prefer_auto_properties = true:silent 64 | dotnet_style_object_initializer = true:suggestion 65 | dotnet_style_collection_initializer = true:suggestion 66 | dotnet_style_prefer_simplified_boolean_expressions = true:suggestion 67 | dotnet_style_prefer_conditional_expression_over_assignment = true:silent 68 | 69 | [*.cs] 70 | csharp_indent_labels = one_less_than_current 71 | csharp_using_directive_placement = outside_namespace:silent 72 | csharp_prefer_simple_using_statement = true:suggestion 73 | csharp_prefer_braces = true:silent 74 | csharp_style_namespace_declarations = block_scoped:silent 75 | csharp_style_prefer_method_group_conversion = true:silent 76 | csharp_style_prefer_top_level_statements = true:silent 77 | csharp_style_prefer_primary_constructors = true:suggestion 78 | csharp_style_expression_bodied_methods = false:silent 79 | csharp_style_expression_bodied_constructors = false:silent 80 | csharp_style_expression_bodied_operators = false:silent 81 | csharp_style_expression_bodied_properties = true:silent 82 | csharp_style_expression_bodied_indexers = true:silent 83 | csharp_style_expression_bodied_accessors = true:silent 84 | csharp_style_expression_bodied_lambdas = true:silent 85 | csharp_style_expression_bodied_local_functions = false:silent 86 | csharp_space_around_binary_operators = before_and_after 87 | -------------------------------------------------------------------------------- /LInjector/LInjector.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.7.34009.444 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LInjector", "LInjector\LInjector.csproj", "{4F8888B1-FB42-42D4-B972-31A18B7F142D}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x64 = Debug|x64 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Debug|x64.ActiveCfg = Debug|x64 21 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Debug|x64.Build.0 = Debug|x64 22 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Debug|x86.ActiveCfg = Debug|x86 23 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Debug|x86.Build.0 = Debug|x86 24 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Release|x64.ActiveCfg = Release|x64 27 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Release|x64.Build.0 = Release|x64 28 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Release|x86.ActiveCfg = Release|x86 29 | {4F8888B1-FB42-42D4-B972-31A18B7F142D}.Release|x86.Build.0 = Release|x86 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {0D347175-374B-4288-B099-BADD79A2B2DF} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /LInjector/LInjector/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /LInjector/LInjector/App.xaml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /LInjector/LInjector/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace LInjector 4 | { 5 | /// 6 | /// Interaction logic for App.xaml 7 | /// 8 | public partial class App : Application 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/ConfigHandler.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | 5 | namespace LInjector.Classes 6 | { 7 | public class ConfigHandler 8 | { 9 | private static readonly string ConfigPath = ".\\config.json"; 10 | 11 | public static bool topmost = false; 12 | public static bool autoattach = false; 13 | public static bool splashscreen { get; set; } 14 | public static bool sizable = false; 15 | public static bool debug = false; 16 | public static bool discord_rpc { get; set; } 17 | public static bool save_tabs = false; 18 | 19 | 20 | public static void DoConfig() 21 | { 22 | if (!File.Exists(ConfigPath)) 23 | { 24 | var config = new Dictionary 25 | { 26 | { "autoattach", false }, 27 | { "splashscreen", true }, 28 | { "debug", false }, 29 | { "topmost", false }, 30 | { "discord_rpc", false }, 31 | { "save_tabs", false } 32 | }; 33 | 34 | string jsonString = JsonConvert.SerializeObject(config, Formatting.Indented); 35 | File.Create(ConfigPath).Close(); 36 | File.WriteAllText(ConfigPath, jsonString); 37 | } 38 | else if (File.Exists(ConfigPath)) 39 | { 40 | string jsonString = File.ReadAllText(ConfigPath); 41 | var config = JsonConvert.DeserializeObject>(jsonString); 42 | 43 | if (config.TryGetValue("autoattach", out object autoAttachValue) && (bool)autoAttachValue) 44 | { 45 | autoattach = true; 46 | } 47 | 48 | if (config.TryGetValue("splashscreen", out object splashscreenValue) && (bool)splashscreenValue) 49 | { 50 | splashscreen = true; 51 | } 52 | 53 | if (config.TryGetValue("debug", out object debugValue) && (bool)debugValue) 54 | { 55 | ConsoleManager.Initialize(); 56 | ConsoleManager.ShowConsole(); 57 | debug = true; 58 | } 59 | 60 | if (config.TryGetValue("topmost", out object topMostValue) && (bool)topMostValue) 61 | { 62 | topmost = true; 63 | } 64 | 65 | if (config.TryGetValue("discord_rpc", out object discord_rpc) && (bool)discord_rpc) 66 | { 67 | RPCManager.isEnabled = true; 68 | discord_rpc = true; 69 | } 70 | 71 | if (config.TryGetValue("safe_mode", out object safe_mode) && (bool)safe_mode) 72 | { 73 | safe_mode = true; 74 | } 75 | 76 | if (config.TryGetValue("save_tabs", out object save_tabsA) && (bool)save_tabsA) 77 | { 78 | save_tabs = true; 79 | } 80 | } 81 | } 82 | 83 | public static void SetConfigValue(string Name, bool Value) 84 | { 85 | try 86 | { 87 | string jsonContent = File.ReadAllText(ConfigPath); 88 | var configDict = JsonConvert.DeserializeObject>(jsonContent); 89 | 90 | if (configDict.ContainsKey(Name)) 91 | { 92 | configDict[Name] = Value; 93 | } 94 | else 95 | { 96 | CustomCw.Cw($"The value '{Name}' doesn't exist in the config", false, "error"); 97 | return; 98 | } 99 | 100 | string updatedJson = JsonConvert.SerializeObject(configDict, Formatting.Indented); 101 | File.WriteAllText(ConfigPath, updatedJson); 102 | } 103 | catch { } 104 | } 105 | } 106 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/ConsoleManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace LInjector.Classes 6 | { 7 | public static class ConsoleManager 8 | { 9 | public static bool isConsoleVisible; 10 | 11 | private const int MF_BYCOMMAND = 0x00000000; 12 | public const int SC_CLOSE = 0xF060; 13 | 14 | [DllImport("user32.dll")] 15 | public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags); 16 | 17 | [DllImport("user32.dll")] 18 | private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); 19 | 20 | [DllImport("kernel32.dll", ExactSpelling = true)] 21 | private static extern IntPtr GetConsoleWindow(); 22 | 23 | [DllImport("kernel32.dll")] 24 | private static extern bool SetConsoleCtrlHandler(ConsoleCtrlHandlerDelegate handlerRoutine, bool add); 25 | 26 | private static bool ConsoleCtrlHandler(int eventType) 27 | { 28 | if (eventType == 2) 29 | { 30 | HideConsole(); 31 | return true; 32 | } 33 | 34 | return false; 35 | } 36 | 37 | public static void ShowConsole() 38 | { 39 | if (!isConsoleVisible) 40 | { 41 | AllocConsole(); 42 | Console.Title = "LInjector"; 43 | isConsoleVisible = true; 44 | var writer = new StreamWriter(Console.OpenStandardOutput()); 45 | Console.SetOut(writer); 46 | DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_CLOSE, MF_BYCOMMAND); 47 | } 48 | } 49 | 50 | public static void HideConsole() 51 | { 52 | if (isConsoleVisible) 53 | { 54 | FreeConsole(); 55 | isConsoleVisible = false; 56 | } 57 | } 58 | 59 | public static void Initialize() 60 | { 61 | SetConsoleCtrlHandler(ConsoleCtrlHandler, true); 62 | DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_CLOSE, MF_BYCOMMAND); 63 | } 64 | 65 | [DllImport("kernel32.dll")] 66 | private static extern bool AllocConsole(); 67 | 68 | [DllImport("kernel32.dll")] 69 | private static extern bool FreeConsole(); 70 | 71 | [DllImport("kernel32.dll")] 72 | private static extern bool AttachConsole(int dwProcessId); 73 | 74 | [DllImport("user32.dll")] 75 | private static extern IntPtr GetForegroundWindow(); 76 | 77 | [DllImport("user32.dll")] 78 | private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId); 79 | 80 | private delegate bool ConsoleCtrlHandlerDelegate(int eventType); 81 | } 82 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/CustomCw.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace LInjector.Classes 5 | { 6 | public static class CustomCw 7 | { 8 | private static ConsoleColor OriginalForeColor = Console.ForegroundColor; 9 | 10 | public static void Cw(string content, bool timestamp = false, string type = "") 11 | { 12 | var writer = new StreamWriter(Console.OpenStandardOutput()); 13 | writer.AutoFlush = true; 14 | Console.SetOut(writer); 15 | 16 | if (timestamp == true) 17 | { 18 | switch (type) 19 | { 20 | case "error": 21 | Console.ForegroundColor = ConsoleColor.Red; 22 | Console.WriteLine($"{ts()} [ERROR] {content}"); 23 | rscolor(); 24 | break; 25 | case "warning": 26 | Console.ForegroundColor = ConsoleColor.Yellow; 27 | Console.WriteLine($"{ts()} [WARNING] {content}"); 28 | rscolor(); 29 | break; 30 | case "debug": 31 | Console.ForegroundColor = ConsoleColor.DarkGray; 32 | Console.WriteLine($"{ts()} [DEBUG] {content}"); 33 | rscolor(); 34 | break; 35 | case "info": 36 | Console.ForegroundColor = ConsoleColor.Blue; 37 | Console.WriteLine($"{ts()} [INFO] {content}"); 38 | rscolor(); 39 | break; 40 | case "msgbox": 41 | Console.ForegroundColor = ConsoleColor.Blue; 42 | Console.WriteLine($"{ts()} [Message Box] {content}"); 43 | rscolor(); 44 | break; 45 | case "roblox": 46 | Console.ForegroundColor = ConsoleColor.Red; 47 | Console.WriteLine($"{ts()} [ROBLOX] {content}"); 48 | rscolor(); 49 | break; 50 | default: 51 | Console.ForegroundColor = ConsoleColor.Gray; 52 | Console.WriteLine($"{ts()}{content}"); 53 | rscolor(); 54 | break; 55 | } 56 | } 57 | else 58 | { 59 | switch (type) 60 | { 61 | case "error": 62 | Console.ForegroundColor = ConsoleColor.Red; 63 | Console.WriteLine($"[ERROR] {content}"); 64 | rscolor(); 65 | break; 66 | case "warning": 67 | Console.ForegroundColor = ConsoleColor.Yellow; 68 | Console.WriteLine($"[WARNING] {content}"); 69 | rscolor(); 70 | break; 71 | case "info": 72 | Console.ForegroundColor = ConsoleColor.Blue; 73 | Console.WriteLine($"[INFO] {content}"); 74 | rscolor(); 75 | break; 76 | case "msgbox": 77 | Console.ForegroundColor = ConsoleColor.Blue; 78 | Console.WriteLine($"[Message Box] {content}"); 79 | rscolor(); 80 | break; 81 | case "debug": 82 | Console.ForegroundColor = ConsoleColor.DarkGray; 83 | Console.WriteLine($"[DEBUG] {content}"); 84 | rscolor(); 85 | break; 86 | case "roblox": 87 | Console.ForegroundColor = ConsoleColor.Red; 88 | Console.WriteLine($"[ROBLOX] {content}"); 89 | rscolor(); 90 | break; 91 | default: 92 | Console.ForegroundColor = ConsoleColor.Gray; 93 | Console.WriteLine($"{content}"); 94 | rscolor(); 95 | break; 96 | 97 | } 98 | } 99 | } 100 | 101 | public static void rconsoleprint(string content, string color = "lgray") 102 | { 103 | var writer = new StreamWriter(Console.OpenStandardOutput()); 104 | writer.AutoFlush = true; 105 | Console.SetOut(writer); 106 | 107 | switch (color) 108 | { 109 | case "black": 110 | Console.ForegroundColor = ConsoleColor.Black; 111 | Console.WriteLine(content); 112 | rscolor(); 113 | break; 114 | case "blue": 115 | Console.ForegroundColor = ConsoleColor.Blue; 116 | Console.WriteLine(content); 117 | rscolor(); 118 | break; 119 | case "dblue": 120 | Console.ForegroundColor = ConsoleColor.Magenta; 121 | Console.WriteLine(content); 122 | rscolor(); 123 | break; 124 | case "green": 125 | Console.ForegroundColor = ConsoleColor.Green; 126 | Console.WriteLine(content); 127 | rscolor(); 128 | break; 129 | case "cyan": 130 | Console.ForegroundColor = ConsoleColor.Cyan; 131 | Console.WriteLine(content); 132 | rscolor(); 133 | break; 134 | case "red": 135 | Console.ForegroundColor = ConsoleColor.Red; 136 | Console.WriteLine(content); 137 | rscolor(); 138 | break; 139 | case "magenta": 140 | Console.ForegroundColor = ConsoleColor.Magenta; 141 | Console.WriteLine(content); 142 | rscolor(); 143 | break; 144 | case "brown": 145 | Console.ForegroundColor = ConsoleColor.DarkYellow; 146 | Console.WriteLine(content); 147 | rscolor(); 148 | break; 149 | case "lgray": 150 | Console.ForegroundColor = ConsoleColor.Gray; 151 | Console.WriteLine(content); 152 | rscolor(); 153 | break; 154 | case "dgray": 155 | Console.ForegroundColor = ConsoleColor.DarkGray; 156 | Console.WriteLine(content); 157 | rscolor(); 158 | break; 159 | case "white": 160 | Console.ForegroundColor = ConsoleColor.White; 161 | Console.WriteLine(content); 162 | rscolor(); 163 | break; 164 | case "info": 165 | Console.ForegroundColor = ConsoleColor.Blue; 166 | Console.WriteLine(content); 167 | rscolor(); 168 | break; 169 | case "warn": 170 | Console.ForegroundColor = ConsoleColor.Yellow; 171 | Console.WriteLine(content); 172 | rscolor(); 173 | break; 174 | case "err": 175 | Console.ForegroundColor = ConsoleColor.Red; 176 | Console.WriteLine(content); 177 | rscolor(); 178 | break; 179 | default: 180 | Console.ForegroundColor = ConsoleColor.Gray; 181 | Console.WriteLine(content); 182 | rscolor(); 183 | break; 184 | } 185 | } 186 | 187 | private static void rscolor() 188 | { 189 | Console.ForegroundColor = OriginalForeColor; 190 | } 191 | 192 | private static string ts() 193 | { 194 | return "[ " + DateTime.Now.ToString("HH:mm:ss") + " ]"; 195 | } 196 | } 197 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/FluxInterfacing.cs: -------------------------------------------------------------------------------- 1 | using LInjector.Windows; 2 | using System; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Runtime.InteropServices; 7 | using System.Security.AccessControl; 8 | using System.Security.Principal; 9 | using System.Text; 10 | using System.Windows.Forms; 11 | 12 | /* 13 | * 14 | * ░▒█▀▀▀░█░░█░▒█░█░█░█░▒█░█▀▀░░░█▀▀▄░▒█▀▀█░▀█▀ 15 | * ░▒█▀▀░░█░░█░▒█░▄▀▄░█░▒█░▀▀▄░░▒█▄▄█░▒█▄▄█░▒█░ 16 | * ░▒█░░░░▀▀░░▀▀▀░▀░▀░░▀▀▀░▀▀▀░░▒█░▒█░▒█░░░░▄█▄ 17 | * 18 | * Fluxus UWP API (https://fluxteam.net) 19 | * Provided by Fluxteam. 20 | */ 21 | 22 | namespace LInjector.Classes 23 | { 24 | 25 | public static class FluxInterfacing 26 | { 27 | static MainWindow App = new MainWindow(); 28 | 29 | public enum Result : uint 30 | { 31 | Success, 32 | DLLNotFound, 33 | OpenProcFail, 34 | AllocFail, 35 | LoadLibFail, 36 | AlreadyInjected, 37 | ProcNotOpen, 38 | Unknown 39 | } 40 | 41 | public static string dll_path; 42 | 43 | public static IntPtr phandle; 44 | 45 | public static int pid; 46 | 47 | private static readonly IntPtr NULL = (IntPtr)0; 48 | 49 | [DllImport("kernel32.dll", SetLastError = true)] 50 | public static extern IntPtr OpenProcess(uint access, bool inhert_handle, int pid); 51 | 52 | [DllImport("kernel32.dll", SetLastError = true)] 53 | private static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, IntPtr dwSize, 54 | uint flAllocationType, uint flProtect); 55 | 56 | [DllImport("kernel32.dll", SetLastError = true)] 57 | private static extern int WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, 58 | IntPtr nSize, int lpNumberOfBytesWritten); 59 | 60 | [DllImport("kernel32.dll", SetLastError = true)] 61 | private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); 62 | 63 | [DllImport("kernel32.dll", SetLastError = true)] 64 | private static extern IntPtr GetModuleHandle(string lpModuleName); 65 | 66 | [DllImport("kernel32.dll", SetLastError = true)] 67 | private static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttribute, IntPtr dwStackSize, 68 | IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId); 69 | 70 | [DllImport("Resources\\libs\\FluxteamAPI.dll", CallingConvention = CallingConvention.StdCall)] 71 | public static extern bool run_script(IntPtr proc, int pid, string path, 72 | [MarshalAs(UnmanagedType.LPWStr)] string script); 73 | 74 | [DllImport("Resources\\libs\\FluxteamAPI.dll", CallingConvention = CallingConvention.StdCall)] 75 | public static extern bool is_injected(IntPtr proc, int pid, string path); 76 | 77 | [DllImport("Resources\\libs\\FluxteamAPI.dll", CallingConvention = CallingConvention.StdCall)] 78 | public static extern bool inject_dll(int pid, [MarshalAs(UnmanagedType.LPWStr)] string script); 79 | 80 | private static Result r_inject(string dll_path) 81 | { 82 | var fileInfo = new FileInfo(dll_path); 83 | var accessControl = fileInfo.GetAccessControl(); 84 | var identity = new SecurityIdentifier("S-1-15-2-1"); 85 | accessControl.AddAccessRule(new FileSystemAccessRule(identity, FileSystemRights.FullControl, 86 | InheritanceFlags.None, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); 87 | fileInfo.SetAccessControl(accessControl); 88 | var processesByName = Process.GetProcessesByName("Windows10Universal"); 89 | var flag = processesByName.Length == 0; 90 | Result result; 91 | if (flag) 92 | { 93 | result = Result.ProcNotOpen; 94 | } 95 | else 96 | { 97 | var num = 0U; 98 | while (num < (ulong)processesByName.Length) 99 | { 100 | var process = processesByName[(int)num]; 101 | var flag2 = pid != process.Id; 102 | if (flag2) 103 | { 104 | var intPtr = OpenProcess(1082U, false, process.Id); 105 | var flag3 = intPtr == NULL; 106 | if (flag3) 107 | { 108 | return Result.OpenProcFail; 109 | } 110 | var intPtr2 = VirtualAllocEx(intPtr, NULL, 111 | (IntPtr)((dll_path.Length + 1) * Marshal.SizeOf(typeof(char))), 12288U, 64U); 112 | var flag4 = intPtr2 == NULL; 113 | if (flag4) 114 | { 115 | return Result.AllocFail; 116 | } 117 | var bytes = Encoding.Default.GetBytes(dll_path); 118 | var num2 = WriteProcessMemory(intPtr, intPtr2, bytes, 119 | (IntPtr)((dll_path.Length + 1) * Marshal.SizeOf(typeof(char))), 0); 120 | var flag5 = num2 == 0 || num2 == 6L; 121 | if (flag5) 122 | { 123 | return Result.Unknown; 124 | } 125 | var flag6 = CreateRemoteThread(intPtr, NULL, NULL, 126 | GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA"), intPtr2, 0U, NULL) == NULL; 127 | if (flag6) 128 | { 129 | return Result.LoadLibFail; 130 | } 131 | pid = process.Id; 132 | phandle = intPtr; 133 | return Result.Success; 134 | } 135 | 136 | var flag7 = pid == process.Id; 137 | if (flag7) 138 | { 139 | return Result.AlreadyInjected; 140 | } 141 | num += 1U; 142 | } 143 | 144 | result = Result.Unknown; 145 | } 146 | 147 | return result; 148 | } 149 | 150 | public static Result inject_custom() 151 | { 152 | Result result; 153 | try 154 | { 155 | var flag = !File.Exists(dll_path); 156 | if (flag) 157 | { 158 | result = Result.DLLNotFound; 159 | } 160 | else 161 | { 162 | result = r_inject(dll_path); 163 | } 164 | } 165 | catch 166 | { 167 | result = Result.Unknown; 168 | } 169 | 170 | return result; 171 | } 172 | 173 | public static void inject() 174 | { 175 | switch (inject_custom()) 176 | { 177 | case Result.DLLNotFound: 178 | _ = Notifications.Fire((new MainWindow()).StatusListBox, "Dynamic-Link Library (DLL) not found.", App.NotificationLabel); 179 | break; 180 | case Result.OpenProcFail: 181 | _ = Notifications.Fire((new MainWindow()).StatusListBox, "OpenProcess failed.", App.NotificationLabel); 182 | break; 183 | case Result.AllocFail: 184 | _ = Notifications.Fire((new MainWindow()).StatusListBox, "Allocation failed", App.NotificationLabel); 185 | break; 186 | case Result.LoadLibFail: 187 | _ = Notifications.Fire((new MainWindow()).StatusListBox, "LoadLibrary failed.", App.NotificationLabel); 188 | break; 189 | case Result.ProcNotOpen: 190 | _ = Notifications.Fire((new MainWindow()).StatusListBox, "Couldn't find process. Make sure you have the game from the Microsoft Store.", App.NotificationLabel); 191 | break; 192 | case Result.Unknown: 193 | _ = Notifications.Fire((new MainWindow()).StatusListBox, "An unkown error has occurred.", App.NotificationLabel); 194 | break; 195 | } 196 | } 197 | 198 | public static bool is_injected(int pid) 199 | { 200 | try 201 | { 202 | phandle = OpenProcess(0x43AU, false, pid); 203 | return is_injected(phandle, pid, dll_path); 204 | } 205 | catch 206 | { 207 | return false; 208 | } 209 | } 210 | 211 | 212 | public static bool run_script(int pid, string script) 213 | { 214 | FluxInterfacing.pid = pid; 215 | phandle = OpenProcess(1082U, false, pid); 216 | var flag = pid == 0; 217 | bool result; 218 | if (flag) 219 | { 220 | result = false; 221 | } 222 | else 223 | { 224 | var flag2 = script == string.Empty; 225 | if (flag2) 226 | result = is_injected(pid); 227 | else 228 | result = run_script(phandle, pid, dll_path, script); 229 | } 230 | 231 | return result; 232 | } 233 | 234 | public static void create_files(string dll_path_) 235 | { 236 | var flag = !File.Exists(dll_path_); 237 | if (flag) 238 | { 239 | ThreadBox.MsgThread("Failure when initializing Fluxus API\nDLL path was invalid\n", 240 | "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 241 | } 242 | dll_path = dll_path_; 243 | var text = ""; 244 | foreach (var text2 in Directory.GetDirectories(Environment.GetEnvironmentVariable("LocalAppData") + "\\Packages")) 245 | { 246 | var flag2 = text2.Contains("ROBLOXCORPORATION"); 247 | if (flag2) 248 | { 249 | var flag3 = Directory.GetDirectories(text2 + "\\AC").Any(dir => dir.Contains("Temp")); 250 | if (flag3) 251 | { 252 | text = text2 + "\\AC"; 253 | } 254 | } 255 | } 256 | 257 | var flag4 = text == ""; 258 | if (!flag4) 259 | { 260 | try 261 | { 262 | var flag5 = Directory.Exists("workspace"); 263 | if (flag5) 264 | { 265 | Directory.Move("workspace", "old_workspace"); 266 | } 267 | var flag6 = Directory.Exists("autoexec"); 268 | if (flag6) 269 | { 270 | Directory.Move("autoexec", "old_autoexec"); 271 | } 272 | } 273 | catch 274 | { 275 | } 276 | 277 | var path = Path.Combine(text, "workspace"); 278 | var path2 = Path.Combine(text, "autoexec"); 279 | var flag7 = !Directory.Exists(path); 280 | if (flag7) 281 | { 282 | Directory.CreateDirectory(path); 283 | } 284 | var flag8 = !Directory.Exists(path2); 285 | if (flag8) 286 | { 287 | Directory.CreateDirectory(path2); 288 | } 289 | } 290 | } 291 | } 292 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/FunctionWatch.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Linq; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | 8 | namespace LInjector.Classes 9 | { 10 | internal class FunctionWatch 11 | { 12 | private static bool IsRunning = false; 13 | private static FileSystemWatcher watcher = new FileSystemWatcher(); 14 | private static String WatchFolder = Path.Combine(Files.workspaceFolder, "LINJECTOR"); 15 | public static void runFuncWatch() 16 | { 17 | if (IsRunning == true) 18 | { 19 | return; 20 | } 21 | FunctionWatch.IsRunning = true; 22 | try 23 | { 24 | if (!Directory.Exists(WatchFolder)) 25 | { 26 | Directory.CreateDirectory(WatchFolder); 27 | Task.Delay(200); 28 | } 29 | 30 | watcher.Path = WatchFolder; 31 | watcher.NotifyFilter = NotifyFilters.LastWrite; 32 | 33 | watcher.Changed += new FileSystemEventHandler(OnChanged); 34 | watcher.EnableRaisingEvents = true; 35 | } 36 | catch (Exception ex) 37 | { 38 | Console.WriteLine(ex.ToString()); 39 | } 40 | } 41 | 42 | public static bool IsFileReady(string filename) 43 | { 44 | try 45 | { 46 | using (FileStream inputStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.None)) 47 | return inputStream.Length > 0; 48 | } 49 | catch (Exception) 50 | { 51 | return false; 52 | } 53 | } 54 | 55 | private static void CreateLog(string String) 56 | { 57 | CustomCw.Cw($"{String}", false, "roblox"); 58 | } 59 | protected static void clipboardSetText(string inTextToCopy) 60 | { 61 | var clipboardThread = new Thread(() => clipBoardThreadWorker(inTextToCopy)); 62 | clipboardThread.SetApartmentState(ApartmentState.STA); 63 | clipboardThread.IsBackground = false; 64 | clipboardThread.Start(); 65 | } 66 | private static void clipBoardThreadWorker(string inTextToCopy) 67 | { 68 | System.Windows.Clipboard.SetText(inTextToCopy); 69 | } 70 | 71 | 72 | private static void OnChanged(object sender, FileSystemEventArgs e) 73 | { 74 | if (e.ChangeType != WatcherChangeTypes.Changed || watcher.EnableRaisingEvents == false) 75 | { 76 | return; 77 | } 78 | try 79 | { 80 | watcher.EnableRaisingEvents = false; 81 | 82 | string functioncallfile = Path.Combine(WatchFolder, "LINJECTOR.li"); 83 | 84 | while (!IsFileReady(functioncallfile)) { } 85 | 86 | Task.Delay(60); 87 | 88 | string function = ""; 89 | 90 | try 91 | { 92 | function = File.ReadAllText(functioncallfile); 93 | } 94 | catch 95 | { 96 | CustomCw.Cw("Failed to capture data!", true, "error"); 97 | return; 98 | } 99 | 100 | string[] arguments = function.Split(new[] { "|||" }, StringSplitOptions.None).Select(value => value.Trim()).ToArray(); 101 | 102 | if (arguments[0] == "messagebox") 103 | { 104 | MessageBox.Show(arguments[1], arguments[2]); 105 | return; 106 | } 107 | if (arguments[0] == "welcome") 108 | { 109 | CreateLog($"Hello, {arguments[1]}!\nSuccessfully loaded at {arguments[2]}"); 110 | 111 | return; 112 | } 113 | if (arguments[0] == "toclipboard") 114 | { 115 | clipboardSetText(arguments[1].ToString()); 116 | return; 117 | } 118 | if (arguments[0] == "rconsoleclose") 119 | { 120 | ConsoleManager.HideConsole(); 121 | return; 122 | } 123 | if (arguments[0] == "rconsoleshow") 124 | { 125 | ConsoleManager.ShowConsole(); 126 | return; 127 | } 128 | if (arguments[0] == "rconsoleprint") 129 | { 130 | ConsoleManager.ShowConsole(); 131 | CustomCw.rconsoleprint($"{arguments[1]}", "white"); 132 | return; 133 | } 134 | if (arguments[0] == "rconsoleinfo") 135 | { 136 | ConsoleManager.ShowConsole(); 137 | CustomCw.rconsoleprint($"[INFO] {arguments[1]}", "info"); 138 | return; 139 | } 140 | if (arguments[0] == "rconsolewarn") 141 | { 142 | ConsoleManager.ShowConsole(); 143 | CustomCw.rconsoleprint($"[WARNING] {arguments[1]}", "warn"); 144 | return; 145 | } 146 | if (arguments[0] == "rconsoleerr") 147 | { 148 | ConsoleManager.ShowConsole(); 149 | CustomCw.rconsoleprint($"[ERROR] {arguments[1]}", "err"); 150 | return; 151 | } 152 | if (arguments[0] == "rconsolename") 153 | { 154 | ConsoleManager.ShowConsole(); 155 | Console.Title = arguments[1]; 156 | return; 157 | } 158 | 159 | if (arguments[0] == "rconsoleclear") 160 | { 161 | try { Console.Clear(); } catch { } 162 | return; 163 | } 164 | 165 | if (arguments[0] == "setDiscordRPC") 166 | { 167 | RPCManager.SetRPCDetails($"{arguments[1]}"); 168 | return; 169 | } 170 | } 171 | 172 | finally 173 | { 174 | Task.Delay(20); 175 | watcher.EnableRaisingEvents = true; 176 | } 177 | } 178 | } 179 | } 180 | -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/InternalFunctions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Threading.Tasks; 4 | using System.Windows.Threading; 5 | 6 | /* 7 | * ░▒█░░░░▀█▀░█▀▀▄░░░▀░█▀▀░█▀▄░▀█▀░▄▀▀▄░█▀▀▄░░░▀█▀░█▀▀▄░▀█▀░█▀▀░█▀▀▄░█▀▀▄░█▀▀▄░█░░░░▒█▀▀▀░█░▒█░█▀▀▄░█▀▄░▀█▀░░▀░░▄▀▀▄░█▀▀▄░█▀▀ 8 | * ░▒█░░░░▒█░░█░▒█░░░█░█▀▀░█░░░░█░░█░░█░█▄▄▀░░░▒█░░█░▒█░░█░░█▀▀░█▄▄▀░█░▒█░█▄▄█░█░░░░▒█▀▀░░█░▒█░█░▒█░█░░░░█░░░█▀░█░░█░█░▒█░▀▀▄ 9 | * ░▒█▄▄█░▄█▄░▀░░▀░█▄█░▀▀▀░▀▀▀░░▀░░░▀▀░░▀░▀▀░░░▄█▄░▀░░▀░░▀░░▀▀▀░▀░▀▀░▀░░▀░▀░░▀░▀▀░░░▒█░░░░░▀▀▀░▀░░▀░▀▀▀░░▀░░▀▀▀░░▀▀░░▀░░▀░▀▀▀ 10 | * 11 | * Created by depthso/depso (https://github.com/depthso) 12 | * 13 | */ 14 | 15 | namespace LInjector.Classes 16 | { 17 | public static class InternalFunctions 18 | { 19 | private static DirectoryInfo ScriptsFolder = new DirectoryInfo("Resources\\Internal\\"); 20 | private static FileInfo[] Scripts = ScriptsFolder.GetFiles(); 21 | 22 | static DispatcherTimer timer = new DispatcherTimer(); 23 | 24 | public static void Load(object sender, EventArgs e) 25 | { 26 | 27 | foreach (FileInfo file in Scripts) 28 | { 29 | var flag = FluxInterfacing.is_injected(FluxInterfacing.pid); 30 | 31 | if (flag) 32 | { 33 | string Script_Content = File.ReadAllText(file.FullName); 34 | FluxInterfacing.run_script(FluxInterfacing.pid, Script_Content); 35 | } 36 | else 37 | { 38 | break; 39 | } 40 | 41 | Task.Delay(200); 42 | } 43 | } 44 | 45 | public static void RunInternalFunctions() 46 | { 47 | timer.Tick += InternalFunctions.Load; 48 | timer.Interval = TimeSpan.FromSeconds(5); 49 | timer.Start(); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/LogToConsole.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Controls; 3 | 4 | namespace LInjector.Classes 5 | { 6 | public static class LogToConsole 7 | { 8 | 9 | public static void Log(string message, ListBox lb) 10 | { 11 | ListBoxItem toLog = new ListBoxItem(); 12 | DateTime localTime = DateTime.Now; 13 | 14 | string FormattedMessage = $"[{localTime.ToString("HH:mm")}] {message}"; 15 | toLog.Content = FormattedMessage; 16 | toLog.Visibility = System.Windows.Visibility.Visible; 17 | lb.Items.Add(toLog); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/MonacoInterfacer.cs: -------------------------------------------------------------------------------- 1 | using LInjector.Classes; 2 | using Microsoft.Web.WebView2.Wpf; 3 | using Newtonsoft.Json; 4 | using System; 5 | using System.Threading.Tasks; 6 | 7 | namespace LInjector.WPF.Classes 8 | { 9 | public class monaco_api : WebView2 10 | { 11 | // Thanks to parex for this awesome base! 12 | 13 | public bool isDOMLoaded { get; set; } = false; 14 | private string ToSetText; 15 | private string LatestRecievedText; 16 | public bool isMinimapEnabled { get; set; } 17 | 18 | /// 19 | /// Event for when the editor is fully loaded. 20 | /// 21 | public event EventHandler EditorReady; 22 | 23 | public monaco_api(string Text) 24 | { 25 | if (Files.AccountName == "ItzzExcel") 26 | this.Source = new Uri($"https://{Files.AccountName.ToLower()}.github.io/LInjector/Monaco"); 27 | else if (Files.AccountName == "NotExcelz") 28 | this.Source = new Uri($"https://{Files.AccountName.ToLower()}.github.io/LInjector/Monaco"); 29 | 30 | this.CoreWebView2InitializationCompleted += monaco_api_CoreWebView2InitializationCompleted; 31 | this.ToSetText = Text; 32 | } 33 | 34 | protected virtual void OnEditorReady() 35 | { 36 | EventHandler handler = EditorReady; 37 | if (handler != null) 38 | handler(this, new EventArgs()); 39 | 40 | } 41 | 42 | public void monaco_api_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e) 43 | { 44 | this.CoreWebView2.DOMContentLoaded += CoreWebView2_DOMContentLoaded; 45 | this.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived; 46 | this.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false; 47 | this.CoreWebView2.Settings.AreDevToolsEnabled = false; 48 | this.CoreWebView2.Settings.IsZoomControlEnabled = false; 49 | this.CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled = false; 50 | } 51 | 52 | private void CoreWebView2_WebMessageReceived(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs e) => LatestRecievedText = e.TryGetWebMessageAsString(); 53 | 54 | private async void CoreWebView2_DOMContentLoaded(object sender, Microsoft.Web.WebView2.Core.CoreWebView2DOMContentLoadedEventArgs e) 55 | { 56 | await Task.Delay(1000); 57 | isDOMLoaded = true; 58 | SetText(ToSetText); 59 | OnEditorReady(); 60 | } 61 | public async Task GetText() 62 | { 63 | if (isDOMLoaded) 64 | { 65 | var script = "monaco.editor.getModels()[0].getValue()"; 66 | var result = await CoreWebView2.ExecuteScriptAsync(script); 67 | var text = JsonConvert.DeserializeObject(result); 68 | 69 | return text; 70 | } 71 | return string.Empty; 72 | } 73 | 74 | public async void SetText(string text) 75 | { 76 | text = text.Replace("\\", "\\\\"); 77 | await CoreWebView2.ExecuteScriptAsync("editor.setValue('');"); 78 | await CoreWebView2.ExecuteScriptAsync($"editor.setValue(`{text.Replace("`", "\\`")}`)"); 79 | } 80 | 81 | public void AddIntellisense(string label, Types type, string description, string insert) 82 | { 83 | if (isDOMLoaded) 84 | { 85 | string selectedType = type.ToString(); 86 | if (type == Types.None) 87 | selectedType = ""; 88 | this.ExecuteScriptAsync($"AddIntellisense({label}, {selectedType}, {description}, {insert});"); 89 | } 90 | } 91 | public void refresh() 92 | { 93 | if (isDOMLoaded) 94 | this.ExecuteScriptAsync($"Refresh();"); 95 | } 96 | 97 | public void enable_minimap() 98 | { 99 | if (isDOMLoaded) 100 | this.ExecuteScriptAsync("SwitchMinimap(true);"); 101 | isMinimapEnabled = true; 102 | } 103 | 104 | public void disable_minimap() 105 | { 106 | if (isDOMLoaded) 107 | this.ExecuteScriptAsync("SwitchMinimap(false);"); 108 | isMinimapEnabled = false; 109 | } 110 | 111 | public void enable_autocomplete() 112 | { 113 | if (isDOMLoaded) 114 | this.ExecuteScriptAsync("EnableAutoComplete();"); 115 | } 116 | 117 | public void disable_autocomplete() 118 | { 119 | if (isDOMLoaded) 120 | this.ExecuteScriptAsync("DisableAutoComplete();"); 121 | } 122 | } 123 | 124 | public enum Types 125 | { 126 | Class, 127 | Color, 128 | Constructor, 129 | Enum, 130 | Field, 131 | File, 132 | Folder, 133 | Function, 134 | Interface, 135 | Keyword, 136 | Method, 137 | Module, 138 | Property, 139 | Reference, 140 | Snippet, 141 | Text, 142 | Unit, 143 | Value, 144 | Variable, 145 | None 146 | } 147 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/Notifications.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using System.Windows; 4 | using System.Windows.Controls; 5 | using System.Windows.Media.Animation; 6 | 7 | namespace LInjector.Classes 8 | { 9 | public static class Notifications 10 | { 11 | private static bool isBusy; 12 | 13 | public static async Task Fire(ListBox listBox, string message, T targetControl) where T : Label 14 | { 15 | 16 | if (isBusy) 17 | { 18 | while (isBusy) 19 | { 20 | await Task.Delay(100); 21 | } 22 | } 23 | 24 | if (targetControl == null) 25 | { 26 | return; 27 | } 28 | 29 | isBusy = true; 30 | 31 | double originalTopMargin = listBox.Margin.Top; 32 | 33 | await AnimateMarginChange(listBox, new Thickness(0, 0, 0, 0), TimeSpan.FromSeconds(0.5)); 34 | 35 | targetControl.Content = ""; 36 | 37 | foreach (var character in message) 38 | { 39 | targetControl.Content += character.ToString(); 40 | await Task.Delay(15); 41 | } 42 | 43 | await Task.Delay(3000); 44 | await AnimateMarginChange(listBox, new Thickness(0, originalTopMargin, 0, 0), TimeSpan.FromSeconds(0.8)); 45 | 46 | for (int i = targetControl.Content.ToString().Length; i > 0; i--) 47 | { 48 | targetControl.Content = targetControl.Content.ToString().Remove(i - 1); 49 | await Task.Delay(10); 50 | } 51 | 52 | // Animate the FloatyNotification to move back up 53 | await AnimateMarginChange(listBox, new Thickness(0, originalTopMargin, 0, 0), TimeSpan.FromSeconds(0.5)); 54 | 55 | isBusy = false; 56 | } 57 | 58 | private static async Task AnimateMarginChange(FrameworkElement element, Thickness newMargin, TimeSpan duration) 59 | { 60 | var storyboard = new Storyboard(); 61 | 62 | var marginAnimation = new ThicknessAnimation 63 | { 64 | From = element.Margin, 65 | To = newMargin, 66 | Duration = new Duration(duration) 67 | }; 68 | 69 | Storyboard.SetTarget(marginAnimation, element); 70 | Storyboard.SetTargetProperty(marginAnimation, new PropertyPath("Margin")); 71 | 72 | storyboard.Children.Add(marginAnimation); 73 | storyboard.Begin(); 74 | 75 | await Task.Delay(duration); 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/RPCManager.cs: -------------------------------------------------------------------------------- 1 | using DiscordRPC; 2 | using System; 3 | using System.Windows.Forms; 4 | using Button = DiscordRPC.Button; 5 | 6 | namespace LInjector.Classes 7 | { 8 | public static class RPCManager 9 | { 10 | public static DiscordRpcClient client; 11 | public static bool isEnabled; 12 | 13 | public static void SetRPCDetails(string Details) 14 | { 15 | RichPresence baseRichPresence = new RichPresence 16 | { 17 | 18 | Details = Details, 19 | State = "", 20 | 21 | Assets = new Assets 22 | { 23 | LargeImageKey = "https://lexploits.netlify.app/extra/cdn/LInjector%20ico.png", 24 | LargeImageText = "by The LExploits Project." 25 | }, 26 | Buttons = new[] 27 | { 28 | new Button { Label = "GitHub", Url = $"https://github.com/{Files.AccountName}/LInjector" } 29 | } 30 | }; 31 | if (client.IsInitialized) 32 | { 33 | try 34 | { 35 | client.SetPresence(baseRichPresence); 36 | } 37 | catch (Exception ex) 38 | { 39 | ThreadBox.MsgThread( 40 | "Couldn't update LInjector State (RPC)\nException:\n" + ex.Message, "[WARNING] LInjector", 41 | MessageBoxButtons.OK, MessageBoxIcon.Warning); 42 | } 43 | } 44 | } 45 | 46 | // public void SetListeningStatus(string name, string artist, string albumFormatted) 47 | // { 48 | // Game activity = new( 49 | // artist + albumFormatted, 50 | // ActivityType.Listening, 51 | // ActivityProperties.Instance, 52 | // name 53 | // ); 54 | // this.client.SetActivityAsync(activity); 55 | //} 56 | 57 | public static void InitRPC() 58 | { 59 | client = new DiscordRpcClient("1104489169314660363"); 60 | if (isEnabled) 61 | { 62 | client.Initialize(); 63 | } 64 | SetRPCDetails("Using LInjector"); 65 | } 66 | 67 | public static void SetRpcFile(string currentFile) 68 | { 69 | if (client.IsInitialized) 70 | { 71 | try 72 | { 73 | SetRPCDetails("Editing File: " + currentFile); 74 | } 75 | catch (Exception ex) 76 | { 77 | ThreadBox.MsgThread( 78 | "Couldn't update LInjector State (RPC)\nException:\n" + ex.Message, "[WARNING] LInjector", 79 | MessageBoxButtons.OK, MessageBoxIcon.Warning); 80 | } 81 | } 82 | } 83 | 84 | public static void SetBaseRichPresence() 85 | { 86 | if (client.IsInitialized) 87 | { 88 | try 89 | { 90 | SetRPCDetails("Using LInjector"); 91 | } 92 | catch (Exception ex) 93 | { 94 | ThreadBox.MsgThread( 95 | "Couldn't set base Rich Presence (RPC)\nException:\n" + ex.Message, "[WARNING] LInjector", 96 | MessageBoxButtons.OK, MessageBoxIcon.Warning); 97 | } 98 | } 99 | } 100 | } 101 | } -------------------------------------------------------------------------------- /LInjector/LInjector/Classes/ThreadBox.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Windows.Forms; 3 | using MessageBox = System.Windows.Forms.MessageBox; 4 | 5 | namespace LInjector.Classes 6 | { 7 | public static class ThreadBox 8 | { 9 | public static void MsgThread(string msgBoxContent = "", 10 | string msgBoxTitle = "", 11 | MessageBoxButtons boxButtons = MessageBoxButtons.OK, 12 | MessageBoxIcon boxIcon = MessageBoxIcon.None, 13 | MessageBoxDefaultButton boxDefaultButton = MessageBoxDefaultButton.Button1, 14 | System.Windows.Forms.MessageBoxOptions boxOptions = System.Windows.Forms.MessageBoxOptions.DefaultDesktopOnly) 15 | { 16 | var msgBoxThread = new Thread( 17 | () => 18 | { 19 | var dialogResult = MessageBox.Show(msgBoxContent, msgBoxTitle, boxButtons, boxIcon, 20 | boxDefaultButton, boxOptions); 21 | } 22 | ); 23 | msgBoxThread.Start(); 24 | CustomCw.Cw($"Title: {msgBoxTitle}\nContent: {msgBoxContent}", false, "msgbox"); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /LInjector/LInjector/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Microsoft.Web.WebView2.Core 5 | 6 | 7 | -------------------------------------------------------------------------------- /LInjector/LInjector/FodyWeavers.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks 13 | 14 | 15 | 16 | 17 | A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. 18 | 19 | 20 | 21 | 22 | A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks 23 | 24 | 25 | 26 | 27 | A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. 28 | 29 | 30 | 31 | 32 | A list of unmanaged 32 bit assembly names to include, delimited with line breaks. 33 | 34 | 35 | 36 | 37 | A list of unmanaged 64 bit assembly names to include, delimited with line breaks. 38 | 39 | 40 | 41 | 42 | The order of preloaded assemblies, delimited with line breaks. 43 | 44 | 45 | 46 | 47 | 48 | This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. 49 | 50 | 51 | 52 | 53 | Controls if .pdbs for reference assemblies are also embedded. 54 | 55 | 56 | 57 | 58 | Controls if runtime assemblies are also embedded. 59 | 60 | 61 | 62 | 63 | Controls whether the runtime assemblies are embedded with their full path or only with their assembly name. 64 | 65 | 66 | 67 | 68 | Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. 69 | 70 | 71 | 72 | 73 | As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. 74 | 75 | 76 | 77 | 78 | Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. 79 | 80 | 81 | 82 | 83 | Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. 84 | 85 | 86 | 87 | 88 | A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | 89 | 90 | 91 | 92 | 93 | A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. 94 | 95 | 96 | 97 | 98 | A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with | 99 | 100 | 101 | 102 | 103 | A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |. 104 | 105 | 106 | 107 | 108 | A list of unmanaged 32 bit assembly names to include, delimited with |. 109 | 110 | 111 | 112 | 113 | A list of unmanaged 64 bit assembly names to include, delimited with |. 114 | 115 | 116 | 117 | 118 | The order of preloaded assemblies, delimited with |. 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. 127 | 128 | 129 | 130 | 131 | A comma-separated list of error codes that can be safely ignored in assembly verification. 132 | 133 | 134 | 135 | 136 | 'false' to turn off automatic generation of the XML Schema file. 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /LInjector/LInjector/LInjector.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | publish\ 5 | 6 | 7 | 8 | 9 | 10 | en-US 11 | false 12 | ProjectFiles 13 | 14 | -------------------------------------------------------------------------------- /LInjector/LInjector/Linjector.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Linjector.ico -------------------------------------------------------------------------------- /LInjector/LInjector/Pages/TabSystem.xaml.cs: -------------------------------------------------------------------------------- 1 | using LInjector.WPF.Classes; 2 | using System.Threading.Tasks; 3 | using System.Windows; 4 | using System.Windows.Controls; 5 | using System.Windows.Media; 6 | 7 | namespace LInjector.Pages 8 | { 9 | public partial class TabSystem : UserControl 10 | { 11 | 12 | public string latestTabName { get; set; } 13 | public TabSystem() 14 | { 15 | InitializeComponent(); 16 | maintabs.Items.Add(CreateTab("", "Script" + " " + (this.maintabs.Items.Count + 1).ToString())); 17 | } 18 | 19 | public monaco_api current_monaco() 20 | { 21 | return maintabs.SelectedContent as monaco_api; 22 | } 23 | 24 | public void add_tab_with_text(string text, string title = null) 25 | { 26 | if (title == null) 27 | { 28 | title = "Script " + this.maintabs.Items.Count.ToString(); 29 | } 30 | 31 | maintabs.Items.Add(CreateTab(text, title)); 32 | 33 | } 34 | 35 | public void ChangeCurrentTabTitle(string title) 36 | { 37 | if (maintabs.SelectedItem is TabItem selectedTab) 38 | { 39 | selectedTab.Header = title; 40 | } 41 | } 42 | 43 | public Task GetCurrentTabTitle() 44 | { 45 | if (maintabs.SelectedItem is TabItem selectedTab) 46 | { 47 | return Task.FromResult(selectedTab.Header.ToString()); 48 | } 49 | 50 | return Task.FromResult(string.Empty); 51 | } 52 | 53 | 54 | public void ButtonTabs(object sender, RoutedEventArgs e) 55 | { 56 | switch (((Button)sender).Name) 57 | { 58 | case "AddT": 59 | maintabs.Items.Add(CreateTab("", "Script" + " " + (this.maintabs.Items.Count + 1).ToString())); 60 | break; 61 | case "RemoveT": 62 | try 63 | { 64 | maintabs.Items.Remove(maintabs.SelectedItem); 65 | } 66 | catch { } 67 | break; 68 | } 69 | } 70 | 71 | public monaco_api CreateEditor(string Start) => new monaco_api(Start); 72 | 73 | public TabItem CreateTab(string content, string Title = "Untitled") => 74 | new TabItem 75 | { 76 | Header = Title, 77 | Style = TryFindResource("EETABSSSSSS") as Style, 78 | Foreground = Brushes.White, 79 | FontSize = 12, 80 | Content = CreateEditor(content), 81 | IsSelected = true, 82 | }; 83 | 84 | private void Clear_Editor(object sender, RoutedEventArgs e) 85 | { 86 | var x = maintabs.SelectedContent as monaco_api; 87 | try 88 | { 89 | x.SetText(""); 90 | this.ChangeCurrentTabTitle($"Script {maintabs.Items.Count}"); 91 | } 92 | catch { } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /LInjector/LInjector/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("LInjector")] 9 | [assembly: AssemblyDescription("The LInjector Program")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("LEx")] 12 | [assembly: AssemblyProduct("LInjector")] 13 | [assembly: AssemblyCopyright("Copyright (c) LEx 2023")] 14 | [assembly: AssemblyTrademark("LEx")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | //In order to begin building localizable applications, set 23 | //CultureYouAreCodingWith in your .csproj file 24 | //inside a . For example, if you are using US english 25 | //in your source files, set the to en-US. Then uncomment 26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 27 | //the line below to match the UICulture setting in the project file. 28 | 29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 30 | 31 | 32 | [assembly: ThemeInfo( 33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 34 | //(used if a resource is not found in the page, 35 | // or application resource dictionaries) 36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 37 | //(used if a resource is not found in the page, 38 | // app, or any theme specific resource dictionaries) 39 | )] 40 | 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("2.0.0.0")] 53 | [assembly: AssemblyFileVersion("08.10.2023")] 54 | -------------------------------------------------------------------------------- /LInjector/LInjector/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LInjector.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LInjector.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /LInjector/LInjector/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /LInjector/LInjector/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LInjector.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /LInjector/LInjector/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Excel.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Attach.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Console.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Discord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Discord.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Execute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Execute.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/GitHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/GitHub.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Place.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Script.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Icons/Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/Icons/Settings.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/Internal/Init.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * 3 | * ░▒█░░░░▀█▀░█▀▀▄░░░▀░█▀▀░█▀▄░▀█▀░▄▀▀▄░█▀▀▄░░░▒█▀▀▀░█░▒█░█▀▀▄░█▀▄░▀█▀░░▀░░▄▀▀▄░█▀▀▄░█▀▀░░ 4 | * ░▒█░░░░▒█░░█░▒█░░░█░█▀▀░█░░░░█░░█░░█░█▄▄▀░░░▒█▀▀░░█░▒█░█░▒█░█░░░░█░░░█▀░█░░█░█░▒█░▀▀▄░░ 5 | * ░▒█▄▄█░▄█▄░▀░░▀░█▄█░▀▀▀░▀▀▀░░▀░░░▀▀░░▀░▀▀░░░▒█░░░░░▀▀▀░▀░░▀░▀▀▀░░▀░░▀▀▀░░▀▀░░▀░░▀░▀▀▀░░ 6 | * 7 | * Created by Depso 8 | * 9 | * ]] 10 | 11 | if linjector then 12 | script:Remove() 13 | return 14 | end 15 | getgenv()["linjector"] = true 16 | loadstring(game:HttpGet("https://raw.githubusercontent.com/NotExcelz/LInjector/master/Redistributables/Lua%20Scripts/Init.lua"))() -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/LInjector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/LInjector.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/LInjectorr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/LInjectorr.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/depso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/depso.png -------------------------------------------------------------------------------- /LInjector/LInjector/Resources/linj_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/LInjector/LInjector/Resources/linj_shadow.png -------------------------------------------------------------------------------- /LInjector/LInjector/Windows/SplashScreen.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /LInjector/LInjector/Windows/SplashScreen.xaml.cs: -------------------------------------------------------------------------------- 1 | using LInjector.Classes; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Windows; 5 | using System.Windows.Forms; 6 | using System.Windows.Media.Animation; 7 | using System.Windows.Threading; 8 | 9 | namespace LInjector.Windows 10 | { 11 | /// 12 | /// Interaction logic for MainWindow.xaml 13 | /// 14 | 15 | public partial class SplashScreen : Window 16 | { 17 | DispatcherTimer RGBTime; 18 | readonly int RGBSpinSpeed = 4; 19 | Storyboard StoryBoard = new Storyboard(); 20 | 21 | private IEasingFunction Smooth { get; set; } 22 | = new QuarticEase 23 | { 24 | EasingMode = EasingMode.EaseInOut 25 | }; 26 | 27 | public void ObjectShift(Duration speed, DependencyObject Object, Thickness Get, Thickness Set) 28 | { 29 | ThicknessAnimation Animation = new ThicknessAnimation() 30 | { 31 | From = Get, 32 | To = Set, 33 | Duration = speed, 34 | EasingFunction = Smooth, 35 | }; 36 | Storyboard.SetTarget(Animation, Object); 37 | Storyboard.SetTargetProperty(Animation, new PropertyPath(MarginProperty)); 38 | StoryBoard.Children.Add(Animation); 39 | StoryBoard.Begin(); 40 | StoryBoard.Children.Remove(Animation); 41 | } 42 | 43 | public SplashScreen() 44 | { 45 | InitializeComponent(); 46 | CreateFiles.Create(); 47 | if (CheckLatest.IsOutdatedVersion(Files.currentVersion)) 48 | { 49 | var outDatedResult = System.Windows.Forms.MessageBox.Show( 50 | "LInjector is outdated, please, re-download LInjector via GitHub or LInjector Webiste.\n" + 51 | "Go to LInjector Download Page?", 52 | "LInjector | Outdated", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 53 | if (outDatedResult == System.Windows.Forms.DialogResult.Yes) 54 | { 55 | Process.Start("https://lexploits.top/download"); 56 | CustomCw.Cw("LInjector is outdated", false, "warning"); 57 | } 58 | } 59 | TempLog.CreateVersionFile(Files.currentVersion, "version"); 60 | ConfigHandler.DoConfig(); 61 | ConsoleManager.Initialize(); 62 | RPCManager.InitRPC(); 63 | 64 | if (ConfigHandler.splashscreen == false) 65 | { 66 | this.Hide(); 67 | new MainWindow().Show(); 68 | } 69 | } 70 | 71 | private void DoubleAnimation_Completed(object sender, EventArgs e) 72 | { 73 | Storyboard fadeOutStoryboard = new Storyboard(); 74 | DoubleAnimation fadeOutAnimation = new DoubleAnimation 75 | { 76 | From = 1, 77 | To = 0, 78 | Duration = TimeSpan.FromSeconds(0.3) 79 | }; 80 | fadeOutStoryboard.Children.Add(fadeOutAnimation); 81 | Storyboard.SetTarget(fadeOutAnimation, this); 82 | Storyboard.SetTargetProperty(fadeOutAnimation, new PropertyPath(Window.OpacityProperty)); 83 | fadeOutStoryboard.Completed += OnFadeOutCompleted; 84 | fadeOutStoryboard.Begin(); 85 | } 86 | 87 | private void OnFadeOutCompleted(object sender, EventArgs e) 88 | { 89 | Hide(); 90 | new MainWindow().Show(); 91 | } 92 | 93 | private void Window_Loaded(object sender, RoutedEventArgs e) 94 | { 95 | 96 | RGBTime = new DispatcherTimer(TimeSpan.FromMilliseconds(10), DispatcherPriority.Normal, delegate 97 | { 98 | rgbRotation.Angle += RGBSpinSpeed; 99 | }, dispatcher: System.Windows.Application.Current.Dispatcher); 100 | RGBTime.Start(); 101 | 102 | ObjectShift(TimeSpan.FromMilliseconds(1000), LInjectorIcon, LInjectorIcon.Margin, new Thickness(0, 0, 0, 0)); 103 | } 104 | } 105 | } -------------------------------------------------------------------------------- /LInjector/LInjector/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 54 | 62 | 63 | 64 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /LInjector/LInjector/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /Monaco/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023, The LInjector Project 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Monaco/README.md: -------------------------------------------------------------------------------- 1 | # luau-monaco 2 | ## Syntax highlighting for Luau language. 3 |
4 |

5 | 6 | 7 | 8 | 9 |

10 | 11 | Monaco Text editor, the editor that powers Visual Studio Code with syntax highlighting for Luau Language.
12 | If you want to change background color, you can edit it putting `style="background-color: #color`.
13 | If you prefer editing it into your applications, you can do it. The background is transparent by default.
14 | This is also hosted on [My Website (LExploits)](https://lexploits.netlify.app/extra/monaco/).
15 | Theres some custom functions (autocompletes), like `is_executor_function; is_executor_closure`, at `index.html.bak`. You're free to change it. 16 | -------------------------------------------------------------------------------- /Monaco/vs/base/browser/ui/codicons/codicon/codicon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/Monaco/vs/base/browser/ui/codicons/codicon/codicon.ttf -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | define(["require", "exports"], function (require, exports) { 4 | Object.defineProperty(exports, "__esModule", { value: true }); 5 | 6 | let autocompletes = { 7 | "Constant": { 8 | "false": {}, 9 | "nil": {}, 10 | "true": {}, 11 | }, 12 | }; 13 | let isRegistered = false; 14 | 15 | async function register(file, target) { 16 | if (!target) target = autocompletes; 17 | return new Promise((resolve) => { 18 | require([`vs/basic-languages/lua/autocompletes/${file}.js`], (module) => { 19 | for (const kind in module.autocompletes) { 20 | const autocompleteContainer = module.autocompletes[kind]; 21 | if (!target[kind]) { 22 | target[kind] = {}; 23 | }; 24 | for (const name in autocompleteContainer) { 25 | target[kind][name] = autocompleteContainer[name] 26 | }; 27 | }; 28 | resolve(); 29 | }); 30 | }); 31 | }; 32 | 33 | function loadusing(parent) { 34 | if (!parent) parent = autocompletes; 35 | let promises = []; 36 | 37 | if (parent.__requires__) { 38 | let requiringPromises = []; 39 | for (let i = 0; i < parent.__requires__[0].length; i++) { 40 | requiringPromises.push(register(parent.__requires__[0][i], parent)); 41 | }; 42 | parent.__requires__ = undefined; 43 | promises.push( 44 | Promise.all(requiringPromises) 45 | .then(() => { 46 | promises.push(loadusing(parent)); 47 | }) 48 | ); 49 | }; 50 | 51 | for (const kind in parent) { 52 | for (const name in parent[kind]) { 53 | let data = parent[kind][name] 54 | 55 | // If the data has __children__, then look through children: 56 | if (data.__children__) { 57 | 58 | let usingPromises = []; 59 | 60 | // If dependencies are found, register them: 61 | if (data.__using__) { 62 | for (let i = 0; i < data.__using__.length; i++) { 63 | usingPromises.push(register(data.__using__[i], data.__children__)); 64 | }; 65 | }; 66 | 67 | // Add children once everything is inherited, 68 | // adding support for nested requirements: 69 | promises.push( 70 | Promise.all(usingPromises) 71 | .then(() => { 72 | promises.push(loadusing(data.__children__)); 73 | }) 74 | ); 75 | }; 76 | }; 77 | }; 78 | return Promise.all(promises); 79 | }; 80 | 81 | exports.Load = async () => { 82 | if (isRegistered) { 83 | return Promise.resolve(autocompletes) 84 | } else { 85 | return Promise.all([ 86 | register("classes"), 87 | register("functions"), 88 | register("functions-krnl"), 89 | register("modules"), 90 | register("globals"), 91 | register("keywords"), 92 | register("snippets"), 93 | ]) 94 | .then(() => loadusing()) 95 | .then(() => { 96 | isRegistered = true; 97 | return autocompletes; 98 | }); 99 | }; 100 | }; 101 | 102 | }); 103 | -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/base.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Variable: { 7 | 8 | 'test': { 9 | documentation: { 10 | value: [ 11 | '```lua', 'function new(function new(normalIds: ...)\n -> Faces)', '```', 12 | '', 13 | 'Creates a new Faces using list of faces', 14 | '', 15 | '[View documents](https://developer.roblox.com/en-us/api-reference/datatype/Faces)', 16 | ].join('\n') 17 | }, 18 | }, 19 | }, 20 | }; 21 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/classes/Enum.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Method: { 7 | 8 | 'GetEnumItems()': { 9 | 'insertText': 'GetEnumItems()', 10 | documentation: { 11 | value: [ 12 | '```lua', 'GetEnumItems()\n -> Array', '```', 13 | '', 14 | 'Returns an array containing all of the `EnumItem` options available for this enum.', 15 | '', 16 | '[View documentation](https://developer.roblox.com/en-us/api-reference/datatype/Enum)', 17 | ].join('\n') 18 | }, 19 | }, 20 | }, 21 | }; 22 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/classes/EnumItem.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Field: { 7 | 8 | 'Name': { 9 | label: { 10 | name: 'Name', 11 | type: '(string)', 12 | }, 13 | documentation: { 14 | value: [ 15 | 'The name of this EnumItem.', 16 | '', 17 | '[View documentation](https://developer.roblox.com/en-us/api-reference/datatype/EnumItem)', 18 | ].join('\n') 19 | } 20 | }, 21 | 22 | 'Value': { 23 | label: { 24 | name: 'Value', 25 | type: '(number)', 26 | }, 27 | documentation: { 28 | value: [ 29 | 'The integral value assigned to this enum.', 30 | '', 31 | '[View documentation](https://developer.roblox.com/en-us/api-reference/datatype/EnumItem)', 32 | ].join('\n') 33 | } 34 | }, 35 | 36 | 'EnumType': { 37 | label: { 38 | name: 'EnumType', 39 | type: '(Enum)', 40 | }, 41 | documentation: { 42 | value: [ 43 | 'A reference to the parent Enum of this EnumItem.', 44 | '', 45 | '[View documentation](https://developer.roblox.com/en-us/api-reference/datatype/EnumItem)', 46 | ].join('\n') 47 | } 48 | }, 49 | }, 50 | }; 51 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/classes/Model.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Field: { 7 | 8 | 'LevelOfDetail': { 9 | label: { 10 | name: 'LevelOfDetail', 11 | type: '(Enum.ModelLevelOfDetail)', 12 | }, 13 | documentation: { 14 | value: [ 15 | 'Determines the amount of detail to be rendered on meshes.', 16 | //'', 17 | //'* Tags: NotReplicated.', 18 | '', 19 | '[View documentation](https://developer.roblox.com/en-us/api-reference/property/Model/LevelOfDetail)', 20 | ].join('\n') 21 | } 22 | }, 23 | 24 | 'PrimaryPart': { 25 | label: { 26 | name: 'PrimaryPart', 27 | type: '(BasePart)', 28 | }, 29 | documentation: { 30 | value: [ 31 | 'Points to the Model’s primary part. The part is the BasePart that is used as a basis when positioning the model using the `Model:MoveTo` and `Model:SetPrimaryPartCFrame` functions.', 32 | //'', 33 | //'* Tags: NotReplicated.', 34 | '', 35 | '[View documentation](https://developer.roblox.com/en-us/api-reference/property/Model/PrimaryPart)', 36 | ].join('\n') 37 | } 38 | }, 39 | 40 | 'WorldPivot': { 41 | label: { 42 | name: 'WorldPivot', 43 | type: '(CFrame)', 44 | }, 45 | documentation: { 46 | value: [ 47 | '```lua', 48 | '--[[', 49 | '\t@beta This item is a beta feature used in Roblox Studio.', 50 | ']]', 51 | '```', 52 | 'The point around which a Model in Roblox Studio is translated/rotated.', 53 | 'If the Model\'s primary part exists, the `WorldPivot` is exactly equal to the pivot of the primary part.', 54 | '', 55 | '* Tags: NotReplicated.', 56 | '', 57 | '[View DevForum post](https://devforum.roblox.com/t/pivot-points-studio-beta/1180689)', 58 | ].join('\n') 59 | } 60 | }, 61 | }, 62 | 63 | Method: { 64 | 65 | 'BreakJoints() Model': { 66 | insertText: 'BreakJoints()', 67 | label: 'BreakJoints()', 68 | documentation: { 69 | value: [ 70 | '```lua', 'function BreakJoints()', '```', 71 | '', 72 | 'Breaks connections between BaseParts, including surface connections with any adjacent parts, WeldConstraints and all Welds and other JointInstances.', 73 | '', 74 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/BreakJoints)', 75 | ].join('\n') 76 | }, 77 | }, 78 | 79 | 'GetBoundingBox()': { 80 | insertText: 'GetBoundingBox()', 81 | documentation: { 82 | value: [ 83 | '```lua', 'function GetBoundingBox()\n -> (orientation: CFrame, size: Vector3)', '```', 84 | '', 85 | 'Returns a description of a volume that surrounds all parts of a Model.', 86 | 'The volume’s orientation is based on the orientation of the PrimaryPart.', 87 | 'The description is provided in the form of a CFrame **orientation** and Vector3 **size**.', 88 | '', 89 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/GetBoundingBox)', 90 | ].join('\n') 91 | }, 92 | }, 93 | 94 | 'GetExtentsSize()': { 95 | insertText: 'GetExtentsSize()', 96 | documentation: { 97 | value: [ 98 | '```lua', 'function GetExtentsSize()\n -> Vector3', '```', 99 | '', 100 | 'Returns the size of the smallest bounding box that contains all of the BaseParts in the Model, aligned with the Model.PrimaryPart if it is set.', 101 | '', 102 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/GetExtentsSize)', 103 | ].join('\n') 104 | }, 105 | }, 106 | 107 | 'GetPrimaryPartCFrame()': { 108 | insertText: 'GetPrimaryPartCFrame()', 109 | documentation: { 110 | value: [ 111 | '```lua', 'function GetPrimaryPartCFrame()\n -> CFrame', '```', 112 | '', 113 | 'Returns the CFrame of the Model’s Model.PrimaryPart. This function will throw an error if no primary part exists for the Model.', 114 | '', 115 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/GetPrimaryPartCFrame)', 116 | ].join('\n') 117 | }, 118 | }, 119 | 120 | 'MoveTo()': { 121 | insertText: 'MoveTo(${1:position})', 122 | documentation: { 123 | value: [ 124 | '```lua', 'function MoveTo(position: Vector3)', '```', 125 | '', 126 | 'Moves the Model.PrimaryPart to the given position. If a primary part has not been specified then the root part of the model will be used.', 127 | 'If there are any obstructions where the model is to be moved to, such as Terrain or other BaseParts, then the model will be moved up in the Y direction until there is nothing in the way.', 128 | 'If this behavior is not desired, [`Model:SetPrimaryPartCFrame`](https://developer.roblox.com/en-us/api-reference/function/Model/SetPrimaryPartCFrame) should be used instead.', 129 | '', 130 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/MoveTo)', 131 | ].join('\n') 132 | }, 133 | }, 134 | 135 | 'SetPrimaryPartCFrame()': { 136 | insertText: 'SetPrimaryPartCFrame(${1:cframe})', 137 | documentation: { 138 | value: [ 139 | '```lua', 'function SetPrimaryPartCFrame(cframe: CFrame)', '```', 140 | '', 141 | 'Sets the BasePart.CFrame of the Model’s Model.PrimaryPart. All other parts in the model will also be moved and will maintain their orientation and offset respective to the Model.PrimaryPart. This function will throw an error if no Model.PrimaryPart exists for the model.', 142 | '', 143 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/SetPrimaryPartCFrame)', 144 | ].join('\n') 145 | }, 146 | }, 147 | 148 | 'TranslateBy()': { 149 | insertText: 'TranslateBy(${1:delta})', 150 | documentation: { 151 | value: [ 152 | '```lua', 'function TranslateBy(delta: Vector3)', '```', 153 | '', 154 | 'Shifts a Model by the given `Vector3` offset, preserving the Model’s orientation. If another BasePart or Terrain already exists at the new position then the Model will overlap said object.', 155 | '', 156 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/Model/TranslateBy)', 157 | ].join('\n') 158 | }, 159 | }, 160 | 161 | 'GetPivot()': { 162 | insertText: 'GetPivot()', 163 | documentation: { 164 | value: [ 165 | '```lua', 166 | '--[[', 167 | '\t@beta This item is a beta feature used in Roblox Studio.', 168 | ']]', 169 | '```', 170 | '```lua', 'function GetPivot()\n -> CFrame', '```', 171 | '', 172 | 'Returns the current world space location of an object’s pivot as a CFrame.', 173 | 'This provides a uniform way to get a physical object’s position in 3d space regardless of whether it’s an individual part or a model.', 174 | '', 175 | '[View DevForum post](https://devforum.roblox.com/t/pivot-points-studio-beta/1180689)', 176 | ].join('\n') 177 | }, 178 | }, 179 | 180 | 'PivotTo()': { 181 | insertText: 'PivotTo(${1:targetCFrame})', 182 | documentation: { 183 | value: [ 184 | '```lua', 185 | '--[[', 186 | '\t@beta This item is a beta feature used in Roblox Studio.', 187 | ']]', 188 | '```', 189 | '```lua', 'function PivotTo(targetCFrame: CFrame)', '```', 190 | '', 191 | 'Moves the object, such that its pivot is now located exactly at a target CFrame.', 192 | 'This provides a uniform object movement API that applies to both individual parts and models.', 193 | 'If you’re already familiar with SetPrimaryPartCFrame, this works very similarly to that,', 194 | 'only operating on parts as well as models, and operating on the pivot instead of the PrimaryPart,', 195 | 'giving you more freedom over what point is being transformed.', 196 | '', 197 | '[View DevForum post](https://devforum.roblox.com/t/pivot-points-studio-beta/1180689)', 198 | ].join('\n') 199 | }, 200 | }, 201 | }, 202 | 203 | __requires__: [['classes/Instance']], 204 | }; 205 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/classes/RBXScriptSignal.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Method: { 7 | 'Connect()': { 8 | insertText: 'Connect(${1:func})', 9 | sortText: 'Connect', 10 | documentation: { 11 | value: [ 12 | '```lua', 'function Connect(func: (...any) -> nil)\n -> RBXScriptConnection', '```', 13 | '', 14 | 'Establishes a function to be called whenever the event is raised. Returns a [`RBXScriptConnection`](https://developer.roblox.com/en-us/api-reference/datatype/RBXScriptConnection) object associated with the connection.', 15 | '', 16 | '```lua', 17 | 'export type RBXScriptConnection = {', 18 | '\tConnected: bool,', 19 | '\tDisconnect: (self) -> nil,', 20 | '}', 21 | '```', 22 | ].join('\n') 23 | }, 24 | }, 25 | 26 | 'Wait()': { 27 | insertText: 'Wait()', 28 | sortText: 'Wait', 29 | documentation: { 30 | value: [ 31 | '```lua', 'function Wait()\n -> ...any', '```', 32 | '', 33 | 'Yields the current thread until this signal is fired. Returns what was fired to the signal.', 34 | ].join('\n') 35 | }, 36 | }, 37 | }, 38 | }; 39 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/classes/ServiceProvider.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Field: { 7 | }, 8 | 9 | Event: { 10 | 11 | 'ServiceRemoving': { 12 | label: { 13 | name: 'ServiceRemoving', 14 | type: '(RBXScriptSignal)', 15 | }, 16 | documentation: { 17 | value: [ 18 | '```lua', '-> service: Instance', '```', 19 | '', 20 | 'Fired when a service is about to be removed.', 21 | '', 22 | '[View documentation](https://developer.roblox.com/en-us/api-reference/event/ServiceProvider/ServiceRemoving)', 23 | ].join('\n') 24 | }, 25 | __children__: {}, 26 | __using__: ['classes/RBXScriptSignal'], 27 | }, 28 | 29 | 'ServiceAdded': { 30 | label: { 31 | name: 'ServiceAdded', 32 | type: '(RBXScriptSignal)', 33 | }, 34 | documentation: { 35 | value: [ 36 | '```lua', '-> service: Instance', '```', 37 | '', 38 | 'Fired when a service is created.', 39 | '', 40 | '[View documentation](https://developer.roblox.com/en-us/api-reference/event/ServiceProvider/ServiceAdded)', 41 | ].join('\n') 42 | }, 43 | __children__: {}, 44 | __using__: ['classes/RBXScriptSignal'], 45 | }, 46 | 47 | 'Close': { 48 | label: { 49 | name: 'Close', 50 | type: '(RBXScriptSignal)', 51 | }, 52 | documentation: { 53 | value: [ 54 | // '```lua', '-> nil', '```', 55 | // '', 56 | 'Fires when the current place is exited.', 57 | '', 58 | '[View documentation](https://developer.roblox.com/en-us/api-reference/event/ServiceProvider/Close)', 59 | ].join('\n') 60 | }, 61 | __children__: {}, 62 | __using__: ['classes/RBXScriptSignal'], 63 | }, 64 | 65 | 'CloseLate': { 66 | label: { 67 | name: 'CloseLate', 68 | type: '(RBXScriptSignal)', 69 | }, 70 | documentation: { 71 | value: [ 72 | // '```lua', '-> nil', '```', 73 | // '', 74 | 'Fired immediately after the [`ServiceProvider.Close`](https://developer.roblox.com/en-us/api-reference/event/ServiceProvider/Close) signal is fired.', 75 | '', 76 | '[View documentation](https://developer.roblox.com/en-us/api-reference/event/ServiceProvider/CloseLate)', 77 | ].join('\n') 78 | }, 79 | __children__: {}, 80 | __using__: ['classes/RBXScriptSignal'], 81 | }, 82 | }, 83 | 84 | Method: { 85 | 86 | 'GetService': { 87 | insertText: 'GetService("${1}")', 88 | label: 'GetService()', 89 | documentation: { 90 | value: [ 91 | '```lua', 'function GetService(className: string)\n -> Instance', '```', 92 | '', 93 | 'Returns the service with the requested class name, creating it if it does not exist.', 94 | '', 95 | '```lua', 'className: string\n | "ControllerService"\n | "TimerService"\n | "EventIngestService"\n | "Visit"\n | "VirtualInputManager"\n | "ServerScriptService"\n | "Chat"\n | "Studio"\n | "PluginGuiService"\n | "HttpRbxApiService"\n | "UserGameSettings"\n | "NetworkClient"\n | "ThirdPartyUserService"\n | "InsertService"\n | "HttpService"\n | "StudioService"\n | "PlayerEmulatorService"\n | "HeightmapImporterService"\n | "CSGDictionaryService"\n | "GamepadService"\n | "BulkImportService"\n | "NetworkSettings"\n | "ILegacyStudioBridge"\n | "Teams"\n | "SolidModelContentProvider"\n | "UGCValidationService"\n | "Debris"\n | "AppStorageService"\n | "StarterPlayer"\n | "MouseService"\n | "TeleportService"\n | "LogService"\n | "SoundService"\n | "LocalizationService"\n | "PhysicsService"\n | "ReplicatedStorage"\n | "CorePackages"\n | "RuntimeScriptService"\n | "AvatarEditorService"\n | "ReplicatedScriptService"\n | "CacheableContentProvider"\n | "GroupService"\n | "PolicyService"\n | "DataStoreService"\n | "CoreGui"\n | "BadgeService"\n | "FlyweightService"\n | "TweenService"\n | "TouchInputService"\n | "CollectionService"\n | "IncrementalPatchBuilder"\n | "TextService"\n | "VRService"\n | "HapticService"\n | "RobloxPluginGuiService"\n | "ReplicatedFirst"\n | "NetworkServer"\n | "ABTestService"\n | "FriendService"\n | "IXPService"\n | "PathfindingService"\n | "PackageService"\n | "DraftsService"\n | "ScriptService"\n | "UserStorageService"\n | "CookiesService"\n | "UnvalidatedAssetService"\n | "StarterPack"\n | "BrowserService"\n | "NonReplicatedCSGDictionaryService"\n | "SpawnerService"\n | "MemStorageService"\n | "CalloutService"\n | "VirtualUser"\n | "SocialService"\n | "VersionControlService"\n | "RenderSettings"\n | "FlagStandService"\n | "UserService"\n | "ContentProvider"\n | "UserInputService"\n | "ChangeHistoryService"\n | "CoreScriptSyncService"\n | "AdService"\n | "ContextActionService"\n | "LoginService"\n | "AssetService"\n | "GoogleAnalyticsConfiguration"\n | "StarterGui"\n | "MeshContentProvider"\n | "AssetCounterService"\n | "LanguageService"\n | "GamePassService"\n | "Lighting"\n | "PluginDebugService"\n | "InternalContainer"\n | "LocalStorageService"\n | "Selection"\n | "KeyboardService"\n | "MemoryStoreService"\n | "AssetDeliveryProxy"\n | "ProximityPromptService"\n | "MarketplaceService"\n | "GuidRegistryService"\n | "Geometry"\n | "PluginPolicyService"\n | "PermissionsService"\n | "DebuggerManager"\n | "GuiService"\n | "LuaWebService"\n | "MessagingService"\n | "Workspace"\n | "AssetManagerService"\n | "Players"\n | "StudioData"\n | "LegacyStudioBridge"\n | "ClusterPacketCache"\n | "PublishService"\n | "AnalyticsService"\n | "RbxAnalyticsService"\n | "SessionService"\n | "AppUpdateService"\n | "NotificationService"\n | "KeyframeSequenceProvider"\n | "RunService"\n | "TracerService"\n | "ServerStorage"\n | "ScriptContext"\n | "StopWatchReporter"\n | "TaskScheduler"\n | "RobloxReplicatedStorage"\n | "StudioDeviceEmulatorService"\n | "Stats"\n | "TestService"\n | "ToastNotificationService"', '```', 96 | '', 97 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/ServiceProvider/GetService)', 98 | ].join('\n') 99 | }, 100 | command: { title: "Lua", id: "editor.action.triggerSuggest" }, 101 | 102 | __children__: {}, 103 | __using__: ['params/DataModelServices'], 104 | }, 105 | 106 | 'FindService()': { 107 | insertText: 'FindService(${1:className})', 108 | documentation: { 109 | value: [ 110 | '```lua', 'function FindService(className: string)\n -> Instance', '```', 111 | '', 112 | 'Returns the service specified by the given className if it’s already created, errors for an invalid name.', 113 | '', 114 | '[View documents](https://developer.roblox.com/en-us/api-reference/function/ServiceProvider/FindService)', 115 | ].join('\n') 116 | }, 117 | }, 118 | }, 119 | }; 120 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/functions.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Function": { 6 | 7 | // Roblox: 8 | "assert()": { 9 | "insertText": "assert(${1:v}, ${2:message})", 10 | "documentation": { 11 | value: [ 12 | "```lua\nfunction assert(v: any, message: any)\n -> any\n```", 13 | "", 14 | "Calls error if the value of its argument is falsy and returns `v` if truthy." 15 | ].join("\n") 16 | }, 17 | }, 18 | 19 | "delay()": { 20 | "insertText": "delay(${1:delayTime}, ${2:callback})", 21 | "documentation": { 22 | value: [ 23 | "```lua\nfunction delay(delayTime: number, callback: function)\n```", 24 | "", 25 | "Schedules a function to be executed after `delayTime` seconds have passed, without yielding the current thread." 26 | ].join("\n") 27 | }, 28 | }, 29 | 30 | "elapsedTime()": { 31 | "insertText": "elapsedTime()", 32 | "documentation": { 33 | value: [ 34 | "```lua\nfunction elapsedTime()\n -> number\n```", 35 | "", 36 | "Returns how much time has elapsed since the current instance of Roblox was started." 37 | ].join("\n") 38 | }, 39 | }, 40 | 41 | "error()": { 42 | "insertText": "error(${1:message}, ${2:level})", 43 | "documentation": { 44 | value: [ 45 | "```lua\nfunction error(message: any [, level: integer])\n -> number\n```", 46 | "", 47 | "Terminates the last protected function called and returns message as the error object." 48 | ].join("\n") 49 | }, 50 | }, 51 | 52 | "getmetatable()": { 53 | "insertText": "getmetatable(${1:object})", 54 | "documentation": { 55 | value: [ 56 | "```lua\nfunction getmetatable(object: any)\n -> metatable: table\n```", 57 | "", 58 | "Returns the metatable of the given object." 59 | ].join("\n") 60 | }, 61 | }, 62 | 63 | "getfenv()": { 64 | "insertText": "getfenv(${1:f})", 65 | "documentation": { 66 | value: [ 67 | "```lua\nfunction getfenv([f: any(1)])\n -> table\n```", 68 | "", 69 | "Returns the current environment in use by the function. `f` can be a Lua function or a number that specifies the function at that stack level." 70 | ].join("\n") 71 | }, 72 | }, 73 | 74 | "ipairs()": { 75 | "insertText": "ipairs(${1:t})", 76 | "documentation": { 77 | value: [ 78 | "```lua\nfunction ipairs(t: table)\n -> iterator: any\n 2. t: table\n 3. i: integer(0)\n```", 79 | "---", 80 | "```lua\nfor i, v in ipairs(t) do\n\tbody\nend\n```" 81 | ].join("\n") 82 | }, 83 | }, 84 | 85 | "loadstring()": { 86 | "insertText": "loadstring(${1:string}, ${2:chunkname})", 87 | "documentation": { 88 | value: [ 89 | "```lua\nfunction loadstring(string [, chunkname: string])\n -> function\n 2. error_message: string\n```", 90 | "", 91 | "Loads a chunk from the given string." 92 | ].join("\n") 93 | }, 94 | }, 95 | 96 | "next()": { 97 | "insertText": "next(${1:table}, ${2:index})", 98 | "documentation": { 99 | value: [ 100 | "```lua\nfunction next(table: table [, index: any])\n -> key: any\n 2. value: any\n```", 101 | "", 102 | "Returns the next index of the table and its associated value." 103 | ].join("\n") 104 | }, 105 | }, 106 | 107 | "newproxy()": { 108 | "insertText": "newproxy(${1:addMetatable})", 109 | "documentation": { 110 | value: "```lua\nfunction newproxy(addMetatable: boolean)\n -> userdata\n```", 111 | }, 112 | }, 113 | 114 | "pairs()": { 115 | "insertText": "pairs(${1:t})", 116 | "documentation": { 117 | value: [ 118 | "```lua\nfunction pairs(t: table)\n -> @next: function\n 2. t: table\n 3. nil\n```", 119 | "---", 120 | "```lua\nfor i, v in pairs(t) do\n\tbody\nend\n```" 121 | ].join("\n") 122 | }, 123 | }, 124 | 125 | "pcall()": { 126 | "insertText": "pcall(${1:f}, ${2:arg}, ${3:...})", 127 | "documentation": { 128 | value: [ 129 | "```lua\nfunction pcall(f: function [, arg1: any, ...])\n -> success: boolean\n 2. result: any\n 3. ...\n```", 130 | "", 131 | "Calls function with the given arguments in protected mode." 132 | ].join("\n") 133 | }, 134 | }, 135 | 136 | "print()": { 137 | "insertText": "print(${1:...})", 138 | "documentation": { 139 | value: [ 140 | "```lua\nfunction print(...)\n```", 141 | "", 142 | "Receives any number of arguments and prints their values to stdout." 143 | ].join("\n") 144 | }, 145 | }, 146 | 147 | 148 | "rawequal()": { 149 | "insertText": "rawequal(${1:v1}, ${2:v2})", 150 | "documentation": { 151 | value: [ 152 | "```lua\nfunction rawequal(v1: any, v2: any)\n -> boolean\n```", 153 | "", 154 | "Checks whether `v1` is equal to `v2`, without invoking the `__eq` metamethod." 155 | ].join("\n") 156 | }, 157 | }, 158 | 159 | "rawget()": { 160 | "insertText": "rawget(${1:table}, ${2:index})", 161 | "documentation": { 162 | value: [ 163 | "```lua\nfunction rawget(table: table, index: any)\n -> any\n```", 164 | "", 165 | "Gets the real value of `table[index]`, without invoking the `__index` metamethod." 166 | ].join("\n") 167 | }, 168 | }, 169 | 170 | "require()": { 171 | "insertText": "require(${1:module})", 172 | "documentation": { 173 | value: "```lua\nfunction rawget(module: ModuleScript)\n -> any\n```", 174 | }, 175 | }, 176 | 177 | "rawset()": { 178 | "insertText": "rawset(${1:table}, ${2:index})", 179 | "documentation": { 180 | value: [ 181 | "```lua\nfunction rawset(table: table, index: any, value: any)\n -> table\n -> any\n```", 182 | "", 183 | "Sets the real value of `table[index]` to value, without invoking the `__newindex` metamethod." 184 | ].join("\n") 185 | }, 186 | }, 187 | 188 | "spawn()": { 189 | "insertText": "spawn(${1:callback})", 190 | "documentation": { 191 | value: [ 192 | "```lua\nfunction spawn(callback: function)\n```", 193 | "", 194 | "Runs the specified callback function in a separate thread, without yielding the current thread." 195 | ].join("\n") 196 | }, 197 | }, 198 | 199 | "setfenv()": { 200 | "insertText": "setfenv(${1:f|integer}, ${2:table})", 201 | "documentation": { 202 | value: [ 203 | "```lua\nfunction setfenv(f: function|integer, table)\n -> function\n```", 204 | "", 205 | "Sets the environment to be used by the given function. 'f' can be a Lua function or a number that specifies the function at that stack level." 206 | ].join("\n") 207 | }, 208 | }, 209 | 210 | "select()": { 211 | "insertText": "select(${1:string|integer}, ${2:...})", 212 | "documentation": { 213 | value: '```lua\nfunction select(index: string|integer, ...)\n -> any\n\nindex: string/integer\n | "#"\n | integer\n```', 214 | }, 215 | }, 216 | 217 | "settings()": { 218 | "insertText": "settings()", 219 | "documentation": { 220 | value: [ 221 | "```lua\nfunction settings()\n -> GlobalSettings\n```", 222 | "", 223 | "Returns the GlobalSettings object, which can be used to access the settings objects that are used in Roblox Studio’s settings menu." 224 | ].join("\n") 225 | }, 226 | }, 227 | 228 | "setmetatable()": { 229 | "insertText": "setmetatable(${1:table}, ${2:metatable})", 230 | "documentation": { 231 | value: [ 232 | "```lua\nfunction setmetatable(table: table, metatable: table)\n -> table\n```", 233 | "", 234 | "Sets the metatable for the given table." 235 | ].join("\n") 236 | }, 237 | }, 238 | 239 | "type()": { 240 | "insertText": "type(${1:v})", 241 | "documentation": { 242 | value: [ 243 | "```lua\nfunction type(v: any)\n -> type: string\n```", 244 | "", 245 | "Returns the type of its only argument, coded as a string.", 246 | "", 247 | '```lua', 248 | 'type: string\n | "nil"\n | "number"\n | "string"\n | "boolean"\n | "table"\n | "function"\n | "thread"\n | "userdata"', 249 | '```', 250 | ].join("\n") 251 | }, 252 | }, 253 | 254 | "typeof()": { 255 | "insertText": "typeof(${1:object})", 256 | "documentation": { 257 | value: [ 258 | "```lua\nfunction typeof(object: any)\n -> string\n```", 259 | "", 260 | "Returns the type of the object specified, as a string. This function is more accurate than Lua’s native `type` function, as it does not denote Roblox-specific types as userdata." 261 | ].join("\n") 262 | }, 263 | }, 264 | 265 | "tostring()": { 266 | "insertText": "tostring(${1:v})", 267 | "documentation": { 268 | value: [ 269 | "```lua\nfunction tostring(v: any)\n -> string\n```", 270 | "", 271 | "Receives a value of any type and converts it to a string in a human-readable format." 272 | ].join("\n") 273 | }, 274 | }, 275 | 276 | "time()": { 277 | "insertText": "time()", 278 | "documentation": { 279 | value: [ 280 | "```lua\nfunction time()\n -> number\n```", 281 | "", 282 | "Returns the amount of time, in seconds, that has elapsed since the current game instance started running. If the current game instance is not running, this will be 0" 283 | ].join("\n") 284 | }, 285 | }, 286 | 287 | "tonumber()": { 288 | "insertText": "tonumber(${1:e|number}, ${2:base})", 289 | "documentation": { 290 | value: [ 291 | "```lua\nfunction tonumber(e: string|number [, base: integer])\n -> number\n```", 292 | "", 293 | "Tries to convert its argument to a number." 294 | ].join("\n") 295 | }, 296 | }, 297 | 298 | "tick()": { 299 | "insertText": "tick()", 300 | "documentation": { 301 | value: [ 302 | "```lua\nfunction tick()\n -> number\n```", 303 | "", 304 | "Returns how much time has elapsed, in seconds, since the UNIX epoch, on the current local session’s computer." 305 | ].join("\n") 306 | }, 307 | }, 308 | 309 | "unpack()": { 310 | "insertText": "unpack(${1:list}, ${2:i}, ${3:j})", 311 | "documentation": { 312 | value: [ 313 | '```lua', 'function unpack(list: table [, i: integer(1) [, j: integer]]): ...any', '```', 314 | '', 315 | 'Returns all elements from an array as results.', 316 | '', 317 | '---', 318 | '```lua', 'return list[i], list[i+1], ···, list[j]', '```', 319 | ].join("\n") 320 | }, 321 | }, 322 | 323 | "UserSettings()": { 324 | "insertText": "UserSettings()", 325 | "documentation": { 326 | value: [ 327 | "```lua\nfunction UserSettings()\n -> UserSettings\n```", 328 | "", 329 | "Returns the UserSettings object, which is used to read information from the current user’s game menu settings." 330 | ].join("\n") 331 | }, 332 | }, 333 | 334 | "warn()": { 335 | "insertText": "warn(${1:...})", 336 | "documentation": { 337 | value: [ 338 | "```lua\nfunction warn(...)\n```", 339 | "", 340 | "Emits a warning with a message composed by the concatenation of all its arguments (which should be strings)." 341 | ].join("\n") 342 | }, 343 | }, 344 | 345 | "wait()": { 346 | "insertText": "wait(${1:seconds})", 347 | "documentation": { 348 | value: [ 349 | "```lua\nfunction wait(seconds: number)\n -> number\n 2. number\n```", 350 | "", 351 | "Yields the current thread until the specified amount of `seconds` have elapsed." 352 | ].join("\n") 353 | }, 354 | }, 355 | 356 | "xpcall()": { 357 | "insertText": "xpcall(${1:f}, ${2:err}, ${3:arg1}, ${4:...})", 358 | "documentation": { 359 | value: [ 360 | "```lua\nfunction xpcall(f: function, err: function [, arg1: any, ...])\n -> success: boolean\n 2. result: any\n 3. ...\n```", 361 | "", 362 | "Calls function `f` in protected mode with a new message handler." 363 | ].join("\n") 364 | }, 365 | }, 366 | }, 367 | }; 368 | }); 369 | -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/globals.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Variable": { 6 | "game": { 7 | __children__: {}, 8 | __using__: ['classes/DataModel'], 9 | }, 10 | "Enum": { 11 | __children__: {}, 12 | __using__: ['classes/Enums'], 13 | }, 14 | "shared": {}, 15 | "script": { 16 | __children__: {}, 17 | __using__: ['classes/Instance'], 18 | }, 19 | "_G": {}, 20 | "_VERSION": {}, 21 | "workspace": { 22 | __children__: {}, 23 | __using__: ['classes/Workspace'], 24 | }, 25 | "plugin": {}, 26 | "syn": {}, 27 | "task": { 28 | __children__: {}, 29 | __using__: ['libraries/task'] 30 | }, 31 | 32 | "Drawing": { 33 | __children__: {}, 34 | __using__: ['libraries/Drawing'] 35 | } 36 | }, 37 | }; 38 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/keywords.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Keyword": { 6 | 7 | // Operators: 8 | "and": {}, 9 | "not": {}, 10 | "or": {}, 11 | 12 | // Keywords: 13 | "break": {}, 14 | "continue": {}, 15 | "end": {}, 16 | "in": {}, 17 | "local": {}, 18 | "then": {}, 19 | "until": {}, 20 | 21 | // Special words: 22 | "self": {}, 23 | 24 | }, 25 | }; 26 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/libraries/Drawing.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Function": { 6 | 'new': { 7 | insertText: 'new("${1}")', 8 | label: 'new()', 9 | documentation: { 10 | value: [ 11 | '```lua', 'function new(type: string)\n -> Instance', '```', 12 | '', 13 | 'Creates a new object of type val. The parent argument is optional; If it is supplied, the object will be parented to that object', 14 | '', 15 | '', 16 | '```lua', 'type: string\n | "Line"\n | "Text"\n | "Image"\n | "Circle"\n | "Square"\n | "Quad"\n | "Triangle"', '```', 17 | ].join('\n') 18 | }, 19 | command: { title: "Lua", id: "editor.action.triggerSuggest" }, 20 | 21 | __children__: {}, 22 | __using__: ['params/DrawingTypes'], 23 | } 24 | }, 25 | 26 | "Field": { 27 | 'Fonts': { 28 | label: { 29 | name: 'Fonts', 30 | type: '(Drawing.Fonts)', 31 | }, 32 | 33 | __children__: { 34 | Field: { 35 | UI: { 36 | label: { 37 | name: "UI", 38 | type: "(number)" 39 | }, 40 | documentation: { 41 | value: 'Drawing.Fonts.UI -> 0' 42 | } 43 | }, 44 | System: { 45 | label: { 46 | name: "System", 47 | type: "(number)" 48 | }, 49 | documentation: { 50 | value: 'Drawing.Fonts.System -> 1' 51 | } 52 | }, 53 | Plex: { 54 | label: { 55 | name: "Plex", 56 | type: "(number)" 57 | }, 58 | documentation: { 59 | value: 'Drawing.Fonts.Plex -> 2' 60 | } 61 | }, 62 | Monospace: { 63 | label: { 64 | name: "Monospace", 65 | type: "(number)" 66 | }, 67 | documentation: { 68 | value: 'Drawing.Fonts.Monospace -> 3' 69 | } 70 | }, 71 | } 72 | } 73 | }, 74 | } 75 | } 76 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/libraries/Krnl.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Field": { 6 | 'SaveInstance': { 7 | label: { 8 | name: 'SaveInstance', 9 | type: 'table', 10 | }, 11 | 12 | __children__: { 13 | Field: { 14 | SavePlayer: { 15 | label: { 16 | name: "SavePlayer", 17 | type: "(boolean)" 18 | }, 19 | }, 20 | DecompileScripts: { 21 | label: { 22 | name: "DecompileScripts", 23 | type: "(boolean)" 24 | }, 25 | }, 26 | }, 27 | Function: { 28 | Save: { 29 | label: { 30 | name: "Save", 31 | type: "(void)" 32 | } 33 | } 34 | } 35 | } 36 | }, 37 | 38 | 'crypt': { 39 | label: { 40 | name: 'crypt', 41 | type: 'table' 42 | }, 43 | 44 | __children__: { 45 | Function: { 46 | hash: { 47 | insertText: 'hash("${1:string}")', 48 | label: 'hash()', 49 | } 50 | } 51 | } 52 | }, 53 | 54 | 'Base64': { 55 | label: { 56 | name: 'Base64', 57 | type: 'table' 58 | }, 59 | 60 | __children__: { 61 | Function: { 62 | Encode: { 63 | insertText: 'Encode("${1}")', 64 | label: 'Encode()' 65 | }, 66 | Decode: { 67 | insertText: 'Decode("${1}")', 68 | label: 'Decode()' 69 | } 70 | } 71 | } 72 | }, 73 | 74 | 'WebSocket': { 75 | label: { 76 | name: 'WebSocket', 77 | type: 'table' 78 | }, 79 | 80 | __children__: { 81 | Function: { 82 | connect: { 83 | insertText: 'connect("${1}")', 84 | label: 'connect()' 85 | } 86 | }, 87 | 88 | Method: { 89 | Send: { 90 | insertText: 'Send("${1}")', 91 | label: 'Send()' 92 | }, 93 | Close: { 94 | insertText: 'Close()', 95 | label: 'Close()' 96 | } 97 | } 98 | } 99 | } 100 | } 101 | } 102 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/libraries/debug.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Function: { 7 | 8 | /** 9 | * Roblox 10 | */ 11 | 12 | 'traceback()': { 13 | insertText: 'traceback(${1:thread}, ${2:message}, ${3:level})', 14 | documentation: { 15 | value: [ 16 | '```lua', 'function traceback([thread,] [message: any [, level: any(1)]])\n -> message: any', '```', 17 | '', 18 | 'Returns a string with a traceback of the call stack. The optional message string is appended at the beginning of the traceback.', 19 | '', 20 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/debug)', 21 | ].join('\n') 22 | }, 23 | }, 24 | 25 | 'profilebegin()': { 26 | insertText: 'profilebegin(${1:label})', 27 | documentation: { 28 | value: [ 29 | '```lua', 'function profilebegin(label: string)', '```', 30 | '', 31 | 'Opens a microprofiler label.', 32 | '', 33 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/debug)', 34 | ].join('\n') 35 | }, 36 | }, 37 | 38 | 'profileend()': { 39 | insertText: 'profileend()', 40 | documentation: { 41 | value: [ 42 | '```lua', 'function profileend()', '```', 43 | '', 44 | 'Closes the top microprofiler label.', 45 | '', 46 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/debug)', 47 | ].join('\n') 48 | }, 49 | }, 50 | 51 | 'info()': { 52 | insertText: 'info(${1:level}, ${2:options})', 53 | documentation: { 54 | value: [ 55 | '```lua', 'function info(level: number, options: string)\n -> table', '```', 56 | '', 57 | 'Returns debug information about a given stack frame or function object based on the options string (that can contain characters nslfa).', 58 | '', 59 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/debug)', 60 | ].join('\n') 61 | }, 62 | }, 63 | 64 | 'getupvalue()': { 65 | insertText: 'getupvalue(${1:func|integer}, ${2:index})', 66 | documentation: { 67 | value: [ 68 | '```lua', 'function getupvalue(f: function|integer, index: number)\n -> any', '```', 69 | '', 70 | 'Returns the value of the upvalue at the given index of the function or level `f`.', 71 | 'The function returns `nil` if there is no upvalue with the given index.', 72 | '', 73 | '---', 74 | '', 75 | '```lua', 76 | 'local Lighting = game:GetService("Lighting")', 77 | 'local Players = game:GetService("Players")', 78 | ';(function()', 79 | '\tLighting.Name = "Michael"', 80 | '\tPlayers.Name = "Robin"', 81 | '\tdebug.getupvalues(1, 1) --> Lighting', 82 | '\tdebug.getupvalues(1, 2) --> Players', 83 | 'end)()', 84 | '```', 85 | '', 86 | '[View Lua documents](https://www.lua.org/manual/5.3/manual.html#pdf-debug.getupvalue)', 87 | ].join('\n') 88 | }, 89 | }, 90 | 91 | 'getconstant()': { 92 | insertText: 'getconstant(${1:func|integer}, ${2:index})', 93 | documentation: { 94 | value: [ 95 | '```lua', 'function getconstant(f: function|integer, index: number)\n -> any', '```', 96 | '', 97 | 'Returns the constant at the given index of the function or level `f`.', 98 | '', 99 | '---', 100 | '', 101 | '```lua', 102 | 'local x = 1', 103 | 'print(x)', 104 | 'debug.getconstant(1, 1) --> 1 (number)', 105 | 'debug.getconstant(1, 2) --> print (string)', 106 | '```', 107 | ].join('\n') 108 | }, 109 | }, 110 | 111 | 'setstack()': { 112 | insertText: 'setstack(${1:level}, ${2:index}, ${3:value})', 113 | documentation: { 114 | value: [ 115 | '```lua', 'function setstack(f: number, index: number, value: any)', '```', 116 | '', 117 | 'Assigns the value to the stack item with the given index of the function `f`.', 118 | '', 119 | '---', 120 | '', 121 | '```lua', 122 | 'local function MyFunc()', 123 | '\tprint("Yo\'")', 124 | 'end', 125 | '', 126 | '-- Sets the element at index 1 (MyFunc) to another function:', 127 | 'debug.setstack(1, 1, function()', 128 | '\tprint("Aha!")', 129 | 'end)', 130 | '', 131 | 'MyFunc() --> Aha!', 132 | '```', 133 | ].join('\n') 134 | }, 135 | }, 136 | 137 | 'getstack()': { 138 | insertText: 'getstack(${1:level})', 139 | documentation: { 140 | value: [ 141 | '```lua', 'function getstack(f: number)', '```', 142 | '', 143 | 'Gets the runtime stack for the level `f`.', 144 | '', 145 | '---', 146 | '', 147 | '```lua', 148 | 'local function MyFunc()', 149 | 'end', 150 | '', 151 | 'local children = workspace:GetChildren()', 152 | '', 153 | 'table.foreach(children, MyFunc)', 154 | '', 155 | '--> { MyFunc, children, MyFunc }', 156 | '```', 157 | ].join('\n') 158 | }, 159 | }, 160 | 161 | 'getproto()': { 162 | insertText: 'getproto(${1:func|integer}, ${2:index}, ${3:list})', 163 | documentation: { 164 | value: [ 165 | '```lua', 'function getproto(f: function|integer, index: number)\n -> function', '```', 166 | '', 167 | '```lua', 'function getproto(f: function|integer, index: number, list: boolean)\n -> Array', '```', 168 | '', 169 | 'Gets the inner function at the given index of the function or number `f`.', 170 | 'If `list` is true, returns a list of garbage collected instances of the function.', 171 | 'The function returned is not equivalent to the original function.', 172 | '', 173 | '---', 174 | '', 175 | '```lua', 176 | 'local function f()', 177 | 'end', 178 | '', 179 | 'debug.getproto(1, 1) --> Proto', 180 | '```', 181 | ].join('\n') 182 | }, 183 | }, 184 | 185 | 'getprotos()': { 186 | insertText: 'getprotos(${1:func|integer})', 187 | documentation: { 188 | value: [ 189 | '```lua', 'function getprotos(f: function|integer)\n -> Array', '```', 190 | '', 191 | 'Returns a list of inner functions for the function or number `f`.', 192 | 'The functions returned will not have upvalues and are not equivalent to the original function.', 193 | '', 194 | '---', 195 | '', 196 | '```lua', 197 | 'local function a()', 198 | 'end', 199 | 'local function b()', 200 | 'end', 201 | 'local function c()', 202 | 'end', 203 | '', 204 | 'debug.getprotos(1) --> { Proto, Proto, Proto }', 205 | '```', 206 | ].join('\n') 207 | }, 208 | }, 209 | 210 | 'setproto()': { 211 | insertText: 'setproto(${1:func|integer}, ${2:index}, ${3:func})', 212 | documentation: { 213 | value: [ 214 | '```lua', 'function setproto(f: function|integer, index: number, func: function)', '```', 215 | '', 216 | 'Assigns the function to the inner function with the given index of the function `f`.', 217 | '', 218 | '---', 219 | '', 220 | '```lua', 221 | 'local function MyFunc()', 222 | '\tlocal function Inner()', 223 | '\t\tprint("Yo\'")', 224 | '\tend', 225 | '\tInner()', 226 | 'end', 227 | 'debug.setproto(MyFunc, 1, function()', 228 | '\tprint("Aha")', 229 | 'end', 230 | 'MyFunc() --> Aha', 231 | '```', 232 | ].join('\n') 233 | }, 234 | }, 235 | 236 | 'getconstants()': { 237 | insertText: 'getconstants(${1:func|integer})', 238 | documentation: { 239 | value: [ 240 | '```lua', 'function getconstants(f: function|integer)\n -> Array', '```', 241 | '', 242 | 'Returns the list of constants in the function or level `f`.', 243 | '', 244 | '---', 245 | '', 246 | '```lua', 247 | 'workspace.Name = "Michael"', 248 | 'debug.getconstants(1) --> { "workspace", "Name", "Michael" }', 249 | '```', 250 | ].join('\n') 251 | }, 252 | }, 253 | 254 | 'getinfo()': { 255 | insertText: 'getinfo(${1:func|integer})', 256 | documentation: { 257 | value: [ 258 | '```lua', 'function getinfo(f: function|integer)\n -> FunctionInfo', '```', 259 | '', 260 | 'Returns a table with information about a function. You can give the function directly', 261 | 'or you can give a number as the value of `f`, which means the function running at level', 262 | '`f` of the call stack of the given thread. The second argument, `options`, is still in progress.', 263 | '', 264 | '```lua', 265 | 'export type FunctionInfo = {', 266 | '\tname: string,', 267 | '\tshort_src: string,', 268 | '\twhat: string,', 269 | '\tcurrentline: number,', 270 | '\tnups: number,', 271 | '\tfunc: function,', 272 | '\tsource: string,', 273 | '}', 274 | '```', 275 | '', 276 | '[View Lua documents](https://www.lua.org/manual/5.3/manual.html#pdf-debug.getinfo)', 277 | ].join('\n') 278 | }, 279 | }, 280 | 281 | 'setupvalue()': { 282 | insertText: 'setupvalue(${1:func|integer}, ${2:index}, ${3:value})', 283 | documentation: { 284 | value: [ 285 | '```lua', 'function setupvalue(f: function|integer, index: number, value: any)\n -> string?', '```', 286 | '', 287 | 'Assigns the value to the upvalue with the given index of the function `f`.', 288 | 'The function returns `nil` if there is no upvalue with the given index. Otherwise,', 289 | 'it returns the name of the upvalue.', 290 | '', 291 | '---', 292 | '', 293 | '```lua', 294 | 'local keys = {', 295 | '\t["asd123"] = "blacklisted",', 296 | '}', 297 | 'local myKey = "asd123"', 298 | '', 299 | 'local function IsValid()', 300 | '\treturn keys[myKey] == "whitelisted"', 301 | 'end', 302 | '', 303 | '-- Replaces upvalue \'keys\' with one where we\'re whitelisted:', 304 | 'debug.setupvalue(IsValid, 1, { asd123 = "whitelisted" })', 305 | '```', 306 | '', 307 | '[View Lua documents](https://www.lua.org/manual/5.3/manual.html#pdf-debug.setupvalue)', 308 | ].join('\n') 309 | }, 310 | }, 311 | 312 | 'setconstant()': { 313 | insertText: 'setconstant(${1:func|integer}, ${2:index}, ${3:value})', 314 | documentation: { 315 | value: [ 316 | '```lua', 'function setconstant(f: function|integer, index: number, value: any)', '```', 317 | '', 318 | 'Assigns the value to the constant with the given index of the function `f`.', 319 | '', 320 | '---', 321 | '', 322 | '```lua', 323 | 'local keys = {', 324 | '\t["asd123"] = "blacklisted",', 325 | '}', 326 | 'local myKey = "asd123"', 327 | '', 328 | 'local function IsValid()', 329 | '\treturn keys[myKey] == "whitelisted"', 330 | 'end', 331 | '', 332 | '-- Makes \'IsValid\' true for blacklisted keys by changing the \'whitelisted\' check:', 333 | 'debug.setconstant(IsValid, 3, "blacklisted")', 334 | '```', 335 | ].join('\n') 336 | }, 337 | }, 338 | 339 | 'getregistry()': { 340 | insertText: 'getregistry()', 341 | documentation: { 342 | value: [ 343 | '```lua', 'function getregistry()\n -> Map', '```', 344 | '', 345 | 'Returns the registry table.', 346 | 'Lua provides a *registry*, a predefined table that can be used by any C code to store whatever Lua values it needs to store.', 347 | 'The executor allows you to view the registry through Lua code.', 348 | '', 349 | '[View Lua documents](https://www.lua.org/manual/5.3/manual.html#pdf-debug.getregistry)', 350 | ].join('\n') 351 | }, 352 | }, 353 | 354 | 'getupvalues()': { 355 | insertText: 'getupvalues(${1:func|integer})', 356 | documentation: { 357 | value: [ 358 | '```lua', 'function getupvalues(f: function|integer)\n -> Array', '```', 359 | '', 360 | 'Returns the list of upvalues in the function or level `f`.', 361 | '', 362 | '---', 363 | '', 364 | '```lua', 365 | 'local Lighting = game:GetService("Lighting")', 366 | 'local Players = game:GetService("Players")', 367 | ';(function()', 368 | '\tLighting.Name = "Michael"', 369 | '\tPlayers.Name = "Robin"', 370 | '\tdebug.getupvalues(1) --> { Lighting, Players }', 371 | 'end)()', 372 | '```', 373 | ].join('\n') 374 | }, 375 | }, 376 | }, 377 | }; 378 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/libraries/table.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | 7 | Function: { 8 | 9 | 'insert()': { 10 | insertText: 'insert(${1:list}, ${2:pos}, ${3:value})', 11 | sortText: 'insert', 12 | documentation: { 13 | value: [ 14 | '```lua', 'function insert(list: table [, pos: integer], value: any)', '```', 15 | '', 16 | 'Inserts element `value` at position `pos` in list.', 17 | ].join('\n') 18 | }, 19 | }, 20 | 21 | 'clear()': { 22 | insertText: 'clear(${1:table})', 23 | sortText: 'clear', 24 | documentation: { 25 | value: [ 26 | '```lua', 'function clear(table)', '```', 27 | '', 28 | 'Clears all keys from the table, but leaves their capacity allocated so that future keys added to the table can re-use that storage, avoiding additional allocations.', 29 | ].join('\n') 30 | }, 31 | }, 32 | 33 | 'move()': { 34 | insertText: 'move(${1:list}, ${2:pos}, ${2:value})', 35 | sortText: 'move', 36 | documentation: { 37 | value: [ 38 | '```lua', 'function move(a1: table, f: integer, e: integer, t: integer [, a2: table])\n -> a2: table', '```', 39 | '', 40 | 'Moves elements from table `a1` to table `a2`.', 41 | '', 42 | '```lua', 'a2[t],··· = a1[f],···,a1[e]\nreturn a2', '```', 43 | ].join('\n') 44 | }, 45 | }, 46 | 47 | 'pack()': { 48 | insertText: 'pack(${1:...})', 49 | sortText: 'pack', 50 | documentation: { 51 | value: [ 52 | '```lua', 'function pack(...)\n -> table', '```', 53 | '', 54 | 'Returns a new table with all arguments stored into keys `1`, `2`, etc. and with a field `"n"` with the total number of arguments.', 55 | ].join('\n') 56 | }, 57 | }, 58 | 59 | 'remove()': { 60 | insertText: 'remove(${1:list}, ${2:pos})', 61 | sortText: 'remove', 62 | documentation: { 63 | value: [ 64 | '```lua', 'function remove(list: table [, pos: integer])\n -> any', '```', 65 | '', 66 | 'Removes from `list` the element at position `pos`, returning the value of the removed element.', 67 | ].join('\n') 68 | }, 69 | }, 70 | 71 | 'sort()': { 72 | insertText: 'sort(${1:list}, ${2:comp})', 73 | sortText: 'sort', 74 | documentation: { 75 | value: [ 76 | '```lua', 'function sort(list: table [, comp: (a, b) -> boolean])', '```', 77 | '', 78 | 'Sorts list elements in a given order, *in-place*, from `list[1]` to `list[#list]`.', 79 | ].join('\n') 80 | }, 81 | }, 82 | 83 | 'getn()': { 84 | insertText: 'getn(${1:table})', 85 | sortText: 'getn', 86 | documentation: { 87 | value: [ 88 | '```lua', 'function getn(table)\n -> integer', '```', 89 | '', 90 | 'Returns the number of elements in the table passed.', 91 | ].join('\n') 92 | }, 93 | }, 94 | 95 | 'foreach()': { 96 | insertText: 'foreach(${1:table}, ${2:f})', 97 | sortText: 'foreach', 98 | documentation: { 99 | value: [ 100 | '```lua', 'function foreach(table, f: (any, any) -> nil)', '```', 101 | '', 102 | 'Apply the function `f` to the elements of the table passed.', 103 | ].join('\n') 104 | }, 105 | }, 106 | 107 | 'concat()': { 108 | insertText: 'concat(${1:list}, ${2:sep}, ${3:i}, ${4:j})', 109 | sortText: 'concat', 110 | documentation: { 111 | value: [ 112 | '```lua', 'function concat(list: table [, sep: string("") [, i: integer(1) [, j: integer]]])\n -> string', '```', 113 | '', 114 | 'Returns a string of all the values of array `list` separated by `sep`.', 115 | '', 116 | '---', 117 | '```lua', 'return list[i]..sep..list[i+1] ··· sep..list[j]', '```', 118 | ].join('\n') 119 | }, 120 | }, 121 | 122 | 'foreachi()': { 123 | insertText: 'foreachi(${1:table}, ${2:f})', 124 | sortText: 'foreachi', 125 | documentation: { 126 | value: [ 127 | '```lua', 'function foreachi(table, f: (number, any) -> nil)', '```', 128 | '', 129 | 'Apply the function `f` to the elements of the table passed. This is similar to `table.foreach()` except that index-value pairs are passed, not key-value pairs.', 130 | ].join('\n') 131 | }, 132 | }, 133 | 134 | 'create()': { 135 | insertText: 'create(${1:count}, ${2:value})', 136 | sortText: 'create', 137 | documentation: { 138 | value: [ 139 | '```lua', 'function create(count: integer, value: any?)\n -> table', '```', 140 | '', 141 | 'Creates an array-like table with count `values`, initialized to value. When value is `nil` or omitted, the resulting table has length 0, but has preallocated storage for count elements.', 142 | ].join('\n') 143 | }, 144 | }, 145 | 146 | 'find()': { 147 | insertText: 'find(${1:table}, ${2:value}, ${3:init})', 148 | sortText: 'find', 149 | documentation: { 150 | value: [ 151 | '```lua', 'function find(table, value: any [, init: integer(1)])\n -> any', '```', 152 | '', 153 | 'Returns the numeric index of the first occurence of `value`, starting from `init`, or nil if value isn\'t present in the table. The default for `init` is 1.', 154 | ].join('\n') 155 | }, 156 | }, 157 | 158 | 'unpack()': { 159 | insertText: 'unpack(${1:list}, ${2:i}, ${3:j})', 160 | sortText: 'unpack', 161 | documentation: { 162 | value: [ 163 | '```lua', 'function unpack(list: table [, i: integer(1) [, j: integer]]): ...any', '```', 164 | '', 165 | 'Returns all elements from an array as results.', 166 | '', 167 | '---', 168 | '```lua', 'return list[i], list[i+1], ···, list[j]', '```', 169 | ].join('\n') 170 | }, 171 | }, 172 | }, 173 | }; 174 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/libraries/task.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | 6 | Function: { 7 | 8 | /** 9 | * Roblox 10 | */ 11 | 12 | 'spawn()': { 13 | insertText: 'spawn(${1:function}, ${2:...args})', 14 | documentation: { 15 | value: [ 16 | '```lua', 'function spawn([function,] [args: any])\n -> void', '```', 17 | '', 18 | 'This function is based on the fastSpawn pattern.', 19 | '', 20 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/task)', 21 | ].join('\n') 22 | }, 23 | }, 24 | 25 | 'defer()': { 26 | insertText: 'defer(${1:function}, ${2:...args})', 27 | documentation: { 28 | value: [ 29 | '```lua', 'function defer([function,] [args: any]\n -> void', '```', 30 | '', 31 | 'Calls the function later at the next resumption cycle.', 32 | '', 33 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/task)' 34 | ].join('\n') 35 | } 36 | }, 37 | 38 | 'delay()': { 39 | insertText: 'delay(${1:number}, ${2:function}, ${3:...args})', 40 | documentation: { 41 | value: [ 42 | '```lua', 'function delay([duration: number], [function, [args: any]])\n -> void', '```', 43 | '', 44 | 'Scheduled to be called/resumed on the next Heartbeat after the given amount of time in seconds has elapsed.', 45 | '', 46 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/task)' 47 | ].join('\n') 48 | } 49 | }, 50 | 51 | 'wait()': { 52 | insertText: 'wait(${1:number})', 53 | documentation: { 54 | value: [ 55 | '```lua', 'function wait([duration: number])\n -> number', '```', 56 | '', 57 | 'Yields the current thread until the given duration (in seconds) has elapsed, then resumes the thread on the next Heartbeat step.', 58 | '', 59 | '[View documents](https://developer.roblox.com/en-us/api-reference/lua-docs/task)' 60 | ].join('\n') 61 | } 62 | } 63 | }, 64 | }; 65 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/modules-table.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | Module: { 6 | 7 | table: { 8 | 9 | __children__: { 10 | 11 | Function: { 12 | 13 | 'insert()': { 14 | insertText: 'insert(${1:list}, ${2:pos}, ${3:value})', 15 | sortText: 'insert', 16 | documentation: { 17 | value: [ 18 | '```lua', 'function insert(list: table [, pos: integer], value: any)', '```', 19 | '', 20 | 'Inserts element `value` at position `pos` in list.', 21 | ].join('\n') 22 | }, 23 | }, 24 | 25 | 'clear()': { 26 | insertText: 'clear(${1:table})', 27 | sortText: 'clear', 28 | documentation: { 29 | value: [ 30 | '```lua', 'function clear(table)', '```', 31 | '', 32 | 'Clears all keys from the table, but leaves their capacity allocated so that future keys added to the table can re-use that storage, avoiding additional allocations.', 33 | ].join('\n') 34 | }, 35 | }, 36 | 37 | 'move()': { 38 | insertText: 'move(${1:list}, ${2:pos}, ${2:value})', 39 | sortText: 'move', 40 | documentation: { 41 | value: [ 42 | '```lua', 'function move(a1: table, f: integer, e: integer, t: integer [, a2: table])\n -> a2: table', '```', 43 | '', 44 | 'Moves elements from table `a1` to table `a2`.', 45 | '', 46 | '```lua', 'a2[t],··· = a1[f],···,a1[e]\nreturn a2', '```', 47 | ].join('\n') 48 | }, 49 | }, 50 | 51 | 'pack()': { 52 | insertText: 'pack(${1:...})', 53 | sortText: 'pack', 54 | documentation: { 55 | value: [ 56 | '```lua', 'function pack(...)\n -> table', '```', 57 | '', 58 | 'Returns a new table with all arguments stored into keys `1`, `2`, etc. and with a field `"n"` with the total number of arguments.', 59 | ].join('\n') 60 | }, 61 | }, 62 | 63 | 'remove()': { 64 | insertText: 'remove(${1:list}, ${2:pos})', 65 | sortText: 'remove', 66 | documentation: { 67 | value: [ 68 | '```lua', 'function remove(list: table [, pos: integer])\n -> any', '```', 69 | '', 70 | 'Removes from `list` the element at position `pos`, returning the value of the removed element.', 71 | ].join('\n') 72 | }, 73 | }, 74 | 75 | 'sort()': { 76 | insertText: 'sort(${1:list}, ${2:comp})', 77 | sortText: 'sort', 78 | documentation: { 79 | value: [ 80 | '```lua', 'function sort(list: table [, comp: (a, b) -> boolean])', '```', 81 | '', 82 | 'Sorts list elements in a given order, *in-place*, from `list[1]` to `list[#list]`.', 83 | ].join('\n') 84 | }, 85 | }, 86 | 87 | 'getn()': { 88 | insertText: 'getn(${1:table})', 89 | sortText: 'getn', 90 | documentation: { 91 | value: [ 92 | '```lua', 'function getn(table)\n -> integer', '```', 93 | '', 94 | 'Returns the number of elements in the table passed.', 95 | ].join('\n') 96 | }, 97 | }, 98 | 99 | 'foreach()': { 100 | insertText: 'foreach(${1:table}, ${2:f})', 101 | sortText: 'foreach', 102 | documentation: { 103 | value: [ 104 | '```lua', 'function foreach(table, f: (any, any) -> nil)', '```', 105 | '', 106 | 'Apply the function `f` to the elements of the table passed.', 107 | ].join('\n') 108 | }, 109 | }, 110 | 111 | 'concat()': { 112 | insertText: 'concat(${1:list}, ${2:sep}, ${3:i}, ${4:j})', 113 | sortText: 'concat', 114 | documentation: { 115 | value: [ 116 | '```lua', 'function concat(list: table [, sep: string("") [, i: integer(1) [, j: integer]]])\n -> string', '```', 117 | '', 118 | 'Returns a string of all the values of array `list` separated by `sep`.', 119 | '', 120 | '---', 121 | '```lua', 'return list[i]..sep..list[i+1] ··· sep..list[j]', '```', 122 | ].join('\n') 123 | }, 124 | }, 125 | 126 | 'foreachi()': { 127 | insertText: 'foreachi(${1:table}, ${2:f})', 128 | sortText: 'foreachi', 129 | documentation: { 130 | value: [ 131 | '```lua', 'function foreachi(table, f: (number, any) -> nil)', '```', 132 | '', 133 | 'Apply the function `f` to the elements of the table passed. This is similar to `table.foreach()` except that index-value pairs are passed, not key-value pairs.', 134 | ].join('\n') 135 | }, 136 | }, 137 | 138 | 'create()': { 139 | insertText: 'create(${1:count}, ${2:value})', 140 | sortText: 'create', 141 | documentation: { 142 | value: [ 143 | '```lua', 'function create(count: integer, value: any?)\n -> table', '```', 144 | '', 145 | 'Creates an array-like table with count `values`, initialized to value. When value is `nil` or omitted, the resulting table has length 0, but has preallocated storage for count elements.', 146 | ].join('\n') 147 | }, 148 | }, 149 | 150 | 'find()': { 151 | insertText: 'find(${1:table}, ${2:value}, ${3:init})', 152 | sortText: 'find', 153 | documentation: { 154 | value: [ 155 | '```lua', 'function find(table, value: any [, init: integer(1)])\n -> any', '```', 156 | '', 157 | 'Returns the numeric index of the first occurence of `value`, starting from `init`, or nil if value isn\'t present in the table. The default for `init` is 1.', 158 | ].join('\n') 159 | }, 160 | }, 161 | 162 | 'unpack()': { 163 | insertText: 'unpack(${1:list}, ${2:i}, ${3:j})', 164 | sortText: 'unpack', 165 | documentation: { 166 | value: [ 167 | '```lua', 'function unpack(list: table [, i: integer(1) [, j: integer]]): ...any', '```', 168 | '', 169 | 'Returns all elements from an array as results.', 170 | '', 171 | '---', 172 | '```lua', 'return list[i], list[i+1], ···, list[j]', '```', 173 | ].join('\n') 174 | }, 175 | }, 176 | }, 177 | }, 178 | }, 179 | }, 180 | }; 181 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/modules.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Module": { 6 | "bit32": {}, 7 | "coroutine": {}, 8 | "debug": { 9 | __children__: {}, 10 | __using__: ['libraries/debug'], 11 | }, 12 | "math": { 13 | __children__: {}, 14 | __using__: ['libraries/math'], 15 | }, 16 | "os": {}, 17 | "string": {}, 18 | "table": { 19 | __children__: {}, 20 | __using__: ['libraries/table'], 21 | }, 22 | "utf8": {}, 23 | }, 24 | }; 25 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/params/DrawingTypes.js: -------------------------------------------------------------------------------- 1 | const BaseProperties = [ 2 | 'Base Properties', 3 | '```lua', 'Visible: boolean (default: false)', '```', 4 | '```lua', 'ZIndex: number (default: 0)', '```', 5 | '```lua', 'Transparency: number (default: 1)', '```', 6 | '```lua', 'Color: Color3 (default: Color3.new(0, 0, 0))', '```', 7 | '```lua', 'Remove: function', '```', 8 | '', 9 | '', 10 | ] 11 | 12 | define(["require", "exports"], function (require, exports) { 13 | Object.defineProperty(exports, "__esModule", { value: true }); 14 | 15 | exports.autocompletes = { 16 | 17 | Enum: { 18 | 'Line': { 19 | label: { 20 | name: '"Line"', 21 | type: '(Line)', 22 | }, 23 | insertText: 'Line', 24 | documentation: { 25 | value: [ 26 | ...BaseProperties, 27 | 'Line Properties', 28 | '```lua', 'Thickness: number (default: 2)', '```', 29 | '```lua', 'From: Vector2 (default: Vector2.new(0, 0))', '```', 30 | '```lua', 'To: Vector2 (default: Vector2.new(0, 0))', '```', 31 | ].join('\n'), 32 | }, 33 | }, 34 | 35 | 'Text': { 36 | label: { 37 | name: '"Text"', 38 | type: '(Text)', 39 | }, 40 | insertText: 'Text', 41 | documentation: { 42 | value: [ 43 | ...BaseProperties, 44 | 'Text Properties', 45 | '```lua', 'Text: string (default: "Text")', '```', 46 | '```lua', 'Size: number (default: 18)', '```', 47 | '```lua', 'Center: boolean (default: false)', '```', 48 | '```lua', 'OutlineColor: Color3 (default: Color3.new(0, 0, 0))', '```', 49 | '```lua', 'Position: Vector2 (default: Vector2.new(0, 0))', '```', 50 | '```lua', 'TextBounds: readonly Vector2', '```', 51 | '```lua', 'Font: Drawing.Fonts (default: Drawing.Fonts.UI)', '```', 52 | ].join('\n'), 53 | }, 54 | }, 55 | 56 | 'Image': { 57 | label: { 58 | name: '"Image"', 59 | type: '(Image)', 60 | }, 61 | insertText: 'Image', 62 | documentation: { 63 | value: [ 64 | ...BaseProperties, 65 | 'Image Properties', 66 | '```lua', 'Data: buffer (default: nil)', '```', 67 | '```lua', 'Size: Vector2 (default: Vector2.new(0, 0))', '```', 68 | '```lua', 'Position: Vector2 (default: Vector2.new(0, 0))', '```', 69 | '```lua', 'Rounding: number (default: 0)', '```', 70 | ].join('\n'), 71 | }, 72 | }, 73 | 74 | 'Circle': { 75 | label: { 76 | name: '"Circle"', 77 | type: '(Circle)', 78 | }, 79 | insertText: 'Circle', 80 | documentation: { 81 | value: [ 82 | ...BaseProperties, 83 | 'Circle Properties', 84 | '```lua', 'Thickness: number (default: 2)', '```', 85 | '```lua', 'NumSides: number (default: 250)', '```', 86 | '```lua', 'Radius: number (default: 20)', '```', 87 | '```lua', 'Filled: boolean (default: false)', '```', 88 | '```lua', 'Position: Vector2 (default: Vector2.new(0, 0))', '```', 89 | ].join('\n'), 90 | }, 91 | }, 92 | 93 | 'Square': { 94 | label: { 95 | name: '"Square"', 96 | type: '(Square)', 97 | }, 98 | insertText: 'Square', 99 | documentation: { 100 | value: [ 101 | ...BaseProperties, 102 | 'Square Properties', 103 | '```lua', 'Thickness: number (default: 2)', '```', 104 | '```lua', 'Size: Vector2 (default: Vector2.new(100, 100))', '```', 105 | '```lua', 'Filled: boolean (default: true)', '```', 106 | '```lua', 'Position: Vector2 (default: Vector2.new(0, 0))', '```', 107 | ].join('\n'), 108 | }, 109 | }, 110 | 111 | 'Quad': { 112 | label: { 113 | name: '"Quad"', 114 | type: '(Quad)', 115 | }, 116 | insertText: 'Quad', 117 | documentation: { 118 | value: [ 119 | ...BaseProperties, 120 | 'Quad Properties', 121 | '```lua', 'Thickness: number (default: 2)', '```', 122 | '```lua', 'PointA: Vector2 (default: Vector2.new(0, 0))', '```', 123 | '```lua', 'PointB: Vector2 (default: Vector2.new(0, 0))', '```', 124 | '```lua', 'PointC: Vector2 (default: Vector2.new(0, 0))', '```', 125 | '```lua', 'PointD: Vector2 (default: Vector2.new(0, 0))', '```', 126 | '```lua', 'Filled: boolean (default: false)', '```', 127 | ].join('\n'), 128 | }, 129 | }, 130 | 131 | 'Triangle': { 132 | label: { 133 | name: '"Triangle"', 134 | type: '(Triangle)', 135 | }, 136 | insertText: 'Triangle', 137 | documentation: { 138 | value: [ 139 | ...BaseProperties, 140 | 'Triangle Properties', 141 | '```lua', 'Thickness: number (default: 2)', '```', 142 | '```lua', 'PointA: Vector2 (default: Vector2.new(0, 0))', '```', 143 | '```lua', 'PointB: Vector2 (default: Vector2.new(0, 0))', '```', 144 | '```lua', 'PointC: Vector2 (default: Vector2.new(0, 0))', '```', 145 | '```lua', 'Filled: Vector2 (default: true)', '```', 146 | ].join('\n'), 147 | }, 148 | }, 149 | } 150 | }; 151 | }); -------------------------------------------------------------------------------- /Monaco/vs/basic-languages/lua/autocompletes/snippets.js: -------------------------------------------------------------------------------- 1 | define(["require", "exports"], function (require, exports) { 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | 4 | exports.autocompletes = { 5 | "Snippet": { 6 | 7 | // Statements: 8 | "if-statement": { 9 | "label": "if", 10 | "insertText": [ 11 | "if ${1} then", 12 | "\t${0}", 13 | "end", 14 | ], 15 | "detail": "If statement", 16 | }, 17 | "elseif-statement": { 18 | "label": "elseif", 19 | "insertText": [ 20 | "elseif ${1} then", 21 | "\t${0}", 22 | ], 23 | "detail": "If statement", 24 | }, 25 | "else-statement": { 26 | "label": "else", 27 | "insertText": [ 28 | "else", 29 | "\t${1}", 30 | ], 31 | "detail": "If statement", 32 | }, 33 | "do-statement": { 34 | "label": "do", 35 | "insertText": [ 36 | "do", 37 | "\t${0}", 38 | "end", 39 | ], 40 | "detail": "Do statement", 41 | }, 42 | 43 | // Loops: 44 | "while-loop": { 45 | "label": "while", 46 | "insertText": [ 47 | "while ${1} do", 48 | "\t${0}", 49 | "end", 50 | ], 51 | "detail": "While loop", 52 | }, 53 | "repeat-loop": { 54 | "label": "repeat", 55 | "insertText": [ 56 | "repeat", 57 | "\t${0}", 58 | "until", 59 | ], 60 | "detail": "Repeat loop", 61 | }, 62 | "for-loop": { 63 | "label": "for", 64 | "insertText": [ 65 | "for ${1:i} = ${2}, ${3}, ${4} do", 66 | "\t${0}", 67 | "end", 68 | ], 69 | "detail": "Numerical for loop", 70 | }, 71 | "for-in-loop": { 72 | "label": "for in", 73 | "insertText": [ 74 | "for ${1} in ${2:pairs}(${3}) do", 75 | "\t${0}", 76 | "end", 77 | ], 78 | "detail": "For-in loop", 79 | }, 80 | 81 | // Definitions: 82 | "function-def": { 83 | "label": "function", 84 | "insertText": [ 85 | "function ${1}(${2})", 86 | "\t${0}", 87 | "end", 88 | ], 89 | "detail": "Function definition", 90 | }, 91 | "type-def": { 92 | "label": "typedef", 93 | "insertText": "type ${1} = ", 94 | "detail": "Type definition", 95 | }, 96 | 97 | }, 98 | }; 99 | }); -------------------------------------------------------------------------------- /Monaco/vs/editor/contrib/suggest/media/String_16x.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Monaco/vs/editor/contrib/suggest/media/String_inverse_16x.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

3 | LInjector, is PATCHED due to the introduction of Hyperion in the UWP Version. You can still edit the project and make it work by another way. 4 |

5 | 6 |

7 | DOES NOT WORK. 8 |

9 |
10 | 11 |

12 | 13 |

14 |
19 |

LInjector | Open-source Lua Script Executor.

20 |
21 | 22 | # MOVED TO https://github.com/LExteamz/LInjector 23 | 24 | LInjector is an open-source interface for developers, designed to be minimal and easily customizable.
25 | We currently support The UWP Version. [Learn more about Hyperion Byfron](https://docs.google.com/document/d/1FRWTMnPZ-6fuyKjaT_YDU8tT1DrmLSw63YKtc2CfiMI/edit?usp=sharing).
26 | If you have a working Dynamic-Link Library (DLL), you can edit the source code of LInjector.
27 | LInjector uses the Monaco editor, the same one that powers Visual Studio Code, with syntax highlighting, [developed by Krnl](https://krnl.place/) [and edited by Depso](https://github.com/depthso). 28 | 29 | ## Screenshots 30 | 31 | 32 | 35 | 38 | 39 |
33 | 34 | 36 | 37 |
40 | 41 |
42 | 43 | ## About 44 | LInjector is primarily developed by [Excel](https://github.com/NotExcelz) and [Depso](https://github.com/Depthso).\ 45 | It was created out of the necessity for a secure and open-source executor without the risks associated with popular ones. 46 | 47 | ## About the Structure of LInjector 48 | A legitimate development tool.\ 49 | Windows Forms Application.\ 50 | Written in C#, with .NET Framework 4.8 | 32-Bit.\ 51 | I apologize for the uncommented code. If you have any questions, you can contact me via my Discord Server. 52 | 53 | ## How to Build? 54 | To edit the Forms, first compile. For any reason, forms can't load if not compiled. If you opened the forms before compiling, restart Visual Studio, and your problem should be fixed. 55 | - Clone the repository : `gh repo clone NotExcelz/LInjector` 56 | - Open LInjector.sln in Visual Studio 2022. 57 | - Set Release x86 58 | - Build Solution (CTRL + SHIFT + B) 59 | 60 | ## Why LInjector? 61 | Well, here are some reasons: 62 | - It's an open-source project, which ensures the program does not contain malware. 63 | - Injection speed, the injection speed of LInjector has shown an advantage over other executors. Approaching about 0.3 seconds or 300 milliseconds. 64 | - Optimized tab system. The tab system in LInjector is optimized to use no more than 1 Gigabyte of RAM, even with 40 tabs open. 65 | - Transparency about the state and code of LInjector. I can ensure you'll get a response about LInjector every time. 66 | 67 |
68 | 69 | ## Disclaimer 70 | To whom it may concern, 71 | 72 | We hereby declare that we have created an open-source exploit named "LInjector" solely for development and utility purposes. We explicitly refuse any responsibility for any misuse or illegal activities that may arise from the use of this application. The code is provided "as is", without any warranty, and users assume all risks associated with its use. 73 | 74 | We do not condone or support any unethical or malicious activities that may be facilitated using LInjector. It is the responsibility of the users to ensure that they comply with all applicable laws and regulations while using this development tool. 75 | 76 | We urge all users to use LInjector only for development and utility purposes and to refrain from using it for any illegal or unethical activities. By using this development tool, users acknowledge and agree to assume all risks associated with its use. 77 | 78 | ## Used Projects in LInjector 79 | - LInjector uses the [Fluxus](https://fluxteam.net) (based of [WeAreDevs](https://wearedevs.net)) Modules to work. 80 | - [The text editor is Monaco.](https://microsoft.github.io/monaco-editor/) 81 | - Monaco Editor, edited by [Krnl](https://krnl.place/) and [depthso](https://github.com/depthso) 82 | - [Spinning Gradient by me (you can take it and put it into your personal projects.](https://gist.github.com/NotExcelz/6bece91fcd3388618dde3de6bcab4a60) 83 | - [Tab System by lxnnydev](https://github.com/lxnnydev/Winforms-Tab-System) 84 | - [Depso's UNC Patches](https://github.com/depthso/Roblox-UNC-Patches) 85 | - [MastersMZ Scripts API](https://mastersmzscripts.com) 86 | 87 |
88 | 89 | — Made with love by Excel and Depso. <3 90 | -------------------------------------------------------------------------------- /Redistributables/DLLs/FluxteamAPI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/Redistributables/DLLs/FluxteamAPI.dll -------------------------------------------------------------------------------- /Redistributables/DLLs/Module.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itzzexcel/LInjector/7196eb3308f702fed9b687067891e17fb94e12f8/Redistributables/DLLs/Module.dll -------------------------------------------------------------------------------- /Redistributables/Lua Scripts/GetProperities.lua: -------------------------------------------------------------------------------- 1 | -- // This file is property of the GitHub Repository: HTDBarsi/grin (https://github.com/HTDBarsi/grin) 2 | 3 | start = tick() 4 | local data = game:HttpGet("https://anaminus.github.io/rbx/json/api/latest.json") 5 | local a = game:GetService("HttpService"):JSONDecode(data) 6 | newdata = {} 7 | local voltma = {} 8 | for i,v in a do 9 | if v["Superclass"] then 10 | if not voltma[v["Superclass"]] then 11 | newdata[v["Superclass"]] = {} 12 | voltma[v["Superclass"]] = true 13 | end 14 | end 15 | end 16 | for i,v in a do 17 | if v["type"] == "Class" then 18 | newdata[v["Name"]] = {} 19 | end 20 | end 21 | local ignore = {["TemporaryLegacyPhysicsSolverOverride"] = true, ["Parent"] = true} 22 | for i,v in a do 23 | if v["type"] == "Property" and ignore[v["Name"]] == nil then 24 | if #v["tags"] == 0 or (#v["tags"] == 1 and v["tags"][1] == "readonly") then 25 | newdata[v["Class"]][v["Name"]] = v["ValueType"] 26 | end 27 | end 28 | end 29 | for i,v in a do 30 | if v["Superclass"] then 31 | for u,k in pairs(newdata[v["Superclass"]]) do 32 | newdata[v.Name][u] = k 33 | end 34 | end 35 | end 36 | newdata["MeshPart"].MeshId = "Content" -- shit api 37 | newdata["WrapTarget"] = { 38 | CageMeshId = "Content", 39 | ImportOrigin = "Unknown", 40 | Stiffness = "int64", 41 | } 42 | return newdata -------------------------------------------------------------------------------- /Redistributables/Lua Scripts/Init.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * 3 | * ░▒█░░░░▀█▀░█▀▀▄░░░▀░█▀▀░█▀▄░▀█▀░▄▀▀▄░█▀▀▄░░░▒█▀▀▀░█░▒█░█▀▀▄░█▀▄░▀█▀░░▀░░▄▀▀▄░█▀▀▄░█▀▀░░ 4 | * ░▒█░░░░▒█░░█░▒█░░░█░█▀▀░█░░░░█░░█░░█░█▄▄▀░░░▒█▀▀░░█░▒█░█░▒█░█░░░░█░░░█▀░█░░█░█░▒█░▀▀▄░░ 5 | * ░▒█▄▄█░▄█▄░▀░░▀░█▄█░▀▀▀░▀▀▀░░▀░░░▀▀░░▀░▀▀░░░▒█░░░░░▀▀▀░▀░░▀░▀▀▀░░▀░░▀▀▀░░▀▀░░▀░░▀░▀▀▀░░ 6 | * 7 | * Written By Depso 8 | * 9 | * ]] 10 | local EXPLOIT_NAME = "LInjector" 11 | local EXLPOIT_VERSION = "08.10.2023" 12 | 13 | --[[local genv = getgenv() 14 | if genv[EXPLOIT_NAME] then 15 | return script:Remove() 16 | end 17 | genv[EXPLOIT_NAME] = true]] 18 | 19 | --- Libraries 20 | local HashIngLibrary = loadstring(game:HttpGet("https://raw.githubusercontent.com/zzerexx/scripts/main/HashLib.lua"))() 21 | local disassemble = loadstring(game:HttpGet("https://raw.githubusercontent.com/TheSeaweedMonster/Luau/main/decompile.lua"))() 22 | 23 | local localplayer=game:GetService'Players'.LocalPlayer 24 | ------------- 25 | 26 | local hashlibalgs = { 27 | "sha1", "sha224" 28 | } 29 | local hashalgs = { 30 | "md5", "sha1", "sha224", "sha256", "sha384", "sha512", "sha3-256", "sha3-384", "sha3-512", 31 | "md2", "haval", "ripemd128", "ripemd160", "ripemd256", "ripemd320" 32 | } 33 | local ciphers = { 34 | ['aes-cbc'] = "CBC", 35 | ['aes-cfb'] = "CFB", 36 | ['aes-ctr'] = "CTR", 37 | ['aes-ofb'] = "OFB", 38 | ['aes-gcm'] = "GCM" 39 | } 40 | 41 | 42 | Export=function(name, value) 43 | getgenv()[name] = value 44 | end 45 | STDExport=function(text) 46 | writefile("LINJECTOR/LINJECTOR.li", text) 47 | wait() 48 | end 49 | 50 | --------- 51 | 52 | setreadonly(crypt, false) 53 | 54 | crypt.encrypt = function(cipher, data, key, nonce) 55 | cipher = cipher:lower() 56 | if cipher:find("eax") or cipher:find("bf") then 57 | return "" 58 | end 59 | return crypt.custom_encrypt(data, key, nonce, ciphers[cipher:gsub("_", "-")]) 60 | end 61 | crypt.decrypt = function(cipher, data, key, nonce) 62 | cipher = cipher:lower() 63 | if cipher:find("eax") or cipher:find("bf") then 64 | return "" 65 | end 66 | return crypt.custom_decrypt(data, key, nonce, ciphers[cipher:gsub("_", "-")]) 67 | end 68 | crypt.hash = function(alg, data) 69 | alg = alg:lower():gsub("_", "-") 70 | 71 | local HashLib = table.find(hashlibalgs, alg) 72 | local SwLib = table.find(hashalgs, alg) 73 | assert(HashLib or SwLib, "#1 Unknown hash algorithm") 74 | 75 | if HashLib then 76 | return hash[alg:gsub("-", "_")](data) 77 | end 78 | if SwLib then 79 | return crypt.hash(data, alg):lower() 80 | end 81 | end 82 | crypt.derive = function(_, len) 83 | return crypt.generatebytes(len) 84 | end 85 | crypt.random = crypt.generatebytes 86 | crypt.generatebytes = crypt.generatebytes 87 | 88 | setreadonly(crypt, true) 89 | 90 | local oldRequest 91 | oldRequest = hookfunction(request, function(Arguments) 92 | local Headers = Arguments.Headers or {} 93 | Headers['User-Agent'] = EXPLOIT_NAME 94 | return oldRequest({ 95 | Url = Arguments.Url, 96 | Method = Arguments.Method or "GET", 97 | Headers = Headers, 98 | Cookies = Arguments.Cookies or {}, 99 | Body = Arguments.Body or "" 100 | }) 101 | end) 102 | 103 | 104 | Export("identifyexecutor", function() 105 | return EXPLOIT_NAME, EXLPOIT_VERSION 106 | end) 107 | Export("getexecutorname", function() 108 | return EXPLOIT_NAME, EXLPOIT_VERSION 109 | end) 110 | Export("disassemble", disassemble) 111 | Export("decompile", disassemble) 112 | 113 | local Functions={ 114 | "messagebox", 115 | "setDiscordRPC", 116 | "rconsoleprint", 117 | "rconsoleinfo", 118 | "rconsolename", 119 | "rconsolewarn", 120 | "rconsoleerr", 121 | "toclipboard", 122 | "rconsoleclose", 123 | "rconsoleshow", 124 | "rconsoleclear" 125 | } 126 | 127 | for _, name in next, Functions do 128 | Export(name,function(...) 129 | local String,Args = "|||", {...} 130 | for _, Arg in next, Args do 131 | String ..= " "..tostring(Arg) 132 | end 133 | STDExport(('%s%s'):format(name, String)) 134 | end) 135 | end 136 | wait() 137 | 138 | Export("setclipboard",toclipboard) 139 | Export("set_clipboard",toclipboard) 140 | Export("set_clipboard",toclipboard) 141 | Export("Clipboard",{set=toclipboard}) 142 | 143 | pcall(function() 144 | SendFunction(('welcome|||%s|||%s'):format( 145 | localplayer.DisplayName, 146 | MarketplaceService:GetProductInfo(game.PlaceId).Name 147 | )) 148 | end) 149 | 150 | --[[ 151 | * 152 | * ░▒█░░░░▀█▀░█▀▀▄░░░▀░█▀▀░█▀▄░▀█▀░▄▀▀▄░█▀▀▄░░░▒█▀▀▀░█░▒█░█▀▀▄░█▀▄░▀█▀░░▀░░▄▀▀▄░█▀▀▄░█▀▀░░ 153 | * ░▒█░░░░▒█░░█░▒█░░░█░█▀▀░█░░░░█░░█░░█░█▄▄▀░░░▒█▀▀░░█░▒█░█░▒█░█░░░░█░░░█▀░█░░█░█░▒█░▀▀▄░░ 154 | * ░▒█▄▄█░▄█▄░▀░░▀░█▄█░▀▀▀░▀▀▀░░▀░░░▀▀░░▀░▀▀░░░▒█░░░░░▀▀▀░▀░░▀░▀▀▀░░▀░░▀▀▀░░▀▀░░▀░░▀░▀▀▀░░ 155 | * 156 | * Created by Depso 157 | 158 | if linjector then 159 | script:Remove() 160 | return 161 | end 162 | getgenv()["linjector"] = true 163 | loadstring(game:HttpGet("https://raw.githubusercontent.com/ItzzExcel/LInjector/master/Redistributables/Lua%20Scripts/Init.lua"))()]] -------------------------------------------------------------------------------- /Redistributables/Pinned_Scripts.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Infinite Yield", 4 | "mastahubdata": { 5 | "link": "https://pastebin.com/raw/fzQgv20F", 6 | "creator": "EdgeIY" 7 | } 8 | }, 9 | { 10 | "title": "LAimbot", 11 | "mastahubdata": { 12 | "link": "https://raw.githubusercontent.com/ItzzExcel/LExploits/main/LAimbot/loader.lua", 13 | "creator": "ItzzExcel" 14 | } 15 | }, 16 | { 17 | "title": "LESP", 18 | "mastahubdata": { 19 | "link": "https://raw.githubusercontent.com/ItzzExcel/LExploits/main/LESP/loader.lua", 20 | "creator": "ItzzExcel" 21 | } 22 | }, 23 | { 24 | "title": "Anti Chat Logger", 25 | "mastahubdata": { 26 | "link": "https://raw.githubusercontent.com/AnthonyIsntHere/anthonysrepository/main/scripts/AntiChatLogger.lua", 27 | "creator": "AnthonyIsntHere" 28 | } 29 | }, 30 | { 31 | "title": "UNC Enviroment Check", 32 | "mastahubdata": { 33 | "link": "https://raw.githubusercontent.com/unified-naming-convention/NamingStandard/main/UNCCheckEnv.lua", 34 | "creator": "Unified Naming Convention" 35 | } 36 | }, 37 | { 38 | "title": "------------------------------------", 39 | "mastahubdata": { 40 | "link": "", 41 | "creator": "" 42 | } 43 | } 44 | ] 45 | --------------------------------------------------------------------------------

15 | 16 | 17 | 18 |