Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: SimplY on May 27, 2022, 12:13:53 PM
-
Всем хорошего настроения:)
Подскажите, как лучше сделать?
Запуская скрипт идёт копирование слова. Затем второй раз копирование другого слова и т.д. Слова разные, но иногда повторяются.
Суть в том, что если одно слово скопировано менее 10 раз, причем не важно за какой период, за последний час или в течение нескольких лет, то скрипт продолжается по сценарию А, а если более 10 раз, то по сценарию Б.
То есть данные должны храниться где-то на компе. Например, в текстовом файле, чтобы если закрыть кликерманн, а завтра открыть его снова, то данные сохранялись.
У кого какие идеи, как это можно сделать? Есть соображения скопированное слово помещать в текстовый файл, а затем фиксировать там кол-во скопированных одинаковых слов. Сначала думал просто все скопированные слова кидать в столбик, а потом как-то считать кол-во одинаковых строк в файле и если их больше 10, то вариант Б, но это быстро засорит файл и кликер будет работать медленно.
Есть идея формировать файл по типу:
Молоко*12
Сметана*4
Сахар*8
Соответствено если скопировалось слово "сахар", то Сахар*8 меняется на Сахар*9, но как это реализовать я не знаю. Если затем копируется слово Лимонад к примеру, а такого слова нет в файле, то создается новая строка Лимонад*1
Может как-то ещё можно сделать? У кого какие идеи?
Прикрепляю скриптик
FOR($a=0,$a<3)
LCLICK(637,149) // Выделение слова
WAITMS(10)
END_CYC
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#C)
KEYUP (#CTRL)
WAITMS (50)
$imk = FROMCLIP() // Слово в переменной
// Например, $imk = Молоко
// Если слово Молоко было скопировано более 10 раз за всю жизнь, то уведомление об этом, иначе уведомление о том, что лимит ещё есть.
Второй скрипт должен обнулять слово. Например, скопирован Лимонад и в том же файле Лимонад*0
Буду благодарен за ответы!
-
скопировано менее 10 раз, то скрипт продолжается по сценарию А, а если более 10 раз...
А если ровно 10 раз? ;D
-
$imk = FROMCLIP()
$file = "words.txt"
$word = STRCONCAT($imk, "*")
$len_file = TFCOUNT($file)
FOR($i=1, $i <= $len_file)
$str = TFREAD($file, $i)
$pos = STRPOS($str, $word)
IF($pos > 0)
// слово уже есть
$count = STRCUT($str, STRPOS($str, "*") + 1, 10)
INC($count)
TFDELETE($file, $i)
TFWRITE($file, STRCONCAT($word, $count))
$i = 500000
END_IF
WAITMS(5)
END_CYC
// слова ещё нет
IF($i < 500000)
TFWRITE($file, STRCONCAT($word, 1))
END_IF
IF($count <= 10)
// сценарий А
ELSE
// сценарий Б
END_IF
Если слов много, считывать лучше в массив
-
А если в ini записывать слово в качестае параметра и увеличивать значение пока не больше десяти? Было бы намного проще и быстрее, и пофиг на количество слов. Или в ини кирилица не прокатит? Нет возможности проверить...
-
скопировано менее 10 раз, то скрипт продолжается по сценарию А, а если более 10 раз...
А если ровно 10 раз? ;D
То тоже вариант Б 🤣
-
$imk = FROMCLIP()
$file = "words.txt"
$word = STRCONCAT($imk, "*")
$len_file = TFCOUNT($file)
FOR($i=1, $i <= $len_file)
$str = TFREAD($file, $i)
$pos = STRPOS($str, $word)
IF($pos > 0)
// слово уже есть
$count = STRCUT($str, STRPOS($str, "*") + 1, 10)
INC($count)
TFDELETE($file, $i)
TFWRITE($file, STRCONCAT($word, $count))
$i = 500000
END_IF
WAITMS(5)
END_CYC
// слова ещё нет
IF($i < 500000)
TFWRITE($file, STRCONCAT($word, 1))
END_IF
IF($count <= 10)
// сценарий А
ELSE
// сценарий Б
END_IF
Если слов много, считывать лучше в массив
Массив это же много переменных, а переменные хранятся только во время текущего запуска скрипта, или я что-то не знаю?
Слов порядка двух тысяч
Спасибо, возможность проверить будет в понедельник
-
$imk = FROMCLIP()
$file = "words.txt"
$word = STRCONCAT($imk, "*")
$len_file = TFCOUNT($file)
FOR($i=1, $i <= $len_file)
$str = TFREAD($file, $i)
$pos = STRPOS($str, $word)
IF($pos > 0)
// слово уже есть
$count = STRCUT($str, STRPOS($str, "*") + 1, 10)
INC($count)
TFDELETE($file, $i)
TFWRITE($file, STRCONCAT($word, $count))
$i = 500000
END_IF
WAITMS(5)
END_CYC
// слова ещё нет
IF($i < 500000)
TFWRITE($file, STRCONCAT($word, 1))
END_IF
IF($count <= 10)
// сценарий А
ELSE
// сценарий Б
END_IF
Если слов много, считывать лучше в массив
Ошибка:
Если первый раз делать, то норм, но если слово до звездочки уже есть в файле, то выплывает окно
Ошибка при интерпритации строки INT($count)
И как сделать, чтобы другой скрипт обнулял результат слова? Например: Находит слово Лимонад в строке и не важно, какое число после звёздочки, удаляет строку.
-
Ошибка:
Если первый раз делать, то норм, но если слово до звездочки уже есть в файле, то выплывает окно
Ошибка при интерпритации строки INT($count)
Скрипт написан и проверялся на версии 4.13.14x32
И не INT($count), а INC($count) если используется более старая версия, то возможно нужно привести переменную к числу принудительно
$count = INT($count)
Но на указанной версии будет всё нормально и так.
И как сделать, чтобы другой скрипт обнулял результат слова? Например: Находит слово Лимонад в строке и не важно, какое число после звёздочки, удаляет строку.
Блин, ну все команды же уже есть, ну подумай немного, разбери их. Там даже дописывать ничего не нужно, только удалить часть строк.
-
но если слово до звездочки уже есть в файле, то выплывает окно
Ошибка при интерпритации строки INT($count)
почему до звёздочки?
$count = STRCUT($str, STRPOS($str, "*") + 1, 10)
в данном случае в переменную копируются 10 символов строки после звёздочки!
Вам на месте конечно виднее, но я бы перед копированием проверял длину строки, чтоб не давать команду на копирование того чего нет.
и после этой строки на время отладки добавил вывод переменной $count в лог, чтоб сразу стало понятно на что ругается следующая строка.
Вы уже года три эту Кефирную тему разрабатываете - Достойно уважения на фоне массы за полчаса "сломавших Всю голову" и "Всё уже перепробовал" (кроме заглянуть в справку или меню команд ;D)
-
Ошибка:
Если первый раз делать, то норм, но если слово до звездочки уже есть в файле, то выплывает окно
Ошибка при интерпритации строки INT($count)
Скрипт написан и проверялся на версии 4.13.14x32
И не INT($count), а INC($count) если используется более старая версия, то возможно нужно привести переменную к числу принудительно
$count = INT($count)
Но на указанной версии будет всё нормально и так.
И как сделать, чтобы другой скрипт обнулял результат слова? Например: Находит слово Лимонад в строке и не важно, какое число после звёздочки, удаляет строку.
Блин, ну все команды же уже есть, ну подумай немного, разбери их. Там даже дописывать ничего не нужно, только удалить часть строк.
// ===================== Работа с файлом ========================
FOR($a=0,$a<3)
LCLICK(636,150) // Выделяет имя
WAITMS(5)
END_CYC
copy()
$imk = FROMCLIP()
$imk = FROMCLIP()
$file = "база нз.txt"
$word = STRCONCAT($imk, "*")
$len_file = TFCOUNT($file)
FOR($i=1, $i <= $len_file)
$str = TFREAD($file, $i)
$pos = STRPOS($str, $word)
IF($pos > 0)
// слово уже есть
$count = STRCUT($str, STRPOS($str, "*") + 1, 10)
LOGWRITE ($count)
WAITMS(20)
$count = INC($count)
LOGWRITE ($count)
WAITMS(20)
TFDELETE($file, $i)
TFWRITE($file, STRCONCAT($word, $count))
$i = 500000
END_IF
WAITMS(5)
END_CYC
// слова ещё нет
IF($i < 500000)
TFWRITE($file, STRCONCAT($word, 1))
END_IF
IF($count < 5)
$peiod = 2
ELSE
IF($count < 10)
$peiod = 10
ELSE
$dialog = DIALOGBOX("Искать?", 4, 2)
IF ($mr = 6)
print("Да")
ELSE
print("Нет")
END_IF
END_IF
END_IF
ОШИБКА:
Ошибка интерпритации строки IF($count < 5)
Поразбирался. Если поменять поставить случайно набранную переменную, то ошибки не возникает.
Поставил запись в лог, чтобы понять, что $count в себе содержит
14:36:27 INC("INC("
14:36:27 INC("INC("INC("")
Версия кликера 4.13.014 x64
-
но если слово до звездочки уже есть в файле, то выплывает окно
Ошибка при интерпритации строки INT($count)
почему до звёздочки?
$count = STRCUT($str, STRPOS($str, "*") + 1, 10)
в данном случае в переменную копируются 10 символов строки после звёздочки!
Вам на месте конечно виднее, но я бы перед копированием проверял длину строки, чтоб не давать команду на копирование того чего нет.
и после этой строки на время отладки добавил вывод переменной $count в лог, чтоб сразу стало понятно на что ругается следующая строка.
Вы уже года три эту Кефирную тему разрабатываете - Достойно уважения на фоне массы за полчаса "сломавших Всю голову" и "Всё уже перепробовал" (кроме заглянуть в справку или меню команд ;D)
Звёздочка как разделяющий символ слово и кол-во. Можно конечно было бы просто ри каждом копировании кидать снова слово как строку, но файл будет большой и читаться будет долго
Про длинну строки хорошая идея. Попробую сделать, может и получится:)
Да-да-да)))) Я импортозамещаю сельское хозяйство ;D ;D ;D
-
$count = INC($count)
14:36:27 INC("INC("
14:36:27 INC("INC("INC("")
Версия кликера 4.13.014 x64
Что такое
$count = INC($count)
Где ты его взял?
-
$count = INC($count)
14:36:27 INC("INC("
14:36:27 INC("INC("INC("")
Версия кликера 4.13.014 x64
Что такое
$count = INC($count)
Где ты его взял?
Изменил на
$count = INT($count) и проблема исчезла
Но до сих-пор при копировании Кефир сначала Кефир*1, При повторном копировании слова Кефир*0 и далее Кефир*0
-
Не знаю что ты ещё изменил. Первоначальный код работал и работает
STRCONCAT*1
Молоко*1
количество*2
imk*1
words*4
-
Не знаю что ты ещё изменил. Первоначальный код работал и работает
STRCONCAT*1
Молоко*1
количество*2
imk*1
words*4
На удивление вставил первоначальный скрипт и всё заработало:)
-
Спасибо! Помогли:)
Теперь импортозамещение молока и кефира будет развиваться новыми темпами :)
-
На удивление вставил первоначальный скрипт и всё заработало:)
Статья 69. ВРЕДИТЕЛЬСТВО
Вредительство — активно, и в то же время тайно, проводимые действия для нанесения вреда. Либо умышленное неисполнение обязанностей, приводящее к нанесению вреда — саботаж.
В своей исторической речи на совещании хозяйственников 23 июня 1931 года Иосиф Сталин предупреждал:
«...Вредители есть и будут, пока есть у нас классы, пока имеется капиталистическое окружение»
Сталин, Вопросы ленинизма, 10-е изд., стр. 461 ;D
-
На удивление вставил первоначальный скрипт и всё заработало:)
Статья 69. ВРЕДИТЕЛЬСТВО
Вредительство — активно, и в то же время тайно, проводимые действия для нанесения вреда. Либо умышленное неисполнение обязанностей, приводящее к нанесению вреда — саботаж.
В своей исторической речи на совещании хозяйственников 23 июня 1931 года Иосиф Сталин предупреждал:
«...Вредители есть и будут, пока есть у нас классы, пока имеется капиталистическое окружение»
Сталин, Вопросы ленинизма, 10-е изд., стр. 461 ;D
Я честно не понимаю, почему в первом варианте сначала не заработало.