├── .gitattributes ├── BFP4FExplorerWV ├── App.config ├── BF2 │ ├── BF2BundledMesh.cs │ ├── BF2CollisionMesh.cs │ ├── BF2FileSystem.cs │ ├── BF2HUDBuilder.cs │ ├── BF2HUDElement.cs │ ├── BF2HUDLoader.cs │ ├── BF2HUDManager.cs │ ├── BF2Level.cs │ ├── BF2LevelObject.cs │ ├── BF2Mesh.cs │ ├── BF2SkinnedMesh.cs │ ├── BF2StaticMesh.cs │ └── BF2Terrain.cs ├── BFP4FExplorerWV.csproj ├── Engine │ ├── Engine3D.cs │ ├── ExporterObj.cs │ ├── RenderObject.cs │ └── TextureManager.cs ├── Helper.cs ├── LevelSelect.Designer.cs ├── LevelSelect.cs ├── LevelSelect.resx ├── Log.cs ├── MainForm.Designer.cs ├── MainForm.cs ├── MainForm.resx ├── ModLoader.Designer.cs ├── ModLoader.cs ├── ModLoader.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── BuildDate.txt │ ├── Resource1.Designer.cs │ └── Resource1.resx ├── SelectablePictureBox.cs ├── TextEditor.Designer.cs ├── TextEditor.cs ├── TextEditor.resx ├── bin │ └── x86 │ │ └── Release │ │ ├── BFP4F_Explorer_WV.exe │ │ ├── BFP4F_Explorer_WV.exe.config │ │ ├── Be.Windows.Forms.HexBox.dll │ │ ├── SharpDX.D3DCompiler.dll │ │ ├── SharpDX.D3DCompiler.xml │ │ ├── SharpDX.DXGI.dll │ │ ├── SharpDX.DXGI.xml │ │ ├── SharpDX.Desktop.dll │ │ ├── SharpDX.Desktop.xml │ │ ├── SharpDX.Direct2D1.dll │ │ ├── SharpDX.Direct2D1.xml │ │ ├── SharpDX.Direct3D11.dll │ │ ├── SharpDX.Direct3D11.xml │ │ ├── SharpDX.Mathematics.dll │ │ ├── SharpDX.Mathematics.xml │ │ ├── SharpDX.dll │ │ ├── SharpDX.xml │ │ ├── config.txt │ │ ├── res │ │ └── default.png │ │ └── texconv.exe └── dll │ ├── SharpDX.D3DCompiler.dll │ ├── SharpDX.D3DCompiler.pdb │ ├── SharpDX.D3DCompiler.xml │ ├── SharpDX.DXGI.dll │ ├── SharpDX.DXGI.pdb │ ├── SharpDX.DXGI.xml │ ├── SharpDX.Desktop.dll │ ├── SharpDX.Desktop.pdb │ ├── SharpDX.Desktop.xml │ ├── SharpDX.Direct2D1.dll │ ├── SharpDX.Direct2D1.pdb │ ├── SharpDX.Direct2D1.xml │ ├── SharpDX.Direct3D11.dll │ ├── SharpDX.Direct3D11.pdb │ ├── SharpDX.Direct3D11.xml │ ├── SharpDX.Mathematics.dll │ ├── SharpDX.Mathematics.pdb │ ├── SharpDX.Mathematics.xml │ ├── SharpDX.dll │ ├── SharpDX.pdb │ └── SharpDX.xml ├── BFP4FLauncherWV ├── App.config ├── BFP4FLauncherWV.csproj ├── BFP4FLauncherWV.csproj.user ├── Components │ ├── AsyncNotification │ │ ├── AsyncGameManager.cs │ │ ├── AsyncStats.cs │ │ └── AsyncUserSessions.cs │ ├── AuthenticationComponent.cs │ ├── BlazeHelper.cs │ ├── GameManagerComponent.cs │ ├── StatsComponent.cs │ ├── UserSessionComponent.cs │ └── UtilComponent.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Form2.Designer.cs ├── Form2.cs ├── Form2.resx ├── Form3.Designer.cs ├── Form3.cs ├── Form3.resx ├── Helper.cs ├── Info │ ├── GameInfo.cs │ ├── PlayerInfo.cs │ └── ProviderInfo.cs ├── Profile.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── BuildDate.txt │ ├── Resource1.Designer.cs │ ├── Resource1.resx │ └── redi.pfx ├── Server │ ├── BackendLog.cs │ ├── BlazeServer.cs │ ├── MagmaServer.cs │ ├── QOSServer.cs │ ├── RedirectorServer.cs │ └── Webserver.cs └── bin │ └── x86 │ └── Release │ ├── BFP4FLauncherWV.exe │ ├── BFP4FLauncherWV.exe.config │ └── BlazeLibWV.dll ├── BFP4FToolsWV.sln ├── BFP4FToolsWV.v11.suo ├── Be.Windows.Forms.HexBox ├── AssemblyInfo.cs ├── Be.Windows.Forms.HexBox.csproj ├── BuiltInContextMenu.cs ├── ByteCharConverters.cs ├── ByteCollection.cs ├── BytePositionInfo.cs ├── DataBlock.cs ├── DataMap.cs ├── DynamicByteProvider.cs ├── DynamicFileByteProvider.cs ├── FileByteProvider.cs ├── FileDataBlock.cs ├── FindOptions.cs ├── HexBox.bmp ├── HexBox.cs ├── HexBox.resx ├── HexBox.snk ├── HexCasing.cs ├── IByteProvider.cs ├── MemoryDataBlock.cs ├── NativeMethods.cs ├── Properties │ ├── Resources.Designer.cs │ └── Resources.resx ├── Util.cs └── bin │ └── x86 │ └── Release │ └── Be.Windows.Forms.HexBox.dll ├── BlazeLibWV ├── Blaze.cs ├── BlazeLibWV.csproj ├── BlazePrettyPrinter.cs ├── Properties │ └── AssemblyInfo.cs └── bin │ └── x86 │ └── Release │ └── BlazeLibWV.dll ├── BlazeSharkWV ├── App.config ├── BlazeSharkWV.csproj ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings └── bin │ └── x86 │ └── Release │ ├── BlazeLibWV.dll │ ├── BlazeSharkWV.exe │ └── BlazeSharkWV.exe.config ├── Other ├── JavascriptInterfaceByWV.txt ├── html.rar └── maplist.con ├── README.md ├── UDPMonitorWV ├── App.config ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── UDPMonitorWV.csproj └── bin │ └── x86 │ └── Release │ ├── UDPMonitorWV.exe │ └── UDPMonitorWV.exe.config ├── Zlib122_2010 ├── Release │ └── zlib122.dll ├── zlib122.sln ├── zlib122.v11.suo └── zlib122 │ ├── Hack.cpp │ ├── Hack.h │ ├── UDPMon.h │ ├── detours.h │ ├── detours.lib │ ├── dllmain.cpp │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ ├── zlib122.vcxproj │ └── zlib122.vcxproj.filters ├── Zlib122_2011 ├── Release │ └── zlib122.dll ├── zlib122.sln ├── zlib122.v11.suo └── zlib122 │ ├── Hack.cpp │ ├── Hack.h │ ├── detours.h │ ├── detours.lib │ ├── dllmain.cpp │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ ├── zlib122.vcxproj │ └── zlib122.vcxproj.filters ├── Zlib122_2013 ├── Release │ └── zlib122.dll ├── zlib122.sln ├── zlib122.v11.suo └── zlib122 │ ├── Hack.cpp │ ├── Hack.h │ ├── detours.h │ ├── detours.lib │ ├── dllmain.cpp │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ ├── zlib122.vcxproj │ └── zlib122.vcxproj.filters └── Zlib122_2015 ├── Release └── zlib122.dll ├── zlib122.sln ├── zlib122.v11.suo └── zlib122 ├── Hack.cpp ├── Hack.h ├── Helper.h ├── detours.h ├── detours.lib ├── dllmain.cpp ├── stdafx.cpp ├── stdafx.h ├── targetver.h ├── zlib122.vcxproj └── zlib122.vcxproj.filters /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2BundledMesh.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using SharpDX; 9 | using SharpDX.Direct3D11; 10 | using SharpDX.Mathematics.Interop; 11 | 12 | namespace BFP4FExplorerWV 13 | { 14 | public class BF2BundledMesh 15 | { 16 | 17 | public Helper.BF2MeshHeader header; 18 | public Helper.BF2MeshGeometry geometry; 19 | public uint u1; 20 | public List lods; 21 | public List geomat; 22 | 23 | public BF2BundledMesh(byte[] data) 24 | { 25 | MemoryStream m = new MemoryStream(data); 26 | header = new Helper.BF2MeshHeader(m); 27 | geometry = new Helper.BF2MeshGeometry(m); 28 | u1 = Helper.ReadU32(m); 29 | lods = new List(); 30 | geomat = new List(); 31 | uint count = geometry.GetSumOfLODs(); 32 | for (int i = 0; i < count; i++) 33 | lods.Add(new Helper.BF2MeshBMLod(m, header)); 34 | for (int i = 0; i < count; i++) 35 | geomat.Add(new Helper.BF2MeshBMGeometryMaterial(m)); 36 | } 37 | 38 | public List ConvertForEngine(Engine3D engine, bool loadTextures, int geoMatIdx) 39 | { 40 | List result = new List(); 41 | if (geoMatIdx >= geomat.Count) 42 | geoMatIdx = geomat.Count() - 1; 43 | Helper.BF2MeshBMGeometryMaterial lod0 = geomat[geoMatIdx]; 44 | for (int i = 0; i < lod0.numMaterials; i++) 45 | { 46 | Helper.BF2MeshBMMaterial mat = lod0.materials[i]; 47 | Texture2D texture = null; 48 | if (loadTextures) 49 | foreach (string path in mat.textureMapFiles) 50 | { 51 | texture = engine.textureManager.FindTextureByPath(path); 52 | if (texture != null) 53 | break; 54 | } 55 | if (texture == null) 56 | texture = engine.defaultTexture; 57 | List list = new List(); 58 | List list2 = new List(); 59 | int m = geometry.vertices.Count / (int)geometry.numVertices; 60 | for (int j = 0; j < mat.numIndicies; j++) 61 | { 62 | int pos = (geometry.indices[(int)mat.indiciesStartIndex + j] + (int)mat.vertexStartIndex) * m; 63 | list.Add(GetVertex(pos)); 64 | list2.Add(GetVector(pos)); 65 | } 66 | if (mat.numIndicies != 0) 67 | { 68 | RenderObject o = new RenderObject(engine.device, RenderObject.RenderType.TriListTextured, texture, engine); 69 | o.verticesTextured = list.ToArray(); 70 | o.InitGeometry(); 71 | result.Add(o); 72 | RenderObject o2 = new RenderObject(engine.device, RenderObject.RenderType.TriListWired, texture, engine); 73 | o2.verticesWired = list2.ToArray(); 74 | o2.InitGeometry(); 75 | result.Add(o2); 76 | } 77 | } 78 | return result; 79 | } 80 | 81 | public RenderObject.VertexWired GetVector(int pos) 82 | { 83 | return new RenderObject.VertexWired(new Vector4(geometry.vertices[pos], geometry.vertices[pos + 1], geometry.vertices[pos + 2], 1f), Color4.Black); 84 | } 85 | 86 | public RenderObject.VertexTextured GetVertex(int pos) 87 | { 88 | return new RenderObject.VertexTextured(new Vector4(geometry.vertices[pos], geometry.vertices[pos + 1], geometry.vertices[pos + 2], 1), Color.White, new Vector2(geometry.vertices[pos + 7], geometry.vertices[pos + 8])); 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2CollisionMesh.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using SharpDX; 8 | using SharpDX.Mathematics.Interop; 9 | 10 | namespace BFP4FExplorerWV 11 | { 12 | public class BF2CollisionMesh 13 | { 14 | public Helper.BF2CollisionMeshHeader header; 15 | public List geometry; 16 | public BF2CollisionMesh(byte[] data) 17 | { 18 | MemoryStream m = new MemoryStream(data); 19 | header = new Helper.BF2CollisionMeshHeader(m); 20 | geometry = new List(); 21 | for (int i = 0; i < (int)header.numChunks; i++) 22 | geometry.Add(new Helper.BF2CollisionMeshGeometry(m, header.version)); 23 | } 24 | 25 | 26 | public List ConvertForEngine(Engine3D engine) 27 | { 28 | List result = new List(); 29 | foreach(Helper.BF2CollisionMeshGeometry geom in geometry) 30 | foreach(Helper.BF2CollisionMeshSubGeometry subgeo in geom.subGeom) 31 | foreach(Helper.BF2CollisionMeshColData col in subgeo.colData) 32 | { 33 | RenderObject o = new RenderObject(engine.device, RenderObject.RenderType.TriListWired, engine.defaultTexture, engine); 34 | List list = new List(); 35 | for(int i=0;i parameter; 14 | 15 | public BF2HUDElement(string _name, BF2HUDElement _parent) 16 | { 17 | name = _name; 18 | parent = _parent; 19 | parameter = new List(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2HUDLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | 9 | namespace BFP4FExplorerWV 10 | { 11 | public static class BF2HUDLoader 12 | { 13 | public static List elements; 14 | 15 | public static void Init() 16 | { 17 | elements = new List(); 18 | elements.Add(new BF2HUDElement("Global", null)); 19 | elements.Add(new BF2HUDElement("TopLayer", null)); 20 | elements.Add(new BF2HUDElement("TopLeft", null)); 21 | elements.Add(new BF2HUDElement("TopRight", null)); 22 | elements.Add(new BF2HUDElement("BottomLeftStatic", null)); 23 | elements.Add(new BF2HUDElement("BottomRightStatic", null)); 24 | elements.Add(new BF2HUDElement("BottomLeftAnimate", null)); 25 | elements.Add(new BF2HUDElement("BottomRightAnimate", null)); 26 | BF2HUDManager.parameter = new List(); 27 | BF2HUDBuilder.current = null; 28 | Log.WriteLine("[BF2 HL] Loading HUD..."); 29 | Load("menu\\HUD\\HudSetup\\HudSetupMain.con"); 30 | } 31 | 32 | public static void Load(string filename) 33 | { 34 | Log.WriteLine("[BF2 HL] running \"" + filename + "\"..."); 35 | BF2FileSystem.BF2FSEntry e = BF2FileSystem.FindEntryFromIngamePath(filename); 36 | if (e == null) 37 | return; 38 | byte[] data = BF2FileSystem.GetFileFromZip(e.zipFile, e.inZipPath); 39 | if (data == null) 40 | { 41 | Log.WriteLine("[BF2 HL] ERROR file not found!"); 42 | return; 43 | } 44 | string basePath = Path.GetDirectoryName(filename) + "\\"; 45 | string[] lines = SplitBinText(data); 46 | int count = 0; 47 | foreach (string line in lines) 48 | { 49 | count++; 50 | string[] parts; 51 | string tmp = line.ToLower(); 52 | if (tmp.Trim() == "") continue; 53 | if (tmp.StartsWith("rem")) continue; 54 | if (tmp.StartsWith("run")) 55 | { 56 | parts = line.Split(' '); 57 | Load(basePath + parts[1].Replace("\"", "").Replace("/", "\\")); 58 | } 59 | else if (tmp.StartsWith("hudbuilder")) 60 | BF2HUDBuilder.ProcessLine(line, count); 61 | else if (tmp.StartsWith("hudmanager")) 62 | BF2HUDManager.ProcessLine(line, count); 63 | } 64 | } 65 | 66 | private static string[] SplitBinText(byte[] data) 67 | { 68 | List result = new List(); 69 | string s = Encoding.ASCII.GetString(data); 70 | string line; 71 | StringReader sr = new StringReader(s); 72 | while ((line = sr.ReadLine()) != null) 73 | result.Add(line); 74 | return result.ToArray(); 75 | } 76 | 77 | public static TreeNode MakeTree() 78 | { 79 | TreeNode result = new TreeNode("HUD"); 80 | foreach (BF2HUDElement e in elements) 81 | if (e.parent == null) 82 | result.Nodes.Add(e.name, e.name); 83 | else 84 | { 85 | TreeNode[] t = result.Nodes.Find(e.parent.name, true); 86 | if (t != null && t.Length != 0) 87 | t[0].Nodes.Add(e.name, e.name); 88 | } 89 | result.Expand(); 90 | return result; 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2HUDManager.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 BFP4FExplorerWV 8 | { 9 | public static class BF2HUDManager 10 | { 11 | public static List parameter = new List(); 12 | public static void ProcessLine(string s, int line) 13 | { 14 | parameter.Add(s.Substring(11)); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2Mesh.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using SharpDX; 9 | using SharpDX.Direct3D11; 10 | using SharpDX.Mathematics.Interop; 11 | 12 | namespace BFP4FExplorerWV 13 | { 14 | public class BF2Mesh 15 | { 16 | public uint version; 17 | public Vector3 u1; 18 | public uint u2; 19 | public Vector3 u3; 20 | public Vector3 u4; 21 | public uint u5; 22 | public uint numVertices; 23 | public List vertices; 24 | public uint numIndicies; 25 | public ushort[] indicies; 26 | public uint numUnknown; 27 | public List unk; 28 | public BF2Mesh(byte[] data) 29 | { 30 | MemoryStream m = new MemoryStream(data); 31 | version = Helper.ReadU32(m); 32 | u1 = Helper.ReadVector3(m); 33 | u2 = Helper.ReadU32(m); 34 | u3 = Helper.ReadVector3(m); 35 | u4 = Helper.ReadVector3(m); 36 | u5 = Helper.ReadU32(m); 37 | numVertices = Helper.ReadU32(m); 38 | vertices = new List(); 39 | for (int i = 0; i < numVertices; i++) 40 | vertices.Add(new BF2MeshVertex(m)); 41 | numIndicies = Helper.ReadU32(m); 42 | indicies = new ushort[numIndicies]; 43 | for (int i = 0; i < numIndicies; i++) 44 | indicies[i] = Helper.ReadU16(m); 45 | numUnknown = Helper.ReadU32(m); 46 | unk = new List(); 47 | for (int i = 0; i < numUnknown; i++) 48 | unk.Add(new BF2MeshUnknown(m)); 49 | } 50 | 51 | public List ConvertForEngine(Engine3D engine, Texture2D texture) 52 | { 53 | List result = new List(); 54 | List list = new List(); 55 | List list2 = new List(); 56 | for (int i = 0; i < numIndicies; i++) 57 | { 58 | list.Add(vertices[indicies[i]].ToTextured()); 59 | list2.Add(vertices[indicies[i]].ToWired()); 60 | } 61 | RenderObject textured = new RenderObject(engine.device, RenderObject.RenderType.TriListTextured, texture, engine); 62 | RenderObject wired = new RenderObject(engine.device, RenderObject.RenderType.TriListWired, null, engine); 63 | textured.verticesTextured = list.ToArray(); 64 | wired.verticesWired = list2.ToArray(); 65 | textured.InitGeometry(); 66 | wired.InitGeometry(); 67 | result.Add(textured); 68 | result.Add(wired); 69 | return result; 70 | } 71 | 72 | public class BF2MeshVertex 73 | { 74 | public Vector3 pos; 75 | public Vector2 tex0; 76 | public Vector2 tex1; 77 | public uint alpha; 78 | public BF2MeshVertex(Stream s) 79 | { 80 | pos = Helper.ReadVector3(s); 81 | tex0 = Helper.ReadVector2(s); 82 | tex1 = Helper.ReadVector2(s); 83 | alpha = Helper.ReadU32(s); 84 | } 85 | 86 | public RenderObject.VertexTextured ToTextured() 87 | { 88 | return new RenderObject.VertexTextured(Helper.ToV4(pos), Color.White, tex0); 89 | } 90 | 91 | public RenderObject.VertexWired ToWired() 92 | { 93 | return new RenderObject.VertexWired(pos, Color4.Black); 94 | } 95 | } 96 | 97 | public class BF2MeshUnknown 98 | { 99 | public uint u1; 100 | public uint u2; 101 | public uint u3; 102 | public Vector3 u4; 103 | public BF2MeshUnknown(Stream s) 104 | { 105 | u1 = Helper.ReadU32(s); 106 | u2 = Helper.ReadU32(s); 107 | u3 = Helper.ReadU32(s); 108 | u4 = Helper.ReadVector3(s); 109 | } 110 | } 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2SkinnedMesh.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using SharpDX; 9 | using SharpDX.Direct3D11; 10 | using SharpDX.Mathematics.Interop; 11 | 12 | namespace BFP4FExplorerWV 13 | { 14 | public class BF2SkinnedMesh 15 | { 16 | public Helper.BF2MeshHeader header; 17 | public Helper.BF2MeshGeometry geometry; 18 | public List lods; 19 | public List geomat; 20 | 21 | public BF2SkinnedMesh(byte[] data) 22 | { 23 | MemoryStream m = new MemoryStream(data); 24 | header = new Helper.BF2MeshHeader(m); 25 | geometry = new Helper.BF2MeshGeometry(m); 26 | lods = new List(); 27 | geomat = new List(); 28 | uint count = geometry.GetSumOfLODs(); 29 | for (int i = 0; i < count; i++) 30 | lods.Add(new Helper.BF2MeshSKMLod(m, header.version)); 31 | for (int i = 0; i < count; i++) 32 | geomat.Add(new Helper.BF2MeshSKMGeometryMaterial(m)); 33 | } 34 | 35 | public List ConvertForEngine(Engine3D engine, bool loadTextures, int geoMatIdx) 36 | { 37 | List result = new List(); 38 | if (geoMatIdx >= geomat.Count) 39 | geoMatIdx = geomat.Count() - 1; 40 | Helper.BF2MeshSKMGeometryMaterial lod0 = geomat[geoMatIdx]; 41 | for (int i = 0; i < lod0.numMaterials; i++) 42 | { 43 | Helper.BF2MeshSKMMaterial mat = lod0.materials[i]; 44 | Texture2D texture = null; 45 | if (loadTextures) 46 | foreach (string path in mat.textureMapFiles) 47 | { 48 | texture = engine.textureManager.FindTextureByPath(path); 49 | if (texture != null) 50 | break; 51 | } 52 | if (texture == null) 53 | texture = engine.defaultTexture; 54 | List list = new List(); 55 | //List list2 = new List(); 56 | int m = geometry.vertices.Count / (int)geometry.numVertices; 57 | for (int j = 0; j < mat.numIndicies; j++) 58 | { 59 | int pos = (geometry.indices[(int)mat.indiciesStartIndex + j] + (int)mat.vertexStartIndex) * m; 60 | list.Add(GetVertex(pos)); 61 | //list2.Add(GetVector(pos)); 62 | } 63 | if (mat.numIndicies != 0) 64 | { 65 | RenderObject o = new RenderObject(engine.device, RenderObject.RenderType.TriListTextured, texture, engine); 66 | o.verticesTextured = list.ToArray(); 67 | o.InitGeometry(); 68 | result.Add(o); 69 | //RenderObject o2 = new RenderObject(engine.device, RenderObject.RenderType.TriListWired, texture, engine); 70 | //o2.verticesWired = list2.ToArray(); 71 | //o2.InitGeometry(); 72 | //result.Add(o2); 73 | } 74 | } 75 | return result; 76 | } 77 | 78 | public RenderObject.VertexWired GetVector(int pos) 79 | { 80 | return new RenderObject.VertexWired(new Vector4(geometry.vertices[pos], geometry.vertices[pos + 1], geometry.vertices[pos + 2], 1f), Color4.Black); 81 | } 82 | 83 | public RenderObject.VertexTextured GetVertex(int pos) 84 | { 85 | return new RenderObject.VertexTextured(new Vector4(geometry.vertices[pos], geometry.vertices[pos + 1], geometry.vertices[pos + 2], 1), Color.White, new Vector2(geometry.vertices[pos + 8], geometry.vertices[pos + 9])); 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/BF2/BF2StaticMesh.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using SharpDX; 9 | using SharpDX.Direct3D11; 10 | using SharpDX.Mathematics.Interop; 11 | 12 | namespace BFP4FExplorerWV 13 | { 14 | public class BF2StaticMesh 15 | { 16 | public Helper.BF2MeshHeader header; 17 | public Helper.BF2MeshGeometry geometry; 18 | public uint u1; 19 | public List lods; 20 | public List geomat; 21 | 22 | public BF2StaticMesh(byte[] data) 23 | { 24 | MemoryStream m = new MemoryStream(data); 25 | header = new Helper.BF2MeshHeader(m); 26 | geometry = new Helper.BF2MeshGeometry(m); 27 | u1 = Helper.ReadU32(m); 28 | lods = new List(); 29 | geomat = new List(); 30 | uint count = geometry.GetSumOfLODs(); 31 | for (int i = 0; i < count; i++) 32 | lods.Add(new Helper.BF2MeshSTMLod(m, header)); 33 | for (int i = 0; i < count; i++) 34 | geomat.Add(new Helper.BF2MeshSTMGeometryMaterial(m, header)); 35 | } 36 | 37 | public List ConvertForEngine(Engine3D engine, bool loadTextures, int geoMatIdx) 38 | { 39 | List result = new List(); 40 | if (geoMatIdx >= geomat.Count) 41 | geoMatIdx = geomat.Count() - 1; 42 | Helper.BF2MeshSTMGeometryMaterial lod0 = geomat[geoMatIdx]; 43 | for (int i = 0; i < lod0.numMaterials; i++) 44 | { 45 | Helper.BF2MeshSTMMaterial mat = lod0.materials[i]; 46 | List list = new List(); 47 | List list2 = new List(); 48 | Texture2D texture = null; 49 | if(loadTextures) 50 | foreach (string path in mat.textureMapFiles) 51 | { 52 | texture = engine.textureManager.FindTextureByPath(path); 53 | if (texture != null) 54 | break; 55 | } 56 | if(texture == null) 57 | texture = engine.defaultTexture; 58 | int m = geometry.vertices.Count / (int)geometry.numVertices; 59 | for (int j = 0; j < mat.numIndicies; j++) 60 | { 61 | int pos = (geometry.indices[(int)mat.indiciesStartIndex + j] + (int)mat.vertexStartIndex) * m; 62 | list.Add(GetVertex(pos)); 63 | list2.Add(GetVector(pos)); 64 | } 65 | if (mat.numIndicies != 0) 66 | { 67 | RenderObject o = new RenderObject(engine.device, RenderObject.RenderType.TriListTextured, texture, engine); 68 | o.verticesTextured = list.ToArray(); 69 | o.InitGeometry(); 70 | result.Add(o); 71 | RenderObject o2 = new RenderObject(engine.device, RenderObject.RenderType.TriListWired, texture, engine); 72 | o2.verticesWired = list2.ToArray(); 73 | o2.InitGeometry(); 74 | result.Add(o2); 75 | } 76 | } 77 | return result; 78 | } 79 | 80 | public RenderObject.VertexWired GetVector(int pos) 81 | { 82 | return new RenderObject.VertexWired(new Vector4(geometry.vertices[pos], geometry.vertices[pos + 1], geometry.vertices[pos + 2], 1f), Color4.Black); 83 | } 84 | 85 | public RenderObject.VertexTextured GetVertex(int pos) 86 | { 87 | return new RenderObject.VertexTextured(new Vector4(geometry.vertices[pos], geometry.vertices[pos + 1], geometry.vertices[pos + 2], 1), Color.White, new Vector2(geometry.vertices[pos + 7], geometry.vertices[pos + 8])); 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/LevelSelect.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace BFP4FExplorerWV 2 | { 3 | partial class LevelSelect 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.button1 = new System.Windows.Forms.Button(); 32 | this.listBox1 = new System.Windows.Forms.ListBox(); 33 | this.SuspendLayout(); 34 | // 35 | // button1 36 | // 37 | this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; 38 | this.button1.Font = new System.Drawing.Font("Courier New", 8.25F); 39 | this.button1.Location = new System.Drawing.Point(0, 280); 40 | this.button1.Name = "button1"; 41 | this.button1.Size = new System.Drawing.Size(438, 23); 42 | this.button1.TabIndex = 0; 43 | this.button1.Text = "Load"; 44 | this.button1.UseVisualStyleBackColor = true; 45 | this.button1.Click += new System.EventHandler(this.button1_Click); 46 | // 47 | // listBox1 48 | // 49 | this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill; 50 | this.listBox1.Font = new System.Drawing.Font("Courier New", 8.25F); 51 | this.listBox1.FormattingEnabled = true; 52 | this.listBox1.IntegralHeight = false; 53 | this.listBox1.ItemHeight = 14; 54 | this.listBox1.Location = new System.Drawing.Point(0, 0); 55 | this.listBox1.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 56 | this.listBox1.Name = "listBox1"; 57 | this.listBox1.Size = new System.Drawing.Size(438, 280); 58 | this.listBox1.TabIndex = 1; 59 | this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDoubleClick); 60 | // 61 | // LevelSelect 62 | // 63 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 64 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 65 | this.ClientSize = new System.Drawing.Size(438, 303); 66 | this.Controls.Add(this.listBox1); 67 | this.Controls.Add(this.button1); 68 | this.Name = "LevelSelect"; 69 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 70 | this.Text = "LevelSelect"; 71 | this.Load += new System.EventHandler(this.LevelSelect_Load); 72 | this.ResumeLayout(false); 73 | 74 | } 75 | 76 | #endregion 77 | 78 | private System.Windows.Forms.Button button1; 79 | private System.Windows.Forms.ListBox listBox1; 80 | } 81 | } -------------------------------------------------------------------------------- /BFP4FExplorerWV/LevelSelect.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace BFP4FExplorerWV 13 | { 14 | public partial class LevelSelect : Form 15 | { 16 | public string basepath; 17 | public bool _exitOK = false; 18 | public string result; 19 | 20 | public LevelSelect() 21 | { 22 | InitializeComponent(); 23 | } 24 | 25 | private void button1_Click(object sender, EventArgs e) 26 | { 27 | SelectLevel(); 28 | } 29 | 30 | private void LevelSelect_Load(object sender, EventArgs e) 31 | { 32 | listBox1.Items.Clear(); 33 | string[] dirs = Directory.GetDirectories(basepath); 34 | foreach (string dir in dirs) 35 | listBox1.Items.Add(dir.Substring(basepath.Length)); 36 | } 37 | 38 | private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e) 39 | { 40 | SelectLevel(); 41 | } 42 | 43 | public void SelectLevel() 44 | { 45 | int n = listBox1.SelectedIndex; 46 | if (n == -1) 47 | return; 48 | result = listBox1.Items[n].ToString(); 49 | _exitOK = true; 50 | this.Close(); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Log.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | 8 | namespace BFP4FExplorerWV 9 | { 10 | public static class Log 11 | { 12 | public static RichTextBox box = null; 13 | public static ToolStripProgressBar pb = null; 14 | public static readonly object sync = new object(); 15 | 16 | public static void WriteLine(string s) 17 | { 18 | Write(s + "\n"); 19 | } 20 | 21 | public static void Write(string s) 22 | { 23 | if (box == null) 24 | return; 25 | box.BeginInvoke((MethodInvoker)delegate() 26 | { 27 | box.AppendText(s); 28 | box.SelectionStart = box.Text.Length; 29 | box.ScrollToCaret(); 30 | }); 31 | Application.DoEvents(); 32 | } 33 | 34 | public static void SetProgress(int min, int max, int value) 35 | { 36 | if (pb == null) 37 | return; 38 | pb.GetCurrentParent().BeginInvoke((MethodInvoker)delegate() 39 | { 40 | pb.Minimum = min; 41 | pb.Maximum = max; 42 | pb.Value = value; 43 | }); 44 | Application.DoEvents(); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/ModLoader.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace BFP4FExplorerWV 2 | { 3 | partial class ModLoader 4 | { 5 | /// 6 | /// Erforderliche Designervariable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Verwendete Ressourcen bereinigen. 12 | /// 13 | /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls 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 Vom Windows Form-Designer generierter Code 24 | 25 | /// 26 | /// Erforderliche Methode für die Designerunterstützung. 27 | /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.listBox1 = new System.Windows.Forms.ListBox(); 32 | this.button1 = new System.Windows.Forms.Button(); 33 | this.SuspendLayout(); 34 | // 35 | // listBox1 36 | // 37 | this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill; 38 | this.listBox1.FormattingEnabled = true; 39 | this.listBox1.IntegralHeight = false; 40 | this.listBox1.ItemHeight = 18; 41 | this.listBox1.Location = new System.Drawing.Point(0, 0); 42 | this.listBox1.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 43 | this.listBox1.Name = "listBox1"; 44 | this.listBox1.Size = new System.Drawing.Size(573, 379); 45 | this.listBox1.TabIndex = 0; 46 | this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDoubleClick); 47 | // 48 | // button1 49 | // 50 | this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; 51 | this.button1.Location = new System.Drawing.Point(0, 379); 52 | this.button1.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 53 | this.button1.Name = "button1"; 54 | this.button1.Size = new System.Drawing.Size(573, 32); 55 | this.button1.TabIndex = 1; 56 | this.button1.Text = "Load"; 57 | this.button1.UseVisualStyleBackColor = true; 58 | this.button1.Click += new System.EventHandler(this.button1_Click); 59 | // 60 | // ModLoader 61 | // 62 | this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 18F); 63 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 64 | this.ClientSize = new System.Drawing.Size(573, 411); 65 | this.Controls.Add(this.listBox1); 66 | this.Controls.Add(this.button1); 67 | this.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 68 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; 69 | this.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); 70 | this.Name = "ModLoader"; 71 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 72 | this.Text = "Choose Mod"; 73 | this.Activated += new System.EventHandler(this.Form1_Activated); 74 | this.ResumeLayout(false); 75 | 76 | } 77 | 78 | #endregion 79 | 80 | private System.Windows.Forms.ListBox listBox1; 81 | private System.Windows.Forms.Button button1; 82 | 83 | } 84 | } 85 | 86 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/ModLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace BFP4FExplorerWV 13 | { 14 | public partial class ModLoader : Form 15 | { 16 | public string basePath; 17 | 18 | public ModLoader() 19 | { 20 | InitializeComponent(); 21 | } 22 | 23 | private void Form1_Activated(object sender, EventArgs e) 24 | { 25 | string[] mods = Directory.GetDirectories(basePath + "mods\\"); 26 | listBox1.Items.Clear(); 27 | foreach (string mod in mods) 28 | if (File.Exists(mod + "\\Mod.desc") && 29 | File.Exists(mod + "\\ServerArchives.con") && 30 | File.Exists(mod + "\\ClientArchives.con")) 31 | listBox1.Items.Add(mod.Substring(basePath.Length)); 32 | if (listBox1.Items.Count != 0) 33 | listBox1.SelectedIndex = 0; 34 | } 35 | 36 | private void button1_Click(object sender, EventArgs e) 37 | { 38 | LoadIt(); 39 | } 40 | 41 | private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e) 42 | { 43 | LoadIt(); 44 | } 45 | 46 | private void LoadIt() 47 | { 48 | int n = listBox1.SelectedIndex; 49 | if (n == -1) 50 | return; 51 | MainForm main = new MainForm(); 52 | BF2FileSystem.basepath = basePath + listBox1.Items[n] + "\\"; 53 | this.Hide(); 54 | main.ShowDialog(); 55 | this.Close(); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | 8 | namespace BFP4FExplorerWV 9 | { 10 | static class Program 11 | { 12 | /// 13 | /// Der Haupteinstiegspunkt für die Anwendung. 14 | /// 15 | [STAThread] 16 | static void Main() 17 | { 18 | Application.EnableVisualStyles(); 19 | Application.SetCompatibleTextRenderingDefault(false); 20 | 21 | //OpenFileDialog d = new OpenFileDialog(); 22 | //d.Filter = "*.bundledmesh|*.bundledmesh"; 23 | //if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK) 24 | //{ 25 | // byte[] data = File.ReadAllBytes(d.FileName); 26 | // BF2BundledMesh skm = new BF2BundledMesh(data); 27 | //} 28 | 29 | //return; 30 | 31 | if (!File.Exists("config.txt")) 32 | { 33 | FolderBrowserDialog fbd = new FolderBrowserDialog(); 34 | if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 35 | { 36 | ModLoader ml = new ModLoader(); 37 | ml.basePath = fbd.SelectedPath + "\\"; 38 | File.WriteAllText("config.txt", ml.basePath); 39 | Application.Run(ml); 40 | } 41 | } 42 | else 43 | { 44 | ModLoader ml = new ModLoader(); 45 | ml.basePath = File.ReadAllText("config.txt").Trim(); 46 | Application.Run(ml); 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die mit einer Assembly verknüpft sind. 8 | [assembly: AssemblyTitle("BFP4F_Explorer_WV")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BFP4F_Explorer_WV")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("378c2e30-abba-4f7a-97c0-4ecced3b3c10")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.42000 5 | // 6 | // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn 7 | // der Code erneut generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace BFP4FExplorerWV.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.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 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Resources/BuildDate.txt: -------------------------------------------------------------------------------- 1 | 11.03.2019_2049 2 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/Resources/Resource1.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.42000 5 | // 6 | // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn 7 | // der Code erneut generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace BFP4FExplorerWV.Resources { 12 | using System; 13 | 14 | 15 | /// 16 | /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. 17 | /// 18 | // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert 19 | // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. 20 | // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen 21 | // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resource1 { 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 Resource1() { 33 | } 34 | 35 | /// 36 | /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. 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("BFP4FExplorerWV.Resources.Resource1", typeof(Resource1).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle 51 | /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. 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 | /// Sucht eine lokalisierte Zeichenfolge, die 18.01.2019_2349 65 | /// ähnelt. 66 | /// 67 | internal static string BuildDate { 68 | get { 69 | return ResourceManager.GetString("BuildDate", resourceCulture); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/SelectablePictureBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Drawing; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace BFP4FExplorerWV 12 | { 13 | public class SelectablePictureBox : PictureBox 14 | { 15 | public SelectablePictureBox() 16 | { 17 | this.SetStyle(ControlStyles.Selectable, true); 18 | this.TabStop = true; 19 | } 20 | protected override void OnMouseDown(MouseEventArgs e) 21 | { 22 | this.Focus(); 23 | base.OnMouseDown(e); 24 | } 25 | protected override void OnEnter(EventArgs e) 26 | { 27 | this.Invalidate(); 28 | base.OnEnter(e); 29 | } 30 | protected override void OnLeave(EventArgs e) 31 | { 32 | this.Invalidate(); 33 | base.OnLeave(e); 34 | } 35 | protected override void OnPaint(PaintEventArgs pe) 36 | { 37 | base.OnPaint(pe); 38 | if (this.Focused) 39 | { 40 | var rc = this.ClientRectangle; 41 | rc.Inflate(-2, -2); 42 | ControlPaint.DrawFocusRectangle(pe.Graphics, rc); 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/TextEditor.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace BFP4FExplorerWV 2 | { 3 | partial class TextEditor 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.rtb1 = new System.Windows.Forms.RichTextBox(); 32 | this.button1 = new System.Windows.Forms.Button(); 33 | this.SuspendLayout(); 34 | // 35 | // rtb1 36 | // 37 | this.rtb1.DetectUrls = false; 38 | this.rtb1.Dock = System.Windows.Forms.DockStyle.Fill; 39 | this.rtb1.Font = new System.Drawing.Font("Courier New", 8.25F); 40 | this.rtb1.HideSelection = false; 41 | this.rtb1.Location = new System.Drawing.Point(0, 0); 42 | this.rtb1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5); 43 | this.rtb1.Name = "rtb1"; 44 | this.rtb1.Size = new System.Drawing.Size(625, 378); 45 | this.rtb1.TabIndex = 0; 46 | this.rtb1.Text = ""; 47 | this.rtb1.WordWrap = false; 48 | // 49 | // button1 50 | // 51 | this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; 52 | this.button1.Location = new System.Drawing.Point(0, 378); 53 | this.button1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5); 54 | this.button1.Name = "button1"; 55 | this.button1.Size = new System.Drawing.Size(625, 27); 56 | this.button1.TabIndex = 1; 57 | this.button1.Text = "Save Changes"; 58 | this.button1.UseVisualStyleBackColor = true; 59 | this.button1.Click += new System.EventHandler(this.button1_Click); 60 | // 61 | // TextEditor 62 | // 63 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); 64 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 65 | this.ClientSize = new System.Drawing.Size(625, 405); 66 | this.Controls.Add(this.rtb1); 67 | this.Controls.Add(this.button1); 68 | this.Font = new System.Drawing.Font("Courier New", 10F); 69 | this.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5); 70 | this.Name = "TextEditor"; 71 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 72 | this.Text = "Text Editor"; 73 | this.ResumeLayout(false); 74 | 75 | } 76 | 77 | #endregion 78 | 79 | public System.Windows.Forms.RichTextBox rtb1; 80 | private System.Windows.Forms.Button button1; 81 | } 82 | } -------------------------------------------------------------------------------- /BFP4FExplorerWV/TextEditor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace BFP4FExplorerWV 12 | { 13 | public partial class TextEditor : Form 14 | { 15 | public bool _exitOk = false; 16 | public TextEditor() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void button1_Click(object sender, EventArgs e) 22 | { 23 | _exitOk = true; 24 | this.Close(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/BFP4F_Explorer_WV.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/BFP4F_Explorer_WV.exe -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/BFP4F_Explorer_WV.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/Be.Windows.Forms.HexBox.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/Be.Windows.Forms.HexBox.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.D3DCompiler.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.D3DCompiler.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.DXGI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.DXGI.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.Desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.Desktop.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.Direct2D1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.Direct2D1.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.Direct3D11.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.Direct3D11.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.Mathematics.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.Mathematics.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/SharpDX.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/SharpDX.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/config.txt: -------------------------------------------------------------------------------- 1 | D:\test\BFP4FServerWV.RC6\ -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/res/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/res/default.png -------------------------------------------------------------------------------- /BFP4FExplorerWV/bin/x86/Release/texconv.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/bin/x86/Release/texconv.exe -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.D3DCompiler.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.D3DCompiler.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.D3DCompiler.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.D3DCompiler.pdb -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.DXGI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.DXGI.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.DXGI.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.DXGI.pdb -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Desktop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Desktop.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Desktop.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Desktop.pdb -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Direct2D1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Direct2D1.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Direct2D1.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Direct2D1.pdb -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Direct3D11.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Direct3D11.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Direct3D11.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Direct3D11.pdb -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Mathematics.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Mathematics.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.Mathematics.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.Mathematics.pdb -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.dll -------------------------------------------------------------------------------- /BFP4FExplorerWV/dll/SharpDX.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FExplorerWV/dll/SharpDX.pdb -------------------------------------------------------------------------------- /BFP4FLauncherWV/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/BFP4FLauncherWV.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | de-DE 11 | false 12 | 13 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Components/AsyncNotification/AsyncStats.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using BlazeLibWV; 7 | using System.Net.Sockets; 8 | 9 | namespace BFP4FLauncherWV 10 | { 11 | public static class AsyncStats 12 | { 13 | public static void GetStatsAsyncNotification(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 14 | { 15 | List input = Blaze.ReadPacketContent(p); 16 | string statSpace = ((Blaze.TdfString)input[2]).Value; 17 | long vid = ((Blaze.TdfInteger)input[7]).Value; 18 | long eid = ((List)((Blaze.TdfList)input[1]).List)[0]; 19 | List Result = new List(); 20 | Result.Add(Blaze.TdfString.Create("GRNM", statSpace)); 21 | Result.Add(Blaze.TdfString.Create("KEY\0", "No_Scope_Defined")); 22 | Result.Add(Blaze.TdfInteger.Create("LAST", 1)); 23 | List STS = new List(); 24 | List STAT = new List(); 25 | List e0 = new List(); 26 | e0.Add(Blaze.TdfInteger.Create("EID\0", eid)); 27 | e0.Add(Blaze.TdfDoubleVal.Create("ETYP", new Blaze.DoubleVal(30722, 1))); 28 | e0.Add(Blaze.TdfInteger.Create("POFF", 0)); 29 | List values = new List(); 30 | if (statSpace == "crit") 31 | values.AddRange(new string[] { pi.profile.level.ToString(), 32 | pi.profile.xp.ToString(), 33 | "10000" }); 34 | else 35 | values.AddRange(new string[] { pi.profile.kit.ToString(), 36 | pi.profile.head.ToString(), 37 | pi.profile.face.ToString(), 38 | pi.profile.shirt.ToString()}); 39 | e0.Add(Blaze.TdfList.Create("STAT", 1, values.Count, values)); 40 | STAT.Add(Blaze.TdfStruct.Create("0", e0)); 41 | STS.Add(Blaze.TdfList.Create("STAT", 3, STAT.Count, STAT)); 42 | Result.Add(Blaze.TdfStruct.Create("STS\0", STS)); 43 | Result.Add(Blaze.TdfInteger.Create("VID\0", vid)); 44 | byte[] buff = Blaze.CreatePacket(7, 0x32, 0, 0x2000, 0, Result); 45 | ns.Write(buff, 0, buff.Length); 46 | ns.Flush(); 47 | BlazeServer.Log("[CLNT] #" + pi.userId + " [0007:0032] GetStatsAsyncNotification", System.Drawing.Color.Black); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Components/AsyncNotification/AsyncUserSessions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using BlazeLibWV; 7 | using System.Net.Sockets; 8 | 9 | namespace BFP4FLauncherWV 10 | { 11 | public static class AsyncUserSessions 12 | { 13 | public static void UserSessionExtendedDataUpdateNotification(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 14 | { 15 | List Result = new List(); 16 | Result.Add(BlazeHelper.CreateUserDataStruct(pi)); 17 | Result.Add(Blaze.TdfInteger.Create("USID", pi.userId)); 18 | byte[] buff = Blaze.CreatePacket(0x7802, 1, 0, 0x2000, 0, Result); 19 | ns.Write(buff, 0, buff.Length); 20 | ns.Flush(); 21 | BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] UserSessionExtendedDataUpdateNotification", System.Drawing.Color.Black); 22 | } 23 | 24 | public static void NotifyUserAdded(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 25 | { 26 | List result = new List(); 27 | result.Add(BlazeHelper.CreateUserDataStruct(pi)); 28 | result.Add(BlazeHelper.CreateUserStruct(pi)); 29 | byte[] buff = Blaze.CreatePacket(0x7802, 0x2, 0, 0x2000, 0, result); 30 | ns.Write(buff, 0, buff.Length); 31 | ns.Flush(); 32 | BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] NotifyUserAdded", System.Drawing.Color.Black); 33 | } 34 | 35 | public static void NotifyUserRemoved(PlayerInfo src, Blaze.Packet p, long pid, NetworkStream ns) 36 | { 37 | List result = new List(); 38 | result.Add(Blaze.TdfInteger.Create("BUID", pid)); 39 | byte[] buff = Blaze.CreatePacket(0x7802, 0x3, 0, 0x2000, 0, result); 40 | ns.Write(buff, 0, buff.Length); 41 | ns.Flush(); 42 | BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] NotifyUserRemoved", System.Drawing.Color.Black); 43 | } 44 | 45 | public static void NotifyUserStatus(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 46 | { 47 | List result = new List(); 48 | result.Add(Blaze.TdfInteger.Create("FLGS", 3)); 49 | result.Add(Blaze.TdfInteger.Create("ID\0\0", pi.userId)); 50 | byte[] buff = Blaze.CreatePacket(0x7802, 0x5, 0, 0x2000, 0, result); 51 | ns.Write(buff, 0, buff.Length); 52 | ns.Flush(); 53 | BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] NotifyUserStatus", System.Drawing.Color.Black); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Components/StatsComponent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BlazeLibWV; 8 | using System.Net.Sockets; 9 | 10 | 11 | namespace BFP4FLauncherWV 12 | { 13 | public static class StatsComponent 14 | { 15 | 16 | public static void HandlePacket(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 17 | { 18 | switch (p.Command) 19 | { 20 | case 0x4: 21 | GetStatGroup(p, pi, ns); 22 | break; 23 | case 0xF: 24 | GetKeyScopesMap(p, pi, ns); 25 | break; 26 | case 0x10: 27 | GetStatsByGroupAsync(p, pi, ns); 28 | break; 29 | } 30 | } 31 | 32 | public static void GetKeyScopesMap(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 33 | { 34 | List Result = new List(); 35 | List l1 = new List() { "ldgy" }; 36 | List l2 = new List(); 37 | List l3 = new List(); 38 | l3.Add(Blaze.TdfInteger.Create("AGKY", 0)); 39 | l3.Add(Blaze.TdfInteger.Create("ENAG", 0)); 40 | l3.Add(Blaze.TdfDoubleList.Create("KSVL", 0, 0, new List() { 0 }, new List() { 15 }, 1)); 41 | l2.Add(Blaze.TdfStruct.Create("0", l3)); 42 | Result.Add(Blaze.TdfDoubleList.Create("KSIT", 1, 3, l1, l2, 1)); 43 | byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result); 44 | ns.Write(buff, 0, buff.Length); 45 | ns.Flush(); 46 | } 47 | 48 | public static void GetStatGroup(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 49 | { 50 | List input = Blaze.ReadPacketContent(p); 51 | string which = ((Blaze.TdfString)input[0]).Value; 52 | List Result = new List(); 53 | Result.Add(Blaze.TdfString.Create("CNAM", which)); 54 | if (which == "const") 55 | { 56 | Result.Add(Blaze.TdfString.Create("DESC", "Constant stats")); 57 | Result.Add(Blaze.TdfDoubleVal.Create("ETYP", new Blaze.DoubleVal(30722, 1))); 58 | Result.Add(Blaze.TdfString.Create("META", "")); 59 | Result.Add(Blaze.TdfString.Create("NAME", "const")); 60 | List STAT = new List(); 61 | STAT.Add(BlazeHelper.MakeStatGroupEntry(0, "const", "0", "CONST_KIT_LONG", "kit", "CONST_KIT")); 62 | STAT.Add(BlazeHelper.MakeStatGroupEntry(1, "const", "2", "CONST_HEAD_LONG", "head", "CONST_HEAD")); 63 | STAT.Add(BlazeHelper.MakeStatGroupEntry(2, "const", "0", "CONST_HAIR_LONG", "hair", "CONST_HAIR")); 64 | STAT.Add(BlazeHelper.MakeStatGroupEntry(3, "const", "0", "CONST_FACIAL_FEATURE_LONG", "facialFeature", "CONST_FACIAL_FEATURE")); 65 | Result.Add(Blaze.TdfList.Create("STAT", 3, 4, STAT)); 66 | } 67 | if (which == "crit") 68 | { 69 | Result.Add(Blaze.TdfString.Create("DESC", "Critical stats")); 70 | Result.Add(Blaze.TdfDoubleVal.Create("ETYP", new Blaze.DoubleVal(30722, 1))); 71 | Result.Add(Blaze.TdfString.Create("META", "")); 72 | Result.Add(Blaze.TdfString.Create("NAME", "crit")); 73 | List STAT = new List(); 74 | STAT.Add(BlazeHelper.MakeStatGroupEntry(0, "crit", pi.profile.level.ToString(), "CRIT_LEVEL_LONG", "level", "CRIT_LEVEL")); 75 | STAT.Add(BlazeHelper.MakeStatGroupEntry(1, "crit", pi.profile.xp.ToString(), "CRIT_XP_LONG", "xp", "CRIT_XP")); 76 | STAT.Add(BlazeHelper.MakeStatGroupEntry(2, "crit", "10000", "CRIT_ELO_LONG", "elo", "CRIT_ELO")); 77 | Result.Add(Blaze.TdfList.Create("STAT", 3, 3, STAT)); 78 | } 79 | byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result); 80 | ns.Write(buff, 0, buff.Length); 81 | ns.Flush(); 82 | } 83 | 84 | public static void GetStatsByGroupAsync(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 85 | { 86 | byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List()); 87 | ns.Write(buff, 0, buff.Length); 88 | ns.Flush(); 89 | AsyncStats.GetStatsAsyncNotification(p, pi, ns); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Components/UserSessionComponent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using BlazeLibWV; 7 | using System.Net.Sockets; 8 | 9 | namespace BFP4FLauncherWV 10 | { 11 | public static class UserSessionComponent 12 | { 13 | 14 | public static void HandlePacket(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 15 | { 16 | switch (p.Command) 17 | { 18 | case 0xC: 19 | LookUpUser(p, pi, ns); 20 | break; 21 | case 0x14: 22 | UpdateNetworkInfo(p, pi, ns); 23 | break; 24 | } 25 | } 26 | 27 | public static void UpdateNetworkInfo(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 28 | { 29 | List input = Blaze.ReadPacketContent(p); 30 | Blaze.TdfUnion addr = (Blaze.TdfUnion)input[0]; 31 | Blaze.TdfStruct valu = (Blaze.TdfStruct)addr.UnionContent; 32 | Blaze.TdfStruct exip = (Blaze.TdfStruct)valu.Values[0]; 33 | Blaze.TdfStruct inip = (Blaze.TdfStruct)valu.Values[1]; 34 | pi.inIp = ((Blaze.TdfInteger)inip.Values[0]).Value; 35 | pi.exIp = ((Blaze.TdfInteger)exip.Values[0]).Value; 36 | pi.exPort = pi.inPort = (uint)((Blaze.TdfInteger)inip.Values[1]).Value; 37 | Blaze.TdfStruct nqos = (Blaze.TdfStruct)input[2]; 38 | pi.nat = ((Blaze.TdfInteger)nqos.Values[1]).Value; 39 | byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List()); 40 | ns.Write(buff, 0, buff.Length); 41 | ns.Flush(); 42 | AsyncUserSessions.UserSessionExtendedDataUpdateNotification(pi, p, pi, ns); 43 | } 44 | 45 | public static void LookUpUser(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) 46 | { 47 | List result = new List(); 48 | result.Add(BlazeHelper.CreateUserDataStruct(pi, "EDAT")); 49 | result.Add(Blaze.TdfInteger.Create("FLGS", 3)); 50 | result.Add(BlazeHelper.CreateUserStruct(pi)); 51 | byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, result); 52 | ns.Write(buff, 0, buff.Length); 53 | ns.Flush(); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace BFP4FLauncherWV 13 | { 14 | public partial class Form1 : Form 15 | { 16 | public Form1() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void Form1_Load(object sender, EventArgs e) 22 | { 23 | tabControl1.SelectTab("TabPage2"); 24 | this.Text += " - Build " + Resources.Resource1.BuildDate; 25 | RefreshProfiles(); 26 | } 27 | 28 | private void RefreshProfiles() 29 | { 30 | Profiles.Refresh(); 31 | toolStripComboBox1.Items.Clear(); 32 | foreach (Profile p in Profiles.profiles) 33 | toolStripComboBox1.Items.Add(p.id + ": " + p.name); 34 | } 35 | 36 | private void launchToolStripMenuItem_Click_1(object sender, EventArgs e) 37 | { 38 | string args = rtb1.Text.Replace("\r", "").Replace("\n", " "); 39 | while (args.Contains(" ")) 40 | args = args.Replace(" ", " "); 41 | Helper.RunShell("bfp4f.exe", args); 42 | } 43 | 44 | private void toolStripMenuItem1_Click(object sender, EventArgs e) 45 | { 46 | toolStripMenuItem1.Enabled = 47 | launchStandaloneToolStripMenuItem.Enabled = false; 48 | Start(); 49 | } 50 | 51 | private void Form1_FormClosing(object sender, FormClosingEventArgs e) 52 | { 53 | RedirectorServer.Stop(); 54 | BlazeServer.Stop(); 55 | MagmaServer.Stop(); 56 | Webserver.Stop(); 57 | QOSServer.Stop(); 58 | } 59 | 60 | private void launchStandaloneToolStripMenuItem_Click(object sender, EventArgs e) 61 | { 62 | toolStripMenuItem1.Enabled = 63 | launchStandaloneToolStripMenuItem.Enabled = false; 64 | RedirectorServer.targetPort = 30001; 65 | Start(); 66 | } 67 | 68 | private void Start() 69 | { 70 | BackendLog.Clear(); 71 | ProviderInfo.backendIP = toolStripTextBox3.Text; 72 | QOSServer.box = 73 | RedirectorServer.box = 74 | BlazeServer.box = rtb2; 75 | Webserver.box = rtb5; 76 | MagmaServer.box = rtb4; 77 | RedirectorServer.useSSL = checkBox1.Checked; 78 | RedirectorServer.Start(); 79 | BlazeServer.Start(); 80 | MagmaServer.Start(); 81 | Webserver.Start(); 82 | QOSServer.Start(); 83 | } 84 | 85 | private void toolStripMenuItem2_Click(object sender, EventArgs e) 86 | { 87 | string args = rtb3.Text.Replace("\r", "").Replace("\n", " "); 88 | while (args.Contains(" ")) 89 | args = args.Replace(" ", " "); 90 | Helper.RunShell("bfp4f_w32ded.exe", args); 91 | } 92 | 93 | private void killRunningProcessesToolStripMenuItem_Click(object sender, EventArgs e) 94 | { 95 | Helper.KillRunningProcesses(); 96 | } 97 | 98 | private void toolStripButton5_Click(object sender, EventArgs e) 99 | { 100 | int n = toolStripComboBox1.SelectedIndex; 101 | if (n == -1) 102 | return; 103 | Profile p = Profiles.profiles[n]; 104 | string args = Resources.Resource1.client_startup; 105 | args = args.Replace("#SESSION#", p.id.ToString()); 106 | args = args.Replace("#PLAYER#", p.name); 107 | args = args.Replace("#IP#", toolStripTextBox4.Text); 108 | Helper.RunShell("bfp4f.exe", args); 109 | } 110 | 111 | private void toolStripMenuItem3_Click(object sender, EventArgs e) 112 | { 113 | Form3 f = new Form3(); 114 | f.ShowDialog(); 115 | RefreshProfiles(); 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Form3.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace BFP4FLauncherWV 13 | { 14 | public partial class Form3 : Form 15 | { 16 | public Form3() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void Form3_Load(object sender, EventArgs e) 22 | { 23 | RefreshProfiles(); 24 | } 25 | 26 | private void RefreshProfiles() 27 | { 28 | Profiles.Refresh(); 29 | listBox1.Items.Clear(); 30 | foreach (Profile p in Profiles.profiles) 31 | listBox1.Items.Add(p.ToString()); 32 | } 33 | 34 | private void toolStripButton1_Click(object sender, EventArgs e) 35 | { 36 | string name = toolStripTextBox1.Text; 37 | Profiles.Refresh(); 38 | Profiles.Create(name); 39 | Profiles.Refresh(); 40 | RefreshProfiles(); 41 | } 42 | 43 | private void toolStripButton2_Click(object sender, EventArgs e) 44 | { 45 | int n = listBox1.SelectedIndex; 46 | if (n == -1) 47 | return; 48 | Profile p = Profiles.profiles[n]; 49 | string path = Profiles.getProfilePath(p.id); 50 | if (File.Exists(path)) 51 | File.Delete(path); 52 | Profiles.Refresh(); 53 | RefreshProfiles(); 54 | } 55 | 56 | private void toolStripButton3_Click(object sender, EventArgs e) 57 | { 58 | RefreshProfiles(); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Helper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Net.Security; 6 | using System.Net.Sockets; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Diagnostics; 10 | using System.Windows.Forms; 11 | 12 | namespace BFP4FLauncherWV 13 | { 14 | public static class Helper 15 | { 16 | public static List ConvertStringList(string data) 17 | { 18 | List res = new List(); 19 | string t = data.Replace("{", ""); 20 | string[] t2 = t.Split('}'); 21 | foreach (string line in t2) 22 | if (line.Trim() != "") 23 | res.Add(line.Trim()); 24 | return res; 25 | } 26 | public static void ConvertDoubleStringList(string data, out List list1, out List list2) 27 | { 28 | List res1 = new List(); 29 | List res2 = new List(); 30 | string t = data.Replace("{", ""); 31 | string[] t2 = t.Split('}'); 32 | foreach (string line in t2) 33 | if (line.Trim() != "") 34 | { 35 | string[] t3 = line.Trim().Split(';'); 36 | res1.Add(t3[0].Trim()); 37 | res2.Add(t3[1].Trim()); 38 | } 39 | list1 = res1; 40 | list2 = res2; 41 | } 42 | public static byte[] ReadContentSSL(SslStream sslStream) 43 | { 44 | MemoryStream res = new MemoryStream(); 45 | byte[] buff = new byte[0x10000]; 46 | sslStream.ReadTimeout = 100; 47 | int bytesRead; 48 | try 49 | { 50 | while ((bytesRead = sslStream.Read(buff, 0, 0x10000)) > 0) 51 | res.Write(buff, 0, bytesRead); 52 | } 53 | catch { } 54 | sslStream.Flush(); 55 | return res.ToArray(); 56 | } 57 | public static byte[] ReadContentTCP(NetworkStream Stream) 58 | { 59 | MemoryStream res = new MemoryStream(); 60 | byte[] buff = new byte[0x10000]; 61 | Stream.ReadTimeout = 100; 62 | int bytesRead; 63 | try 64 | { 65 | while ((bytesRead = Stream.Read(buff, 0, 0x10000)) > 0) 66 | res.Write(buff, 0, bytesRead); 67 | } 68 | catch { } 69 | Stream.Flush(); 70 | return res.ToArray(); 71 | } 72 | public static void RunShell(string file, string command) 73 | { 74 | Process process = new System.Diagnostics.Process(); 75 | ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 76 | startInfo.FileName = file; 77 | startInfo.Arguments = command; 78 | process.StartInfo = startInfo; 79 | process.Start(); 80 | } 81 | public static void KillRunningProcesses() 82 | { 83 | int countClient = 0, countServer = 0; 84 | foreach (var process in Process.GetProcessesByName("bfp4f")) 85 | { 86 | process.Kill(); 87 | countClient++; 88 | } 89 | foreach (var process in Process.GetProcessesByName("bfp4f_w32ded")) 90 | { 91 | process.Kill(); 92 | countServer++; 93 | } 94 | MessageBox.Show("Killed\nClient: " + countClient + "\nServer: " + countServer + "\nProcesses"); 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Info/GameInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using BlazeLibWV; 7 | 8 | namespace BFP4FLauncherWV 9 | { 10 | public class GameInfo 11 | { 12 | public int id; 13 | public bool isRunning; 14 | 15 | public Blaze.TdfDoubleList ATTR; 16 | public uint GSTA; 17 | public long GSET; 18 | public long VOIP; 19 | public string VSTR; 20 | public string GNAM; 21 | public int[] slotUse; 22 | public PlayerInfo[] players; 23 | 24 | public GameInfo() 25 | { 26 | players = new PlayerInfo[32]; 27 | slotUse = new int[32]; 28 | for (int i = 0; i < 32; i++) 29 | slotUse[i] = -1; 30 | } 31 | 32 | public byte getNextSlot() 33 | { 34 | for (byte i = 0; i < 32; i++) 35 | if (slotUse[i] == -1) 36 | return i; 37 | return 255; 38 | } 39 | 40 | public void setNextSlot(int id) 41 | { 42 | for (byte i = 0; i < 32; i++) 43 | if (slotUse[i] == -1) 44 | { 45 | slotUse[i] = id; 46 | return; 47 | } 48 | } 49 | 50 | public void removePlayer(int id) 51 | { 52 | for (byte i = 0; i < 32; i++) 53 | if (slotUse[i] == id) 54 | { 55 | slotUse[i] = -1; 56 | players[i] = null; 57 | return; 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Info/PlayerInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Net.Sockets; 7 | using System.Diagnostics; 8 | 9 | namespace BFP4FLauncherWV 10 | { 11 | public class PlayerInfo 12 | { 13 | public string version; 14 | public long userId; 15 | public long exIp, exPort; 16 | public long inIp, inPort; 17 | public long nat = 0; 18 | public long loc; 19 | public long slot; 20 | public long stat; 21 | public long cntx; 22 | public bool isServer; 23 | public GameInfo game; 24 | public NetworkStream ns; 25 | public Profile profile; 26 | public Stopwatch timeout; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Info/ProviderInfo.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 BFP4FLauncherWV 8 | { 9 | public static class ProviderInfo 10 | { 11 | public static string backendIP = "127.0.0.1"; 12 | public static string QOS_IP = "gossjcprod-qos01.ea.com"; 13 | public static int QOS_Port = 17502; 14 | public static string QOS_Name = "ea-sjc-prod"; 15 | public static string QOS_SName = "sjc"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Profile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace BFP4FLauncherWV 9 | { 10 | public class Profile 11 | { 12 | public string _raw; 13 | public string name; 14 | public long id; 15 | public long level = 1; 16 | public long xp = 806; 17 | public long kit = 1; 18 | public long head = 2; 19 | public long face = 7; 20 | public long shirt = 9; 21 | public static Profile Load(string filename) 22 | { 23 | string[] lines = File.ReadAllLines(filename); 24 | Profile p = new Profile(); 25 | p._raw = File.ReadAllText(filename); 26 | foreach (string line in lines) 27 | { 28 | string[] parts = line.Split('='); 29 | if (parts.Length != 2) continue; 30 | string what = parts[0].Trim().ToLower(); 31 | switch (what) 32 | { 33 | case "name": 34 | p.name = parts[1].Trim(); 35 | break; 36 | case "id": 37 | p.id = Convert.ToInt32(parts[1].Trim()); 38 | break; 39 | case "level": 40 | p.level = Convert.ToInt32(parts[1].Trim()); 41 | break; 42 | case "xp": 43 | p.xp = Convert.ToInt32(parts[1].Trim()); 44 | break; 45 | case "kit": 46 | p.kit = Convert.ToInt32(parts[1].Trim()); 47 | break; 48 | case "head": 49 | p.head = Convert.ToInt32(parts[1].Trim()); 50 | break; 51 | case "face": 52 | p.face = Convert.ToInt32(parts[1].Trim()); 53 | break; 54 | case "shirt": 55 | p.shirt = Convert.ToInt32(parts[1].Trim()); 56 | break; 57 | } 58 | } 59 | if (p.name == null || p.id == 0) 60 | return null; 61 | return p; 62 | } 63 | 64 | public override string ToString() 65 | { 66 | StringBuilder sb = new StringBuilder(); 67 | sb.Append("ID = " + id + ", "); 68 | sb.Append("Name = " + name + ", "); 69 | sb.Append("Level = " + level + ", "); 70 | sb.Append("XP = " + xp + ", "); 71 | sb.Append("Kit = " + kit + ", "); 72 | sb.Append("Head = " + head + ", "); 73 | sb.Append("Face = " + face + ", "); 74 | sb.Append("Shirt = " + shirt); 75 | return sb.ToString(); 76 | } 77 | } 78 | 79 | public static class Profiles 80 | { 81 | public static List profiles = new List(); 82 | public static void Refresh() 83 | { 84 | profiles = new List(); 85 | if (!Directory.Exists("backend")) 86 | Directory.CreateDirectory("backend"); 87 | if (!Directory.Exists("backend\\profiles")) 88 | Directory.CreateDirectory("backend\\profiles"); 89 | string[] files = Directory.GetFiles("backend\\profiles\\", "*.txt"); 90 | foreach (string file in files) 91 | { 92 | Profile p = Profile.Load(file); 93 | if (p != null) 94 | profiles.Add(p); 95 | } 96 | BlazeServer.Log("[MAIN] Loaded " + profiles.Count + " player profiles"); 97 | } 98 | 99 | public static string getProfilePath(long id) 100 | { 101 | return "backend\\profiles\\" + id.ToString("X8") + "_profile.txt"; 102 | } 103 | 104 | public static Profile Create(string name) 105 | { 106 | long id = 1000; 107 | while (File.Exists(getProfilePath(id))) 108 | id++; 109 | return Create(name, id); 110 | } 111 | 112 | public static Profile Create(string name, long id) 113 | { 114 | string profileContent = "name=" + name + "\nid=" + id + "\nlevel=1\nxp=806\nkit=1\nhead=2\nface=7\nshirt=9"; 115 | string filename = getProfilePath(id); 116 | File.WriteAllText(filename, profileContent, Encoding.Unicode); 117 | return Profile.Load(filename); 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace BFP4FLauncherWV 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form2()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die mit einer Assembly verknüpft sind. 8 | [assembly: AssemblyTitle("BFP4FLauncherWV")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BFP4FLauncherWV")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("e219b5b8-0d8f-4cfd-93e4-3242b8d490cc")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/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 BFP4FLauncherWV.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Resources/BuildDate.txt: -------------------------------------------------------------------------------- 1 | 11.03.2019_2049 2 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/Resources/redi.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FLauncherWV/Resources/redi.pfx -------------------------------------------------------------------------------- /BFP4FLauncherWV/Server/BackendLog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace BFP4FLauncherWV 9 | { 10 | public static class BackendLog 11 | { 12 | public static string logFile = "BackendLog.txt"; 13 | public static void Clear() 14 | { 15 | if (File.Exists(logFile)) 16 | File.Delete(logFile); 17 | } 18 | 19 | public static void Write(string s) 20 | { 21 | File.AppendAllText(logFile, s); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/bin/x86/Release/BFP4FLauncherWV.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FLauncherWV/bin/x86/Release/BFP4FLauncherWV.exe -------------------------------------------------------------------------------- /BFP4FLauncherWV/bin/x86/Release/BFP4FLauncherWV.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BFP4FLauncherWV/bin/x86/Release/BlazeLibWV.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FLauncherWV/bin/x86/Release/BlazeLibWV.dll -------------------------------------------------------------------------------- /BFP4FToolsWV.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BFP4FToolsWV.v11.suo -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Security.Permissions; 5 | using System.Runtime.InteropServices; 6 | 7 | // 8 | // General Information about an assembly is controlled through the following 9 | // set of attributes. Change these attribute values to modify the information 10 | // associated with an assembly. 11 | // 12 | [assembly: AssemblyTitle("Be.Windows.Forms.HexBox")] 13 | [assembly: AssemblyDescription("hex edit control (C# DOTNET)")] 14 | [assembly: AssemblyConfiguration("")] 15 | [assembly: AssemblyCompany("Be")] 16 | [assembly: AssemblyProduct("Be.Windows.Forms.HexBox")] 17 | [assembly: AssemblyCopyright("")] 18 | [assembly: AssemblyTrademark("")] 19 | [assembly: AssemblyCulture("")] 20 | 21 | // 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Revision and Build Numbers 30 | // by using the '*' as shown below: 31 | 32 | [assembly: AssemblyVersion("1.6.0.*")] 33 | 34 | // 35 | // In order to sign your assembly you must specify a key to use. Refer to the 36 | // Microsoft .NET Framework documentation for more information on assembly signing. 37 | // 38 | // Use the attributes below to control which key is used for signing. 39 | // 40 | // Notes: 41 | // (*) If no key is specified, the assembly is not signed. 42 | // (*) KeyName refers to a key that has been installed in the Crypto Service 43 | // Provider (CSP) on your machine. KeyFile refers to a file which contains 44 | // a key. 45 | // (*) If the KeyFile and the KeyName values are both specified, the 46 | // following processing occurs: 47 | // (1) If the KeyName can be found in the CSP, that key is used. 48 | // (2) If the KeyName does not exist and the KeyFile does exist, the key 49 | // in the KeyFile is installed into the CSP and used. 50 | // (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. 51 | // When specifying the KeyFile, the location of the KeyFile should be 52 | // relative to the project output directory which is 53 | // %Project Directory%\obj\. For example, if your KeyFile is 54 | // located in the project directory, you would specify the AssemblyKeyFile 55 | // attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] 56 | // (*) Delay Signing is an advanced option - see the Microsoft .NET Framework 57 | // documentation for more information on this. 58 | // 59 | [assembly: AssemblyDelaySign(false)] 60 | 61 | //[assembly: AssemblyKeyFile("../../HexBox.snk")] 62 | //[assembly: AssemblyKeyName("")] 63 | 64 | //[assembly:IsolatedStorageFilePermission(SecurityAction.RequestRefuse, UserQuota=1048576)] 65 | //[assembly:SecurityPermission(SecurityAction.RequestRefuse, UnmanagedCode=true)] 66 | //[assembly:FileIOPermission(SecurityAction.RequestOptional, Unrestricted=true)] 67 | 68 | [assembly:CLSCompliant(true)] 69 | 70 | [assembly:ComVisible(false)] -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/ByteCharConverters.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// The interface for objects that can translate between characters and bytes. 9 | /// 10 | public interface IByteCharConverter 11 | { 12 | /// 13 | /// Returns the character to display for the byte passed across. 14 | /// 15 | /// 16 | /// 17 | char ToChar(byte b); 18 | 19 | /// 20 | /// Returns the byte to use when the character passed across is entered during editing. 21 | /// 22 | /// 23 | /// 24 | byte ToByte(char c); 25 | } 26 | 27 | /// 28 | /// The default implementation. 29 | /// 30 | public class DefaultByteCharConverter : IByteCharConverter 31 | { 32 | /// 33 | /// Returns the character to display for the byte passed across. 34 | /// 35 | /// 36 | /// 37 | public virtual char ToChar(byte b) 38 | { 39 | return b > 0x1F && !(b > 0x7E && b < 0xA0) ? (char)b : '.'; 40 | } 41 | 42 | /// 43 | /// Returns the byte to use for the character passed across. 44 | /// 45 | /// 46 | /// 47 | public virtual byte ToByte(char c) 48 | { 49 | return (byte)c; 50 | } 51 | 52 | /// 53 | /// Returns a description of the byte char provider. 54 | /// 55 | /// 56 | public override string ToString() 57 | { 58 | return "ANSI (Default)"; 59 | } 60 | } 61 | 62 | /// 63 | /// A byte char provider that can translate bytes encoded in codepage 500 EBCDIC 64 | /// 65 | public class EbcdicByteCharProvider : IByteCharConverter 66 | { 67 | /// 68 | /// The IBM EBCDIC code page 500 encoding. Note that this is not always supported by .NET, 69 | /// the underlying platform has to provide support for it. 70 | /// 71 | private Encoding _ebcdicEncoding = Encoding.GetEncoding(500); 72 | 73 | /// 74 | /// Returns the EBCDIC character corresponding to the byte passed across. 75 | /// 76 | /// 77 | /// 78 | public virtual char ToChar(byte b) 79 | { 80 | string encoded = _ebcdicEncoding.GetString(new byte[] { b }); 81 | return encoded.Length > 0 ? encoded[0] : '.'; 82 | } 83 | 84 | /// 85 | /// Returns the byte corresponding to the EBCDIC character passed across. 86 | /// 87 | /// 88 | /// 89 | public virtual byte ToByte(char c) 90 | { 91 | byte[] decoded = _ebcdicEncoding.GetBytes(new char[] { c }); 92 | return decoded.Length > 0 ? decoded[0] : (byte)0; 93 | } 94 | 95 | /// 96 | /// Returns a description of the byte char provider. 97 | /// 98 | /// 99 | public override string ToString() 100 | { 101 | return "EBCDIC (Code Page 500)"; 102 | } 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/ByteCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using System.Collections; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Represents a collection of bytes. 9 | /// 10 | public class ByteCollection : CollectionBase 11 | { 12 | /// 13 | /// Initializes a new instance of ByteCollection class. 14 | /// 15 | public ByteCollection() { } 16 | 17 | /// 18 | /// Initializes a new instance of ByteCollection class. 19 | /// 20 | /// an array of bytes to add to collection 21 | public ByteCollection(byte[] bs) 22 | { AddRange(bs); } 23 | 24 | /// 25 | /// Gets or sets the value of a byte 26 | /// 27 | public byte this[int index] 28 | { 29 | get { return (byte)List[index]; } 30 | set { List[index] = value; } 31 | } 32 | 33 | /// 34 | /// Adds a byte into the collection. 35 | /// 36 | /// the byte to add 37 | public void Add(byte b) 38 | { List.Add(b); } 39 | 40 | /// 41 | /// Adds a range of bytes to the collection. 42 | /// 43 | /// the bytes to add 44 | public void AddRange(byte[] bs) 45 | { InnerList.AddRange(bs); } 46 | 47 | /// 48 | /// Removes a byte from the collection. 49 | /// 50 | /// the byte to remove 51 | public void Remove(byte b) 52 | { List.Remove(b); } 53 | 54 | /// 55 | /// Removes a range of bytes from the collection. 56 | /// 57 | /// the index of the start byte 58 | /// the count of the bytes to remove 59 | public void RemoveRange(int index, int count) 60 | { InnerList.RemoveRange(index, count); } 61 | 62 | /// 63 | /// Inserts a range of bytes to the collection. 64 | /// 65 | /// the index of start byte 66 | /// an array of bytes to insert 67 | public void InsertRange(int index, byte[] bs) 68 | { InnerList.InsertRange(index, bs); } 69 | 70 | /// 71 | /// Gets all bytes in the array 72 | /// 73 | /// an array of bytes. 74 | public byte[] GetBytes() 75 | { 76 | byte[] bytes = new byte[Count]; 77 | InnerList.CopyTo(0, bytes, 0, bytes.Length); 78 | return bytes; 79 | } 80 | 81 | /// 82 | /// Inserts a byte to the collection. 83 | /// 84 | /// the index 85 | /// a byte to insert 86 | public void Insert(int index, byte b) 87 | { 88 | InnerList.Insert(index, b); 89 | } 90 | 91 | /// 92 | /// Returns the index of the given byte. 93 | /// 94 | public int IndexOf(byte b) 95 | { 96 | return InnerList.IndexOf(b); 97 | } 98 | 99 | /// 100 | /// Returns true, if the byte exists in the collection. 101 | /// 102 | public bool Contains(byte b) 103 | { 104 | return InnerList.Contains(b); 105 | } 106 | 107 | /// 108 | /// Copies the content of the collection into the given array. 109 | /// 110 | public void CopyTo(byte[] bs, int index) 111 | { 112 | InnerList.CopyTo(bs, index); 113 | } 114 | 115 | /// 116 | /// Copies the content of the collection into an array. 117 | /// 118 | /// the array containing all bytes. 119 | public byte[] ToArray() 120 | { 121 | byte[] data = new byte[this.Count]; 122 | this.CopyTo(data, 0); 123 | return data; 124 | } 125 | 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/BytePositionInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Represents a position in the HexBox control 9 | /// 10 | struct BytePositionInfo 11 | { 12 | public BytePositionInfo(long index, int characterPosition) 13 | { 14 | _index = index; 15 | _characterPosition = characterPosition; 16 | } 17 | 18 | public int CharacterPosition 19 | { 20 | get { return _characterPosition; } 21 | } int _characterPosition; 22 | 23 | public long Index 24 | { 25 | get { return _index; } 26 | } long _index; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/DataBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Be.Windows.Forms 4 | { 5 | internal abstract class DataBlock 6 | { 7 | internal DataMap _map; 8 | internal DataBlock _nextBlock; 9 | internal DataBlock _previousBlock; 10 | 11 | public abstract long Length 12 | { 13 | get; 14 | } 15 | 16 | public DataMap Map 17 | { 18 | get 19 | { 20 | return _map; 21 | } 22 | } 23 | 24 | public DataBlock NextBlock 25 | { 26 | get 27 | { 28 | return _nextBlock; 29 | } 30 | } 31 | 32 | public DataBlock PreviousBlock 33 | { 34 | get 35 | { 36 | return _previousBlock; 37 | } 38 | } 39 | 40 | public abstract void RemoveBytes(long position, long count); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/DynamicByteProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Be.Windows.Forms 5 | { 6 | /// 7 | /// Byte provider for a small amount of data. 8 | /// 9 | public class DynamicByteProvider : IByteProvider 10 | { 11 | /// 12 | /// Contains information about changes. 13 | /// 14 | bool _hasChanges; 15 | /// 16 | /// Contains a byte collection. 17 | /// 18 | List _bytes; 19 | 20 | /// 21 | /// Initializes a new instance of the DynamicByteProvider class. 22 | /// 23 | /// 24 | public DynamicByteProvider(byte[] data) : this(new List(data)) 25 | { 26 | } 27 | 28 | /// 29 | /// Initializes a new instance of the DynamicByteProvider class. 30 | /// 31 | /// 32 | public DynamicByteProvider(List bytes) 33 | { 34 | _bytes = bytes; 35 | } 36 | 37 | /// 38 | /// Raises the Changed event. 39 | /// 40 | void OnChanged(EventArgs e) 41 | { 42 | _hasChanges = true; 43 | 44 | if(Changed != null) 45 | Changed(this, e); 46 | } 47 | 48 | /// 49 | /// Raises the LengthChanged event. 50 | /// 51 | void OnLengthChanged(EventArgs e) 52 | { 53 | if(LengthChanged != null) 54 | LengthChanged(this, e); 55 | } 56 | 57 | /// 58 | /// Gets the byte collection. 59 | /// 60 | public List Bytes 61 | { 62 | get { return _bytes; } 63 | } 64 | 65 | #region IByteProvider Members 66 | /// 67 | /// True, when changes are done. 68 | /// 69 | public bool HasChanges() 70 | { 71 | return _hasChanges; 72 | } 73 | 74 | /// 75 | /// Applies changes. 76 | /// 77 | public void ApplyChanges() 78 | { 79 | _hasChanges = false; 80 | } 81 | 82 | /// 83 | /// Occurs, when the write buffer contains new changes. 84 | /// 85 | public event EventHandler Changed; 86 | 87 | /// 88 | /// Occurs, when InsertBytes or DeleteBytes method is called. 89 | /// 90 | public event EventHandler LengthChanged; 91 | 92 | 93 | /// 94 | /// Reads a byte from the byte collection. 95 | /// 96 | /// the index of the byte to read 97 | /// the byte 98 | public byte ReadByte(long index) 99 | { return _bytes[(int)index]; } 100 | 101 | /// 102 | /// Write a byte into the byte collection. 103 | /// 104 | /// the index of the byte to write. 105 | /// the byte 106 | public void WriteByte(long index, byte value) 107 | { 108 | _bytes[(int)index] = value; 109 | OnChanged(EventArgs.Empty); 110 | } 111 | 112 | /// 113 | /// Deletes bytes from the byte collection. 114 | /// 115 | /// the start index of the bytes to delete. 116 | /// the length of bytes to delete. 117 | public void DeleteBytes(long index, long length) 118 | { 119 | int internal_index = (int)Math.Max(0, index); 120 | int internal_length = (int)Math.Min((int)Length, length); 121 | _bytes.RemoveRange(internal_index, internal_length); 122 | 123 | OnLengthChanged(EventArgs.Empty); 124 | OnChanged(EventArgs.Empty); 125 | } 126 | 127 | /// 128 | /// Inserts byte into the byte collection. 129 | /// 130 | /// the start index of the bytes in the byte collection 131 | /// the byte array to insert 132 | public void InsertBytes(long index, byte[] bs) 133 | { 134 | _bytes.InsertRange((int)index, bs); 135 | 136 | OnLengthChanged(EventArgs.Empty); 137 | OnChanged(EventArgs.Empty); 138 | } 139 | 140 | /// 141 | /// Gets the length of the bytes in the byte collection. 142 | /// 143 | public long Length 144 | { 145 | get 146 | { 147 | return _bytes.Count; 148 | } 149 | } 150 | 151 | /// 152 | /// Returns true 153 | /// 154 | public bool SupportsWriteByte() 155 | { 156 | return true; 157 | } 158 | 159 | /// 160 | /// Returns true 161 | /// 162 | public bool SupportsInsertBytes() 163 | { 164 | return true; 165 | } 166 | 167 | /// 168 | /// Returns true 169 | /// 170 | public bool SupportsDeleteBytes() 171 | { 172 | return true; 173 | } 174 | #endregion 175 | 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/FileDataBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Be.Windows.Forms 4 | { 5 | internal sealed class FileDataBlock : DataBlock 6 | { 7 | long _length; 8 | long _fileOffset; 9 | 10 | public FileDataBlock(long fileOffset, long length) 11 | { 12 | _fileOffset = fileOffset; 13 | _length = length; 14 | } 15 | 16 | public long FileOffset 17 | { 18 | get 19 | { 20 | return _fileOffset; 21 | } 22 | } 23 | 24 | public override long Length 25 | { 26 | get 27 | { 28 | return _length; 29 | } 30 | } 31 | 32 | public void SetFileOffset(long value) 33 | { 34 | _fileOffset = value; 35 | } 36 | 37 | public void RemoveBytesFromEnd(long count) 38 | { 39 | if (count > _length) 40 | { 41 | throw new ArgumentOutOfRangeException("count"); 42 | } 43 | 44 | _length -= count; 45 | } 46 | 47 | public void RemoveBytesFromStart(long count) 48 | { 49 | if (count > _length) 50 | { 51 | throw new ArgumentOutOfRangeException("count"); 52 | } 53 | 54 | _fileOffset += count; 55 | _length -= count; 56 | } 57 | 58 | public override void RemoveBytes(long position, long count) 59 | { 60 | if (position > _length) 61 | { 62 | throw new ArgumentOutOfRangeException("position"); 63 | } 64 | 65 | if (position + count > _length) 66 | { 67 | throw new ArgumentOutOfRangeException("count"); 68 | } 69 | 70 | long prefixLength = position; 71 | long prefixFileOffset = _fileOffset; 72 | 73 | long suffixLength = _length - count - prefixLength; 74 | long suffixFileOffset = _fileOffset + position + count; 75 | 76 | if (prefixLength > 0 && suffixLength > 0) 77 | { 78 | _fileOffset = prefixFileOffset; 79 | _length = prefixLength; 80 | _map.AddAfter(this, new FileDataBlock(suffixFileOffset, suffixLength)); 81 | return; 82 | } 83 | 84 | if (prefixLength > 0) 85 | { 86 | _fileOffset = prefixFileOffset; 87 | _length = prefixLength; 88 | } 89 | else 90 | { 91 | _fileOffset = suffixFileOffset; 92 | _length = suffixLength; 93 | } 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/FindOptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Defines the type of the Find operation. 9 | /// 10 | public enum FindType 11 | { 12 | /// 13 | /// Used for Text Find operations 14 | /// 15 | Text, 16 | /// 17 | /// Used for Hex Find operations 18 | /// 19 | Hex 20 | } 21 | 22 | /// 23 | /// Defines all state information nee 24 | /// 25 | public class FindOptions 26 | { 27 | /// 28 | /// Gets or sets whether the Find options are valid 29 | /// 30 | public bool IsValid { get; set; } 31 | /// 32 | /// Gets the Find buffer used for case insensitive Find operations. This is the binary representation of Text. 33 | /// 34 | internal byte[] FindBuffer { get; private set; } 35 | /// 36 | /// Gets the Find buffer used for case sensitive Find operations. This is the binary representation of Text in lower case format. 37 | /// 38 | internal byte[] FindBufferLowerCase { get; private set; } 39 | /// 40 | /// Gets the Find buffer used for case sensitive Find operations. This is the binary representation of Text in upper case format. 41 | /// 42 | internal byte[] FindBufferUpperCase { get; private set; } 43 | /// 44 | /// Contains the MatchCase value 45 | /// 46 | bool _matchCase; 47 | /// 48 | /// Gets or sets the value, whether the Find operation is case sensitive or not. 49 | /// 50 | public bool MatchCase 51 | { 52 | get { return _matchCase; } 53 | set 54 | { 55 | _matchCase = value; 56 | UpdateFindBuffer(); 57 | } 58 | } 59 | /// 60 | /// Contains the text that should be found. 61 | /// 62 | string _text; 63 | /// 64 | /// Gets or sets the text that should be found. Only used, when Type is FindType.Hex. 65 | /// 66 | public string Text 67 | { 68 | get { return _text; } 69 | set 70 | { 71 | _text = value; 72 | UpdateFindBuffer(); 73 | } 74 | } 75 | /// 76 | /// Gets or sets the hex buffer that should be found. Only used, when Type is FindType.Hex. 77 | /// 78 | public byte[] Hex { get; set; } 79 | /// 80 | /// Gets or sets the type what should be searched. 81 | /// 82 | public FindType Type { get; set; } 83 | /// 84 | /// Updates the find buffer. 85 | /// 86 | void UpdateFindBuffer() 87 | { 88 | string text = this.Text != null ? this.Text : string.Empty; 89 | FindBuffer = ASCIIEncoding.ASCII.GetBytes(text); 90 | FindBufferLowerCase = ASCIIEncoding.ASCII.GetBytes(text.ToLower()); 91 | FindBufferUpperCase = ASCIIEncoding.ASCII.GetBytes(text.ToUpper()); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/HexBox.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Be.Windows.Forms.HexBox/HexBox.bmp -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/HexBox.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Be.Windows.Forms.HexBox/HexBox.cs -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/HexBox.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Be.Windows.Forms.HexBox/HexBox.snk -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/HexCasing.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Specifies the case of hex characters in the HexBox control 9 | /// 10 | public enum HexCasing 11 | { 12 | /// 13 | /// Converts all characters to uppercase. 14 | /// 15 | Upper = 0, 16 | /// 17 | /// Converts all characters to lowercase. 18 | /// 19 | Lower = 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/IByteProvider.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Be.Windows.Forms.HexBox/IByteProvider.cs -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/MemoryDataBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Be.Windows.Forms 4 | { 5 | internal sealed class MemoryDataBlock : DataBlock 6 | { 7 | byte[] _data; 8 | 9 | public MemoryDataBlock(byte data) 10 | { 11 | _data = new byte[] { data }; 12 | } 13 | 14 | public MemoryDataBlock(byte[] data) 15 | { 16 | if (data == null) 17 | { 18 | throw new ArgumentNullException("data"); 19 | } 20 | 21 | _data = (byte[])data.Clone(); 22 | } 23 | 24 | public override long Length 25 | { 26 | get 27 | { 28 | return _data.LongLength; 29 | } 30 | } 31 | 32 | public byte[] Data 33 | { 34 | get 35 | { 36 | return _data; 37 | } 38 | } 39 | 40 | public void AddByteToEnd(byte value) 41 | { 42 | byte[] newData = new byte[_data.LongLength + 1]; 43 | _data.CopyTo(newData, 0); 44 | newData[newData.LongLength - 1] = value; 45 | _data = newData; 46 | } 47 | 48 | public void AddByteToStart(byte value) 49 | { 50 | byte[] newData = new byte[_data.LongLength + 1]; 51 | newData[0] = value; 52 | _data.CopyTo(newData, 1); 53 | _data = newData; 54 | } 55 | 56 | public void InsertBytes(long position, byte[] data) 57 | { 58 | byte[] newData = new byte[_data.LongLength + data.LongLength]; 59 | if (position > 0) 60 | { 61 | Array.Copy(_data, 0, newData, 0, position); 62 | } 63 | Array.Copy(data, 0, newData, position, data.LongLength); 64 | if (position < _data.LongLength) 65 | { 66 | Array.Copy(_data, position, newData, position + data.LongLength, _data.LongLength - position); 67 | } 68 | _data = newData; 69 | } 70 | 71 | public override void RemoveBytes(long position, long count) 72 | { 73 | byte[] newData = new byte[_data.LongLength - count]; 74 | 75 | if (position > 0) 76 | { 77 | Array.Copy(_data, 0, newData, 0, position); 78 | } 79 | if (position + count < _data.LongLength) 80 | { 81 | Array.Copy(_data, position + count, newData, position, newData.LongLength - position); 82 | } 83 | 84 | _data = newData; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/NativeMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | internal static class NativeMethods 8 | { 9 | // Caret definitions 10 | [DllImport("user32.dll", SetLastError=true)] 11 | public static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight); 12 | 13 | [DllImport("user32.dll", SetLastError=true)] 14 | public static extern bool ShowCaret(IntPtr hWnd); 15 | 16 | [DllImport("user32.dll", SetLastError=true)] 17 | public static extern bool DestroyCaret(); 18 | 19 | [DllImport("user32.dll", SetLastError=true)] 20 | public static extern bool SetCaretPos(int X, int Y); 21 | 22 | // Key definitions 23 | public const int WM_KEYDOWN = 0x100; 24 | public const int WM_KEYUP = 0x101; 25 | public const int WM_CHAR = 0x102; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34003 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 Be.Windows.Forms.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", "4.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("Be.Windows.Forms.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 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/Util.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | static class Util 8 | { 9 | /// 10 | /// Contains true, if we are in design mode of Visual Studio 11 | /// 12 | private static bool _designMode; 13 | 14 | /// 15 | /// Initializes an instance of Util class 16 | /// 17 | static Util() 18 | { 19 | // design mode is true if host process is: Visual Studio, Visual Studio Express Versions (C#, VB, C++) or SharpDevelop 20 | var designerHosts = new List() { "devenv", "vcsexpress", "vbexpress", "vcexpress", "sharpdevelop" }; 21 | using (var process = System.Diagnostics.Process.GetCurrentProcess()) 22 | { 23 | var processName = process.ProcessName.ToLower(); 24 | _designMode = designerHosts.Contains(processName); 25 | } 26 | } 27 | 28 | /// 29 | /// Gets true, if we are in design mode of Visual Studio 30 | /// 31 | /// 32 | /// In Visual Studio 2008 SP1 the designer is crashing sometimes on windows forms. 33 | /// The DesignMode property of Control class is buggy and cannot be used, so use our own implementation instead. 34 | /// 35 | public static bool DesignMode 36 | { 37 | get 38 | { 39 | return _designMode; 40 | } 41 | } 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Be.Windows.Forms.HexBox/bin/x86/Release/Be.Windows.Forms.HexBox.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Be.Windows.Forms.HexBox/bin/x86/Release/Be.Windows.Forms.HexBox.dll -------------------------------------------------------------------------------- /BlazeLibWV/BlazeLibWV.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {4053EF39-B6BE-4A51-8037-B3F3438D2371} 8 | Library 9 | Properties 10 | BlazeLibWV 11 | BlazeLibWV 12 | v4.5 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | true 34 | bin\x86\Debug\ 35 | DEBUG;TRACE 36 | full 37 | x86 38 | prompt 39 | ManagedMinimumRules.ruleset 40 | 41 | 42 | bin\x86\Release\ 43 | TRACE 44 | false 45 | pdbonly 46 | x86 47 | prompt 48 | ManagedMinimumRules.ruleset 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 73 | -------------------------------------------------------------------------------- /BlazeLibWV/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die mit einer Assembly verknüpft sind. 8 | [assembly: AssemblyTitle("BlazeLibWV")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BlazeLibWV")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("a537692a-65f2-44d0-807a-291f738f5876")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /BlazeLibWV/bin/x86/Release/BlazeLibWV.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BlazeLibWV/bin/x86/Release/BlazeLibWV.dll -------------------------------------------------------------------------------- /BlazeSharkWV/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BlazeSharkWV/BlazeSharkWV.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {CD67133E-B905-4CD1-ADBD-73E9E0F70BD4} 8 | WinExe 9 | Properties 10 | BlazeSharkWV 11 | BlazeSharkWV 12 | v4.5 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | true 36 | bin\x86\Debug\ 37 | DEBUG;TRACE 38 | full 39 | x86 40 | prompt 41 | ManagedMinimumRules.ruleset 42 | true 43 | 44 | 45 | bin\x86\Release\ 46 | TRACE 47 | false 48 | pdbonly 49 | x86 50 | prompt 51 | ManagedMinimumRules.ruleset 52 | true 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | Form 69 | 70 | 71 | Form1.cs 72 | 73 | 74 | 75 | 76 | Form1.cs 77 | 78 | 79 | ResXFileCodeGenerator 80 | Resources.Designer.cs 81 | Designer 82 | 83 | 84 | True 85 | Resources.resx 86 | 87 | 88 | SettingsSingleFileGenerator 89 | Settings.Designer.cs 90 | 91 | 92 | True 93 | Settings.settings 94 | True 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | {4053ef39-b6be-4a51-8037-b3f3438d2371} 103 | BlazeLibWV 104 | 105 | 106 | 107 | 114 | -------------------------------------------------------------------------------- /BlazeSharkWV/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace BlazeSharkWV 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /BlazeSharkWV/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die mit einer Assembly verknüpft sind. 8 | [assembly: AssemblyTitle("BlazeSharkWV")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BlazeSharkWV")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("617f2f02-8767-4395-a6a0-76e81012f85c")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /BlazeSharkWV/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.42000 5 | // 6 | // Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn 7 | // der Code neu generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace BlazeSharkWV.Properties 12 | { 13 | 14 | 15 | /// 16 | /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. 17 | /// 18 | // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse 19 | // über ein Tool wie ResGen oder Visual Studio automatisch generiert. 20 | // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen 21 | // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BlazeSharkWV.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle 56 | /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /BlazeSharkWV/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 BlazeSharkWV.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /BlazeSharkWV/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BlazeSharkWV/bin/x86/Release/BlazeLibWV.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BlazeSharkWV/bin/x86/Release/BlazeLibWV.dll -------------------------------------------------------------------------------- /BlazeSharkWV/bin/x86/Release/BlazeSharkWV.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/BlazeSharkWV/bin/x86/Release/BlazeSharkWV.exe -------------------------------------------------------------------------------- /BlazeSharkWV/bin/x86/Release/BlazeSharkWV.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Other/JavascriptInterfaceByWV.txt: -------------------------------------------------------------------------------- 1 | this 2 | .audio 3 | ..canApply 4 | ..eax 5 | ..hasEAX 6 | ..hasZenithBoard 7 | ..inCriticalState 8 | ..needRestart 9 | ..quality 10 | 11 | .backend 12 | ..onConnectionLost 13 | ..onConnectionEstablished 14 | 15 | .controls 16 | .._defaultGameControlMap 17 | ..activeMap 18 | ..forceSetLastInput 19 | ..getKeyMapping 20 | ..getMappedString 21 | ..invertMouse 22 | ..lastDuplicateInput 23 | ..mapInput 24 | ..mousePitchFactor 25 | ..mouseSensitivityMultiplier 26 | ..mouseSmoothing 27 | ..mouseYawFactor 28 | 29 | .doll 30 | ..addItem 31 | ..addItemEx 32 | ..camAzimuth 33 | ..camDistance 34 | ..camTransitionTime 35 | ..camZenith 36 | ..clearItems 37 | ..defaultCamDistance 38 | ..getDestRect 39 | ..getItems 40 | ..hasItem 41 | ..idealCamAzimuth 42 | ..idealCamDistance 43 | ..idealCamZenith 44 | ..init 45 | ..playEmote 46 | ..removeItem 47 | ..saveMugshot 48 | ..setCameraLookAt 49 | ..setDestRect 50 | ..setTeam 51 | ..teleportCamera 52 | ..textureHeight 53 | ..textureWidth 54 | ..updateItems 55 | ..visible 56 | 57 | .frontend 58 | ..onDisabled 59 | ..onEnabled 60 | ..activationDetails 61 | ..activationReason 62 | 63 | .frontendCoreLoop 64 | ..asyncPaint 65 | 66 | .game 67 | ..enableMusic 68 | ..firstTimePlaying 69 | ..hostServer 70 | ..loadingProgress 71 | ..mapName 72 | ..markTutorialAsCompleted 73 | ..onBeginRoundStateChanged 74 | ..onLoadingAborted 75 | ..onLoadingComplete 76 | ..onLoadingProgressUpdated 77 | ..onLoadingStart 78 | ..playNow 79 | ..quitGame 80 | ..readyToPlay 81 | ..restartExe 82 | ..skipTutorial 83 | ..startNewRound 84 | ..startTutorial 85 | ..timeToNextStateChange 86 | ..tutorialStatus 87 | ..version 88 | 89 | .general 90 | ..getWindowSize 91 | ..autoReload 92 | ..cancel 93 | ..apply 94 | 95 | .itemdb 96 | ..behavior 97 | ..category 98 | ..categoryId 99 | ..categoryName 100 | ..classId 101 | ..consumable 102 | ..criterias 103 | ..daily 104 | ..dependencies 105 | ..equippable 106 | ..find 107 | ..getAbilities 108 | ..getEmotes 109 | ..getMissions 110 | ..getWeapons 111 | ..goal 112 | ..isDefault 113 | ..isItemUsableByKit 114 | ..isItemUsableByTeam 115 | ..isPopItem 116 | ..kv 117 | ..levelReq 118 | ..locId 119 | ..maxUpgrade 120 | ..prereqMissionId 121 | ..purchasable 122 | ..repeatable 123 | ..resetMode 124 | ..rewards 125 | ..typeId 126 | ..widget 127 | 128 | .login 129 | ..completed 130 | ..error 131 | ..getSoldiersList 132 | ..kit 133 | ..level 134 | ..name 135 | ..onError 136 | ..onStateChanged 137 | ..personaId 138 | ..pickSoldier 139 | ..soldier 140 | ..soldierName 141 | ..start 142 | ..state 143 | 144 | .matchmaking 145 | ..GSJoinAddress 146 | ..cancelSearch 147 | ..finalizeCancelSearch 148 | ..getPingSite 149 | ..joinByBookmark 150 | ..joinByMatchmaking 151 | ..joinByPlayerName 152 | ..lastError 153 | ..leaveQueue 154 | ..onGameStarted 155 | ..onPingResponse 156 | ..onQueueUpdated 157 | ..onStateChanged 158 | ..pingGameServers 159 | ..queuePosition 160 | ..queueSize 161 | ..setMaxNumberOfPingsInFlight 162 | ..state 163 | 164 | .soldier 165 | ..CustBar 166 | ..ErrCode 167 | ..ItemId 168 | ..abortMission 169 | ..addCustomization 170 | ..canEquipItem 171 | ..canEquipItemInSlot 172 | ..closeMission 173 | ..commitChanges 174 | ..expirationDate 175 | ..flagTodaysDailyMissionAsViewed 176 | ..getEmoteInSlot 177 | ..getEquipmentInSlot 178 | ..getInventory 179 | ..getItemData 180 | ..getItemStatus 181 | ..getJustCompletedMissions 182 | ..getMissionInSlot 183 | ..getVisualItemInSlot 184 | ..getVisualItems 185 | ..giveItems 186 | ..hasCompletedMission 187 | ..hasItem 188 | ..hasNewDailyMission 189 | ..id 190 | ..kit 191 | ..level 192 | ..limit 193 | ..maxEmoteSlots 194 | ..maxEquipmentSlots 195 | ..maxVisualItemSlots 196 | ..parentid 197 | ..progress 198 | ..removeCustomization 199 | ..setAbilityInSlot 200 | ..setEmoteInSlot 201 | ..setInStore 202 | ..setMissionInSlot 203 | ..setVisualItemInSlot 204 | ..setWeaponInSlot 205 | ..slot 206 | ..swapEquipment 207 | ..timeLeft 208 | ..uses 209 | ..xp 210 | ..xpToNextLevel 211 | 212 | .video 213 | ..antialiasing 214 | ..bloom 215 | ..detectScheme 216 | ..dynamicLightingQuality 217 | ..dynamicShadowsQuality 218 | ..effectsQuality 219 | ..geometryQuality 220 | ..getAvailableAntialiasing 221 | ..getScreenResolutions 222 | ..lightingQuality 223 | ..recommended 224 | ..resolution 225 | ..scheme 226 | ..selectedDynamicLightingQuality 227 | ..selectedDynamicShadowsQuality 228 | ..selectedEffectsQuality 229 | ..selectedGeometryQuality 230 | ..selectedLightingQuality 231 | ..selectedResolution 232 | ..selectedScheme 233 | ..selectedTerrainQuality 234 | ..selectedTextureFiltering 235 | ..selectedTextureQuality 236 | ..startInFullscreen 237 | ..terrainQuality 238 | ..text 239 | ..textureFilteringQuality 240 | ..textureQuality 241 | ..value 242 | ..viewDistanceScale 243 | 244 | .vip 245 | ..acceptInvitation 246 | ..acknowledgeRevocation 247 | ..canRefresh 248 | ..declineInvitation 249 | ..getInvitationList 250 | ..getList 251 | ..getRevokedList 252 | ..onInvitationAccepted 253 | ..onInvitationDeclined 254 | ..onListRefreshed 255 | ..onRevocationAcknowledged 256 | ..onServerRemoved 257 | ..refresh -------------------------------------------------------------------------------- /Other/html.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Other/html.rar -------------------------------------------------------------------------------- /Other/maplist.con: -------------------------------------------------------------------------------- 1 | maplist.append "dalian_plant" "gpm_rush" 32 2 | maplist.append "dalian_plant" "gpm_sa" 32 3 | maplist.append "downtown" "gpm_rush" 32 4 | maplist.append "downtown" "gpm_sa" 32 5 | maplist.append "dragon_valley" "gpm_rush" 32 6 | maplist.append "dragon_valley" "gpm_sa" 32 7 | maplist.append "gulf_of_oman" "gpm_rush" 32 8 | maplist.append "gulf_of_oman" "gpm_sa" 32 9 | maplist.append "karkand_rush" "gpm_rush" 32 10 | maplist.append "mashtuur_city" "gpm_sa" 32 11 | maplist.append "sharqi" "gpm_rush" 32 12 | maplist.append "sharqi" "gpm_sa" 32 13 | maplist.append "strike_at_karkand" "gpm_sa" 32 14 | maplist.append "trail" "gpm_sa" 32 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Battle Field Play 4 Free Blaze Backend and Tools by Warranty Voider 2 | 3 | with these tool you can research the blaze side of the game and the server, aswell as the gamefiles 4 | 5 | -zlib dll is a proxy dll to bypass ssl cert checks and enable blaze logs, theres a version for 2010 and for 2015 client, both work with 2010 server 6 | 7 | -Launcher contains backend, magma server and a minimal webserver thats lets the game and server start with editable parameters 8 | 9 | -BlazeShark can be used with the backend to examine blaze packet content, can be choosen at start of launcher 10 | 11 | -BlazeLibWV is a library for reading and creating blaze packets, also for creating log dumps 12 | 13 | -UDP Monitor WV - Tool for examining the highspeed bitstream of the game traffic over udp 14 | 15 | -BFP4F Explorer WV - Tool for editing game content and export 16 | 17 | -"Other" contain the minimal frontend files that need to be hosted via xampp or internal webbrowser, and other files 18 | 19 | [more information in the wiki](https://github.com/zeroKilo/BFP4FToolsWV/wiki) 20 | 21 | 22 | # THIS IS UNFINISHED AND FOR RESEARCH ONLY!!! 23 | 24 | 25 | for more research chat: https://discordapp.com/invite/Wr2faSS 26 | 27 | 28 | # DEMO (v1) 29 | 30 | [![Alt text](https://img.youtube.com/vi/lI8_xpKC2vI/0.jpg)](https://www.youtube.com/watch?v=lI8_xpKC2vI) 31 | 32 | # DEMO (v2) 33 | 34 | [![Alt text](https://img.youtube.com/vi/MoaW1es4xbY/0.jpg)](https://www.youtube.com/watch?v=MoaW1es4xbY) 35 | 36 | # DEMO (v3) 37 | 38 | [![Alt text](https://img.youtube.com/vi/z9EfC4xNQZQ/0.jpg)](https://www.youtube.com/watch?v=z9EfC4xNQZQ) 39 | 40 | # DEMO (v4) 41 | 42 | [![Alt text](https://img.youtube.com/vi/BtnpACHK07w/0.jpg)](https://www.youtube.com/watch?v=BtnpACHK07w) 43 | 44 | # First Joining 45 | 46 | [![Alt text](https://img.youtube.com/vi/EX3aHWkbB6o/0.jpg)](https://www.youtube.com/watch?v=EX3aHWkbB6o) 47 | 48 | # DEMO (v5) 49 | 50 | [![Alt text](https://img.youtube.com/vi/iVllQPzRs1M/0.jpg)](https://www.youtube.com/watch?v=iVllQPzRs1M) 51 | 52 | # BFP4F Explorer WV 53 | 54 | [![Alt text](https://img.youtube.com/vi/QyG3_AOVW5Q/0.jpg)](https://www.youtube.com/watch?v=QyG3_AOVW5Q) 55 | 56 | # BFP4F Explorer WV - Level Explorer Demo 57 | 58 | [![Alt text](https://img.youtube.com/vi/ChimAELNzuw/0.jpg)](https://www.youtube.com/watch?v=ChimAELNzuw) 59 | -------------------------------------------------------------------------------- /UDPMonitorWV/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /UDPMonitorWV/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace UDPMonitorWV 2 | { 3 | partial class Form1 4 | { 5 | /// 6 | /// Erforderliche Designervariable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Verwendete Ressourcen bereinigen. 12 | /// 13 | /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls 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 Vom Windows Form-Designer generierter Code 24 | 25 | /// 26 | /// Erforderliche Methode für die Designerunterstützung. 27 | /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 32 | this.toolStrip1 = new System.Windows.Forms.ToolStrip(); 33 | this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); 34 | this.rtb1 = new System.Windows.Forms.RichTextBox(); 35 | this.toolStrip1.SuspendLayout(); 36 | this.SuspendLayout(); 37 | // 38 | // toolStrip1 39 | // 40 | this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 41 | this.toolStripButton1}); 42 | this.toolStrip1.Location = new System.Drawing.Point(0, 0); 43 | this.toolStrip1.Name = "toolStrip1"; 44 | this.toolStrip1.Size = new System.Drawing.Size(619, 25); 45 | this.toolStrip1.TabIndex = 0; 46 | this.toolStrip1.Text = "toolStrip1"; 47 | // 48 | // toolStripButton1 49 | // 50 | this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; 51 | this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); 52 | this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; 53 | this.toolStripButton1.Name = "toolStripButton1"; 54 | this.toolStripButton1.Size = new System.Drawing.Size(35, 22); 55 | this.toolStripButton1.Text = "Start"; 56 | this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); 57 | // 58 | // rtb1 59 | // 60 | this.rtb1.DetectUrls = false; 61 | this.rtb1.Dock = System.Windows.Forms.DockStyle.Fill; 62 | this.rtb1.Font = new System.Drawing.Font("Courier New", 8.25F); 63 | this.rtb1.Location = new System.Drawing.Point(0, 25); 64 | this.rtb1.Name = "rtb1"; 65 | this.rtb1.Size = new System.Drawing.Size(619, 193); 66 | this.rtb1.TabIndex = 1; 67 | this.rtb1.Text = ""; 68 | this.rtb1.WordWrap = false; 69 | // 70 | // Form1 71 | // 72 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 73 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 74 | this.ClientSize = new System.Drawing.Size(619, 218); 75 | this.Controls.Add(this.rtb1); 76 | this.Controls.Add(this.toolStrip1); 77 | this.Name = "Form1"; 78 | this.Text = "UDP Monitor WV"; 79 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); 80 | this.toolStrip1.ResumeLayout(false); 81 | this.toolStrip1.PerformLayout(); 82 | this.ResumeLayout(false); 83 | this.PerformLayout(); 84 | 85 | } 86 | 87 | #endregion 88 | 89 | private System.Windows.Forms.ToolStrip toolStrip1; 90 | private System.Windows.Forms.ToolStripButton toolStripButton1; 91 | private System.Windows.Forms.RichTextBox rtb1; 92 | } 93 | } 94 | 95 | -------------------------------------------------------------------------------- /UDPMonitorWV/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace UDPMonitorWV 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /UDPMonitorWV/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die mit einer Assembly verknüpft sind. 8 | [assembly: AssemblyTitle("UDPMonitorWV")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UDPMonitorWV")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("65124441-3cc9-4385-bef6-f79a7e483cd2")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /UDPMonitorWV/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.42000 5 | // 6 | // Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn 7 | // der Code neu generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace UDPMonitorWV.Properties 12 | { 13 | 14 | 15 | /// 16 | /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. 17 | /// 18 | // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse 19 | // über ein Tool wie ResGen oder Visual Studio automatisch generiert. 20 | // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen 21 | // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UDPMonitorWV.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle 56 | /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /UDPMonitorWV/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 UDPMonitorWV.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /UDPMonitorWV/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /UDPMonitorWV/UDPMonitorWV.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {FC30C556-C2CD-4783-AFCC-DC1403868D87} 8 | WinExe 9 | Properties 10 | UDPMonitorWV 11 | UDPMonitorWV 12 | v4.5 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | true 36 | bin\x86\Debug\ 37 | DEBUG;TRACE 38 | full 39 | x86 40 | prompt 41 | ManagedMinimumRules.ruleset 42 | true 43 | 44 | 45 | bin\x86\Release\ 46 | TRACE 47 | false 48 | pdbonly 49 | x86 50 | prompt 51 | ManagedMinimumRules.ruleset 52 | true 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | Form 69 | 70 | 71 | Form1.cs 72 | 73 | 74 | 75 | 76 | Form1.cs 77 | 78 | 79 | ResXFileCodeGenerator 80 | Resources.Designer.cs 81 | Designer 82 | 83 | 84 | True 85 | Resources.resx 86 | 87 | 88 | SettingsSingleFileGenerator 89 | Settings.Designer.cs 90 | 91 | 92 | True 93 | Settings.settings 94 | True 95 | 96 | 97 | 98 | 99 | 100 | 101 | 108 | -------------------------------------------------------------------------------- /UDPMonitorWV/bin/x86/Release/UDPMonitorWV.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/UDPMonitorWV/bin/x86/Release/UDPMonitorWV.exe -------------------------------------------------------------------------------- /UDPMonitorWV/bin/x86/Release/UDPMonitorWV.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Zlib122_2010/Release/zlib122.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2010/Release/zlib122.dll -------------------------------------------------------------------------------- /Zlib122_2010/zlib122.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib122", "zlib122\zlib122.vcxproj", "{3EACB588-5852-40CA-BB9C-BB3E3843222A}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.Build.0 = Debug|Win32 14 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.ActiveCfg = Release|Win32 15 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Zlib122_2010/zlib122.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2010/zlib122.v11.suo -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/Hack.h: -------------------------------------------------------------------------------- 1 | void Hack_Init(); -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/UDPMon.h: -------------------------------------------------------------------------------- 1 | LPTSTR lpszPipename1 = TEXT("\\\\.\\pipe\\UDPmon_send"); 2 | HANDLE hPipe1; 3 | DWORD cbToWrite1, cbWritten1; 4 | BOOL fSuccess1; 5 | 6 | LPTSTR lpszPipename2 = TEXT("\\\\.\\pipe\\UDPmon_recv"); 7 | HANDLE hPipe2; 8 | DWORD cbToWrite2, cbWritten2; 9 | BOOL fSuccess2; 10 | 11 | bool SendDownThePipe1(char * str) 12 | { 13 | cbToWrite1 = strlen(str); 14 | fSuccess1 = WriteFile(hPipe1, str, cbToWrite1, &cbWritten1, NULL); 15 | return fSuccess1 && cbToWrite1 == cbWritten1; 16 | } 17 | 18 | bool SendDownThePipe2(char * str) 19 | { 20 | cbToWrite2 = strlen(str); 21 | fSuccess2 = WriteFile(hPipe2, str, cbToWrite2, &cbWritten2, NULL); 22 | return fSuccess2 && cbToWrite2 == cbWritten2; 23 | } 24 | 25 | bool InitUDPMon() 26 | { 27 | hPipe1 = CreateFile(lpszPipename1, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 28 | if (hPipe1 == INVALID_HANDLE_VALUE ) 29 | return false; 30 | if(!SendDownThePipe1("BFP4F Server says hello on send pipe!\n")) 31 | return false; 32 | hPipe2 = CreateFile(lpszPipename2, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 33 | if (hPipe2 == INVALID_HANDLE_VALUE ) 34 | return false; 35 | return SendDownThePipe2("BFP4F Server says hello on recv pipe!\n"); 36 | } 37 | 38 | DWORD readReturn; 39 | DWORD readBuff; 40 | DWORD readSize; 41 | DWORD readEAX; 42 | DWORD writeBuff; 43 | DWORD writeSize; 44 | DWORD writeEAX; 45 | 46 | void PrintBitRead() 47 | { 48 | DWORD tmpReturn = readReturn; 49 | DWORD tmpSize = readSize / 8; 50 | if(readSize % 8 != 0) 51 | tmpSize++; 52 | BYTE* tmpBuff = (BYTE*)readBuff; 53 | char* tmpHex = (char*)calloc(3, 1); 54 | for(int i = 0; i < tmpSize; i++) 55 | { 56 | sprintf(tmpHex, "%02X", tmpBuff[i]); 57 | SendDownThePipe2(tmpHex); 58 | } 59 | free(tmpHex); 60 | SendDownThePipe2("\n"); 61 | readReturn = tmpReturn; 62 | } 63 | 64 | void PrintBitWrite() 65 | { 66 | DWORD tmpSize = writeSize / 8; 67 | if(writeSize % 8 != 0) 68 | tmpSize++; 69 | BYTE* tmpBuff = (BYTE*)writeBuff; 70 | char* tmpHex = (char*)calloc(3, 1); 71 | for(int i = 0; i < tmpSize; i++) 72 | { 73 | sprintf(tmpHex, "%02X", tmpBuff[i]); 74 | SendDownThePipe1(tmpHex); 75 | } 76 | free(tmpHex); 77 | SendDownThePipe1("\n"); 78 | } 79 | 80 | void __declspec(naked) BitStreamRead() 81 | { 82 | _asm 83 | { 84 | //save eax 85 | mov readEAX, eax; 86 | //change return 87 | mov eax, [esp]; 88 | mov readReturn, eax; 89 | mov eax, label_return; 90 | mov [esp], eax; 91 | //save buffer address 92 | mov eax, [esp + 4]; 93 | mov readBuff, eax; 94 | //save buffer size 95 | mov eax, [esp + 8]; 96 | mov readSize, eax; 97 | //restore eax 98 | mov eax, readEAX; 99 | //rest of overwritten asm 100 | sub esp, 0xC; 101 | push ebp; 102 | mov ebp, [esp + 0x14]; 103 | push 0x009FC288; 104 | ret; 105 | label_return: 106 | //save regs 107 | pushad; 108 | //was success? 109 | test eax, eax; 110 | jz label_skip; 111 | //save to log 112 | call PrintBitRead; 113 | label_skip: 114 | //restore regs 115 | popad; 116 | //restore return 117 | push readReturn; 118 | ret; 119 | } 120 | } 121 | 122 | void __declspec(naked) BitStreamWrite() 123 | { 124 | _asm 125 | { 126 | //save eax 127 | mov writeEAX, eax; 128 | //save buffer address 129 | mov eax, [esp + 4]; 130 | mov writeBuff, eax; 131 | //save buffer size 132 | mov eax, [esp + 8]; 133 | mov writeSize, eax; 134 | //restore eax 135 | mov eax, writeEAX; 136 | //save regs 137 | pushad; 138 | //save to log 139 | call PrintBitWrite; 140 | //restore regs 141 | popad; 142 | //rest of overwritten asm 143 | sub esp, 0xC; 144 | push ebp; 145 | push edi; 146 | push 0x009FCB05; 147 | ret; 148 | } 149 | } -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/detours.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2010/zlib122/detours.lib -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include "Hack.h" 6 | #pragma pack(1) 7 | 8 | 9 | 10 | extern "C" BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID) 11 | { 12 | static HINSTANCE hL; 13 | if (reason == DLL_PROCESS_ATTACH) 14 | { 15 | hL = LoadLibrary(_T(".\\zlib122_org.dll")); 16 | if (!hL) return false; 17 | Hack_Init(); 18 | } 19 | if (reason == DLL_PROCESS_DETACH) 20 | FreeLibrary(hL); 21 | return TRUE; 22 | } 23 | 24 | #pragma comment(linker, "/export:adler32=zlib122_org.adler32") 25 | 26 | #pragma comment(linker, "/export:compress2=zlib122_org.compress2") 27 | 28 | #pragma comment(linker, "/export:compress=zlib122_org.compress") 29 | 30 | #pragma comment(linker, "/export:compressBound=zlib122_org.compressBound") 31 | 32 | #pragma comment(linker, "/export:get_crc_table=zlib122_org.get_crc_table") 33 | 34 | #pragma comment(linker, "/export:crc32=zlib122_org.crc32") 35 | 36 | #pragma comment(linker, "/export:deflateSetDictionary=zlib122_org.deflateSetDictionary") 37 | 38 | #pragma comment(linker, "/export:deflatePrime=zlib122_org.deflatePrime") 39 | 40 | #pragma comment(linker, "/export:deflateBound=zlib122_org.deflateBound") 41 | 42 | #pragma comment(linker, "/export:deflate=zlib122_org.deflate") 43 | 44 | #pragma comment(linker, "/export:deflateEnd=zlib122_org.deflateEnd") 45 | 46 | #pragma comment(linker, "/export:deflateCopy=zlib122_org.deflateCopy") 47 | 48 | #pragma comment(linker, "/export:deflateReset=zlib122_org.deflateReset") 49 | 50 | #pragma comment(linker, "/export:deflateParams=zlib122_org.deflateParams") 51 | 52 | #pragma comment(linker, "/export:deflateInit2_=zlib122_org.deflateInit2_") 53 | 54 | #pragma comment(linker, "/export:deflateInit_=zlib122_org.deflateInit_") 55 | 56 | #pragma comment(linker, "/export:gzsetparams=zlib122_org.gzsetparams") 57 | 58 | #pragma comment(linker, "/export:gzungetc=zlib122_org.gzungetc") 59 | 60 | #pragma comment(linker, "/export:gzwrite=zlib122_org.gzwrite") 61 | 62 | #pragma comment(linker, "/export:gzprintf=zlib122_org.gzprintf") 63 | 64 | #pragma comment(linker, "/export:gzputc=zlib122_org.gzputc") 65 | 66 | #pragma comment(linker, "/export:gzputs=zlib122_org.gzputs") 67 | 68 | #pragma comment(linker, "/export:gzflush=zlib122_org.gzflush") 69 | 70 | #pragma comment(linker, "/export:gzrewind=zlib122_org.gzrewind") 71 | 72 | #pragma comment(linker, "/export:gzeof=zlib122_org.gzeof") 73 | 74 | #pragma comment(linker, "/export:gzclose=zlib122_org.gzclose") 75 | 76 | #pragma comment(linker, "/export:gzerror=zlib122_org.gzerror") 77 | 78 | #pragma comment(linker, "/export:gzclearerr=zlib122_org.gzclearerr") 79 | 80 | #pragma comment(linker, "/export:gzopen=zlib122_org.gzopen") 81 | 82 | #pragma comment(linker, "/export:gzdopen=zlib122_org.gzdopen") 83 | 84 | #pragma comment(linker, "/export:gzread=zlib122_org.gzread") 85 | 86 | #pragma comment(linker, "/export:gzgetc=zlib122_org.gzgetc") 87 | 88 | #pragma comment(linker, "/export:gzgets=zlib122_org.gzgets") 89 | 90 | #pragma comment(linker, "/export:gzseek=zlib122_org.gzseek") 91 | 92 | #pragma comment(linker, "/export:gztell=zlib122_org.gztell") 93 | 94 | #pragma comment(linker, "/export:inflateBackInit_=zlib122_org.inflateBackInit_") 95 | 96 | #pragma comment(linker, "/export:inflateBack=zlib122_org.inflateBack") 97 | 98 | #pragma comment(linker, "/export:inflateBackEnd=zlib122_org.inflateBackEnd") 99 | 100 | #pragma comment(linker, "/export:inflateReset=zlib122_org.inflateReset") 101 | 102 | #pragma comment(linker, "/export:inflateInit2_=zlib122_org.inflateInit2_") 103 | 104 | #pragma comment(linker, "/export:inflateInit_=zlib122_org.inflateInit_") 105 | 106 | #pragma comment(linker, "/export:inflate=zlib122_org.inflate") 107 | 108 | #pragma comment(linker, "/export:inflateEnd=zlib122_org.inflateEnd") 109 | 110 | #pragma comment(linker, "/export:inflateSetDictionary=zlib122_org.inflateSetDictionary") 111 | 112 | #pragma comment(linker, "/export:inflateSync=zlib122_org.inflateSync") 113 | 114 | #pragma comment(linker, "/export:inflateSyncPoint=zlib122_org.inflateSyncPoint") 115 | 116 | #pragma comment(linker, "/export:inflateCopy=zlib122_org.inflateCopy") 117 | 118 | #pragma comment(linker, "/export:uncompress=zlib122_org.uncompress") 119 | 120 | #pragma comment(linker, "/export:zlibVersion=zlib122_org.zlibVersion") 121 | 122 | #pragma comment(linker, "/export:zlibCompileFlags=zlib122_org.zlibCompileFlags") 123 | 124 | #pragma comment(linker, "/export:zError=zlib122_org.zError") 125 | 126 | 127 | -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2010/zlib122/stdafx.cpp -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2010/zlib122/stdafx.h -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2010/zlib122/targetver.h -------------------------------------------------------------------------------- /Zlib122_2010/zlib122/zlib122.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Headerdateien 20 | 21 | 22 | Headerdateien 23 | 24 | 25 | Headerdateien 26 | 27 | 28 | Headerdateien 29 | 30 | 31 | Headerdateien 32 | 33 | 34 | 35 | 36 | Quelldateien 37 | 38 | 39 | Quelldateien 40 | 41 | 42 | Quelldateien 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Zlib122_2011/Release/zlib122.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2011/Release/zlib122.dll -------------------------------------------------------------------------------- /Zlib122_2011/zlib122.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib122", "zlib122\zlib122.vcxproj", "{3EACB588-5852-40CA-BB9C-BB3E3843222A}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.Build.0 = Debug|Win32 14 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.ActiveCfg = Release|Win32 15 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Zlib122_2011/zlib122.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2011/zlib122.v11.suo -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/Hack.h: -------------------------------------------------------------------------------- 1 | void Hack_Init(); -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/detours.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2011/zlib122/detours.lib -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include "Hack.h" 6 | #pragma pack(1) 7 | 8 | 9 | 10 | extern "C" BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID) 11 | { 12 | static HINSTANCE hL; 13 | if (reason == DLL_PROCESS_ATTACH) 14 | { 15 | hL = LoadLibrary(_T(".\\zlib122_org.dll")); 16 | if (!hL) return false; 17 | Hack_Init(); 18 | } 19 | if (reason == DLL_PROCESS_DETACH) 20 | FreeLibrary(hL); 21 | return TRUE; 22 | } 23 | 24 | #pragma comment(linker, "/export:adler32=zlib122_org.adler32") 25 | 26 | #pragma comment(linker, "/export:compress2=zlib122_org.compress2") 27 | 28 | #pragma comment(linker, "/export:compress=zlib122_org.compress") 29 | 30 | #pragma comment(linker, "/export:compressBound=zlib122_org.compressBound") 31 | 32 | #pragma comment(linker, "/export:get_crc_table=zlib122_org.get_crc_table") 33 | 34 | #pragma comment(linker, "/export:crc32=zlib122_org.crc32") 35 | 36 | #pragma comment(linker, "/export:deflateSetDictionary=zlib122_org.deflateSetDictionary") 37 | 38 | #pragma comment(linker, "/export:deflatePrime=zlib122_org.deflatePrime") 39 | 40 | #pragma comment(linker, "/export:deflateBound=zlib122_org.deflateBound") 41 | 42 | #pragma comment(linker, "/export:deflate=zlib122_org.deflate") 43 | 44 | #pragma comment(linker, "/export:deflateEnd=zlib122_org.deflateEnd") 45 | 46 | #pragma comment(linker, "/export:deflateCopy=zlib122_org.deflateCopy") 47 | 48 | #pragma comment(linker, "/export:deflateReset=zlib122_org.deflateReset") 49 | 50 | #pragma comment(linker, "/export:deflateParams=zlib122_org.deflateParams") 51 | 52 | #pragma comment(linker, "/export:deflateInit2_=zlib122_org.deflateInit2_") 53 | 54 | #pragma comment(linker, "/export:deflateInit_=zlib122_org.deflateInit_") 55 | 56 | #pragma comment(linker, "/export:gzsetparams=zlib122_org.gzsetparams") 57 | 58 | #pragma comment(linker, "/export:gzungetc=zlib122_org.gzungetc") 59 | 60 | #pragma comment(linker, "/export:gzwrite=zlib122_org.gzwrite") 61 | 62 | #pragma comment(linker, "/export:gzprintf=zlib122_org.gzprintf") 63 | 64 | #pragma comment(linker, "/export:gzputc=zlib122_org.gzputc") 65 | 66 | #pragma comment(linker, "/export:gzputs=zlib122_org.gzputs") 67 | 68 | #pragma comment(linker, "/export:gzflush=zlib122_org.gzflush") 69 | 70 | #pragma comment(linker, "/export:gzrewind=zlib122_org.gzrewind") 71 | 72 | #pragma comment(linker, "/export:gzeof=zlib122_org.gzeof") 73 | 74 | #pragma comment(linker, "/export:gzclose=zlib122_org.gzclose") 75 | 76 | #pragma comment(linker, "/export:gzerror=zlib122_org.gzerror") 77 | 78 | #pragma comment(linker, "/export:gzclearerr=zlib122_org.gzclearerr") 79 | 80 | #pragma comment(linker, "/export:gzopen=zlib122_org.gzopen") 81 | 82 | #pragma comment(linker, "/export:gzdopen=zlib122_org.gzdopen") 83 | 84 | #pragma comment(linker, "/export:gzread=zlib122_org.gzread") 85 | 86 | #pragma comment(linker, "/export:gzgetc=zlib122_org.gzgetc") 87 | 88 | #pragma comment(linker, "/export:gzgets=zlib122_org.gzgets") 89 | 90 | #pragma comment(linker, "/export:gzseek=zlib122_org.gzseek") 91 | 92 | #pragma comment(linker, "/export:gztell=zlib122_org.gztell") 93 | 94 | #pragma comment(linker, "/export:inflateBackInit_=zlib122_org.inflateBackInit_") 95 | 96 | #pragma comment(linker, "/export:inflateBack=zlib122_org.inflateBack") 97 | 98 | #pragma comment(linker, "/export:inflateBackEnd=zlib122_org.inflateBackEnd") 99 | 100 | #pragma comment(linker, "/export:inflateReset=zlib122_org.inflateReset") 101 | 102 | #pragma comment(linker, "/export:inflateInit2_=zlib122_org.inflateInit2_") 103 | 104 | #pragma comment(linker, "/export:inflateInit_=zlib122_org.inflateInit_") 105 | 106 | #pragma comment(linker, "/export:inflate=zlib122_org.inflate") 107 | 108 | #pragma comment(linker, "/export:inflateEnd=zlib122_org.inflateEnd") 109 | 110 | #pragma comment(linker, "/export:inflateSetDictionary=zlib122_org.inflateSetDictionary") 111 | 112 | #pragma comment(linker, "/export:inflateSync=zlib122_org.inflateSync") 113 | 114 | #pragma comment(linker, "/export:inflateSyncPoint=zlib122_org.inflateSyncPoint") 115 | 116 | #pragma comment(linker, "/export:inflateCopy=zlib122_org.inflateCopy") 117 | 118 | #pragma comment(linker, "/export:uncompress=zlib122_org.uncompress") 119 | 120 | #pragma comment(linker, "/export:zlibVersion=zlib122_org.zlibVersion") 121 | 122 | #pragma comment(linker, "/export:zlibCompileFlags=zlib122_org.zlibCompileFlags") 123 | 124 | #pragma comment(linker, "/export:zError=zlib122_org.zError") 125 | 126 | 127 | -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2011/zlib122/stdafx.cpp -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2011/zlib122/stdafx.h -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2011/zlib122/targetver.h -------------------------------------------------------------------------------- /Zlib122_2011/zlib122/zlib122.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Headerdateien 20 | 21 | 22 | Headerdateien 23 | 24 | 25 | Headerdateien 26 | 27 | 28 | Headerdateien 29 | 30 | 31 | 32 | 33 | Quelldateien 34 | 35 | 36 | Quelldateien 37 | 38 | 39 | Quelldateien 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Zlib122_2013/Release/zlib122.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2013/Release/zlib122.dll -------------------------------------------------------------------------------- /Zlib122_2013/zlib122.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib122", "zlib122\zlib122.vcxproj", "{3EACB588-5852-40CA-BB9C-BB3E3843222A}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.Build.0 = Debug|Win32 14 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.ActiveCfg = Release|Win32 15 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Zlib122_2013/zlib122.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2013/zlib122.v11.suo -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/Hack.h: -------------------------------------------------------------------------------- 1 | void Hack_Init(); -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/detours.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2013/zlib122/detours.lib -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include "Hack.h" 6 | #pragma pack(1) 7 | 8 | 9 | 10 | extern "C" BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID) 11 | { 12 | static HINSTANCE hL; 13 | if (reason == DLL_PROCESS_ATTACH) 14 | { 15 | hL = LoadLibrary(_T(".\\zlib122_org.dll")); 16 | if (!hL) return false; 17 | Hack_Init(); 18 | } 19 | if (reason == DLL_PROCESS_DETACH) 20 | FreeLibrary(hL); 21 | return TRUE; 22 | } 23 | 24 | #pragma comment(linker, "/export:adler32=zlib122_org.adler32") 25 | 26 | #pragma comment(linker, "/export:compress2=zlib122_org.compress2") 27 | 28 | #pragma comment(linker, "/export:compress=zlib122_org.compress") 29 | 30 | #pragma comment(linker, "/export:compressBound=zlib122_org.compressBound") 31 | 32 | #pragma comment(linker, "/export:get_crc_table=zlib122_org.get_crc_table") 33 | 34 | #pragma comment(linker, "/export:crc32=zlib122_org.crc32") 35 | 36 | #pragma comment(linker, "/export:deflateSetDictionary=zlib122_org.deflateSetDictionary") 37 | 38 | #pragma comment(linker, "/export:deflatePrime=zlib122_org.deflatePrime") 39 | 40 | #pragma comment(linker, "/export:deflateBound=zlib122_org.deflateBound") 41 | 42 | #pragma comment(linker, "/export:deflate=zlib122_org.deflate") 43 | 44 | #pragma comment(linker, "/export:deflateEnd=zlib122_org.deflateEnd") 45 | 46 | #pragma comment(linker, "/export:deflateCopy=zlib122_org.deflateCopy") 47 | 48 | #pragma comment(linker, "/export:deflateReset=zlib122_org.deflateReset") 49 | 50 | #pragma comment(linker, "/export:deflateParams=zlib122_org.deflateParams") 51 | 52 | #pragma comment(linker, "/export:deflateInit2_=zlib122_org.deflateInit2_") 53 | 54 | #pragma comment(linker, "/export:deflateInit_=zlib122_org.deflateInit_") 55 | 56 | #pragma comment(linker, "/export:gzsetparams=zlib122_org.gzsetparams") 57 | 58 | #pragma comment(linker, "/export:gzungetc=zlib122_org.gzungetc") 59 | 60 | #pragma comment(linker, "/export:gzwrite=zlib122_org.gzwrite") 61 | 62 | #pragma comment(linker, "/export:gzprintf=zlib122_org.gzprintf") 63 | 64 | #pragma comment(linker, "/export:gzputc=zlib122_org.gzputc") 65 | 66 | #pragma comment(linker, "/export:gzputs=zlib122_org.gzputs") 67 | 68 | #pragma comment(linker, "/export:gzflush=zlib122_org.gzflush") 69 | 70 | #pragma comment(linker, "/export:gzrewind=zlib122_org.gzrewind") 71 | 72 | #pragma comment(linker, "/export:gzeof=zlib122_org.gzeof") 73 | 74 | #pragma comment(linker, "/export:gzclose=zlib122_org.gzclose") 75 | 76 | #pragma comment(linker, "/export:gzerror=zlib122_org.gzerror") 77 | 78 | #pragma comment(linker, "/export:gzclearerr=zlib122_org.gzclearerr") 79 | 80 | #pragma comment(linker, "/export:gzopen=zlib122_org.gzopen") 81 | 82 | #pragma comment(linker, "/export:gzdopen=zlib122_org.gzdopen") 83 | 84 | #pragma comment(linker, "/export:gzread=zlib122_org.gzread") 85 | 86 | #pragma comment(linker, "/export:gzgetc=zlib122_org.gzgetc") 87 | 88 | #pragma comment(linker, "/export:gzgets=zlib122_org.gzgets") 89 | 90 | #pragma comment(linker, "/export:gzseek=zlib122_org.gzseek") 91 | 92 | #pragma comment(linker, "/export:gztell=zlib122_org.gztell") 93 | 94 | #pragma comment(linker, "/export:inflateBackInit_=zlib122_org.inflateBackInit_") 95 | 96 | #pragma comment(linker, "/export:inflateBack=zlib122_org.inflateBack") 97 | 98 | #pragma comment(linker, "/export:inflateBackEnd=zlib122_org.inflateBackEnd") 99 | 100 | #pragma comment(linker, "/export:inflateReset=zlib122_org.inflateReset") 101 | 102 | #pragma comment(linker, "/export:inflateInit2_=zlib122_org.inflateInit2_") 103 | 104 | #pragma comment(linker, "/export:inflateInit_=zlib122_org.inflateInit_") 105 | 106 | #pragma comment(linker, "/export:inflate=zlib122_org.inflate") 107 | 108 | #pragma comment(linker, "/export:inflateEnd=zlib122_org.inflateEnd") 109 | 110 | #pragma comment(linker, "/export:inflateSetDictionary=zlib122_org.inflateSetDictionary") 111 | 112 | #pragma comment(linker, "/export:inflateSync=zlib122_org.inflateSync") 113 | 114 | #pragma comment(linker, "/export:inflateSyncPoint=zlib122_org.inflateSyncPoint") 115 | 116 | #pragma comment(linker, "/export:inflateCopy=zlib122_org.inflateCopy") 117 | 118 | #pragma comment(linker, "/export:uncompress=zlib122_org.uncompress") 119 | 120 | #pragma comment(linker, "/export:zlibVersion=zlib122_org.zlibVersion") 121 | 122 | #pragma comment(linker, "/export:zlibCompileFlags=zlib122_org.zlibCompileFlags") 123 | 124 | #pragma comment(linker, "/export:zError=zlib122_org.zError") 125 | 126 | 127 | -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2013/zlib122/stdafx.cpp -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2013/zlib122/stdafx.h -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2013/zlib122/targetver.h -------------------------------------------------------------------------------- /Zlib122_2013/zlib122/zlib122.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Headerdateien 20 | 21 | 22 | Headerdateien 23 | 24 | 25 | Headerdateien 26 | 27 | 28 | Headerdateien 29 | 30 | 31 | 32 | 33 | Quelldateien 34 | 35 | 36 | Quelldateien 37 | 38 | 39 | Quelldateien 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Zlib122_2015/Release/zlib122.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2015/Release/zlib122.dll -------------------------------------------------------------------------------- /Zlib122_2015/zlib122.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib122", "zlib122\zlib122.vcxproj", "{3EACB588-5852-40CA-BB9C-BB3E3843222A}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Debug|Win32.Build.0 = Debug|Win32 14 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.ActiveCfg = Release|Win32 15 | {3EACB588-5852-40CA-BB9C-BB3E3843222A}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Zlib122_2015/zlib122.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2015/zlib122.v11.suo -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/Hack.h: -------------------------------------------------------------------------------- 1 | void Hack_Init(); -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/Helper.h: -------------------------------------------------------------------------------- 1 | void hexdump(void *pAddressIn, long lSize, char* filename) 2 | { 3 | FILE* fp = fopen(filename,"a"); 4 | char szBuf[100]; 5 | long lIndent = 1; 6 | long lOutLen, lIndex, lIndex2, lOutLen2; 7 | long lRelPos; 8 | struct { char *pData; unsigned long lSize; } buf; 9 | unsigned char *pTmp,ucTmp; 10 | unsigned char *pAddress = (unsigned char *)pAddressIn; 11 | buf.pData = (char *)pAddress; 12 | buf.lSize = lSize; 13 | while (buf.lSize > 0) 14 | { 15 | pTmp = (unsigned char *)buf.pData; 16 | lOutLen = (int)buf.lSize; 17 | if (lOutLen > 16) 18 | lOutLen = 16; 19 | sprintf(szBuf, " > " 20 | " " 21 | " %08lX", pTmp-pAddress); 22 | lOutLen2 = lOutLen; 23 | for(lIndex = 1+lIndent, lIndex2 = 53-15+lIndent, lRelPos = 0; 24 | lOutLen2; 25 | lOutLen2--, lIndex += 2, lIndex2++ 26 | ) 27 | { 28 | ucTmp = *pTmp++; 29 | sprintf(szBuf + lIndex, "%02X ", (unsigned short)ucTmp); 30 | if(!isprint(ucTmp)) ucTmp = '.'; 31 | szBuf[lIndex2] = ucTmp; 32 | if (!(++lRelPos & 3)) 33 | { lIndex++; szBuf[lIndex+2] = ' '; } 34 | } 35 | if (!(lRelPos & 3)) lIndex--; 36 | szBuf[lIndex ] = '<'; 37 | szBuf[lIndex+1] = ' '; 38 | fprintf(fp,"%s\n", szBuf); 39 | buf.pData += lOutLen; 40 | buf.lSize -= lOutLen; 41 | } 42 | fprintf(fp,"\n"); 43 | fclose(fp); 44 | } 45 | -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/detours.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2015/zlib122/detours.lib -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include "Hack.h" 6 | #pragma pack(1) 7 | 8 | 9 | 10 | extern "C" BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID) 11 | { 12 | static HINSTANCE hL; 13 | if (reason == DLL_PROCESS_ATTACH) 14 | { 15 | hL = LoadLibrary(_T(".\\zlib122_org.dll")); 16 | if (!hL) return false; 17 | Hack_Init(); 18 | } 19 | if (reason == DLL_PROCESS_DETACH) 20 | FreeLibrary(hL); 21 | return TRUE; 22 | } 23 | 24 | #pragma comment(linker, "/export:adler32=zlib122_org.adler32") 25 | 26 | #pragma comment(linker, "/export:compress2=zlib122_org.compress2") 27 | 28 | #pragma comment(linker, "/export:compress=zlib122_org.compress") 29 | 30 | #pragma comment(linker, "/export:compressBound=zlib122_org.compressBound") 31 | 32 | #pragma comment(linker, "/export:get_crc_table=zlib122_org.get_crc_table") 33 | 34 | #pragma comment(linker, "/export:crc32=zlib122_org.crc32") 35 | 36 | #pragma comment(linker, "/export:deflateSetDictionary=zlib122_org.deflateSetDictionary") 37 | 38 | #pragma comment(linker, "/export:deflatePrime=zlib122_org.deflatePrime") 39 | 40 | #pragma comment(linker, "/export:deflateBound=zlib122_org.deflateBound") 41 | 42 | #pragma comment(linker, "/export:deflate=zlib122_org.deflate") 43 | 44 | #pragma comment(linker, "/export:deflateEnd=zlib122_org.deflateEnd") 45 | 46 | #pragma comment(linker, "/export:deflateCopy=zlib122_org.deflateCopy") 47 | 48 | #pragma comment(linker, "/export:deflateReset=zlib122_org.deflateReset") 49 | 50 | #pragma comment(linker, "/export:deflateParams=zlib122_org.deflateParams") 51 | 52 | #pragma comment(linker, "/export:deflateInit2_=zlib122_org.deflateInit2_") 53 | 54 | #pragma comment(linker, "/export:deflateInit_=zlib122_org.deflateInit_") 55 | 56 | #pragma comment(linker, "/export:gzsetparams=zlib122_org.gzsetparams") 57 | 58 | #pragma comment(linker, "/export:gzungetc=zlib122_org.gzungetc") 59 | 60 | #pragma comment(linker, "/export:gzwrite=zlib122_org.gzwrite") 61 | 62 | #pragma comment(linker, "/export:gzprintf=zlib122_org.gzprintf") 63 | 64 | #pragma comment(linker, "/export:gzputc=zlib122_org.gzputc") 65 | 66 | #pragma comment(linker, "/export:gzputs=zlib122_org.gzputs") 67 | 68 | #pragma comment(linker, "/export:gzflush=zlib122_org.gzflush") 69 | 70 | #pragma comment(linker, "/export:gzrewind=zlib122_org.gzrewind") 71 | 72 | #pragma comment(linker, "/export:gzeof=zlib122_org.gzeof") 73 | 74 | #pragma comment(linker, "/export:gzclose=zlib122_org.gzclose") 75 | 76 | #pragma comment(linker, "/export:gzerror=zlib122_org.gzerror") 77 | 78 | #pragma comment(linker, "/export:gzclearerr=zlib122_org.gzclearerr") 79 | 80 | #pragma comment(linker, "/export:gzopen=zlib122_org.gzopen") 81 | 82 | #pragma comment(linker, "/export:gzdopen=zlib122_org.gzdopen") 83 | 84 | #pragma comment(linker, "/export:gzread=zlib122_org.gzread") 85 | 86 | #pragma comment(linker, "/export:gzgetc=zlib122_org.gzgetc") 87 | 88 | #pragma comment(linker, "/export:gzgets=zlib122_org.gzgets") 89 | 90 | #pragma comment(linker, "/export:gzseek=zlib122_org.gzseek") 91 | 92 | #pragma comment(linker, "/export:gztell=zlib122_org.gztell") 93 | 94 | #pragma comment(linker, "/export:inflateBackInit_=zlib122_org.inflateBackInit_") 95 | 96 | #pragma comment(linker, "/export:inflateBack=zlib122_org.inflateBack") 97 | 98 | #pragma comment(linker, "/export:inflateBackEnd=zlib122_org.inflateBackEnd") 99 | 100 | #pragma comment(linker, "/export:inflateReset=zlib122_org.inflateReset") 101 | 102 | #pragma comment(linker, "/export:inflateInit2_=zlib122_org.inflateInit2_") 103 | 104 | #pragma comment(linker, "/export:inflateInit_=zlib122_org.inflateInit_") 105 | 106 | #pragma comment(linker, "/export:inflate=zlib122_org.inflate") 107 | 108 | #pragma comment(linker, "/export:inflateEnd=zlib122_org.inflateEnd") 109 | 110 | #pragma comment(linker, "/export:inflateSetDictionary=zlib122_org.inflateSetDictionary") 111 | 112 | #pragma comment(linker, "/export:inflateSync=zlib122_org.inflateSync") 113 | 114 | #pragma comment(linker, "/export:inflateSyncPoint=zlib122_org.inflateSyncPoint") 115 | 116 | #pragma comment(linker, "/export:inflateCopy=zlib122_org.inflateCopy") 117 | 118 | #pragma comment(linker, "/export:uncompress=zlib122_org.uncompress") 119 | 120 | #pragma comment(linker, "/export:zlibVersion=zlib122_org.zlibVersion") 121 | 122 | #pragma comment(linker, "/export:zlibCompileFlags=zlib122_org.zlibCompileFlags") 123 | 124 | #pragma comment(linker, "/export:zError=zlib122_org.zError") 125 | 126 | 127 | -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2015/zlib122/stdafx.cpp -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2015/zlib122/stdafx.h -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroKilo/BFP4FToolsWV/5ff83b51021f3f09d21ddb2c9e5e5f01eb07ebdc/Zlib122_2015/zlib122/targetver.h -------------------------------------------------------------------------------- /Zlib122_2015/zlib122/zlib122.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Headerdateien 20 | 21 | 22 | Headerdateien 23 | 24 | 25 | Headerdateien 26 | 27 | 28 | Headerdateien 29 | 30 | 31 | Headerdateien 32 | 33 | 34 | 35 | 36 | Quelldateien 37 | 38 | 39 | Quelldateien 40 | 41 | 42 | Quelldateien 43 | 44 | 45 | 46 | 47 | 48 | --------------------------------------------------------------------------------