public override void Tick(Bitmap viewportCapture, RECT viewportRect) { var viewportMat = viewportCapture.ToOpenCvMat(); if (TryClickConfirmReceiveButton(viewportMat, viewportRect)) { logTools.Info("TryClickConfirmReceiveButton"); } else if (TryClickReceiveAllButton(viewportMat, viewportRect)) { logTools.Info("TryClickReceiveAllButton"); } }
public override void Tick(Bitmap viewportCapture, RECT viewportRect) { if (viewportCapture.Width < 10 || viewportCapture.Height < 10) { logTools.Info("Capture Size Sucks, Special Process, Click Skip"); MumuState.ClickSkipConfirmButton(viewportRect); return; } var viewportMat = viewportCapture.ToOpenCvMat(); if (IsStoryMainScene(viewportMat, viewportRect)) { DoMainSceneThings(viewportMat, viewportRect); DragListTimes = 0; } else if (IsStoryListScene(viewportMat, viewportRect)) { DoListSceneThings(viewportMat, viewportRect, 1); } else if (IsDataDownloadWin(viewportMat, viewportRect)) { MumuState.ClickDataDownloadButton(viewportRect, false); ClickMenuButtonTimes = 0; DragListTimes = 0; } else if (HasSkipConfirmButton(viewportMat, viewportRect)) { MumuState.ClickSkipConfirmButton(viewportRect); } else if (HasSkipButton(viewportMat, viewportRect)) { MumuState.ClickSkipButton(viewportRect); } else if (HasMenuButton(viewportMat, viewportRect)) { MumuState.ClickMenuButton(viewportRect); ClickMenuButtonTimes += 1; if (ClickMenuButtonTimes > 5) { MumuState.ClickBack(viewportRect); } } else { logTools.Info("Found Nothing, Click Back"); MumuState.ClickBack(viewportRect); } }
private static void PrintExcepitonLog(Exception e) { if (e.GetType() == typeof(InvalidOperationException)) { LogTools.PrintError("打包失败,文件已损坏"); } else { LogTools.PrintError(e.GetType().Name + e.Message); } LogTools.Error(GetDetailsInfo(), e); //将失败的文件拷贝至指定目录 try { String exceptionFilePath = GlobalConstants.AbsoluteResourcesPath + "/" + FileTools.GetFileName(srcPath); if (FileTools.FileExists(exceptionFilePath)) { LogTools.Info("发生异常的文件存在,文件路径为:" + exceptionFilePath); if (!FileTools.DirectoryExists(GlobalConstants.ExceptionFBXFolder)) { FileTools.CreateDirectory(GlobalConstants.ExceptionFBXFolder); } String destFilePath = GlobalConstants.ExceptionFBXFolder + "/" + FileTools.GetFileName(exceptionFilePath) + "(" + DateTime.Now.ToString("yyyy-MM-dd HH.mm.ss") + ")"; FileTools.CopyFile(exceptionFilePath, destFilePath); } else { LogTools.Info("发生异常的文件不存在,文件路径为"); } } catch (Exception ee) { LogTools.Error(GetDetailsInfo(), ee); } }
public static void MainMethod() { try { commandLineArgs = Environment.GetCommandLineArgs(); if (commandLineArgs.Length < 11) { throw new System.Exception("srcPath不能为空"); } if (commandLineArgs.Length < 12) { throw new System.Exception("outpath不能为空"); } srcPath = commandLineArgs[10]; outPath = commandLineArgs[11]; //获取扩展设置 string configInfoJson = ""; if (commandLineArgs.Length > 12) { configInfoJson = commandLineArgs[12]; } configJson = JsonTools.ResolutionJsonFromString <ConfigJson>(configInfoJson); StartBuildSDF(); LogTools.Info("打包结束,未发现异常.srcPath:" + commandLineArgs [10] + " outPath:" + commandLineArgs[11]); } catch (System.Exception e) { PrintExcepitonLog(e); } }
public static void StartBuildBundle() { LogTools.Info("---------------------------------start-------------------------------------"); LogTools.Info("设置打包平台"); //设置打包平台 if (ProjectConfig.Instance.m_AssetBundleBuildTarget != EnumTools.GetException <BuildTarget>()) { buildTarget = ProjectConfig.Instance.m_AssetBundleBuildTarget; } LogTools.Info("清理资源:"); AssetsSetting.ClearResourcesDir(); //清空Resources目录 LogTools.Info("拷贝并导入资源"); srcPath = AssetsSetting.ImportAsset(srcPath); //将srcPath上的文件复制到Resources目录下,并且导入资源 LogTools.Info("设置资源"); AssetsSetting.ImporterSet(configJson, srcPath); //对资源进行各种参数修改和设置再次导入 LogTools.Info("清空AssetBundlesName"); ClearAssetBundlesName(); //清空AssetBundlesName LogTools.Info("设置AssetBundlesName"); PerpareToBuild(srcPath); //设置打包资源的assetBundleName LogTools.Info("开始打包"); StartToBuild(); //开始打包 LogTools.Info("导出资源"); string assetBundlePath = GlobalConstants.TempPath + "/" + FileTools.GetFileName(srcPath).ToLower() + ".ab"; AssetsSetting.MoveOutAsset(assetBundlePath, outPath); //将打包好的文件移动到输出目录 LogTools.Info("清空资源文件"); AssetsSetting.ClearResourcesDir(); //清空Resources目录 LogTools.Info("结束"); LogTools.Info("---------------------------------end-------------------------------------"); }
public override void Tick(Bitmap viewportCapture, RECT viewportRect) { var list = GetArenaPlayerOCRResults(viewportCapture, viewportRect); var idx = GetArenaPlayerIndex(list); logTools.Info("Player Index: " + idx + (idx == -1 ? "(Not Found)" : "")); if (idx != -1) { MumuState.ClickArenaPlayer(viewportRect, idx); var res = list[idx]; throw new BreakException($"已找到目标玩家 名字:{res.Name} 排名:{res.Rank}, 脚本终止"); } else { MumuState.ClickArenaRefresh(viewportRect); } }
public override void Tick(Bitmap viewportCapture, RECT viewportRect) { var viewportMat = viewportCapture.ToOpenCvMat(); if (IsDataDownloadWin(viewportMat, viewportRect)) { logTools.Info("DataDownloadWin"); MumuState.ClickDataDownloadButton(viewportRect, false); } else if (TryClickChoiceOne(viewportMat, viewportRect)) { logTools.Info("TryClickChoiceOne"); } else if (IsReliabilityMainScene(viewportMat, viewportRect)) { DoMainSceneThings(viewportMat, viewportRect); } else if (IsReliabilityEpisodeScene(viewportMat, viewportRect)) { DoEpisodeSceneThings(viewportMat, viewportRect); } else { logTools.Info("ClickBack"); MumuState.ClickBack(viewportRect); } }
public override void Tick(Bitmap viewportCapture, RECT viewportRect) { var viewportMat = viewportCapture.ToOpenCvMat(); if (TryClickNextTag(viewportMat, viewportRect)) { logTools.Info("TryClickNextTag"); } else if (TryClickChallengeButton(viewportMat, viewportRect)) { logTools.Info("TryClickChallengeButton"); } else if (TryClickStartFightButton(viewportMat, viewportRect)) { logTools.Info("TryClickStartFightButton"); } else if (TryClickAutoOffButton(viewportMat, viewportRect)) { logTools.Info("TryClickAutoOffButton"); } else if (TryClickNextStepButton(viewportMat, viewportRect)) { logTools.Info("TryClickNextStepButton"); } else { logTools.Info("ClickBack"); MumuState.DoClick(viewportRect, new Vec2f(0.1f, 0.7f)); //MumuState.ClickBack(viewportRect); } }
public override void OnStart(Mat viewportMat, RECT viewportRect) { if (!CanMatchTemplate(viewportMat, viewportRect, BATTLE_SET_TEAM_SCENE_TITLE_MKEY)) { throw new BreakException(Trans.T("请在编组队伍界面启动脚本")); } logTools.Info(Name, Trans.T("正在读取队伍编组...")); units = GetBattleTeamInfo(viewportMat, viewportRect); TryClickTemplateRect(viewportMat, viewportRect, BATTLE_START_MKEY); }
public override void Tick(Mat viewportMat, RECT viewportRect) { var list = GetPlayerInfoList(viewportMat, viewportRect); var playerIndex = FindPlayerIndex(list); if (playerIndex != NOT_FOUND) { logTools.Info("ArenaSearch", $"PlayerIndex: {playerIndex}"); mumuTools.DoClick($"Arena_Player_{playerIndex + 1}"); var playerInfo = list[playerIndex]; throw new BreakException(Trans.T("已找到目标玩家,名字:{0},排名:{1},脚本终止", playerInfo.Name, playerInfo.Rank)); } else { logTools.Info("ArenaSearch", $"PlayerIndex Not Found"); mumuTools.DoClick(ARENA_REFRESH_KEY); } }
public override void Tick(Bitmap viewportCapture, RECT viewportRect) { var viewportMat = viewportCapture.ToOpenCvMat(); var f = true; if (TryClickChallengeButton(viewportMat, viewportRect)) { logTools.Info("TryClickChallengeButton"); } else if (TryClickStartFightButton(viewportMat, viewportRect)) { logTools.Info("TryClickStartFightButton"); } else if (TryClickAutoOffButton(viewportMat, viewportRect)) { logTools.Info("TryClickAutoOffButton"); } else if (TryClickNextStepButton(viewportMat, viewportRect)) { logTools.Info("TryClickNextStepButton"); } else if (TryClickGobackUnderGroundButton(viewportMat, viewportRect)) { logTools.Info("TryClickGobackUnderGroundButton"); } else { f = false; } if (!f) { var b1 = TryClickNormalBox(viewportMat, viewportRect); var b2 = TryClickSpecailBox(viewportMat, viewportRect); if (!b1 && !b2) { logTools.Info("Click Back"); MumuState.ClickBack(viewportRect); } } TryClickNormalBox(viewportMat, viewportRect); }
public CreateScriptTaskResult CreateScriptTask(ScriptBase script) { var tokenSource = new CancellationTokenSource(); var token = tokenSource.Token; var task = new Task(() => { var viewportRect = mumuTools.GetMumuViewportRect(); var viewportCapture = tools.DoCaptureScreen(viewportRect); logTools.Info("ScriptStart", $"Script: {script.Name} OnStart"); script.OnStart(viewportCapture.ToOpenCvMat(), viewportRect); while (true) { if (token.IsCancellationRequested) { logTools.Info("ScriptLoop", Trans.T("脚本: {0} 被终止", script.Name)); break; } try { Thread.Sleep(script.Interval); viewportRect = mumuTools.GetMumuViewportRect(); viewportCapture = tools.DoCaptureScreen(viewportRect); //logTools.Info("ScriptLoop", $"Script: {script.Name} Tick"); var viewportMat = viewportCapture.ToOpenCvMat(); var startTime = DateTime.Now; script.Tick(viewportMat, viewportRect); var endTime = DateTime.Now; //logTools.Info("ScriptLoop", $"Tick Takes {(endTime - startTime).TotalMilliseconds}ms"); } catch (Exception e) { var needBreak = logTools.IsSelfOrChildrenBreakException(e); if (!script.CanKeepOnWhenException || needBreak) { logTools.Error("ScriptLoop", Trans.T("脚本: {0} 因发生错误或主动结束而被终止", script.Name), false); throw e; } else { logTools.Error("ScriptLoop", Trans.T("脚本: {0} 发生错误", script.Name), false); logTools.Error("ScriptLoop", e); } } } }, tokenSource.Token); task.ContinueWith((t) => { if (t.IsFaulted) { logTools.Error("ScriptTask", t.Exception); } else if (t.IsCanceled) { logTools.Error("ScriptTask", Trans.T("脚本: {0} 被终止", script.Name)); } OnScriptEnded?.Invoke(script); }); return(new CreateScriptTaskResult() { Task = task, Script = script, TaskTokenSource = tokenSource, TaskToken = token, }); }