/// <summary> /// 次の操作を取得する /// </summary> /// <returns>BoxOperation</returns> public BoxOperation GetNextOperation() { BoxOperation bo = new BoxOperation(); if (isOpenSuccess) { bo.Operation = BoxOperationKind.OPENSUCCESS; bo.InputNo = 0; } else if (isOpenFailed) { bo.Operation = BoxOperationKind.OPENFAILED; bo.InputNo = 0; } else { if (isBoxOpenable() || TryRemainCnt == 1) { bo.Operation = BoxOperationKind.INPUTNO; bo.InputNo = int.Parse(getNextInputNoIndex()); } else { bo.Operation = BoxOperationKind.GETHINTS; bo.InputNo = 0; } } MiscTools.DebugMessage("残り回数: " + TryRemainCnt.ToString() + " 指示:" + bo.Operation.ToString() + "/" + bo.InputNo.ToString()); return(bo); }
/// <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.正常終了); }
/// <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); }
/// <summary> /// 次の操作を取得する /// </summary> /// <returns>BoxOperation</returns> public BoxOperation GetNextOperation() { BoxOperation bo = new BoxOperation(); if (isOpenSuccess) { bo.Operation = BoxOperationKind.OPENSUCCESS; bo.InputNo = 0; } else if (isOpenFailed) { bo.Operation = BoxOperationKind.OPENFAILED; bo.InputNo = 0; } else { if (isBoxOpenable() || TryRemainCnt == 1) { bo.Operation = BoxOperationKind.INPUTNO; bo.InputNo = int.Parse(getNextInputNoIndex()); } else { bo.Operation = BoxOperationKind.GETHINTS; bo.InputNo = 0; } } MiscTools.DebugMessage("残り回数: " + TryRemainCnt.ToString() + " 指示:" + bo.Operation.ToString() + "/" + bo.InputNo.ToString()); return bo; }