
Всем привет, хочу поддержать проект для «умных игроков» L2Diary и открыть блог «Софт», в котором будут публиковаться материалы для реально прошаренных геймеров.
Сразу скажу, использование пилотов, радаров и других средств для помощи в пвп есть очень плохо, должно осуждаться сообществом игроков и с этим Иннова должна серьезно бороться.
Данная серия статей не поможет тем, кто хочет облегчить себе пвп, она для тех, у кого нехватает времени на кач и он хочет его немного автоматизировать, чтобы с меньшим чем у других онлайном не отставать от хай-лвлов. При этом нет риска быть забаненым, используя общедоступные пилоты, боты и радары.
Итак, приступим.
Постановка задачи
В боте, в нашем случае правильней сказать пилоте, выбирается окно, клавиша и интервал, через который она будет нажиматься. Затем тыкаем на «Старт» и запускаем нажатие клавиши. По нажатию кнопки «Стоп» — пилот останавливается.
Пример: вам надо поставить автоассист по MA («master assist») в пати. В линейке вы создаете макрос из трех строк
В пилоте выставляете правило, что необходимо нажимать в окне с вашим персонажем на этот макрос каждые 4 секунды и запускаете нажатие клавишы.
Реализация
Нам понадобится:
— Visual Studio (ставьте самую последнюю версию, что найдете)
— начальные знания программирования
— умение думать, т. е. моск ;-)
Не зная изначально как решать задачу, сократим ее до минимума и будет разбираться по шагам. Поставим задачу:
запуск нажатия клавиши F1 раз в 5 секунд в нужном нам окне.
Поищем в MSDN (справочник по Windows-кодингу) как же нам эмулировать нажатие клавиш:
http://social.msdn.microsoft.com/Search/en-us?query=Simulate+Keyboard+Events. Первая ссылка — то что надо! Особенно радует подробный пример как посылать клавишы в окно калькулятора.
Проба пера
Попробуем для начала пример из статьи. Создаем проект C#, на форму ставим кнопку, по нажатию на которую будет посылаться нажатие клавиш в окно калькулятора.
Два раза тыкаем на кнопку, вставляем код из примера:
// Если у вас виста - CalcFrame замените на SciCalc
IntPtr calculatorHandle = FindWindow("CalcFrame","Calculator");
if (calculatorHandle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}
SetForegroundWindow(calculatorHandle);
SendKeys.SendWait("111");
SendKeys.SendWait("*");
SendKeys.SendWait("11");
SendKeys.SendWait("=");
Функции, которые мы испоьзуем тут:
FindWindow — возвращает дескриптор окна по названию класса или заголовку окна.
SetForegroundWindow — устанавливаем активное окно.
SendKeys.SendWait — посылает в активное окно нажатие клавиш, заданное строкой в первом параметре.
Выше строчки private void button1_Click(object sender, EventArgs e) вставляем:
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
Запускаем проект по Ctrl + F5, запускаем калькулятор и нажимаем на кнопку. Если в калькуляторе прошла операция умножения — значит все работает.
Теперь нам надо просто поменять окно калькулятора на окно линейки, посылать нажатие F1 вместо единичек, знака умножения и что там еще посылается в примере и будет нам радость ;-)
Но все далеко не так просто, и об этом — в следующей статье.
Комментарии (4)
RSS свернуть / развернутьsl44mrq
1ff1eeff
Lineage2
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.