예제 #1
0
        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>
        /// <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));
                }
            }
        }