Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - resident

Pages: [1]
1
Ребята, подскажите пожалуйста как найти решение, сам я полный 0 в программировании.
Есть информационное табло. В программе 1С периодически появляется окно и предлагает обновить конфигурацию, частично закрывает информацию.
В окне есть кнопки "Обновить сейчас", "Обновить позже". Как можно реализовать автоклик при появлении такого напоминания и обновить сейчас.
И еще, чтобы была автозагрузка программы и автозапуск сценария в рабочее время с 7:00 до 16:00.
Выдать эту инструкцию кожаному мешку сидящему за компом.

2
В моем понимании синхронизация и есть потоки.Один скрипт в 12 потоков в моем случае.
Немного не понял как Вы избавляетесь от wait.В моем скрипте они везде нужны так как дают время на перезагрузку графики экрана.То есть если убрать wait кликер щелкнет по месту где,например только через секунду отрисуется кликабельная кнопка на которую нужно нажать.А в данный момент там просто серенький некликабельный фон
Синхронизация может быть частным случаев потоков, а могут и разные действия выполнять. Вот только потоки выполняются параллельно, а вы почему то последовательно посчитали по 7 минут и получили более 84 минут.
При последовательном выполнении паузы заменются полезным действием в другом окне. Пока вы совершаете то же действие в 11 других окнах, в первом окне графика уже перезагрузится.

3
Если вопрос решается синхронизацией, не понимаю зачем сюда городить потоки.
Если время выполнения 7 минут, то очевидно есть какие-то паузы. Вместо пауз можно делать то же действие в другом окне.

Для эмуляторов делал без потоков. 9 эмуляторов на экране, делаем скрин и в цикле перебираем все 9 окон (смещения окон прописаны) все координаты идут с переменной смещения pxl(100+$dx,100+$dy)
Синхронизация не применима, тк матчи завершаются за разное время.
В принципе то же самое можно сделать с потоками, по потоку на окно, будет чуть быстрее  (не будут суммироваться паузы wait, но это не критично)

4
А как насчет того что потоки нельзя перезапустить?То есть как я понимаю  вариант годится только для скриптов в десяток строк.
В смысле нельзя перезапустить?
У меня вот так работает, останавливается и запускается

Code: [Select]
thread(scan_hp,0)
  ...
  setthread(scan_hp,2)
end_thread

WHILE(1)
  GETSCREEN
  setthread(scan_hp,1)
  setthread(scan_amo,1)
  setthread(scan_enemy,1)
  waitms(50)
END_CYC

5
Когда несколько кликеров, они молчат. В случае нажатия комбинации клавиш в активное состояние входит один. Но когда будет один с потоками, то я так понимаю, он всегда будет в активном состоянии, что может отразиться на быстродействии ПК. Верно?
Кликер в принципе никогда не молчит если запущен. Скрипт всё равно выполняется в каком-то цикле. Цикл в котором будут проверяться только нажатие клавиш ни на что не повлияет. Главное только не допускать пустых циклов в которых нет хотя бы минимальной задержки.


Как это сделать, если есть к примеру 3 скрипта?

Запуск первого:
ALT + Z

Запуск второго:
ALT + A

Запуск третьего:
ALT + 2

Сделать поток для управления, который проверяет нажатые клавиши

if(iskeydown(#1)=1)
  if($status1=0)
    print("start 1")
  else
    print("stop 1")
  end_if
  $status1=$status1^1
  wait(5) // задержка чтоб отпустить кнопку до следующего переключения
end_if

if(iskeydown(#2)=1)
  if($status2=0)
    print("start 2")
  else
    print("stop 2")
  end_if
  $status2=$status2^1
  wait(5) // задержка чтоб отпустить кнопку до следующего переключения
end_if

6
Ошибки / httpget перестает работать
« on: July 04, 2022, 01:30:18 PM »
При помощи httpget отправляю статистику на сервер. После кратковременных отключений интернета запросы перестают отправляться, кликер продолжает нормально работать. Приходится перезапускать кликер.

7
Зачем в потоках обновлять графический буфер? Буфер обновляется в основном потоке, запускает потоки на анализ, после анализа потоки останавливаются, ждут обновления буфера. Если поток выполняется долго, то он может пропускать обновления буфера.
На счет последовательно и параллельно утверждать не буду, но то что с потоками работает в разы быстрее - факт.

8
3д шутер, поиск противников на экране по полоске хп.
Полоски бывают разных цветов, другой цвет под логом убийств.
Допустим всего 5 цветов, на поиск одного цвета 100 мс.
Если искать последовательно, то противника можно найти через 500 мс.
Если каждый цвет в отдельном потоке, то максимум через 100 мс.
Плюс в потоках сканируется своё хп и кол-во патронов.
После движения мыши на противника нужно время чтоб персонаж повернулся
Если делать это все в одном потоке, то частота сканирования получается секунда, представьте что вы играете с пингом в секунду
Через потоки информация поступает гораздо быстрее

9
70 итераций по 140 мс

15:23:57 54788080 скриншот
15:23:57 size=780
15:23:57 54788115 575 22 fast e1
15:23:57 54788117 row 22
15:23:57 54788251 row 23
15:23:57 54788253 575 22 70 e1 вторая строка хп
15:23:57 54788390 row 27
15:23:57 54788535 row 28
15:23:57 54788538 548 27 71 e1 вторая строка хп
15:23:58 54788663 row 38
15:23:58 54788757 row 39
15:23:58 54788760 616 38 54 e1 вторая строка хп
Code: [Select]
thread(scan_e1,0)
  if($screen_num!=$e1_num)
    $e1_num=$screen_num
    SCANPXL($e1_arr, 0,0, 1366,768, 1742)
    $e1_n=arrsize($e1_arr)
    print("size=",$e1_n)
    $e1_row=1
    $e1_start_x=0
    if($e1_n>0)
      for($e1_i=0,$e1_i<$e1_n-1)
        $e1_x=$e1_arr[$e1_i]
        $e1_y=$e1_arr[$e1_i+1]
        if($e1_start_x=0)
          $e1_start_x=$e1_x
          $e1_start_y=$e1_y
          $e1_target=strconcat($e1_start_x," ",$e1_start_y," fast e",$e1_num)
          print($_ms," ",$e1_target)
          arrpush($targets,$e1_target)
          print($_ms," row ",$e1_y)
        end_if


        if($e1_y=$e1_py|$e1_py=0)
          if($e1_x=$e1_px+1)
            inc($e1_row,1)
          else // прерывание строки
            if($e1_start_x=$e1_x) // совпал ряд
            end_if
            $e1_row=1
          end_if
        else // следующая строка

          print($_ms," row ",$e1_y)
          if($e1_x=$e1_start_x) // тот же ряд

            if($e1_start_y+1=$e1_y) // начало в предыдущей строке
              $e1_target=strconcat($e1_start_x," ",$e1_start_y," ",$e1_row," e",$e1_num)
              arrpush($targets,$e1_target)
              print($_ms," ",$e1_target," вторая строка хп")
            end_if

          else // другой ряд - другой противник
            $e1_start_x=$e1_x
            $e1_start_y=$e1_y
          end_if
          $e1_row=1
        end_if

        $e1_px=$e1_x
        $e1_py=$e1_y
        inc($e1_i,1) // +2 для массива координат
      end_cyc
    end_if
  end_if
  setthread(scan_e1,2)
end_thread

Pages: [1]