Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows.Forms;
- using System.Diagnostics;
- using System.Threading;
- namespace StarCraft_II_Macros_Utility
- {
- public partial class MainForm : Form
- {
- const string processName = "SC2_x64";
- //const string processName = "notepad++";
- Color colorEnabled = Color.Green;
- Color colorDisabled = Color.Red;
- int LMBdelay = 500; // мс
- int МMBdelay = 200; // мс
- Keys lastKeyPressed = Keys.None;
- string statusFoundText;
- string statusNotFoundText;
- bool LMBpressed = false;
- bool MMBpressed = false;
- bool RMBpressed = false;
- bool shiftPressed = false;
- bool controlPressed = false;
- bool altPressed = false;
- bool spacePressed = false;
- bool freeCameraModeEnabled = false;
- bool freeCameraMode = false;
- //bool alternativeSelectionMode = false;
- bool basePosition = false;
- bool isEnabled = false;
- bool isUnitGroupKey = false;
- bool isLocGroupKey = false;
- bool isChatMsgKey = false;
- bool isMultickickKeyState = false;
- int LMBstate = 0;
- int chatMsgKeyState = 0;
- int multiclickKeyState = 0;
- HotkeysForm hotkeysForm = null;
- //int m_LMBdelay = 0;
- //int m_MMBdelay = 0;
- public MainForm()
- {
- InitializeComponent();
- LMBdelay /= mainTimer.Interval;
- МMBdelay /= mainTimer.Interval;
- statusFoundText = "Процесс \"" + processName + "\" найден.";
- statusNotFoundText = "Процесс \"" + processName + "\" не найден.";
- statusTextBox.Text = statusNotFoundText;
- statusTextBox.ForeColor = colorDisabled;
- statusTextBox.BackColor = statusTextBox.BackColor;
- lastKeyPressedLabel.Text = lastKeyPressed.ToString();
- new ToolTip().SetToolTip(cameraModeButton, "Режим управления камерой. Для подробной информации смотри меню \"Хоткеи\"");
- new ToolTip().SetToolTip(lastKeyPressedLabel, "Последняя нажатая клавиша. Для подробной информации смотри меню \"Хоткеи\"");
- ChangeEnabledState();
- ChangeCameraMode();
- }
- void HotkeysItemClick(object sender, EventArgs e)
- {
- if (hotkeysForm == null)
- {
- hotkeysForm = new HotkeysForm();
- hotkeysForm.FormClosed += HotkeysFormClosed;
- hotkeysForm.Show();
- }
- else
- {
- hotkeysForm.Focus();
- }
- }
- void HotkeysFormClosed(object sender, EventArgs e)
- {
- hotkeysForm = null;
- }
- void CameraModeButtonClick(object sender, EventArgs e)
- {
- freeCameraModeEnabled = !freeCameraModeEnabled;
- ChangeCameraMode();
- }
- void ChangeCameraMode()
- {
- if (freeCameraModeEnabled)
- {
- cameraModeButton.BackColor = Color.Yellow;
- }
- else
- {
- cameraModeButton.BackColor = Color.White;
- }
- }
- void EnableButtonClick(object sender, EventArgs e)
- {
- ChangeEnabledState();
- }
- void ChangeEnabledState()
- {
- isEnabled = !isEnabled;
- if (isEnabled)
- {
- enableButton.Text = "Запущено (\"*\")";
- enableButton.ForeColor = colorEnabled;
- }
- else
- {
- enableButton.Text = "Остановлено (\"*\")";
- enableButton.ForeColor = colorDisabled;
- }
- }
- void MainTimerTick(object sender, EventArgs e)
- {
- if (KeyEvents.UpdateKeyStatus(Keys.Multiply))
- {
- ChangeEnabledState();
- }
- if (!isEnabled) return;
- Process[] processes = Process.GetProcessesByName(processName);
- if (processes == null || processes.Length <= 0)
- {
- if (statusTextBox.Text != statusFoundText)
- {
- statusTextBox.Text = statusNotFoundText;
- statusTextBox.ForeColor = colorDisabled;
- }
- return;
- }
- Process starCraftII = processes[0];
- if (statusTextBox.Text != statusFoundText)
- {
- statusTextBox.Text = statusFoundText;
- statusTextBox.ForeColor = colorEnabled;
- }
- if (starCraftII.Responding)
- //if (starCraftII.Responding && !Utilities.IsMinimized(starCraftII))
- {
- KeysStatus();
- MainLogic();
- }
- }
- void KeysStatus()
- {
- if (MouseEvents.GetKeyStatus(MouseButtons.Left)) LMBpressed = true;
- else LMBpressed = false;
- if (MouseEvents.GetKeyStatus(MouseButtons.Middle)) MMBpressed = true;
- else MMBpressed = false;
- if (MouseEvents.GetKeyStatus(MouseButtons.Right)) RMBpressed = true;
- else RMBpressed = false;
- if (KeyEvents.UpdateKeyStatus(Keys.ShiftKey)) shiftPressed = true;
- else shiftPressed = false;
- if (KeyEvents.UpdateKeyStatus(Keys.ControlKey)) controlPressed = true;
- else controlPressed = false;
- if (KeyEvents.UpdateKeyStatus(Keys.Alt)) altPressed = true;
- else altPressed = false;
- if (KeyEvents.UpdateKeyStatus(Keys.Space)) spacePressed = true;
- else spacePressed = false;
- }
- void MainLogic()
- {
- int key = -1;
- if (KeyEvents.UpdateKeyStatus(Keys.Divide))
- {
- freeCameraModeEnabled = !freeCameraModeEnabled;
- ChangeCameraMode();
- }
- if (spacePressed)
- {
- if (freeCameraModeEnabled)
- {
- if (freeCameraMode)
- {
- MouseEvents.Up(MouseButtons.Middle);
- Thread.Sleep(50);
- //MouseEvents.SetCursorPostion(Screen.PrimaryScreen.Bounds.Width/2, Screen.PrimaryScreen.Bounds.Height/2);
- freeCameraMode = false;
- }
- }
- else
- {
- if (!freeCameraMode)
- {
- MouseEvents.Down(MouseButtons.Middle);
- freeCameraMode = true;
- }
- }
- }
- else
- {
- if (freeCameraModeEnabled)
- {
- if (!freeCameraMode)
- {
- MouseEvents.Down(MouseButtons.Middle);
- freeCameraMode = true;
- }
- }
- else
- {
- if (freeCameraMode)
- {
- MouseEvents.Up(MouseButtons.Middle);
- Thread.Sleep(50);
- //MouseEvents.SetCursorPostion(Screen.PrimaryScreen.Bounds.Width/2, Screen.PrimaryScreen.Bounds.Height/2);
- freeCameraMode = false;
- }
- }
- }
- key = NumbericKeyPressed();
- if (key >= 0) isUnitGroupKey = true;
- if (key < 0)
- {
- key = MapHotkeyKeyPressed();
- if (key >= 0) isLocGroupKey = true;
- }
- if (LMBpressed)
- {
- if (key < 0)
- {
- if (LMBstate == 0) LMBstate = 1;
- }
- else
- {
- if (LMBstate == 1) LMBstate = 2;
- }
- }
- else LMBstate = 0;
- //Console.WriteLine("LMBstate = " + LMBstate);
- //Console.WriteLine("key = " + key);
- if (LMBstate == 2)
- {
- LMBstate = 3;
- // if (shiftPressed)
- // {
- // MouseEvents.Up(MouseButtons.Left);
- // MouseEvents.Click(MouseButtons.Left);
- // MouseEvents.Click(MouseButtons.Left);
- // return;
- // }
- if (isUnitGroupKey && key >= 0)
- {
- isUnitGroupKey = false;
- if (key == 0 || key > 5)
- {
- MouseEvents.Click(MouseButtons.Left);
- MouseEvents.Click(MouseButtons.Left);
- }
- else
- {
- Point pos = new Point(MouseEvents.CursorPostionX, MouseEvents.CursorPostionY);
- MouseEvents.SetCursorPostion(0, 0);
- MouseEvents.Click(MouseButtons.Left);
- MouseEvents.SetCursorPostion(pos.X, pos.Y);
- }
- if (!controlPressed && !shiftPressed && !altPressed) KeyEvents.Down(Keys.ControlKey);
- switch (key)
- {
- case 0:
- KeyEvents.Press(Keys.D0);
- break;
- case 1:
- KeyEvents.Press(Keys.D1);
- break;
- case 2:
- KeyEvents.Press(Keys.D2);
- break;
- case 3:
- KeyEvents.Press(Keys.D3);
- break;
- case 4:
- KeyEvents.Press(Keys.D4);
- break;
- case 5:
- KeyEvents.Press(Keys.D5);
- break;
- case 6:
- KeyEvents.Press(Keys.D6);
- break;
- case 7:
- KeyEvents.Press(Keys.D7);
- break;
- case 8:
- KeyEvents.Press(Keys.D8);
- break;
- case 9:
- KeyEvents.Press(Keys.D9);
- break;
- }
- if (!controlPressed && !shiftPressed && !altPressed) KeyEvents.Up(Keys.ControlKey);
- return;
- }
- if (isLocGroupKey && key >= 0)
- {
- isLocGroupKey = false;
- if (!controlPressed) KeyEvents.Down(Keys.ControlKey);
- switch (key)
- {
- case 5:
- KeyEvents.Press(Keys.F5);
- break;
- case 6:
- KeyEvents.Press(Keys.F6);
- break;
- case 7:
- KeyEvents.Press(Keys.F7);
- break;
- case 8:
- KeyEvents.Press(Keys.F8);
- break;
- }
- if (!controlPressed) KeyEvents.Up(Keys.ControlKey);
- return;
- }
- return;
- }
- if (KeyEvents.UpdateKeyStatus(Keys.A))
- {
- KeyEvents.Press(Keys.T);
- MouseEvents.Click(MouseButtons.Left);
- return;
- }
- if (KeyEvents.UpdateKeyStatus(Keys.CapsLock))
- {
- basePosition = !basePosition;
- if (basePosition)
- {
- if (!controlPressed) KeyEvents.Down(Keys.ControlKey);
- if (!shiftPressed) KeyEvents.Down(Keys.ShiftKey);
- KeyEvents.Press(Keys.F8);
- if (!shiftPressed) KeyEvents.Up(Keys.ShiftKey);
- if (!controlPressed) KeyEvents.Up(Keys.ControlKey);
- KeyEvents.Press(Keys.Back);
- }
- else
- {
- if (!shiftPressed) KeyEvents.Down(Keys.ShiftKey);
- KeyEvents.Press(Keys.F8);
- if (!shiftPressed) KeyEvents.Up(Keys.ShiftKey);
- }
- }
- if (!controlPressed && !shiftPressed && !altPressed)
- {
- key = NumPadKeyPressed();
- if (KeyEvents.UpdateKeyStatus(Keys.Decimal))
- {
- if (key >= 0) isChatMsgKey = true;
- if (key < 0)
- {
- if (chatMsgKeyState == 0) chatMsgKeyState = 1;
- }
- else
- {
- if (chatMsgKeyState == 1) chatMsgKeyState = 2;
- }
- }
- if (key < 0 && chatMsgKeyState == 3) chatMsgKeyState = 0;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad0))
- {
- if (key >= 0) isMultickickKeyState = true;
- if (key < 0)
- {
- if (multiclickKeyState == 0) multiclickKeyState = 1;
- }
- else
- {
- if (multiclickKeyState == 1) multiclickKeyState = 2;
- }
- }
- if (key < 0 && multiclickKeyState == 3) multiclickKeyState = 0;
- if (chatMsgKeyState == 2)
- {
- chatMsgKeyState = 3;
- if (isChatMsgKey && key >= 0)
- {
- isChatMsgKey = false;
- switch (key)
- {
- case 1:
- WriteToChat("glhf");
- break;
- case 2:
- WriteToChat("yes");
- break;
- case 3:
- WriteToChat("no");
- break;
- case 4:
- WriteToAllyChat("go!");
- break;
- case 5:
- WriteToAllyChat("help!");
- break;
- case 6:
- WriteToChat("ok");
- break;
- case 7:
- WriteToChat("sorry");
- break;
- case 8:
- WriteToChat("?");
- break;
- case 9:
- WriteToChat("gg");
- break;
- }
- return;
- }
- }
- if (multiclickKeyState == 2)
- {
- multiclickKeyState = 3;
- if (isMultickickKeyState && key >= 0)
- {
- isMultickickKeyState = false;
- if (lastKeyPressed != Keys.None)
- {
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad1)) KeyEvents.Press(lastKeyPressed, 1);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad2)) KeyEvents.Press(lastKeyPressed, 2);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad3)) KeyEvents.Press(lastKeyPressed, 3);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad4)) KeyEvents.Press(lastKeyPressed, 4);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad5)) KeyEvents.Press(lastKeyPressed, 5);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad6)) KeyEvents.Press(lastKeyPressed, 6);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad7)) KeyEvents.Press(lastKeyPressed, 7);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad8)) KeyEvents.Press(lastKeyPressed, 8);
- else if (KeyEvents.UpdateKeyStatus(Keys.NumPad9)) KeyEvents.Press(lastKeyPressed, 9);
- }
- return;
- }
- }
- }
- if (KeyEvents.UpdateKeyStatus(Keys.Enter) && Control.IsKeyLocked(Keys.CapsLock))
- {
- KeyEvents.Press(Keys.CapsLock);
- }
- if (KeyEvents.UpdateKeyStatus(Keys.Add))
- {
- KeyEvents.Press(lastKeyPressed);
- return;
- }
- string keyStr = KeyPressed();
- if (keyStr != null)
- {
- if (keyStr != lastKeyPressedLabel.Text) SetLastPressedKey(keyStr);
- MouseEvents.Click(MouseButtons.Left);
- }
- // if (KeyEvents.UpdateKeyStatus(Keys.Subtract))
- // {
- // KeyEvents.Down(Keys.ControlKey);
- // KeyEvents.Press(lastKeyPressed);
- // KeyEvents.Up(Keys.ControlKey);
- // return;
- // }
- }
- void WriteToChat(string str)
- {
- KeyEvents.Press(Keys.Enter);
- KeyEvents.FromString(str);
- KeyEvents.Press(Keys.Enter);
- Thread.Sleep(100);
- }
- void WriteToAllyChat(string str)
- {
- KeyEvents.Down(Keys.ControlKey);
- KeyEvents.Press(Keys.Enter);
- KeyEvents.Up(Keys.ControlKey);
- KeyEvents.FromString(str);
- KeyEvents.Press(Keys.Enter);
- Thread.Sleep(100);
- }
- string KeyPressed()
- {
- if (KeyEvents.UpdateKeyStatus(Keys.Q)) return "Q";
- if (KeyEvents.UpdateKeyStatus(Keys.W)) return "W";
- if (KeyEvents.UpdateKeyStatus(Keys.E)) return "E";
- if (KeyEvents.UpdateKeyStatus(Keys.R)) return "R";
- if (KeyEvents.UpdateKeyStatus(Keys.T)) return "T";
- if (KeyEvents.UpdateKeyStatus(Keys.A)) return "A";
- if (KeyEvents.UpdateKeyStatus(Keys.S)) return "S";
- if (KeyEvents.UpdateKeyStatus(Keys.D)) return "D";
- if (KeyEvents.UpdateKeyStatus(Keys.F)) return "F";
- if (KeyEvents.UpdateKeyStatus(Keys.G)) return "G";
- if (KeyEvents.UpdateKeyStatus(Keys.Z)) return "Z";
- if (KeyEvents.UpdateKeyStatus(Keys.X)) return "X";
- if (KeyEvents.UpdateKeyStatus(Keys.C)) return "C";
- if (KeyEvents.UpdateKeyStatus(Keys.V)) return "V";
- if (KeyEvents.UpdateKeyStatus(Keys.B)) return "B";
- return null;
- }
- int NumbericKeyPressed()
- {
- if (KeyEvents.UpdateKeyStatus(Keys.D0)) return 0;
- if (KeyEvents.UpdateKeyStatus(Keys.D1)) return 1;
- if (KeyEvents.UpdateKeyStatus(Keys.D2)) return 2;
- if (KeyEvents.UpdateKeyStatus(Keys.D3)) return 3;
- if (KeyEvents.UpdateKeyStatus(Keys.D4)) return 4;
- if (KeyEvents.UpdateKeyStatus(Keys.D5)) return 5;
- if (KeyEvents.UpdateKeyStatus(Keys.D6)) return 6;
- if (KeyEvents.UpdateKeyStatus(Keys.D7)) return 7;
- if (KeyEvents.UpdateKeyStatus(Keys.D8)) return 8;
- if (KeyEvents.UpdateKeyStatus(Keys.D9)) return 9;
- return -1;
- }
- int MapHotkeyKeyPressed()
- {
- if (KeyEvents.UpdateKeyStatus(Keys.F5)) return 5;
- if (KeyEvents.UpdateKeyStatus(Keys.F6)) return 6;
- if (KeyEvents.UpdateKeyStatus(Keys.F7)) return 7;
- if (KeyEvents.UpdateKeyStatus(Keys.F8)) return 8;
- return -1;
- }
- int NumPadKeyPressed()
- {
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad1)) return 1;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad2)) return 2;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad3)) return 3;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad4)) return 4;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad5)) return 5;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad6)) return 6;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad7)) return 7;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad8)) return 8;
- if (KeyEvents.UpdateKeyStatus(Keys.NumPad9)) return 9;
- return -1;
- }
- void SetLastPressedKey(string keyStr)
- {
- Keys key;
- if (Enum.TryParse(keyStr, out key))
- {
- lastKeyPressed = key;
- lastKeyPressedLabel.Text = key.ToString();
- }
- }
- bool Delay(int delay, int maxDelay)
- {
- if (delay >= maxDelay)
- {
- return true;
- }
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment