From 2707648b9e2020bc15247f65a066b298404648b0 Mon Sep 17 00:00:00 2001 From: sagirilover Date: Sat, 30 May 2020 04:08:09 +0300 Subject: [PATCH] 3.00 blockbot rework --- AnimeSoftware.sln | 50 +- AnimeSoftware/AlphaColorDialog.cs | 830 +++++++++--------- AnimeSoftware/AlphaColorPanel.cs | 398 ++++----- AnimeSoftware/AnimeForm.Designer.cs | 116 ++- AnimeSoftware/AnimeForm.cs | 61 +- AnimeSoftware/AnimeForm.resx | 15 + AnimeSoftware/Checks.cs | 2 +- AnimeSoftware/Hacks/Aimbot.cs | 5 +- AnimeSoftware/Hacks/BlockBot.cs | 80 +- AnimeSoftware/Hotkey.cs | 34 +- AnimeSoftware/Math.cs | 34 +- AnimeSoftware/Objects/Entity.cs | 6 + AnimeSoftware/Objects/LocalPlayer.cs | 40 +- AnimeSoftware/Offsets/Offsets.cs | 76 +- AnimeSoftware/Offsets/ScannedOffsets.cs | 36 +- AnimeSoftware/Program.cs | 44 +- AnimeSoftware/Properties/AssemblyInfo.cs | 72 +- AnimeSoftware/Properties/Hotkey.Designer.cs | 124 +-- AnimeSoftware/Properties/Hotkey.settings | 28 +- .../Properties/Resources.Designer.cs | 142 +-- AnimeSoftware/Properties/Resources.resx | 232 ++--- 21 files changed, 1349 insertions(+), 1076 deletions(-) diff --git a/AnimeSoftware.sln b/AnimeSoftware.sln index dba200e..2ee2af4 100644 --- a/AnimeSoftware.sln +++ b/AnimeSoftware.sln @@ -1,25 +1,25 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29424.173 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnimeSoftware", "AnimeSoftware\AnimeSoftware.csproj", "{617F8F5F-8917-4843-AAB3-66DA09EB7DB7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {FA8C57BA-1145-4614-A34D-BD12E3B6A144} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29424.173 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnimeSoftware", "AnimeSoftware\AnimeSoftware.csproj", "{617F8F5F-8917-4843-AAB3-66DA09EB7DB7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {617F8F5F-8917-4843-AAB3-66DA09EB7DB7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FA8C57BA-1145-4614-A34D-BD12E3B6A144} + EndGlobalSection +EndGlobal diff --git a/AnimeSoftware/AlphaColorDialog.cs b/AnimeSoftware/AlphaColorDialog.cs index 6f3a29e..ca9b4ba 100644 --- a/AnimeSoftware/AlphaColorDialog.cs +++ b/AnimeSoftware/AlphaColorDialog.cs @@ -1,416 +1,416 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Runtime.InteropServices; -using System.Text; - -namespace Opulos.Core.UI { -public class AlphaColorDialog : ColorDialog { - - ///Event is fired after the color or alpha value are changed via any of the possible user-interface controls. - public event EventHandler ColorChanged; - - private Color _color = Color.Black; // currently selected color - private AlphaDialog dialogAlpha = null; - private AlphaColorPanel panelAlpha = null; - private Button btnAlpha = new Button { Text = "Alpha" }; - private IntPtr handle = IntPtr.Zero; // handle of this ColorDialog - private IntPtr hWndRed = IntPtr.Zero; // handles to TextBoxes - private IntPtr hWndGreen = IntPtr.Zero; - private IntPtr hWndBlue = IntPtr.Zero; - - public AlphaColorDialog() { - btnAlpha.Click += btnAlpha_Click; - } - - ///The handle for the ColorDialog window. - public IntPtr Handle { - get { - return handle; - } - } - - void btnAlpha_Click(object sender, EventArgs e) { - if (dialogAlpha == null) { - dialogAlpha = new AlphaDialog(this); - panelAlpha = new AlphaColorPanel(); - panelAlpha.AlphaChanged += panelAlpha_AlphaChanged; - dialogAlpha.Controls.Add(panelAlpha); - dialogAlpha.Text = "Alpha"; - //dialogAlpha.StartPosition = FormStartPosition.CenterParent; // doesn't work - dialogAlpha.StartPosition = FormStartPosition.Manual; - dialogAlpha.ClientSize = panelAlpha.PreferredSize; - Size sz = dialogAlpha.Size; - RECT r = new RECT(); - GetWindowRect(handle, ref r); - dialogAlpha.Location = new Point(r.Left + ((r.Right - r.Left) - sz.Width) / 2, r.Top + ((r.Bottom - r.Top) - sz.Height) / 2); - } - - panelAlpha.Color = _color; - - if (!dialogAlpha.IsHandleCreated || !dialogAlpha.Visible) { - dialogAlpha.Visible = false; // sometimes IsHandleCreated is reset, so Visible must be reset - dialogAlpha.Show(new SimpleWindow { Handle = handle }); - } - else { - if (dialogAlpha.WindowState == FormWindowState.Minimized) - dialogAlpha.WindowState = FormWindowState.Normal; - - dialogAlpha.Activate(); - dialogAlpha.BringToFront(); - dialogAlpha.Focus(); - } - } - - void panelAlpha_AlphaChanged(object sender, EventArgs e) { - SetColorInternal(panelAlpha.Color); - } - - private static String GetWindowText(IntPtr hWnd) { - StringBuilder sb = new StringBuilder(256); - GetWindowText(hWnd, sb, sb.Capacity); - return sb.ToString(); - } - - private class SimpleWindow : IWin32Window { - public IntPtr Handle { get; set; } - } - - private static Bitmap ConvertToBitmap(IntPtr hWnd) { - RECT r = new RECT(); - GetWindowRect(hWnd, ref r); - int w = r.Right - r.Left; - int h = r.Bottom - r.Top; - - Graphics g = Graphics.FromHwnd(hWnd); - Bitmap bmp = new Bitmap(w, h); - Graphics g2 = Graphics.FromImage(bmp); - IntPtr g2_hdc = g2.GetHdc(); - IntPtr g_hdc = g.GetHdc(); - BitBlt(g2_hdc, 0, 0, w, h, g_hdc, 0, 0, SRC); - g.ReleaseHdc(g_hdc); - g2.ReleaseHdc(g2_hdc); - g.Dispose(); - g2.Dispose(); - - return bmp; - } - - private struct IJL { - public int i; - public int j; - public int len; - - public override String ToString() { - return i + " " + j + " " + len; - } - } - - private static Color? FindSelectedColor(IntPtr hWnd) { - // This method assumes there is a bounding rectangle around a color swatch. - // The rectangle can be any color, but must be a single color. Since - // the rectangle surrounds the swatch, it must have a run of pixels that - // is longer than the run of pixels inside the swatch. Since it is - // a rectangle, and we are scanning from top to bottom (left to right would also work), - // then there must be exactly two runs that tie for longest. If two runs cannot - // be found, then there is no bounding rectangle. - - Bitmap bmp = ConvertToBitmap(hWnd); - int w = bmp.Width; - int h = bmp.Height; - Color bg = bmp.GetPixel(0, 0); - - IJL ijl = new IJL(); - IJL ijl0 = new IJL(); - IJL ijl1 = new IJL(); - int k = 0; - - for (int i = 0; i < w; i++) { - Color lastColor = Color.Empty; - for (int j = 0; j <= h; j++) { - Color c = (j == h ? Color.Empty : bmp.GetPixel(i, j)); - if (c == lastColor) { - ijl.len++; - } - else { - if (ijl.len < h) { - if (ijl.len > 1 && bg != lastColor) { - if (ijl.len > ijl0.len) { - ijl0 = ijl; - k = 0; - } - else if (ijl.len == ijl0.len) { - ijl1 = ijl; - k++; - } - } - } - - ijl = new IJL(); - ijl.i = i; - ijl.j = j; - ijl.len = 1; - lastColor = c; - } - } - } - - if (k != 1) { - bmp.Dispose(); - return null; - } - - // k == 1 means there are exactly two runs of maximum length - int x = ijl0.i + (ijl1.i - ijl0.i) / 2; - int y = ijl0.j + ijl0.len / 2; - Color c1 = bmp.GetPixel(x, y); - bmp.Dispose(); - return c1; - } - - private Color GetColorInternal() { - int a = (panelAlpha != null ? panelAlpha.Alpha : 255); - String _r = GetWindowText(hWndRed); - if (_r.Length > 0) { - // Define Custom Colors UI is visible. - int r = int.Parse(_r); - int g = int.Parse(GetWindowText(hWndGreen)); - int b = int.Parse(GetWindowText(hWndBlue)); - return Color.FromArgb(a, r, g, b); - } - else { - // if the RGB text boxes aren't visible, then resort to trying to find - // the selected color by looking for the solid line rectangle that indicates the - // currently selected color. - Color? c = FindSelectedColor(GetDlgItem(handle, 0x02d0)); // Basic colors - if (!c.HasValue) - c = FindSelectedColor(GetDlgItem(handle, 0x02d1)); // Custom colors - - return c.HasValue ? Color.FromArgb(a, c.Value) : Color.FromArgb(a, Color.Black); - } - } - - private static bool AreEqual(Color c1, Color c2) { - // Color.Black != (255, 0, 0, 0) - return c1.A == c2.A && c1.R == c2.R && c1.G == c2.G && c1.B == c2.B; - } - - private void SetColorInternal(Color c) { - if (AreEqual(c, _color)) - return; - - _color = c; - if (ColorChanged != null) - ColorChanged(this, EventArgs.Empty); - } - - public new Color Color { - get { - return _color; - } - - set { - SetColorInternal(value); - if (panelAlpha != null) - panelAlpha.Alpha = value.A; - - base.Color = value; - } - } - - protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) { - //System.Diagnostics.Debug.WriteLine((Opulos.Core.Win32.WM) msg); - if (msg == WM_INITDIALOG) { - IntPtr hWndOK = GetDlgItem(hWnd, 0x1); // 0x1 == OK button - RECT rOK = new RECT(); - GetWindowRect(hWndOK, ref rOK); - - IntPtr hWndDefineCustomColors = GetDlgItem(hWnd, 0x02cf); - RECT rDefineCustomColors = new RECT(); - GetWindowRect(hWndDefineCustomColors, ref rDefineCustomColors); - - IntPtr hWndCancel = GetDlgItem(hWnd, 0x2); // 0x2 == Cancel button - RECT rCancel = new RECT(); - GetWindowRect(hWndCancel, ref rCancel); - // Convert the cancel button's screen coordinates to client coordinates - POINT pt = new POINT(); - pt.X = rCancel.Right; - pt.Y = rCancel.Top; - ScreenToClient(hWnd, ref pt); - IntPtr hWndParent = GetParent(hWndCancel); - int w = rCancel.Right - rCancel.Left; - int h = rCancel.Bottom - rCancel.Top; - int gap = (rCancel.Left - rOK.Right); - - // the "Define Custom Colors >>" button is slightly less wide than the total width of the - // OK, Cancel and Alpha buttons. Options: - // 1) Increase the width of the define button so it right aligns with the alpha button - // 2) Make the alpha button smaller in width - // 3) Decrease the widths of all three button and decrease the gap between them. - // Option 1 looks better than option 2. Didn't try option 3. - if (rCancel.Right + gap + w > rDefineCustomColors.Right) { // screen coordinates - int diff = (rCancel.Right + gap + w) - rDefineCustomColors.Right; - // Option 2: //w = w - diff; - // Option 1: - int w2 = rDefineCustomColors.Right - rDefineCustomColors.Left; - int h2 = rDefineCustomColors.Bottom - rDefineCustomColors.Top; - SetWindowPos(hWndDefineCustomColors, IntPtr.Zero, 0, 0, w2 + diff, h2, SWP_NOMOVE | SWP_NOZORDER); - } - - var hWndAlpha = btnAlpha.Handle; // creates the handle - btnAlpha.Bounds = new Rectangle(pt.X + gap, pt.Y, w, h); - SetParent(hWndAlpha, hWndParent); - int hWndFont = SendMessage(hWndCancel, WM_GETFONT, 0, 0); - SendMessage(hWndAlpha, WM_SETFONT, hWndFont, 0); - - // Alternative way to create the Alpha button, but would have to handle the WM_NOTIFY messages for the button click events. - //hWndAlpha = CreateWindowEx(0, "Button", "alphabutton", WS_VISIBLE | WS_CHILD | WS_TABSTOP, pt.X + gap, pt.Y, w, h, hWndParent, 0, 0, 0); - //SetWindowText(hWndAlpha, "Alpha"); - //int hWndFont = SendMessage(hWndCancel, WM_GETFONT, 0, 0); - //SendMessage(hWndAlpha, WM_SETFONT, hWndFont, 0); - - // calling ColorDialog.Color does not return the currently selected color until after the OK button - // is clicked. So the values from the textboxes are used. To find the controlIDs, use Spy++. - hWndRed = GetDlgItem(hWnd, 0x02c2); // red text box - hWndGreen = GetDlgItem(hWnd, 0x02c3); - hWndBlue = GetDlgItem(hWnd, 0x02c4); - } - else if (msg == WM_SHOWWINDOW) { - //center the dialog on the parent window: - RECT cr = new RECT(); - RECT r0 = new RECT(); - IntPtr parent = GetParent(hWnd); - GetWindowRect(hWnd, ref r0); - GetWindowRect(parent, ref cr); - handle = hWnd; - - int x = cr.Left + ((cr.Right - cr.Left) - (r0.Right - r0.Left)) / 2; - int y = cr.Top + ((cr.Bottom - cr.Top) - (r0.Bottom - r0.Top)) / 2; - SetWindowPos(hWnd, IntPtr.Zero, x, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE); - } - else if (msg == ACD_COLORCHANGED) { - Color c = GetColorInternal(); - SetColorInternal(c); - if (panelAlpha != null) - panelAlpha.Color = c; - } - else if (msg == WM_COMMAND || msg == WM_CHAR || msg == WM_LBUTTONDOWN) { - PostMessage(hWnd, ACD_COLORCHANGED, 0, 0); - } - - return base.HookProc(hWnd, msg, wparam, lparam); - } - - protected override void Dispose(bool disposing) { - base.Dispose(disposing); - if (disposing) { - if (btnAlpha != null) - btnAlpha.Dispose(); - - if (dialogAlpha != null) - dialogAlpha.Dispose(); - - btnAlpha = null; - dialogAlpha = null; - } - } - - private class AlphaDialog : Form { - - AlphaColorDialog AOwner; - public AlphaDialog(AlphaColorDialog owner) { - AOwner = owner; - ShowIcon = false; - } - - protected override void OnFormClosing(FormClosingEventArgs e) { - if (e.CloseReason == CloseReason.None || e.CloseReason == CloseReason.UserClosing) { - e.Cancel = true; - Hide(); - SetForegroundWindow(AOwner.handle); - } - base.OnFormClosing(e); - } - } - - private struct RECT { - public int Left; - public int Top; - public int Right; - public int Bottom; - } - - private struct POINT { - public int X; - public int Y; - } - - [DllImport("user32.dll")] - private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); - - [DllImport("user32.dll")] - private static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); - - [DllImport("user32.dll")] - private static extern IntPtr GetParent(IntPtr hWnd); - - [DllImport("user32.dll")] - private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); - - [DllImport("user32.dll")] - private static extern int PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); - - [DllImport("user32.dll")] - private static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem); - - [DllImport("user32.dll")] - private static extern bool ScreenToClient(IntPtr hWnd, ref POINT lpPoint); - - [DllImport("user32.dll")] - private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); - - [DllImport("user32.dll")] - private static extern bool SetForegroundWindow(IntPtr hWnd); - - [DllImport("user32.dll", CharSet = CharSet.Auto)] - private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); - - [DllImport("gdi32.dll", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] - private static extern bool BitBlt(IntPtr pHdc, int iX, int iY, int iWidth, int iHeight, IntPtr pHdcSource, int iXSource, int iYSource, System.Int32 dw); - - //[DllImport("user32.dll", CharSet = CharSet.Auto)] - //private static extern IntPtr CreateWindowEx(int dwExStyle, string lpClassName, string lpWindowName, uint dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, int hMenu, int hInstance, int lpParam); - - //[DllImport("user32.dll", CharSet = CharSet.Auto)] - //private static extern bool SetWindowText(IntPtr hWnd, String lpString); - - //[DllImport("user32.dll")] - //private static extern bool DestroyWindow(IntPtr hwnd); - - private const int ACD_COLORCHANGED = 0x0400; // custom message - private const int SRC = 0xCC0020; - - private const int SWP_NOSIZE = 0x0001; - private const int SWP_NOMOVE = 0x0002; - private const int SWP_NOZORDER = 0x0004; - - private const int WM_INITDIALOG = 0x110; - private const int WM_SETFONT = 0x0030; - private const int WM_GETFONT = 0x0031; - private const int WM_SHOWWINDOW = 0x18; - //private const int WM_NOTIFY; - // messages that indicate a color change: - private const int WM_COMMAND = 0x111; - private const int WM_CHAR = 0x102; - private const int WM_LBUTTONDOWN = 0x201; - - //private const uint WS_VISIBLE = 0x10000000; - //private const uint WS_CHILD = 0x40000000; - //private const uint WS_TABSTOP = 0x00010000; - -} +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; +using System.Data; +using System.Runtime.InteropServices; +using System.Text; + +namespace Opulos.Core.UI { +public class AlphaColorDialog : ColorDialog { + + ///Event is fired after the color or alpha value are changed via any of the possible user-interface controls. + public event EventHandler ColorChanged; + + private Color _color = Color.Black; // currently selected color + private AlphaDialog dialogAlpha = null; + private AlphaColorPanel panelAlpha = null; + private Button btnAlpha = new Button { Text = "Alpha" }; + private IntPtr handle = IntPtr.Zero; // handle of this ColorDialog + private IntPtr hWndRed = IntPtr.Zero; // handles to TextBoxes + private IntPtr hWndGreen = IntPtr.Zero; + private IntPtr hWndBlue = IntPtr.Zero; + + public AlphaColorDialog() { + btnAlpha.Click += btnAlpha_Click; + } + + ///The handle for the ColorDialog window. + public IntPtr Handle { + get { + return handle; + } + } + + void btnAlpha_Click(object sender, EventArgs e) { + if (dialogAlpha == null) { + dialogAlpha = new AlphaDialog(this); + panelAlpha = new AlphaColorPanel(); + panelAlpha.AlphaChanged += panelAlpha_AlphaChanged; + dialogAlpha.Controls.Add(panelAlpha); + dialogAlpha.Text = "Alpha"; + //dialogAlpha.StartPosition = FormStartPosition.CenterParent; // doesn't work + dialogAlpha.StartPosition = FormStartPosition.Manual; + dialogAlpha.ClientSize = panelAlpha.PreferredSize; + Size sz = dialogAlpha.Size; + RECT r = new RECT(); + GetWindowRect(handle, ref r); + dialogAlpha.Location = new Point(r.Left + ((r.Right - r.Left) - sz.Width) / 2, r.Top + ((r.Bottom - r.Top) - sz.Height) / 2); + } + + panelAlpha.Color = _color; + + if (!dialogAlpha.IsHandleCreated || !dialogAlpha.Visible) { + dialogAlpha.Visible = false; // sometimes IsHandleCreated is reset, so Visible must be reset + dialogAlpha.Show(new SimpleWindow { Handle = handle }); + } + else { + if (dialogAlpha.WindowState == FormWindowState.Minimized) + dialogAlpha.WindowState = FormWindowState.Normal; + + dialogAlpha.Activate(); + dialogAlpha.BringToFront(); + dialogAlpha.Focus(); + } + } + + void panelAlpha_AlphaChanged(object sender, EventArgs e) { + SetColorInternal(panelAlpha.Color); + } + + private static String GetWindowText(IntPtr hWnd) { + StringBuilder sb = new StringBuilder(256); + GetWindowText(hWnd, sb, sb.Capacity); + return sb.ToString(); + } + + private class SimpleWindow : IWin32Window { + public IntPtr Handle { get; set; } + } + + private static Bitmap ConvertToBitmap(IntPtr hWnd) { + RECT r = new RECT(); + GetWindowRect(hWnd, ref r); + int w = r.Right - r.Left; + int h = r.Bottom - r.Top; + + Graphics g = Graphics.FromHwnd(hWnd); + Bitmap bmp = new Bitmap(w, h); + Graphics g2 = Graphics.FromImage(bmp); + IntPtr g2_hdc = g2.GetHdc(); + IntPtr g_hdc = g.GetHdc(); + BitBlt(g2_hdc, 0, 0, w, h, g_hdc, 0, 0, SRC); + g.ReleaseHdc(g_hdc); + g2.ReleaseHdc(g2_hdc); + g.Dispose(); + g2.Dispose(); + + return bmp; + } + + private struct IJL { + public int i; + public int j; + public int len; + + public override String ToString() { + return i + " " + j + " " + len; + } + } + + private static Color? FindSelectedColor(IntPtr hWnd) { + // This method assumes there is a bounding rectangle around a color swatch. + // The rectangle can be any color, but must be a single color. Since + // the rectangle surrounds the swatch, it must have a run of pixels that + // is longer than the run of pixels inside the swatch. Since it is + // a rectangle, and we are scanning from top to bottom (left to right would also work), + // then there must be exactly two runs that tie for longest. If two runs cannot + // be found, then there is no bounding rectangle. + + Bitmap bmp = ConvertToBitmap(hWnd); + int w = bmp.Width; + int h = bmp.Height; + Color bg = bmp.GetPixel(0, 0); + + IJL ijl = new IJL(); + IJL ijl0 = new IJL(); + IJL ijl1 = new IJL(); + int k = 0; + + for (int i = 0; i < w; i++) { + Color lastColor = Color.Empty; + for (int j = 0; j <= h; j++) { + Color c = (j == h ? Color.Empty : bmp.GetPixel(i, j)); + if (c == lastColor) { + ijl.len++; + } + else { + if (ijl.len < h) { + if (ijl.len > 1 && bg != lastColor) { + if (ijl.len > ijl0.len) { + ijl0 = ijl; + k = 0; + } + else if (ijl.len == ijl0.len) { + ijl1 = ijl; + k++; + } + } + } + + ijl = new IJL(); + ijl.i = i; + ijl.j = j; + ijl.len = 1; + lastColor = c; + } + } + } + + if (k != 1) { + bmp.Dispose(); + return null; + } + + // k == 1 means there are exactly two runs of maximum length + int x = ijl0.i + (ijl1.i - ijl0.i) / 2; + int y = ijl0.j + ijl0.len / 2; + Color c1 = bmp.GetPixel(x, y); + bmp.Dispose(); + return c1; + } + + private Color GetColorInternal() { + int a = (panelAlpha != null ? panelAlpha.Alpha : 255); + String _r = GetWindowText(hWndRed); + if (_r.Length > 0) { + // Define Custom Colors UI is visible. + int r = int.Parse(_r); + int g = int.Parse(GetWindowText(hWndGreen)); + int b = int.Parse(GetWindowText(hWndBlue)); + return Color.FromArgb(a, r, g, b); + } + else { + // if the RGB text boxes aren't visible, then resort to trying to find + // the selected color by looking for the solid line rectangle that indicates the + // currently selected color. + Color? c = FindSelectedColor(GetDlgItem(handle, 0x02d0)); // Basic colors + if (!c.HasValue) + c = FindSelectedColor(GetDlgItem(handle, 0x02d1)); // Custom colors + + return c.HasValue ? Color.FromArgb(a, c.Value) : Color.FromArgb(a, Color.Black); + } + } + + private static bool AreEqual(Color c1, Color c2) { + // Color.Black != (255, 0, 0, 0) + return c1.A == c2.A && c1.R == c2.R && c1.G == c2.G && c1.B == c2.B; + } + + private void SetColorInternal(Color c) { + if (AreEqual(c, _color)) + return; + + _color = c; + if (ColorChanged != null) + ColorChanged(this, EventArgs.Empty); + } + + public new Color Color { + get { + return _color; + } + + set { + SetColorInternal(value); + if (panelAlpha != null) + panelAlpha.Alpha = value.A; + + base.Color = value; + } + } + + protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) { + //System.Diagnostics.Debug.WriteLine((Opulos.Core.Win32.WM) msg); + if (msg == WM_INITDIALOG) { + IntPtr hWndOK = GetDlgItem(hWnd, 0x1); // 0x1 == OK button + RECT rOK = new RECT(); + GetWindowRect(hWndOK, ref rOK); + + IntPtr hWndDefineCustomColors = GetDlgItem(hWnd, 0x02cf); + RECT rDefineCustomColors = new RECT(); + GetWindowRect(hWndDefineCustomColors, ref rDefineCustomColors); + + IntPtr hWndCancel = GetDlgItem(hWnd, 0x2); // 0x2 == Cancel button + RECT rCancel = new RECT(); + GetWindowRect(hWndCancel, ref rCancel); + // Convert the cancel button's screen coordinates to client coordinates + POINT pt = new POINT(); + pt.X = rCancel.Right; + pt.Y = rCancel.Top; + ScreenToClient(hWnd, ref pt); + IntPtr hWndParent = GetParent(hWndCancel); + int w = rCancel.Right - rCancel.Left; + int h = rCancel.Bottom - rCancel.Top; + int gap = (rCancel.Left - rOK.Right); + + // the "Define Custom Colors >>" button is slightly less wide than the total width of the + // OK, Cancel and Alpha buttons. Options: + // 1) Increase the width of the define button so it right aligns with the alpha button + // 2) Make the alpha button smaller in width + // 3) Decrease the widths of all three button and decrease the gap between them. + // Option 1 looks better than option 2. Didn't try option 3. + if (rCancel.Right + gap + w > rDefineCustomColors.Right) { // screen coordinates + int diff = (rCancel.Right + gap + w) - rDefineCustomColors.Right; + // Option 2: //w = w - diff; + // Option 1: + int w2 = rDefineCustomColors.Right - rDefineCustomColors.Left; + int h2 = rDefineCustomColors.Bottom - rDefineCustomColors.Top; + SetWindowPos(hWndDefineCustomColors, IntPtr.Zero, 0, 0, w2 + diff, h2, SWP_NOMOVE | SWP_NOZORDER); + } + + var hWndAlpha = btnAlpha.Handle; // creates the handle + btnAlpha.Bounds = new Rectangle(pt.X + gap, pt.Y, w, h); + SetParent(hWndAlpha, hWndParent); + int hWndFont = SendMessage(hWndCancel, WM_GETFONT, 0, 0); + SendMessage(hWndAlpha, WM_SETFONT, hWndFont, 0); + + // Alternative way to create the Alpha button, but would have to handle the WM_NOTIFY messages for the button click events. + //hWndAlpha = CreateWindowEx(0, "Button", "alphabutton", WS_VISIBLE | WS_CHILD | WS_TABSTOP, pt.X + gap, pt.Y, w, h, hWndParent, 0, 0, 0); + //SetWindowText(hWndAlpha, "Alpha"); + //int hWndFont = SendMessage(hWndCancel, WM_GETFONT, 0, 0); + //SendMessage(hWndAlpha, WM_SETFONT, hWndFont, 0); + + // calling ColorDialog.Color does not return the currently selected color until after the OK button + // is clicked. So the values from the textboxes are used. To find the controlIDs, use Spy++. + hWndRed = GetDlgItem(hWnd, 0x02c2); // red text box + hWndGreen = GetDlgItem(hWnd, 0x02c3); + hWndBlue = GetDlgItem(hWnd, 0x02c4); + } + else if (msg == WM_SHOWWINDOW) { + //center the dialog on the parent window: + RECT cr = new RECT(); + RECT r0 = new RECT(); + IntPtr parent = GetParent(hWnd); + GetWindowRect(hWnd, ref r0); + GetWindowRect(parent, ref cr); + handle = hWnd; + + int x = cr.Left + ((cr.Right - cr.Left) - (r0.Right - r0.Left)) / 2; + int y = cr.Top + ((cr.Bottom - cr.Top) - (r0.Bottom - r0.Top)) / 2; + SetWindowPos(hWnd, IntPtr.Zero, x, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE); + } + else if (msg == ACD_COLORCHANGED) { + Color c = GetColorInternal(); + SetColorInternal(c); + if (panelAlpha != null) + panelAlpha.Color = c; + } + else if (msg == WM_COMMAND || msg == WM_CHAR || msg == WM_LBUTTONDOWN) { + PostMessage(hWnd, ACD_COLORCHANGED, 0, 0); + } + + return base.HookProc(hWnd, msg, wparam, lparam); + } + + protected override void Dispose(bool disposing) { + base.Dispose(disposing); + if (disposing) { + if (btnAlpha != null) + btnAlpha.Dispose(); + + if (dialogAlpha != null) + dialogAlpha.Dispose(); + + btnAlpha = null; + dialogAlpha = null; + } + } + + private class AlphaDialog : Form { + + AlphaColorDialog AOwner; + public AlphaDialog(AlphaColorDialog owner) { + AOwner = owner; + ShowIcon = false; + } + + protected override void OnFormClosing(FormClosingEventArgs e) { + if (e.CloseReason == CloseReason.None || e.CloseReason == CloseReason.UserClosing) { + e.Cancel = true; + Hide(); + SetForegroundWindow(AOwner.handle); + } + base.OnFormClosing(e); + } + } + + private struct RECT { + public int Left; + public int Top; + public int Right; + public int Bottom; + } + + private struct POINT { + public int X; + public int Y; + } + + [DllImport("user32.dll")] + private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); + + [DllImport("user32.dll")] + private static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); + + [DllImport("user32.dll")] + private static extern IntPtr GetParent(IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); + + [DllImport("user32.dll")] + private static extern int PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); + + [DllImport("user32.dll")] + private static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem); + + [DllImport("user32.dll")] + private static extern bool ScreenToClient(IntPtr hWnd, ref POINT lpPoint); + + [DllImport("user32.dll")] + private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); + + [DllImport("user32.dll")] + private static extern bool SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); + + [DllImport("gdi32.dll", ExactSpelling=true, CharSet=CharSet.Auto, SetLastError=true)] + private static extern bool BitBlt(IntPtr pHdc, int iX, int iY, int iWidth, int iHeight, IntPtr pHdcSource, int iXSource, int iYSource, System.Int32 dw); + + //[DllImport("user32.dll", CharSet = CharSet.Auto)] + //private static extern IntPtr CreateWindowEx(int dwExStyle, string lpClassName, string lpWindowName, uint dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, int hMenu, int hInstance, int lpParam); + + //[DllImport("user32.dll", CharSet = CharSet.Auto)] + //private static extern bool SetWindowText(IntPtr hWnd, String lpString); + + //[DllImport("user32.dll")] + //private static extern bool DestroyWindow(IntPtr hwnd); + + private const int ACD_COLORCHANGED = 0x0400; // custom message + private const int SRC = 0xCC0020; + + private const int SWP_NOSIZE = 0x0001; + private const int SWP_NOMOVE = 0x0002; + private const int SWP_NOZORDER = 0x0004; + + private const int WM_INITDIALOG = 0x110; + private const int WM_SETFONT = 0x0030; + private const int WM_GETFONT = 0x0031; + private const int WM_SHOWWINDOW = 0x18; + //private const int WM_NOTIFY; + // messages that indicate a color change: + private const int WM_COMMAND = 0x111; + private const int WM_CHAR = 0x102; + private const int WM_LBUTTONDOWN = 0x201; + + //private const uint WS_VISIBLE = 0x10000000; + //private const uint WS_CHILD = 0x40000000; + //private const uint WS_TABSTOP = 0x00010000; + +} } \ No newline at end of file diff --git a/AnimeSoftware/AlphaColorPanel.cs b/AnimeSoftware/AlphaColorPanel.cs index 0242ae9..0b888d1 100644 --- a/AnimeSoftware/AlphaColorPanel.cs +++ b/AnimeSoftware/AlphaColorPanel.cs @@ -1,200 +1,200 @@ -using System; -using System.Drawing; -using System.Runtime.InteropServices; -using System.Windows.Forms; - -namespace Opulos.Core.UI { - -public class AlphaColorPanel : Panel { - - public event EventHandler AlphaChanged; - - NumericUpDown nudAlpha = new NumericUpDown { AutoSize = true, Minimum = 0, Maximum = 255, DecimalPlaces = 0, Increment = 1, Value = 255, Anchor = AnchorStyles.Top }; - TrackBar trackBar = new TrackBar2 { Minimum = 0, Maximum = 255, TickFrequency = 5, TickStyle = TickStyle.None, Orientation = Orientation.Horizontal, Value = 255, Anchor = AnchorStyles.Left | AnchorStyles.Right }; - Color[] colors = new Color[] { Color.White, Color.Black, Color.Green, Color.Blue, Color.Red, Color.Yellow }; - public int Cols { get; set; } - public int SwatchSize { get; set; } - - private Color color = Color.Empty; - - public AlphaColorPanel() : base() { - Dock = DockStyle.Fill; - AutoSize = true; - AutoSizeMode = AutoSizeMode.GrowAndShrink; - DoubleBuffered = true; - //TabStop = true; - //SetStyle(ControlStyles.Selectable, true); - ResizeRedraw = true; - - Cols = 3; - SwatchSize = 100; - trackBar.ValueChanged += trackBar_ValueChanged; - nudAlpha.ValueChanged += nudAlpha_ValueChanged; - Alpha = 255; - - TableLayoutPanel p = new TableLayoutPanel { Dock = DockStyle.Bottom }; - p.AutoSize = true; - p.AutoSizeMode = AutoSizeMode.GrowAndShrink; - p.Controls.Add(nudAlpha, 0, 0); - p.Controls.Add(trackBar, 1, 0); - p.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); - p.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 1)); - Controls.Add(p); - - nudAlpha.KeyDown += nudAlpha_KeyDown; - trackBar.KeyDown += trackBar_KeyDown; - } - - void trackBar_KeyDown(object sender, KeyEventArgs e) { - HandleKeyEvent((Control) sender, e); - } - - void nudAlpha_KeyDown(object sender, KeyEventArgs e) { - HandleKeyEvent((Control) sender, e); - } - - private void HandleKeyEvent(Control sender, KeyEventArgs e) { - if (e.KeyCode == Keys.Enter) { - e.SuppressKeyPress = true; // stop beep - e.Handled = true; - } - else if (e.KeyCode == Keys.Escape) { - e.SuppressKeyPress = true; - e.Handled = true; - Form f = FindForm(); - if (f != null) - f.Close(); - } - else if (e.KeyCode == Keys.Tab) { - // seems like because the Form is displays with Show(Window) but - // it is not modal, that stops tabs from working correctly, so - // it is handled manually: - sender.Parent.SelectNextControl(sender, true, true, true, true); - e.SuppressKeyPress = true; - e.Handled = true; - } - } - - void nudAlpha_ValueChanged(object sender, EventArgs e) { - trackBar.Value = Convert.ToInt32(nudAlpha.Value); - } - - public override Size GetPreferredSize(Size proposedSize) { - int w = SwatchSize * Cols; - int h = SwatchSize * (((Colors.Length - 1) / Cols) + 1); - h += Math.Max(trackBar.Height, nudAlpha.Height); - return new Size(w, h); - } - - public Color Color { - get { - return color; - } - set { - var c = value; - color = Color.FromArgb(Alpha, c.R, c.G, c.B); - Invalidate(); //Refresh(); - } - } - - public int Alpha { - get { - return trackBar.Value; - } - set { - trackBar.Value = value; - } - } - - public Color[] Colors { - get { - return colors; - } - set { - colors = value; - } - } - - void trackBar_ValueChanged(object sender, EventArgs e) { - nudAlpha.Value = trackBar.Value; - Color c = Color; - Color = Color.FromArgb(trackBar.Value, c.R, c.G, c.B); - Refresh(); - if (AlphaChanged != null) - AlphaChanged(this, EventArgs.Empty); - } - - protected override void OnPaint(PaintEventArgs e) { - base.OnPaint(e); - - int rows = ((Colors.Length - 1) / Cols) + 1; - int r1 = Width / Cols; - int r2 = Height / Cols; - int r = Math.Min(r1, r2); - if (r < SwatchSize) - r = SwatchSize; - - int offsetX = (Width - r * Cols) / 2; - int offsetY = ((Height - Math.Max(nudAlpha.Height, trackBar.Height)) - r * rows) / 2; - - var g = e.Graphics; - int x = 0; - int y = 0; - for (int i = 0, j = 1; i < colors.Length; i++, j++) { - Color c = colors[i]; - - using (var b = new SolidBrush(c)) - g.FillRectangle(b, x + offsetX, y + offsetY, r, r); - - if (j == Cols) { - j = 0; - x = 0; - y += r; - } - else { - x += r; - } - } - - using (var b = new SolidBrush(Color)) - g.FillRectangle(b, r / 2 + offsetX, r / 2 + offsetY, 2 * r, r); - } -} - - -class TrackBar2 : TrackBar { - - public TrackBar2() : base() { - AutoSize = false; - RECT r = GetThumbRect(this); - Height = r.Bottom - r.Top; - } - - public override Size GetPreferredSize(Size proposedSize) { - Size sz = base.GetPreferredSize(proposedSize); - RECT r = GetThumbRect(this); - sz.Height = r.Bottom - r.Top; - return sz; - } - - [StructLayout(LayoutKind.Sequential)] - private struct RECT { - public int Left; - public int Top; - public int Right; - public int Bottom; - } - - [DllImport("user32.dll")] - private static extern void SendMessage(IntPtr hwnd, uint msg, IntPtr wp, ref RECT lp); - - private const uint TBM_GETTHUMBRECT = 0x419; - private static RECT GetThumbRect(TrackBar trackBar) { - RECT rc = new RECT(); - SendMessage(trackBar.Handle, TBM_GETTHUMBRECT, IntPtr.Zero, ref rc); - return rc; - } -} - - +using System; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace Opulos.Core.UI { + +public class AlphaColorPanel : Panel { + + public event EventHandler AlphaChanged; + + NumericUpDown nudAlpha = new NumericUpDown { AutoSize = true, Minimum = 0, Maximum = 255, DecimalPlaces = 0, Increment = 1, Value = 255, Anchor = AnchorStyles.Top }; + TrackBar trackBar = new TrackBar2 { Minimum = 0, Maximum = 255, TickFrequency = 5, TickStyle = TickStyle.None, Orientation = Orientation.Horizontal, Value = 255, Anchor = AnchorStyles.Left | AnchorStyles.Right }; + Color[] colors = new Color[] { Color.White, Color.Black, Color.Green, Color.Blue, Color.Red, Color.Yellow }; + public int Cols { get; set; } + public int SwatchSize { get; set; } + + private Color color = Color.Empty; + + public AlphaColorPanel() : base() { + Dock = DockStyle.Fill; + AutoSize = true; + AutoSizeMode = AutoSizeMode.GrowAndShrink; + DoubleBuffered = true; + //TabStop = true; + //SetStyle(ControlStyles.Selectable, true); + ResizeRedraw = true; + + Cols = 3; + SwatchSize = 100; + trackBar.ValueChanged += trackBar_ValueChanged; + nudAlpha.ValueChanged += nudAlpha_ValueChanged; + Alpha = 255; + + TableLayoutPanel p = new TableLayoutPanel { Dock = DockStyle.Bottom }; + p.AutoSize = true; + p.AutoSizeMode = AutoSizeMode.GrowAndShrink; + p.Controls.Add(nudAlpha, 0, 0); + p.Controls.Add(trackBar, 1, 0); + p.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); + p.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 1)); + Controls.Add(p); + + nudAlpha.KeyDown += nudAlpha_KeyDown; + trackBar.KeyDown += trackBar_KeyDown; + } + + void trackBar_KeyDown(object sender, KeyEventArgs e) { + HandleKeyEvent((Control) sender, e); + } + + void nudAlpha_KeyDown(object sender, KeyEventArgs e) { + HandleKeyEvent((Control) sender, e); + } + + private void HandleKeyEvent(Control sender, KeyEventArgs e) { + if (e.KeyCode == Keys.Enter) { + e.SuppressKeyPress = true; // stop beep + e.Handled = true; + } + else if (e.KeyCode == Keys.Escape) { + e.SuppressKeyPress = true; + e.Handled = true; + Form f = FindForm(); + if (f != null) + f.Close(); + } + else if (e.KeyCode == Keys.Tab) { + // seems like because the Form is displays with Show(Window) but + // it is not modal, that stops tabs from working correctly, so + // it is handled manually: + sender.Parent.SelectNextControl(sender, true, true, true, true); + e.SuppressKeyPress = true; + e.Handled = true; + } + } + + void nudAlpha_ValueChanged(object sender, EventArgs e) { + trackBar.Value = Convert.ToInt32(nudAlpha.Value); + } + + public override Size GetPreferredSize(Size proposedSize) { + int w = SwatchSize * Cols; + int h = SwatchSize * (((Colors.Length - 1) / Cols) + 1); + h += Math.Max(trackBar.Height, nudAlpha.Height); + return new Size(w, h); + } + + public Color Color { + get { + return color; + } + set { + var c = value; + color = Color.FromArgb(Alpha, c.R, c.G, c.B); + Invalidate(); //Refresh(); + } + } + + public int Alpha { + get { + return trackBar.Value; + } + set { + trackBar.Value = value; + } + } + + public Color[] Colors { + get { + return colors; + } + set { + colors = value; + } + } + + void trackBar_ValueChanged(object sender, EventArgs e) { + nudAlpha.Value = trackBar.Value; + Color c = Color; + Color = Color.FromArgb(trackBar.Value, c.R, c.G, c.B); + Refresh(); + if (AlphaChanged != null) + AlphaChanged(this, EventArgs.Empty); + } + + protected override void OnPaint(PaintEventArgs e) { + base.OnPaint(e); + + int rows = ((Colors.Length - 1) / Cols) + 1; + int r1 = Width / Cols; + int r2 = Height / Cols; + int r = Math.Min(r1, r2); + if (r < SwatchSize) + r = SwatchSize; + + int offsetX = (Width - r * Cols) / 2; + int offsetY = ((Height - Math.Max(nudAlpha.Height, trackBar.Height)) - r * rows) / 2; + + var g = e.Graphics; + int x = 0; + int y = 0; + for (int i = 0, j = 1; i < colors.Length; i++, j++) { + Color c = colors[i]; + + using (var b = new SolidBrush(c)) + g.FillRectangle(b, x + offsetX, y + offsetY, r, r); + + if (j == Cols) { + j = 0; + x = 0; + y += r; + } + else { + x += r; + } + } + + using (var b = new SolidBrush(Color)) + g.FillRectangle(b, r / 2 + offsetX, r / 2 + offsetY, 2 * r, r); + } +} + + +class TrackBar2 : TrackBar { + + public TrackBar2() : base() { + AutoSize = false; + RECT r = GetThumbRect(this); + Height = r.Bottom - r.Top; + } + + public override Size GetPreferredSize(Size proposedSize) { + Size sz = base.GetPreferredSize(proposedSize); + RECT r = GetThumbRect(this); + sz.Height = r.Bottom - r.Top; + return sz; + } + + [StructLayout(LayoutKind.Sequential)] + private struct RECT { + public int Left; + public int Top; + public int Right; + public int Bottom; + } + + [DllImport("user32.dll")] + private static extern void SendMessage(IntPtr hwnd, uint msg, IntPtr wp, ref RECT lp); + + private const uint TBM_GETTHUMBRECT = 0x419; + private static RECT GetThumbRect(TrackBar trackBar) { + RECT rc = new RECT(); + SendMessage(trackBar.Handle, TBM_GETTHUMBRECT, IntPtr.Zero, ref rc); + return rc; + } +} + + } \ No newline at end of file diff --git a/AnimeSoftware/AnimeForm.Designer.cs b/AnimeSoftware/AnimeForm.Designer.cs index 3225658..8e40b50 100644 --- a/AnimeSoftware/AnimeForm.Designer.cs +++ b/AnimeSoftware/AnimeForm.Designer.cs @@ -57,6 +57,7 @@ this.removeGlowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.voteKickToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.stealWhenYouFriendlyfireToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.getByteNameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.rightspamButton = new System.Windows.Forms.CheckBox(); this.trashControl = new System.Windows.Forms.TabControl(); this.aimTab = new System.Windows.Forms.TabPage(); @@ -87,6 +88,10 @@ this.label2 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label(); this.label8 = new System.Windows.Forms.Label(); + this.trackBar3 = new System.Windows.Forms.TrackBar(); + this.trackBar4 = new System.Windows.Forms.TrackBar(); + this.trackBar5 = new System.Windows.Forms.TrackBar(); + this.label9 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.nickBox)).BeginInit(); this.nickBoxContextMenuStrip.SuspendLayout(); this.trashControl.SuspendLayout(); @@ -96,11 +101,14 @@ ((System.ComponentModel.ISupportInitialize)(this.chokeTrackBar)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar5)).BeginInit(); this.SuspendLayout(); // // refreshButton // - this.refreshButton.Location = new System.Drawing.Point(173, 335); + this.refreshButton.Location = new System.Drawing.Point(173, 412); this.refreshButton.Name = "refreshButton"; this.refreshButton.Size = new System.Drawing.Size(75, 26); this.refreshButton.TabIndex = 2; @@ -111,7 +119,7 @@ // changeButton // this.changeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.changeButton.Location = new System.Drawing.Point(12, 335); + this.changeButton.Location = new System.Drawing.Point(12, 412); this.changeButton.Name = "changeButton"; this.changeButton.Size = new System.Drawing.Size(75, 26); this.changeButton.TabIndex = 5; @@ -137,7 +145,7 @@ this.nickBox.ReadOnly = true; this.nickBox.RowHeadersVisible = false; this.nickBox.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.nickBox.Size = new System.Drawing.Size(317, 317); + this.nickBox.Size = new System.Drawing.Size(317, 390); this.nickBox.TabIndex = 10; this.nickBox.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.nickBox_CellClick); this.nickBox.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.nickBox_CellMouseUp); @@ -173,7 +181,7 @@ // // resetButton // - this.resetButton.Location = new System.Drawing.Point(93, 335); + this.resetButton.Location = new System.Drawing.Point(93, 412); this.resetButton.Name = "resetButton"; this.resetButton.Size = new System.Drawing.Size(75, 26); this.resetButton.TabIndex = 11; @@ -195,7 +203,7 @@ // doorspammerCheckBox // this.doorspammerCheckBox.AutoSize = true; - this.doorspammerCheckBox.Location = new System.Drawing.Point(335, 326); + this.doorspammerCheckBox.Location = new System.Drawing.Point(481, 12); this.doorspammerCheckBox.Name = "doorspammerCheckBox"; this.doorspammerCheckBox.Size = new System.Drawing.Size(93, 17); this.doorspammerCheckBox.TabIndex = 14; @@ -206,7 +214,7 @@ // blockbotCheckBox // this.blockbotCheckBox.AutoSize = true; - this.blockbotCheckBox.Location = new System.Drawing.Point(335, 370); + this.blockbotCheckBox.Location = new System.Drawing.Point(481, 57); this.blockbotCheckBox.Name = "blockbotCheckBox"; this.blockbotCheckBox.Size = new System.Drawing.Size(69, 17); this.blockbotCheckBox.TabIndex = 15; @@ -216,7 +224,7 @@ // // doorspammerButton // - this.doorspammerButton.Location = new System.Drawing.Point(335, 342); + this.doorspammerButton.Location = new System.Drawing.Point(481, 28); this.doorspammerButton.Name = "doorspammerButton"; this.doorspammerButton.Size = new System.Drawing.Size(84, 23); this.doorspammerButton.TabIndex = 17; @@ -228,7 +236,7 @@ // blockbotButton // this.blockbotButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.blockbotButton.Location = new System.Drawing.Point(335, 386); + this.blockbotButton.Location = new System.Drawing.Point(481, 73); this.blockbotButton.Name = "blockbotButton"; this.blockbotButton.Size = new System.Drawing.Size(84, 23); this.blockbotButton.TabIndex = 18; @@ -239,7 +247,7 @@ // // fullrefreshButton // - this.fullrefreshButton.Location = new System.Drawing.Point(254, 335); + this.fullrefreshButton.Location = new System.Drawing.Point(254, 412); this.fullrefreshButton.Name = "fullrefreshButton"; this.fullrefreshButton.Size = new System.Drawing.Size(75, 26); this.fullrefreshButton.TabIndex = 19; @@ -260,7 +268,7 @@ // // customnameTextBox // - this.customnameTextBox.Location = new System.Drawing.Point(12, 367); + this.customnameTextBox.Location = new System.Drawing.Point(12, 444); this.customnameTextBox.Name = "customnameTextBox"; this.customnameTextBox.Size = new System.Drawing.Size(259, 20); this.customnameTextBox.TabIndex = 21; @@ -268,7 +276,7 @@ // // setupButton // - this.setupButton.Location = new System.Drawing.Point(277, 367); + this.setupButton.Location = new System.Drawing.Point(277, 444); this.setupButton.Name = "setupButton"; this.setupButton.Size = new System.Drawing.Size(52, 20); this.setupButton.TabIndex = 22; @@ -294,9 +302,11 @@ this.setGlowToolStripMenuItem, this.removeGlowToolStripMenuItem, this.voteKickToolStripMenuItem, - this.stealWhenYouFriendlyfireToolStripMenuItem}); + this.stealWhenYouFriendlyfireToolStripMenuItem, + this.getByteNameToolStripMenuItem}); this.nickBoxContextMenuStrip.Name = "nickBoxContextMenuStrip"; - this.nickBoxContextMenuStrip.Size = new System.Drawing.Size(215, 114); + this.nickBoxContextMenuStrip.Size = new System.Drawing.Size(215, 136); + this.nickBoxContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.nickBoxContextMenuStrip_Opening); this.nickBoxContextMenuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.nickBoxContextMenuStrip_ItemClicked); // // stealNameToolStripMenuItem @@ -360,6 +370,13 @@ this.stealWhenYouFriendlyfireToolStripMenuItem.Size = new System.Drawing.Size(214, 22); this.stealWhenYouFriendlyfireToolStripMenuItem.Text = "Steal when you friendlyfire"; // + // getByteNameToolStripMenuItem + // + this.getByteNameToolStripMenuItem.Name = "getByteNameToolStripMenuItem"; + this.getByteNameToolStripMenuItem.Size = new System.Drawing.Size(214, 22); + this.getByteNameToolStripMenuItem.Text = "Get byte name"; + this.getByteNameToolStripMenuItem.Click += new System.EventHandler(this.getByteNameToolStripMenuItem_Click); + // // rightspamButton // this.rightspamButton.AutoSize = true; @@ -375,7 +392,7 @@ // trashControl // this.trashControl.Controls.Add(this.aimTab); - this.trashControl.Location = new System.Drawing.Point(476, 35); + this.trashControl.Location = new System.Drawing.Point(591, 12); this.trashControl.Name = "trashControl"; this.trashControl.SelectedIndex = 0; this.trashControl.Size = new System.Drawing.Size(145, 371); @@ -515,7 +532,7 @@ // // unlockButton // - this.unlockButton.Location = new System.Drawing.Point(464, 399); + this.unlockButton.Location = new System.Drawing.Point(575, 476); this.unlockButton.Name = "unlockButton"; this.unlockButton.Size = new System.Drawing.Size(10, 10); this.unlockButton.TabIndex = 31; @@ -599,7 +616,7 @@ // // clanTextBox // - this.clanTextBox.Location = new System.Drawing.Point(12, 389); + this.clanTextBox.Location = new System.Drawing.Point(12, 466); this.clanTextBox.Name = "clanTextBox"; this.clanTextBox.Size = new System.Drawing.Size(259, 20); this.clanTextBox.TabIndex = 42; @@ -607,7 +624,7 @@ // // clanButton // - this.clanButton.Location = new System.Drawing.Point(277, 389); + this.clanButton.Location = new System.Drawing.Point(277, 466); this.clanButton.Name = "clanButton"; this.clanButton.Size = new System.Drawing.Size(52, 20); this.clanButton.TabIndex = 43; @@ -617,7 +634,7 @@ // // trackBar1 // - this.trackBar1.Location = new System.Drawing.Point(658, 74); + this.trackBar1.Location = new System.Drawing.Point(481, 120); this.trackBar1.Maximum = 300; this.trackBar1.Name = "trackBar1"; this.trackBar1.Size = new System.Drawing.Size(104, 45); @@ -627,7 +644,7 @@ // // trackBar2 // - this.trackBar2.Location = new System.Drawing.Point(658, 144); + this.trackBar2.Location = new System.Drawing.Point(481, 190); this.trackBar2.Maximum = 100; this.trackBar2.Minimum = 1; this.trackBar2.Name = "trackBar2"; @@ -639,7 +656,7 @@ // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(655, 125); + this.label1.Location = new System.Drawing.Point(478, 171); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(82, 13); this.label1.TabIndex = 46; @@ -648,7 +665,7 @@ // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(655, 55); + this.label2.Location = new System.Drawing.Point(478, 101); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(87, 13); this.label2.TabIndex = 47; @@ -657,7 +674,7 @@ // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(691, 171); + this.label7.Location = new System.Drawing.Point(514, 222); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(35, 13); this.label7.TabIndex = 48; @@ -667,18 +684,61 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(691, 101); + this.label8.Location = new System.Drawing.Point(514, 147); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(35, 13); this.label8.TabIndex = 49; this.label8.Text = "label8"; this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // + // trackBar3 + // + this.trackBar3.Location = new System.Drawing.Point(481, 281); + this.trackBar3.Maximum = 2000; + this.trackBar3.Minimum = -2000; + this.trackBar3.Name = "trackBar3"; + this.trackBar3.Size = new System.Drawing.Size(104, 45); + this.trackBar3.TabIndex = 50; + this.trackBar3.Scroll += new System.EventHandler(this.trackBar3_Scroll); + // + // trackBar4 + // + this.trackBar4.Location = new System.Drawing.Point(481, 332); + this.trackBar4.Maximum = 2000; + this.trackBar4.Minimum = -2000; + this.trackBar4.Name = "trackBar4"; + this.trackBar4.Size = new System.Drawing.Size(104, 45); + this.trackBar4.TabIndex = 51; + this.trackBar4.Scroll += new System.EventHandler(this.trackBar4_Scroll); + // + // trackBar5 + // + this.trackBar5.Location = new System.Drawing.Point(481, 378); + this.trackBar5.Maximum = 2000; + this.trackBar5.Minimum = -2000; + this.trackBar5.Name = "trackBar5"; + this.trackBar5.Size = new System.Drawing.Size(104, 45); + this.trackBar5.TabIndex = 52; + this.trackBar5.Scroll += new System.EventHandler(this.trackBar5_Scroll); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(478, 260); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(58, 13); + this.label9.TabIndex = 53; + this.label9.Text = "Viewmodel"; + // // AnimeForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(468, 414); + this.ClientSize = new System.Drawing.Size(592, 488); + this.Controls.Add(this.label9); + this.Controls.Add(this.trackBar5); + this.Controls.Add(this.trackBar4); + this.Controls.Add(this.trackBar3); this.Controls.Add(this.label8); this.Controls.Add(this.label7); this.Controls.Add(this.label2); @@ -727,6 +787,9 @@ ((System.ComponentModel.ISupportInitialize)(this.chokeTrackBar)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar5)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -791,6 +854,11 @@ private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label7; private System.Windows.Forms.Label label8; + private System.Windows.Forms.TrackBar trackBar3; + private System.Windows.Forms.TrackBar trackBar4; + private System.Windows.Forms.TrackBar trackBar5; + private System.Windows.Forms.ToolStripMenuItem getByteNameToolStripMenuItem; + private System.Windows.Forms.Label label9; } } diff --git a/AnimeSoftware/AnimeForm.cs b/AnimeSoftware/AnimeForm.cs index b9b1598..b878436 100644 --- a/AnimeSoftware/AnimeForm.cs +++ b/AnimeSoftware/AnimeForm.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; +using System.Text; using System.Threading; using System.Windows.Forms; @@ -58,7 +59,7 @@ namespace AnimeSoftware public static void Start() { - Thread blockbotThread = new Thread(new ThreadStart(BlockBot.Start)) + Thread blockbotThread = new Thread(new ThreadStart(BlockBot.Start2)) { Priority = ThreadPriority.Highest, IsBackground = true, @@ -100,13 +101,6 @@ namespace AnimeSoftware }; perfectnadeThread.Start(); - //Thread runboostThread = new Thread(new ThreadStart(RunboostBot.Start)) - //{ - // Priority = ThreadPriority.Highest, // disabled - // IsBackground = true, - //}; - //runboostThread.Start(); - Thread visualsThread = new Thread(new ThreadStart(Visuals.Start)) { Priority = ThreadPriority.Highest, @@ -382,6 +376,10 @@ namespace AnimeSoftware } Visuals.ToGlow = ToGlow; } + if(e.ClickedItem == getByteNameToolStripMenuItem) + { + Console.WriteLine( new Entity(Convert.ToInt32(nickBox.SelectedRows[0].Cells[0].Value)).Name2); + } } private void toGlowListChange(GlowColor glowColor) { @@ -606,19 +604,60 @@ namespace AnimeSoftware { label8.Text = (trackBar1.Value / 100f).ToString(); BlockBot.trajFactor = trackBar1.Value / 100f; - Console.WriteLine(BlockBot.trajFactor); } private void trackBar2_Scroll(object sender, EventArgs e) { label7.Text = (trackBar2.Value / 10f).ToString(); BlockBot.distanceFactor = trackBar2.Value / 10f; - Console.WriteLine(BlockBot.distanceFactor); + } + + private void trackBar3_Scroll(object sender, EventArgs e) + { + LocalPlayer.viewmodel_x = trackBar3.Value / 100f; + } + + private void trackBar4_Scroll(object sender, EventArgs e) + { + LocalPlayer.viewmodel_y = trackBar4.Value / 100f; + } + + private void trackBar5_Scroll(object sender, EventArgs e) + { + LocalPlayer.viewmodel_z = trackBar5.Value / 100f; } private void button1_Click(object sender, EventArgs e) { - LocalPlayer.Use = 6; + Color c = Color.Red; + Console.WriteLine(new byte[] { 255,0,0,255 }.ToString()); + //Console.WriteLine($"R: {c.R} G: {c.G} B: {c.B} A: {c.A}"); + } + + private void textBox1_TextChanged(object sender, EventArgs e) + { + Kek(Encoding.Default.GetBytes("\n\xAD\xAD\xAD")); + Kek(Encoding.UTF8.GetBytes("\n\xAD\xAD\xAD")); + Kek(Encoding.UTF8.GetBytes("\n\u00AD\u00AD\u00AD")); + } + public static void Kek(byte[] b) + { + string s = ""; + foreach(byte bt in b) + { + s += bt.ToString("X") + " "; + } + Console.WriteLine(s); + } + + private void nickBoxContextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e) + { + + } + + private void getByteNameToolStripMenuItem_Click(object sender, EventArgs e) + { + } } } diff --git a/AnimeSoftware/AnimeForm.resx b/AnimeSoftware/AnimeForm.resx index 69889b3..a9c6c68 100644 --- a/AnimeSoftware/AnimeForm.resx +++ b/AnimeSoftware/AnimeForm.resx @@ -129,7 +129,22 @@ True + + True + + + True + + + True + + + True + 17, 17 + + 39 + \ No newline at end of file diff --git a/AnimeSoftware/Checks.cs b/AnimeSoftware/Checks.cs index a1937fd..3959cdc 100644 --- a/AnimeSoftware/Checks.cs +++ b/AnimeSoftware/Checks.cs @@ -54,7 +54,7 @@ namespace AnimeSoftware } } - public static string version = "v2.91"; + public static string version = "v3.00"; } } diff --git a/AnimeSoftware/Hacks/Aimbot.cs b/AnimeSoftware/Hacks/Aimbot.cs index 73d982f..1f99943 100644 --- a/AnimeSoftware/Hacks/Aimbot.cs +++ b/AnimeSoftware/Hacks/Aimbot.cs @@ -42,7 +42,7 @@ namespace AnimeSoftware.Hacks { Vector3 angles = new Vector3 { x = 0, y = 0, z = 0 }; double[] delta = { (src.x - dst.x), (src.y - dst.y), (src.z - dst.z) }; - float hyp = (float)Math.Sqrt(delta[0] * delta[0] + delta[1] * delta[1] + delta[2] * delta[2]); + float hyp = (float)Math.Sqrt(delta[0] * delta[0] + delta[1] * delta[1]); angles.x = (float)(Math.Atan(delta[2] / hyp) * 180.0f / Math.PI); angles.y = (float)(Math.Atan(delta[1] / delta[0]) * 180.0f / Math.PI); if (delta[0] >= 0.0f) @@ -79,7 +79,8 @@ namespace AnimeSoftware.Hacks Index = x.Index; } } - return new Entity(Index); + + return new Entity(Index); } public static Entity BestFOV(float FOV, int boneID = 6) diff --git a/AnimeSoftware/Hacks/BlockBot.cs b/AnimeSoftware/Hacks/BlockBot.cs index 4fc348b..db3cb60 100644 --- a/AnimeSoftware/Hacks/BlockBot.cs +++ b/AnimeSoftware/Hacks/BlockBot.cs @@ -17,7 +17,85 @@ namespace AnimeSoftware.Hacks public static bool hb = false; public static float distanceFactor = 1.5f; public static float trajFactor = 0.3f; - + + public static void Start2() + { + while (true) + { + Thread.Sleep(1); + + if (!Properties.Settings.Default.blockbot) + continue; + + if (!LocalPlayer.InGame) + continue; + + if (LocalPlayer.Health <= 0) + continue; + + Entity target = null; + + bool blocked = false; + + while ((DllImport.GetAsyncKeyState(Properties.Hotkey.Default.blockbotKey) & 0x8000) != 0) + { + if (target == null) + { + target = Aimbot.BestDistance(); + Memory.Write(Memory.Client + signatures.dwForceRight, 5); + Memory.Write(Memory.Client + signatures.dwForceForward, 5); + blocked = true; + } + + + + if ((LocalPlayer.Position - target.BonePosition(8)).Length < 43) + { + + Vector3 targetOrigin = target.Position + target.Velocity * trajFactor; + targetOrigin.z = 0; + + Vector3 localOrigin = LocalPlayer.Position; + localOrigin.z = 0; + + float distance = (targetOrigin - localOrigin).Length; + distance *= distanceFactor; + + if (distance > 10) + distance = 10; + + float pokekat = LocalPlayer.ViewAngle.y - Aimbot.CalcAngle(LocalPlayer.Position, target.Position).y + 360.0f; + + LocalPlayer.SideSpeed = (float)Math.Sin(pokekat * 0.0174533) * 45 * distance; + LocalPlayer.ForwardSpeed = (float)Math.Cos(pokekat * 0.0174533) * 45 * distance; + + } + else + { + if ((DllImport.GetAsyncKeyState(0x57) & 0x8000) != 0) + LocalPlayer.ForwardSpeed = 450; + else + LocalPlayer.ForwardSpeed = 0; + Vector3 angle = Aimbot.CalcAngle(LocalPlayer.ViewPosition, target.Position); + angle.y -= LocalPlayer.ViewAngle.y; + angle = Aimbot.NormalizedAngle(angle); + + float sidemove = -angle.y * 25; + + LocalPlayer.SideSpeed = sidemove > 450 ? 450 : sidemove < -450 ? -450 : sidemove; + } + } + + if (blocked) + { + Memory.Write(Memory.Client + signatures.dwForceRight, 6); + Memory.Write(Memory.Client + signatures.dwForceForward, 6); + LocalPlayer.SideSpeed = 450; + LocalPlayer.ForwardSpeed = 450; + } + + } + } public static void Start() { diff --git a/AnimeSoftware/Hotkey.cs b/AnimeSoftware/Hotkey.cs index 37dd3de..a368e06 100644 --- a/AnimeSoftware/Hotkey.cs +++ b/AnimeSoftware/Hotkey.cs @@ -1,17 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; - -namespace AnimeSoftware -{ - class Hotkey - { - public static void Start() - { - - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace AnimeSoftware +{ + class Hotkey + { + public static void Start() + { + + } + } +} diff --git a/AnimeSoftware/Math.cs b/AnimeSoftware/Math.cs index 9370b73..3f112fa 100644 --- a/AnimeSoftware/Math.cs +++ b/AnimeSoftware/Math.cs @@ -1,17 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AnimeSoftware -{ - class VectorMath - { - public static float Distance(Vector3 src, Vector3 dst) - { - float result = (float)Math.Sqrt((dst.x-src.x) * (dst.x-src.x) + (dst.y-src.y) * (dst.y-src.y) + (dst.z-src.z) * (dst.z-src.z)); - return result; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AnimeSoftware +{ + class VectorMath + { + public static float Distance(Vector3 src, Vector3 dst) + { + float result = (float)Math.Sqrt((dst.x-src.x) * (dst.x-src.x) + (dst.y-src.y) * (dst.y-src.y) + (dst.z-src.z) * (dst.z-src.z)); + return result; + } + } +} diff --git a/AnimeSoftware/Objects/Entity.cs b/AnimeSoftware/Objects/Entity.cs index 1c07d19..6e098f4 100644 --- a/AnimeSoftware/Objects/Entity.cs +++ b/AnimeSoftware/Objects/Entity.cs @@ -49,6 +49,12 @@ namespace AnimeSoftware.Objects { get { + string s = ""; + foreach(byte b in pInfo.m_szPlayerName) + { + s += b.ToString("X") + " "; + } + Console.WriteLine(s); return Encoding.UTF8.GetString(pInfo.m_szPlayerName); } } diff --git a/AnimeSoftware/Objects/LocalPlayer.cs b/AnimeSoftware/Objects/LocalPlayer.cs index b32a6fb..ec45762 100644 --- a/AnimeSoftware/Objects/LocalPlayer.cs +++ b/AnimeSoftware/Objects/LocalPlayer.cs @@ -176,7 +176,45 @@ namespace AnimeSoftware.Objects } } - + public static float SideSpeed + { + set + { + Memory.WriteBytes(Memory.Read(Memory.Client + ScannedOffsets.cl_sidespeed), BitConverter.GetBytes(BitConverter.ToInt32(BitConverter.GetBytes(value), 0) ^ ScannedOffsets.xor_cl_sidespeed)); + } + } + + public static float ForwardSpeed + { + set + { + Memory.WriteBytes(Memory.Read(Memory.Client + ScannedOffsets.cl_forwardspeed), BitConverter.GetBytes(BitConverter.ToInt32(BitConverter.GetBytes(value), 0) ^ ScannedOffsets.xor_cl_forwardspeed)); + } + } + + public static float viewmodel_x + { + set + { + Memory.WriteBytes(Memory.Read(Memory.Client + ScannedOffsets.viewmodel_x), BitConverter.GetBytes(BitConverter.ToInt32(BitConverter.GetBytes(value), 0) ^ ScannedOffsets.xor_viewmodel_x)); + } + } + + public static float viewmodel_y + { + set + { + Memory.WriteBytes(Memory.Read(Memory.Client + ScannedOffsets.viewmodel_y), BitConverter.GetBytes(BitConverter.ToInt32(BitConverter.GetBytes(value), 0) ^ ScannedOffsets.xor_viewmodel_y)); + } + } + + public static float viewmodel_z + { + set + { + Memory.WriteBytes(Memory.Read(Memory.Client + ScannedOffsets.viewmodel_z), BitConverter.GetBytes(BitConverter.ToInt32(BitConverter.GetBytes(value), 0) ^ ScannedOffsets.xor_viewmodel_z)); + } + } public static int CrossHair { get diff --git a/AnimeSoftware/Offsets/Offsets.cs b/AnimeSoftware/Offsets/Offsets.cs index 8cc5d8a..9137dfd 100644 --- a/AnimeSoftware/Offsets/Offsets.cs +++ b/AnimeSoftware/Offsets/Offsets.cs @@ -1,6 +1,6 @@ using System; -// 2020-05-12 01:35:30.947642700 UTC +// 2020-05-29 19:02:31.995972100 UTC namespace hazedumper { @@ -100,7 +100,7 @@ namespace hazedumper public const Int32 clientstate_last_outgoing_command = 0x4D24; public const Int32 clientstate_net_channel = 0x9C; public const Int32 convar_name_hash_table = 0x2F0F8; - public const Int32 dwClientState = 0x589DCC; + public const Int32 dwClientState = 0x589DD4; public const Int32 dwClientState_GetLocalPlayer = 0x180; public const Int32 dwClientState_IsHLTV = 0x4D40; public const Int32 dwClientState_Map = 0x28C; @@ -109,47 +109,47 @@ namespace hazedumper public const Int32 dwClientState_PlayerInfo = 0x52B8; public const Int32 dwClientState_State = 0x108; public const Int32 dwClientState_ViewAngles = 0x4D88; - public const Int32 dwEntityList = 0x4D43AC4; - public const Int32 dwForceAttack = 0x3175068; - public const Int32 dwForceAttack2 = 0x3175074; - public const Int32 dwForceBackward = 0x31750A4; - public const Int32 dwForceForward = 0x3175080; - public const Int32 dwForceJump = 0x51ED760; - public const Int32 dwForceLeft = 0x3175098; - public const Int32 dwForceRight = 0x31750BC; + public const Int32 dwEntityList = 0x4D4B134; + public const Int32 dwForceAttack = 0x317C71C; + public const Int32 dwForceAttack2 = 0x317C728; + public const Int32 dwForceBackward = 0x317C6D4; + public const Int32 dwForceForward = 0x317C740; + public const Int32 dwForceJump = 0x51F4DB0; + public const Int32 dwForceLeft = 0x317C6C8; + public const Int32 dwForceRight = 0x317C6EC; public const Int32 dwGameDir = 0x6286F8; - public const Int32 dwGameRulesProxy = 0x5260A3C; - public const Int32 dwGetAllClasses = 0xD55F2C; - public const Int32 dwGlobalVars = 0x589AD0; - public const Int32 dwGlowObjectManager = 0x528B8A0; - public const Int32 dwInput = 0x5195070; - public const Int32 dwInterfaceLinkList = 0x8FA4A4; - public const Int32 dwLocalPlayer = 0xD2FB94; - public const Int32 dwMouseEnable = 0xD35738; - public const Int32 dwMouseEnablePtr = 0xD35708; - public const Int32 dwPlayerResource = 0x317340C; - public const Int32 dwRadarBase = 0x5178834; - public const Int32 dwSensitivity = 0xD355D4; - public const Int32 dwSensitivityPtr = 0xD355A8; - public const Int32 dwSetClanTag = 0x89ED0; - public const Int32 dwViewMatrix = 0x4D35404; - public const Int32 dwWeaponTable = 0x5195B34; + public const Int32 dwGameRulesProxy = 0x526809C; + public const Int32 dwGetAllClasses = 0xD5CF8C; + public const Int32 dwGlobalVars = 0x589AD8; + public const Int32 dwGlowObjectManager = 0x5292F18; + public const Int32 dwInput = 0x519C6C8; + public const Int32 dwInterfaceLinkList = 0x8FFB74; + public const Int32 dwLocalPlayer = 0xD36B94; + public const Int32 dwMouseEnable = 0xD3C738; + public const Int32 dwMouseEnablePtr = 0xD3C708; + public const Int32 dwPlayerResource = 0x317AA6C; + public const Int32 dwRadarBase = 0x517FE8C; + public const Int32 dwSensitivity = 0xD3C5D4; + public const Int32 dwSensitivityPtr = 0xD3C5A8; + public const Int32 dwSetClanTag = 0x89F00; + public const Int32 dwViewMatrix = 0x4D3CA64; + public const Int32 dwWeaponTable = 0x519D18C; public const Int32 dwWeaponTableIndex = 0x325C; - public const Int32 dwYawPtr = 0xD35398; - public const Int32 dwZoomSensitivityRatioPtr = 0xD3A5E0; - public const Int32 dwbSendPackets = 0xD3ECA; + public const Int32 dwYawPtr = 0xD3C398; + public const Int32 dwZoomSensitivityRatioPtr = 0xD415E0; + public const Int32 dwbSendPackets = 0xD3EFA; public const Int32 dwppDirect3DDevice9 = 0xA7030; - public const Int32 find_hud_element = 0x3059C3F0; - public const Int32 force_update_spectator_glow = 0x3991F2; + public const Int32 find_hud_element = 0x29CCFD40; + public const Int32 force_update_spectator_glow = 0x39CB92; public const Int32 interface_engine_cvar = 0x3E9EC; - public const Int32 is_c4_owner = 0x3A59C0; + public const Int32 is_c4_owner = 0x3A93A0; public const Int32 m_bDormant = 0xED; public const Int32 m_flSpawnTime = 0xA360; public const Int32 m_pStudioHdr = 0x294C; - public const Int32 m_pitchClassPtr = 0x5178AD8; - public const Int32 m_yawClassPtr = 0xD35398; - public const Int32 model_ambient_min = 0x58CE44; - public const Int32 set_abs_angles = 0x1CF1D0; - public const Int32 set_abs_origin = 0x1CF010; + public const Int32 m_pitchClassPtr = 0x5180130; + public const Int32 m_yawClassPtr = 0xD3C398; + public const Int32 model_ambient_min = 0x58CE4C; + public const Int32 set_abs_angles = 0x1D2B60; + public const Int32 set_abs_origin = 0x1D29A0; } -} // namespace hazedumper +} // namespace hazedumper \ No newline at end of file diff --git a/AnimeSoftware/Offsets/ScannedOffsets.cs b/AnimeSoftware/Offsets/ScannedOffsets.cs index cc2b799..160c1f4 100644 --- a/AnimeSoftware/Offsets/ScannedOffsets.cs +++ b/AnimeSoftware/Offsets/ScannedOffsets.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; @@ -18,17 +19,44 @@ namespace AnimeSoftware public static int cl_sidespeed; public static int cl_forwardspeed; - + + public static int viewmodel_x; + public static int viewmodel_y; + public static int viewmodel_z; public static void Init() { ClientCMD = Memory.FindPattern(new byte[] { 0x55, 0x8B, 0xEC, 0x8B, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x81, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x75, 0x0C, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x05, 0x8B, 0x01, 0xFF, 0x50, 0x34, 0x50, 0xA1 }, "xxxxx????xx????xxx????x????xxxxxxxxx", Memory.Engine, Memory.EngineSize); - + cl_sidespeed = Memory.FindPattern(new byte[] { 0xF3, 0x0F, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x44, 0x24, 0x00, 0x81, 0x74, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x44, 0x24, 0x14, 0xEB, 0x07 }, "xxxx????xxxxx?xxx?????xxxxxx", Memory.Client, Memory.ClientSize) + 0x4; + cl_forwardspeed = Memory.FindPattern(new byte[] { 0xF3, 0x0F, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x44, 0x24, 0x00, 0x81, 0x74, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x37 }, "xxxx????xxxxx?xxx?????xx", Memory.Client, Memory.ClientSize) + 0x4; + viewmodel_x = Memory.FindPattern(new byte[] { 0xF3, 0x0F, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x45, 0x00, 0x81, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x01, 0x8B, 0x40, 0x30, 0xFF, 0xD0, 0xD9, 0x5D, 0x08, 0xF3, 0x0F, 0x10, 0x45, 0x00, 0xB9 }, "xxxx????xxxx?xx?????xxxxxxxxxxxxxxxx?x", Memory.Client, Memory.ClientSize) + 0x4; + viewmodel_y = Memory.FindPattern(new byte[] { 0xF3, 0x0F, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x45, 0x00, 0x8B, 0x45, 0x08, 0x35, 0x00, 0x00, 0x00, 0x00, 0x89, 0x45, 0x0C, 0xEB, 0x0A }, "xxxx????xxxx?xxxx????xxxxx", Memory.Client, Memory.ClientSize) + 0x4; + viewmodel_z = Memory.FindPattern(new byte[] { 0xF3, 0x0F, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x0F, 0x11, 0x45, 0x00, 0x8B, 0x45, 0x08, 0x35, 0x00, 0x00, 0x00, 0x00, 0x89, 0x45, 0xFC, 0xEB, 0x0A }, "xxxx????xxxx?xxxx????xxxxx", Memory.Client, Memory.ClientSize) + 0x4; dwUse = Memory.FindPattern(new byte[] { 0x8B, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xF2, 0x8B, 0xC1, 0x83, 0xCE, 0x20 }, "xx????xxxxxxx", Memory.Client, Memory.ClientSize) + 2; - + InitXorWithValue(); + } + + public static uint xor_cl_sidespeed; + public static uint xor_cl_forwardspeed; + public static uint xor_viewmodel_x; + public static uint xor_viewmodel_y; + public static uint xor_viewmodel_z; + + private static void InitXorWithValue() + { + xor_cl_sidespeed = CalcXorWithValue(cl_sidespeed); + xor_cl_forwardspeed = CalcXorWithValue(cl_forwardspeed); + xor_viewmodel_x = CalcXorWithValue(viewmodel_x); + xor_viewmodel_y = CalcXorWithValue(viewmodel_y); + xor_viewmodel_z = CalcXorWithValue(viewmodel_z); } - + private static uint CalcXorWithValue(int cvarOffset) + { + return BitConverter.ToUInt32(BitConverter.GetBytes(Memory.Read(Memory.Client + cvarOffset) - 0x2C), 0); + } + + } } diff --git a/AnimeSoftware/Program.cs b/AnimeSoftware/Program.cs index b60e5b1..044877a 100644 --- a/AnimeSoftware/Program.cs +++ b/AnimeSoftware/Program.cs @@ -1,22 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace AnimeSoftware -{ - static class Program - { - /// - /// Главная точка входа для приложения. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new AnimeForm()); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace AnimeSoftware +{ + static class Program + { + /// + /// Главная точка входа для приложения. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new AnimeForm()); + } + } +} diff --git a/AnimeSoftware/Properties/AssemblyInfo.cs b/AnimeSoftware/Properties/AssemblyInfo.cs index b5caec0..bccf409 100644 --- a/AnimeSoftware/Properties/AssemblyInfo.cs +++ b/AnimeSoftware/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Общие сведения об этой сборке предоставляются следующим набором -// набора атрибутов. Измените значения этих атрибутов для изменения сведений, -// связанных со сборкой. -[assembly: AssemblyTitle("AnimeSoftware")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("AnimeSoftware")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми -// для компонентов COM. Если необходимо обратиться к типу в этой сборке через -// COM, следует установить атрибут ComVisible в TRUE для этого типа. -[assembly: ComVisible(false)] - -// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM -[assembly: Guid("617f8f5f-8917-4843-aab3-66da09eb7db7")] - -// Сведения о версии сборки состоят из указанных ниже четырех значений: -// -// Основной номер версии -// Дополнительный номер версии -// Номер сборки -// Редакция -// -// Можно задать все значения или принять номера сборки и редакции по умолчанию -// используя "*", как показано ниже: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанных со сборкой. +[assembly: AssemblyTitle("AnimeSoftware")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AnimeSoftware")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, следует установить атрибут ComVisible в TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("617f8f5f-8917-4843-aab3-66da09eb7db7")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AnimeSoftware/Properties/Hotkey.Designer.cs b/AnimeSoftware/Properties/Hotkey.Designer.cs index fcbdb13..6d5bc96 100644 --- a/AnimeSoftware/Properties/Hotkey.Designer.cs +++ b/AnimeSoftware/Properties/Hotkey.Designer.cs @@ -1,62 +1,62 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace AnimeSoftware.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] - internal sealed partial class Hotkey : global::System.Configuration.ApplicationSettingsBase { - - private static Hotkey defaultInstance = ((Hotkey)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Hotkey()))); - - public static Hotkey Default { - get { - return defaultInstance; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("18")] - public int blockbotKey { - get { - return ((int)(this["blockbotKey"])); - } - set { - this["blockbotKey"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("20")] - public int doorspammerKey { - get { - return ((int)(this["doorspammerKey"])); - } - set { - this["doorspammerKey"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("90")] - public int runboostbotKey { - get { - return ((int)(this["runboostbotKey"])); - } - set { - this["runboostbotKey"] = value; - } - } - } -} +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace AnimeSoftware.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] + internal sealed partial class Hotkey : global::System.Configuration.ApplicationSettingsBase { + + private static Hotkey defaultInstance = ((Hotkey)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Hotkey()))); + + public static Hotkey Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("18")] + public int blockbotKey { + get { + return ((int)(this["blockbotKey"])); + } + set { + this["blockbotKey"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("20")] + public int doorspammerKey { + get { + return ((int)(this["doorspammerKey"])); + } + set { + this["doorspammerKey"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("90")] + public int runboostbotKey { + get { + return ((int)(this["runboostbotKey"])); + } + set { + this["runboostbotKey"] = value; + } + } + } +} diff --git a/AnimeSoftware/Properties/Hotkey.settings b/AnimeSoftware/Properties/Hotkey.settings index bbe6566..fe223ca 100644 --- a/AnimeSoftware/Properties/Hotkey.settings +++ b/AnimeSoftware/Properties/Hotkey.settings @@ -1,15 +1,15 @@ - - - - - - 18 - - - 20 - - - 90 - - + + + + + + 18 + + + 20 + + + 90 + + \ No newline at end of file diff --git a/AnimeSoftware/Properties/Resources.Designer.cs b/AnimeSoftware/Properties/Resources.Designer.cs index 7191f49..a1da255 100644 --- a/AnimeSoftware/Properties/Resources.Designer.cs +++ b/AnimeSoftware/Properties/Resources.Designer.cs @@ -1,71 +1,71 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программным средством. -// Версия среды выполнения: 4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если -// код создан повторно. -// -//------------------------------------------------------------------------------ - -namespace AnimeSoftware.Properties -{ - - - /// - /// Класс ресурсов со строгим типом для поиска локализованных строк и пр. - /// - // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder - // класс с помощью таких средств, как ResGen или Visual Studio. - // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen - // с параметром /str или заново постройте свой VS-проект. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// - /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AnimeSoftware.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Переопределяет свойство CurrentUICulture текущего потока для всех - /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} +//------------------------------------------------------------------------------ +// +// Этот код создан программным средством. +// Версия среды выполнения: 4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если +// код создан повторно. +// +//------------------------------------------------------------------------------ + +namespace AnimeSoftware.Properties +{ + + + /// + /// Класс ресурсов со строгим типом для поиска локализованных строк и пр. + /// + // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder + // класс с помощью таких средств, как ResGen или Visual Studio. + // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen + // с параметром /str или заново постройте свой VS-проект. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AnimeSoftware.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Переопределяет свойство CurrentUICulture текущего потока для всех + /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/AnimeSoftware/Properties/Resources.resx b/AnimeSoftware/Properties/Resources.resx index af7dbeb..ffecec8 100644 --- a/AnimeSoftware/Properties/Resources.resx +++ b/AnimeSoftware/Properties/Resources.resx @@ -1,117 +1,117 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file