Author Topic: Что неправильно?  (Read 4880 times)

0 Members and 1 Guest are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Что неправильно?
« on: July 10, 2014, 03:19:44 PM »
Привет всем, ребят! Почему вот это не работает, а...?
Code: (clickermann) [Select]
IF($time < $_time_t)
  KEYPRESS(51) //
  WAITMS(500)
  $time = $_time_t + 31
END_IF

IF($time < $_time_t)
  KEYPRESS(53) //
  WAITMS(4000)
  $time = $_time_t + 6
END_IF

IF($time < $_time_t)
  KEYPRESS(55) //
  WAITMS(4500)
  $time = $_time_t + 6
END_IF
« Last Edit: July 10, 2014, 03:24:19 PM by Hito »
Я не ду... Потому и не бу...

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Что неправильно?
« Reply #1 on: July 10, 2014, 03:48:57 PM »
Привет! Это просто потому, что тут требуется обнулять переменную $time, после использования в условии. Иначе она содержит ненужное в этом скрипте значение, и следующее условие не выполняется.
Code: (clickermann) [Select]
UNDEFINE($time)

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Что неправильно?
« Reply #2 on: July 10, 2014, 04:03:54 PM »
Большое спасибо!
« Last Edit: July 10, 2014, 04:11:18 PM by Hito »
Я не ду... Потому и не бу...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Что неправильно?
« Reply #3 on: July 10, 2014, 04:43:38 PM »
Обнуление переменной также не правильно как и назвать их одним именем, одна перетирает другую.
Чтобы это работало переменные в которые записывается отметка времени должны иметь разные имена!

Code: (clickermann) [Select]
IF($time1 < $_time_t)
   KEYPRESS(51) //
   WAITMS(500)
   $time1 = $_time_t + 31
END_IF

IF($time2 < $_time_t)
   KEYPRESS(53) //
   WAITMS(4000)
   $time2 = $_time_t + 6
END_IF

IF($time3 < $_time_t)
   KEYPRESS(55) //
   WAITMS(4500)
   $time3 = $_time_t + 6
END_IF
WAITMS(50)

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Что неправильно?
« Reply #4 on: July 10, 2014, 04:56:30 PM »
Тоже спасибо! В принципе всё заработало по предыдущему варианту, но думаю, что так будет правильней. Спс!
Я не ду... Потому и не бу...

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Что неправильно?
« Reply #5 on: July 10, 2014, 05:52:29 PM »
Ну вот, решения найдены и скрипт, казалось бы, заработал! :) Только задачу надо ставить чуть конкретнее.
Если скрипт выполняется один раз, то зачем строки вида $time1 = $_time_t + 31?
Если же скрипт будет выполняться в цикле, то удалять переменные или дать им разные имена, уже скажется на результатах.

Скрипт в цикле, при удалении переменных инструкцией UNDEFINE() будет нажимать клавиши в таком порядке:
357 357 357 357 357 357 (пробелы для наглядности). Тут время между нажатиями легко регулировать.

Скрипт в цикле, с разноименными переменными, уже выдаст нажатия:
357 575 735 757 573 575 причем, через какие промежутки времени будет нажимать, понять очень сложно. Смахивает на рандомные нажатия. Но для рандома логичнее наверно использовать функции RND() или RNDFROM().
Информации для решения задачи маловато...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Что неправильно?
« Reply #6 on: July 10, 2014, 09:19:27 PM »
Задача часто встречаемая, нажимать кнопки через определенный промежуток времени но не останавливая скрипт. Одно действие работает постоянно, другие время от времени.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Что неправильно?
« Reply #7 on: July 11, 2014, 11:49:34 PM »
Задача такая... Есть дофига скилов с разным временем отката. Вот и все. Нужно, чтобы перс юзал эти скилы все по откатам. Скрипт работает по кругу.
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Что неправильно?
« Reply #8 on: July 13, 2014, 01:05:02 AM »
Я сделал вот так  :)

Code: (clickermann) [Select]
IF($time1 < $_time_t)
  KEYPRESS(51) //
  WAITMS(500)
  $time1 = $_time_t + 31
END_IF
UNDEFINE($time)
     
IF($time2 < $_time_t)
  KEYPRESS(53) //
  WAITMS(4000)
  $time2 = $_time_t + 6
END_IF
UNDEFINE($time)
     
IF($time3 < $_time_t)
  KEYPRESS(55) //
  WAITMS(4500)
  $time3 = $_time_t + 6
END_IF
UNDEFINE($time)

Всё работает изюмительно  :)
Я не ду... Потому и не бу...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Что неправильно?
« Reply #9 on: July 13, 2014, 01:26:42 AM »
UNDEFINE($time) в скрипте не играет вообще никакой роли так как ты используешь переменные с совершенно другими именами, да и не нужно ничего обнулять! Добавил в конце задержку в 50 мс, это чтобы пока скрипт крутится в холостую кликер не нагружал проц.

Code: (clickermann) [Select]
IF($time1 < $_time_t)
   KEYPRESS(51) //
   WAITMS(500)
   $time1 = $_time_t + 31
END_IF

IF($time2 < $_time_t)
   KEYPRESS(53) //
   WAITMS(4000)
   $time2 = $_time_t + 6
END_IF

IF($time3 < $_time_t)
   KEYPRESS(55) //
   WAITMS(4500)
   $time3 = $_time_t + 6
END_IF
WAITMS(50)

Разжую тебе подробнее. Системная переменная  $_time_t выдает текущее вемя Unix - это количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг); время с этого момента называют «эрой UNIX» (англ. Unix Epoch).
У нас есть условие
Если(Переменнаяtime1 меньше Вемя Unix)
  то выполняем внутренность
  Присваиваем переменнойtime1 текущее время Unix + 31 секунду
Конец условия

Далее условие не будет срабатывать пока всремяUnix не нагонит значение в переменной $time1
Чувствуешь разницу между $time1и $time? Это разные переменные! И обнулять тут ничего не нужно.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Что неправильно?
« Reply #10 on: July 16, 2014, 07:58:14 PM »
Oraven, я очень благодарен, что ты мне уделил внимание, но я нихрена не понял из "разжованного подробно" тобой. Пойми только меня правильно - это не огрызание в твою сторону с моей стороны. Это признание своего нубства в таких вещах. Я давно вижу, что вот ты (черный котик) и еще один чел (космонавт) тут самые продвинутые и больше всех помогаете другим разобраться. За это вам ОГРОМНОЕ спасибо! Но разжевать мне что-то навряд ли получится... Я по мере возможности задаю тут вопросы и по чуть-чуть познаю програмку. Вы мне примерами ответили и мне этого было достаточно. Если ты считаешь, что эта строка не нужна, то скажи просто - "Эта строка не нужна". Мне этого будет достаточно  :) Ты и (космонавт) для меня тут авторитеты  :) Всем остальным конечно тоже спасибо за помощь... ))
Я не ду... Потому и не бу...