├── .gitattributes
├── Tools Injector Mod Menu
├── T5 - 32.ico
├── Resources
│ ├── github.png
│ ├── info-24.png
│ ├── save-24.png
│ ├── folder-7-24.png
│ ├── home-7-24.png
│ ├── note-2-24.png
│ ├── syringe-24.png
│ ├── tool-box-24.png
│ ├── moderator-24.png
│ └── package-2-24.png
├── Utility
│ ├── Values.cs
│ ├── MyMessage.cs
│ ├── UpdateService.cs
│ ├── ZipArchiveExtensions.cs
│ ├── StringHelper.cs
│ ├── Utility.cs
│ ├── EnumHelper.cs
│ ├── AppSettings.cs
│ └── Checker.cs
├── packages.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Program.cs
├── Patch Manager
│ ├── Enums.cs
│ ├── OffsetInfo.cs
│ └── OffsetPatch.cs
├── App.config
├── Form
│ ├── FrmImageText.cs
│ ├── FrmAddFunction.cs
│ ├── FrmImageText.resx
│ ├── FrmAddFunction.resx
│ ├── FrmAddFunction.Designer.cs
│ └── FrmImageText.Designer.cs
├── Control
│ ├── CtrlCategory.cs
│ ├── CtrlCategory.resx
│ ├── CtrlPatch.resx
│ ├── CtrlHookButton.resx
│ ├── CtrlHookInput.resx
│ ├── CtrlHook.resx
│ ├── CtrlCategory.Designer.cs
│ ├── CtrlPatch.cs
│ ├── CtrlHookButton.cs
│ └── CtrlHook.cs
├── app.manifest
└── Tools Injector Mod Menu.csproj
├── .gitmodules
├── .github
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── workflows
│ └── main.yml
├── README.md
├── Tools-Injector-Mod-Menu.sln
└── .gitignore
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/T5 - 32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/T5 - 32.ico
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/github.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/info-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/info-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/save-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/save-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/folder-7-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/folder-7-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/home-7-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/home-7-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/note-2-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/note-2-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/syringe-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/syringe-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/tool-box-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/tool-box-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/moderator-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/moderator-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Resources/package-2-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/T5ive/Tools-Injector-Mod-Menu/HEAD/Tools Injector Mod Menu/Resources/package-2-24.png
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/Values.cs:
--------------------------------------------------------------------------------
1 | namespace Tools_Injector_Mod_Menu
2 | {
3 | public static class Values
4 | {
5 | public static bool Save;
6 | }
7 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "MaterialSkin/ModernFolderBrowserDialog"]
2 | path = MaterialSkin/ModernFolderBrowserDialog
3 | url = https://github.com/SetsunaF/ModernFolderBrowserDialog.git
4 | [submodule "ModernFolderBrowserDialog"]
5 | path = ModernFolderBrowserDialog
6 | url = https://github.com/SetsunaF/ModernFolderBrowserDialog.git
7 | [submodule "MaterialSkin"]
8 | path = MaterialSkin
9 | url = https://github.com/T5ive/MaterialSkin.git
10 | branch = master
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | branches: [ master ]
8 |
9 | workflow_dispatch:
10 |
11 | jobs:
12 | build:
13 | runs-on: windows-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v2
17 | with:
18 | submodules: true
19 |
20 | - name: Setup MSBuild
21 | uses: microsoft/setup-msbuild@v1
22 |
23 | - name: Setup NuGet
24 | uses: NuGet/setup-nuget@v1.0.5
25 |
26 | - name: Restore NuGet packages
27 | run: nuget restore Tools-Injector-Mod-Menu.sln
28 |
29 | - name: Build the Solution
30 | run: msbuild Tools-Injector-Mod-Menu.sln
31 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Only bug reports from Canary builds will be accepted.**
11 | **Failed compilation issues**, upload both `settings.json` and `logs`
12 | **Tools Injector Mod Menu issues**, explain how it went wrong.
13 | **Theme issues**, upload your theme.
14 |
15 | **Describe the bug**
16 | - (A clear and concise description of what the bug is)
17 |
18 | **Expected behavior**
19 | - (A clear and concise description of what you expected to happen)
20 |
21 | **Tools Injector Mod Menu Version**
22 | -
23 |
24 | **Screenshots**
25 | If applicable, add screenshots to help explain your problem.
26 |
27 | **Desktop (please complete the following information):**
28 | - Windows Version:
29 |
30 | **Additional context**
31 | - (Add any other context about the problem here)
32 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Windows.Forms;
4 |
5 | namespace Tools_Injector_Mod_Menu
6 | {
7 | static class Program
8 | {
9 | ///
10 | /// The main entry point for the application.
11 | ///
12 | [STAThread]
13 | static void Main()
14 | {
15 | using (new Mutex(true, "Tools Injector Mod Menu", out var createdNew))
16 | {
17 | if (createdNew)
18 | {
19 | Application.EnableVisualStyles();
20 | Application.SetCompatibleTextRenderingDefault(false);
21 | Application.Run(new FrmMain());
22 | }
23 | else
24 | {
25 | MessageBox.Show(@"[Detected] - There is same tools that still running on your windows!", "TFive", MessageBoxButtons.OK, MessageBoxIcon.Hand);
26 | Application.Exit();
27 | }
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/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 Tools_Injector_Mod_Menu.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/MyMessage.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace Tools_Injector_Mod_Menu
4 | {
5 | public static class MyMessage
6 | {
7 | private const string Caption = "Tools Injector";
8 |
9 | public static void MsgShowError(string text)
10 | {
11 | MessageBox.Show(text, Caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
12 | }
13 |
14 | public static void MsgShowWarning(string text)
15 | {
16 | MessageBox.Show(text, Caption, MessageBoxButtons.OK, MessageBoxIcon.Warning);
17 | }
18 |
19 | public static void MsgShowInfo(string text)
20 | {
21 | MessageBox.Show(text, Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
22 | }
23 |
24 | public static void MsgShow(string text, MessageBoxIcon icon)
25 | {
26 | MessageBox.Show(text, Caption, MessageBoxButtons.OK, icon);
27 | }
28 |
29 | public static bool MsgOkCancel(string text)
30 | {
31 | return MessageBox.Show(text, Caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK;
32 | }
33 |
34 | public static DialogResult MsgYesNoCancel(string text)
35 | {
36 | return MessageBox.Show(text, Caption, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Patch Manager/Enums.cs:
--------------------------------------------------------------------------------
1 | namespace Tools_Injector_Mod_Menu.Patch_Manager
2 | {
3 | public static class Enums
4 | {
5 | public enum TypeAbi
6 | {
7 | Arm,
8 | Arm64
9 | }
10 |
11 | public enum Type
12 | {
13 | Bool = 0,
14 | BoolBack = 1,
15 | Double = 100,
16 | Float = 101,
17 | Int = 102,
18 | Long = 103,
19 | Void = 300,
20 | Links = 301,
21 | Empty = 1000
22 | }
23 |
24 | public enum FunctionType
25 | {
26 | Category,
27 | HookButton,
28 | HookButtonOnOf,
29 | HookInputButton,
30 | HookInputOnOff,
31 | HookInputValue,
32 | HookSeekBar,
33 | HookSeekBarToggle,
34 | HookToggle,
35 | PatchButtonOnOff,
36 | PatchLabel,
37 | PatchToggle,
38 | Empty = 100
39 | }
40 |
41 | public enum LogsType
42 | {
43 | CompileMenu,
44 | Success,
45 | Warning,
46 | Error,
47 | Logs,
48 | Dump,
49 | Decompile,
50 | CompileApk,
51 | }
52 |
53 | public enum ProcessType
54 | {
55 | CompileApk,
56 | MenuFull,
57 | ApkFull1Decompile,
58 | ApkFull1,
59 | ApkFull2Decompile,
60 | ApkFull2,
61 | None = 100
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
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("Tools Injector Mod Menu")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Tools Injector Mod Menu")]
13 | [assembly: AssemblyCopyright("Copyright © TFive 2020-2021")]
14 | [assembly: AssemblyTrademark("")]
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 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("dbc33172-02ff-407f-98a3-dc1a9289928a")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.4.4.3")]
36 | [assembly: AssemblyFileVersion("1.4.4.3")]
37 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/UpdateService.cs:
--------------------------------------------------------------------------------
1 | using Octokit;
2 | using System;
3 | using System.Diagnostics;
4 | using System.Reflection;
5 | using System.Threading.Tasks;
6 |
7 | namespace Tools_Injector_Mod_Menu
8 | {
9 | public static class UpdateService
10 | {
11 | public static async Task CheckGitHubNewerVersion(bool msg = false)
12 | {
13 | var client = new GitHubClient(new ProductHeaderValue("Tools-Injector-Mod-Menu"));
14 | var releases = await client.Repository.Release.GetAll("T5ive", "Tools-Injector-Mod-Menu").ConfigureAwait(false);
15 |
16 | var latestGitHubVersion = new Version(releases[0].TagName);
17 | var localVersion = Assembly.GetEntryAssembly()?.GetName().Version;
18 |
19 | if (localVersion < latestGitHubVersion)
20 | {
21 | var url = releases[0].Assets[0].BrowserDownloadUrl;
22 | if (MyMessage.MsgOkCancel($"You are using version {localVersion}\n" +
23 | $"The latest version is {latestGitHubVersion}\n\n" +
24 | "Do you want to update? "))
25 | {
26 | Process.Start(url);
27 | }
28 | }
29 | else
30 | {
31 | if(msg) return;
32 | MyMessage.MsgShowInfo($"You are using version {localVersion}\n" +
33 | $"The latest version is {latestGitHubVersion }\n\n" +
34 | "You are using the latest version");
35 | }
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/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 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Form/FrmImageText.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Windows.Forms;
4 |
5 | namespace Tools_Injector_Mod_Menu
6 | {
7 | public partial class FrmImageText : Form
8 | {
9 | public FrmImageText()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | private void FrmImageText_Load(object sender, EventArgs e)
15 | {
16 | txtImg.Text = FrmMain.ImageCode;
17 | }
18 |
19 | private void btnSave_Click(object sender, EventArgs e)
20 | {
21 | if (!MyMessage.MsgOkCancel("Do you want to save?\n\n" +
22 | "Click \"OK\" to confirm.\n\n" +
23 | "Click \"Cancel\" to cancel.")) return;
24 | FrmMain.ImageCode = string.IsNullOrWhiteSpace(txtImg.Text) ? "Null" : $"{txtImg.Text}";
25 | Dispose();
26 | }
27 |
28 | private void btnClose_Click(object sender, EventArgs e)
29 | {
30 | if (!MyMessage.MsgOkCancel("Do you want to close?\n\n" +
31 | "Click \"OK\" to confirm.\n\n" +
32 | "Click \"Cancel\" to cancel.")) return;
33 | Dispose();
34 | }
35 |
36 | private void lbImgCompress_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
37 | {
38 | Process.Start("https://compresspng.com/");
39 | }
40 |
41 | private void lbImageEncoder_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
42 | {
43 | Process.Start("https://codebeautify.org/image-to-base64-converter");
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/ZipArchiveExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.IO.Compression;
5 |
6 | namespace Tools_Injector_Mod_Menu
7 | {
8 | public static class ZipArchiveExtensions
9 | {
10 | public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite)
11 | {
12 | if (!overwrite)
13 | {
14 | archive.ExtractToDirectory(destinationDirectoryName);
15 | return;
16 | }
17 | foreach (var zipArchiveEntry in archive.Entries)
18 | {
19 | var text = Path.Combine(destinationDirectoryName, zipArchiveEntry.FullName);
20 | var directoryName = Path.GetDirectoryName(text);
21 | if (!Directory.Exists(directoryName))
22 | {
23 | Directory.CreateDirectory(directoryName ?? throw new InvalidOperationException());
24 | }
25 | if (zipArchiveEntry.Name != "")
26 | {
27 | zipArchiveEntry.ExtractToFile(text, true);
28 | }
29 | }
30 | }
31 |
32 | public static void AddFiles(this string filePath, List<(string, string)> list, bool overwrite = true)
33 | {
34 | using var file = new FileStream(filePath, FileMode.Open);
35 | using var archive = new ZipArchive(file, ZipArchiveMode.Update);
36 | for (var i = 0; i < list.Count; i++)
37 | {
38 | if (overwrite)
39 | {
40 | var oldEntry = archive.GetEntry(list[i].Item2);
41 | oldEntry?.Delete();
42 | }
43 | archive.CreateEntryFromFile(list[i].Item1, list[i].Item2);
44 | }
45 | archive.Dispose();
46 | file.Dispose();
47 | }
48 | }
49 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Tools Injector Mod Menu
2 |
3 | **Please read the wiki before you have any questions or concerns!!**
4 |
5 | # [Wiki](https://github.com/T5ive/Tools-Injector-Mod-Menu/wiki)
6 |
7 | # Requesting New Features
8 |
9 | New issue with title "[Request]..."
10 |
11 | Write what features you want with examples and tutorials.
12 |
13 | # Bug Reports
14 |
15 | **Only bug reports from Canary builds will be accepted.**
16 |
17 | For failed compilation issues, upload both settings.json and logs.
18 |
19 | For Tools Injector Mod Menu issues, Please explain how it went wrong.
20 |
21 | For theme issues, upload your theme.
22 |
23 | For mod not running by Tools Injector (it's not your fault) upload original apk and method name or address method. (Only accepted for https://github.com/LGLTeam/Android-Mod-Menu work, but my tool doesn't work)
24 |
25 | # Known Issue
26 |
27 | - Does not work on Windows 7 or 32 bit.
28 |
29 | # Credits/Acknowledgements
30 |
31 | Default Theme -> https://github.com/T5ive/Android-Mod-Menu/tree/inject-mod-menu
32 |
33 | https://github.com/LGLTeam/Android-Mod-Menu
34 |
35 | [PMT IvesAwadi](https://platinmods.com/members/ivesawadiyt.629982/) for hook tutorial
36 |
37 | [PMT DVA](https://platinmods.com/members/dvatsu.1884750/) for [basic tutorial mod menu template](https://www.youtube.com/watch?v=ieMclBtL6Ig)
38 |
39 | [PMT Mika Cybertron](https://platinmods.com/members/mika-cybertron.43/) for idea [MEGA Tools Injection to Make Mod Menu](https://platinmods.com/threads/exclusive-mega-tools-injection-to-make-mod-menu-for-native-games-only-available-for-approved-modder-higher-on-platinmods-com.74490/)
40 |
41 | [7.Hackers polarmods](https://polarmods.com/members/7-hackers.12698/) for hook [tutorial 1](https://polarmods.com/threads/%F0%9F%8E%83-hooking-part-1-how-to-hook-a-field-with-mod-menu-%F0%9F%8E%83.1536/), [tutorial 2](https://polarmods.com/threads/%F0%9F%8E%83-hooking-part-2-how-to-hook-a-function-with-menu-%F0%9F%8E%83.1539/)
42 |
43 | and you :))
44 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Patch Manager/OffsetInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Xml.Serialization;
3 |
4 | namespace Tools_Injector_Mod_Menu.Patch_Manager
5 | {
6 | [XmlRoot(ElementName = "OffsetInfo")]
7 | public class OffsetInfo
8 | {
9 | [XmlElement(ElementName = "OffsetId")] public int OffsetId { get; set; }
10 |
11 | [XmlElement(ElementName = "Offset")] public string Offset { get; set; }
12 |
13 | [XmlElement(ElementName = "Hex")] public string Hex { get; set; }
14 |
15 | [XmlElement(ElementName = "HookInfo")] public HookInfo HookInfo { get; set; }
16 |
17 | [XmlElement(ElementName = "Name")] public string Name { get; set; }
18 |
19 | [XmlElement(ElementName = "Method")] public List<(string, string)> Method { get; set; }
20 | }
21 |
22 | public class HookInfo
23 | {
24 | [XmlElement(ElementName = "Type")] public Enums.Type Type { get; set; }
25 |
26 | [XmlElement(ElementName = "Value")] public string Value { get; set; }
27 |
28 | [XmlElement(ElementName = "Links")] public string Links { get; set; }
29 |
30 | [XmlElement(ElementName = "FieldInfo")] public FieldInfo FieldInfo { get; set; }
31 | }
32 |
33 | public class FieldInfo
34 | {
35 | [XmlElement(ElementName = "Type")] public Enums.Type Type { get; set; }
36 |
37 | [XmlElement(ElementName = "Offset")] public string Offset { get; set; }
38 | }
39 |
40 | public class TFiveMenu
41 | {
42 | [XmlElement(ElementName = "GameName")] public string GameName { get; set; }
43 |
44 | [XmlElement(ElementName = "TypeAbi")] public Enums.TypeAbi TypeAbi { get; set; }
45 |
46 | [XmlElement(ElementName = "Target")] public string Target { get; set; }
47 |
48 | [XmlElement] public List FunctionList { get; set; }
49 | }
50 |
51 | [XmlRoot(ElementName = "FunctionList")]
52 | public class FunctionList
53 | {
54 | [XmlElement(ElementName = "OffsetList")] public List OffsetList { get; set; }
55 |
56 | [XmlElement(ElementName = "CheatName")] public string CheatName { get; set; }
57 |
58 | [XmlElement(ElementName = "FunctionType")] public Enums.FunctionType FunctionType { get; set; }
59 |
60 | [XmlElement(ElementName = "FunctionExtra")] public string FunctionExtra { get; set; }
61 |
62 | [XmlElement(ElementName = "MultipleValue")] public bool MultipleValue { get; set; }
63 | }
64 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlCategory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows.Forms;
4 | using Tools_Injector_Mod_Menu.Patch_Manager;
5 |
6 | namespace Tools_Injector_Mod_Menu
7 | {
8 | public partial class CtrlCategory : UserControl
9 | {
10 | private readonly int _index;
11 | private readonly FrmAddFunction _frmAddFunction;
12 |
13 | public CtrlCategory(FrmAddFunction frmAdd, int index)
14 | {
15 | InitializeComponent();
16 | _index = index;
17 | _frmAddFunction = frmAdd;
18 | _frmAddFunction.Text = "Category";
19 | if (_index != 1150)
20 | {
21 | AddListValues();
22 | }
23 | else
24 | {
25 | btnSave.Text = "Add Function";
26 | }
27 | }
28 |
29 | private void AddListValues()
30 | {
31 | txtCategory.Text = OffsetPatch.FunctionList[_index].CheatName;
32 | }
33 |
34 | private void btnSave_Click(object sender, EventArgs e)
35 | {
36 | const Enums.FunctionType functionType = Enums.FunctionType.Category;
37 | try
38 | {
39 | if (txtNameCheat.IsEmpty("Name Cheat")) return;
40 | if (txtCategory.IsEmpty("Category")) return;
41 |
42 | if (_index == 1150)
43 | {
44 | OffsetPatch.AddFunction(txtNameCheat.Text, functionType, txtCategory.Text);
45 | }
46 | else
47 | {
48 | var result = MyMessage.MsgYesNoCancel("Do you want to save?\n\n" +
49 | "Click \"OK\" to confirm.\n\n" +
50 | "Click \"Cancel\" to cancel.");
51 | switch (result)
52 | {
53 | case DialogResult.Cancel:
54 | return;
55 |
56 | case DialogResult.No:
57 | Values.Save = false;
58 | Dispose();
59 | _frmAddFunction.Dispose();
60 | break;
61 | }
62 |
63 | OffsetPatch.FunctionList[_index] = new FunctionList
64 | {
65 | CheatName = txtNameCheat.Text,
66 | FunctionType = functionType,
67 | OffsetList = new List(),
68 | FunctionExtra = txtCategory.Text,
69 | MultipleValue = false
70 | };
71 | }
72 |
73 | Values.Save = true;
74 | Dispose();
75 | _frmAddFunction.Dispose();
76 | }
77 | catch (Exception exception)
78 | {
79 | MyMessage.MsgShowError("Error" + exception.Message);
80 | }
81 | }
82 | }
83 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/StringHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using System.Text;
4 |
5 | namespace Tools_Injector_Mod_Menu
6 | {
7 | public static class StringHelper
8 | {
9 | public static string InsertSpaces(this string str)
10 | {
11 | if (!str.Contains(' '))
12 | {
13 | for (var i = 2; i <= str.Length; i += 2)
14 | {
15 | str = str.Insert(i, " ");
16 | str = str.TrimEnd(' ');
17 | i++;
18 | }
19 | }
20 | return str;
21 | }
22 |
23 | public static string RemoveSpecialCharacters(this string str)
24 | {
25 | var sb = new StringBuilder();
26 | foreach (var c in str.Where(c => c is >= '0' and <= '9' or >= 'A' and <= 'Z' or >= 'a' and <= 'z' or '.' or '_' or ' '))
27 | {
28 | sb.Append(c);
29 | }
30 | return sb.ToString();
31 | }
32 |
33 | public static string RemoveMiniSpecialCharacters(this string str)
34 | {
35 | var sb = new StringBuilder();
36 | foreach (var c in str.Where(c => c is >= '0' and <= '9' or >= 'A' and <= 'Z' or >= 'a' and <= 'z' or '.' or ',' or '_'))
37 | {
38 | sb.Append(c);
39 | }
40 | return sb.ToString();
41 | }
42 |
43 | public static string RemoveSuperSpecialCharacters(this string str)
44 | {
45 | var sb = new StringBuilder();
46 | foreach (var c in str.Where(c => c is >= '0' and <= '9' or >= 'A' and <= 'Z' or >= 'a' and <= 'z'))
47 | {
48 | sb.Append(c);
49 | }
50 | return sb.ToString();
51 | }
52 |
53 | public static string ReplaceNumCharacters(this string str)
54 | {
55 | return str.Replace("0", "Zero").Replace("1", "One").Replace("2", "Two").Replace("3", "Three")
56 | .Replace("4", "Four").Replace("5", "Five").Replace("6", "Six").Replace("7", "Seven")
57 | .Replace("8", "Eight").Replace("9", "Nine").Replace("-", "Dash").Replace(".", "Dot").Replace(",", "Comma");
58 | }
59 |
60 | public static string GetBetween(this string strSource, string strStart, string strEnd)
61 | {
62 | if (strSource.Contains(strStart) && strSource.Contains(strEnd))
63 | {
64 | var start = strSource.IndexOf(strStart, 0, StringComparison.Ordinal) + strStart.Length;
65 | var end = strSource.IndexOf(strEnd, start, StringComparison.Ordinal);
66 | return strSource.Substring(start, end - start);
67 | }
68 | return null;
69 | }
70 |
71 | public static string ReplaceFirst(this string text, string oldValue, string newValue)
72 | {
73 | var pos = text.IndexOf(oldValue, StringComparison.Ordinal);
74 | if (pos < 0)
75 | {
76 | return text;
77 | }
78 | return text.Substring(0, pos) + newValue + text.Substring(pos + oldValue.Length);
79 | }
80 | }
81 | }
--------------------------------------------------------------------------------
/Tools-Injector-Mod-Menu.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30225.117
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tools Injector Mod Menu", "Tools Injector Mod Menu\Tools Injector Mod Menu.csproj", "{DBC33172-02FF-407F-98A3-DC1A9289928A}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaterialSkin", "MaterialSkin\MaterialSkin\MaterialSkin.csproj", "{8EB7611B-68CD-4B8B-987A-11717E2B250C}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernFolderBrowserDialog", "ModernFolderBrowserDialog\ModernFolderBrowserDialog\ModernFolderBrowserDialog.csproj", "{E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Debug|x86 = Debug|x86
16 | Release|Any CPU = Release|Any CPU
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Debug|x86.ActiveCfg = Debug|Any CPU
23 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Debug|x86.Build.0 = Debug|Any CPU
24 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Release|x86.ActiveCfg = Release|Any CPU
27 | {DBC33172-02FF-407F-98A3-DC1A9289928A}.Release|x86.Build.0 = Release|Any CPU
28 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.Build.0 = Debug|Any CPU
30 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x86.ActiveCfg = Debug|Any CPU
31 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x86.Build.0 = Debug|Any CPU
32 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.ActiveCfg = Release|Any CPU
33 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.Build.0 = Release|Any CPU
34 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x86.ActiveCfg = Release|Any CPU
35 | {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x86.Build.0 = Release|Any CPU
36 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
37 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
38 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Debug|x86.ActiveCfg = Debug|Any CPU
39 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Debug|x86.Build.0 = Debug|Any CPU
40 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Release|Any CPU.Build.0 = Release|Any CPU
42 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Release|x86.ActiveCfg = Release|Any CPU
43 | {E1F5AEB2-7CFD-40C6-9A97-ADA7E13F1D0C}.Release|x86.Build.0 = Release|Any CPU
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | GlobalSection(ExtensibilityGlobals) = postSolution
49 | SolutionGuid = {D524576B-C017-48CF-A634-44F9531C21BD}
50 | EndGlobalSection
51 | EndGlobal
52 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Form/FrmAddFunction.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 | using Tools_Injector_Mod_Menu.Patch_Manager;
4 |
5 | namespace Tools_Injector_Mod_Menu
6 | {
7 | public partial class FrmAddFunction : Form
8 | {
9 | private readonly int _index;
10 |
11 | public FrmAddFunction(Enums.FunctionType type = Enums.FunctionType.Empty, int index = 1150)
12 | {
13 | InitializeComponent();
14 | _index = index;
15 | LoadType(type);
16 | if (type != Enums.FunctionType.Empty)
17 | {
18 | comboFunction.Enabled = false;
19 | }
20 | }
21 |
22 | private void LoadType(Enums.FunctionType type)
23 | {
24 | switch (type)
25 | {
26 | case Enums.FunctionType.Empty:
27 | case Enums.FunctionType.Category:
28 | LoadUserControl(new CtrlCategory(this, _index));
29 | break;
30 |
31 | case Enums.FunctionType.HookButton:
32 | case Enums.FunctionType.HookInputButton:
33 | comboFunction.SelectedIndex = 1;
34 | break;
35 |
36 | case Enums.FunctionType.HookButtonOnOf:
37 | case Enums.FunctionType.HookToggle:
38 | comboFunction.SelectedIndex = 2;
39 | break;
40 |
41 | case Enums.FunctionType.HookInputOnOff:
42 | case Enums.FunctionType.HookInputValue:
43 | case Enums.FunctionType.HookSeekBar:
44 | case Enums.FunctionType.HookSeekBarToggle:
45 | comboFunction.SelectedIndex = 3;
46 | break;
47 |
48 | case Enums.FunctionType.PatchButtonOnOff:
49 | case Enums.FunctionType.PatchLabel:
50 | case Enums.FunctionType.PatchToggle:
51 | comboFunction.SelectedIndex = 4;
52 | break;
53 |
54 | default:
55 | comboFunction.SelectedIndex = 0;
56 | break;
57 | }
58 | }
59 |
60 | private void comboFunction_SelectedIndexChanged(object sender, EventArgs e)
61 | {
62 | switch (comboFunction.SelectedIndex)
63 | {
64 | case 0:
65 | {
66 | LoadUserControl(new CtrlCategory(this, _index));
67 | break;
68 | }
69 | case 1:
70 | {
71 | LoadUserControl(new CtrlHookButton(this, _index));
72 | break;
73 | }
74 | case 2:
75 | {
76 | LoadUserControl(new CtrlHook(this, _index));
77 | break;
78 | }
79 | case 3:
80 | {
81 | LoadUserControl(new CtrlHookInput(this, _index));
82 | break;
83 | }
84 | case 4:
85 | {
86 | LoadUserControl(new CtrlPatch(this, _index));
87 | break;
88 | }
89 | }
90 | }
91 |
92 | private void LoadUserControl(Control ctrl)
93 | {
94 | panelFunction.Controls.Clear();
95 | panelFunction.Controls.Add(ctrl);
96 | }
97 | }
98 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/Utility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Drawing.Imaging;
4 | using System.IO;
5 | using Encoder = System.Drawing.Imaging.Encoder;
6 |
7 | namespace Tools_Injector_Mod_Menu
8 | {
9 | public static class Utility
10 | {
11 | #region Image Encoder
12 |
13 | //https://stackoverflow.com/a/45673201/8902883
14 | public static string ImageToBase64(this Image image, ImageFormat imageFormat)
15 | {
16 | using var ms = new MemoryStream();
17 | image.Save(ms, imageFormat);
18 | var imageBytes = ms.ToArray();
19 | return Convert.ToBase64String(imageBytes);
20 | }
21 |
22 | public static Image Base64ToImage(this string base64String)
23 | {
24 | var imageBytes = Convert.FromBase64String(base64String);
25 | using var ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
26 | ms.Write(imageBytes, 0, imageBytes.Length);
27 | return Image.FromStream(ms, true);
28 | }
29 |
30 | public static string GetMimeType(this string fileName)
31 | {
32 | var mimeType = "application/unknown";
33 | var ext = Path.GetExtension(fileName).ToLower();
34 | var regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
35 | if (regKey?.GetValue("Content Type") != null)
36 | mimeType = regKey.GetValue("Content Type").ToString();
37 | return mimeType;
38 | }
39 |
40 | //https://stackoverflow.com/a/24651073/8902883
41 | public static Image CompressImage(this string fileName, int newQuality)
42 | {
43 | using var image = new Bitmap(fileName);
44 | using var memImage = new Bitmap(image);
45 |
46 | var myEncoderParameters = new EncoderParameters(1)
47 | {
48 | Param = { [0] = new EncoderParameter(Encoder.Quality, newQuality) }
49 | };
50 |
51 | var memStream = new MemoryStream();
52 | memImage.Save(memStream, GetEncoderInfo(GetMimeType(fileName)), myEncoderParameters);
53 | var newImage = Image.FromStream(memStream);
54 | var imageAttributes = new ImageAttributes();
55 | using var g = Graphics.FromImage(newImage);
56 | g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
57 | g.DrawImage(newImage, new Rectangle(Point.Empty, newImage.Size), 0, 0, newImage.Width, newImage.Height, GraphicsUnit.Pixel, imageAttributes);
58 | return newImage;
59 | }
60 |
61 | public static ImageCodecInfo GetEncoderInfo(this string mimeType)
62 | {
63 | var encoders = ImageCodecInfo.GetImageEncoders();
64 | return Array.Find(encoders, ici => ici.MimeType == mimeType);
65 | }
66 |
67 | #endregion Image Encoder
68 |
69 | public static string SmaliCountToName(int count, bool move = false)
70 | {
71 | if (move)
72 | {
73 | return $"smali_classes{count + 1}";
74 | }
75 |
76 | return count == 1 ? "smali" : $"smali_classes{count}";
77 | }
78 |
79 | public static string SmaliCountToClass(int count)
80 | {
81 | return $"classes{count}.dex";
82 | }
83 |
84 | public static string GetApkName(string apk)
85 | {
86 | try
87 | {
88 | var split = apk.Split('\\');
89 | return split[split.Length - 1];
90 | }
91 | catch
92 | {
93 | return null;
94 | }
95 | }
96 | }
97 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | true
30 |
31 |
32 |
33 |
34 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
55 |
63 |
64 |
78 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Patch Manager/OffsetPatch.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace Tools_Injector_Mod_Menu.Patch_Manager
5 | {
6 | public static class OffsetPatch
7 | {
8 | public static List OffsetList = new();
9 | public static List FunctionList = new();
10 | public static TFiveMenu T5Menu = new();
11 |
12 | public static void AddOffset(OffsetInfo offsetInfo)
13 | {
14 | OffsetList.Add(offsetInfo);
15 | }
16 |
17 | public static void AddOffset(OffsetInfo offsetInfo, List offsetList)
18 | {
19 | offsetList.Add(offsetInfo);
20 | }
21 |
22 | public static void AddFunction(string cheatName, Enums.FunctionType functionType)
23 | {
24 | FunctionList.Add(new FunctionList
25 | {
26 | CheatName = cheatName,
27 | OffsetList = OffsetList.ToList(),
28 | FunctionType = functionType,
29 | FunctionExtra = null,
30 | MultipleValue = false
31 | });
32 | }
33 |
34 | public static void AddFunction(string cheatName = null, Enums.FunctionType functionType = Enums.FunctionType.Empty, string functionExtra = null, bool multipleValue = false)
35 | {
36 | FunctionList.Add(new FunctionList
37 | {
38 | CheatName = cheatName,
39 | OffsetList = (OffsetList ?? new List()).ToList(),
40 | FunctionType = functionType,
41 | FunctionExtra = functionExtra,
42 | MultipleValue = multipleValue
43 | });
44 | }
45 |
46 | public static void AddFunction(string cheatName = null, List offsetList = null, Enums.FunctionType functionType = Enums.FunctionType.Empty, string functionExtra = null, bool multipleValue = false)
47 | {
48 | FunctionList.Add(new FunctionList
49 | {
50 | CheatName = cheatName,
51 | OffsetList = (offsetList ?? new List()).ToList(),
52 | FunctionType = functionType,
53 | FunctionExtra = functionExtra,
54 | MultipleValue = multipleValue
55 | });
56 | }
57 |
58 | public static void AddFunction(string cheatName, List offsetList, List functionList)
59 | {
60 | functionList.Add(new FunctionList { CheatName = cheatName, OffsetList = offsetList });
61 | }
62 |
63 | public static List ConvertNameList(List functionList)
64 | {
65 | var cheatName = new List();
66 | foreach (var result in functionList)
67 | {
68 | cheatName.Add(result.CheatName);
69 | }
70 | return cheatName;
71 | }
72 |
73 | public static List ConvertNameList()
74 | {
75 | return FunctionList.Select(result => result.CheatName).ToList();
76 | }
77 |
78 | public static List ConvertFunction(FunctionList functionList)
79 | {
80 | return functionList.OffsetList.ToList();
81 | }
82 |
83 | public static List ConvertFunctionList(List functionList)
84 | {
85 | var offsetList = new List();
86 | foreach (var result in functionList)
87 | {
88 | offsetList.AddRange(result.OffsetList);
89 | }
90 | return offsetList;
91 | }
92 |
93 | public static List ConvertFunctionList()
94 | {
95 | var offsetList = new List();
96 | foreach (var result in FunctionList)
97 | {
98 | offsetList.AddRange(result.OffsetList);
99 | }
100 | return offsetList;
101 | }
102 |
103 | public static List ConvertFunctionList(int id)
104 | {
105 | var offsetList = new List();
106 | offsetList.AddRange(FunctionList[id].OffsetList);
107 | return offsetList;
108 | }
109 |
110 | public static OffsetInfo OffsetValue()
111 | {
112 | return new()
113 | {
114 | OffsetId = 0,
115 | Offset = null,
116 | Hex = null,
117 | HookInfo = HookValue(),
118 | Name = null,
119 | Method = new List<(string, string)> { (null, null) }
120 | };
121 | }
122 |
123 | public static HookInfo HookValue()
124 | {
125 | return new()
126 | {
127 | Type = Enums.Type.Empty,
128 | Value = null,
129 | Links = null,
130 | FieldInfo = FieldValue()
131 | };
132 | }
133 |
134 | public static FieldInfo FieldValue()
135 | {
136 | return new()
137 | {
138 | Type = Enums.Type.Empty,
139 | Offset = null
140 | };
141 | }
142 | }
143 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/EnumHelper.cs:
--------------------------------------------------------------------------------
1 | using Tools_Injector_Mod_Menu.Patch_Manager;
2 |
3 | namespace Tools_Injector_Mod_Menu
4 | {
5 | public static class EnumHelper
6 | {
7 | public static string FunctionTypeToString(this Enums.FunctionType type)
8 | {
9 | return type switch
10 | {
11 | Enums.FunctionType.Category => "Category",
12 | Enums.FunctionType.HookButton => "Hook: Button",
13 | Enums.FunctionType.HookButtonOnOf => "Hook: Button On/Of",
14 | Enums.FunctionType.HookInputButton => "Hook: Input Button",
15 | Enums.FunctionType.HookInputOnOff => "Hook: Input OnOff",
16 | Enums.FunctionType.HookInputValue => "Hook: Input Value",
17 | Enums.FunctionType.HookSeekBar => "Hook: SeekBar",
18 | Enums.FunctionType.HookSeekBarToggle => "Hook: SeekBar Toggle",
19 | Enums.FunctionType.HookToggle => "Hook: Toggle",
20 | Enums.FunctionType.PatchButtonOnOff => "Patch: Button On/Off",
21 | Enums.FunctionType.PatchLabel => "Patch: Label",
22 | Enums.FunctionType.PatchToggle => "Patch: Toggle",
23 | _ => "Empty"
24 | };
25 | }
26 |
27 | public static Enums.FunctionType StringToFunctionType(this string str)
28 | {
29 | return str switch
30 | {
31 | "Category" => Enums.FunctionType.Category,
32 | "Hook: Button" => Enums.FunctionType.HookButton,
33 | "Hook: Button On/Of" => Enums.FunctionType.HookButtonOnOf,
34 | "Hook: Input Button" => Enums.FunctionType.HookInputButton,
35 | "Hook: Input OnOff" => Enums.FunctionType.HookInputOnOff,
36 | "Hook: Input Value" => Enums.FunctionType.HookInputValue,
37 | "Hook: SeekBar" => Enums.FunctionType.HookSeekBar,
38 | "Hook: SeekBar Toggle" => Enums.FunctionType.HookSeekBarToggle,
39 | "Hook: Toggle" => Enums.FunctionType.HookToggle,
40 | "Patch: Button On/Off" => Enums.FunctionType.PatchButtonOnOff,
41 | "Patch: Label" => Enums.FunctionType.PatchLabel,
42 | "Patch: Toggle" => Enums.FunctionType.PatchToggle,
43 | _ => Enums.FunctionType.Empty
44 | };
45 | }
46 |
47 | public static string FunctionTypeToStringFeatures(this Enums.FunctionType type)
48 | {
49 | return type switch
50 | {
51 | Enums.FunctionType.Category => "Category",
52 | Enums.FunctionType.HookButton => "Button",
53 | Enums.FunctionType.HookButtonOnOf => "ButtonOnOff",
54 | Enums.FunctionType.HookInputButton => "InputButton",
55 | Enums.FunctionType.HookInputOnOff => "InputOnOff",
56 | Enums.FunctionType.HookInputValue => "InputValue",
57 | Enums.FunctionType.HookSeekBar => "SeekBar",
58 | Enums.FunctionType.HookSeekBarToggle => "SeekBarSwitch",
59 | Enums.FunctionType.HookToggle => "Toggle",
60 | Enums.FunctionType.PatchButtonOnOff => "ButtonOnOff",
61 | Enums.FunctionType.PatchLabel => "RichTextView",
62 | Enums.FunctionType.PatchToggle => "Toggle",
63 | _ => "Empty"
64 | };
65 | }
66 |
67 | public static Enums.Type StringToType(this string str)
68 | {
69 | return str switch
70 | {
71 | "bool" => Enums.Type.Bool,
72 | "boolback" => Enums.Type.BoolBack,
73 | "double" => Enums.Type.Double,
74 | "float" => Enums.Type.Float,
75 | "int" => Enums.Type.Int,
76 | "long" => Enums.Type.Long,
77 | "void" => Enums.Type.Void,
78 | "links" => Enums.Type.Links,
79 | _ => Enums.Type.Empty
80 | };
81 | }
82 |
83 | public static string TypeToString(this Enums.Type type, bool data = false)
84 | {
85 | return type is Enums.Type.Bool ? "bool" :
86 | type is Enums.Type.BoolBack && data ? "boolback" :
87 | type is Enums.Type.BoolBack && !data ? "bool" :
88 | type is Enums.Type.Double ? "double" :
89 | type is Enums.Type.Float ? "float" :
90 | type is Enums.Type.Int ? "int" :
91 | type is Enums.Type.Long ? "long" :
92 | type is Enums.Type.Void ? "void" :
93 | type is Enums.Type.Links ? "links" : null;
94 | }
95 | public static string TypeToStringEnd(this Enums.Type type)
96 | {
97 | return type switch
98 | {
99 | Enums.Type.Bool => ";",
100 | Enums.Type.BoolBack => ";",
101 | Enums.Type.Double => "= 1;",
102 | Enums.Type.Float => "= 1;",
103 | Enums.Type.Int => "= 1;",
104 | Enums.Type.Long => "= 1;",
105 | Enums.Type.Void => ";",
106 | Enums.Type.Links => "",
107 | _ => null
108 | };
109 | }
110 |
111 | public static Enums.LogsType ProcessTypeToLogsType(this Enums.ProcessType type)
112 | {
113 | return type switch
114 | {
115 | Enums.ProcessType.ApkFull1Decompile => Enums.LogsType.Decompile,
116 | Enums.ProcessType.ApkFull2Decompile => Enums.LogsType.Decompile,
117 | Enums.ProcessType.MenuFull => Enums.LogsType.CompileMenu,
118 | Enums.ProcessType.ApkFull1 => Enums.LogsType.CompileMenu,
119 | Enums.ProcessType.ApkFull2 => Enums.LogsType.CompileMenu,
120 | Enums.ProcessType.CompileApk => Enums.LogsType.CompileApk,
121 | _ => Enums.LogsType.Logs
122 | };
123 | }
124 | }
125 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Form/FrmImageText.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 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlCategory.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 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/AppSettings.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 | using System.Text;
4 | using System.Web.Script.Serialization;
5 |
6 | namespace Tools_Injector_Mod_Menu
7 | {
8 | //https://stackoverflow.com/a/6541739/8902883
9 | public class MySettings : AppSettings
10 | {
11 | public bool debugMode;
12 | public string txtLibName;
13 | public string txtToast;
14 | public string txtName;
15 | public string txtSite;
16 | public string txtText;
17 | public string txtEndCredit;
18 | public string ImageCode;
19 | public bool chkNoMenu;
20 |
21 | public bool chkRemoveTemp;
22 | public bool chkTFiveCredit = true;
23 | public bool chkSound = true;
24 | public bool chkCheckUpdate = true;
25 | public bool chkAlwaysOverwrite = true;
26 | public bool chkMergeApk;
27 | public bool chkOpenOutput = true;
28 | public bool chkRemoveOther = true;
29 |
30 | public string txtNDK;
31 | public int menuStyle;
32 | public int apkTools;
33 |
34 | public string txtService = @"";
35 | public string txtOnCreate = "invoke-static {p0}, Lcom/tfive/MainActivity;->Start(Landroid/content/Context;)V";
36 |
37 | public string txtActionMain = @"
38 |
39 |
40 |
41 |
42 |
43 | ";
44 | }
45 |
46 | public class AppSettings where T : new()
47 | {
48 | private const string DefaultFilename = "settings.json";
49 |
50 | public void Save(string fileName = DefaultFilename)
51 | {
52 | var pretty = Process(new JavaScriptSerializer().Serialize(this));
53 | File.WriteAllText(fileName, pretty);
54 | }
55 |
56 | public static void Save(T pSettings, string fileName = DefaultFilename)
57 | {
58 | File.WriteAllText(fileName, new JavaScriptSerializer().Serialize(pSettings));
59 | }
60 |
61 | public static T Load(string fileName = DefaultFilename)
62 | {
63 | var t = new T();
64 | if (File.Exists(fileName))
65 | t = new JavaScriptSerializer().Deserialize(File.ReadAllText(fileName));
66 | return t;
67 | }
68 |
69 | //https://stackoverflow.com/a/23828858/8902883
70 | private static string Process(string inputText)
71 | {
72 | var escaped = false;
73 | var inQuotes = false;
74 | var column = 0;
75 | var indentation = 0;
76 | var indentations = new Stack();
77 | const int tabbing = 8;
78 | var sb = new StringBuilder();
79 | inputText = "{\n " + inputText.Remove(0, 1);
80 | inputText = inputText.Remove(inputText.Length - 1, 1) + "\n}";
81 | foreach (var x in inputText)
82 | {
83 | sb.Append(x);
84 | column++;
85 | if (escaped)
86 | {
87 | escaped = false;
88 | }
89 | else
90 | {
91 | switch (x)
92 | {
93 | case '\\':
94 | escaped = true;
95 | break;
96 |
97 | case '\"':
98 | inQuotes = !inQuotes;
99 | break;
100 |
101 | default:
102 | {
103 | if (!inQuotes)
104 | {
105 | if (x == ',')
106 | {
107 | // if we see a comma, go to next line, and indent to the same depth
108 | sb.Append("\r\n");
109 | column = 0;
110 | for (var i = 0; i < indentation; i++)
111 | {
112 | sb.Append(" ");
113 | column++;
114 | }
115 | }
116 | else if (x == '[' || x == '{')
117 | {
118 | // if we open a bracket or brace, indent further (push on stack)
119 | indentations.Push(indentation);
120 | indentation = column;
121 | }
122 | else if (x == ']' || x == '}')
123 | {
124 | // if we close a bracket or brace, undo one level of indent (pop)
125 | indentation = indentations.Pop();
126 | }
127 | else if (x == ':')
128 | {
129 | // if we see a colon, add spaces until we get to the next
130 | // tab stop, but without using tab characters!
131 | while (column % tabbing != 0)
132 | {
133 | sb.Append(' ');
134 | column++;
135 | }
136 | }
137 | }
138 |
139 | break;
140 | }
141 | }
142 | }
143 | }
144 | return sb.ToString();
145 | }
146 | }
147 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Utility/Checker.cs:
--------------------------------------------------------------------------------
1 | using MaterialSkin.Controls;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Windows.Forms;
6 | using Tools_Injector_Mod_Menu.Patch_Manager;
7 |
8 | namespace Tools_Injector_Mod_Menu
9 | {
10 | public static class Checker
11 | {
12 | #region Check Directory & File
13 |
14 | public static void CheckFolder(string folderName, bool appPath = true)
15 | {
16 | var path = appPath ? FrmMain.AppPath + "\\" + folderName : folderName;
17 |
18 | if (!Directory.Exists(path))
19 | {
20 | Directory.CreateDirectory(path);
21 | }
22 | }
23 |
24 | public static bool CheckFiles(string folderName, string fileName) => File.Exists(FrmMain.AppPath + "\\" + folderName + "\\" + fileName);
25 |
26 | #endregion Check Directory & File
27 |
28 | #region Check SpecialChar
29 |
30 | public static bool IsSpecialChar(this string input) => @"\|!#$%&/()=?»«@£§€{}.-;'<>_,".Any(input.Contains);
31 |
32 | public static bool IsPathSpecialChar(this string input) => "|!#$%&/()=?»«@£§€{};'<>_, ".Any(input.Contains);
33 |
34 | #endregion Check SpecialChar
35 |
36 | #region Check Equal & Duplicate
37 |
38 | public static bool IsEqual(this List str1, List str2) => !str1.Where((t, i) => !t.Equals(str2[i])).Any();
39 |
40 | public static bool IsEqual(this string[] str1, string[] str2) => !str1.Where((t, i) => !t.Equals(str2[i])).Any();
41 |
42 | public static bool IsDuplicate(this OffsetInfo offsetInfo, List offsetList)
43 | {
44 | if (offsetList.Count != 0 && offsetList.Any(offset => offsetInfo.Offset == offset.Offset))
45 | {
46 | MyMessage.MsgShowWarning("Found Duplicate " + offsetInfo.Offset + @", Please Check it again before adding a offset!!!");
47 | return true;
48 | }
49 | return false;
50 | }
51 |
52 | public static bool IsDuplicate(this Dictionary offsetDict, OffsetInfo offsetInfo)
53 | {
54 | if (offsetDict.Count != 0 && offsetDict.Values.Any(offset => offsetInfo.Offset == offset.Offset))
55 | {
56 | MyMessage.MsgShowWarning("Found Duplicate " + offsetInfo.Offset + ", Please Check it again before adding a offset!!!");
57 | return true;
58 | }
59 | return false;
60 | }
61 |
62 | public static bool IsDuplicate(this Dictionary> functionDict, OffsetInfo offsetInfo)
63 | {
64 | if (functionDict.Count != 0 && functionDict.Values.Any(offsetDick => offsetDick.Values.Any(offset => offsetInfo.Offset == offset.Offset)))
65 | {
66 | MyMessage.MsgShowWarning("Found Duplicate " + offsetInfo.Offset + ", Please Check it again before adding a offset!!!");
67 | return true;
68 | }
69 | return false;
70 | }
71 |
72 | public static bool IsDuplicateName(this string nameCheat, List functionList)
73 | {
74 | if (functionList.Count != 0 && functionList.Any(result => nameCheat == result.CheatName))
75 | {
76 | MyMessage.MsgShowWarning("Found Duplicate " + nameCheat + ", Please Check it again before adding a offset!!!");
77 | return true;
78 | }
79 | return false;
80 | }
81 |
82 | public static bool IsDuplicateName(this Dictionary> functionDict, string nameCheat)
83 | {
84 | if (functionDict.Count != 0 && functionDict.Keys.Any(offsetDict => nameCheat == offsetDict))
85 | {
86 | MyMessage.MsgShowWarning("Found Duplicate " + nameCheat + ", Please Check it again before adding a offset!!!");
87 | return true;
88 | }
89 | return false;
90 | }
91 |
92 | #endregion Check Equal & Duplicate
93 |
94 | #region Check Empty
95 |
96 | public static bool IsEmpty(this object str)
97 | {
98 | return str == null || string.IsNullOrWhiteSpace(str.ToString());
99 | }
100 |
101 | public static bool IsEmpty(this object str, string message)
102 | {
103 | if (str == null || string.IsNullOrWhiteSpace(str.ToString()))
104 | {
105 | MyMessage.MsgShowWarning($"{message} is Empty, Please Check it again!!!");
106 | return true;
107 | }
108 | return false;
109 | }
110 |
111 | public static bool IsEmpty(this MaterialTextBox textBox)
112 | {
113 | return string.IsNullOrWhiteSpace(textBox.Text);
114 | }
115 |
116 | public static bool IsEmpty(this MaterialTextBox textBox, string message)
117 | {
118 | if (string.IsNullOrWhiteSpace(textBox.Text))
119 | {
120 | MyMessage.MsgShowWarning($"{message} is Empty, Please Check it again!!!");
121 | return true;
122 | }
123 |
124 | return false;
125 | }
126 |
127 | public static bool IsEmpty(this object str, int line, string name = "", bool msg = true)
128 | {
129 | if (str == null || string.IsNullOrWhiteSpace(str.ToString()))
130 | {
131 | if (!msg) return true;
132 | MyMessage.MsgShowWarning($"{name} At {line} is Empty, Please Check it again!!!");
133 | return true;
134 | }
135 | return false;
136 | }
137 |
138 | public static bool IsEmpty(this DataGridView dataGrid, bool msg = true)
139 | {
140 | if (dataGrid.Rows.Count == 0)
141 | {
142 | if (!msg) return true;
143 |
144 | MyMessage.MsgShowWarning($"{dataGrid.Name} is Empty, Please Check it again!!!");
145 | return true;
146 | }
147 | return false;
148 | }
149 |
150 | public static bool IsEmpty(List offsetList) => offsetList.Count == 0;
151 |
152 | public static bool IsEmpty(List functionList) => functionList.Count == 0;
153 |
154 | public static bool IsEmpty(List<(string, string)> methodList) => methodList.Count == 0;
155 |
156 | public static bool IsEmpty(this Dictionary offsetDict) => offsetDict.Count == 0;
157 |
158 | public static bool IsEmpty(this Dictionary> functionDict) => functionDict.Count == 0;
159 |
160 | #endregion Check Empty
161 | }
162 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlPatch.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 |
121 | True
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | 17, 17
131 |
132 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/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 Tools_Injector_Mod_Menu.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", "16.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("Tools_Injector_Mod_Menu.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 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap folder_7_24 {
67 | get {
68 | object obj = ResourceManager.GetObject("folder_7_24", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap github {
77 | get {
78 | object obj = ResourceManager.GetObject("github", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap home_7_24 {
87 | get {
88 | object obj = ResourceManager.GetObject("home_7_24", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Looks up a localized resource of type System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap info_24 {
97 | get {
98 | object obj = ResourceManager.GetObject("info_24", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// Looks up a localized resource of type System.Drawing.Bitmap.
105 | ///
106 | internal static System.Drawing.Bitmap moderator_24 {
107 | get {
108 | object obj = ResourceManager.GetObject("moderator_24", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 |
113 | ///
114 | /// Looks up a localized resource of type System.Drawing.Bitmap.
115 | ///
116 | internal static System.Drawing.Bitmap note_2_24 {
117 | get {
118 | object obj = ResourceManager.GetObject("note_2_24", resourceCulture);
119 | return ((System.Drawing.Bitmap)(obj));
120 | }
121 | }
122 |
123 | ///
124 | /// Looks up a localized resource of type System.Drawing.Bitmap.
125 | ///
126 | internal static System.Drawing.Bitmap package_2_24 {
127 | get {
128 | object obj = ResourceManager.GetObject("package_2_24", resourceCulture);
129 | return ((System.Drawing.Bitmap)(obj));
130 | }
131 | }
132 |
133 | ///
134 | /// Looks up a localized resource of type System.Drawing.Bitmap.
135 | ///
136 | internal static System.Drawing.Bitmap save_24 {
137 | get {
138 | object obj = ResourceManager.GetObject("save_24", resourceCulture);
139 | return ((System.Drawing.Bitmap)(obj));
140 | }
141 | }
142 |
143 | ///
144 | /// Looks up a localized resource of type System.Drawing.Bitmap.
145 | ///
146 | internal static System.Drawing.Bitmap syringe_24 {
147 | get {
148 | object obj = ResourceManager.GetObject("syringe_24", resourceCulture);
149 | return ((System.Drawing.Bitmap)(obj));
150 | }
151 | }
152 |
153 | ///
154 | /// Looks up a localized resource of type System.Drawing.Bitmap.
155 | ///
156 | internal static System.Drawing.Bitmap tool_box_24 {
157 | get {
158 | object obj = ResourceManager.GetObject("tool_box_24", resourceCulture);
159 | return ((System.Drawing.Bitmap)(obj));
160 | }
161 | }
162 | }
163 | }
164 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlHookButton.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 |
121 | 17, 17
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | True
131 |
132 |
133 | True
134 |
135 |
136 | True
137 |
138 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlHookInput.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 |
121 | 17, 17
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | True
131 |
132 |
133 | True
134 |
135 |
136 | True
137 |
138 |
139 | True
140 |
141 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlHook.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 |
121 | 17, 17
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | True
131 |
132 |
133 | True
134 |
135 |
136 | True
137 |
138 |
139 | True
140 |
141 |
142 | True
143 |
144 |
--------------------------------------------------------------------------------
/.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 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # JustCode is a .NET coding add-in
131 | .JustCode
132 |
133 | # TeamCity is a build add-in
134 | _TeamCity*
135 |
136 | # DotCover is a Code Coverage Tool
137 | *.dotCover
138 |
139 | # AxoCover is a Code Coverage Tool
140 | .axoCover/*
141 | !.axoCover/settings.json
142 |
143 | # Visual Studio code coverage results
144 | *.coverage
145 | *.coveragexml
146 |
147 | # NCrunch
148 | _NCrunch_*
149 | .*crunch*.local.xml
150 | nCrunchTemp_*
151 |
152 | # MightyMoose
153 | *.mm.*
154 | AutoTest.Net/
155 |
156 | # Web workbench (sass)
157 | .sass-cache/
158 |
159 | # Installshield output folder
160 | [Ee]xpress/
161 |
162 | # DocProject is a documentation generator add-in
163 | DocProject/buildhelp/
164 | DocProject/Help/*.HxT
165 | DocProject/Help/*.HxC
166 | DocProject/Help/*.hhc
167 | DocProject/Help/*.hhk
168 | DocProject/Help/*.hhp
169 | DocProject/Help/Html2
170 | DocProject/Help/html
171 |
172 | # Click-Once directory
173 | publish/
174 |
175 | # Publish Web Output
176 | *.[Pp]ublish.xml
177 | *.azurePubxml
178 | # Note: Comment the next line if you want to checkin your web deploy settings,
179 | # but database connection strings (with potential passwords) will be unencrypted
180 | *.pubxml
181 | *.publishproj
182 |
183 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
184 | # checkin your Azure Web App publish settings, but sensitive information contained
185 | # in these scripts will be unencrypted
186 | PublishScripts/
187 |
188 | # NuGet Packages
189 | *.nupkg
190 | # NuGet Symbol Packages
191 | *.snupkg
192 | # The packages folder can be ignored because of Package Restore
193 | **/[Pp]ackages/*
194 | # except build/, which is used as an MSBuild target.
195 | !**/[Pp]ackages/build/
196 | # Uncomment if necessary however generally it will be regenerated when needed
197 | #!**/[Pp]ackages/repositories.config
198 | # NuGet v3's project.json files produces more ignorable files
199 | *.nuget.props
200 | *.nuget.targets
201 |
202 | # Microsoft Azure Build Output
203 | csx/
204 | *.build.csdef
205 |
206 | # Microsoft Azure Emulator
207 | ecf/
208 | rcf/
209 |
210 | # Windows Store app package directories and files
211 | AppPackages/
212 | BundleArtifacts/
213 | Package.StoreAssociation.xml
214 | _pkginfo.txt
215 | *.appx
216 | *.appxbundle
217 | *.appxupload
218 |
219 | # Visual Studio cache files
220 | # files ending in .cache can be ignored
221 | *.[Cc]ache
222 | # but keep track of directories ending in .cache
223 | !?*.[Cc]ache/
224 |
225 | # Others
226 | ClientBin/
227 | ~$*
228 | *~
229 | *.dbmdl
230 | *.dbproj.schemaview
231 | *.jfm
232 | *.pfx
233 | *.publishsettings
234 | orleans.codegen.cs
235 |
236 | # Including strong name files can present a security risk
237 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
238 | #*.snk
239 |
240 | # Since there are multiple workflows, uncomment next line to ignore bower_components
241 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
242 | #bower_components/
243 |
244 | # RIA/Silverlight projects
245 | Generated_Code/
246 |
247 | # Backup & report files from converting an old project file
248 | # to a newer Visual Studio version. Backup files are not needed,
249 | # because we have git ;-)
250 | _UpgradeReport_Files/
251 | Backup*/
252 | UpgradeLog*.XML
253 | UpgradeLog*.htm
254 | ServiceFabricBackup/
255 | *.rptproj.bak
256 |
257 | # SQL Server files
258 | *.mdf
259 | *.ldf
260 | *.ndf
261 |
262 | # Business Intelligence projects
263 | *.rdl.data
264 | *.bim.layout
265 | *.bim_*.settings
266 | *.rptproj.rsuser
267 | *- [Bb]ackup.rdl
268 | *- [Bb]ackup ([0-9]).rdl
269 | *- [Bb]ackup ([0-9][0-9]).rdl
270 |
271 | # Microsoft Fakes
272 | FakesAssemblies/
273 |
274 | # GhostDoc plugin setting file
275 | *.GhostDoc.xml
276 |
277 | # Node.js Tools for Visual Studio
278 | .ntvs_analysis.dat
279 | node_modules/
280 |
281 | # Visual Studio 6 build log
282 | *.plg
283 |
284 | # Visual Studio 6 workspace options file
285 | *.opt
286 |
287 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
288 | *.vbw
289 |
290 | # Visual Studio LightSwitch build output
291 | **/*.HTMLClient/GeneratedArtifacts
292 | **/*.DesktopClient/GeneratedArtifacts
293 | **/*.DesktopClient/ModelManifest.xml
294 | **/*.Server/GeneratedArtifacts
295 | **/*.Server/ModelManifest.xml
296 | _Pvt_Extensions
297 |
298 | # Paket dependency manager
299 | .paket/paket.exe
300 | paket-files/
301 |
302 | # FAKE - F# Make
303 | .fake/
304 |
305 | # CodeRush personal settings
306 | .cr/personal
307 |
308 | # Python Tools for Visual Studio (PTVS)
309 | __pycache__/
310 | *.pyc
311 |
312 | # Cake - Uncomment if you are using it
313 | # tools/**
314 | # !tools/packages.config
315 |
316 | # Tabs Studio
317 | *.tss
318 |
319 | # Telerik's JustMock configuration file
320 | *.jmconfig
321 |
322 | # BizTalk build output
323 | *.btp.cs
324 | *.btm.cs
325 | *.odx.cs
326 | *.xsd.cs
327 |
328 | # OpenCover UI analysis results
329 | OpenCover/
330 |
331 | # Azure Stream Analytics local run output
332 | ASALocalRun/
333 |
334 | # MSBuild Binary and Structured Log
335 | *.binlog
336 |
337 | # NVidia Nsight GPU debugger configuration file
338 | *.nvuser
339 |
340 | # MFractors (Xamarin productivity tool) working folder
341 | .mfractor/
342 |
343 | # Local History for Visual Studio
344 | .localhistory/
345 |
346 | # BeatPulse healthcheck temp database
347 | healthchecksdb
348 |
349 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
350 | MigrationBackup/
351 |
352 | # Ionide (cross platform F# VS Code tools) working folder
353 | .ionide/
354 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Form/FrmAddFunction.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 |
121 |
122 |
123 | AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMMOAADDDgAAAAAAAAAA
124 | AADy7e7/8u3u//Lt7v/y7e7/8u3t//Lv8//04tH/9ti2//fQov/13MD/8fL7//Ls6//y7e7/8u3u//Lt
125 | 7v/y7e7/8u3u//Lt7v/y7e7/8u3u//Ls6//x8/3/+M2a//2zVf/4zZv/+7po//bYt//x8vv/8uzs//Lt
126 | 7v/y7e7/8u3u//Lt7v/y7e7/8u3u//Lt7v/y7Ov/8fP9//jOnP/8uWT/7/z///Hz/f/6wnv/9du9//Hw
127 | 9//y7Oz/8u3u//Lt7v/y7e7/8u3u//Lt7v/y7e7/8uzr//Hz/f/4zpz//Lhh//Xdw//1273/+sF5//rB
128 | ev/x8///8uzr//Lt7v/y7e7/8u3u//Lt7v/y7e7/8u3u//Ls6v/x8vr/98+f//yzVv/5wXn/+sF7//u/
129 | dv/22bj/8fD1//Ls7P/y7e7/8u3u//Lt7v/y7e7/8u3u//Lt7f/w7e//7Pf///fQov//sEz/+dWv//Ls
130 | 6//v6eT/8Ovq//Lt7//y7e7/8u3u//Lt7v/y7e7/8u3u//Lt7f/x7/P//uHO///auP/6zZr/87Zg//HB
131 | fP//tVv//69G///OnP/w8fr/8uzr//Lt7v/y7e7/8u3u//Lt7v/x7e7/9+7w/8Lo5/9h07z/MePh/xXp
132 | 9f8U7///MOjv/2LUvv/F2L3/9vD0//Hs7f/y7e7/8u3u//Lt7v/y7e7/7e3u///s7/9U7/H/APD1/wDJ
133 | //83uMD/N7a8/wDI//8A7/L/VfDy///s7v/t7e7/8u3u//Lt7v/y7e7/8e3u//Xt7v/t7e//UvP2/wr0
134 | 9v9K7v3/PuLo/z/j6f9K7v3/CvT2/1Lz9v/t7e//9e3u//Ht7v/y7e7/8u3u//Ht7v/37e7/r/Hy/5Dz
135 | 9f8A/P//xO/w/0v//v9M//7/xO/w/wD8//+Q8/X/r/Hy//ft7v/x7e7/8u3u//Lt7v/y7e7/7u3u/+ru
136 | 7/+I9fX/su/y/7j98v8At/3/ALf9/7j98v+y7/L/iPX1/+ru7//u7e7/8u3u//Lt7v/y7e7/8u3u//Tt
137 | 7v/w7e7/7u3u///o7P+t//P/AJr+/wCb/v+u//P//+js/+7t7v/w7e7/9O3u//Lt7v/y7e7/8u3u//Lt
138 | 7v/y7e7/8+3u//Lt7v/r7u7//+ns/03/+f9O//n//+ns/+vu7v/y7e7/8+3u//Lt7v/y7e7/8u3u//Lt
139 | 7v/y7e7/8u3u//Lt7v/y7e7/7+3u///s7f+y8PL/svDy///s7f/w7e7/8u3u//Lt7v/y7e7/8u3u//Lt
140 | 7v/y7e7/8u3u//Lt7v/y7e7/8u3u//Lt7v/z7e7/7u3u/+7t7v/z7e7/8u3u//Lt7v/y7e7/8u3u//Lt
141 | 7v/y7e7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
142 | AAAAAAAAAAAAAA==
143 |
144 |
145 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Form/FrmAddFunction.Designer.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Tools_Injector_Mod_Menu
3 | {
4 | partial class FrmAddFunction
5 | {
6 | ///
7 | /// Required designer variable.
8 | ///
9 | private System.ComponentModel.IContainer components = null;
10 |
11 | ///
12 | /// Clean up any resources being used.
13 | ///
14 | /// true if managed resources should be disposed; otherwise, false.
15 | protected override void Dispose(bool disposing)
16 | {
17 | if (disposing && (components != null))
18 | {
19 | components.Dispose();
20 | }
21 | base.Dispose(disposing);
22 | }
23 |
24 | #region Windows Form Designer generated code
25 |
26 | ///
27 | /// Required method for Designer support - do not modify
28 | /// the contents of this method with the code editor.
29 | ///
30 | private void InitializeComponent()
31 | {
32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAddFunction));
33 | this.label14 = new System.Windows.Forms.Label();
34 | this.panel1 = new System.Windows.Forms.Panel();
35 | this.panel2 = new System.Windows.Forms.Panel();
36 | this.comboFunction = new MaterialSkin.Controls.MaterialComboBox();
37 | this.materialCard2 = new MaterialSkin.Controls.MaterialCard();
38 | this.panelFunction = new System.Windows.Forms.Panel();
39 | this.panel1.SuspendLayout();
40 | this.panel2.SuspendLayout();
41 | this.materialCard2.SuspendLayout();
42 | this.SuspendLayout();
43 | //
44 | // label14
45 | //
46 | this.label14.AutoSize = true;
47 | this.label14.BackColor = System.Drawing.Color.Transparent;
48 | this.label14.Font = new System.Drawing.Font("Roboto", 20F);
49 | this.label14.ForeColor = System.Drawing.Color.White;
50 | this.label14.Location = new System.Drawing.Point(12, 12);
51 | this.label14.Name = "label14";
52 | this.label14.Size = new System.Drawing.Size(190, 33);
53 | this.label14.TabIndex = 12;
54 | this.label14.Text = "Function Type:";
55 | //
56 | // panel1
57 | //
58 | this.panel1.Controls.Add(this.panel2);
59 | this.panel1.Controls.Add(this.label14);
60 | this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
61 | this.panel1.Location = new System.Drawing.Point(0, 0);
62 | this.panel1.Name = "panel1";
63 | this.panel1.Size = new System.Drawing.Size(799, 64);
64 | this.panel1.TabIndex = 14;
65 | //
66 | // panel2
67 | //
68 | this.panel2.BackColor = System.Drawing.Color.White;
69 | this.panel2.Controls.Add(this.comboFunction);
70 | this.panel2.Location = new System.Drawing.Point(208, 12);
71 | this.panel2.Name = "panel2";
72 | this.panel2.Size = new System.Drawing.Size(577, 35);
73 | this.panel2.TabIndex = 0;
74 | //
75 | // comboFunction
76 | //
77 | this.comboFunction.AutoResize = false;
78 | this.comboFunction.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
79 | this.comboFunction.Depth = 0;
80 | this.comboFunction.Dock = System.Windows.Forms.DockStyle.Fill;
81 | this.comboFunction.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
82 | this.comboFunction.DropDownHeight = 437;
83 | this.comboFunction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
84 | this.comboFunction.DropDownWidth = 121;
85 | this.comboFunction.Font = new System.Drawing.Font("Roboto Medium", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);
86 | this.comboFunction.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
87 | this.comboFunction.FormattingEnabled = true;
88 | this.comboFunction.IntegralHeight = false;
89 | this.comboFunction.ItemHeight = 29;
90 | this.comboFunction.Items.AddRange(new object[] {
91 | "Category",
92 | "Hook: Button",
93 | "Hook: Button On/Off & Toggle",
94 | "Hook: Input",
95 | "Patch"});
96 | this.comboFunction.Location = new System.Drawing.Point(0, 0);
97 | this.comboFunction.MaxDropDownItems = 15;
98 | this.comboFunction.MouseState = MaterialSkin.MouseState.OUT;
99 | this.comboFunction.Name = "comboFunction";
100 | this.comboFunction.Size = new System.Drawing.Size(577, 35);
101 | this.comboFunction.StartIndex = 0;
102 | this.comboFunction.TabIndex = 13;
103 | this.comboFunction.UseTallSize = false;
104 | this.comboFunction.SelectedIndexChanged += new System.EventHandler(this.comboFunction_SelectedIndexChanged);
105 | //
106 | // materialCard2
107 | //
108 | this.materialCard2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
109 | this.materialCard2.Controls.Add(this.panelFunction);
110 | this.materialCard2.Depth = 0;
111 | this.materialCard2.Dock = System.Windows.Forms.DockStyle.Fill;
112 | this.materialCard2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
113 | this.materialCard2.Location = new System.Drawing.Point(0, 64);
114 | this.materialCard2.Margin = new System.Windows.Forms.Padding(14);
115 | this.materialCard2.MouseState = MaterialSkin.MouseState.HOVER;
116 | this.materialCard2.Name = "materialCard2";
117 | this.materialCard2.Padding = new System.Windows.Forms.Padding(14);
118 | this.materialCard2.Size = new System.Drawing.Size(799, 452);
119 | this.materialCard2.TabIndex = 4;
120 | //
121 | // panelFunction
122 | //
123 | this.panelFunction.Dock = System.Windows.Forms.DockStyle.Fill;
124 | this.panelFunction.Location = new System.Drawing.Point(14, 14);
125 | this.panelFunction.Name = "panelFunction";
126 | this.panelFunction.Size = new System.Drawing.Size(771, 424);
127 | this.panelFunction.TabIndex = 3;
128 | //
129 | // FrmAddFunction
130 | //
131 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
132 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
133 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(81)))), ((int)(((byte)(181)))));
134 | this.ClientSize = new System.Drawing.Size(799, 516);
135 | this.Controls.Add(this.materialCard2);
136 | this.Controls.Add(this.panel1);
137 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
138 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
139 | this.MaximizeBox = false;
140 | this.MinimizeBox = false;
141 | this.Name = "FrmAddFunction";
142 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
143 | this.Text = "Category";
144 | this.panel1.ResumeLayout(false);
145 | this.panel1.PerformLayout();
146 | this.panel2.ResumeLayout(false);
147 | this.materialCard2.ResumeLayout(false);
148 | this.ResumeLayout(false);
149 |
150 | }
151 |
152 | #endregion
153 | private System.Windows.Forms.Panel panelFunction;
154 | private MaterialSkin.Controls.MaterialCard materialCard2;
155 | private System.Windows.Forms.Label label14;
156 | private System.Windows.Forms.Panel panel1;
157 | private MaterialSkin.Controls.MaterialComboBox comboFunction;
158 | private System.Windows.Forms.Panel panel2;
159 | }
160 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/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 |
121 |
122 | ..\Resources\folder-7-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\moderator-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\tool-box-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\Resources\info-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
134 | ..\Resources\package-2-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
135 |
136 |
137 | ..\Resources\syringe-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
138 |
139 |
140 | ..\Resources\note-2-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
141 |
142 |
143 | ..\Resources\home-7-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
144 |
145 |
146 | ..\Resources\save-24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
147 |
148 |
149 | ..\Resources\github.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
150 |
151 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlCategory.Designer.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Tools_Injector_Mod_Menu
3 | {
4 | partial class CtrlCategory
5 | {
6 | ///
7 | /// Required designer variable.
8 | ///
9 | private System.ComponentModel.IContainer components = null;
10 |
11 | ///
12 | /// Clean up any resources being used.
13 | ///
14 | /// true if managed resources should be disposed; otherwise, false.
15 | protected override void Dispose(bool disposing)
16 | {
17 | if (disposing && (components != null))
18 | {
19 | components.Dispose();
20 | }
21 | base.Dispose(disposing);
22 | }
23 |
24 | #region Component Designer generated code
25 |
26 | ///
27 | /// Required method for Designer support - do not modify
28 | /// the contents of this method with the code editor.
29 | ///
30 | private void InitializeComponent()
31 | {
32 | this.materialCard1 = new MaterialSkin.Controls.MaterialCard();
33 | this.groupBox1 = new System.Windows.Forms.GroupBox();
34 | this.txtNameCheat = new MaterialSkin.Controls.MaterialTextBox();
35 | this.label1 = new System.Windows.Forms.Label();
36 | this.txtCategory = new MaterialSkin.Controls.MaterialTextBox();
37 | this.label16 = new System.Windows.Forms.Label();
38 | this.btnSave = new MaterialSkin.Controls.MaterialButton();
39 | this.materialCard1.SuspendLayout();
40 | this.groupBox1.SuspendLayout();
41 | this.SuspendLayout();
42 | //
43 | // materialCard1
44 | //
45 | this.materialCard1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
46 | this.materialCard1.Controls.Add(this.groupBox1);
47 | this.materialCard1.Controls.Add(this.btnSave);
48 | this.materialCard1.Depth = 0;
49 | this.materialCard1.Dock = System.Windows.Forms.DockStyle.Fill;
50 | this.materialCard1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
51 | this.materialCard1.Location = new System.Drawing.Point(0, 0);
52 | this.materialCard1.Margin = new System.Windows.Forms.Padding(14);
53 | this.materialCard1.MouseState = MaterialSkin.MouseState.HOVER;
54 | this.materialCard1.Name = "materialCard1";
55 | this.materialCard1.Size = new System.Drawing.Size(771, 424);
56 | this.materialCard1.TabIndex = 0;
57 | //
58 | // groupBox1
59 | //
60 | this.groupBox1.Controls.Add(this.txtNameCheat);
61 | this.groupBox1.Controls.Add(this.label1);
62 | this.groupBox1.Controls.Add(this.txtCategory);
63 | this.groupBox1.Controls.Add(this.label16);
64 | this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
65 | this.groupBox1.Font = new System.Drawing.Font("Roboto", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
66 | this.groupBox1.Location = new System.Drawing.Point(0, 0);
67 | this.groupBox1.Name = "groupBox1";
68 | this.groupBox1.Size = new System.Drawing.Size(771, 388);
69 | this.groupBox1.TabIndex = 3;
70 | this.groupBox1.TabStop = false;
71 | this.groupBox1.Text = "Main Settings";
72 | //
73 | // txtNameCheat
74 | //
75 | this.txtNameCheat.BorderStyle = System.Windows.Forms.BorderStyle.None;
76 | this.txtNameCheat.Depth = 0;
77 | this.txtNameCheat.Font = new System.Drawing.Font("Roboto", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
78 | this.txtNameCheat.LeadingIcon = null;
79 | this.txtNameCheat.Location = new System.Drawing.Point(107, 25);
80 | this.txtNameCheat.MaxLength = 50;
81 | this.txtNameCheat.MouseState = MaterialSkin.MouseState.OUT;
82 | this.txtNameCheat.Multiline = false;
83 | this.txtNameCheat.Name = "txtNameCheat";
84 | this.txtNameCheat.Size = new System.Drawing.Size(292, 36);
85 | this.txtNameCheat.TabIndex = 17;
86 | this.txtNameCheat.Text = "";
87 | this.txtNameCheat.TrailingIcon = null;
88 | this.txtNameCheat.UseTallSize = false;
89 | //
90 | // label1
91 | //
92 | this.label1.AutoSize = true;
93 | this.label1.Location = new System.Drawing.Point(6, 34);
94 | this.label1.Name = "label1";
95 | this.label1.Size = new System.Drawing.Size(95, 18);
96 | this.label1.TabIndex = 16;
97 | this.label1.Text = "Name Cheat:";
98 | //
99 | // txtCategory
100 | //
101 | this.txtCategory.BorderStyle = System.Windows.Forms.BorderStyle.None;
102 | this.txtCategory.Depth = 0;
103 | this.txtCategory.Font = new System.Drawing.Font("Roboto", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
104 | this.txtCategory.LeadingIcon = null;
105 | this.txtCategory.Location = new System.Drawing.Point(107, 67);
106 | this.txtCategory.MaxLength = 50;
107 | this.txtCategory.MouseState = MaterialSkin.MouseState.OUT;
108 | this.txtCategory.Multiline = false;
109 | this.txtCategory.Name = "txtCategory";
110 | this.txtCategory.Size = new System.Drawing.Size(658, 36);
111 | this.txtCategory.TabIndex = 15;
112 | this.txtCategory.Text = "";
113 | this.txtCategory.TrailingIcon = null;
114 | this.txtCategory.UseTallSize = false;
115 | //
116 | // label16
117 | //
118 | this.label16.AutoSize = true;
119 | this.label16.Location = new System.Drawing.Point(21, 76);
120 | this.label16.Name = "label16";
121 | this.label16.Size = new System.Drawing.Size(80, 18);
122 | this.label16.TabIndex = 14;
123 | this.label16.Text = "Cagtegory:";
124 | //
125 | // btnSave
126 | //
127 | this.btnSave.AccentTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(64)))), ((int)(((byte)(129)))));
128 | this.btnSave.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
129 | this.btnSave.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
130 | this.btnSave.Depth = 0;
131 | this.btnSave.Dock = System.Windows.Forms.DockStyle.Bottom;
132 | this.btnSave.HighEmphasis = true;
133 | this.btnSave.Icon = null;
134 | this.btnSave.Location = new System.Drawing.Point(0, 388);
135 | this.btnSave.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
136 | this.btnSave.MouseState = MaterialSkin.MouseState.HOVER;
137 | this.btnSave.Name = "btnSave";
138 | this.btnSave.NoAccentTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(81)))), ((int)(((byte)(181)))));
139 | this.btnSave.Size = new System.Drawing.Size(771, 36);
140 | this.btnSave.TabIndex = 0;
141 | this.btnSave.Text = "Save";
142 | this.btnSave.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
143 | this.btnSave.UseAccentColor = false;
144 | this.btnSave.UseVisualStyleBackColor = true;
145 | this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
146 | //
147 | // CtrlCategory
148 | //
149 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
150 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
151 | this.Controls.Add(this.materialCard1);
152 | this.Name = "CtrlCategory";
153 | this.Size = new System.Drawing.Size(771, 424);
154 | this.materialCard1.ResumeLayout(false);
155 | this.materialCard1.PerformLayout();
156 | this.groupBox1.ResumeLayout(false);
157 | this.groupBox1.PerformLayout();
158 | this.ResumeLayout(false);
159 |
160 | }
161 |
162 | #endregion
163 |
164 | private MaterialSkin.Controls.MaterialCard materialCard1;
165 | private MaterialSkin.Controls.MaterialButton btnSave;
166 | private System.Windows.Forms.GroupBox groupBox1;
167 | private System.Windows.Forms.Label label16;
168 | private MaterialSkin.Controls.MaterialTextBox txtCategory;
169 | private MaterialSkin.Controls.MaterialTextBox txtNameCheat;
170 | private System.Windows.Forms.Label label1;
171 | }
172 | }
173 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Form/FrmImageText.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace Tools_Injector_Mod_Menu
2 | {
3 | partial class FrmImageText
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.txtImg = new System.Windows.Forms.RichTextBox();
32 | this.materialCard1 = new MaterialSkin.Controls.MaterialCard();
33 | this.lbImgCompress = new System.Windows.Forms.LinkLabel();
34 | this.lbImageEncoder = new System.Windows.Forms.LinkLabel();
35 | this.btnClose = new MaterialSkin.Controls.MaterialButton();
36 | this.btnSave = new MaterialSkin.Controls.MaterialButton();
37 | this.materialCard1.SuspendLayout();
38 | this.SuspendLayout();
39 | //
40 | // txtImg
41 | //
42 | this.txtImg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
43 | this.txtImg.Dock = System.Windows.Forms.DockStyle.Top;
44 | this.txtImg.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
45 | this.txtImg.Location = new System.Drawing.Point(14, 14);
46 | this.txtImg.Name = "txtImg";
47 | this.txtImg.Size = new System.Drawing.Size(506, 438);
48 | this.txtImg.TabIndex = 18;
49 | this.txtImg.Text = "";
50 | //
51 | // materialCard1
52 | //
53 | this.materialCard1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
54 | this.materialCard1.Controls.Add(this.lbImgCompress);
55 | this.materialCard1.Controls.Add(this.lbImageEncoder);
56 | this.materialCard1.Controls.Add(this.btnClose);
57 | this.materialCard1.Controls.Add(this.btnSave);
58 | this.materialCard1.Controls.Add(this.txtImg);
59 | this.materialCard1.Depth = 0;
60 | this.materialCard1.Dock = System.Windows.Forms.DockStyle.Fill;
61 | this.materialCard1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
62 | this.materialCard1.Location = new System.Drawing.Point(0, 0);
63 | this.materialCard1.Margin = new System.Windows.Forms.Padding(14);
64 | this.materialCard1.MouseState = MaterialSkin.MouseState.HOVER;
65 | this.materialCard1.Name = "materialCard1";
66 | this.materialCard1.Padding = new System.Windows.Forms.Padding(14);
67 | this.materialCard1.Size = new System.Drawing.Size(534, 511);
68 | this.materialCard1.TabIndex = 19;
69 | //
70 | // lbImgCompress
71 | //
72 | this.lbImgCompress.AutoSize = true;
73 | this.lbImgCompress.Location = new System.Drawing.Point(69, 472);
74 | this.lbImgCompress.Name = "lbImgCompress";
75 | this.lbImgCompress.Size = new System.Drawing.Size(79, 13);
76 | this.lbImgCompress.TabIndex = 22;
77 | this.lbImgCompress.TabStop = true;
78 | this.lbImgCompress.Text = "Compress PNG";
79 | this.lbImgCompress.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lbImgCompress_LinkClicked);
80 | //
81 | // lbImageEncoder
82 | //
83 | this.lbImageEncoder.AutoSize = true;
84 | this.lbImageEncoder.Location = new System.Drawing.Point(154, 472);
85 | this.lbImageEncoder.Name = "lbImageEncoder";
86 | this.lbImageEncoder.Size = new System.Drawing.Size(79, 13);
87 | this.lbImageEncoder.TabIndex = 21;
88 | this.lbImageEncoder.TabStop = true;
89 | this.lbImageEncoder.Text = "Image Encoder";
90 | this.lbImageEncoder.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lbImageEncoder_LinkClicked);
91 | //
92 | // btnClose
93 | //
94 | this.btnClose.AccentTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(64)))), ((int)(((byte)(129)))));
95 | this.btnClose.AutoSize = false;
96 | this.btnClose.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
97 | this.btnClose.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
98 | this.btnClose.Depth = 0;
99 | this.btnClose.HighEmphasis = true;
100 | this.btnClose.Icon = null;
101 | this.btnClose.Location = new System.Drawing.Point(421, 461);
102 | this.btnClose.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
103 | this.btnClose.MouseState = MaterialSkin.MouseState.HOVER;
104 | this.btnClose.Name = "btnClose";
105 | this.btnClose.NoAccentTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(81)))), ((int)(((byte)(181)))));
106 | this.btnClose.Size = new System.Drawing.Size(100, 35);
107 | this.btnClose.TabIndex = 20;
108 | this.btnClose.Text = "Cancel";
109 | this.btnClose.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
110 | this.btnClose.UseAccentColor = false;
111 | this.btnClose.UseVisualStyleBackColor = true;
112 | this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
113 | //
114 | // btnSave
115 | //
116 | this.btnSave.AccentTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(64)))), ((int)(((byte)(129)))));
117 | this.btnSave.AutoSize = false;
118 | this.btnSave.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
119 | this.btnSave.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
120 | this.btnSave.Depth = 0;
121 | this.btnSave.HighEmphasis = true;
122 | this.btnSave.Icon = null;
123 | this.btnSave.Location = new System.Drawing.Point(313, 461);
124 | this.btnSave.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
125 | this.btnSave.MouseState = MaterialSkin.MouseState.HOVER;
126 | this.btnSave.Name = "btnSave";
127 | this.btnSave.NoAccentTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(81)))), ((int)(((byte)(181)))));
128 | this.btnSave.Size = new System.Drawing.Size(100, 35);
129 | this.btnSave.TabIndex = 19;
130 | this.btnSave.Text = "Save";
131 | this.btnSave.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
132 | this.btnSave.UseAccentColor = false;
133 | this.btnSave.UseVisualStyleBackColor = true;
134 | this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
135 | //
136 | // FrmImageText
137 | //
138 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
139 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
140 | this.ClientSize = new System.Drawing.Size(534, 511);
141 | this.Controls.Add(this.materialCard1);
142 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
143 | this.Name = "FrmImageText";
144 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
145 | this.Text = "Image Code";
146 | this.TopMost = true;
147 | this.Load += new System.EventHandler(this.FrmImageText_Load);
148 | this.materialCard1.ResumeLayout(false);
149 | this.materialCard1.PerformLayout();
150 | this.ResumeLayout(false);
151 |
152 | }
153 |
154 | #endregion
155 |
156 | private System.Windows.Forms.RichTextBox txtImg;
157 | private MaterialSkin.Controls.MaterialCard materialCard1;
158 | private MaterialSkin.Controls.MaterialButton btnClose;
159 | private MaterialSkin.Controls.MaterialButton btnSave;
160 | private System.Windows.Forms.LinkLabel lbImageEncoder;
161 | private System.Windows.Forms.LinkLabel lbImgCompress;
162 | }
163 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlPatch.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows.Forms;
4 | using Tools_Injector_Mod_Menu.Patch_Manager;
5 |
6 | namespace Tools_Injector_Mod_Menu
7 | {
8 | public partial class CtrlPatch : UserControl
9 | {
10 | private readonly int _index;
11 | private Enums.FunctionType _type;
12 | private readonly FrmAddFunction _frmAddFunction;
13 |
14 | public CtrlPatch(FrmAddFunction frmAdd, int index = 1150)
15 | {
16 | InitializeComponent();
17 | _index = index;
18 | _frmAddFunction = frmAdd;
19 | _frmAddFunction.Text = PatchName();
20 | if (_index != 1150)
21 | {
22 | AddListValues();
23 | }
24 | else
25 | {
26 | btnSave.Text = "Add Function";
27 | }
28 | }
29 |
30 | private void AddListValues()
31 | {
32 | _type = OffsetPatch.FunctionList[_index].FunctionType;
33 | switch (_type)
34 | {
35 | case Enums.FunctionType.PatchButtonOnOff:
36 | radButtonOnOff.Checked = true;
37 | break;
38 |
39 | case Enums.FunctionType.PatchLabel:
40 | radLabel.Checked = true;
41 | break;
42 |
43 | case Enums.FunctionType.PatchToggle:
44 | radToggle.Checked = true;
45 | break;
46 | }
47 |
48 | txtNameCheat.Text = OffsetPatch.FunctionList[_index].CheatName;
49 |
50 | foreach (var offset in OffsetPatch.FunctionList[_index].OffsetList)
51 | {
52 | dataList.Rows.Add(offset.Name, offset.Offset, offset.Hex);
53 | }
54 | }
55 |
56 | private void btnSave_Click(object sender, EventArgs e)
57 | {
58 | try
59 | {
60 | var offsetList = new List();
61 |
62 | if (dataList.IsEmpty()) return;
63 | if (txtNameCheat.IsEmpty("Name Cheat")) return;
64 |
65 | for (var i = 0; i < dataList.Rows.Count; i++)
66 | {
67 | var name = dataList.Rows[i].Cells[0].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[0].Value.ToString();
68 | var offset = dataList.Rows[i].Cells[1].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[1].Value.ToString();
69 | var hex = dataList.Rows[i].Cells[2].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[2].Value.ToString();
70 |
71 | if (offset.IsEmpty(i + 1, "Offset"))
72 | {
73 | return;
74 | }
75 |
76 | if (hex.IsEmpty(i + 1, "Hex"))
77 | {
78 | return;
79 | }
80 |
81 | if (!offset.StartsWith("0x"))
82 | {
83 | MyMessage.MsgShowWarning(@$"Offset At {i + 1}, does not start with ""0x"" Please check it again!!!");
84 | return;
85 | }
86 |
87 | hex = dataList.Rows[i].Cells[2].Value.ToString().InsertSpaces();
88 |
89 | var offsetInfo = new OffsetInfo
90 | {
91 | OffsetId = i,
92 | Offset = offset,
93 | Hex = hex,
94 | HookInfo = OffsetPatch.HookValue(),
95 | Name = name,
96 | Method = new List<(string, string)> { (null, null) }
97 | };
98 | offsetList.Add(offsetInfo);
99 | }
100 | var functionType = GetFunctionType();
101 | if (_index == 1150)
102 | {
103 | if (txtNameCheat.Text.IsDuplicateName(OffsetPatch.FunctionList))
104 | {
105 | return;
106 | }
107 | OffsetPatch.OffsetList = offsetList;
108 | OffsetPatch.AddFunction(txtNameCheat.Text, functionType);
109 | OffsetPatch.OffsetList.Clear();
110 | }
111 | else
112 | {
113 | var result = MyMessage.MsgYesNoCancel("Do you want to save?\n\n" +
114 | "Click \"OK\" to confirm.\n\n" +
115 | "Click \"Cancel\" to cancel.");
116 | switch (result)
117 | {
118 | case DialogResult.Cancel:
119 | return;
120 |
121 | case DialogResult.No:
122 | Values.Save = false;
123 | Dispose();
124 | _frmAddFunction.Dispose();
125 | break;
126 | }
127 |
128 | OffsetPatch.FunctionList[_index] = new FunctionList
129 | {
130 | CheatName = txtNameCheat.Text,
131 | FunctionType = functionType,
132 | OffsetList = offsetList,
133 | FunctionExtra = null,
134 | MultipleValue = false
135 | };
136 | }
137 |
138 | Values.Save = true;
139 | Dispose();
140 | _frmAddFunction.Dispose();
141 | }
142 | catch (Exception exception)
143 | {
144 | MyMessage.MsgShowError("Error" + exception.Message);
145 | }
146 | }
147 |
148 | #region Data List
149 |
150 | private void dataList_KeyDown(object sender, KeyEventArgs e)
151 | {
152 | if (e.KeyCode == Keys.Delete)
153 | {
154 | RemoveRows();
155 | }
156 |
157 | if (e.KeyCode == Keys.V && e.Control)
158 | {
159 | if (dataList.GetCellCount(DataGridViewElementStates.Selected) > 0 && !dataList.CurrentCell.ReadOnly)
160 | {
161 | dataList.CurrentCell.Value = Clipboard.GetText();
162 | }
163 | }
164 | }
165 |
166 | private void dataList_MouseDown(object sender, MouseEventArgs e)
167 | {
168 | if (e.Button == MouseButtons.Right)
169 | {
170 | try
171 | {
172 | var hti = dataList.HitTest(e.X, e.Y);
173 | dataList.ClearSelection();
174 | dataList.Rows[hti.RowIndex].Selected = true;
175 | }
176 | catch
177 | {
178 | //
179 | }
180 | }
181 |
182 | if (dataList.SelectedRows.Count > 0)
183 | {
184 | addToolStripMenuItem.Enabled = false;
185 | removeToolStripMenuItem.Enabled = true;
186 | }
187 | else
188 | {
189 | addToolStripMenuItem.Enabled = true;
190 | removeToolStripMenuItem.Enabled = false;
191 | }
192 | }
193 |
194 | private void RemoveRows()
195 | {
196 | try
197 | {
198 | if (dataList.RowCount <= 1 || dataList.CurrentCell.RowIndex == dataList.RowCount - 1) return;
199 | dataList.Rows.RemoveAt(dataList.SelectedCells[0].RowIndex);
200 | dataList.ClearSelection();
201 | }
202 | catch
203 | {
204 | //
205 | }
206 | }
207 |
208 | #endregion Data List
209 |
210 | #region ToolStripMenuItem
211 |
212 | private void removeToolStripMenuItem_Click(object sender, EventArgs e)
213 | {
214 | try
215 | {
216 | var rowToDelete = dataList.Rows.GetFirstRow(DataGridViewElementStates.Selected);
217 | dataList.Rows.RemoveAt(rowToDelete);
218 | dataList.ClearSelection();
219 | }
220 | catch
221 | {
222 | //
223 | }
224 | }
225 |
226 | private void addToolStripMenuItem_Click(object sender, EventArgs e)
227 | {
228 | dataList.Rows.Add(null, null, null);
229 | }
230 |
231 | #endregion ToolStripMenuItem
232 |
233 | private void rad_CheckedChanged(object sender, EventArgs e)
234 | {
235 | _frmAddFunction.Text = PatchName();
236 | }
237 |
238 | private string PatchName()
239 | {
240 | return radButtonOnOff.Checked ? "Patch: Button On/Off" :
241 | radLabel.Checked ? "Patch: Label" :
242 | radToggle.Checked ? "Patch: Toggle" :
243 | null;
244 | }
245 |
246 | private Enums.FunctionType GetFunctionType()
247 | {
248 | return radButtonOnOff.Checked ? Enums.FunctionType.PatchButtonOnOff :
249 | radLabel.Checked ? Enums.FunctionType.PatchLabel :
250 | radToggle.Checked ? Enums.FunctionType.PatchToggle :
251 | Enums.FunctionType.Empty;
252 | }
253 | }
254 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Tools Injector Mod Menu.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {DBC33172-02FF-407F-98A3-DC1A9289928A}
8 | WinExe
9 | Tools_Injector_Mod_Menu
10 | Tools Injector Mod Menu
11 | v4.8
12 | 512
13 | true
14 | true
15 | false
16 | publish\
17 | true
18 | Disk
19 | false
20 | Foreground
21 | 7
22 | Days
23 | false
24 | false
25 | true
26 | 0
27 | 1.0.0.%2a
28 | false
29 | true
30 |
31 |
32 | AnyCPU
33 | true
34 | full
35 | false
36 | bin\Debug\
37 | DEBUG;TRACE
38 | prompt
39 | 4
40 | latest
41 |
42 |
43 |
44 |
45 | AnyCPU
46 | pdbonly
47 | true
48 | bin\Release\
49 | TRACE
50 | prompt
51 | 4
52 | latest
53 |
54 |
55 | T5 - 32.ico
56 |
57 |
58 | app.manifest
59 |
60 |
61 | LocalIntranet
62 |
63 |
64 | false
65 |
66 |
67 | false
68 |
69 |
70 |
71 | ..\packages\Octokit.0.50.0\lib\net46\Octokit.dll
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | UserControl
94 |
95 |
96 | CtrlHookButton.cs
97 |
98 |
99 | UserControl
100 |
101 |
102 | CtrlHookInput.cs
103 |
104 |
105 | UserControl
106 |
107 |
108 | CtrlHook.cs
109 |
110 |
111 | UserControl
112 |
113 |
114 | CtrlCategory.cs
115 |
116 |
117 | Form
118 |
119 |
120 | FrmMain.cs
121 |
122 |
123 | Form
124 |
125 |
126 | FrmImageText.cs
127 |
128 |
129 | Form
130 |
131 |
132 | FrmAddFunction.cs
133 |
134 |
135 | UserControl
136 |
137 |
138 | CtrlPatch.cs
139 |
140 |
141 | Form
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 | CtrlHookButton.cs
160 |
161 |
162 | CtrlHookInput.cs
163 |
164 |
165 | CtrlHook.cs
166 |
167 |
168 | CtrlCategory.cs
169 |
170 |
171 | FrmMain.cs
172 |
173 |
174 | FrmImageText.cs
175 |
176 |
177 | FrmAddFunction.cs
178 |
179 |
180 | ResXFileCodeGenerator
181 | Resources.Designer.cs
182 | Designer
183 |
184 |
185 | True
186 | Resources.resx
187 | True
188 |
189 |
190 | CtrlPatch.cs
191 |
192 |
193 |
194 |
195 | SettingsSingleFileGenerator
196 | Settings.Designer.cs
197 |
198 |
199 | True
200 | Settings.settings
201 | True
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 | {8eb7611b-68cd-4b8b-987a-11717e2b250c}
224 | MaterialSkin
225 |
226 |
227 | {e1f5aeb2-7cfd-40c6-9a97-ada7e13f1d0c}
228 | ModernFolderBrowserDialog
229 |
230 |
231 |
232 |
233 | False
234 | Microsoft .NET Framework 4.8 %28x86 and x64%29
235 | true
236 |
237 |
238 | False
239 | .NET Framework 3.5 SP1
240 | false
241 |
242 |
243 |
244 |
245 |
246 |
247 |
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlHookButton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Globalization;
4 | using System.Linq;
5 | using System.Windows.Forms;
6 | using Tools_Injector_Mod_Menu.Patch_Manager;
7 |
8 | namespace Tools_Injector_Mod_Menu
9 | {
10 | public partial class CtrlHookButton : UserControl
11 | {
12 | private readonly int _index;
13 | private Enums.FunctionType _type;
14 | private readonly FrmAddFunction _frmAddFunction;
15 |
16 | public CtrlHookButton(FrmAddFunction frmAdd, int index = 1150)
17 | {
18 | InitializeComponent();
19 | _index = index;
20 | _frmAddFunction = frmAdd;
21 | _frmAddFunction.Text = HookName();
22 | if (_index != 1150)
23 | {
24 | AddListValues();
25 | }
26 | else
27 | {
28 | btnSave.Text = "Add Function";
29 | }
30 | }
31 |
32 | private void AddListValues()
33 | {
34 | var num = OffsetPatch.FunctionList[_index].FunctionExtra;
35 | _type = OffsetPatch.FunctionList[_index].FunctionType;
36 | switch (_type)
37 | {
38 | case Enums.FunctionType.HookButton:
39 | radButton.Checked = true;
40 | break;
41 |
42 | case Enums.FunctionType.HookInputButton:
43 | numMax.Value = Convert.ToDecimal(num);
44 | radInput.Checked = true;
45 | break;
46 | }
47 |
48 | txtNameCheat.Text = OffsetPatch.FunctionList[_index].CheatName;
49 |
50 | foreach (var offset in OffsetPatch.FunctionList[_index].OffsetList)
51 | {
52 | var type = "";
53 | var values = "";
54 | for (var i = 0; i < offset.Method.Count; i++)
55 | {
56 | type += $"{offset.Method[i].Item1}, ";
57 | values += $"{offset.Method[i].Item2}, ";
58 | }
59 | type = type.Remove(type.Length - 2);
60 | values = values.Remove(values.Length - 2);
61 | dataList.Rows.Add(offset.Name, offset.Offset, offset.HookInfo.FieldInfo.Offset, type, values);
62 | }
63 | }
64 |
65 | private void btnSave_Click(object sender, EventArgs e)
66 | {
67 | try
68 | {
69 | var offsetList = new List();
70 |
71 | if (dataList.IsEmpty()) return;
72 | if (txtNameCheat.IsEmpty("Name Cheat")) return;
73 |
74 | for (var i = 0; i < dataList.Rows.Count; i++)
75 | {
76 | var name = dataList.Rows[i].Cells[0].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[0].Value.ToString();
77 | var updateOffset = dataList.Rows[i].Cells[1].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[1].Value.ToString();
78 | var offset = dataList.Rows[i].Cells[2].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[2].Value.ToString();
79 | var type = dataList.Rows[i].Cells[3].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[3].Value.ToString();
80 | var values = dataList.Rows[i].Cells[4].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[4].Value.ToString();
81 |
82 | if (!offset.StartsWith("0x") || !updateOffset.StartsWith("0x"))
83 | {
84 | MyMessage.MsgShowWarning(@$"Offset At {i + 1}, does not start with ""0x"" Please check it again!!!");
85 | return;
86 | }
87 |
88 | if (!type.IsEmpty(i + 1, "Type", false) && values.IsEmpty(i + 1, "Values"))
89 | {
90 | return;
91 | }
92 |
93 | if (radInput.Checked && !values.Contains("value"))
94 | {
95 | MyMessage.MsgShowWarning(@$"Values At {i + 1}, does not contains ""value"" for input value. Please check it again!!!");
96 | return;
97 | }
98 |
99 | var typeList = type.RemoveMiniSpecialCharacters().Split(',');
100 | var valueList = values.RemoveMiniSpecialCharacters().Split(',');
101 | if (typeList.Length != valueList.Length)
102 | {
103 | MyMessage.MsgShowWarning($"Type At {i + 1}, does not equal Values At {i + 1}. Please check it again!!!");
104 | return;
105 | }
106 |
107 | var method = typeList.Select((t, j) => (t, valueList[j])).ToList();
108 |
109 | var fieldInfo = new FieldInfo
110 | {
111 | Type = Enums.Type.Empty,
112 | Offset = offset
113 | };
114 | var hookInfo = new HookInfo
115 | {
116 | Type = Enums.Type.Empty,
117 | Value = null,
118 | Links = null,
119 | FieldInfo = fieldInfo
120 | };
121 |
122 | var offsetInfo = new OffsetInfo
123 | {
124 | OffsetId = i,
125 | Offset = updateOffset,
126 | Hex = null,
127 | HookInfo = hookInfo,
128 | Name = name,
129 | Method = method
130 | };
131 | offsetList.Add(offsetInfo);
132 | }
133 |
134 | var functionType = GetFunctionType();
135 | var functionExtra = numMax.Value.ToString(CultureInfo.InvariantCulture);
136 | if (_index == 1150)
137 | {
138 | if (txtNameCheat.Text.IsDuplicateName(OffsetPatch.FunctionList))
139 | {
140 | return;
141 | }
142 | OffsetPatch.OffsetList = offsetList;
143 | OffsetPatch.AddFunction(txtNameCheat.Text, functionType, functionExtra);
144 | OffsetPatch.OffsetList.Clear();
145 | }
146 | else
147 | {
148 | var result = MyMessage.MsgYesNoCancel("Do you want to save?\n\n" +
149 | "Click \"OK\" to confirm.\n\n" +
150 | "Click \"Cancel\" to cancel.");
151 | switch (result)
152 | {
153 | case DialogResult.Cancel:
154 | return;
155 |
156 | case DialogResult.No:
157 | Values.Save = false;
158 | Dispose();
159 | _frmAddFunction.Dispose();
160 | break;
161 | }
162 |
163 | OffsetPatch.FunctionList[_index] = new FunctionList
164 | {
165 | CheatName = txtNameCheat.Text,
166 | FunctionType = functionType,
167 | OffsetList = offsetList,
168 | FunctionExtra = functionExtra,
169 | MultipleValue = false
170 | };
171 | }
172 |
173 | Values.Save = true;
174 | Dispose();
175 | _frmAddFunction.Dispose();
176 | }
177 | catch (Exception exception)
178 | {
179 | MyMessage.MsgShowError("Error" + exception.Message);
180 | }
181 | }
182 |
183 | #region Data List
184 |
185 | private void dataList_KeyDown(object sender, KeyEventArgs e)
186 | {
187 | if (e.KeyCode == Keys.Delete)
188 | {
189 | RemoveRows();
190 | }
191 |
192 | if (e.KeyCode == Keys.V && e.Control)
193 | {
194 | if (dataList.GetCellCount(DataGridViewElementStates.Selected) > 0 && !dataList.CurrentCell.ReadOnly)
195 | {
196 | dataList.CurrentCell.Value = Clipboard.GetText();
197 | }
198 | }
199 | }
200 |
201 | private void dataList_MouseDown(object sender, MouseEventArgs e)
202 | {
203 | if (e.Button == MouseButtons.Right)
204 | {
205 | try
206 | {
207 | var hti = dataList.HitTest(e.X, e.Y);
208 | dataList.ClearSelection();
209 | dataList.Rows[hti.RowIndex].Selected = true;
210 | }
211 | catch
212 | {
213 | //
214 | }
215 | }
216 |
217 | if (dataList.SelectedRows.Count > 0)
218 | {
219 | addToolStripMenuItem.Enabled = false;
220 | removeToolStripMenuItem.Enabled = true;
221 | }
222 | else
223 | {
224 | addToolStripMenuItem.Enabled = true;
225 | removeToolStripMenuItem.Enabled = false;
226 | }
227 | }
228 |
229 | private void RemoveRows()
230 | {
231 | try
232 | {
233 | if (dataList.RowCount <= 1 || dataList.CurrentCell.RowIndex == dataList.RowCount - 1) return;
234 | dataList.Rows.RemoveAt(dataList.SelectedCells[0].RowIndex);
235 | dataList.ClearSelection();
236 | }
237 | catch
238 | {
239 | //
240 | }
241 | }
242 |
243 | #endregion Data List
244 |
245 | #region ToolStripMenuItem
246 |
247 | private void removeToolStripMenuItem_Click(object sender, EventArgs e)
248 | {
249 | try
250 | {
251 | var rowToDelete = dataList.Rows.GetFirstRow(DataGridViewElementStates.Selected);
252 | dataList.Rows.RemoveAt(rowToDelete);
253 | dataList.ClearSelection();
254 | }
255 | catch
256 | {
257 | //
258 | }
259 | }
260 |
261 | private void addToolStripMenuItem_Click(object sender, EventArgs e)
262 | {
263 | dataList.Rows.Add(null, null, null, null);
264 | }
265 |
266 | #endregion ToolStripMenuItem
267 |
268 | private void rad_CheckedChanged(object sender, EventArgs e)
269 | {
270 | _frmAddFunction.Text = HookName();
271 | numMax.Enabled = radInput.Checked;
272 | }
273 |
274 | private string HookName()
275 | {
276 | return radButton.Checked ? "Hook: Button" :
277 | radInput.Checked ? "Hook: Input Button" :
278 | null;
279 | }
280 |
281 | private Enums.FunctionType GetFunctionType()
282 | {
283 | return radButton.Checked ? Enums.FunctionType.HookButton :
284 | radInput.Checked ? Enums.FunctionType.HookInputButton :
285 | Enums.FunctionType.Empty;
286 | }
287 | }
288 | }
--------------------------------------------------------------------------------
/Tools Injector Mod Menu/Control/CtrlHook.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Windows.Forms;
5 | using Tools_Injector_Mod_Menu.Patch_Manager;
6 |
7 | namespace Tools_Injector_Mod_Menu
8 | {
9 | public partial class CtrlHook : UserControl
10 | {
11 | private readonly int _index;
12 | private Enums.FunctionType _type;
13 | private readonly FrmAddFunction _frmAddFunction;
14 |
15 | public CtrlHook(FrmAddFunction frmAdd, int index = 1150)
16 | {
17 | InitializeComponent();
18 | _index = index;
19 | _frmAddFunction = frmAdd;
20 | _frmAddFunction.Text = HookName();
21 | if (_index != 1150)
22 | {
23 | AddListValues();
24 | }
25 | else
26 | {
27 | btnSave.Text = "Add Function";
28 | }
29 | }
30 |
31 | private void AddListValues()
32 | {
33 | _type = OffsetPatch.FunctionList[_index].FunctionType;
34 | switch (_type)
35 | {
36 | case Enums.FunctionType.HookButtonOnOf:
37 | radButtonOnOff.Checked = true;
38 | break;
39 |
40 | case Enums.FunctionType.HookToggle:
41 | radToggle.Checked = true;
42 | break;
43 | }
44 |
45 | txtNameCheat.Text = OffsetPatch.FunctionList[_index].CheatName;
46 |
47 | foreach (var offset in OffsetPatch.FunctionList[_index].OffsetList)
48 | {
49 | dataList.Rows.Add(offset.Name, offset.Offset, offset.HookInfo.Type.TypeToString(true), offset.HookInfo.FieldInfo.Type.TypeToString(true), offset.HookInfo.FieldInfo.Offset, offset.HookInfo.Value, offset.HookInfo.Links);
50 | }
51 |
52 | LoadDataList();
53 | }
54 |
55 | private void btnSave_Click(object sender, EventArgs e)
56 | {
57 | try
58 | {
59 | var offsetList = new List();
60 |
61 | if (dataList.IsEmpty()) return;
62 | if (txtNameCheat.IsEmpty("Name Cheat")) return;
63 |
64 | for (var i = 0; i < dataList.Rows.Count; i++)
65 | {
66 | var name = dataList.Rows[i].Cells[0].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[0].Value.ToString();
67 | var offset = dataList.Rows[i].Cells[1].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[1].Value.ToString();
68 | var type = dataList.Rows[i].Cells[2].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[2].Value.ToString();
69 | var fieldType = dataList.Rows[i].Cells[3].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[3].Value.ToString();
70 | var fieldOffset = dataList.Rows[i].Cells[4].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[4].Value.ToString();
71 | var value = dataList.Rows[i].Cells[5].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[5].Value.ToString();
72 | var links = dataList.Rows[i].Cells[6].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[6].Value.ToString();
73 |
74 | FieldInfo fieldInfo;
75 |
76 | if (!offset.StartsWith("0x"))
77 | {
78 | MyMessage.MsgShowWarning(@$"Offset At {i + 1}, does not start with ""0x"" Please check it again!!!");
79 | return;
80 | }
81 |
82 | switch (type)
83 | {
84 | case "void" when fieldType.IsEmpty(i + 1, "Field Type"):
85 | case "void" when fieldOffset.IsEmpty(i + 1, "Field Offset"):
86 | return;
87 |
88 | case "void" when !fieldOffset.StartsWith("0x"):
89 | MyMessage.MsgShowWarning(@$"Field Offset At {i + 1}, does not start with ""0x"" Please check it again!!!");
90 | return;
91 |
92 | case "void" when fieldType is not ("bool" or "boolback") && value.IsEmpty(i + 1, "Value"):
93 | return;
94 |
95 | case "void":
96 | fieldInfo = new FieldInfo
97 | {
98 | Type = fieldType.StringToType(),
99 | Offset = fieldOffset
100 | };
101 | break;
102 |
103 | case "links" when fieldType.IsEmpty(i + 1, "Field Type"):
104 | case "links" when fieldType is not ("bool" or "boolback") && value.IsEmpty(i + 1, "Value"):
105 | case "links" when links.IsEmpty(i + 1, "Links"):
106 | return;
107 |
108 | case "links" when int.Parse(links) > dataList.RowCount || int.Parse(links) == i + 1:
109 | MyMessage.MsgShowWarning($"Links At {i + 1}, is invalid. Please check it again!!!");
110 | return;
111 |
112 | case "links":
113 | fieldInfo = new FieldInfo
114 | {
115 | Type = fieldType.StringToType(),
116 | Offset = fieldOffset
117 | };
118 | break;
119 |
120 | default:
121 | fieldInfo = OffsetPatch.FieldValue();
122 | break;
123 | }
124 |
125 | if (type is not ("bool" or "boolback") && type != "void" && type != "links" && value.IsEmpty(i + 1, "Value"))
126 | {
127 | return;
128 | }
129 |
130 | var hookInfo = new HookInfo
131 | {
132 | Type = type.StringToType(),
133 | Value = value,
134 | Links = links,
135 | FieldInfo = fieldInfo
136 | };
137 |
138 | var offsetInfo = new OffsetInfo
139 | {
140 | OffsetId = i,
141 | Offset = offset,
142 | Hex = null,
143 | HookInfo = hookInfo,
144 | Name = name,
145 | Method = new List<(string, string)> { (null, null) }
146 | };
147 | offsetList.Add(offsetInfo);
148 | }
149 |
150 | var functionType = GetFunctionType();
151 |
152 | if (_index == 1150)
153 | {
154 | if (txtNameCheat.Text.IsDuplicateName(OffsetPatch.FunctionList))
155 | {
156 | return;
157 | }
158 | OffsetPatch.OffsetList = offsetList;
159 | OffsetPatch.AddFunction(txtNameCheat.Text, functionType);
160 | OffsetPatch.OffsetList.Clear();
161 | }
162 | else
163 | {
164 | var result = MyMessage.MsgYesNoCancel("Do you want to save?\n\n" +
165 | "Click \"OK\" to confirm.\n\n" +
166 | "Click \"Cancel\" to cancel.");
167 | switch (result)
168 | {
169 | case DialogResult.Cancel:
170 | return;
171 |
172 | case DialogResult.No:
173 | Values.Save = false;
174 | Dispose();
175 | _frmAddFunction.Dispose();
176 | break;
177 | }
178 |
179 | OffsetPatch.FunctionList[_index] = new FunctionList
180 | {
181 | CheatName = txtNameCheat.Text,
182 | FunctionType = functionType,
183 | OffsetList = offsetList,
184 | FunctionExtra = null,
185 | MultipleValue = false
186 | };
187 | }
188 |
189 | Values.Save = true;
190 | Dispose();
191 | _frmAddFunction.Dispose();
192 | }
193 | catch (Exception exception)
194 | {
195 | MyMessage.MsgShowError("Error" + exception.Message);
196 | }
197 | }
198 |
199 | #region Data List
200 |
201 | private void LoadDataList()
202 | {
203 | for (var i = 0; i < dataList.RowCount; i++)
204 | {
205 | var typeValue = dataList.Rows[i].Cells[2].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[2].Value.ToString();
206 | var fieldTypeValue = dataList.Rows[i].Cells[3].Value.IsEmpty() ? "" : dataList.Rows[i].Cells[3].Value.ToString();
207 |
208 | var fieldType = dataList.Rows[i].Cells[3];
209 | var fieldOffset = dataList.Rows[i].Cells[4];
210 | var value = dataList.Rows[i].Cells[5];
211 | var links = dataList.Rows[i].Cells[6];
212 |
213 | if (typeValue == "void")
214 | {
215 | fieldType.ReadOnly = false;
216 | fieldOffset.ReadOnly = false;
217 | fieldOffset.Style.BackColor = Color.White;
218 | }
219 | else
220 | {
221 | fieldType.ReadOnly = true;
222 | fieldOffset.Style.BackColor = Color.Silver;
223 | fieldOffset.ReadOnly = true;
224 |
225 | if (typeValue == "links")
226 | {
227 | fieldType.ReadOnly = false;
228 | links.Style.BackColor = Color.White;
229 | links.ReadOnly = false;
230 | }
231 | else
232 | {
233 | fieldType.ReadOnly = true;
234 | links.Style.BackColor = Color.Silver;
235 | links.ReadOnly = true;
236 | }
237 | }
238 |
239 | if (typeValue == "bool" || fieldTypeValue == "bool" ||
240 | typeValue == "boolback" || fieldTypeValue == "boolback")
241 | {
242 | value.Value = "";
243 | value.Style.BackColor = Color.Silver;
244 | value.ReadOnly = true;
245 | }
246 | else
247 | {
248 | value.Style.BackColor = Color.White;
249 | value.ReadOnly = false;
250 | }
251 | }
252 | }
253 |
254 | private void dataList_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
255 | {
256 | if (e.Control is ComboBox cb)
257 | {
258 | cb.SelectedIndexChanged += SelectionChange;
259 | }
260 | }
261 |
262 | private void SelectionChange(object sender, EventArgs e)
263 | {
264 | try
265 | {
266 | var cb = (ComboBox)sender;
267 | if (dataList.CurrentRow == null) return;
268 |
269 | var type = dataList.CurrentRow.Cells[2];
270 | var fieldType = dataList.CurrentRow.Cells[3];
271 | var fieldOffset = dataList.CurrentRow.Cells[4];
272 | var value = dataList.CurrentRow.Cells[5];
273 | var links = dataList.CurrentRow.Cells[6];
274 |
275 | if (dataList.CurrentCell == type)
276 | {
277 | if (cb.Text is "bool" or "boolback")
278 | {
279 | value.Style.BackColor = Color.Silver;
280 | value.ReadOnly = true;
281 | }
282 | else
283 | {
284 | value.Style.BackColor = Color.White;
285 | value.ReadOnly = false;
286 |
287 | if (cb.Text == "void")
288 | {
289 | fieldType.ReadOnly = false;
290 | fieldOffset.ReadOnly = false;
291 | fieldOffset.Style.BackColor = Color.White;
292 | }
293 | else
294 | {
295 | fieldType.ReadOnly = true;
296 | fieldOffset.Style.BackColor = Color.Silver;
297 | fieldOffset.ReadOnly = true;
298 |
299 | if (cb.Text == "links")
300 | {
301 | fieldType.ReadOnly = false;
302 | links.Style.BackColor = Color.White;
303 | links.ReadOnly = false;
304 | }
305 | else
306 | {
307 | fieldType.ReadOnly = true;
308 | links.Style.BackColor = Color.Silver;
309 | links.ReadOnly = true;
310 | }
311 | }
312 | }
313 | }
314 |
315 | if (dataList.CurrentCell == fieldType && type.Value.ToString() == "links" ||
316 | type.Value.ToString() == "void")
317 | {
318 | if (cb.Text is "bool" or "boolback")
319 | {
320 | value.Value = "";
321 | value.Style.BackColor = Color.Silver;
322 | value.ReadOnly = true;
323 | }
324 | else
325 | {
326 | value.Style.BackColor = Color.White;
327 | value.ReadOnly = false;
328 | }
329 | }
330 | }
331 | catch
332 | {
333 | //
334 | }
335 | }
336 |
337 | private void dataList_KeyDown(object sender, KeyEventArgs e)
338 | {
339 | if (e.KeyCode == Keys.Delete)
340 | {
341 | RemoveRows();
342 | }
343 |
344 | if (e.KeyCode == Keys.V && e.Control)
345 | {
346 | if (dataList.GetCellCount(DataGridViewElementStates.Selected) > 0 && !dataList.CurrentCell.ReadOnly)
347 | {
348 | dataList.CurrentCell.Value = Clipboard.GetText();
349 | }
350 | }
351 | }
352 |
353 | private void dataList_MouseDown(object sender, MouseEventArgs e)
354 | {
355 | if (e.Button == MouseButtons.Right)
356 | {
357 | try
358 | {
359 | var hti = dataList.HitTest(e.X, e.Y);
360 | dataList.ClearSelection();
361 | dataList.Rows[hti.RowIndex].Selected = true;
362 | }
363 | catch
364 | {
365 | //
366 | }
367 | }
368 |
369 | if (dataList.SelectedRows.Count > 0)
370 | {
371 | addToolStripMenuItem.Enabled = false;
372 | removeToolStripMenuItem.Enabled = true;
373 | }
374 | else
375 | {
376 | addToolStripMenuItem.Enabled = true;
377 | removeToolStripMenuItem.Enabled = false;
378 | }
379 | }
380 |
381 | private void RemoveRows()
382 | {
383 | try
384 | {
385 | if (dataList.RowCount <= 1 || dataList.CurrentCell.RowIndex == dataList.RowCount - 1) return;
386 | dataList.Rows.RemoveAt(dataList.SelectedCells[0].RowIndex);
387 | dataList.ClearSelection();
388 | }
389 | catch
390 | {
391 | //
392 | }
393 | }
394 |
395 | #endregion Data List
396 |
397 | #region ToolStripMenuItem
398 |
399 | private void removeToolStripMenuItem_Click(object sender, EventArgs e)
400 | {
401 | try
402 | {
403 | var rowToDelete = dataList.Rows.GetFirstRow(DataGridViewElementStates.Selected);
404 | dataList.Rows.RemoveAt(rowToDelete);
405 | dataList.ClearSelection();
406 | }
407 | catch
408 | {
409 | //
410 | }
411 | }
412 |
413 | private void addToolStripMenuItem_Click(object sender, EventArgs e)
414 | {
415 | dataList.Rows.Add(null, null, "bool", null, null, null, null);
416 | }
417 |
418 | #endregion ToolStripMenuItem
419 |
420 | private void rad_CheckedChanged(object sender, EventArgs e)
421 | {
422 | _frmAddFunction.Text = HookName();
423 | }
424 |
425 | private string HookName()
426 | {
427 | return radButtonOnOff.Checked ? "Hook: Button On/Off" :
428 | radToggle.Checked ? "Hook: Toggle" :
429 | null;
430 | }
431 |
432 | private Enums.FunctionType GetFunctionType()
433 | {
434 | return radButtonOnOff.Checked ? Enums.FunctionType.HookButtonOnOf :
435 | radToggle.Checked ? Enums.FunctionType.HookToggle :
436 | Enums.FunctionType.Empty;
437 | }
438 | }
439 | }
--------------------------------------------------------------------------------