Author Topic: Где реально применяются потоки?  (Read 5155 times)

0 Members and 1 Guest are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Где реально применяются потоки?
« Reply #30 on: July 07, 2022, 08:28:42 AM »
как я понимаю уже вылечили и привязаться можно одновременно к нескольким окнам  в нескольких потоках?
Где и кто это сказал? У вас часто появляются выводы непонятно на чём основывающиеся.

Исправили только перезапуск потока, ведь о нём упоминалось в начале. Даже, не исправили, а доработали по просьбе. Это было довольно просто.
А вот разные привязки, разделённые буферы, переменные и подпрограммы - это довольно сложные изменения. Потребовалось бы вводить области видимости по одной из схем. Вводить динамические буферы в памяти и научить с ними работать все существующие команды, чтоб они понимали с каким буфером нужно работать в данный момент. Там ещё вагон и тележка проблем, поэтому автор отложил до "лучших" времён. А сейчас времена не "лучшие"   :D


selen

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Где реально применяются потоки?
« Reply #31 on: July 07, 2022, 10:21:35 AM »
как я понимаю уже вылечили и привязаться можно одновременно к нескольким окнам  в нескольких потоках?
Где и кто это сказал? У вас часто появляются выводы непонятно на чём основывающиеся.

Исправили только перезапуск потока, ведь о нём упоминалось в начале. Даже, не исправили, а доработали по просьбе. Это было довольно просто.
А вот разные привязки, разделённые буферы, переменные и подпрограммы - это довольно сложные изменения. Потребовалось бы вводить области видимости по одной из схем. Вводить динамические буферы в памяти и научить с ними работать все существующие команды, чтоб они понимали с каким буфером нужно работать в данный момент. Там ещё вагон и тележка проблем, поэтому автор отложил до "лучших" времён. А сейчас времена не "лучшие"   :D
Выводы я делал по ходу дискуссии.Не отрицаю,что в большинстве неправильные.Просто клещами приходится вырывать информацию по заинтересовавшей теме.Как вишенку на торте к концу дискуссии получил от Вас чуть более развернутый ответ,за что отдельное спасибо

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Где реально применяются потоки?
« Reply #32 on: July 07, 2022, 02:15:16 PM »
Добавлю и я свои пять копеек про использование потоков:
1 Мониторит нажатие клавиш, запускает и останавливает другие потоки.
2 Считывает количество жизни, маны, дебафы, координаты персонажей и вычисляет расстояние до лекарей/маназаливалок во всех окнах
3 На основании данных из 2го потока определяет последовательность кого и кем лечить/маназаливать/снимать дебафы
4 Бег бота по контрольным точкам
5 Ищет цель, если находит, останавливает 4й поток, управляет боем
6 Осуществляет 2х минутный баф
7 Осуществляет 20ти минутный баф

Кроме этого есть еще отдельный процесс написанный на Дельфи, который определяет в какой зоне расположены объекты (не боевая, боевая) и трассировку луча от дамагера до цели.
А также выводит в титул каждого объекта доступную информацию.
« Last Edit: July 07, 2022, 02:41:45 PM by ya12 »

selen

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Где реально применяются потоки?
« Reply #33 on: July 07, 2022, 08:37:30 PM »
Добавлю и я свои пять копеек про использование потоков:
1 Мониторит нажатие клавиш, запускает и останавливает другие потоки.
2 Считывает количество жизни, маны, дебафы, координаты персонажей и вычисляет расстояние до лекарей/маназаливалок во всех окнах
3 На основании данных из 2го потока определяет последовательность кого и кем лечить/маназаливать/снимать дебафы
4 Бег бота по контрольным точкам
5 Ищет цель, если находит, останавливает 4й поток, управляет боем
6 Осуществляет 2х минутный баф
7 Осуществляет 20ти минутный баф

Кроме этого есть еще отдельный процесс написанный на Дельфи, который определяет в какой зоне расположены объекты (не боевая, боевая) и трассировку луча от дамагера до цели.
А также выводит в титул каждого объекта доступную информацию.
коротко и лаконично.Огромное спасибо.подвести  можно  просто кучу игр так что работы потокам вагон и маленькая тележка

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Где реально применяются потоки?
« Reply #34 on: July 08, 2022, 05:19:07 AM »
Как это сделать, если есть к примеру 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

