Author Topic: Пауза основного действия для выполнения другого действия каждые N минут  (Read 1853 times)

0 Members and 1 Guest are viewing this topic.

PerfectO

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Здравствуйте. правильно ли я написал скрипт? задача: цикличное выполнения основного действия, но раз в 1 минуту выполнять другое действия пока основное на паузе. после выполнения другого действия, продолжается цикличное выполнения основного действия. я правильно понимаю, что отсчет 1 минуты для запуска другого действия идет после запуска скрипта в кликере?

Code: (clickermann) [Select]
go: // далее произойдет зацикливание до метки GO
// ДЕЙСТВИЕ РАЗ В 1 МИНУТУ
IF($time1 < $_time_t)
$time1 = $_time_t + 60
 
KEYPRESS(#B) //
WAIT(12)
KEYPRESS(#F2)
WAIT(1.55)
// Тут будет макрос выбора
WAIT(20)
END_IF // конец первого условия
 
KEYPRESS(#1) // вне условий можно написать действия которые должны выполняться постоянно
KEYPRESS(#TAB)
KEYPRESS(#3)
WAIT(0.3)
KEYPRESS(#TAB)
KEYPRESS(#3)
WAIT(0.3)
KEYPRESS(#TAB)
KEYPRESS(#3)
WAIT(0.3)
WAIT(0.35)
KEYPRESS(#1)
WAIT(1.25)
KEYPRESS(#C)
WAIT(1.25)
KEYPRESS(#1)
WAIT(1.25)
KEYPRESS(#F)
 
WAITMS (500) // задержка скрипта 500 мс для разгрузки процессора
goto(go) // переход к метке GO

UPDATE: проверил на практике. вроде, все работает. единственный момент, который хотелось бы улучишь, это тот факт, что сейчас "ДЕЙСТВИЕ РАЗ В 1 МИНУТУ" стартует сразу после запуска скрипта. как прописать, чтобы сначала запускалось основное действия, а уже через 1 минуту и с дальнейшим условием "РАЗ В 1 МИНУТУ" запускалось это периодическое действие?
« Last Edit: March 06, 2023, 03:26:15 AM by PerfectO »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
UPDATE: проверил на практике. вроде, все работает. единственный момент, который хотелось бы улучишь, это тот факт, что сейчас "ДЕЙСТВИЕ РАЗ В 1 МИНУТУ" стартует сразу после запуска скрипта. как прописать, чтобы сначала запускалось основное действия, а уже через 1 минуту и с дальнейшим условием "РАЗ В 1 МИНУТУ" запускалось это периодическое действие?

Добавь перед меткой начальное задание времени
Code: (clickermann) [Select]
$time1 = $_time_t + 60
"Раз в минуту" в этом коде очень условно, приблизительно от 60 до +66.8 сек.
« Last Edit: March 06, 2023, 10:38:19 AM by Vint »


PerfectO

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Добавь перед меткой начальное задание времени
Code: (clickermann) [Select]
$time1 = $_time_t + 60
Подскажи, пожалуйста, как это правильно сделать. мой вариант ниже не запускает сразу основное действие, а просто делает паузу в 10 секунд, потом запускается "ДЕЙСТВИЕ РАЗ В 1 МИНУТУ" и только потом основное действие.
Code: (Clickermann) [Select]
go: // далее произойдет зацикливание до метки GO
// ДЕЙСТВИЕ РАЗ В 1 МИНУТУ
IF($time1 < $_time_t)
WAIT(10)
$time1 = $_time_t + 60

"Раз в минуту" в этом коде очень условно, приблизительно от 60 до +66.8 сек.
это не критично, такой диапазон подходит.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Подскажи, пожалуйста, как это правильно сделать.
Просто добавить первой строкой указанную строку и нажать "применить".

мой вариант ниже не запускает сразу основное действие, а просто делает паузу в 10 секунд, потом запускается "ДЕЙСТВИЕ РАЗ В 1 МИНУТУ" и только потом основное действие.
По указанному обрывку ничего нельзя сказать.


PerfectO

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Просто добавить первой строкой указанную строку и нажать "применить".
Спасибо, работает.

Чтобы не плодить темы, спрошу тут. есть макрос, который работает с привязкой Clickermann к окну игры:

Code: (clickermann) [Select]
KEYPRESS(#1) //Удар мечом
WAIT(0.5)
KEYDOWN(#UP) // 1. поворот персонажа налево на 45 градусов за 0.5 сек
WAIT(0.5)
KEYUP(#UP)
WAIT(0.5)
KEYDOWN(#DOWN) // 2. поворот персонажа направо на 90 градусов за 1 сек
WAIT(1)
KEYUP(#DOWN)
WAIT(1)
KEYDOWN(#UP) // 3. поворот персонажа налево на 45 градусов за 0.5 сек, чтобы оказаться в изначальной точке до всех поворотов
WAIT(0.5)
KEYUP(#UP)
WAIT(0.5)
В игре с камерой от 3 лица делаю поворот персонажа методом зажатия кнопок UP (поворот влево) и DOWN (поворот вправо), что приблизительно 0.5 сек = 45 градусов, 1 сек = 90 градусов. но из-за лагов игры/интернета/ПК на дистанции по времени это не всегда 45 и 90 градусов, а иногда меньше/больше. можно ли в режиме привязки к окну настроить, чтобы персонажа периодически корректировал свое положение и становился/смотрел строго в изначальную точку до всех поворотов, например, при появлении определенного цвета пикселя окна игры на нужной вертикали? постарался объяснить задачу на скриншоте из игры. надеюсь, будет понятно.



на форуме есть тег "спойлер"? как "спрятать" картинку?

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re:с привязкой Clickermann
« Reply #5 on: April 15, 2023, 07:32:31 PM »
для начала откажитесь от попыток использовать привязку, а потом сможете попытаться реализовать собственные хотелки.

PerfectO

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
привязка - это обязательное требование. если нельзя реализовать эту задачу с ней, то вопрос отпадает. придется периодически руками поправлять направление изначальной точки персонажа, что создает большие неудобства.

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Имею сомнения, что пиксель такого цвета будет один, но допустим это так.
(Хо, Yо) разрешение окна в пикселях. Координаты точки (половина от Xo , Yt). Высоту Yt замеришь сам. 
Делаешь снимок экрана и анализируешь каждую точку от 0 до Xo на высоте Yt.
Если ничего нет, значит нужно повернуться на 180 градусов.
Если нашлось и координата по X больше половины от Xo повернешь вправо, иначе влево.