/// <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;
     }
 }