Прекрасно! Спасибо! Но Как указать СТОП для скрипта? Чтобы при нажатии клавиши скрипт отработал своё и снова выбор нажатия клавиши. Возможно ли сделать комбинациями клавиш?
« Last Edit: July 08, 2022, 09:00:42 AM by Vint »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Где реально применяются потоки?
« Reply #35 on: July 08, 2022, 09:01:31 AM »
Но Как указать СТОП для скрипта? Чтобы при нажатии клавиши скрипт отработал своё и снова выбор нажатия клавиши. Возможно ли сделать комбинациями клавиш?
Code: (clickermann) [Select]
THREAD(th1, 0)
    //сюда ставишь первый сценарий
    LOGWRITE("Сценарий 1 завершился")
    $status1 = 0
    SETTHREAD(th1, 2) // сценарий останавливается после прохода
END_THREAD

THREAD(th2, 0)
    //сюда ставишь второй сценарий
    LOGWRITE("Сценарий 2 завершился")
    $status2 = 0
    SETTHREAD(th2, 2)
END_THREAD

THREAD(th3, 0)
    //сюда ставишь третий сценарий
    LOGWRITE("Сценарий 3 завершился")
    $status3 = 0
    SETTHREAD(th3, 2)
END_THREAD

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#Z))
    $status1 = $status1 ^ 1
    IF($status1)
        SETTHREAD(th1, 1)
        LOGWRITE("Сценарий 1 запущен")
    ELSE
        SETTHREAD(th1, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 1 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#Z))
        WAITMS(10)
    END_CYC
END_IF

IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#A))
    $status2 = $status2 ^ 1
    IF($status2)
        SETTHREAD(th2, 1)
        LOGWRITE("Сценарий 2 запущен")
    ELSE
        SETTHREAD(th2, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 2 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#A))
        WAITMS(10)
    END_CYC
END_IF

IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#2))
    $status3 = $status3 ^ 1
    IF($status3)
        SETTHREAD(th3, 1)
        LOGWRITE("Сценарий 3 запущен")
    ELSE
        SETTHREAD(th3, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 3 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#2))
        WAITMS(10)
    END_CYC
END_IF

WAITMS(20)


SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Где реально применяются потоки?
« Reply #36 on: July 08, 2022, 09:37:53 AM »
Но Как указать СТОП для скрипта? Чтобы при нажатии клавиши скрипт отработал своё и снова выбор нажатия клавиши. Возможно ли сделать комбинациями клавиш?
Code: (clickermann) [Select]
THREAD(th1, 0)
    //сюда ставишь первый сценарий
    LOGWRITE("Сценарий 1 завершился")
    $status1 = 0
    SETTHREAD(th1, 2) // сценарий останавливается после прохода
END_THREAD

THREAD(th2, 0)
    //сюда ставишь второй сценарий
    LOGWRITE("Сценарий 2 завершился")
    $status2 = 0
    SETTHREAD(th2, 2)
END_THREAD

THREAD(th3, 0)
    //сюда ставишь третий сценарий
    LOGWRITE("Сценарий 3 завершился")
    $status3 = 0
    SETTHREAD(th3, 2)
END_THREAD

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#Z))
    $status1 = $status1 ^ 1
    IF($status1)
        SETTHREAD(th1, 1)
        LOGWRITE("Сценарий 1 запущен")
    ELSE
        SETTHREAD(th1, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 1 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#Z))
        WAITMS(10)
    END_CYC
END_IF

IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#A))
    $status2 = $status2 ^ 1
    IF($status2)
        SETTHREAD(th2, 1)
        LOGWRITE("Сценарий 2 запущен")
    ELSE
        SETTHREAD(th2, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 2 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#A))
        WAITMS(10)
    END_CYC
END_IF

IF(ISKEYDOWN(#ALT) & ISKEYDOWN(#2))
    $status3 = $status3 ^ 1
    IF($status3)
        SETTHREAD(th3, 1)
        LOGWRITE("Сценарий 3 запущен")
    ELSE
        SETTHREAD(th3, 0)  // или код 2 если нужен перезапуск
        LOGWRITE("Сценарий 3 остановлен")
    END_IF
    WHILE(ISKEYDOWN(#ALT) & ISKEYDOWN(#2))
        WAITMS(10)
    END_CYC
END_IF

WAITMS(20)

ЭТО ТОП!!!!!!!!! ОГРОМНОЕ СПАСИБО!!!!!!!!!