Example #1
0
        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");
            }
        }
Example #2
0
        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);
            }
        }
Example #7
0
        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);
        }
Example #10
0
        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,
            });
        }