コード例 #1
0
ファイル: MainForm.cs プロジェクト: kool924jp/BoxUnlocker
        /// <summary>
        /// キーナンバー99 箱空け処理
        /// </summary>
        /// <returns></returns>
        private Constant.MumStartRet StartMum()
        {
            FFACE.ChatTools.ChatLine cl = new FFACE.ChatTools.ChatLine();
            Constant.MumGameInfo     gi = _Constant.GetMumGameInfo(_Settings.MumGameId);
            Box box           = new Box(gi.Id);
            int boxOpenRemain = _Settings.MumTryCount;

            SetMessage("MUM箱空け実行中");
            while (Running)
            {
                //どうする?
                if (_FFACE.Menu.IsOpen && MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringMum1))
                {
                    box = new Box(gi.Id);
                    SetTextboxText(txtTargets, box.EnableNoLine);
                    switch (gi.Type)
                    {
                    case Constant.MumGameType.BAYLD:
                        if (!SetDialogOptionIndex(1, true))
                        {
                            return(Constant.MumStartRet.異常終了);
                        }
                        break;

                    case Constant.MumGameType.GIL:
                        if (!SetDialogOptionIndex(2, true))
                        {
                            return(Constant.MumStartRet.異常終了);
                        }
                        break;
                    }
                    if (!WaitOpenDialog(Constant.DialogStringMum2, false))
                    {
                        return(Constant.MumStartRet.異常終了);
                    }
                }
                //難易度を選択してください((.*):([0-9]*))
                if (_FFACE.Menu.IsOpen && MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringMum2))
                {
                    if (!SetDialogOptionIndex(gi.MenuIndex, true))
                    {
                        return(Constant.MumStartRet.異常終了);
                    }
                    if (!WaitOpenDialog(Constant.DialogStringMum3, false))
                    {
                        return(Constant.MumStartRet.異常終了);
                    }
                    box = new Box(gi.Id);
                }
                //どうする?(残り([0-9]*)回)
                if (_FFACE.Menu.IsOpen && MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringMum3))
                {
                    //残り回数取得
                    if (MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringMum3))
                    {
                        ArrayList al = MiscTools.GetRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringMum3);
                        box.TryRemainCnt = int.Parse(al[0].ToString());
                    }
                    //string[] r = getMatchDialogQuestionValue(Constant.DialogStringMum3);
                    //box.TryRemainCnt = int.Parse(r[1]);
                    //チャットバッファクリア
                    cl = _FFACE.Chat.GetNextLine(LineSettings.CleanAll);
                    //次の操作取得
                    BoxOperation bo = box.GetNextOperation();
                    if (bo.Operation == BoxOperationKind.INPUTNO)
                    {
                        SetMessage("箱操作:" + bo.InputNo.ToString() + "を入力");
                        if (!SetDialogOptionIndex(0, true))
                        {
                            return(Constant.MumStartRet.異常終了);                               //数字を入力するを選択
                        }
                        if (!_Settings.UseEnternity)
                        {
                            System.Threading.Thread.Sleep(_Settings.BaseWait);
                            _FFACE.Windower.SendKeyPress(KeyCode.EnterKey);
                        }
                        if (!InputNumber(bo.InputNo.ToString(), true))
                        {
                            return(Constant.MumStartRet.異常終了);                                          //数字を入力する
                        }
                    }
                    else if (bo.Operation == BoxOperationKind.GETHINTS)
                    {
                        SetMessage("箱操作:カギを調べる");
                        if (!SetDialogOptionIndex(1, true))
                        {
                            return(Constant.MumStartRet.異常終了);                               //カギを調べるを選択
                        }
                    }
                    //else if (bo.Operation == BoxOperationKind.FINISHED)
                    //{
                    //    return Constant.MumStartRet.正常終了;
                    //}
                    System.Threading.Thread.Sleep(_Settings.NumberInputWait);
                    setChatToBox(box);
                    SetTextboxText(txtTargets, box.EnableNoLine);

                    //箱空け完了かの判断
                    bo = box.GetNextOperation();
                    if (bo.Operation == BoxOperationKind.OPENSUCCESS ||
                        bo.Operation == BoxOperationKind.OPENFAILED)
                    {
                        //残り回数の判定
                        boxOpenRemain--;
                        if (_Settings.MumTryCount != 0)
                        {
                            if (boxOpenRemain > 0)
                            {
                                if (bo.Operation == BoxOperationKind.OPENSUCCESS)
                                {
                                    SetMessage("箱空け成功 残り回数:" + boxOpenRemain);
                                }
                                else
                                {
                                    SetMessage("箱空け失敗 残り回数:" + boxOpenRemain);
                                }
                            }
                        }
                    }
                }
                //もう1度やりますか?
                if (_FFACE.Menu.IsOpen && MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringMum4))
                {
                    //規定回数開けてたら終了
                    if (_Settings.MumTryCount != 0 &&
                        boxOpenRemain <= 0)
                    {
                        SetMessage("規定回数に達したので停止しました");
                        if (!SetDialogOptionIndex(0, true))
                        {
                            return(Constant.MumStartRet.異常終了);
                        }
                        return(Constant.MumStartRet.指定回数実行);
                    }
                    box = new Box(gi.Id);
                    SetTextboxText(txtTargets, box.EnableNoLine);
                    switch (gi.Type)
                    {
                    case Constant.MumGameType.BAYLD:
                        if (!SetDialogOptionIndex(1, true))
                        {
                            return(Constant.MumStartRet.異常終了);
                        }
                        break;

                    case Constant.MumGameType.GIL:
                        if (!SetDialogOptionIndex(2, true))
                        {
                            return(Constant.MumStartRet.異常終了);
                        }
                        break;
                    }
                    if (!WaitOpenDialog(Constant.DialogStringMum3, false))
                    {
                        return(Constant.MumStartRet.異常終了);
                    }
                }

                System.Threading.Thread.Sleep(_Settings.BaseWait);
            }
            return(Constant.MumStartRet.正常終了);
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: kool924jp/BoxUnlocker
        /// <summary>
        /// フィールド箱空け処理
        /// </summary>
        /// <returns>True:正常終了 False:異常終了</returns>
        private Boolean StartField()
        {
            FFACE.ChatTools.ChatLine cl = new FFACE.ChatTools.ChatLine();
            Constant.MumGameInfo     gi = _Constant.GetMumGameInfo(_Settings.MumGameId);
            Box box           = new Box(BoxTypeKind.Field);
            int boxOpenRemain = _Settings.MumTryCount;
            int targetId      = _FFACE.Target.ID;

            SetMessage("FOV・GOV箱空け実行中");
            while (Running)
            {
                //どうする?
                if (_FFACE.Menu.IsOpen && MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringField1))
                {
                    //開錠するを選択
                    if (!SetDialogOptionIndex(1, true))
                    {
                        return(false);
                    }
                    if (!WaitOpenDialog(Constant.DialogStringField2, false))
                    {
                        return(false);
                    }
                }
                //どうする?(残り([0-9]*)回)
                if (_FFACE.Menu.IsOpen && MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringField2))
                {
                    //残り回数取得
                    if (MiscTools.IsRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringField2))
                    {
                        ArrayList al = MiscTools.GetRegexString(_FFACE.Menu.DialogText.Question, Constant.DialogStringField2);
                        box.TryRemainCnt = int.Parse(al[0].ToString());
                    }
                    //string[] r = getMatchDialogQuestionValue(Constant.DialogStringMum3);
                    //box.TryRemainCnt = int.Parse(r[1]);
                    //チャットバッファクリア
                    cl = _FFACE.Chat.GetNextLine(LineSettings.CleanAll);
                    //次の操作取得
                    BoxOperation bo = box.GetNextOperation();
                    if (bo.Operation == BoxOperationKind.INPUTNO)
                    {
                        SetMessage("箱操作:" + bo.InputNo.ToString() + "を入力");
                        if (!SetDialogOptionIndex(1, true))
                        {
                            return(false);                               //数字を入力するを選択
                        }
                        if (!_Settings.UseEnternity)
                        {
                            System.Threading.Thread.Sleep(_Settings.BaseWait);
                            _FFACE.Windower.SendKeyPress(KeyCode.EnterKey);
                        }
                        if (!InputNumber(bo.InputNo.ToString(), true))
                        {
                            return(false);                                          //数字を入力する
                        }
                    }
                    else if (bo.Operation == BoxOperationKind.GETHINTS)
                    {
                        SetMessage("箱操作:カギを調べる");
                        if (!SetDialogOptionIndex(2, true))
                        {
                            return(false);                               //カギを調べるを選択
                        }
                    }
                    System.Threading.Thread.Sleep(_Settings.NumberInputWait);
                    setChatToBox(box);
                    SetTextboxText(txtTargets, box.EnableNoLine);

                    //箱空け完了かの判断
                    bo = box.GetNextOperation();
                    if (bo.Operation == BoxOperationKind.OPENSUCCESS)
                    {
                        SetMessage("箱開けに成功しました");
                        return(true);
                    }
                    else if (bo.Operation == BoxOperationKind.OPENFAILED)
                    {
                        SetMessage("箱開けに失敗しました");
                        return(true);
                    }
                    else
                    {
                        //箱をターゲットする
                        if (!SetTargetFromId(targetId))
                        {
                            return(false);
                        }
                        _FFACE.Windower.SendKeyPress(KeyCode.EnterKey);//ENTER
                        if (!WaitOpenDialog(Constant.DialogStringField1, true))
                        {
                            return(false);
                        }
                    }
                }
                System.Threading.Thread.Sleep(_Settings.BaseWait);
            }
            return(true);
        }