private void tm_Tick(object sender, EventArgs e) { var wbmp = GImage.Capture(config); pb1.Image = wbmp; //x.Save("1.bmp"); if (wbmp != null) { var bmp = new GImage(wbmp); bool ok = false; // Сравиваем экран с предыдущим if (oldbmp != null) { if (bmp.Equals(oldbmp)) { ok = true; mode = Mode.Active; } else mode = Mode.Wait; } // Если ок - смотрим на экшн, если не ок - значит началось и можно взводить ожидание экшна после успокоения // !!!! сделать таймер, который взводит экшн даже когда всё оставалось ок if (ok) { if (action) { // Прогоняем все скрипты foreach (var im in scripts) { if (im.Run(bmp)) { action = false; grid.DrawField(); } } CMode.Text = ScriptState.Mode; } } else { action = true; } oldbmp = bmp; } else Close(); }