/// <summary> /// бот открывает диалог с НПС /// </summary> /// <param name="mw"></param> /// <param name="npcName"></param> /// <param name="questId"></param> public static void TalkToNPC(My_Windows mw, String npcName, Int32 questId) { //находим wid НПСа по имени Int32 mob_wid = CalcMethods.MobSearch(mw.Oph, npcName); //если НПС нашелся, то берем у него квест и закрываем диалоговое окно if (mob_wid != 0) { //Выделяем НПСа mw.PacketSend.selectNpc(mob_wid); Thread.Sleep(300); //Открываем диалоговое окно с НПСом mw.PacketSend.talkToNpc(mob_wid); Thread.Sleep(1000); //Узнаем необходимые данные об окне, так как после взятия кв оно перестанет быть активным int[] adress_window = CalcMethods.CalcControlAddress(mw.Oph, "Win_NPC", "Btn_Back", 1); Thread.Sleep(300); //Берем кв mw.PacketSend.takeQuest(questId); //если адреса считались нормально, то закрываем диалоговое окно с НПСом if (adress_window[0] != 0 && adress_window[1] != 0) { Injects.GUI_Inject(adress_window[0], adress_window[1], mw.Oph); } else { mw.Logging(new FormatText(mw.Name, Brushes.Red, 14, 1), new FormatText("не смог закрыть окно", Brushes.Red, 14, 1)); } } }
static void KillBoss_1(My_Windows mw) { try { //следуем к первой точке SimonSayMethods.MoveTo(mw.Oph, point_1[0], point_1[1], point_1[2]); SimonSayMethods.Say(mw, "!!начинаю бить босса"); //ищем босса поблизости Int32 bossWid = CalcMethods.MobSearch(mw.Oph, "Повелитель кругов ада"); while (bossWid > 0) { if (mw.ClassID == 0) { //здесь метод для вара } else { //здесь метод для остальных классов } } Thread.Sleep(5000); SimonSayMethods.Say(mw, "!!закончил бить босса"); } catch (Exception ex) { throw ex; } }
/// <summary> /// Обновление коллекции клиентов /// </summary> private static void Refresh() { // Задаем начало отсчета IntPtr hwnd = IntPtr.Zero; my_windows.Clear(); //В бесконечном цикле перебираем все запущенные окна с классом ElementClient Window while (true) { //очищаем коллекцию клиентов и начинаем заполнять заново //получаем следующее окно с классом ElementClient Window. hwnd = WinApi.FindWindowEx(IntPtr.Zero, hwnd, "ElementClient Window", null); //Если наткнулись на ноль - значит выходим if (hwnd == IntPtr.Zero) { break; } //добавляем элемент в нашу коллекцию My_Windows my_wind = new My_Windows(hwnd); if (my_wind.Name.Length > 0) { my_windows.Add(my_wind); } } RefreshAllCombobox(); }
//Конструктор для пати-лидера public ChatReader(My_Windows mw) { this.mw = mw; this.packet = mw.PacketSend; this.oph = mw.Oph; messages = new List <Message>(5); }
/// <summary> /// Бот пишет в чат заданный текст /// </summary> /// <param name="mw"></param> /// <param name="text"></param> public static void Say(My_Windows mw, String text) { //запишем сообщение в чат Int32[] address_window = CalcMethods.CalcControlAddress(mw.Oph, "Win_Chat", "DEFAULT_Txt_Speech", 2); Injects.SetText(mw.Oph, text, address_window[2]); //нажимаем кнопку отправить if (address_window[0] != 0 && address_window[1] != 0) { Injects.GUI_Inject(address_window[0], address_window[1], mw.Oph); } }
//Конструктор для твинов public ChatReader(My_Windows mw, bool s, bool b, bool d) { this.mw = mw; this.My_skills_for_buf = mw.My_skills_for_buf; this.packet = mw.PacketSend; this.oph = mw.Oph; this.S = s; this.B = b; this.D = d; messages = new List <Message>(5); }
public static void KillBoss_7(My_Windows mw) { }