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