Author Topic: не могу докурить с потоками  (Read 2067 times)

0 Members and 3 Guests are viewing this topic.

Huligan812

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
не могу докурить с потоками
« on: December 08, 2014, 02:20:54 PM »
Всем привет. Это опять я.

Есть рабочий скрипт, и все бы ничего, если бы не мои шаловливые рученки, которые вечно что-то хотят допились.

Начнемс...
Code: (clickermann) [Select]
$wait_now = 0

SUB(wait_x_min, $x_min)
$wait_now = 1
$restart = 0
Print ("ждать еще: ", $x_min, ":00")
FOR($time_min = 0, $time_min<$x_min)
FOR($time_sec = 1, $time_sec<7)
FOR($time_sec2=0,$time_sec2<10)
IF(iskeydown(#INSERT)=1) // если нажата кнопка insert - выйти из цикла
$time_sec2 = 10
$time_sec = 6
$time_min = $x_min-1
ELSE
IF(iskeydown(#PAUSE)=1) // если нажата кнопка PAUSE - выйти из цикла и сбросить счетчик игры
$time_sec2 = 10
$time_sec = 6
$time_min = $x_min-1
$restart = 1
ELSE
wait(1)
END_IF
END_IF
END_CYC
Print ("ждать еще: ", $x_min-1-$time_min, ":", 60-$time_sec*10)
END_CYC
END_CYC
Print ("все")
$wait_now = 0

IF ($restart = 1)
GOTO (RESTART)
END_IF
END_SUB
В это САБе живет функция, которая получает в качестве переменной число и ждет это число минут

Code: (clickermann) [Select]
$q_cikl = INT (inputbox("На скольких жертв нападаем?", "50"))

THREAD (bot, 1)
RESTART:

FOR($farm = 0, $farm < $q_cikl) // Нападения по фарм-листу

тут большой кусок кода, который к делу не относится

wait_x_min (5)
wait (RND (1,3))

END_CYC
END_THREAD

THREAD (close_brouser, 1)
wait (10)
$close_brouser = 0
IF (($_time_m > 35) & ($_time_m < 40))
IF ($wait_now = 1)
Print ("Сейчас будет перезапущен браузер. Кнопка F1 отменит это действие")
FOR($time_sec3=0,$time_sec3<15)
IF(iskeydown(#F1)=1) // если нажата кнопка F1 - выйти из цикла
$time_sec3 = 15
$close_brouser = 1
ELSE
wait(1)
END_IF
END_CYC
IF ($close_brouser = 0)
lclick(1890, 10)
WAIT(5)
EXECUTE (c:\Program Files (x86)\Mozilla Firefox\firefox.exe)
END_IF
END_IF
END_IF
END_THREAD

HALT

Мысль такая:
bot фармит по циклу персов из закладок мозилы. Нападает, проверяет что все ОК, если все ОК, то ждет 5 минут + RND (1,3)
В эти 5 минут SUB wait_x_min (5) меняет значение переменной $wait_now с 0 на 1

close_brouser палит текущее время и если оно в пределах 36-39 минут, то проверяет $wait_now и, если $wait_now = 1 (т.е. поток bot ничего не делает) надо перезагрузить браузер.

Но на деле ничего не происходит.
Скрипт запускается, спрашивает $q_cikl, потом ждет RND (1,3) и останавливается.


я нид хелп

PS: пишу скрипты в notepad++, поэтому табуляция немного "конская"
« Last Edit: December 08, 2014, 02:24:35 PM by Huligan812 »

quant13

  • Активный участник
  • ***
  • Posts: 174
    • View Profile
Re: не могу докурить с потоками
« Reply #1 on: December 08, 2014, 02:27:07 PM »
Справку похоже таки читать не модно
Quote
собственные процедуры; при необходимости использования внутри потока процедуру, она описывается и вызывается внутри тела потока; внешний вызов и описание процедур не в рамках одного тела потока не допускается

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: не могу докурить с потоками
« Reply #2 on: December 08, 2014, 03:28:23 PM »
А основная программа чего позабыта?
Из справки:
при запуске основного скрипта все дочерние потоки находятся в приостоновленном состоянии; при паузе и останове работу прерывают все дочерние и основной поток
Основной поток здесь:
Code: (clickermann) [Select]
$q_cikl = INT (inputbox("На скольких жертв нападаем?", "50"))
...
HALT 
Ну вот inputbox отрабатывает и стоп по HALT


Huligan812

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: не могу докурить с потоками
« Reply #3 on: December 08, 2014, 04:26:53 PM »
Справку похоже таки читать не модно
Quote
собственные процедуры; при необходимости использования внутри потока процедуру, она описывается и вызывается внутри тела потока; внешний вызов и описание процедур не в рамках одного тела потока не допускается
Модно, но что-то я невнимательно прочитал это...


А основная программа чего позабыта?
Из справки:
при запуске основного скрипта все дочерние потоки находятся в приостоновленном состоянии; при паузе и останове работу прерывают все дочерние и основной поток
Основной поток здесь:
Code: (clickermann) [Select]
$q_cikl = INT (inputbox("На скольких жертв нападаем?", "50"))
...
HALT 
Ну вот inputbox отрабатывает и стоп по HALT
Блин... перечитал еще раз справку. Спасибо. Исправил.
« Last Edit: December 08, 2014, 05:16:56 PM by Huligan812 »