Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - SimplY

Pages: 1 [2] 3 4 ... 9
16
Здравствуйте!

Каждый день кликер должен создавать файл в формате txt, а его название: "Отчёт от 09.03.2023"

Где дата в названии равна дате создания файла

Возможно как-то сделать в кликере или только ручками каждый день исправлять? Заранее спасибо :)

17
Вы из цикла выходите без завершения его работы, переходя к метке.
Именно, как описываете и должна проявляться такая ошибка.
В других скриптах с этим проблем не было.
Как тогда завершить цикл, чтобы при нажатии на клавишу вернуться в нужное место?

18
Друзья, Не могу понять!

Должно быть так:
Кликер производит Хлеб или Сметана или Молоко, дальше я либо нажимаю на Ctrl, тогда повторяется с записью в текстовый файл, либо на ALT, тогда следующий вариант.

На практике после нажатия на ALT слова иногда повторяются.

Code: (clickermann) [Select]
#name "Случайные элементы без повторений"
// Author: Vint
// Version: 0.1 (19.01.2021)
// Скрипт для Clickermann v4.13.014

WAITMS(500)
THREAD(sec, 0)
   WAIT(3)
   BEEP(700,100)
   WAIT(1000)
END_THREAD
WAITMS(20)
STRSEPARATE("1,2,3", ",", $data) // список значений для выбора
WHILE(ARRSIZE($data) > 0)
   $ind = RND(0, ARRSIZE($data)-1)
   $result = $data[$ind]
   $data[$ind] = $data[ARRSIZE($data) - 1]
   $temp = ARRPOP($data)
END_CYC
WAITMS(500)
skip:
WAITMS(20)
$ress = ARRPOP($result)
LOGWRITE ($ress)

IF($ress = 1)
   FOR($a=0,$a<15)
      WAITMS(200)
      SOUND("Сметана.wav")
      SETTHREAD (sec, 1)
      $check = 0
      WHILE($check = 0)
         IF(ISKEYDOWN(#CTRL)=1)
            WHILE(ISKEYDOWN(#CTRL)=1)
            END_CYC
            $check = 1
         ELSE
            IF(ISKEYDOWN(#ALT)=1)
               WHILE(ISKEYDOWN(#ALT)=1)
               END_CYC
               $check = 2
            ELSE
               WAITMS(20)
            END_IF
         END_IF
      END_CYC
      IF($check = 1) // Продолжение скрипта (вариант 1)
         WAITMS(20)
         TFWRITE("input.txt", "Сметана")
         WAITMS(20)
         SETTHREAD (sec, 2)
      END_IF
      IF($check = 2) // Продолжение скрипта (вариант 2)
         WAITMS(20)
         SETTHREAD (sec, 2)
         WAITMS(20)
         GOTO(skip)
      END_IF
   END_CYC
END_IF
IF($ress = 2)
   FOR($a=0,$a<15)
      WAITMS(200)
      SOUND("Хлеб.wav")
      SETTHREAD (sec, 1)
      $check = 0
      WHILE($check = 0)
         IF(ISKEYDOWN(#CTRL)=1)
            WHILE(ISKEYDOWN(#CTRL)=1)
            END_CYC
            $check = 1
         ELSE
            IF(ISKEYDOWN(#ALT)=1)
               WHILE(ISKEYDOWN(#ALT)=1)
               END_CYC
               $check = 2
            ELSE
               WAITMS(20)
            END_IF
         END_IF
      END_CYC
      IF($check = 1) // Продолжение скрипта (вариант 1)
         WAITMS(20)
         TFWRITE("input.txt", "Хлеб")
         WAITMS(20)
         SETTHREAD (sec, 2)
      END_IF
      IF($check = 2) // Продолжение скрипта (вариант 2)
         WAITMS(20)
         SETTHREAD (sec, 2)
         WAITMS(20)
         GOTO(skip)
      END_IF
   END_CYC
END_IF
IF($ress = 3)
   $varr = RND(1,5)
   FOR($a=0,$a<15)
      WAITMS(200)
      IF($varr = 1)
         SOUND("Молоко2.wav")
      END_IF
      IF($varr = 2)
         SOUND("Молоко.wav")
      END_IF
      SETTHREAD (sec, 1)
      $check = 0
      WHILE($check = 0)
         IF(ISKEYDOWN(#CTRL)=1)
            WHILE(ISKEYDOWN(#CTRL)=1)
            END_CYC
            $check = 1
         ELSE
            IF(ISKEYDOWN(#ALT)=1)
               WHILE(ISKEYDOWN(#ALT)=1)
               END_CYC
               $check = 2
            ELSE
               WAITMS(20)
            END_IF
         END_IF
      END_CYC
      IF($check = 1) // Продолжение скрипта (вариант 1)
         WAITMS(20)
         TFWRITE("input.txt", "Молоко")
         WAITMS(20)
         SETTHREAD (sec, 2)
      END_IF
      IF($check = 2) // Продолжение скрипта (вариант 2)
         WAITMS(20)
         SETTHREAD (sec, 2)
         WAITMS(20)
         GOTO(skip)
      END_IF
   END_CYC
END_IF


IF($ress = "")
   $fin_oth = TFCOUNT("input.txt")
   $th = $_time_h
   $tm = $_time_m
   $ts = $_time_s
   $dd = $_date_d
   $dm = $_date_m
   $dy = $_date_y
   
   IF(STRLEN($th)<2)
      $th = STRCONCAT ("0", $th)
   END_IF
   IF(STRLEN($tm)<2)
      $tm = STRCONCAT ("0", $tm)
   END_IF
   IF(STRLEN($ts)<2)
      $ts = STRCONCAT ("0", $ts)
   END_IF
   IF(STRLEN($dd)<2)
      $dd = STRCONCAT ("0", $dd)
   END_IF
   IF(STRLEN($dm)<2)
      $dm = STRCONCAT ("0", $dm)
   END_IF
   IF(STRLEN($dy)<2)
      $dy = STRCONCAT ("0", $dy)
   END_IF
   
   #DEFINE @CRLF: CHAR(13), CHAR(10)
   #DEFINE @TAB: CHAR(9)
   $fin = STRCONCAT($dd,".",$dm,".",$dy, @TAB, $th,":",$tm, @TAB, $fin_oth)
   WAITMS(20)
   TFWRITE("Результаты.txt", $fin)
   WAITMS(200)
   SOUND("Концовка.wav")
   WAIT
ELSE
   WAITMS(20)
   GOTO(skip)
END_IF

В чем я недоглядел?
Подозреваю, что не там стоит метка SKIP, но я менял ее местами и не получается.

19
Code: (clickermann) [Select]
#name "Случайные элементы без повторений"
// Author: Vint
// Version: 0.1 (19.01.2021)
// Скрипт для Clickermann v4.13.014

STRSEPARATE("1,три,четыреста четыре,8,9,15", ",", $data) // список значений для выбора
WHILE(ARRSIZE($data) > 0)
    $ind = RND(0, ARRSIZE($data)-1)
    $result = $data[$ind]
    LOGWRITE("Выбранный элемент: ", $result)
    // делаешь с элементом $result то, что тебе нужно
    $data[$ind] = $data[ARRSIZE($data) - 1]
    $temp = ARRPOP($data)
END_CYC

Подстраивай под свои соунды.
Спасибо!!!

20
Всем добрый день!

Не могу выстроить код.

Задача: Нужно, чтобы кликер в рандомном варианте проиграл звуковые файлы wav, но столько раз, сколько этих файлов и каждый файл только один раз!

Code: (clickermann) [Select]
SOUND("Молоко.wav")
Code: (clickermann) [Select]
SOUND("Сметана.wav")
Code: (clickermann) [Select]
SOUND("Творог.wav")
Code: (clickermann) [Select]
SOUND("Хлеб.wav")
Code: (clickermann) [Select]
SOUND("Сливки.wav")
Например:
Сметана, Хлеб, Сливки, Творог, Молоко

Второй запуск:
Сливки, Творог, Сметана, Хлеб, Молоко

И прочее...
Строго 5 раз (коли их 5) и Сметана нигде дважды не повторяется. Как и хлеб и прочее.

Пробовал методом, когда создается текстовый файл, затем удаляется строка, которая проиграла и так, пока не закончатся строки. Не получилось.

Может как-то по-другому надо?

Помимо проигрывания wav файлов, может дополниться скриптом. Например, сначала рандомно одна часть скрипта, затем вторая и прочее.

Заранее спасибо!

21
Но Как указать СТОП для скрипта? Чтобы при нажатии клавиши скрипт отработал своё и снова выбор нажатия клавиши. Возможно ли сделать комбинациями клавиш?
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)

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

22
Как это сделать, если есть к примеру 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

Прекрасно! Спасибо! Но Как указать СТОП для скрипта? Чтобы при нажатии клавиши скрипт отработал своё и снова выбор нажатия клавиши. Возможно ли сделать комбинациями клавиш?

23
Верно?
Не верно, любая запущенная программа в какой-то степени влияет на работу ПК.
 Как вообще кликер может гореть, на ещё зелёным?
Так

24
Когда несколько кликеров, они молчат. В случае нажатия комбинации клавиш в активное состояние входит один. Но когда будет один с потоками, то я так понимаю, он всегда будет в активном состоянии, что может отразиться на быстродействии ПК. Верно?
Кликер в принципе никогда не молчит если запущен. Скрипт всё равно выполняется в каком-то цикле. Цикл в котором будут проверяться только нажатие клавиш ни на что не повлияет. Главное только не допускать пустых циклов в которых нет хотя бы минимальной задержки.
То есть если кликер будет гореть зеленым, это не повлияет на работу ПК. Верно?

25
Когда несколько кликеров, они молчат. В случае нажатия комбинации клавиш в активное состояние входит один. Но когда будет один с потоками, то я так понимаю, он всегда будет в активном состоянии, что может отразиться на быстродействии ПК. Верно?
Кликер в принципе никогда не молчит если запущен. Скрипт всё равно выполняется в каком-то цикле. Цикл в котором будут проверяться только нажатие клавиш ни на что не повлияет. Главное только не допускать пустых циклов в которых нет хотя бы минимальной задержки.

Как это сделать, если есть к примеру 3 скрипта?

Запуск первого:
ALT + Z

Запуск второго:
ALT + A

Запуск третьего:
ALT + 2

26
Как потоки помогают вам в кликере? Есть реальные примеры, где потоки реально принесли пользу? В чем они помогли?
Если пока не понял, то тебе пока это не нужно. Как появится проблема которую решат потоки, так сразу и узнаешь. Ты узнаешь её из тысячи...
В группе ВК есть товарищи, которые пихают потоки везде, надо это или не надо. Нам с ними не по пути.

Часть примеров есть в справке и в той статье. Если обобщить и оставить только суть, то основных причин применять потоки две:
1. Нам нужно одновременное выполнение двух веток скрипта.
2. Нам нужно иметь возможность прерывать выполнение ветки кода в любом месте, с (или без) последующего перезапуска этого кода.
Чаще, но не всегда, эти причины ходят вместе.

Под "1" подходит пример с клавишами - из статьи. Где нужно нажимать кнопки клавиатуры каждую со своей периодичностью, а ля применение бафов/ударов со временем отката.
Можно сделать на паузах если они маленькие и не критично не точное выполнение периодов, ну будет чуть дольше, чем нужно. Если паузы большие, они будут мешать друг другу сильнее и может стать неприемлим такой подход. Здесь два варианта решения: на таймерах или на потоках. На потоках понятно как это будет выглядеть, плюс код будет меньше и менее сложный. На таймерах, каждому нажатию зададим свой таймер и все эти действия проверяем последовательно в цикле. Чей таймер вышел - то действие и выполняется. Точность меньше, чем на потоках из-за времени проверок и времени срабатываний вышедших таймеров.
Всё хорошо, если у нас действия простые, типа этих нажатий кнопок, а если более продолжительные? Допустим мы в цикле программы ожидаем какие-то признаки и в зависимости от признака выполняем довольно большой кусок кода. Но даже если один из признаков сработал и мы начали выполнять, нам требуется продолжать следить за другими признаками.
Пример -  рыбалка на 2+ снасти. Нужно следить за разными поплавками - это можно делать и последовательно, даже именно лучше последовательно, но при клёве нужно выполнят действия по вылову. Вот действия лучше запускать в отдельном потоке. При этом может начаться клёв на другую снасть и нужно одновременно вылавливать и другой.
Здесь у нас к первой причине присоединяется и вторая.

Всё это сопровождается возможностью включать/отключать отдельные слежения (ветки кода) не городя кучу условий.

Другой пример: в давние времена, когда деревья были большими, а версия кликера маленькой, писал я скрипт на зомби ферму. Скрипт выполнял по кругу очень продолжительные и сложные действия. В основном всё работало нормально в пределах нескольких часов. Но если дольше, флеш сильно сжирал память уставал и начинал падать. Если сбои по причине интернета или браузера были очень редкими и на них писать код проверки было мало смысла, то с этим сбоем надо было решать. Решаем стандартно, следим за каким нибудь постоянным элементом игры который при падении пропадает или проверяем не появилось ли сообщение о падении (сбоев было несколько и каждый нужно ловить по своему). Написал подпрограмму проверки на сбой и при сбое действия по устранению и GOTO на старт скрипта с начала. Теперь вопрос когда и где вызывать эту подпрограмму проверки. Начал раскидывать её максимально по скрипту, внутри больших и средних по продолжительности циклов с действиями, после основных блоков. Мало. Внутри часто использующихся блоков... Стало легче, но полностью вопрос не решило.
Потому, что в скрипте было много циклов ожидания изменений на экране и с необязательным появлением картинки и с обязательным. С необязательным не так критично, а вот с обязательным нужно было добавлять вызов проверки ещё и внутрь всех этих циклов ожидания. Стало всё не очень хорошо и уж совсем не красиво и неудобно. Я до сих пор не уверен не пропустил ли я потенциальные места для проверки.
К тому же простой перезапуск всего скрипта с самого начала не подходил, он был не с самого начала, а после некоторой части инициализаций. К тому же пришлось перешерстить все переменные и задать им начальные значения не полагаясь на значения по умолчанию, ведь после перехода в начало переменные уже были использованы и там хранилось много разных значений которые нужно было сбросить.
Вот когда в кликере появились потоки эту задачу стало гораздо проще реализовать. И работала она намного надёжнее и перезапускала правильней без выпрыгивания по GOTO из десятка подпрограмм и нескольких вложенных циклов.
Вот такие дела.

Ещё пример на 2 причину: управление кнопками типа горячих клавиш. Разные кнопки запускают/останавливают разные части кода. Даже если не нужно их одновременное выполнение, особенно если не нужно!
И если реализовывать без потоков, просто по условиям запуск можно, то с остановкой проблема. Мы даже если вовремя поймаем нажатие кнопки управления (тоже вопрос как это сделать не раскидывая по скрипту капсулы из условий меняющих флаг или выпригивающих по GOTO), то если менять флаг нам всё равно нужно дождаться окончания действия или подпрыгнуть ближе к этому окончанию. С потоками же мы просто останавливаем или приостанавливаем нужный поток и всё.

Спасибо за очень доходчивый комментарий!

Из всего этого мне реально интересно несколько скриптов в одном, чтобы запускать каждый отдельной комбинацией клавиш.
Сейчас каждый день открываю 3 разных кликера, но в случае СТОП происходят проблемы. Было бы круто, чтобы одна комбинация клавиш гарантированно остановила скрипт. Тем более давно была идея создать больше команд для более мелких задач, но открывать каждый день по 5-8 кликеров из разных папок геморно.

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

Как это реализовать?

27
Доброго дня всем!

Изучаю кликерманн (очень помогает автоматизировать работу) и много раз встречал потоки.

Как потоки помогают вам в кликере? Есть реальные примеры, где потоки реально принесли пользу? В чем они помогли?

Спасибо за ответ!

Прочитал статью http://crapware.aidf.org/forum/index.php?topic=1491.0 , но так и не понял смысл реального применения

28
На удивление вставил первоначальный скрипт и всё заработало:)
Статья 69. ВРЕДИТЕЛЬСТВО
Вредительство — активно, и в то же время тайно, проводимые действия для нанесения вреда. Либо умышленное неисполнение обязанностей, приводящее к нанесению вреда — саботаж.

В своей исторической речи на совещании хозяйственников 23 июня 1931 года Иосиф Сталин предупреждал:

«...Вредители есть и будут, пока есть у нас классы, пока имеется капиталистическое окружение»

Сталин, Вопросы ленинизма, 10-е изд., стр. 461 ;D

Я честно не понимаю, почему в первом варианте сначала не заработало.

29
Спасибо! Помогли:)
Теперь импортозамещение молока и кефира будет развиваться новыми темпами :)

30
Не знаю что ты ещё изменил. Первоначальный код работал и работает
Quote
STRCONCAT*1
Молоко*1
количество*2
imk*1
words*4

На удивление вставил первоначальный скрипт и всё заработало:)

Pages: 1 [2] 3 4 ... 9