├── .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 |
15 |
16 |
17 |
18 |
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 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
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 |
--------------------------------------------------------------------------------