├── .gitignore ├── AltTool ├── icon_alpha.ico ├── Resources │ ├── gtav_aes_key.dat │ ├── gtav_ng_key.dat │ ├── gtav_hash_lut.dat │ ├── gtav_ng_decrypt_tables.dat │ ├── gtav_ng_encrypt_luts.dat │ └── gtav_ng_encrypt_tables.dat ├── App.config ├── Properties │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── packages.config ├── App.xaml ├── App.xaml.cs ├── StatusController.cs ├── ProjectBuilder.cs ├── Utils.cs ├── ProjectBuild.xaml ├── ProjectBuild.xaml.cs ├── ProjectController.cs ├── Resource.Designer.cs ├── ClothNameResolved.cs ├── ClothData.cs ├── AltTool.csproj ├── Resource.resx ├── MainWindow.xaml ├── MainWindow.xaml.cs └── ResourceBuilder.cs ├── make-dist.ps1 ├── packages ├── Newtonsoft.Json.12.0.3 │ ├── .signature.p7s │ ├── packageIcon.png │ ├── Newtonsoft.Json.12.0.3.nupkg │ ├── lib │ │ ├── net20 │ │ │ └── Newtonsoft.Json.dll │ │ ├── net35 │ │ │ └── Newtonsoft.Json.dll │ │ ├── net40 │ │ │ └── Newtonsoft.Json.dll │ │ ├── net45 │ │ │ └── Newtonsoft.Json.dll │ │ ├── netstandard1.0 │ │ │ └── Newtonsoft.Json.dll │ │ ├── netstandard1.3 │ │ │ └── Newtonsoft.Json.dll │ │ ├── netstandard2.0 │ │ │ └── Newtonsoft.Json.dll │ │ ├── portable-net45+win8+wp8+wpa81 │ │ │ └── Newtonsoft.Json.dll │ │ └── portable-net40+sl5+win8+wp8+wpa81 │ │ │ └── Newtonsoft.Json.dll │ └── LICENSE.md └── Ookii.Dialogs.Wpf.1.1.0 │ ├── .signature.p7s │ ├── Ookii.Dialogs.Wpf.1.1.0.nupkg │ └── lib │ └── net45 │ ├── Ookii.Dialogs.Wpf.dll │ └── Ookii.Dialogs.Wpf.pdb ├── README.md └── AltTool.sln /.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | AltTool/bin 3 | AltTool/obj 4 | .vs -------------------------------------------------------------------------------- /AltTool/icon_alpha.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/icon_alpha.ico -------------------------------------------------------------------------------- /AltTool/Resources/gtav_aes_key.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/Resources/gtav_aes_key.dat -------------------------------------------------------------------------------- /AltTool/Resources/gtav_ng_key.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/Resources/gtav_ng_key.dat -------------------------------------------------------------------------------- /make-dist.ps1: -------------------------------------------------------------------------------- 1 | 7z a -tzip alttool-0.0.0.zip ` 2 | .\AltTool\bin\Release\*.exe ` 3 | .\AltTool\bin\Release\*.dll 4 | 5 | -------------------------------------------------------------------------------- /AltTool/Resources/gtav_hash_lut.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/Resources/gtav_hash_lut.dat -------------------------------------------------------------------------------- /AltTool/Resources/gtav_ng_decrypt_tables.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/Resources/gtav_ng_decrypt_tables.dat -------------------------------------------------------------------------------- /AltTool/Resources/gtav_ng_encrypt_luts.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/Resources/gtav_ng_encrypt_luts.dat -------------------------------------------------------------------------------- /AltTool/Resources/gtav_ng_encrypt_tables.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/AltTool/Resources/gtav_ng_encrypt_tables.dat -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/.signature.p7s -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/packageIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/packageIcon.png -------------------------------------------------------------------------------- /packages/Ookii.Dialogs.Wpf.1.1.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Ookii.Dialogs.Wpf.1.1.0/.signature.p7s -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/Newtonsoft.Json.12.0.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/Newtonsoft.Json.12.0.3.nupkg -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/net20/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/net20/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/net35/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/net35/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/net40/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/net40/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/net45/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/net45/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Ookii.Dialogs.Wpf.1.1.0/Ookii.Dialogs.Wpf.1.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Ookii.Dialogs.Wpf.1.1.0/Ookii.Dialogs.Wpf.1.1.0.nupkg -------------------------------------------------------------------------------- /packages/Ookii.Dialogs.Wpf.1.1.0/lib/net45/Ookii.Dialogs.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Ookii.Dialogs.Wpf.1.1.0/lib/net45/Ookii.Dialogs.Wpf.dll -------------------------------------------------------------------------------- /packages/Ookii.Dialogs.Wpf.1.1.0/lib/net45/Ookii.Dialogs.Wpf.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Ookii.Dialogs.Wpf.1.1.0/lib/net45/Ookii.Dialogs.Wpf.pdb -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/netstandard1.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/netstandard1.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/netstandard1.3/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/netstandard1.3/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/netstandard2.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/netstandard2.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /AltTool/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indilo53/altv-cloth-tool/HEAD/packages/Newtonsoft.Json.12.0.3/lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /AltTool/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /AltTool/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /AltTool/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /AltTool/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace AltTool 10 | { 11 | /// 12 | /// Логика взаимодействия для App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /AltTool/StatusController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AltTool 8 | { 9 | class StatusController 10 | { 11 | 12 | public static void SetStatus(string status) 13 | { 14 | MainWindow.SetStatus(status); 15 | } 16 | 17 | public static void SetProgress(double progress) 18 | { 19 | MainWindow.SetProgress(progress); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # altv-cloth-tool 2 | 3 | ### Generate alt:V resource / SP dlc or FiveM Resource for addon ped component / props 4 | 5 | ![screen-1](https://image.prntscr.com/image/MKOD2aGBQ5GRtIytkFx2cQ.png) 6 | ![screen-2](https://image.prntscr.com/image/W9Mx-YdXTFijeJB6Mih0sA.png) 7 | 8 | ### Additional notes (from Divined#2725) 9 | 10 | ``` 11 | feet ydd needs to be imported with _r 12 | lowr ydd needs to be imported with _r 13 | teef ydd needs to be imported with _u 14 | everything else imported with _u for .ydd 15 | ``` 16 | 17 | 18 | 19 | ### Thanks [Tuxick](https://github.com/emcifuntik) for initial version of this tool :) -------------------------------------------------------------------------------- /AltTool/ProjectBuilder.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using Newtonsoft.Json.Linq; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.IO; 6 | using System.Linq; 7 | 8 | namespace AltTool 9 | { 10 | 11 | class ProjectBuilder 12 | { 13 | public static void BuildProject(string outputFile) 14 | { 15 | var data = JsonConvert.SerializeObject(MainWindow.clothes, Formatting.Indented); 16 | 17 | File.WriteAllText(outputFile, data); 18 | } 19 | 20 | public static void LoadProject(string inputFile) 21 | { 22 | string dir = Path.GetDirectoryName(inputFile); 23 | var data = JsonConvert.DeserializeObject>(File.ReadAllText(inputFile)); 24 | 25 | MainWindow.clothes.Clear(); 26 | 27 | var _clothes = data.OrderBy(x => x.Name, new AlphanumericComparer()).ToList(); 28 | 29 | foreach (var cd in _clothes) 30 | { 31 | MainWindow.clothes.Add(cd); 32 | } 33 | } 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.12.0.3/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2007 James Newton-King 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /AltTool.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29123.88 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AltTool", "AltTool\AltTool.csproj", "{064EA8C0-7ADF-43DC-BEA0-5852DA38C3AA}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {064EA8C0-7ADF-43DC-BEA0-5852DA38C3AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {064EA8C0-7ADF-43DC-BEA0-5852DA38C3AA}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {064EA8C0-7ADF-43DC-BEA0-5852DA38C3AA}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {064EA8C0-7ADF-43DC-BEA0-5852DA38C3AA}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {9807173A-A635-4D55-8663-161E34393841} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /AltTool/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Этот код создан программой. 4 | // Исполняемая версия:4.0.30319.42000 5 | // 6 | // Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае 7 | // повторной генерации кода. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace AltTool.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.2.0.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 | -------------------------------------------------------------------------------- /AltTool/Utils.cs: -------------------------------------------------------------------------------- 1 | using RageLib.GTA5.Cryptography; 2 | using RageLib.GTA5.Cryptography.Helpers; 3 | using System; 4 | using System.Collections; 5 | using System.Collections.Generic; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Runtime.InteropServices; 9 | using System.Text; 10 | using System.Threading.Tasks; 11 | 12 | namespace AltTool 13 | { 14 | class Utils 15 | { 16 | public static void EnsureKeys() 17 | { 18 | GTA5Constants.PC_AES_KEY = Resource.gtav_aes_key; 19 | GTA5Constants.PC_NG_KEYS = CryptoIO.ReadNgKeys(Resource.gtav_ng_key); 20 | GTA5Constants.PC_NG_DECRYPT_TABLES = CryptoIO.ReadNgTables(Resource.gtav_ng_decrypt_tables); 21 | GTA5Constants.PC_NG_ENCRYPT_TABLES = CryptoIO.ReadNgTables(Resource.gtav_ng_encrypt_tables); 22 | GTA5Constants.PC_NG_ENCRYPT_LUTs = CryptoIO.ReadNgLuts(Resource.gtav_ng_encrypt_luts); 23 | GTA5Constants.PC_LUT = Resource.gtav_hash_lut; 24 | } 25 | 26 | public static string GetRelativePath(string filespec, string folder) 27 | { 28 | Uri pathUri = new Uri(filespec); 29 | 30 | if (!folder.EndsWith(Path.DirectorySeparatorChar.ToString())) 31 | { 32 | folder += Path.DirectorySeparatorChar; 33 | } 34 | 35 | Uri folderUri = new Uri(folder); 36 | 37 | return Uri.UnescapeDataString(folderUri.MakeRelativeUri(pathUri).ToString().Replace('/', Path.DirectorySeparatorChar)); 38 | } 39 | } 40 | 41 | public class AlphanumericComparer : IComparer 42 | { 43 | [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] 44 | static extern int StrCmpLogicalW(string s1, string s2); 45 | 46 | public int Compare(string x, string y) => StrCmpLogicalW(x, y); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /AltTool/ProjectBuild.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |