asmrobot
2019-10-16 5597c0b354f881994a75878731c3a02183e9c970
format project
1 files added
1 files deleted
2 files renamed
16 files modified
629 ■■■■■ changed files
doc/组队.vsd patch | view | raw | blame | history
src/RichCreator.Utility/CV/DnfCVHelper.cs 8 ●●●● patch | view | raw | blame | history
src/RichCreator.Utility/CV/SkillCVHelper.cs 19 ●●●●● patch | view | raw | blame | history
src/RichCreator/Jobs/DNFJob.cs 136 ●●●● patch | view | raw | blame | history
src/RichCreator/Jobs/JobBase.cs 2 ●●● patch | view | raw | blame | history
src/RichCreator/Jobs/JobMonitor.cs 153 ●●●●● patch | view | raw | blame | history
src/RichCreator/Jobs/JobResult.cs 41 ●●●●● patch | view | raw | blame | history
src/RichCreator/Jobs/WeGameJob.cs 11 ●●●● patch | view | raw | blame | history
src/RichCreator/MainWindow.xaml 2 ●●● patch | view | raw | blame | history
src/RichCreator/Maps/Lindong/LindongMap.cs 58 ●●●●● patch | view | raw | blame | history
src/RichCreator/Maps/MapInfo.cs 2 ●●● patch | view | raw | blame | history
src/RichCreator/Maps/Skills/SkillMap.cs 19 ●●●● patch | view | raw | blame | history
src/RichCreator/Maps/Test/TestMap.cs 28 ●●●●● patch | view | raw | blame | history
src/RichCreator/Models/RichCreatorConfig.cs 50 ●●●●● patch | view | raw | blame | history
src/RichCreator/RichCreator.csproj 6 ●●●● patch | view | raw | blame | history
src/RichCreator/Services/ServiceProvider.cs 18 ●●●● patch | view | raw | blame | history
src/RichCreator/StateMachines/ChannelStateMachine.cs 26 ●●●●● patch | view | raw | blame | history
src/RichCreator/StateMachines/KillMonsterStateMachine.cs 32 ●●●● patch | view | raw | blame | history
src/RichCreator/StateMachines/StateMachineBase.cs 16 ●●●●● patch | view | raw | blame | history
src/RichCreator/configs/RichCreator.config 2 ●●● patch | view | raw | blame | history
doc/组队.vsd
Binary files differ
src/RichCreator.Utility/CV/DnfCVHelper.cs
@@ -242,7 +242,7 @@
        /// <summary>
        /// 加百利关闭按钮
        /// </summary>
        public static ColorArray shopCloseButton = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "521,541,255,255,204$532,541,255,255,204$531,541,255,255,204$531,542,255,255,187$530,542,255,255,187$530,543,255,255,187$529,543,255,255,187$529,544,255,238,187$528,544,255,238,187$527,546,238,221,170$526,546,238,221,170$522,541,255,255,204$522,542,255,255,187$523,542,255,255,187$523,543,255,255,187$524,543,255,255,187$521,551,204,187,119$522,551,204,187,119$522,550,221,187,136$523,550,221,187,136$523,549,221,204,136$524,549,221,204,136$532,551,204,187,119$531,551,204,187,119$531,550,221,187,136$530,550,221,187,136$530,549,221,204,136$529,549,221,204,136");
        public static ColorArray shopCloseButton = ColorArray.FromThresholdString(130, "550,457,255,255,255$542,450,255,255,255$543,450,255,255,255$552,450,255,255,255$553,450,255,255,255$542,451,0,0,0$543,451,255,255,255$544,451,255,255,255$551,451,255,255,255$552,451,255,255,255$553,451,0,0,0$543,452,0,0,0$544,452,255,255,255$545,452,255,255,255$550,452,255,255,255$551,452,255,255,255$552,452,0,0,0$544,453,0,0,0$545,453,255,255,255$546,453,255,255,255$549,453,255,255,255$550,453,255,255,255$551,453,0,0,0$545,454,0,0,0$546,454,255,255,255$547,454,255,255,255$548,454,255,255,255$549,454,255,255,255$550,454,0,0,0$546,455,0,0,0$547,455,255,255,255$548,455,255,255,255$549,455,0,0,0$546,456,255,255,255$547,456,255,255,255$548,456,255,255,255$549,456,255,255,255$545,457,255,255,255$546,457,255,255,255$547,457,0,0,0$548,457,0,0,0$549,457,255,255,255$544,458,255,255,255$545,458,255,255,255$546,458,0,0,0$549,458,0,0,0$550,458,255,255,255$551,458,255,255,255$543,459,255,255,255$544,459,255,255,255$545,459,0,0,0$550,459,0,0,0$551,459,255,255,255$552,459,255,255,255$542,460,255,255,255$543,460,255,255,255$544,460,0,0,0$551,460,0,0,0$552,460,255,255,255$553,460,255,255,255$542,461,0,0,0$543,461,0,0,0$552,461,0,0,0$553,461,0,0,0");
        /// <summary>
        /// 出售按钮
        /// </summary>
@@ -252,7 +252,7 @@
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            saleButtonPosition = ZTRectangle.Empty;
            closeButtonPosition = ZTRectangle.Empty;
            if (CVHelper.FindColorArray(out closeButtonPosition, image, shopCloseButton, gameRect))
            if (CVHelper.FindColorArrayForThreshold(out closeButtonPosition, image, shopCloseButton, gameRect))
            {
                if (CVHelper.FindColorArray(out saleButtonPosition, image, shopSaleButton, gameRect))
                {
@@ -296,13 +296,13 @@
        /// <summary>
        /// 系统菜单面板
        /// </summary>
        public static ColorArray SystemPanelTitle = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "876,195,221,221,153$485,558,207,173,82$518,558,207,173,82$586,558,207,173,82$632,558,207,173,82$716,558,139,119,54$789,558,139,119,54$867,558,139,119,54$832,211,136,119,68$746,211,136,119,68$636,211,221,187,102$568,211,221,187,102$492,211,221,187,102$871,195,221,221,153$889,195,221,221,153$879,204,153,119,68$870,204,153,119,68");
        public static ColorArray SystemPanelTitle = ColorArray.FromThresholdString(60, "674,173,0,0,0$627,173,0,0,0$628,173,0,0,0$629,173,0,0,0$630,173,0,0,0$647,173,0,0,0$648,173,0,0,0$661,173,0,0,0$662,173,0,0,0$673,173,0,0,0$675,173,0,0,0$682,173,0,0,0$683,173,0,0,0$684,173,0,0,0$685,173,0,0,0$686,173,0,0,0$697,173,0,0,0$698,173,0,0,0$699,173,0,0,0$700,173,0,0,0$701,173,0,0,0$609,174,0,0,0$610,174,0,0,0$611,174,0,0,0$612,174,0,0,0$613,174,0,0,0$614,174,0,0,0$615,174,0,0,0$616,174,0,0,0$617,174,0,0,0$618,174,0,0,0$619,174,0,0,0$620,174,0,0,0$621,174,0,0,0$622,174,0,0,0$623,174,0,0,0$624,174,0,0,0$625,174,0,0,0$626,174,0,0,0$627,174,0,0,0$628,174,0,0,0$629,174,0,0,0$630,174,0,0,0$631,174,0,0,0$635,174,0,0,0$636,174,0,0,0$637,174,0,0,0$638,174,0,0,0$639,174,0,0,0$640,174,0,0,0$645,174,0,0,0$646,174,0,0,0$647,174,0,0,0$648,174,0,0,0$649,174,0,0,0$650,174,0,0,0$659,174,0,0,0$660,174,0,0,0$661,174,0,0,0$662,174,0,0,0$663,174,0,0,0$664,174,0,0,0$671,174,0,0,0$672,174,0,0,0$673,174,0,0,0$674,174,0,0,0$675,174,0,0,0$676,174,0,0,0$677,174,0,0,0$681,174,0,0,0$682,174,0,0,0$683,174,0,0,0$684,174,0,0,0$685,174,0,0,0$686,174,0,0,0$687,174,0,0,0$696,174,0,0,0$697,174,0,0,0$698,174,0,0,0$699,174,0,0,0$700,174,0,0,0$701,174,0,0,0$702,174,0,0,0$608,175,0,0,0$609,175,0,0,0$610,175,0,0,0$611,175,0,0,0$612,175,0,0,0$613,175,0,0,0$614,175,0,0,0$615,175,0,0,0$616,175,0,0,0$617,175,0,0,0$618,175,0,0,0$619,175,0,0,0$620,175,0,0,0$621,175,0,0,0$622,175,0,0,0$623,175,0,0,0$624,175,0,0,0$625,175,0,0,0$626,175,0,0,0$631,175,0,0,0$632,175,0,0,0$634,175,0,0,0$635,175,0,0,0$636,175,0,0,0$637,175,0,0,0$638,175,0,0,0$639,175,0,0,0$640,175,0,0,0$641,175,0,0,0$642,175,0,0,0$643,175,0,0,0$644,175,0,0,0$645,175,0,0,0$646,175,0,0,0$647,175,0,0,0$648,175,0,0,0$649,175,0,0,0$650,175,0,0,0$651,175,0,0,0$652,175,0,0,0$653,175,0,0,0$654,175,0,0,0$655,175,0,0,0$656,175,0,0,0$657,175,0,0,0$658,175,0,0,0$659,175,0,0,0$660,175,0,0,0$661,175,0,0,0$662,175,0,0,0$663,175,0,0,0$664,175,0,0,0$665,175,0,0,0$666,175,0,0,0$667,175,0,0,0$668,175,0,0,0$669,175,0,0,0$670,175,0,0,0$671,175,0,0,0$672,175,0,0,0$673,175,0,0,0$674,175,0,0,0$675,175,0,0,0$676,175,0,0,0$677,175,0,0,0$678,175,0,0,0$679,175,0,0,0$680,175,0,0,0$681,175,0,0,0$686,175,0,0,0$687,175,0,0,0$688,175,0,0,0$689,175,0,0,0$690,175,0,0,0$691,175,0,0,0$692,175,0,0,0$693,175,0,0,0$694,175,0,0,0$695,175,0,0,0$696,175,0,0,0$697,175,0,0,0$702,175,0,0,0$703,175,0,0,0$607,176,0,0,0$608,176,0,0,0$628,176,255,255,255$629,176,255,255,255$631,176,0,0,0$632,176,0,0,0$633,176,0,0,0$634,176,0,0,0$635,176,0,0,0$636,176,255,255,255$637,176,255,255,255$638,176,255,255,255$640,176,0,0,0$641,176,0,0,0$642,176,0,0,0$643,176,0,0,0$644,176,0,0,0$645,176,0,0,0$646,176,255,255,255$647,176,255,255,255$648,176,255,255,255$649,176,255,255,255$650,176,0,0,0$651,176,0,0,0$652,176,0,0,0$653,176,0,0,0$654,176,0,0,0$655,176,0,0,0$656,176,0,0,0$657,176,0,0,0$658,176,0,0,0$659,176,0,0,0$660,176,255,255,255$661,176,255,255,255$662,176,255,255,255$663,176,255,255,255$664,176,0,0,0$665,176,0,0,0$666,176,0,0,0$667,176,0,0,0$668,176,0,0,0$669,176,0,0,0$670,176,0,0,0$671,176,0,0,0$673,176,255,255,255$674,176,255,255,255$675,176,255,255,255$676,176,0,0,0$677,176,0,0,0$678,176,0,0,0$679,176,0,0,0$680,176,0,0,0$681,176,0,0,0$683,176,255,255,255$684,176,255,255,255$685,176,255,255,255$687,176,0,0,0$688,176,0,0,0$689,176,0,0,0$690,176,0,0,0$691,176,0,0,0$692,176,0,0,0$693,176,0,0,0$694,176,0,0,0$695,176,0,0,0$696,176,0,0,0$698,176,255,255,255$699,176,255,255,255$700,176,255,255,255$702,176,0,0,0$703,176,0,0,0$607,177,0,0,0$608,177,0,0,0$610,177,255,255,255$611,177,255,255,255$612,177,255,255,255$613,177,255,255,255$614,177,255,255,255$615,177,255,255,255$616,177,255,255,255$617,177,255,255,255$618,177,255,255,255$619,177,255,255,255$620,177,255,255,255$621,177,255,255,255$622,177,255,255,255$623,177,255,255,255$624,177,255,255,255$625,177,255,255,255$626,177,255,255,255$627,177,255,255,255$628,177,255,255,255$629,177,255,255,255$631,177,0,0,0$632,177,0,0,0$633,177,0,0,0$634,177,0,0,0$636,177,255,255,255$637,177,255,255,255$638,177,255,255,255$640,177,0,0,0$642,177,255,255,255$643,177,255,255,255$644,177,255,255,255$645,177,255,255,255$646,177,255,255,255$647,177,255,255,255$648,177,255,255,255$649,177,255,255,255$650,177,255,255,255$651,177,255,255,255$652,177,255,255,255$653,177,255,255,255$654,177,255,255,255$655,177,0,0,0$656,177,0,0,0$658,177,255,255,255$659,177,255,255,255$660,177,255,255,255$661,177,255,255,255$662,177,255,255,255$663,177,255,255,255$664,177,255,255,255$665,177,255,255,255$666,177,255,255,255$667,177,255,255,255$668,177,255,255,255$669,177,255,255,255$670,177,255,255,255$671,177,255,255,255$672,177,255,255,255$673,177,255,255,255$674,177,255,255,255$675,177,255,255,255$676,177,255,255,255$677,177,255,255,255$679,177,0,0,0$680,177,0,0,0$682,177,255,255,255$683,177,255,255,255$684,177,255,255,255$685,177,255,255,255$686,177,255,255,255$687,177,255,255,255$688,177,255,255,255$689,177,255,255,255$690,177,255,255,255$691,177,255,255,255$692,177,255,255,255$693,177,255,255,255$694,177,255,255,255$695,177,255,255,255$696,177,255,255,255$697,177,255,255,255$698,177,255,255,255$699,177,255,255,255$700,177,255,255,255$701,177,255,255,255$703,177,0,0,0$607,178,0,0,0$608,178,0,0,0$610,178,255,255,255$611,178,255,255,255$612,178,255,255,255$613,178,255,255,255$614,178,255,255,255$615,178,255,255,255$616,178,255,255,255$617,178,255,255,255$618,178,255,255,255$619,178,255,255,255$620,178,255,255,255$621,178,255,255,255$622,178,255,255,255$623,178,255,255,255$624,178,255,255,255$625,178,255,255,255$626,178,255,255,255$627,178,255,255,255$628,178,255,255,255$629,178,255,255,255$631,178,0,0,0$632,178,0,0,0$633,178,0,0,0$634,178,0,0,0$635,178,255,255,255$636,178,255,255,255$637,178,255,255,255$639,178,0,0,0$640,178,0,0,0$642,178,255,255,255$643,178,255,255,255$644,178,255,255,255$645,178,255,255,255$646,178,255,255,255$647,178,255,255,255$648,178,255,255,255$649,178,255,255,255$650,178,255,255,255$651,178,255,255,255$652,178,255,255,255$653,178,255,255,255$654,178,255,255,255$655,178,0,0,0$656,178,0,0,0$658,178,255,255,255$659,178,255,255,255$660,178,255,255,255$661,178,255,255,255$662,178,255,255,255$663,178,255,255,255$664,178,255,255,255$665,178,255,255,255$666,178,255,255,255$667,178,255,255,255$668,178,255,255,255$669,178,255,255,255$670,178,255,255,255$671,178,255,255,255$672,178,255,255,255$673,178,255,255,255$674,178,255,255,255$675,178,255,255,255$676,178,255,255,255$677,178,255,255,255$679,178,0,0,0$680,178,0,0,0$682,178,255,255,255$683,178,255,255,255$684,178,255,255,255$685,178,255,255,255$686,178,255,255,255$687,178,255,255,255$688,178,255,255,255$689,178,255,255,255$690,178,255,255,255$691,178,255,255,255$692,178,255,255,255$693,178,255,255,255$694,178,255,255,255$695,178,255,255,255$696,178,255,255,255$697,178,255,255,255$698,178,255,255,255$699,178,255,255,255$700,178,255,255,255$701,178,255,255,255$703,178,0,0,0$607,179,0,0,0$608,179,0,0,0$613,179,255,255,255$614,179,255,255,255$615,179,255,255,255$616,179,255,255,255$617,179,255,255,255$618,179,255,255,255$630,179,0,0,0$631,179,0,0,0$632,179,0,0,0$633,179,0,0,0$635,179,255,255,255$636,179,255,255,255$637,179,255,255,255$638,179,0,0,0$639,179,0,0,0$640,179,0,0,0$642,179,255,255,255$643,179,255,255,255$644,179,255,255,255$645,179,255,255,255$646,179,255,255,255$647,179,255,255,255$648,179,255,255,255$649,179,255,255,255$650,179,255,255,255$651,179,255,255,255$652,179,255,255,255$653,179,255,255,255$654,179,255,255,255$655,179,0,0,0$656,179,0,0,0$658,179,255,255,255$659,179,255,255,255$660,179,255,255,255$661,179,255,255,255$662,179,255,255,255$663,179,255,255,255$664,179,255,255,255$665,179,255,255,255$666,179,255,255,255$667,179,255,255,255$668,179,255,255,255$669,179,255,255,255$670,179,255,255,255$671,179,255,255,255$672,179,255,255,255$673,179,255,255,255$674,179,255,255,255$675,179,255,255,255$676,179,255,255,255$677,179,255,255,255$679,179,0,0,0$680,179,0,0,0$682,179,255,255,255$683,179,255,255,255$684,179,255,255,255$685,179,255,255,255$686,179,255,255,255$687,179,255,255,255$688,179,255,255,255$689,179,255,255,255$690,179,255,255,255$691,179,255,255,255$692,179,255,255,255$693,179,255,255,255$694,179,255,255,255$695,179,255,255,255$696,179,255,255,255$697,179,255,255,255$698,179,255,255,255$699,179,255,255,255$700,179,255,255,255$701,179,255,255,255$703,179,0,0,0$607,180,0,0,0$608,180,0,0,0$609,180,0,0,0$610,180,0,0,0$613,180,255,255,255$614,180,255,255,255$615,180,255,255,255$616,180,255,255,255$619,180,0,0,0$620,180,0,0,0$621,180,0,0,0$622,180,0,0,0$623,180,0,0,0$624,180,0,0,0$625,180,0,0,0$626,180,0,0,0$627,180,0,0,0$628,180,0,0,0$629,180,0,0,0$630,180,0,0,0$631,180,0,0,0$632,180,0,0,0$633,180,0,0,0$634,180,255,255,255$635,180,255,255,255$636,180,255,255,255$642,180,0,0,0$644,180,255,255,255$645,180,255,255,255$646,180,255,255,255$647,180,0,0,0$648,180,0,0,0$649,180,0,0,0$650,180,0,0,0$651,180,0,0,0$652,180,0,0,0$653,180,0,0,0$654,180,0,0,0$655,180,0,0,0$656,180,0,0,0$657,180,0,0,0$658,180,0,0,0$659,180,0,0,0$660,180,255,255,255$661,180,255,255,255$662,180,255,255,255$663,180,255,255,255$664,180,0,0,0$665,180,0,0,0$666,180,0,0,0$667,180,0,0,0$668,180,0,0,0$669,180,0,0,0$670,180,0,0,0$671,180,0,0,0$673,180,255,255,255$674,180,255,255,255$675,180,255,255,255$676,180,0,0,0$677,180,0,0,0$678,180,0,0,0$679,180,0,0,0$680,180,0,0,0$682,180,255,255,255$683,180,255,255,255$685,180,0,0,0$686,180,0,0,0$687,180,0,0,0$688,180,0,0,0$689,180,0,0,0$691,180,255,255,255$692,180,255,255,255$694,180,0,0,0$695,180,0,0,0$696,180,0,0,0$697,180,0,0,0$698,180,0,0,0$700,180,255,255,255$701,180,255,255,255$703,180,0,0,0$607,181,0,0,0$608,181,0,0,0$611,181,255,255,255$612,181,255,255,255$613,181,255,255,255$614,181,255,255,255$615,181,255,255,255$617,181,0,0,0$618,181,0,0,0$619,181,0,0,0$620,181,0,0,0$621,181,0,0,0$623,181,255,255,255$624,181,255,255,255$625,181,255,255,255$626,181,255,255,255$627,181,255,255,255$629,181,0,0,0$630,181,0,0,0$631,181,0,0,0$632,181,0,0,0$634,181,255,255,255$635,181,255,255,255$636,181,255,255,255$637,181,0,0,0$638,181,255,255,255$639,181,255,255,255$640,181,255,255,255$642,181,0,0,0$643,181,255,255,255$644,181,255,255,255$645,181,255,255,255$647,181,0,0,0$648,181,0,0,0$649,181,0,0,0$650,181,0,0,0$651,181,0,0,0$652,181,255,255,255$653,181,255,255,255$654,181,255,255,255$655,181,0,0,0$656,181,0,0,0$657,181,0,0,0$658,181,0,0,0$659,181,0,0,0$664,181,0,0,0$665,181,0,0,0$666,181,0,0,0$667,181,0,0,0$668,181,0,0,0$669,181,0,0,0$670,181,0,0,0$671,181,0,0,0$679,181,0,0,0$680,181,0,0,0$682,181,255,255,255$683,181,255,255,255$685,181,0,0,0$686,181,0,0,0$687,181,0,0,0$688,181,0,0,0$689,181,0,0,0$691,181,255,255,255$692,181,255,255,255$694,181,0,0,0$695,181,0,0,0$696,181,0,0,0$697,181,0,0,0$698,181,0,0,0$700,181,255,255,255$701,181,255,255,255$703,181,0,0,0$607,182,0,0,0$608,182,0,0,0$610,182,255,255,255$611,182,255,255,255$612,182,255,255,255$613,182,255,255,255$614,182,255,255,255$615,182,255,255,255$616,182,255,255,255$617,182,255,255,255$618,182,255,255,255$619,182,255,255,255$620,182,255,255,255$621,182,255,255,255$622,182,255,255,255$623,182,255,255,255$624,182,255,255,255$625,182,255,255,255$627,182,0,0,0$628,182,0,0,0$629,182,0,0,0$630,182,0,0,0$631,182,0,0,0$632,182,0,0,0$633,182,255,255,255$634,182,255,255,255$635,182,255,255,255$636,182,255,255,255$637,182,255,255,255$638,182,255,255,255$639,182,255,255,255$640,182,255,255,255$641,182,0,0,0$643,182,255,255,255$644,182,255,255,255$645,182,255,255,255$646,182,0,0,0$647,182,0,0,0$648,182,0,0,0$649,182,0,0,0$650,182,0,0,0$651,182,0,0,0$652,182,255,255,255$653,182,255,255,255$654,182,255,255,255$655,182,0,0,0$656,182,0,0,0$675,182,255,255,255$676,182,255,255,255$677,182,255,255,255$679,182,0,0,0$680,182,0,0,0$682,182,255,255,255$683,182,255,255,255$684,182,255,255,255$690,182,255,255,255$691,182,255,255,255$692,182,255,255,255$693,182,255,255,255$699,182,255,255,255$700,182,255,255,255$701,182,255,255,255$703,182,0,0,0$607,183,0,0,0$608,183,0,0,0$610,183,255,255,255$611,183,255,255,255$612,183,255,255,255$613,183,255,255,255$614,183,255,255,255$615,183,255,255,255$616,183,255,255,255$617,183,255,255,255$618,183,255,255,255$619,183,255,255,255$620,183,255,255,255$621,183,255,255,255$622,183,255,255,255$623,183,255,255,255$625,183,0,0,0$626,183,0,0,0$627,183,0,0,0$628,183,0,0,0$629,183,0,0,0$630,183,0,0,0$631,183,0,0,0$632,183,0,0,0$633,183,255,255,255$634,183,255,255,255$635,183,255,255,255$636,183,255,255,255$637,183,255,255,255$638,183,255,255,255$639,183,255,255,255$641,183,0,0,0$642,183,255,255,255$643,183,255,255,255$644,183,255,255,255$646,183,0,0,0$647,183,0,0,0$648,183,0,0,0$649,183,0,0,0$650,183,0,0,0$651,183,0,0,0$652,183,255,255,255$653,183,255,255,255$654,183,255,255,255$655,183,0,0,0$656,183,0,0,0$658,183,255,255,255$659,183,255,255,255$660,183,255,255,255$661,183,255,255,255$662,183,255,255,255$663,183,255,255,255$664,183,255,255,255$665,183,255,255,255$666,183,255,255,255$667,183,255,255,255$668,183,255,255,255$669,183,255,255,255$670,183,255,255,255$671,183,255,255,255$672,183,255,255,255$673,183,255,255,255$674,183,255,255,255$675,183,255,255,255$676,183,255,255,255$677,183,255,255,255$679,183,0,0,0$680,183,0,0,0$682,183,255,255,255$683,183,255,255,255$684,183,255,255,255$685,183,255,255,255$686,183,255,255,255$687,183,255,255,255$688,183,255,255,255$689,183,255,255,255$690,183,255,255,255$691,183,255,255,255$692,183,255,255,255$693,183,255,255,255$694,183,255,255,255$695,183,255,255,255$696,183,255,255,255$697,183,255,255,255$698,183,255,255,255$699,183,255,255,255$700,183,255,255,255$701,183,255,255,255$703,183,0,0,0$607,184,0,0,0$608,184,0,0,0$616,184,255,255,255$617,184,255,255,255$618,184,255,255,255$619,184,255,255,255$620,184,255,255,255$621,184,255,255,255$623,184,0,0,0$624,184,0,0,0$625,184,0,0,0$626,184,0,0,0$628,184,255,255,255$629,184,255,255,255$631,184,0,0,0$632,184,0,0,0$633,184,255,255,255$634,184,255,255,255$635,184,255,255,255$636,184,255,255,255$637,184,255,255,255$638,184,255,255,255$639,184,255,255,255$640,184,0,0,0$642,184,255,255,255$643,184,255,255,255$644,184,255,255,255$645,184,255,255,255$646,184,255,255,255$647,184,255,255,255$648,184,255,255,255$649,184,255,255,255$650,184,255,255,255$651,184,255,255,255$652,184,255,255,255$653,184,255,255,255$654,184,255,255,255$655,184,0,0,0$656,184,0,0,0$658,184,255,255,255$659,184,255,255,255$660,184,255,255,255$661,184,255,255,255$662,184,255,255,255$663,184,255,255,255$664,184,255,255,255$665,184,255,255,255$666,184,255,255,255$667,184,255,255,255$668,184,255,255,255$669,184,255,255,255$670,184,255,255,255$671,184,255,255,255$672,184,255,255,255$673,184,255,255,255$674,184,255,255,255$675,184,255,255,255$676,184,255,255,255$677,184,255,255,255$678,184,0,0,0$679,184,0,0,0$680,184,0,0,0$682,184,255,255,255$683,184,255,255,255$684,184,255,255,255$685,184,255,255,255$686,184,255,255,255$687,184,255,255,255$688,184,255,255,255$689,184,255,255,255$690,184,255,255,255$691,184,255,255,255$692,184,255,255,255$693,184,255,255,255$694,184,255,255,255$695,184,255,255,255$696,184,255,255,255$697,184,255,255,255$698,184,255,255,255$699,184,255,255,255$700,184,255,255,255$701,184,255,255,255$703,184,0,0,0$607,185,0,0,0$608,185,0,0,0$609,185,0,0,0$610,185,0,0,0$611,185,0,0,0$612,185,0,0,0$614,185,255,255,255$615,185,255,255,255$616,185,255,255,255$617,185,255,255,255$618,185,255,255,255$619,185,255,255,255$621,185,0,0,0$622,185,0,0,0$623,185,0,0,0$624,185,0,0,0$625,185,0,0,0$626,185,0,0,0$628,185,255,255,255$629,185,255,255,255$631,185,0,0,0$632,185,0,0,0$636,185,255,255,255$637,185,255,255,255$638,185,255,255,255$640,185,0,0,0$642,185,255,255,255$643,185,255,255,255$644,185,255,255,255$645,185,255,255,255$646,185,255,255,255$647,185,255,255,255$648,185,255,255,255$649,185,255,255,255$650,185,255,255,255$651,185,255,255,255$652,185,255,255,255$653,185,255,255,255$654,185,255,255,255$655,185,0,0,0$656,185,0,0,0$657,185,0,0,0$658,185,0,0,0$659,185,0,0,0$660,185,255,255,255$661,185,255,255,255$662,185,255,255,255$663,185,255,255,255$665,185,255,255,255$669,185,0,0,0$670,185,0,0,0$671,185,0,0,0$672,185,255,255,255$673,185,255,255,255$674,185,255,255,255$676,185,0,0,0$677,185,0,0,0$678,185,0,0,0$679,185,0,0,0$680,185,0,0,0$682,185,255,255,255$683,185,255,255,255$684,185,255,255,255$690,185,255,255,255$691,185,255,255,255$692,185,255,255,255$693,185,255,255,255$699,185,255,255,255$700,185,255,255,255$701,185,255,255,255$703,185,0,0,0$607,186,0,0,0$608,186,0,0,0$609,186,0,0,0$612,186,255,255,255$613,186,255,255,255$614,186,255,255,255$615,186,255,255,255$616,186,255,255,255$617,186,255,255,255$620,186,0,0,0$621,186,0,0,0$622,186,0,0,0$623,186,0,0,0$624,186,0,0,0$625,186,0,0,0$627,186,255,255,255$628,186,255,255,255$629,186,255,255,255$631,186,0,0,0$632,186,0,0,0$633,186,0,0,0$634,186,0,0,0$635,186,255,255,255$636,186,255,255,255$637,186,255,255,255$639,186,0,0,0$640,186,0,0,0$642,186,255,255,255$643,186,255,255,255$644,186,255,255,255$645,186,255,255,255$646,186,255,255,255$647,186,255,255,255$648,186,255,255,255$649,186,255,255,255$650,186,255,255,255$651,186,255,255,255$652,186,255,255,255$653,186,255,255,255$655,186,0,0,0$656,186,0,0,0$659,186,255,255,255$660,186,255,255,255$661,186,255,255,255$662,186,255,255,255$664,186,0,0,0$666,186,255,255,255$667,186,255,255,255$668,186,255,255,255$669,186,255,255,255$673,186,255,255,255$674,186,255,255,255$675,186,255,255,255$676,186,255,255,255$679,186,0,0,0$680,186,0,0,0$682,186,255,255,255$683,186,255,255,255$685,186,0,0,0$686,186,0,0,0$687,186,0,0,0$688,186,0,0,0$689,186,0,0,0$691,186,255,255,255$692,186,255,255,255$694,186,0,0,0$695,186,0,0,0$696,186,0,0,0$697,186,0,0,0$698,186,0,0,0$700,186,255,255,255$701,186,255,255,255$703,186,0,0,0$607,187,0,0,0$608,187,0,0,0$610,187,255,255,255$611,187,255,255,255$612,187,255,255,255$613,187,255,255,255$614,187,255,255,255$615,187,255,255,255$616,187,255,255,255$617,187,255,255,255$618,187,255,255,255$619,187,255,255,255$620,187,255,255,255$621,187,255,255,255$622,187,255,255,255$623,187,255,255,255$624,187,255,255,255$625,187,255,255,255$626,187,255,255,255$627,187,255,255,255$628,187,255,255,255$629,187,255,255,255$631,187,0,0,0$632,187,0,0,0$633,187,0,0,0$635,187,255,255,255$636,187,255,255,255$637,187,255,255,255$638,187,0,0,0$639,187,0,0,0$640,187,0,0,0$641,187,0,0,0$642,187,0,0,0$643,187,0,0,0$648,187,0,0,0$649,187,255,255,255$650,187,255,255,255$651,187,255,255,255$652,187,0,0,0$653,187,0,0,0$654,187,0,0,0$655,187,0,0,0$656,187,0,0,0$657,187,255,255,255$658,187,255,255,255$659,187,255,255,255$660,187,255,255,255$661,187,255,255,255$663,187,0,0,0$664,187,0,0,0$665,187,0,0,0$666,187,255,255,255$667,187,255,255,255$668,187,255,255,255$669,187,255,255,255$670,187,255,255,255$672,187,0,0,0$673,187,255,255,255$674,187,255,255,255$675,187,255,255,255$676,187,255,255,255$677,187,255,255,255$679,187,0,0,0$680,187,0,0,0$682,187,255,255,255$683,187,255,255,255$685,187,0,0,0$686,187,0,0,0$687,187,0,0,0$688,187,0,0,0$689,187,0,0,0$691,187,255,255,255$692,187,255,255,255$694,187,0,0,0$695,187,0,0,0$696,187,0,0,0$697,187,0,0,0$698,187,0,0,0$699,187,255,255,255$700,187,255,255,255$701,187,255,255,255$703,187,0,0,0$607,188,0,0,0$608,188,0,0,0$610,188,255,255,255$611,188,255,255,255$612,188,255,255,255$613,188,255,255,255$614,188,255,255,255$615,188,255,255,255$616,188,255,255,255$617,188,255,255,255$618,188,255,255,255$619,188,255,255,255$620,188,255,255,255$621,188,255,255,255$622,188,255,255,255$623,188,255,255,255$624,188,255,255,255$625,188,255,255,255$626,188,255,255,255$627,188,255,255,255$628,188,255,255,255$629,188,255,255,255$631,188,0,0,0$632,188,0,0,0$634,188,255,255,255$635,188,255,255,255$636,188,255,255,255$638,188,0,0,0$639,188,0,0,0$640,188,0,0,0$641,188,0,0,0$642,188,0,0,0$643,188,0,0,0$644,188,255,255,255$645,188,255,255,255$646,188,255,255,255$648,188,0,0,0$649,188,255,255,255$650,188,255,255,255$651,188,255,255,255$652,188,0,0,0$653,188,0,0,0$654,188,0,0,0$655,188,0,0,0$656,188,0,0,0$658,188,255,255,255$659,188,255,255,255$660,188,255,255,255$662,188,0,0,0$663,188,0,0,0$664,188,0,0,0$665,188,0,0,0$668,188,255,255,255$669,188,255,255,255$670,188,255,255,255$672,188,0,0,0$673,188,0,0,0$675,188,255,255,255$676,188,255,255,255$677,188,255,255,255$679,188,0,0,0$680,188,0,0,0$682,188,255,255,255$683,188,255,255,255$684,188,255,255,255$685,188,255,255,255$686,188,255,255,255$687,188,255,255,255$688,188,255,255,255$689,188,255,255,255$690,188,255,255,255$691,188,255,255,255$692,188,255,255,255$693,188,255,255,255$694,188,255,255,255$695,188,255,255,255$696,188,255,255,255$697,188,255,255,255$698,188,255,255,255$699,188,255,255,255$700,188,255,255,255$701,188,255,255,255$703,188,0,0,0$607,189,0,0,0$608,189,0,0,0$618,189,255,255,255$619,189,255,255,255$620,189,255,255,255$621,189,255,255,255$630,189,0,0,0$631,189,0,0,0$632,189,0,0,0$633,189,255,255,255$634,189,255,255,255$635,189,255,255,255$636,189,255,255,255$642,189,0,0,0$643,189,0,0,0$644,189,255,255,255$645,189,255,255,255$646,189,255,255,255$648,189,0,0,0$649,189,255,255,255$650,189,255,255,255$651,189,255,255,255$652,189,0,0,0$653,189,0,0,0$654,189,0,0,0$655,189,0,0,0$656,189,0,0,0$657,189,0,0,0$658,189,0,0,0$659,189,0,0,0$660,189,0,0,0$661,189,0,0,0$662,189,0,0,0$663,189,0,0,0$664,189,0,0,0$665,189,0,0,0$667,189,255,255,255$668,189,255,255,255$670,189,0,0,0$671,189,0,0,0$672,189,0,0,0$673,189,0,0,0$674,189,0,0,0$675,189,0,0,0$676,189,0,0,0$677,189,0,0,0$678,189,0,0,0$679,189,0,0,0$680,189,0,0,0$682,189,255,255,255$683,189,255,255,255$684,189,255,255,255$685,189,255,255,255$686,189,255,255,255$687,189,255,255,255$688,189,255,255,255$689,189,255,255,255$690,189,255,255,255$691,189,255,255,255$692,189,255,255,255$693,189,255,255,255$694,189,255,255,255$695,189,255,255,255$696,189,255,255,255$697,189,255,255,255$698,189,255,255,255$699,189,255,255,255$700,189,255,255,255$701,189,255,255,255$703,189,0,0,0$607,190,0,0,0$608,190,0,0,0$609,190,0,0,0$610,190,0,0,0$611,190,0,0,0$612,190,0,0,0$617,190,0,0,0$618,190,255,255,255$619,190,255,255,255$620,190,255,255,255$622,190,0,0,0$627,190,0,0,0$628,190,0,0,0$629,190,0,0,0$630,190,0,0,0$631,190,0,0,0$632,190,0,0,0$633,190,255,255,255$634,190,255,255,255$635,190,255,255,255$636,190,255,255,255$637,190,255,255,255$638,190,255,255,255$639,190,255,255,255$640,190,255,255,255$642,190,0,0,0$643,190,0,0,0$644,190,255,255,255$645,190,255,255,255$646,190,255,255,255$647,190,0,0,0$648,190,0,0,0$649,190,255,255,255$650,190,255,255,255$651,190,255,255,255$652,190,0,0,0$653,190,0,0,0$654,190,0,0,0$655,190,0,0,0$656,190,0,0,0$658,190,255,255,255$659,190,255,255,255$660,190,255,255,255$661,190,255,255,255$662,190,255,255,255$663,190,255,255,255$664,190,255,255,255$665,190,255,255,255$666,190,255,255,255$667,190,255,255,255$668,190,255,255,255$669,190,255,255,255$670,190,255,255,255$671,190,255,255,255$672,190,255,255,255$673,190,255,255,255$674,190,255,255,255$675,190,255,255,255$676,190,255,255,255$677,190,255,255,255$679,190,0,0,0$680,190,0,0,0$690,190,255,255,255$691,190,255,255,255$692,190,255,255,255$693,190,255,255,255$702,190,0,0,0$703,190,0,0,0$608,191,0,0,0$609,191,0,0,0$610,191,0,0,0$611,191,0,0,0$612,191,0,0,0$613,191,255,255,255$614,191,255,255,255$615,191,255,255,255$617,191,0,0,0$618,191,255,255,255$619,191,255,255,255$620,191,255,255,255$622,191,0,0,0$624,191,255,255,255$625,191,255,255,255$626,191,255,255,255$627,191,0,0,0$628,191,0,0,0$629,191,0,0,0$630,191,0,0,0$631,191,0,0,0$632,191,0,0,0$633,191,255,255,255$634,191,255,255,255$635,191,255,255,255$636,191,255,255,255$637,191,255,255,255$638,191,255,255,255$639,191,255,255,255$640,191,255,255,255$642,191,0,0,0$644,191,255,255,255$645,191,255,255,255$646,191,255,255,255$647,191,0,0,0$648,191,0,0,0$649,191,255,255,255$650,191,255,255,255$651,191,255,255,255$652,191,0,0,0$653,191,0,0,0$654,191,0,0,0$655,191,0,0,0$656,191,0,0,0$658,191,255,255,255$659,191,255,255,255$660,191,255,255,255$661,191,255,255,255$662,191,255,255,255$663,191,255,255,255$664,191,255,255,255$665,191,255,255,255$666,191,255,255,255$667,191,255,255,255$668,191,255,255,255$669,191,255,255,255$670,191,255,255,255$671,191,255,255,255$672,191,255,255,255$673,191,255,255,255$674,191,255,255,255$675,191,255,255,255$676,191,255,255,255$677,191,255,255,255$679,191,0,0,0$680,191,0,0,0$681,191,0,0,0$682,191,0,0,0$683,191,0,0,0$684,191,0,0,0$685,191,0,0,0$686,191,0,0,0$687,191,0,0,0$688,191,0,0,0$689,191,0,0,0$691,191,255,255,255$692,191,255,255,255$694,191,0,0,0$695,191,0,0,0$696,191,0,0,0$697,191,0,0,0$698,191,0,0,0$699,191,0,0,0$700,191,0,0,0$701,191,0,0,0$702,191,0,0,0$703,191,0,0,0$609,192,0,0,0$610,192,0,0,0$611,192,0,0,0$613,192,255,255,255$614,192,255,255,255$615,192,255,255,255$617,192,0,0,0$618,192,255,255,255$619,192,255,255,255$620,192,255,255,255$622,192,0,0,0$624,192,255,255,255$625,192,255,255,255$626,192,255,255,255$628,192,0,0,0$629,192,0,0,0$631,192,0,0,0$632,192,0,0,0$642,192,0,0,0$644,192,255,255,255$645,192,255,255,255$647,192,0,0,0$648,192,0,0,0$649,192,255,255,255$650,192,255,255,255$651,192,255,255,255$652,192,0,0,0$653,192,0,0,0$654,192,0,0,0$655,192,0,0,0$656,192,0,0,0$667,192,255,255,255$668,192,255,255,255$669,192,255,255,255$679,192,0,0,0$680,192,0,0,0$691,192,255,255,255$692,192,255,255,255$703,192,0,0,0$608,193,0,0,0$609,193,0,0,0$610,193,0,0,0$611,193,0,0,0$613,193,255,255,255$614,193,255,255,255$616,193,0,0,0$617,193,0,0,0$619,193,255,255,255$620,193,255,255,255$622,193,0,0,0$623,193,0,0,0$624,193,255,255,255$625,193,255,255,255$626,193,255,255,255$628,193,0,0,0$629,193,0,0,0$630,193,0,0,0$631,193,0,0,0$632,193,0,0,0$633,193,0,0,0$634,193,0,0,0$635,193,0,0,0$636,193,0,0,0$637,193,0,0,0$638,193,0,0,0$639,193,0,0,0$640,193,0,0,0$641,193,0,0,0$642,193,0,0,0$644,193,255,255,255$645,193,255,255,255$647,193,0,0,0$648,193,0,0,0$649,193,255,255,255$650,193,255,255,255$651,193,255,255,255$652,193,0,0,0$653,193,0,0,0$654,193,0,0,0$655,193,0,0,0$656,193,0,0,0$657,193,0,0,0$658,193,0,0,0$659,193,0,0,0$660,193,0,0,0$662,193,255,255,255$663,193,255,255,255$664,193,255,255,255$667,193,255,255,255$668,193,255,255,255$670,193,0,0,0$671,193,255,255,255$672,193,255,255,255$673,193,255,255,255$674,193,255,255,255$675,193,0,0,0$676,193,0,0,0$677,193,0,0,0$678,193,0,0,0$679,193,0,0,0$680,193,0,0,0$682,193,255,255,255$683,193,255,255,255$684,193,255,255,255$685,193,255,255,255$686,193,255,255,255$687,193,255,255,255$688,193,255,255,255$689,193,255,255,255$690,193,255,255,255$691,193,255,255,255$692,193,255,255,255$693,193,255,255,255$694,193,255,255,255$695,193,255,255,255$696,193,255,255,255$697,193,255,255,255$698,193,255,255,255$699,193,255,255,255$700,193,255,255,255$701,193,255,255,255$703,193,0,0,0$607,194,0,0,0$608,194,0,0,0$613,194,255,255,255$614,194,255,255,255$616,194,0,0,0$617,194,0,0,0$619,194,255,255,255$620,194,255,255,255$622,194,0,0,0$623,194,0,0,0$625,194,255,255,255$626,194,255,255,255$628,194,0,0,0$629,194,0,0,0$630,194,0,0,0$631,194,0,0,0$632,194,0,0,0$633,194,0,0,0$634,194,0,0,0$635,194,0,0,0$636,194,0,0,0$637,194,0,0,0$638,194,0,0,0$639,194,0,0,0$640,194,0,0,0$641,194,0,0,0$644,194,255,255,255$645,194,255,255,255$647,194,0,0,0$648,194,0,0,0$649,194,255,255,255$651,194,255,255,255$655,194,0,0,0$656,194,0,0,0$657,194,0,0,0$658,194,0,0,0$659,194,0,0,0$662,194,255,255,255$663,194,255,255,255$665,194,0,0,0$667,194,255,255,255$668,194,255,255,255$670,194,0,0,0$672,194,255,255,255$674,194,255,255,255$676,194,0,0,0$677,194,0,0,0$678,194,0,0,0$679,194,0,0,0$680,194,0,0,0$682,194,255,255,255$683,194,255,255,255$684,194,255,255,255$685,194,255,255,255$686,194,255,255,255$687,194,255,255,255$688,194,255,255,255$689,194,255,255,255$690,194,255,255,255$693,194,255,255,255$694,194,255,255,255$695,194,255,255,255$696,194,255,255,255$697,194,255,255,255$698,194,255,255,255$699,194,255,255,255$700,194,255,255,255$701,194,255,255,255$703,194,0,0,0$607,195,0,0,0$608,195,0,0,0$610,195,255,255,255$614,195,255,255,255$616,195,0,0,0$617,195,0,0,0$622,195,0,0,0$623,195,0,0,0$629,195,255,255,255$631,195,0,0,0$632,195,0,0,0$633,195,255,255,255$634,195,255,255,255$635,195,255,255,255$636,195,255,255,255$637,195,255,255,255$638,195,255,255,255$639,195,255,255,255$640,195,255,255,255$642,195,255,255,255$645,195,255,255,255$647,195,0,0,0$648,195,0,0,0$649,195,255,255,255$654,195,255,255,255$655,195,0,0,0$656,195,0,0,0$665,195,0,0,0$670,195,0,0,0$671,195,0,0,0$679,195,0,0,0$680,195,0,0,0$703,195,0,0,0$607,196,0,0,0$608,196,0,0,0$615,196,0,0,0$616,196,0,0,0$617,196,0,0,0$622,196,0,0,0$623,196,0,0,0$624,196,0,0,0$631,196,0,0,0$632,196,0,0,0$633,196,255,255,255$646,196,0,0,0$647,196,0,0,0$648,196,0,0,0$654,196,255,255,255$655,196,0,0,0$656,196,0,0,0$658,196,255,255,255$664,196,0,0,0$665,196,0,0,0$670,196,0,0,0$671,196,0,0,0$673,196,255,255,255$679,196,0,0,0$680,196,0,0,0$681,196,0,0,0$682,196,0,0,0$683,196,0,0,0$684,196,0,0,0$685,196,0,0,0$686,196,0,0,0$687,196,0,0,0$688,196,0,0,0$689,196,0,0,0$694,196,0,0,0$695,196,0,0,0$696,196,0,0,0$697,196,0,0,0$698,196,0,0,0$699,196,0,0,0$700,196,0,0,0$701,196,0,0,0$702,196,0,0,0$703,196,0,0,0$607,197,0,0,0$608,197,0,0,0$615,197,0,0,0$616,197,0,0,0$617,197,0,0,0$622,197,0,0,0$623,197,0,0,0$624,197,0,0,0$631,197,0,0,0$632,197,0,0,0$646,197,0,0,0$647,197,0,0,0$648,197,0,0,0$655,197,0,0,0$656,197,0,0,0$664,197,0,0,0$665,197,0,0,0$670,197,0,0,0$671,197,0,0,0$672,197,0,0,0$679,197,0,0,0$680,197,0,0,0$681,197,0,0,0$682,197,0,0,0$683,197,0,0,0$684,197,0,0,0$685,197,0,0,0$686,197,0,0,0$687,197,0,0,0$688,197,0,0,0$689,197,0,0,0$694,197,0,0,0$695,197,0,0,0$696,197,0,0,0$697,197,0,0,0$698,197,0,0,0$699,197,0,0,0$700,197,0,0,0$701,197,0,0,0$702,197,0,0,0$607,198,0,0,0$608,198,0,0,0$609,198,0,0,0$610,198,0,0,0$611,198,0,0,0$612,198,0,0,0$613,198,0,0,0$614,198,0,0,0$615,198,0,0,0$616,198,0,0,0$617,198,0,0,0$618,198,0,0,0$619,198,0,0,0$620,198,0,0,0$621,198,0,0,0$622,198,0,0,0$623,198,0,0,0$624,198,0,0,0$625,198,0,0,0$626,198,0,0,0$627,198,0,0,0$628,198,0,0,0$629,198,0,0,0$630,198,0,0,0$631,198,0,0,0$632,198,0,0,0$633,198,0,0,0$634,198,0,0,0$635,198,0,0,0$636,198,0,0,0$637,198,0,0,0$638,198,0,0,0$639,198,0,0,0$640,198,0,0,0$641,198,0,0,0$642,198,0,0,0$643,198,0,0,0$644,198,0,0,0$645,198,0,0,0$646,198,0,0,0$647,198,0,0,0$648,198,0,0,0$649,198,0,0,0$650,198,0,0,0$651,198,0,0,0$652,198,0,0,0$653,198,0,0,0$654,198,0,0,0$655,198,0,0,0$656,198,0,0,0$657,198,0,0,0$658,198,0,0,0$659,198,0,0,0$660,198,0,0,0$661,198,0,0,0$662,198,0,0,0$663,198,0,0,0$664,198,0,0,0$665,198,0,0,0$666,198,0,0,0$667,198,0,0,0$668,198,0,0,0$669,198,0,0,0$670,198,0,0,0$671,198,0,0,0$672,198,0,0,0$673,198,0,0,0$674,198,0,0,0$675,198,0,0,0$676,198,0,0,0$677,198,0,0,0$678,198,0,0,0$679,198,0,0,0$680,198,0,0,0$688,198,0,0,0$689,198,0,0,0$690,198,0,0,0$691,198,0,0,0$692,198,0,0,0$693,198,0,0,0$694,198,0,0,0$695,198,0,0,0$608,199,0,0,0$609,199,0,0,0$610,199,0,0,0$611,199,0,0,0$612,199,0,0,0$613,199,0,0,0$614,199,0,0,0$615,199,0,0,0$617,199,0,0,0$618,199,0,0,0$619,199,0,0,0$620,199,0,0,0$621,199,0,0,0$622,199,0,0,0$625,199,0,0,0$626,199,0,0,0$627,199,0,0,0$628,199,0,0,0$629,199,0,0,0$630,199,0,0,0$631,199,0,0,0$632,199,0,0,0$633,199,0,0,0$634,199,0,0,0$635,199,0,0,0$636,199,0,0,0$637,199,0,0,0$638,199,0,0,0$639,199,0,0,0$640,199,0,0,0$641,199,0,0,0$642,199,0,0,0$643,199,0,0,0$644,199,0,0,0$645,199,0,0,0$649,199,0,0,0$650,199,0,0,0$651,199,0,0,0$652,199,0,0,0$653,199,0,0,0$654,199,0,0,0$655,199,0,0,0$656,199,0,0,0$657,199,0,0,0$658,199,0,0,0$659,199,0,0,0$660,199,0,0,0$661,199,0,0,0$662,199,0,0,0$663,199,0,0,0$665,199,0,0,0$666,199,0,0,0$667,199,0,0,0$668,199,0,0,0$669,199,0,0,0$670,199,0,0,0$673,199,0,0,0$674,199,0,0,0$675,199,0,0,0$676,199,0,0,0$677,199,0,0,0$678,199,0,0,0$679,199,0,0,0$680,199,0,0,0$689,199,0,0,0$690,199,0,0,0$691,199,0,0,0$692,199,0,0,0$693,199,0,0,0$694,199,0,0,0$610,200,0,0,0$651,200,0,0,0$652,200,0,0,0$656,200,0,0,0$660,200,0,0,0$667,200,0,0,0$668,200,0,0,0$669,200,0,0,0$670,200,0,0,0$674,200,0,0,0$675,200,0,0,0$676,200,0,0,0$677,200,0,0,0$678,200,0,0,0$679,200,0,0,0$680,200,0,0,0$681,200,0,0,0$645,201,0,0,0$646,201,0,0,0$651,201,0,0,0$652,201,0,0,0$656,201,0,0,0$662,201,0,0,0$681,201,0,0,0$682,201,0,0,0$687,201,0,0,0$688,201,0,0,0$627,202,0,0,0$628,202,0,0,0$644,202,0,0,0$650,202,0,0,0$681,202,0,0,0$682,202,0,0,0");
        public static bool IsOpenSystemPanel(ZTRectangle gameRect)
        {
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            ZTRectangle position = ZTRectangle.Empty;
            return CVHelper.FindColorArray(out position, image, SystemPanelTitle, gameRect);
            return CVHelper.FindColorArrayForThreshold(out position, image, SystemPanelTitle, gameRect);
        }
src/RichCreator.Utility/CV/SkillCVHelper.cs
@@ -22,12 +22,12 @@
        /// <summary>
        /// 技能窗标题文字
        /// </summary>
        private static ColorArray skillTitleText = ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f, "646,119,255,255,255$645,111,255,255,255$647,111,255,255,255$648,111,255,255,255$647,108,255,255,255$647,109,255,255,255$647,110,255,255,255$647,111,255,255,255$645,115,255,255,255$646,115,255,255,255$647,115,255,255,255$647,119,255,255,255$649,119,255,255,255$650,119,255,255,255$654,119,255,255,255$655,119,255,255,255$658,119,255,255,255$660,119,255,255,255$661,119,255,255,255$665,119,255,255,255$667,119,255,255,255$671,119,255,255,255$673,119,255,255,255$674,119,255,255,255$675,119,255,255,255$676,119,255,255,255$677,119,255,255,255$678,115,255,255,255$676,115,255,255,255$674,115,255,255,255$671,115,255,255,255$671,114,255,255,255$671,113,255,255,255$671,112,255,255,255$671,111,255,255,255$671,110,255,255,255$671,108,255,255,255$674,108,255,255,255$678,108,255,255,255$666,108,255,255,255$663,108,255,255,255$660,110,255,255,255$659,110,255,255,255$658,110,255,255,255$654,110,255,255,255$651,110,255,255,255$650,110,255,255,255$652,110,255,255,255$652,113,255,255,255");
        private static ColorArray skillTitleTextWhite = ColorArray.FromHsvFloatString(0.002f,0.002f,0.002f, "633,93,0,0,0$619,93,0,0,0$620,93,255,255,255$621,93,0,0,0$624,93,0,0,0$625,93,255,255,255$626,93,0,0,0$631,93,0,0,0$632,93,255,255,255$635,93,0,0,0$636,93,255,255,255$637,93,0,0,0$638,93,0,0,0$639,93,255,255,255$640,93,0,0,0$643,93,0,0,0$644,93,255,255,255$645,93,0,0,0$646,93,0,0,0$647,93,255,255,255$648,93,0,0,0$650,93,0,0,0$651,93,255,255,255$652,93,0,0,0$652,100,0,0,0$651,100,255,255,255$648,100,255,255,255$647,100,255,255,255$646,100,0,0,0$645,100,0,0,0$644,100,255,255,255$643,100,0,0,0$642,100,255,255,255$641,100,0,0,0$640,100,0,0,0$639,100,255,255,255$638,100,0,0,0$637,100,0,0,0$636,100,255,255,255$635,100,0,0,0$634,100,255,255,255$633,100,0,0,0$632,100,0,0,0$631,100,255,255,255$630,100,0,0,0$628,100,0,0,0$627,100,255,255,255$626,100,0,0,0$624,100,0,0,0$623,100,255,255,255$622,100,0,0,0$621,100,0,0,0$620,100,255,255,255$619,100,255,255,255$618,100,255,255,255$617,100,0,0,0$618,104,0,0,0$619,104,255,255,255$620,104,255,255,255$621,104,0,0,0$622,104,255,255,255$623,104,255,255,255$624,104,0,0,0$624,103,255,255,255$625,103,0,0,0$626,103,255,255,255$627,103,0,0,0$630,103,0,0,0$631,103,255,255,255$632,103,0,0,0$633,103,0,0,0$634,103,255,255,255$635,103,0,0,0$636,103,255,255,255$644,103,255,255,255$645,103,0,0,0$645,104,0,0,0$646,104,255,255,255$648,104,255,255,255$650,104,255,255,255$652,104,255,255,255$653,104,0,0,0");
        private static ColorArray skillTitleTextGray = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "633,103,0,0,0$619,93,0,0,0$620,93,170,170,170$621,93,0,0,0$624,93,0,0,0$625,93,170,170,170$626,93,0,0,0$631,93,0,0,0$632,93,170,170,170$633,93,0,0,0$635,93,0,0,0$636,93,170,170,170$637,93,0,0,0$638,93,0,0,0$639,93,170,170,170$640,93,0,0,0$643,93,0,0,0$644,93,170,170,170$645,93,0,0,0$646,93,0,0,0$647,93,170,170,170$648,93,0,0,0$650,93,0,0,0$651,93,170,170,170$652,93,0,0,0$652,100,0,0,0$651,100,170,170,170$649,100,170,170,170$647,100,170,170,170$646,100,0,0,0$645,100,0,0,0$644,100,170,170,170$643,100,0,0,0$642,100,170,170,170$641,100,0,0,0$640,100,0,0,0$639,100,170,170,170$638,100,0,0,0$637,100,0,0,0$636,100,170,170,170$635,100,0,0,0$634,100,170,170,170$633,100,0,0,0$632,100,0,0,0$631,100,170,170,170$630,100,0,0,0$628,100,0,0,0$627,100,170,170,170$618,104,0,0,0$619,104,170,170,170$620,104,170,170,170$621,104,0,0,0$622,104,170,170,170$623,104,170,170,170$624,104,0,0,0$626,104,0,0,0$627,104,170,170,170$628,104,170,170,170$630,104,0,0,0$631,104,170,170,170$632,104,0,0,0$633,104,170,170,170$634,103,170,170,170$635,103,0,0,0$636,103,170,170,170$637,103,0,0,0$638,103,0,0,0$638,104,170,170,170$640,104,170,170,170$641,104,0,0,0$643,104,0,0,0$644,104,170,170,170$645,104,0,0,0$646,104,170,170,170$648,104,170,170,170$650,104,170,170,170$652,104,170,170,170$653,104,0,0,0");
        /// <summary>
        /// lv文字
        /// </summary>
        private static ColorArray lvText = ColorArray.FromHsvFloatString(0.01f,0.01f,0.01f, "278,261,153,153,153$279,256,145,145,145$279,255,153,153,153$278,256,153,153,153$278,257,153,153,153$278,258,153,153,153$277,258,153,153,153$277,259,153,153,153$277,260,153,153,153$277,261,153,153,153$279,261,153,153,153$280,261,153,153,153$285,261,153,153,153$285,258,153,153,153$285,257,153,153,153$285,262,153,153,153$286,261,153,153,153$287,260,153,153,153$288,259,153,153,153$289,258,145,145,145$289,257,153,153,153");
        private static ColorArray lvText = ColorArray.FromThresholdString(120, "251,238,0,0,0$247,238,0,0,0$248,238,0,0,0$249,238,0,0,0$250,238,0,0,0$252,238,0,0,0$253,238,0,0,0$254,238,0,0,0$255,238,0,0,0$256,238,0,0,0$257,238,0,0,0$258,238,0,0,0$259,238,0,0,0$260,238,0,0,0$261,238,0,0,0$262,238,0,0,0$263,238,0,0,0$264,238,0,0,0$265,238,0,0,0$266,238,0,0,0$247,239,0,0,0$248,239,0,0,0$249,239,0,0,0$250,239,0,0,0$251,239,0,0,0$252,239,0,0,0$253,239,0,0,0$254,239,0,0,0$255,239,0,0,0$256,239,0,0,0$257,239,0,0,0$258,239,0,0,0$259,239,0,0,0$260,239,0,0,0$261,239,0,0,0$262,239,0,0,0$263,239,0,0,0$264,239,0,0,0$265,239,0,0,0$266,239,0,0,0$247,240,0,0,0$248,240,0,0,0$249,240,0,0,0$250,240,0,0,0$252,240,255,255,255$254,240,0,0,0$255,240,0,0,0$256,240,0,0,0$257,240,0,0,0$258,240,0,0,0$259,240,0,0,0$260,240,0,0,0$261,240,0,0,0$262,240,0,0,0$263,240,0,0,0$264,240,0,0,0$265,240,0,0,0$266,240,0,0,0$247,241,0,0,0$248,241,0,0,0$249,241,0,0,0$251,241,255,255,255$254,241,0,0,0$255,241,0,0,0$256,241,0,0,0$257,241,0,0,0$258,241,0,0,0$259,241,0,0,0$260,241,0,0,0$261,241,0,0,0$262,241,0,0,0$263,241,0,0,0$264,241,0,0,0$265,241,0,0,0$266,241,0,0,0$247,242,0,0,0$248,242,0,0,0$249,242,0,0,0$251,242,255,255,255$253,242,0,0,0$254,242,0,0,0$255,242,0,0,0$256,242,0,0,0$258,242,255,255,255$260,242,0,0,0$262,242,255,255,255$265,242,0,0,0$266,242,0,0,0$247,243,0,0,0$248,243,0,0,0$250,243,255,255,255$251,243,255,255,255$253,243,0,0,0$254,243,0,0,0$255,243,0,0,0$256,243,0,0,0$258,243,255,255,255$264,243,0,0,0$265,243,0,0,0$266,243,0,0,0$247,244,0,0,0$248,244,0,0,0$250,244,255,255,255$252,244,0,0,0$253,244,0,0,0$254,244,0,0,0$255,244,0,0,0$256,244,0,0,0$258,244,255,255,255$261,244,255,255,255$263,244,0,0,0$264,244,0,0,0$265,244,0,0,0$266,244,0,0,0$247,245,0,0,0$248,245,0,0,0$250,245,255,255,255$252,245,0,0,0$253,245,0,0,0$254,245,0,0,0$255,245,0,0,0$256,245,0,0,0$258,245,255,255,255$260,245,255,255,255$262,245,0,0,0$263,245,0,0,0$264,245,0,0,0$265,245,0,0,0$266,245,0,0,0$247,246,0,0,0$249,246,255,255,255$250,246,255,255,255$251,246,255,255,255$252,246,255,255,255$253,246,255,255,255$255,246,0,0,0$256,246,0,0,0$258,246,255,255,255$259,246,255,255,255$261,246,0,0,0$262,246,0,0,0$263,246,0,0,0$265,246,255,255,255$247,247,0,0,0$248,247,0,0,0$250,247,255,255,255$251,247,255,255,255$252,247,255,255,255$254,247,0,0,0$255,247,0,0,0$256,247,0,0,0$258,247,255,255,255$260,247,0,0,0$261,247,0,0,0$262,247,0,0,0$266,247,0,0,0$247,248,0,0,0$248,248,0,0,0$249,248,0,0,0$250,248,0,0,0$251,248,0,0,0$252,248,0,0,0$253,248,0,0,0$254,248,0,0,0$255,248,0,0,0$256,248,0,0,0$257,248,0,0,0$258,248,0,0,0$259,248,0,0,0$260,248,0,0,0$261,248,0,0,0$262,248,0,0,0$263,248,0,0,0$264,248,0,0,0$265,248,0,0,0$266,248,0,0,0$247,249,0,0,0$248,249,0,0,0$249,249,0,0,0$250,249,0,0,0$251,249,0,0,0$252,249,0,0,0$253,249,0,0,0$254,249,0,0,0$255,249,0,0,0$256,249,0,0,0$257,249,0,0,0$258,249,0,0,0$259,249,0,0,0$260,249,0,0,0$261,249,0,0,0$262,249,0,0,0$263,249,0,0,0$264,249,0,0,0$265,249,0,0,0$266,249,0,0,0$247,250,0,0,0$248,250,0,0,0$249,250,0,0,0$250,250,0,0,0$251,250,0,0,0$252,250,0,0,0$253,250,0,0,0$254,250,0,0,0$255,250,0,0,0$256,250,0,0,0$257,250,0,0,0$258,250,0,0,0$259,250,0,0,0$260,250,0,0,0$261,250,0,0,0$262,250,0,0,0$263,250,0,0,0$264,250,0,0,0$265,250,0,0,0$266,250,0,0,0");
        /// <summary>
        /// 向上滚动键
@@ -55,12 +55,15 @@
            titleRect = lvRect = upKeyRect = downKeyRect = ZTRectangle.Empty;
            Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
            
            if (!CVHelper.FindColorArray(out titleRect, image, skillTitleText, gameRect))
            if (!CVHelper.FindColorArray(out titleRect, image, skillTitleTextWhite, gameRect))
            {
                return false;
                if (!CVHelper.FindColorArray(out titleRect, image, skillTitleTextGray, gameRect))
                {
                    return false;
                }
            }
            
            if (!CVHelper.FindColorArray(out lvRect, image, lvText, gameRect))
            if (!CVHelper.FindColorArrayForThreshold(out lvRect, image, lvText, gameRect))
            {
                return false;
            }
@@ -132,12 +135,12 @@
        /// <summary>
        /// 加技能时向右的红色按钮
        /// </summary>
        private static ColorArray rightRedButton = ColorArray.FromHsvFloatString(0.002f, 0.02f, 0.02f, "515,264,255,34,34$515,259,255,51,51$515,260,255,34,34$515,261,255,34,34$515,262,255,34,34$515,263,255,34,34$515,265,255,34,34$516,265,255,34,34$516,261,255,34,34$516,260,255,34,34$517,261,255,34,34$517,262,255,34,34$517,264,255,34,34$518,262,255,34,34$518,263,255,34,34$521,259,255,51,51$521,260,255,34,34$521,266,255,51,51$521,265,255,34,34$521,264,255,34,34$521,263,255,34,34$522,264,255,34,34$522,265,255,34,34$522,260,255,34,34$522,261,255,34,34$523,262,255,34,34$523,261,255,34,34$523,264,255,34,34$523,263,255,34,34$524,263,255,34,34$524,262,255,34,34");
        private static ColorArray rightRedButton = ColorArray.FromHsvFloatString(0.002f, 0.02f, 0.02f, "573,247,255,42,42$570,244,255,50,50$570,245,255,41,41$571,245,255,42,42$570,246,255,41,41$571,246,255,33,33$572,246,255,42,42$570,247,255,41,41$571,247,255,33,33$572,247,255,33,33$573,248,255,41,41$572,248,255,33,33$571,248,255,33,33$570,248,255,41,41$570,249,255,41,41$571,249,255,33,33$572,249,255,42,42$571,250,255,42,42$570,250,255,41,41$570,251,255,50,50$576,251,255,50,50$576,250,255,41,41$577,250,255,42,42$576,249,255,41,41$577,249,255,33,33$578,249,255,42,42$577,248,255,33,33$578,248,255,33,33$579,248,255,41,41$579,247,255,42,42$578,247,255,33,33$577,247,255,33,33$576,247,255,41,41$576,246,255,41,41$577,246,255,33,33$578,246,255,42,42$577,245,255,42,42$576,245,255,41,41$576,244,255,50,50");
        /// <summary>
        /// 加技能时向右的灰色按钮
        /// </summary>
        private static ColorArray grayRedButton = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "516,261,153,153,153$515,259,153,153,153$515,260,153,153,153$515,262,153,153,153$515,263,153,153,153$515,265,153,153,153$515,266,153,153,153$516,265,153,153,153$516,264,153,153,153$516,262,153,153,153$516,260,153,153,153$517,261,153,153,153$517,262,153,153,153$517,263,153,153,153$517,264,153,153,153$518,263,153,153,153$518,262,153,153,153$521,259,153,153,153$521,260,153,153,153$521,261,153,153,153$521,262,153,153,153$521,263,153,153,153$521,264,153,153,153$521,265,153,153,153$521,266,153,153,153$522,265,153,153,153$522,264,153,153,153$522,261,153,153,153$522,260,153,153,153$523,261,153,153,153$523,262,153,153,153$523,263,153,153,153$523,264,153,153,153$524,263,153,153,153$524,262,153,153,153");
        private static ColorArray grayRedButton = ColorArray.FromHsvFloatString(0.002f, 0.002f, 0.002f, "571,250,148,148,148$570,244,152,152,152$570,245,148,148,148$570,246,148,148,148$570,247,148,148,148$570,248,148,148,148$570,249,148,148,148$570,250,148,148,148$570,251,152,152,152$572,249,148,148,148$573,248,148,148,148$573,247,148,148,148$572,246,148,148,148$571,245,148,148,148$576,244,152,152,152$576,245,148,148,148$576,246,148,148,148$576,247,148,148,148$576,248,148,148,148$576,249,148,148,148$576,250,148,148,148$576,251,152,152,152$577,250,148,148,148$578,249,148,148,148$579,248,148,148,148$579,247,148,148,148$578,246,148,148,148$577,245,148,148,148");
        
        /// <summary>
        /// 是否已经选中技能
