1 (изменено: fgslm, 2020-10-24 11:23:40)

Тема: AHK: TIMER

- = Не работает = -


Loop 1 == 1
{
  какая-то переменная
  if (переменная == 1) ;Т.е. найдена
  {
  start_time := A_TickCount ;приравниваем переменной start_time количество милисекунд с момента перезапуска компьютера(Оно динамическое или статическое?) И будет ли каждый раз новое во время прохождения скрипта через это равенство?
  sleep 0
  }
    if (переменная найдена)
   {
   start_time := 0 ;Обнуляем время
   sleep 0
   }
    elapsed_time := A_TickCount - start_time
    if (elapsed_time >= 3000)
   {
    SendInput {1}
    elapsed_time := 0
    sleep 0
    }
}
return

Какая связь между elapsed_time и A_TickCount?

2

Re: AHK: TIMER

Как дела?

3

Re: AHK: TIMER

Ничего не понятно. В чём вопрос-то? Вы озаглавили топик «ТАЙМЕР», но таймера в вашем коде нет.

fgslm пишет:

Какая связь между elapsed_time и A_TickCount?

Так там же написано:

elapsed_time := A_TickCount - start_time
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

4

Re: AHK: TIMER

teadrinker пишет:

Ничего не понятно. В чём вопрос-то? Вы озаглавили топик «ТАЙМЕР», но таймера в вашем коде нет.

fgslm пишет:

Какая связь между elapsed_time и A_TickCount?

Так там же написано:

elapsed_time := A_TickCount - start_time

Возможно есть. более эффективное решение обойтись без таймера?
Найти событие, и через 3 секунды выполнить действие, снова дождаться события, и снова через 3 секунды выполнить действие, и так по кругу.

5 (изменено: teadrinker, 2020-10-23 23:23:31)

Re: AHK: TIMER

fgslm пишет:

более эффективное решение обойтись без таймера?

Зависит от задачи. Если скрипт должен делать только то, что вы описали, тогда проще цикл, смотрите по ним справку.
Если думаете, что 180 — это три секунды, то нет, время в милисекундах должно быть в данном случае.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

6 (изменено: fgslm, 2020-10-24 11:47:09)

Re: AHK: TIMER

Окей, допустим с момента запуска компьютера прошло 10 секунд
т.е. A_TickCount будет равен 10000
А в следующую секунду выполнения скрипта он будет равен уже 11?
Как использовать это динамическое движение?
Захватываем момент и приравниваем это значение какой-то переменной: start_time
Оно равно 10
A_TickCount уже давно и 20 и 30 стало
И тут нам приспичило вспомнить что у нас когда-то start_time приравнивался к A_TickCount и был равен 10.
Допустим мы ищем что "Бобик насрал", Окей бобик насрал, но чтобы не убирать за ним сразу(подождём 3 секунды, пока говно высохнет), Ждём 3 секунды? Как это записать?
проверяем больше ли ..... 3000? т.е. Какая-то переменная > 3000. Какая? start_time у нас = 10000
А бобик насрал 2900 мс назад, как это использовать?

Бобик насрал - переменная равна 10000 мс с момента запуска компьютера.
Убираем:
Если с момента того как он насрал прошло больше 3000 - убираем и обнуляем переменную,
 если нет - пропускаем

Теперь что будет если мы из днамического времени A_TickCount отнимем нашу зафиксированную переменную?
Допустим 40000 - 10000 = 30000 Это больше чем 3000? Да, больше. Вот только скрипт у нас почему-то не работает, и применять действия не хочет.

Допустим времени не прошло сколько надо, проходя через проверку скрипт прочтёт:
если (бобик насрал и разница между динамическим временем с момента запуска компьютера
и захваченной переменной меньше 3000) - мы никуда не бежим, мы возвращаемся в начало
Но вначале у нас стоит новое присвоение динамическому времени, и оно обновится, вот почему не работает скрипт, переменная всегда! меньше 3000, потому что время цикла намного меньше, как этого избежать? Чтобы присваивалось только один раз, и до момента выполнения действия не менялось?

7 (изменено: teadrinker, 2020-10-24 15:29:55)

Re: AHK: TIMER

fgslm пишет:

Окей, допустим с момента запуска компьютера прошло 10 секунд
т.е. A_TickCount будет равен 10000
А в следующую секунду выполнения скрипта он будет равен уже 11?

Да нет же, в следующую секунду A_TickCount будет равна 10001, 10002 ... 11000.
Чтобы узнать, что прошло, например, 3 секунды, нужно сравнить текущее значение A_TickCount и start_time. Если разница больше 3000 — значит прошло.

start_time := A_TickCount
Loop {
   Sleep, 10
   if (A_TickCount - start_time > 3000) {
      MsgBox, прошло 3 секунды
      start_time := A_TickCount
   }
}

Но проще так:

Loop {
   Sleep, 3000
   MsgBox, прошло 3 секунды
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

8 (изменено: fgslm, 2020-10-24 18:43:22)

Re: AHK: TIMER

teadrinker пишет:
start_time := A_TickCount
Loop {
   Sleep, 10
   if (A_TickCount - start_time > 3000) {
      MsgBox, прошло 3 секунды
      start_time := A_TickCount
   }
}

Это не будет работать. У меня цикл, в котором бобик не один, там и тузик, и мурзик, и еще толпа.
На всех надо разные таймеры, которые будут относиться к разным действиям. Так просто во время возврата цикла start_time := A_TickCount снова будет принимать другое значение и при попытке сравнить не будет больше 3000.

В связанное с ним действие нужно вставлять какую-то переменную, защищённую от обновления во время прохождения цикла по новой.

loop {
;Цикл проверки бобика
если бобик насрал{
присваиваем переменной start_time := A_TickCount ;(время начала)
}
если с момента когда бобик насрал прошло больше 3 с
{
Убираем за ним
И присваеваем start_time := 0?
}
И вот у нас цикл опять сходил наверх, и start_time := снова равно A_TickCount
И так по кругу, мы так за бобиком никогда не уберём, потом что значение вверху 
цикла каждый раз присваивается новое.
}
return

9 (изменено: fgslm, 2020-10-24 18:42:29)

Re: AHK: TIMER

123

10 (изменено: teadrinker, 2020-10-24 19:56:48)

Re: AHK: TIMER

Для каждого действия назначайте отдельную переменную: start_time_1, start_time_2 ...

fgslm пишет:

И присваеваем start_time := 0?

Зачем 0? Смотрите мой пример внимательнее.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

11 (изменено: fgslm, 2020-10-24 20:59:33)

Re: AHK: TIMER

teadrinker пишет:

Для каждого действия назначайте отдельную переменную: start_time_1, start_time_2 ...

fgslm пишет:

И присваеваем start_time := 0?

Зачем 0? Смотрите мой пример внимательнее.

         Из этого цикла скрипт не выйдет пока не пройдёт 3 секунды, мне это не нужно, мне нужно идти и занять скрипт другими делами, за эти 3 секунды он еще 100-ню проверок сделает. Ожидание истечения времени ненужно. Я бы мог написать Sleep 3000 и всё. Но у меня еще 1000 дел, а если таймер будет на 1000 00000 то это вообще простой будет. У меня не одно действие там, но таймер нужен только для одного.

Просто вот лог событий которые должен делать скрипт:


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

12 (изменено: teadrinker, 2020-10-24 21:23:45)

Re: AHK: TIMER

fgslm пишет:

мне нужно идти и занять скрипт другими делами

teadrinker пишет:

Если скрипт должен делать только то, что вы описали, тогда проще цикл

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

13

Re: AHK: TIMER

loop {
if (бобик насрал){
SetTimer, BobikNasral , 3000
}
if (насрано and BobikNasral <= 0){
убираем
SetTimer, BobikNasral , Off
}

какие-то другие события

}
return

Тот же вопрос: что меня защитит от присвоения Taimerа по новой каждый момент прохождения цикла по нему?

14

Re: AHK: TIMER

Цикл не нужен.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

15

Re: AHK: TIMER

teadrinker пишет:

Цикл не нужен.

Как я узнаю что бобик насрал?

16

Re: AHK: TIMER

По запаху.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

17

Re: AHK: TIMER

teadrinker пишет:

По запаху.

Разве AHK способен определять запах?

18

Re: AHK: TIMER

fgslm пишет:

123

fgslm пишет:

Как я узнаю что бобик насрал?

fgslm пишет:

Разве AHK способен определять запах?

2.5. Запрещается флуд (бессмысленные сообщения, набор междометий, смайликов, ругательств или слов-паразитов). Размещение нескольких однотипных постов или тем (веток) приравнивается к флуду. Любое сообщение обязано нести хоть какую-то полезную информацию. Запрещаются бессмысленные восклицания, одобряющие или осуждающие. Исключение составляют только восклицания благодарности за полезный ответ.

http://forum.script-coding.com/rules.html

19 (изменено: fgslm, 2020-10-25 17:25:23)

Re: AHK: TIMER

Malcev пишет:
fgslm пишет:

123

fgslm пишет:

Как я узнаю что бобик насрал?

fgslm пишет:

Разве AHK способен определять запах?

2.5. Запрещается флуд (бессмысленные сообщения, набор междометий, смайликов, ругательств или слов-паразитов). Размещение нескольких однотипных постов или тем (веток) приравнивается к флуду. Любое сообщение обязано нести хоть какую-то полезную информацию. Запрещаются бессмысленные восклицания, одобряющие или осуждающие. Исключение составляют только восклицания благодарности за полезный ответ.

http://forum.script-coding.com/rules.html

У нас момент недопонимания просто с участником в области кодинга, и приходиться прибегать к проверке. В психиатрии это называется Проведение калибровки. Когда собеседнику задают вопросы не связанные впрямую с темой обсуждения, чтобы определить в целом что он вникает в суть происходящего, а не использует имитацию присутствия и односложных заранее подготовленных ответов, работоспособность его мозговой деятельности, логики/нарушений в области нейронов и прочего. Нарушения форум тут никакого нет.

20

Re: AHK: TIMER

Читайте:
http://rsdn.org/Info/Howtoask.xml?print

21

Re: AHK: TIMER

Я пишу

Это не будет работать. У меня цикл, в котором бобик не один, там и тузик, и мурзик, и еще толпа.

мне нужно идти и занять скрипт другими делами

Я вроде понятно написал? что у меня УЖЕ есть цикл, в котором нужен этот таймер.
Просто я не понимаю вот этого расхождения:

teadrinker пишет:

тогда проще цикл

teadrinker пишет:

Цикл не нужен.

22 (изменено: fgslm, 2020-10-25 14:11:20)

Re: AHK: TIMER

Malcev пишет:

Читайте:
http://rsdn.org/Info/Howtoask.xml?print

Что конкретно непонятно вам в постановке моего вопроса?
Да, гении кодинга - форум неудобен отсутствием автодобавки текста в предыдущее своё сообщение "если оно является последним в теме и с момента его написания прошло менее N минут". Прошу обратить внимание на этот Анахронизм программистов вашего сайта. Чтобы потом не было ко мне претензий по поводу создания новых сообщений вместо редактирования старых.

23

Re: AHK: TIMER

А я в ваш вопрос и не вдавался, так как он был запощен без отступов.
Да и не буду вдаваться, так как конкретики уже не в первый раз у вас нету.
Создавать новые сообщения можно без всяких проблем, хотя сомневаюсь, что кто-то захочет вам отвечать.

24

Re: AHK: TIMER

fgslm пишет:

бобик насрал

fgslm пишет:

В психиатрии это называется Проведение калибровки.

Malcev, это показатель уровня культуры участника форума. Доля флуда на общем фоне не выделяется. Если не хочет исправляться, не стоит ему помогать.

25 (изменено: fgslm, 2020-10-25 14:47:51)

Re: AHK: TIMER

Malcev пишет:

запощен без отступов.

Это ваши личные предпочтения. Можете не отвечать, я вцелом могу задать вопрос касательно теории не используя в тексте участки кода, и он не будет нарушать правила общения.
Я уже с первых минут знал - что кто-то определённо сталкивался с такой же проблемой. Но отвечать упорно не хотят. Поэтому в какой манере не задай вопрос - отвечать это дело сугубо мотивации участника.

Malcev пишет:

сомневаюсь, что кто-то захочет вам отвечать.

Ну вы же отвечаете всё-таки?

ypppu пишет:

уровня культуры участника форума

Я просто незнаю какой еще пример привести, чтобы она была созвучна с интересами других участников. Незная людей обитающих на этом ресурсе приходится удаляться вот в такие вот абстрактные примеры.

26

Re: AHK: TIMER

Malcev пишет:

так как он был запощен без отступов.

Это блажь в целом

принесёте мне текилу без льда, я с вами разговаривать не буду

27

Re: AHK: TIMER

fgslm пишет:

Поэтому в какой манере не задай вопрос - отвечать это дело сугубо мотивации участника.

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

28 (изменено: fgslm, 2020-10-25 18:10:51)

Re: AHK: TIMER

serzh82saratov пишет:

в дурной манере задаёт вопрос

Это не дурь, это просто формат общения в вашей среде не привычный, не тот каким вы его хотите видеть удобный.

serzh82saratov пишет:

лишённый логики неформатированный код

Но я описал что именно нужно, мне жалко людей, которые могут смотреть на мир только через код, и тем самым узко смотря через него на мир. Многосторонней надо развиваться.
Помоему я написал уже 3 раза что мой вопрос в том как избежать обновления переменной start_time в цикле до того момента как она будет использована. Если вы не знаете как это сделать, или незнаете других методов, просто напишите "Незнаю", или пройдите мимо. Ненадо тут удаляться в развёрнутые инсинуации о моей дурной манере, Так только захламляется тема. а то я тоже тогда начинаю в них удаляться и приходит модератор и тыкает в правила.

Я понял что  непонятно формулирую, а вы нехотите вдаваться. Это проходит со временем.

29

Re: AHK: TIMER

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

30 (изменено: fgslm, 2020-10-25 22:30:23)

Re: AHK: TIMER

serzh82saratov пишет:

чужих доводов

На то они и "Чужие" что не своя рубашка
Оправдание культа индивидуализма, как и его отрицание не даёт нужного результата
В споре рождается инстина. Но тут почему-то участники любят не спорить, а обижаться, аргументируя это тем, что их мнение априори одно единственно правильное, не учитывая массу условий, которые на практике показывают их нежизнеспособность.

31

Re: AHK: TIMER

fgslm пишет:

Какая связь между elapsed_time и A_TickCount?

Как дела?

32

Re: AHK: TIMER

2.5. Запрещается флуд (бессмысленные сообщения)

33 (изменено: AlexPidor, 2020-11-12 16:57:44)

Re: AHK: TIMER

teadrinker пишет:

start_time := A_TickCount
Loop {
Sleep, 10
if (A_TickCount - start_time > 3000) {
MsgBox, прошло 3 секунды
start_time := A_TickCount
}
}

Тема не раскрыта