/// <summary> /// Бот просматривает инвентарь на предмет нахождения "Самоцвет зала перерождения" и пишет в чат об этом /// </summary> /// <param name="oph"></param> /// <param name="hwnd"></param> public static Boolean ReadInvent(IntPtr oph, IntPtr hwnd) { Int32 count_cells = CalcMethods.ReadInt(oph, Offsets.BaseAdress, Offsets.OffsetsInventCellsCount); for (Int32 iter = 0; iter < count_cells; iter++) { if (CalcMethods.ReadInt(oph, Offsets.BaseAdress, Offsets.OffsetsItemInCellID(iter)) == 27422) // id самоцвета зала перерождения { //отправим сообщение в чат Int32[] address_window_1 = CalcMethods.CalcControlAddress(oph, "Win_Chat", "DEFAULT_Txt_Speech", 2); Injects.SetText(oph, "!!Самоцвет найден!", address_window_1[2]); if (address_window_1[0] != 0 && address_window_1[1] != 0) { Injects.GUI_Inject(address_window_1[0], address_window_1[1], oph); } return(true); } } //отправим сообщение в чат Int32[] address_window = CalcMethods.CalcControlAddress(oph, "Win_Chat", "DEFAULT_Txt_Speech", 2); Injects.SetText(oph, "!!Самоцвет не найден!", address_window[2]); if (address_window[0] != 0 && address_window[1] != 0) { Injects.GUI_Inject(address_window[0], address_window[1], oph); } return(false); }
/// <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)); } } }
/// <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); } }
/// <summary> /// Вызов GUI инжекта /// </summary> /// <param name="result"></param> /// <param name="processID"></param> public static void FollowMe(int[] result, IntPtr oph) { try { if (result[0] != 0 && result[1] != 0) { Injects.GUI_Inject(result[0], result[1], oph); } } catch (Exception ex) { throw ex; } }