src/RichCreator/Jobs/DNFJob.cs
@@ -16,6 +16,7 @@
using System.Threading;
using System.Threading.Tasks;
using ZTImage.Configuration;
using RichCreator.StateMachines;
namespace RichCreator.Jobs
{
@@ -51,19 +52,17 @@
        private Int32 runningStep = 0;
        public override bool DoWork(out bool tryAgain,CancellationToken cancellationToken, Int32 runningStep)
        public override ZTResult Do(CancellationToken cancellationToken, Int32 runningStep)
        {
            this.runningStep = runningStep;
            tryAgain = true;
            RunningModel runningModel = ConfigHelper.GetInstance<RunningModel>();
            RichCreatorConfig config = ConfigHelper.GetInstance<RichCreatorConfig>();
            bool result = false;
            ZTRectangle startGameButtonRect = ZTRectangle.Empty;
            if (runningStep <= RunningStep.SelectRole)
            {
                //查找游戏窗口
                result = FuncUtils.TimeoutCancelableWrap(config.StartWaitSecond * 1000, cancellationToken, () =>
                bool result = FuncUtils.TimeoutCancelableWrap(config.StartWaitSecond * 1000, cancellationToken, () =>
                {
                    return DnfCVHelper.IsSelectRoleWindow( out startGameButtonRect);
                });
@@ -71,7 +70,7 @@
                if (!result)
                {
                    G.Instance.InfoWriter("启动DNF游戏失败");
                    return false;
                    return ZTResult.Failed;
                }
                G.Instance.InfoWriter($"已进入DNF角色界面,{startGameButtonRect.ToString()}");
            }
@@ -79,6 +78,7 @@
            WindowUtils.GetDnfRect(out this.GameRect);
            //循环刷所有角色
            ZTResult playResult = ZTResult.Success;
            Int32 roleIndex = runningModel.RoleIndex>0? runningModel.RoleIndex - 1:0;
            for (; roleIndex < config.RoleCount; roleIndex++)
            {
@@ -86,35 +86,23 @@
                if (cancellationToken.IsCancellationRequested)
                {
                    return false;
                    return ZTResult.Cancel;
                }
                DateTime playOneRoleStartTime = DateTime.Now;
                G.Instance.InfoWriter($"Play Role:{roleIndex+1}");
                if (!PlayRole(cancellationToken, roleIndex, startGameButtonRect))
                playResult = PlayRole(cancellationToken, roleIndex, startGameButtonRect);
                if (playResult != ZTResult.Success)
                {
                    G.Instance.InfoWriter("角色刷图失败");
                    break;
                    G.Instance.InfoWriter($"角色刷图失败,第{roleIndex+1}个角色");
                    return playResult;
                }
                Int32 playOneRoleTotalSecond = (Int32)(DateTime.Now - playOneRoleStartTime).TotalSeconds;
                G.Instance.InfoWriter($"角色刷图完成,用时:{(playOneRoleTotalSecond / 60)}分{(playOneRoleTotalSecond % 60)}秒");
            }
            if (roleIndex < config.RoleCount)
            {
                string message = $"刷图失败,第{roleIndex+1}个角色";
                G.Instance.InfoWriter(message);
                return false;
            }
            //按ESC,点退出程序
            if (ExitGame(cancellationToken))
            {
                G.Instance.InfoWriter("退出游戏失败");
                return false;
            }
            RunningModel.UpdateRoleIndex(1);
            return true;
            return ZTResult.Success;
        }
        /// <summary>
@@ -123,10 +111,11 @@
        /// <param name="cancellationToken"></param>
        /// <param name="roleIndex"></param>
        /// <returns></returns>
        private bool PlayRole(CancellationToken cancellationToken, Int32 roleIndex, ZTRectangle startGameButtonRect)
        private ZTResult PlayRole(CancellationToken cancellationToken, Int32 roleIndex, ZTRectangle startGameButtonRect)
        {
            bool result = true;
            Int32 pilaozhi = 1;
            RichCreatorConfig config = ConfigHelper.GetInstance<RichCreatorConfig>();
            if (this.runningStep < RunningStep.War)
            {
                //查找游戏窗口
@@ -138,7 +127,7 @@
                if (!result)
                {
                    G.Instance.InfoWriter("非角色选择界面");
                    return false;
                    return ZTResult.Failed;
                }
                //进入赛丽亚的房间
@@ -146,49 +135,49 @@
                if (!result)
                {
                    G.Instance.InfoWriter("未进入赛丽亚的房间");
                    return false;
                    return ZTResult.Failed;
                }
                G.Instance.InfoWriter("进入赛丽亚的房间");
                //关闭所有弹出窗
                result = CloseAllAlertWindow(cancellationToken, this.GameRect);
                if (!result)
                //频道选择和网络断开重试
                ChannelStateMachine csm = new ChannelStateMachine();
                ZTResult workResult = csm.Work(this.GameRect, config.IsGroup, cancellationToken, 5 * 60 * 1000);
                if (workResult != ZTResult.Success)
                {
                    G.Instance.InfoWriter("关闭所有窗口出现问题");
                    return false;
                    G.Instance.InfoWriter("切换频道没有成功," + workResult);
                    Thread.Sleep(5 * 60 * 1000);
                    return workResult;
                }
                G.Instance.InfoWriter("已关闭所有弹出窗");
                G.Instance.InfoWriter("切换频道成功");
                //查询疲劳值
                pilaozhi = DnfCVHelper.GetPiLaoZhi(this.GameRect);
                G.Instance.InfoWriter("疲劳值:" + pilaozhi);
            }
            
            result = true;
            ZTResult mapResult = ZTResult.Success;
            if (pilaozhi > 0)
            {
                //刷图,并保持在可按esc退出的状态
                MapInfo map = new T();
                result = map.Start(this.GameRect, cancellationToken,this.runningStep);
                mapResult = map.Start(this.GameRect, cancellationToken,this.runningStep);
            }
            runningStep = RunningStep.None;
            if (result)
            if (mapResult==ZTResult.Success)
            {
                //按ESC,退到选角色界面
                if (ReturnToSelectRole(cancellationToken))
                {
                    return true;
                    return ZTResult.Success;
                }
                return false;
                return ZTResult.Failed;
            }
            else
            {
                return false;
            }
            return mapResult;
        }
        /// <summary>
@@ -296,64 +285,5 @@
            G.Instance.InfoWriter("退回选择角色界面失败");
            return false;
        }
        /// <summary>
        /// 退出游戏
        /// </summary>
        /// <param name="cancelToken"></param>
        /// <param name="gameRect"></param>
        /// <returns></returns>
        private bool ExitGame(CancellationToken cancelToken)
        {
            //打开系统菜单
            int counter = 10;
            bool result = false;
            WindowUtils.SetDnfToTop();
            while (counter > 0)
            {
                G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
                bool findPanelResult = FuncUtils.TimeoutCancelableWrap(3000, cancelToken, () =>
                {
                    return DnfCVHelper.IsOpenSystemPanel(this.GameRect);
                });
                if (findPanelResult)
                {
                    result = true;
                    break;
                }
                counter--;
            }
            if (result)
            {
                //点击退出游戏783,505
                G.Instance.InputControl.MoveToAndClick(new ZTPoint(this.GameRect.Start.X + 783, this.GameRect.Start.Y + 505));
                Thread.Sleep(1000);
                ZTRectangle exitOkButtonRect = ZTRectangle.Empty;
                bool findExitPanelResult = FuncUtils.TimeoutCancelableWrap(3000, cancelToken, () =>
                {
                    return DnfCVHelper.FindExitPanelOkButton(out exitOkButtonRect, this.GameRect);
                });
                if (findExitPanelResult)
                {
                    //remove,现在是按查找到的按钮位置来判断的,点击确定按钮 612 379
                    //G.Instance.InputControl.MoveToAndClick(new ZTPoint(this.GameRect.Start.X + 612, this.GameRect.Start.Y + 379));
                    G.Instance.InputControl.MoveToAndClick(exitOkButtonRect.GetCenterPoint());
                    Thread.Sleep(6000);
                    return true;
                }
            }
            return false;
        }
    }
}
src/RichCreator/Jobs/JobBase.cs
@@ -33,6 +33,6 @@
        /// 任务开始执行
        /// </summary>
        /// <returns></returns>
        public abstract bool DoWork(out bool tryAgain,CancellationToken cancellationToken,Int32 isRunning);
        public abstract ZTResult Do(CancellationToken cancellationToken,Int32 isRunning);
    }
}
src/RichCreator/Jobs/JobMonitor.cs
@@ -32,6 +32,8 @@
        private Int32 taskIndex;
        Int32 runningStep = RunningStep.None;
        public JobMonitor(Int32 taskIndex)
        {
            this.config = ConfigHelper.GetInstance<RichCreatorConfig>();
@@ -60,10 +62,14 @@
            this.cancelTokenSource = new CancellationTokenSource();
        }
        /// <summary>
        /// 业务逻辑线程
        /// </summary>
        /// <param name="obj"></param>
        private void MonitorBusinessThread(object obj)
        {
            Int32 accountCount = GetAccountCount();
            Int32 runningStep = RunningStep.GetStep();
            Int32 accountCount = this.config.GetAccountCount();
            runningStep = RunningStep.GetStep();
            G.Instance.InfoWriter("当前步骤:" + runningStep.ToString());
            RunningModel runModel = ConfigHelper.GetInstance<RunningModel>();
            if (runModel.AccountIndex > accountCount)
@@ -72,136 +78,84 @@
                return;
            }
            bool tryAgain = false;
            int accountIndex = runModel.AccountIndex > 0 ? runModel.AccountIndex - 1 : 0;
            ZTResult jobResult = ZTResult.Success;
            for (; accountIndex < accountCount; accountIndex++)
            {
                RunningModel.UpdateAccountIndex(accountIndex+1);
                if (runningStep < RunningStep.SelectRole)
                {
                    string username, password;
                    GetAccount(accountIndex, out username, out password);
                    this.config.GetAccount(accountIndex, out username, out password);
                    this.wegameJob = new WeGameJob(this.config, username, password);
                    if (!this.wegameJob.DoWork(out tryAgain,this.cancelTokenSource.Token, runningStep))
                    jobResult = this.wegameJob.Do(this.cancelTokenSource.Token, runningStep);
                    if (jobResult != ZTResult.Success)
                    {
                        if (G.Instance.CancelConfirm("需要重试吗?", 8000))
                        if (jobResult != ZTResult.Cancel)
                        {
                            if (config.NotificationWechat)
                            if (G.Instance.CancelConfirm("需要重试吗?", 8000))
                            {
                                if (!ServiceMonitor.Instance.NotificationWechat("失败,正在重新尝试"))
                                {
                                    ZTImage.Log.Trace.Error("发送消息失败");
                                }
                                ServiceProvider.Instance.NotificationWechat("失败,正在重新尝试");
                                accountIndex--;
                                ShutdownGameProgram();
                                continue;
                            }
                            accountIndex--;
                            runningStep = RunningStep.None;
                            ProcessUtils.CloseDnf();
                            ProcessUtils.CloseWeGame();
                            continue;
                        }
                        else
                        {
                            break;
                        }
                        break;
                    }
                }
                //设为顶层
                WindowUtils.SetDnfToTop();
                this.dnfJob = GetDNFJob();
                if (this.dnfJob == null)
                jobResult = this.dnfJob.Do(this.cancelTokenSource.Token, runningStep);
                if (jobResult != ZTResult.Success)
                {
                    if (jobResult != ZTResult.Cancel)
                    {
                        if (G.Instance.CancelConfirm("需要重试吗?", 8000))
                        {
                            ServiceProvider.Instance.NotificationWechat("失败,正在重新尝试");
                            accountIndex--;
                            ShutdownGameProgram();
                            continue;
                        }
                    }
                    break;
                }
                if (!this.dnfJob.DoWork(out tryAgain,this.cancelTokenSource.Token, runningStep))
                {
                    if (G.Instance.CancelConfirm("需要重试吗?", 8000))
                    {
                        if (config.NotificationWechat)
                        {
                            if (!ServiceMonitor.Instance.NotificationWechat("失败,正在重新尝试"))
                            {
                                ZTImage.Log.Trace.Error("发送消息失败");
                            }
                        }
                        accountIndex--;
                        runningStep = RunningStep.None;
                        ProcessUtils.CloseDnf();
                        ProcessUtils.CloseWeGame();
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
                runningStep = RunningStep.None;
                ProcessUtils.CloseDnf();
                ProcessUtils.CloseWeGame();
                ShutdownGameProgram();
                Thread.Sleep(5000);
            }
            if (config.NotificationWechat)
            if (jobResult == ZTResult.Success)
            {
                if (!ServiceMonitor.Instance.NotificationWechat("任务完成"))
                {
                    ZTImage.Log.Trace.Error("发送消息失败");
                }
                G.Instance.InfoWriter("任务完成");
                ServiceProvider.Instance.NotificationWechat("任务完成");
                runModel.RoleIndex = 1;
                runModel.AccountIndex = 1;
                ConfigHelper.SetInstance<RunningModel>(runModel);
            }
            runModel.RoleIndex = 1;
            runModel.AccountIndex = 1;
            ConfigHelper.SetInstance<RunningModel>(runModel);
            else
            {
                G.Instance.InfoWriter("任务中止");
            }
            this.Stop();
            G.Instance.StopTaskUI();
            G.Instance.InfoWriter("任务成功完成");
        }
        /// <summary>
        /// 获取配置文件中账号的数量
        /// 关闭游戏程序
        /// </summary>
        /// <returns></returns>
        private Int32 GetAccountCount()
        private void ShutdownGameProgram()
        {
            Int32 accountCount = 0;
            if (!string.IsNullOrEmpty(this.config.UserName1))
            {
                accountCount = 1;
                if (!string.IsNullOrEmpty(this.config.UserName2))
                {
                    accountCount = 2;
                    if (!string.IsNullOrEmpty(this.config.UserName3))
                    {
                        accountCount = 3;
                    }
                }
            }
            return accountCount;
        }
        /// <summary>
        /// 获取指定编号
        /// </summary>
        /// <param name="accountIndex">从0开始</param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        private void GetAccount(Int32 accountIndex, out string username, out string password)
        {
            username = this.config.UserName1;
            password = this.config.Password1;
            if (accountIndex == 1)
            {
                username = this.config.UserName2;
                password = this.config.Password2;
            }
            if (accountIndex == 2)
            {
                username = this.config.UserName3;
                password = this.config.Password3;
            }
            runningStep = RunningStep.None;
            ProcessUtils.CloseDnf();
            ProcessUtils.CloseWeGame();
        }
        /// <summary>
@@ -218,10 +172,9 @@
                case 1:
                    return new DNFJob<SkillMap>(this.config);
                case 2:
                    return new DNFJob<GroupMap>(this.config);
                default:
                    return null;
                    return new DNFJob<TestMap>(this.config);
            }
            throw new Exception("this task index is error");
        }
    }
}
src/RichCreator/Jobs/JobResult.cs
File was deleted
src/RichCreator/Jobs/WeGameJob.cs
@@ -28,9 +28,8 @@
        private string UserName;
        private string Password;
        public override bool DoWork(out bool tryAgain, CancellationToken cancellationToken,Int32 runningStep)
        public override ZTResult Do(CancellationToken cancellationToken,Int32 runningStep)
        {
            tryAgain = true;
            
            Process.Start(this.Config.TGPDaemonPath);
            G.Instance.InfoWriter("等待We Game运行");
@@ -42,7 +41,7 @@
            if (!result)
            {
                G.Instance.InfoWriter("查找游戏失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("WeGame于:" + weGameRect.ToString() + ",切换按钮于:" + changeLoginMethodButtonRect.ToString());
@@ -52,7 +51,7 @@
            if (!result)
            {
                G.Instance.InfoWriter("登陆失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("WeGame登陆成功");
            
@@ -61,11 +60,11 @@
            if (!result)
            {
                G.Instance.InfoWriter("DNF未成功打开");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("开始启动DNF游戏");
            return true;
            return ZTResult.Success;
        }
        
src/RichCreator/MainWindow.xaml
@@ -80,7 +80,7 @@
                                <ComboBox SelectedIndex="0" x:Name="taskName" VerticalAlignment="Center">
                                    <ComboBoxItem >凛冬</ComboBoxItem>
                                    <ComboBoxItem >技能</ComboBoxItem>
                                    <ComboBoxItem >组队测试</ComboBoxItem>
                                    <ComboBoxItem >测试</ComboBoxItem>
                                </ComboBox>
                                <Button Content="清空"  Padding="15 0 15 0" Margin="5" Click="ClearLog_Click" />
                                <Button Content="运行"  Padding="15 0 15 0" Margin="5" Click="Run_Click" x:Name="RunningButton" />
src/RichCreator/Maps/Lindong/LindongMap.cs
@@ -181,7 +181,7 @@
        private Int32 runningStep = RunningStep.None;
        
        public override bool Start(ZTRectangle gameRect, CancellationToken cancelToken,Int32 runningStep)
        public override ZTResult Start(ZTRectangle gameRect, CancellationToken cancelToken,Int32 runningStep)
        {
            this.runningStep = runningStep;
            this.GameRect = gameRect;
@@ -194,22 +194,22 @@
            {
                if (!MoveToSunan())
                {
                    return false;
                    return ZTResult.Failed;
                }
                if (!MoveToShikongzhimen())
                {
                    return false;
                    return ZTResult.Failed;
                }
                if (!MoveToChoiceTaskPage())
                {
                    return false;
                    return ZTResult.Failed;
                }
                if (!IntoTaskRoom())
                {
                    return false;
                    return ZTResult.Failed;
                }
                G.Instance.InfoWriter("成功进入副本");
@@ -220,13 +220,13 @@
                //重复刷,直到疲劳值不够了
                if (this.cancellationToken.IsCancellationRequested)
                {
                    return false;
                    return ZTResult.Cancel;
                }
                bool killResult = true;
                DateTime startHouse = DateTime.Now;
                killResult = KillMonster();
                if (killResult)
                ZTResult killResult = KillMonster();
                if (killResult==ZTResult.Success)
                {
                    //捡东西
                    G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.V);
@@ -250,7 +250,7 @@
                    if (pilaozhi <= 0)
                    {
                        ExitToTown();
                        return true;
                        return ZTResult.Success;
                    }
                    ReplayGame();
@@ -258,10 +258,9 @@
                }
                else
                {
                    break;
                    return killResult;
                }
            }
            return false;
        }
        /// <summary>
@@ -289,9 +288,8 @@
        /// 刷房间
        /// </summary>
        /// <returns></returns>
        private bool KillMonster()
        private ZTResult KillMonster()
        {
            Int32 result = 0;
            bool ret = false;
@@ -305,7 +303,7 @@
            if (!findResult)
            {
                G.Instance.InfoWriter("未找到进入凛冬的文字");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("进入凛冬");
@@ -330,7 +328,7 @@
                if (!ret)
                {
                    G.Instance.InfoWriter("未找到人物所在房间");
                    break;
                    return ZTResult.Failed;
                }
                G.Instance.InfoWriter("进入房间->" + houseIndex.ToString());
@@ -338,16 +336,16 @@
                DateTime roomStartTime = DateTime.Now;
                KillMonsterStateMachine kmsm = new KillMonsterStateMachine(Houses[houseIndex], this.MinimapPoint, this.GameRect, preHouseIndex,this.runningStep);
                result = kmsm.Start(cancellationToken, 5 * 60 * 1000);
                ZTResult smresult = kmsm.Work(cancellationToken, 5 * 60 * 1000);
                Int32 roomTotalSecond = (Int32)(DateTime.Now - roomStartTime).TotalSeconds;
                G.Instance.InfoWriter("房间刷完,用时:" + (roomTotalSecond / 60) + "分" + (roomTotalSecond % 60) + "秒");
                runningStep = RunningStep.None;
                if (result == JobResult.Success)
                if (smresult == ZTResult.Success)
                {
                    if (houseIndex == 15)
                    {
                        //所有房间刷完
                        return true;
                        return ZTResult.Success;
                    }
                    //刷其它房间
@@ -355,11 +353,9 @@
                }
                else
                {
                    break;
                    return smresult;
                }
            }
            return false;
        }
        
        /// <summary>
@@ -396,24 +392,6 @@
                   return DnfCVHelper.IsInSaiLiYaHouse(this.GameRect);
               });
            return result;
        }
        /// <summary>
src/RichCreator/Maps/MapInfo.cs
@@ -22,7 +22,7 @@
        /// 开始刷图
        /// </summary>
        /// <returns></returns>
        public abstract bool Start(ZTRectangle gameRect, CancellationToken cancellationToken, Int32 runningStep);
        public abstract ZTResult Start(ZTRectangle gameRect, CancellationToken cancellationToken, Int32 runningStep);
src/RichCreator/Maps/Skills/SkillMap.cs
@@ -48,7 +48,7 @@
        public override bool Start(ZTRectangle gameRect, CancellationToken cancelToken, Int32 runningStep)
        public override ZTResult Start(ZTRectangle gameRect, CancellationToken cancelToken, Int32 runningStep)
        {
            this.GameRect = gameRect;
            this.cancellationToken = cancelToken;
@@ -60,7 +60,7 @@
            if (!OpenSkillWindow())
            {
                G.Instance.InfoWriter("打开技能窗口失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("技能窗口已打开");
@@ -68,7 +68,7 @@
            if (!InitSkills())
            {
                G.Instance.InfoWriter("初始化技能失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("技能已初始化");
@@ -77,7 +77,7 @@
            if (!SettingTopSkills())
            {
                G.Instance.InfoWriter("通用技能设置失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("通用技能已设置");
@@ -85,7 +85,7 @@
            if (!SettingSPSkills())
            {
                G.Instance.InfoWriter("SP技能设置失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("SP技能已设置");
@@ -93,7 +93,7 @@
            if (!SettingTPSkills())
            {
                G.Instance.InfoWriter("TP技能设置失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("TP技能已设置");
@@ -101,7 +101,7 @@
            if (!Studay())
            {
                G.Instance.InfoWriter("技能学习失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("技能已学习");
@@ -109,13 +109,13 @@
            if (!FormatSkillColumn())
            {
                G.Instance.InfoWriter("技能摆放失败");
                return false;
                return ZTResult.Failed;
            }
            G.Instance.InfoWriter("技能摆放成功");
            CloseAllAlertWindow(this.cancellationToken, this.GameRect);
            return true;
            return ZTResult.Success;
        }
        /// <summary>
@@ -139,6 +139,7 @@
                    //识别技能窗
                    return SkillCVHelper.FindSkillWindow(out innertitleRect, out innerlvRect, out innerupKeyRect, out innerdownKeyRect,out isGray, this.GameRect);
                });
                if (result)
                {
                    titleRect = innertitleRect;
src/RichCreator/Maps/Test/TestMap.cs
File was renamed from src/RichCreator/Maps/Group/GroupMap.cs
@@ -17,38 +17,28 @@
namespace RichCreator.Maps
{
    /// <summary>
    /// 组队
    /// 测试地图
    /// </summary>
    public class GroupMap : MapInfo
    public class TestMap : MapInfo
    {
        /// <summary>
        /// 游戏区域
        /// </summary>
        public ZTRectangle GameRect { get; set; }
        public ZTRectangle GameRect { get; set; }
        public CancellationToken cancellationToken { get; set; }
        private const bool isCreateGroup = true;
        
        public override bool Start(ZTRectangle gameRect, CancellationToken cancelToken, Int32 runningStep)
        public override ZTResult Start(ZTRectangle gameRect, CancellationToken cancelToken, Int32 runningStep)
        {
            this.GameRect = gameRect;
            this.cancellationToken = cancelToken;
            WindowUtils.SetDnfToTop();
            ChannelStateMachine csm = new ChannelStateMachine();
            ZTResult workResult = csm.Work(this.GameRect, true, cancelToken, 5 * 60 * 1000);
            if (workResult != ZTResult.Success)
            {
                G.Instance.InfoWriter("切换频道没有成功,"+workResult);
                Thread.Sleep(5 * 60 * 1000);
                return false;
            }
            G.Instance.InfoWriter("切换频道成功,开始组队逻辑");
            string groupName = "aabbccddee";
            if (isCreateGroup)
@@ -57,7 +47,7 @@
                if (!CreateGroup(groupName))
                {
                    G.Instance.InfoWriter("创建队伍失败");
                    return false;
                    return ZTResult.Failed;
                }
            }
            else
@@ -66,13 +56,13 @@
                if (!JoinGroup(groupName))
                {
                    G.Instance.InfoWriter("加入队伍失败");
                    return false;
                    return ZTResult.Failed;
                }
            }
            //沉默一段时间
            Thread.Sleep(50000000);
            CloseAllAlertWindow(this.cancellationToken, this.GameRect);
            return true;
            return ZTResult.Success;
        }
        
      
src/RichCreator/Models/RichCreatorConfig.cs
@@ -71,6 +71,56 @@
        /// </summary>
        public string Password3 { get; set; }
        /// <summary>
        /// 获取配置文件中账号的数量
        /// </summary>
        /// <returns></returns>
        public Int32 GetAccountCount()
        {
            Int32 accountCount = 0;
            if (!string.IsNullOrEmpty(this.UserName1))
            {
                accountCount = 1;
                if (!string.IsNullOrEmpty(this.UserName2))
                {
                    accountCount = 2;
                    if (!string.IsNullOrEmpty(this.UserName3))
                    {
                        accountCount = 3;
                    }
                }
            }
            return accountCount;
        }
        /// <summary>
        /// 获取指定编号
        /// </summary>
        /// <param name="accountIndex">从0开始</param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        public void GetAccount(Int32 accountIndex, out string username, out string password)
        {
            username = this.UserName1;
            password = this.Password1;
            if (accountIndex == 1)
            {
                username = this.UserName2;
                password = this.Password2;
            }
            if (accountIndex == 2)
            {
                username = this.UserName3;
                password = this.Password3;
            }
        }
    }
}
src/RichCreator/RichCreator.csproj
@@ -103,19 +103,19 @@
    <Compile Include="..\Protocols\Richcreator.cs">
      <Link>Services\Richcreator.cs</Link>
    </Compile>
    <Compile Include="Maps\Group\GroupMap.cs" />
    <Compile Include="Maps\Test\TestMap.cs" />
    <Compile Include="Maps\Skills\SkillMap.cs" />
    <Compile Include="PathFinding\Dijkstra.cs" />
    <Compile Include="PathFinding\Edge.cs" />
    <Compile Include="PathFinding\Node.cs" />
    <Compile Include="Services\ServiceMonitor.cs" />
    <Compile Include="Services\ServiceProvider.cs" />
    <Compile Include="StateMachines\ChannelStateMachine.cs" />
    <Compile Include="StateMachines\StateMachineBase.cs" />
    <Compile Include="Utilitys\FuncUtils.cs" />
    <Compile Include="G.cs" />
    <Compile Include="Jobs\DNFJob.cs" />
    <Compile Include="Jobs\JobBase.cs" />
    <Compile Include="Jobs\JobMonitor.cs" />
    <Compile Include="Jobs\JobResult.cs" />
    <Compile Include="Maps\Lindong\OutOfBounds.cs" />
    <Compile Include="Maps\Lindong\SingleEntryHouseSkill.cs" />
    <Compile Include="Models\RunningModel.cs" />
src/RichCreator/Services/ServiceProvider.cs
File was renamed from src/RichCreator/Services/ServiceMonitor.cs
@@ -3,11 +3,16 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZTImage.Configuration;
namespace RichCreator.Utilitys
{
    public class ServiceMonitor
    /// <summary>
    /// 外部服务提供器
    /// </summary>
    public class ServiceProvider
    {
        /// <summary>
        /// 微信通知
        /// </summary>
@@ -15,13 +20,18 @@
        /// <returns></returns>
        public bool NotificationWechat(string message)
        {
            var config=ConfigHelper.GetInstance<RichCreatorConfig>();
            if (config.NotificationWechat)
            {
                //发信息
            }
            return true;
        }
        #region singleton
        private static ServiceMonitor instance = null;
        private static ServiceProvider instance = null;
        private static object lockHelper = new object();
        public static ServiceMonitor Instance
        public static ServiceProvider Instance
        {
            get
            {
@@ -31,7 +41,7 @@
                    {
                        if (instance == null)
                        {
                            instance = new ServiceMonitor();
                            instance = new ServiceProvider();
                        }
                    }
                }
src/RichCreator/StateMachines/ChannelStateMachine.cs
@@ -15,7 +15,7 @@
    /// <summary>
    /// 频道状态机
    /// </summary>
    public class ChannelStateMachine
    public class ChannelStateMachine:StateMachineBase
    {
        //默认状态
        private ChannelStates currentState = ChannelStates.Start;
@@ -33,6 +33,9 @@
                new ZTPoint(-279,246),
                new ZTPoint(-279,291)
            };
        //首次进入标记
        private bool FirstEntryHouse = true;
        /// <summary>
        /// 开始工作
@@ -78,12 +81,29 @@
                        if (DnfCVHelper.IsInSaiLiYaHouse(gameRect))
                        {
                            //检测是否组队模式
                            currentState = ChannelStates.CheckGroupMode;
                            currentState = ChannelStates.IsFirstEntry;
                        }
                        else
                        {
                            currentState = ChannelStates.IsChoiceRolePage;
                        }
                        break;
                    case ChannelStates.IsFirstEntry:
                        //是否初次进入
                        if (this.FirstEntryHouse)
                        {
                            this.FirstEntryHouse = false;
                            currentState = ChannelStates.CloseAllWindow1;
                        }
                        else
                        {
                            currentState = ChannelStates.CheckGroupMode;
                        }
                        break;
                    case ChannelStates.CloseAllWindow1:
                        //关闭所有窗口1
                        CloseAllAlertWindow(cancelToken, gameRect);
                        currentState = ChannelStates.CheckGroupMode;
                        break;
                    case ChannelStates.IsChoiceRolePage:
                        //检测是否角色选择界面
@@ -231,6 +251,8 @@
            ChangeChannel,//双击切换频道,等待两秒
            OpenChangeChannelPage,//打开切换频道界面
            CloseAllWindow,//关闭所有窗口
            IsFirstEntry,//是否首次进入赛丽亚的房间
            CloseAllWindow1,//关闭所有窗口1
            Complete//完成
        }
    }
src/RichCreator/StateMachines/KillMonsterStateMachine.cs
@@ -33,7 +33,7 @@
    /// <summary>
    /// 杀怪状态机
    /// </summary>
    public class KillMonsterStateMachine
    public class KillMonsterStateMachine:StateMachineBase
    {
        private const Int32 NoMoveMaxMillSecond = 2000;//最大未移动容忍毫秒数
        private StateAction[] states;//状态动作列表
@@ -86,7 +86,7 @@
        /// <param name="cancellationToken"></param>
        /// <param name="timeoutMillSecond"></param>
        /// <returns></returns>
        public Int32 Start(CancellationToken cancellationToken, Int32 timeoutMillSecond)
        public ZTResult Work(CancellationToken cancellationToken, Int32 timeoutMillSecond)
        {
            DateTime expireTime = DateTime.Now.AddMilliseconds(timeoutMillSecond);
            KillMonsterStateResult result = new KillMonsterStateResult(STATE_Start, false);
@@ -107,14 +107,14 @@
                {
                    G.Instance.DebugWriter("取消刷图");
                    this.moveState.StopMove();
                    return JobResult.Cancel;
                    return ZTResult.Cancel;
                }
                if (DateTime.Now > expireTime)
                {
                    G.Instance.DebugWriter("刷图超时");
                    this.moveState.StopMove();
                    return JobResult.Timeout;
                    return ZTResult.Timeout;
                }
                if (result.NextState == STATE_Exit)
                {
@@ -122,9 +122,9 @@
                    this.moveState.StopMove();
                    if (this.exitResult)
                    {
                        return JobResult.Success;
                        return ZTResult.Success;
                    }
                    return JobResult.Failed;
                    return ZTResult.Failed;
                    
                }
@@ -154,13 +154,13 @@
                                }
                            }, 50))
                            {
                                return JobResult.Failed;
                                return ZTResult.Failed;
                            }
                        }
                        if (houseIndex != this.house.Index)
                        {
                            this.moveState.StopMove();
                            return JobResult.Success;
                            return ZTResult.Success;
                        }
                    }                    
                }
@@ -661,5 +661,21 @@
        }
        #endregion
        /// <summary>
        /// 杀怪状态
        /// </summary>
        public enum KillMonsterStates:Int32
        {
                FindMonster = 0,//找怪
                PrepareReleaseSkill = 1,//释放技能预处理,计算位置
                ReleaseSkill = 2,//释放技能
                DetectDoorIsOpen = 3,//查找进入下一房间的门是否开了
                MoveToDoor = 4,//移动进门
                Start = 8,//开始状态
                Exit = 9,//完成状态
    }
    }
}
src/RichCreator/StateMachines/StateMachineBase.cs
New file
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RichCreator.StateMachines
{
    /// <summary>
    /// 状态机基类
    /// </summary>
    public abstract class StateMachineBase
    {
    }
}
src/RichCreator/configs/RichCreator.config
@@ -8,7 +8,7 @@
    <UserName1>1258493488</UserName1>
    <Password1>cc11111111</Password1>
    <UserName2>2228607100</UserName2>
    <Password2>cc11111111</Password2>
    <Password2>a5m1nf0g00d</Password2>
    <UserName3></UserName3>
    <Password3></Password3>
</RichCreatorConfig>