Автокликер Clickermann :: Форум
Основной раздел => Предложения => Topic started by: Johnny on November 02, 2013, 08:03:50 AM
-
Clickermann v4.14.003 beta x32
Последняя сборка:
http://crapware.aidf.org/forum/index.php?topic=356.msg31199#msg31199
Последний патч к последней сборе:
http://crapware.aidf.org/forum/index.php?topic=356.msg33511#msg33511
-
Подпрограмма тупит,
LOGCLEAR
sub(Клик, $x, $y)
print("x: ", $x, " y: ",$y)
MOVE($x,$y)
WAITMS(500)
end_sub
Клик(195,266) // работает
Клик(197,376) // не работает
Клик(213,620) // не работает
HALT
Лог:
13:53:20 x: 195 y: 266
То есть отрабатывает только первый Клик(195,266), но если добавить задержку после Клик(195,266), отработает два раза, но не три...
LOGCLEAR
sub(Клик, $x, $y)
print("x: ", $x, " y: ",$y)
MOVE($x,$y)
WAITMS(500)
end_sub
Клик(195,266) // работает
WAITMS(100)
Клик(197,376) // работает
WAITMS(100)
Клик(213,620) // не работает
WAITMS(100)
HALT
Лог:
13:58:30 x: 195 y: 266
13:58:31 x: 197 y: 376
-
обновлено. смелее господа.
-
обновлено. смелее господа.
Ещё с 4.8 не все освоились)))
Джонни!
Спасибо за труд!
Есть просьба оформлять посты так , чтобы понятно было о чем идет речь, для широкого кругу.
В твиттере даже непонятно, что выкладывать о 4.9.
Не буду же я писать о том, что нашли баг.
Второе.
Давно просил, чтобы диалоговое окно могло вылетать поверх окна браузера.
Крайне неудобно, когда при работе скрипта сначала нужно закрыть браузер , тыцнуть в диалог, и снова открыть браузер.
Я просто перестал пользоваться полезной функцией из-за этого.
-
о 4.9 ничего не нужно выкладывать потому что даже не факт что она будет 4.9, что она выйдет такой и тд.
тут просто проверяем работоспособность будущих версий. до релиза еще далеко.
думаешь я помню кто что просил. я запоминаю только если многие просили :D
какое из диалоговых окон поверх то?
-
о 4.9 ничего не нужно выкладывать потому что даже не факт что она будет 4.9, что она выйдет такой и тд.
тут просто проверяем работоспособность будущих версий. до релиза еще далеко.
думаешь я помню кто что просил. я запоминаю только если многие просили :D
какое из диалоговых окон поверх то?
Я тоже не раз говорил...
Да любое. Хоть INPUTBOX хоть DIALOGBOX.
-
FOR в подпрограмме не работает, если передаются параметры.
Выкидывает или ошибку или переменная не меняется.
LOGCLEAR
$a=0
FOR($a, $a<5)
LOGWRITE ("$a ",$a)
END_CYC
LOGWRITE (" ")
SUB (smoothly, $b, $c)
//$i=0
$h = "ехали медведи на велосипеде"
FOR($i, $i<5)
LOGWRITE ("$i ",$i)
END_CYC
END_SUB
smoothly (10, 10)
HALT
Если перед FOR нет любой строки (кроме комментариев) - ошибка.
Если есть любая строка $h = "ехали медведи на велосипеде" - переменная не наращивается.
Если в SUB не передаются параметры - всё нормально.
На всякий случай делал использование передаваемых параметров, думал вдруг из-за того что не используются... Мимо, всё по прежнему.
-
о 4.9 ничего не нужно выкладывать потому что даже не факт что она будет 4.9, что она выйдет такой и тд.
тут просто проверяем работоспособность будущих версий. до релиза еще далеко.
думаешь я помню кто что просил. я запоминаю только если многие просили :D
какое из диалоговых окон поверх то?
Я тоже не раз говорил...
Да любое. Хоть INPUTBOX хоть DIALOGBOX.
Ну да.
Точно.
Досадное неудобство проги.
Оно так и идет по новым версиям.
-
4,9 тоже не видит второй монитор как и 4,8?
-
yes, im a wizard
да вроде видит. если винда видит то видит и кликер.
-
у меня не видит, наверное это потому что разрешение второго монитора ниже чем у основного
-
Скачать: NO_LINK
Бета тест закончился?)
Поддерживаю на счет - "Окна INPUTBOX и DIALOGBOX, и BREAK поверх всех окон". Ощутимо нужна такая фича, даже если есть 3-4 вызова таких функций в скрипте, очень муторно возиться с окнами (INPUTBOX и DIALOGBOX), которые зарыты под другими "чужими" открытыми окнами. Особенно, когда окно появилось, скрипт стоит, окно зарыто под толстым слоем других окон, пользователь и не догадывается, что скрипт стоит... а скрипт стоит... а пользователь не догадывается... а скрипт стоит...
Хотелось бы добавить еще для этих окон несколько параметров -
0) для (INPUTBOX, DIALOGBOX) включение вывода поверх и отключение вывода поверх всех окон =]
1) координаты места для (INPUTBOX, DIALOGBOX), в котором всплывает такое окно... (а всплывать оно будет поверх почти всегда неожиданно и норовить подставить одну из своих кнопок под "инерционный" клик пользователя, который по инерции кликает/работает в другой программе без кликермэна) (да и обладатели 2ух мониторов оценят по достоинству фичу)
2) для (DIALOGBOX), т.с. для полного счастья и творчества, хотелось бы - пользовательские кнопки... 8,9,10 и тд... с пользовательскими именами... к примеру DIALOGBOX("message", button8="start", button9="continue").
3) для (INPUTBOX, DIALOGBOX) параметр "message" не помешало бы снабдить форматированием "переводом на новую строку" (htmlый Тег <br>)... когда длинный текст с кучей условий и пояснений, его без форматирования тяжело читать... и вникать, особенно когда подзабываешь конкретику...
-
yes, im a wizard
да вроде видит. если винда видит то видит и кликер.
Кстати, при переносе скрипта , допустим на ноут, с другим разрешением экрана.
Простое пропорциональное деление - умножение пикселей на коэффициент , - не помогает.
Приходится полностью переписывать коры в операциях.
Мож я чего-то не понимаю?
-
А мне не нравится размер message'a у INPUTBOX("message", "default", [delay])... 10 или 15 символов (остальной текст обрезается), особо не развернешься. К примеру.
Если хотите "тот-то то-то тот-то то-то" нажмите 1. Если хотите "это это-это-это" нажмите 2. Если хотите "туда сюда" нажмите 3. Если хотите "еще большего" нажмите 4.
В сообщение к боксу ваш писательский труд обрезают до следующего, что крайне не удобно:
Если хотите "тот-то то-то т
-
может не туда, извиняюсь, но хотел предложить сделать colormode(8) градиент серых тонов
сейчас у меня эта команда сохраняет черный экран
-
Срочно в нумер. Не успеваю к новому году ничего толком отшлифовать.
Быстренько быстренько тестим версию 4.9 http://rghost.net/51309744 постарался учесть огрехи на которые мне указали, но доделал далеко не все.
справка есть, список изменений есть
ищем вопиющие ошибки, из-за которых может сорваться завтрашний традиционный новогодний апдейт
объективно, основные проверочные скрипты внутри (большой тест Oraven'а (надо допилить в связи с изменениями кстати) + мой на тест новых фич)
-
sub_name() корежит автовыравнивание (именно из-за sub вначале)
HALT вырубает кликер с любым числом в параметре
HALT(0)
Дополнил и исправил Шаблоны и константы
-
ну это неприятно но не критично. хальт вообще так и должен работать..
если это все то надо запиливать.
-
Ай яй яй... Как же это в последний день... Совсем нет времени покопаться. Да и родные не поймут если буду сидеть втыкать.
Всех с наступающим Новым Годом! Всем побольше свободного времени, благодаря автоматизации.
-
просто потом праздники а потом еще всякие штуки и короче не скоро бы я что-то выпустил.
а так починил хотя бы баг 6 параметров на который уже стали люди натыкаться - уже хватит для обновки.
-
Ну опять не без косяков... яж исправил файл keywords.txt
А у тебя потеряны сейчас
ARRSIZE
ARRPUSH
ARRPOP
SCANPXL
SCANPICTURE
В шаблонах я заключил в скобки
(Ctrl+C).txt
(Ctrl+V).txt
(Ctrl+X).txt
чтобы они были выше всех, но старые то шаблоны, без скобок зачем оставил?
Кароч HAPPY NEW YEAR ;D
-
4.9
Не работает IF_PICTURE_IN
-
hotfixed
-
4.9.001
В keywords.txt еще HINTPOPUP нехватает, но вот что вытворяет твой хотфикс у меня :o
Я просто сидел в редакторе дорабатывал Большой тест и вдруг переполнение оперативной.
Потом тоже самое произошло при запуске кликера через скрипт.
Подтверждено, запуск кликера через скрипт вызывает немереное пожирание оперативной!
-
как это не забавно по похоже пришло время и тебе сказать "покажи уж скрипт" потому что мне воспроизвести ситуацию не удалось на Win7 x64
более того, запуск именно через скрипт вообще ничем особо не отличается
единственный случай когда мне удалось спровоцировать утечку памяти, это некорректная работа с массивами. то есть просто скрипт без задержки тупо добавлял и добавлял элементы в массив. при этом, если корректно подчищать хвосты (через arrpop или undefine) то все впорядке.
единственное место, где я накосячил - это то что при остановке скрипта память, выделенная массиву, не освобождается.
кстати, напоминаю что и scan'ы так же раздувают массив, если его последующая обработка идет без arrpop или финального undefine
так что посмотри (и покажи) еще раз что ты там такое делаешь. такое же поведение кстати должно быть и в 4.8 тогда уж
-
Хм, действительно пожирание оперативной вызывает только "Большой тест". и похоже после того как я туда добавил "switch"
Действительно дело в "switch". Пожирание происходит в момент загрузки скрипта в кликер.
Пишем два свитча подряд, нажимаем "применить" и кликер отжирает больше гига оперативы.
SWITCH($var)
CASE(1)
// случай 1
case(2)
// случай 2
DEFAULT
// случай по умолчанию
END_SWITCH
SWITCH($var)
CASE(1)
// случай 1
case(2)
// случай 2
DEFAULT
// случай по умолчанию
END_SWITCH
halt
-
был такой момент, да. поправил его и еще пару недочетов
-
Есть один вопрос не касающийся функционала. Нужно что-то делать с "файл помощи не грузиться у меня" - вот прямо сейчас.
Проблема имеет какие-то совсем не разумные масштабы... Сделать пункт в меню где описать что делать если справка не открывается или там readme какой нибудь.
То же касается и двух справок. Может стоит их слить вместе...(знаю что обсуждалось давно). Или на худой конец сделать ссылки рядом на обе и в редакторе и в основном окне. Или перекрёстные разделы из одной на другую. Если честно, на заре сам так попался. Открыв основную и прочитав мне и в голову не пришло, что это не всё.
-
Ды онлайн справку надо прикрутить к сайту и проблема решится при том что переделывать то почти ничего не надо. И да справка должна быть в едином файле.
-
ну вообще-то это описано в справке. описание подпрограммы должно быть выше ее вызова. пока так.
второй пример... нельзя его как то упростить? выкинуть все лишнее, при этом сохранив баг?
-
Удалось изолировать баг. Оказалось все дело в цикле WHILE и подпрограммы в нем. Переменная изменена но цикл не прерывается. Если же за комментировать помехи() то все работает нормально.
LOGCLEAR
// Помехи
SUB(помехи)
LOGWRITE ("ПОМЕХИ")
END_SUB
SUB(приглашение)
LOGWRITE ("Начинаю цикл")
$a = 0
WHILE($a = 0)
помехи()
WAITMS(500)
$a = 1
LOGWRITE ("переменная A: ", $a)
END_CYC
LOGWRITE ("заканчиваю цикл")
END_SUB
приглашение()
LOGWRITE ("Конец")
HALT
-
Еще один багнутый пример с циклом
sub(test)
$test = 1
end_sub
$test = 0
while ($test = 0)
wait (1)
test ()
print ($test)
end_cyc
halt
-
Дополню: Если задать sub с параметрами, то игнорируется первая строка в цикле, начиная со второго круга.
sub(test,$test)
$a = $test
print(0)
end_sub
$a = 0
while ($a = 0)
print(2)
print(3)
print(4)
wait (1)
test (1)
print ($a)
end_cyc
halt
-
Такая же ситуация с циклом FOR
$test1 = 1
sub(test,$test)
$test1 = $test
end_sub
for ($a, $a < $test1)
print("1 строка")
print("2 строка")
print("3 строка")
waitms (200)
test (10)
print ($a, ":" ,$test1)
end_cyc
halt
print("1 строка") - выполняется только 1 раз и цикл не прекращается при не соблюдении условия
-
с наскоку не решить, увы.
пока воздержитесь от вызова подпрограмм в цикле
-
Дополню: Если поставить задержку в цикле, хоть от 1 мкс то все глюки исчезают(Если задать sub с параметрами, то игнорируется первая строка в цикле, начиная со второго круга.)sub(test,$test)
$a = $test
print(0)
end_sub
$a = 0
while ($a = 0)
WAITMS(50)
print(2)
print(3)
print(4)
wait (1)
test (1)
print ($a)
end_cyc
halt
-
На втором цикле выскакивает ошибка.
sub(test,$a1,$a2,$a3)
print($a1)
print($a2)
print($a3)
end_sub
$a = 0
while ($a = 0)
test (1,2,3)
WAITMS(500)
LOGWRITE ("конец")
$a = 1
end_cyc
halt
-
да все все. я уже нашел в чем ошибка, но пока понятия не имею как ее решить потмоу что ошибка в самой концепции.
еще раз. вызов подпрограммы из цикла гарантированно приведет к какой либо ошибке. держите это пока в голове.
-
Обнаружил новую "странность".
Скрипт
$a = FROMCLIP()
TOCLIP($a)
HALT
В буфер копируем
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
А в логе получаем обрезанную строку у которой в начале от куда то кавычки нарисовались :o
"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-
Обнаружил новую "странность".
да нет, это как раз описано. начиная с версии 4.8 максимальная длина переменной 255 символов. и числа в том числе (каламбур лол).
приведенная тобой строка-число как раз длинее, отсюда и странность.
-
далее
Патч 4.9.004
- вроде бы исправляет проблему вызова подпрограмм из цикла
- добавляет screenshotex, позволяющий скриншотить отдельные области
http://rghost.net/52008255
тестим, проверяем
-
SCREENSHOTEX - супер. Теперь можно делать заготовки картинок таким скриптом.
$x1 = $_xmouse
$y1 = $_ymouse
MOVE($x1 + 15, $y1 + 15)
WAITMS(50)
GETSCREEN
SCREENSHOTEX($x1, $y1, $x1 + 10, $y1 + 10, "name", 0)
HALT
-
Обнаружил новую "странность".
да нет, это как раз описано. начиная с версии 4.8 максимальная длина переменной 255 символов. и числа в том числе (каламбур лол).
приведенная тобой строка-число как раз длинее, отсюда и странность.
Обрезание как раз предсказуемо, я имел ввиду "кавычки" возникающие в начале. В 4.8 такого не происходит.
-
Ура! Заработало, вроде.
Можно переходить на 4.9?
-
Пока старые скрипты 4.8 в 4.9 оживить не удалось.
Можно ли в шапке к этой теме сделать сообщение , как нужно изменить прежний скрипт 4.8, чтобы он заработал в 4.9?
Или рано ?
-
Пока старые скрипты 4.8 в 4.9 оживить не удалось.
Можно ли в шапке к этой теме сделать сообщение , как нужно изменить прежний скрипт 4.8, чтобы он заработал в 4.9?
Или рано ?
Вроде изменения коснулись только сабов
SUB(MYSUB)
END_SUB
Вместо GOSUB(MYSUB) писать MYSUB() и описание подпрограммы должно быть выше её вызова, потому что подпрограммы теперь работают как функции.
P.S. И FOR с нуля теперь
-
Вместо GOSUB(MYSUB) писать MYSUB() и описание подпрограммы должно быть выше её вызова, потому что подпрограммы теперь работают как функции.
P.S. И FOR с нуля теперь
Спасибо)
Но нельзя ли показать это же самое на простеньком, НО рабочем скрипте, чтобы не было лишних ошибок и вопросов.
-
FOR:
FOR($a, $a < 5)
PRINT($a)
END_CYC
HALT
В 4.9 версии результат (0,1,2,3,4). В предыдущих (1,2,3,4,5)
//--------------------------------
//--------------------------------
SUB(mysub1)
print(1)
END_SUB
//--------------------------------
SUB(mysub2)
print(2)
END_SUB
//--------------------------------
mysub2() //Вызов подпрограммы
mysub1() //Вызов подпрограммы
//--------------------------------
SUB(summa, $a, $b, $c)
$summa = $a + $b + $c
print($a," + ", $b," + ", $c ," = ", $summa)
END_SUB
//--------------------------------
summa(5,6,7)
summa(10,20,30)
//--------------------------------
SUB(name, $str)
PRINT($str , $name, "!")
END_SUB
$name = INPUTBOX("Введите имя", "", 10)
name("Привет ")
name("Пока ")
HALT
P.S. Вот еще пример вызов функции факториал:
//--------------------------------
SUB(mysub,$n)
$f = 1
FOR($a, $a < $n)
$f = $f*($a + 1)
END_CYC
print($n, "! = ", $f)
END_SUB
//--------------------------------
mysub(5)
HALT
-
Спасибо )
Так понятнее.
Вопрос по старым скриптам остался.
Сейчас масса сабов из версии 4.8 должна быть как-то переделана?
Как?
Пример небольшого саба версии 4.8, переделанный в 4.9 , если можно.
-
//--------------------------------
SUB(mysub1)
print(1)
END_SUB
//--------------------------------
SUB(mysub2)
print(2)
END_SUB
//--------------------------------
mysub2() //Вызов подпрограммы в 4.9
GOSUB(mysub2)//Вызов подпрограммы в 4.8
//--------------------------------
mysub1() //Вызов подпрограммы в 4.9
GOSUB(mysub1)//Вызов подпрограммы в 4.8
HALT
-
Теперь понял.
GOSUB вообще отсутствует.
Там где раньше был GOSUB теперь нужно писать просто название саба .
Например, mysub ().
А что в скобках и зачем они?
-
Теперь понял.
GOSUB вообще отсутствует.
Там где раньше был GOSUB теперь нужно писать просто название саба .
Например, mysub ().
А что в скобках и зачем они?
В скобках пишут параметры для переменных но если их нет то скобки тоже нужны но пустые. Сколько параметров столько должно быть и переменных.
// подпрограмма
SUB(клик,$x,$y)
MOVE($x,$y)
WAITMS(100)
LDOWN($x,$y)
WAITMS(100)
LUP($x,$y)
WAITMS(100)
END_SUB
// вызов подпрограммы (обязательно ниже подпрограммы) передает параметры в переменные
клик(200,350)
клик(400,350)
клик(570,350)
-
Спасибо )
Есть ли особые примечания к 4.9?
Речь багах , или командах, которые новичкам ( или простым юзерам ) пока не стоит применять ?
-
Спасибо )
Есть ли особые примечания к 4.9?
Речь багах , или командах, которые новичкам ( или простым юзерам ) пока не стоит применять ?
С инклудами пока проблема
http://crapware.aidf.org/forum/index.php?topic=1054.0 (http://crapware.aidf.org/forum/index.php?topic=1054.0)
-
ограничение в 5 значений функции пока нерешаемо? я про print(раз,два,три,четыре,пять, шесть_нерабочий)
-
ограничение в 5 значений функции пока нерешаемо? я про print(раз,два,три,четыре,пять, шесть_нерабочий)
print работал и в ранних версиях. Вот проверь$a = "Однажды, "
$b = "в студеную "
$c = "зимнюю "
$d = "пору, "
$e = "Я из лесу "
$f = "вышел; "
$g = "был сильный "
$h = "мороз."
PRINT($a,$b,$c,$d,$e,$f,$g,$h)
halt
-
ограничение в 5 значений функции пока нерешаемо? я про print(раз,два,три,четыре,пять, шесть_нерабочий)
Давно уже исправлено
-
Можно ли добавить поддержку относительных путей для include?
Неудобно все инклюды за собой по проектам таскать дублируя.
Чтобы поддержка была переместиться на уровень вверх и войти в другую папку:
#include "..\lib\mylib.cms"
Или хотя бы жёстко от папки projects... как сделано в LOAD.
-
так оно как бы работает.
ты чет с путями перемудрил или за текущей папкой не уследил (выводится в заголовке редактора)
-
так оно как бы работает.
ты чет с путями перемудрил или за текущей папкой не уследил (выводится в заголовке редактора)
Да, что-то намудрил. Попробовал написать с нуля - заработало.
-
А, плагины работают? Ни как не получается
CALL("plugin.dll", 1, 2, 3)
print("result: ", $_return1)
plugin.dll брал из Clickermann v4.5 В дугих версиях примеров не встречал. Пользую v4.9005
Хотетелось бы менюшку в начале скрипта наворакать
-
Clickermann v4.10
http://rghost.net/53359219
В этом номере
* Размер данных хранимых переменной больше не ограничен 255 символами
* Добавлен восьмой фильтр для colormode, приводящий изображение к черно-белому
* Добавлена поддержка приоритетных скобок для логических выражений [spoiler]На самом деле все переписано целиком. Теперь есть поддержка битовых и логических операций в контексте общих вычислений.
К примеру $var = 5 > 3 вернет "1" а $var = 5 < 3 вернет "0"
$var = 170 & 15 вернет "10" (битовое произведение 170 и 15)
В общем случае условие считается истинно, когда оно не равно нулю
// истинно всегда
if(10)
print("ad")
end_if
// ваш любимый бесконечный цикл
while(1)
// smthn
end_cyc
А вот поддержка альтернативного набора написания "and", "or", "xor" пока не реализована а возможно будет свернута
[/spoiler]
* На радость самым маленьким, полностью переписан механизм записи. Он стал точнее и вероятность что ему что-то помешает записать уменшилась в разы
* Для цикла for добавилась возможность задать начальное значение параметра (*)
[spoiler]
// можно и так
for($i, $i<5)
print($i)
end_cyc
// и так
for($i=5, $i<10)
print($i)
end_cyc
// и даже так
for($i=(5-10), $i<0)
print($i)
end_cyc[/spoiler]
* Поддержка расширенного рабочего стола
* Прочие мелкие исправления, общая оптимизация быстродействия
-
А вот поддержка альтернативного набора написания "and", "or", "xor" пока не реализована а возможно будет свернута
Не понял о чем это?
$a = 2
$b = 2
IF(($a = 2) and ($b = 2))
LOGWRITE ("Верно")
ELSE
LOGWRITE ("Не верно")
END_IF
IF(($a = 2) & ($b = 2))
LOGWRITE ("Верно")
ELSE
LOGWRITE ("Не верно")
END_IF
HALT
все работает?!
При записи записываются два нажатия с разными кодами.
Нажимаю Левый Ctrl
keyDown(17) // Нажать Ctrl
waitms(0)
keyDown(162) // Нажать Левый Ctrl
waitms(533)
keyUp(17)
waitms(0)
keyUp(162)
Ошибка если в CASE указывается минусовое число
$a = 10
SWITCH($a)
CASE(-1)
LOGWRITE ("-1")
CASE(0)
LOGWRITE ("0")
DEFAULT
LOGWRITE ("нет")
END_SWITCH
HALT
Выдает ошибку
GETSCREEN
IF((PXL(83,529) = 32768) and (PXL(1107,149) = 9925458))
LOGWRITE ("ДА")
ELSE
LOGWRITE ("НЕТ")
END_IF
HALT
-
Clickermann v4.10
* Добавлен восьмой фильтр для colormode, приводящий изображение к черно-белому
* Добавлена поддержка приоритетных скобок для логических выражений
очень вкусно протестим
-
А вот поддержка альтернативного набора написания "and", "or", "xor" пока не реализована а возможно будет свернута
Не понял о чем это?
уже не имеет значения, доработано.
-
Неожиданно наткнулся на небольшие грабли при создании скриншотов в тестовой версии Clickermann v4.10.
Не получилось создать скриншот с именем вида "colormode_2 - 0000.bmp", как это можно сделать в версии Clickermann v4.9 (build 005).
Тестировалось в Windows 7 SP1 x64.
$colormode = 2 // Режим 2 просто для примера
SCREENSHOT("colormode - ") // Работает
WAITMS(50)
SCREENSHOT("colormode - colormode - ") // Работает
WAITMS(50)
SCREENSHOT($colormode) // Работает
WAITMS(50)
SCREENSHOT(STRCONCAT("Колормод_", $colormode, " - ")) // Работает
WAITMS(50)
SCREENSHOT(STRCONCAT("colormode_", $colormode, " - ")) // НЕ работает
WAITMS(50)
SCREENSHOT(STRCONCAT("colormode блаблабла colormode")) // НЕ работает
WAITMS(50)
SCREENSHOT(STRCONCAT("colormodeблаблаблаcolormode")) // НЕ работает
Получается, что при использовании функции STRCONCAT(), для создания имени скриншота, нельзя дважды использовать сочетание букв "colormode". Мелочь конечно, но может прервать работу скрипта, если это не учитывать.
-
Неожиданно наткнулся на небольшие грабли при создании скриншотов в тестовой версии Clickermann v4.10.
Не получилось создать скриншот с именем вида "colormode_2 - 0000.bmp", как это можно сделать в версии Clickermann v4.9 (build 005).
Тестировалось в Windows 7 SP1 x64.
$colormode = 2 // Режим 2 просто для примера
SCREENSHOT("colormode - ") // Работает
WAITMS(50)
SCREENSHOT("colormode - colormode - ") // Работает
WAITMS(50)
SCREENSHOT($colormode) // Работает
WAITMS(50)
SCREENSHOT(STRCONCAT("Колормод_", $colormode, " - ")) // Работает
WAITMS(50)
SCREENSHOT(STRCONCAT("colormode_", $colormode, " - ")) // НЕ работает
WAITMS(50)
SCREENSHOT(STRCONCAT("colormode блаблабла colormode")) // НЕ работает
WAITMS(50)
SCREENSHOT(STRCONCAT("colormodeблаблаблаcolormode")) // НЕ работает
Получается, что при использовании функции STRCONCAT(), для создания имени скриншота, нельзя дважды использовать сочетание букв "colormode". Мелочь конечно, но может прервать работу скрипта, если это не учитывать.
Дело не в скриншоте. Проблема в STRCONCAT.
Он неправильно реагирует на or внутри слова интерпретируя его как логический оператор
print (STRCONCAT("colormode"))
Выдаёт: col|mode
А
print (STRCONCAT("colandmode"))
col&mode
Короче проблема альтернативного задания логических. Или случайный парсинг строки.
-
Очередная обновка
http://rghost.net/53359219
Помимо вышеупомянутого (http://crapware.aidf.org/forum/index.php?topic=356.msg4960#msg4960), добавлена поддержка неск.мониторов (расширенный рабочий стол)
Так же написал сумбурную статью про битовые операции и логику (условия) для версии 4.10
http://crapware.aidf.org/forum/index.php?topic=1134.0
-
Дополнил Шаблоны функцией "SCREENSHOTEX", а еще в "keywords.txt" упорно в последних версиях, не хватает "HINTPOPUP"
Новый функционал это хорошо, но не ужели так сложно сделать "Сохранить" и "Сохранить как..."
Зачем делить загруженные скрипты на history.txt и history_editor.txt?
Не мешало бы сделать проверку на существование скриптов и автоматически удалять устаревшие ссылки при запуске кликера.
-
добавлена поддержка неск.мониторов (расширенный рабочий стол)
У меня два монитора. Версия кликермана 4,9. Работает alt + Q во втором мониторе, клики кликаются по второму монитору. Не понятно, что включает в себя новая поддержка неск.мониторов для новой версии?
-
Не понятно, что включает в себя новая поддержка неск.мониторов для новой версии?
графон
-
Новая 4.10 версия лезет в интеренет хотя проверка обновлений выключена.
-
так это вы мне главное ответьте. ваши скрипты нормально выпонляются на новой версии то?
-
так это вы мне главное ответьте. ваши скрипты нормально выпонляются на новой версии то?
Гоняю бота на последней версии, проблем нет. А то я уже написал бы :)
-
У меня спотыкается на одном скрипте. Вот он переделанный под 4.9. Всё работает, на 4.10 встаёт.
В инклюде лежит саб. В сабе условие проверяет один из принятых сабом параметров.
Ошибка интерпретации строки...
-
ммм.. есть проблема с проверкой условия с участием строк (вообще забыл про них). попробуем поковырять.
-
Может так же, как и везде. Пустая строка False 0...
Ну и сравнение... хм. Ну равно/не равно понятно, а больше/меньше - длина? А булевы? Нах?
Да, и тогда уж в булевы not для полного счастья, а то как то неполноценно выходит.
-
а больше/меньше - длина?
Больше/меньше - алфавитный порядок
-
а больше/меньше - длина?
Больше/меньше - алфавитный порядок
Это самое очевидное. Но практического применения в таком виде практически не видел. Мёртвый груз. Разве что для цифр.
-
а больше/меньше - длина?
Больше/меньше - алфавитный порядок
Это самое очевидное. Но практического применения в таком виде практически не видел. Мёртвый груз. Разве что для цифр.
Только для упорядочивания в алфавитном порядке и используется наверное)))
-
лето прошло и надо снова возвращаться к станку
Clickermann v4.11 (18.08.14)
промежуточная сборка
http://rghost.net/57532953 (exe)
tfwritearr("filename", $arr) - записывает массив в текстовый файл, каждый элемент в новую строку
filename - выходной файл
$arr - входной массив
tfreadarr("filename", $arr) - считывает массив из файла, каждую строку в отдельный элемент
filename - входной файл
$arr - выходной массив
[spoiler=Пример]// generate primary array
for($i, $i<30)
$arr_out[$i] = rnd(1,99)
end_cyc
// save primary array
tfwritearr("arr_save.txt", $arr_out)
// load to second array
tfreadarr("arr_save.txt", $arr_in)
// print second array
for($i, $i<30)
print($arr_in[$i])
end_cyc
halt
[/spoiler]
strseparate("str_in", "divider", $arr) - разбивает строку на отдельные подстроки, помещаемые в массив
str_in - входная строка
divider - подстрока-разделитель
$arr - выходной массив
[spoiler=Пример]strseparate("login:pass:email", ":", $arr)
for($i, $i<arrsize($arr))
print($arr[$i])
end_cyc
halt
[/spoiler]
getscreen обзавелся четырьмя необязательными параметрами, позволяющими очертить область экрана, которая попадет в буфер. действительно, кусочек экрана берется быстрее чем целый экран, однако выигрыш составляет всего несколько милисекунд. но все же. getscreen без параметров работает как и ранее
ну и традиционные очередной виток борьбы с динамической типизацией и некоторые прочие мелкие фиксы
все важные фиксы у меня выписаны в todo, некоторые темы я читаю периодически, поэтому про свич в свиче например можете не напоминать :)
-
Не плохо бы увидеть todo, что бы не дёргаться :)
-
:) Спасибо! :)
-
Почему бы не вынести некоторые настройки в "Директивы препроцессора"
Например задержка в кликах для некоторых скриптов вообще не нужна, для других требуется большая задержка чем 30 мс
#smart_delay "0"
Запускаю кликер, загружаю скрипт не заходя в редактор
GETSCREEN
SCREENSHOT
HALT
В результате черная картинка. Первый GETSCREEN не работает. Только после второго GETSCREEN или повторонго запуска скрипта появляется картинка.
Возникает всегда один раз после запуска кликера.
Хоть и заявлено что кликер работает с полными путями, однако это не работает. Например записать значение в INI находящийся совершенно в другой папке вызывает ошибку.
-
strseparate вещь, спасибо. Костылик заполнения теперь в урну.
getscreen обзавелся четырьмя необязательными параметрами, позволяющими очертить область экрана, которая попадет в буфер. действительно, кусочек экрана берется быстрее чем целый экран, однако выигрыш составляет всего несколько милисекунд. но все же. getscreen без параметров работает как и ранее
У меня тесты показали значительный прирост скорости. Странно, что у тебя всего несколько мс.
Поиск картинки 18х17 без колормода прозрачности и процентов. Экран 1280х1024.
- GETSCREEN - полный экран
IF_PICTURE_IN - полный экран (0,0, $_xmax,$_ymax)
Время getscreen 60-70 мс
Время всего теста ~308-330 мс
- GETSCREEN - область (1066,908, 1102,938)
IF_PICTURE_IN - полный экран (0,0, $_xmax,$_ymax)
Время всего теста ~232-234 мс
- GETSCREEN - полный экран
IF_PICTURE_IN - область (1066,908, 1102,938)
Время всего теста ~60-70 мс
(здесь время поиска практически 0)
- GETSCREEN - область (1066,908, 1102,938
IF_PICTURE_IN - область (1066,908, 1102,938)
Время getscreen 0-1 мс
Время всего теста ~1-2 мс
Сначала делал тесты в цикле на 10-30 повторов, результат впечатлил.
И то это на новом рабочем компе где сейчас GETSCREEN 60-70 мс, а на старом у меня GETSCREEN был 250-300 мс вот где была засада. При ожидании картинки часто один цикл лишний и много времени терялось.
Дома на экране 1920х1080 думаю выгода от GETSCREEN будет ещё больше.
В 4.10 вот такой код
$a = "abc"
LOGWRITE ($a)
$b = $a+" cde"
LOGWRITE ($b)
выдавал
11:19:53 abc
11:19:53 "abc"+" cde"
В 4.11 уже лучше
11:18:32 abc
11:18:32 abc+ cde
ещё бы от плючиков избавится и STRCONCAT пойдёт лесом.
-
Многопоточность! Макросы! Исправление надоевших ошибок! Безудержное веселье!
Все это в Clickermann v4.11
http://rghost.net/58335471 (full zip)
Подробнее напишу позже как протрезвею, если возникнет необходимость (что вряд ли учитывая что эту тему посещяет только цвет нации)
Макросы - тема двухлетней давности http://crapware.aidf.org/forum/index.php?topic=65.0, на стадии реализации, пока имеет то что имеем
Многопоточность так же упоминалась тут http://crapware.aidf.org/forum/index.php?topic=329.0
-
потоки мегавкусняшка, а вот макросы не нашел описания как их использовать
ps. еще компиляцию в exe и я откажусь от затеи кодить свой преферанс с поэтессами ::)
-
потоки мегавкусняшка, а вот макросы не нашел описания как их использовать
Это чуть ниже "ДИРЕКТИВЫ ПРЕПРОЦЕССОРА"
Вот пример.
WAIT(2)
#define #A:RNDFROM("#Q","#W","#E")
KEYPRESS(#A)
Так можно создать мутационный код
-
Приостанавливать поток хорошо, но необходимо также перезапускать поток, начинать выполнение с начала..
Дополнил "Команды и Шаблоны" новыми функциями. Добавил подписи к каждому пункту, для новичков будет полезно.
А вот и баги...
Кнопка "Сохранить" поломалась. Выскакивает "Сохранить как" причем в коренной папке кликера.
Upd..
Оказалось дело не в Сохранить а в Применить. Именно после нажатия или запуска скрипта происходит сброс папки.
Ошибка в справке.
ARRPUSH ссылка "на официальном форуме." распространяется и на параметры и примеры.
Баг
Если скрипт состоит из одних только потоков, то кликер после запуска невозможно остановить, только пауза работает.
thread(Поток1)
print("Поток 1")
wait(5)
end_thread
thread(Поток2)
print("Поток 2")
wait(1)
end_thread
Нестабильность
Устойчивость понизилась. Тестирую час а уже полно зависаний. Использую многопоточность. Причем виснит как то беспорядочно, то работает отлично а то на ровном месте "программа не отвечает".
Вот что пишет в errorlog.txt
03.10.2014 23:04:25 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
03.10.2014 23:05:02 Access violation at address 01CA4D53. Write of address 57A0A1ED
03.10.2014 23:05:38 Invalid pointer operation
BREAK не работает, как и в 4.10 :-\
-
Открыл файл Справки > Основные конструкции > THREAD (потоки), читаю...
Поток представляет собой независимую цепочку действий, выполняющихся одновременно с основным телом скрипта (он же родительский поток) и другими потоками.
... ВСЁ! БАШНЮ СОРВАЛО!!! АААААААААА!!!! Урааа!!!
Это ПРАЗДНИК, со слезами на глазах! Вот СПАСИБО! :) Вот ЭТО ПОДАРОК! Да с ЭТИМ мы БОГИ!!!!
Спасибо Johnny! :)
P.S. Завтра тестить буду, сегодня голова несможет вместить такое. Так об этом мечтал, что теперь даже боюсь спугнуть эту радость!
Всё, я курить и в WoW, всех уделаю релизной v4.10 (build 003) напоследок! :) А уж завтра!... 8)
-
ладно разберемся. новшество сильно новое видимо.
с рандомными зависаниями еще интереснее.. есть какой нить скрипт чтоб погонять?
но "разберемся с вашей помощью" будет по-быстрее. погоняйте глючную версию, посмотрите на предметы зависаний, закономерностей. если повис, смотрите что пишет errorlog.txt (он очищается при каждом запуске имейте ввиду).
-
Точно установлено что в errorlog.txt пишутся ошибки при нажатии кнопки "Стоп" если скрипт не запущен.
Удалось добиться зависаний 8)
Игра Clicker Heroes
http://www.clickerheroes.com/ (http://www.clickerheroes.com/)
Играю в Мазилле. Кликер подключается к флешке через оконный режим.
Далее запускаю, останавливаю,запускаю, останавливаю,запускаю, останавливаю и бац программа не отвечает.
Иногда выскакивает ошибка интерпретации IF($time2 < $_time_t). После этого кликер невозможно остановить а в логе ошибок пишет "Thread Error: Отказано в доступе (5)"
05.10.2014 18:27:21 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:27:21 Access violation at address 004C6CBA in module 'Clickermann.exe'. Read of address FFFFFFFC
05.10.2014 18:27:21 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:27:22 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:29:48 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:29:48 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:29:48 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:29:49 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:29:51 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:29:51 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:31:05 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:31:07 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000A
05.10.2014 18:31:20 Access violation at address 004A7150 in module 'Clickermann.exe'. Read of address 0000000F
05.10.2014 18:45:41 Invalid pointer operation
05.10.2014 18:45:44 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:45 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:47 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:49 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:50 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:51 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:51 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:53 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:53 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:54 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:54 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:54 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:54 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:57 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:57 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:57 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:57 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:59 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:59 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:59 Thread Error: Отказано в доступе (5)
05.10.2014 18:45:59 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:01 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:01 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:02 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:02 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:02 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:03 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:12 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:13 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:13 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:13 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:13 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:14 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:15 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:15 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:17 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:18 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:18 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:18 Thread Error: Отказано в доступе (5)
05.10.2014 18:46:19 Thread Error: Отказано в доступе (5)
05.10.2014 18:49:48 Invalid pointer operation
05.10.2014 18:49:50 Invalid pointer operation
05.10.2014 18:49:51 Invalid pointer operation
05.10.2014 18:49:51 Invalid pointer operation
05.10.2014 18:49:52 Invalid pointer operation
05.10.2014 18:49:53 Invalid pointer operation
05.10.2014 18:49:54 Invalid pointer operation
05.10.2014 18:49:54 Invalid pointer operation
Там приложен скрипт и файл сохранения
-
ммм.. есть проблема с проверкой условия с участием строк (вообще забыл про них). попробуем поковырять.
if ( $sString = "" )
в Clickermann v4.11 вызывает ошибку интерпретации (в 4.10.003 всё норм.)
-
Включаю-выключаю это все понятно и впринципе примерно ясно где баг. Там то что называется есть риск остановить в неправильное время (и судя по всему в неправильном месте).
А вот в процессе работы оно не висло? То есть просто запустил, нажал плей и она крутится?
-
Да виснит, вот еще пример. На втором проходе скрипта кликер виснит
Upd..
Понял почему виснит. Переменная в for теперь не сбрасывается, в результате на втором проходе цикл пропускается и функция tfwritearr пытается записать несуществующий массив. Все дело в tfwritearr
THREAD(name1, 0)
for($b, $b<1000)
ARRPUSH($arr_out, rnd(1,99))
end_cyc
$check1 = 1
SETTHREAD (name1, 0)
END_THREAD
THREAD(name2, 0)
for($с, $с<1000)
ARRPUSH($arr_out, rnd(1,99))
end_cyc
$check2 = 1
SETTHREAD (name2, 0)
END_THREAD
//=============================================
$ms = $_ms
for($a, $a<2000)
ARRPUSH($arr_out, rnd(1,99))
end_cyc
tfwritearr("arr_save_1.txt", $arr_out)
LOGWRITE ("Тест 1: ",$_ms-$ms)
UNDEFINE($arr_out)
$ms = $_ms
SETTHREAD (name1, 1)
SETTHREAD (name2, 1)
WHILE(($check1 = 0) | ($check2 = 0))
WAITMS(20)
END_CYC
$check1 = 0
$check2 = 0
tfwritearr("arr_save_2.txt", $arr_out)
LOGWRITE ("Тест 2: ",$_ms-$ms)
UNDEFINE($arr_out)
//HALT // Без хальта на втором проходе висяк
-
Сколько не включал/выключал явного сбоя не добился xp sp3
Хотя мне кажется какой-то поток не останавливался.
-
Там в Командах и шаблонах что я написал есть ошибка
Файл qinsert_menu.txt стока 237 не хватает точки с запятой в конце
Define - Объявляет макрос; #define find:replace;
Надо исправить, иначе этот пункт работать не будет.
-
Там в Командах и шаблонах что я написал есть ошибка
Файл qinsert_menu.txt стока 237 не хватает точки с запятой в конце
Define - Объявляет макрос; #define find:replace;
Надо исправить, иначе этот пункт работать не будет.
91 наверно хотел так?:
IF( ); IF($a = $b);
И почему вот это в вычислениях дублируется вместе с работой с файлами?
TFREADARR - Считывает массив из файла; TFREADARR("file.txt", $arr);
TFWRITEARR - Записывает массив в текстовый файл; TFWRITEARR("file.txt", $arr);
И это в вычислениях, вместо строковых функций:
STRSEPARATE - Разбивает строку на подстроки; STRSEPARATE("1:2:3:4", ":", $arr);
-
91 наверно хотел так?:
IF( ); IF($a = $b);
Нет там пример, опять же зачем вставлять в скрипт какие то $a = $b? Чтоб потом тратить время на удаление.
Пункты дублируются для удобства, там три пункта массивов дополнились еще тремя. Хочешь что то с массивами написать, вот они все в кучке. Лучше больше чем меньше.
STRSEPARATE надо бы тоже сдублироть к строкам.
Про удобство
Можно ли сделать так чтобы после клика по пункту, менюшка не скрывалась?
Например я хочу вставить LDOWN LUP, приходится два раза лезть в Команды.
Или может использовать правую клавишу для серийной вставки команд?
Вот последний исправленный вариант.
-
Насчёт лишних, да.
Я просто смотрю по аналогии. Ведь в
FOR($a, $a < 5)
у тебя вставлено, то что потом придётся удалять. И не только там.
Я давно там всё правлю в упрощённую сторону и без вставки комментов.
А, например подпрограммы сразу с оформлением разделителями.
-
Развлекаетесь?
Я патч принес. Вроде более менее удалось синхронизировать потоки, глючить должно меньше. Или вообще не должно.
Так же вроде решил все (почти все) упомянутые тут ранее проблемы.
http://rghost.net/58397900 (exe)
[spoiler=Пример]Скрипт с двумя параллельными потоками для игры The Escapists. При зажатой R, тыкает попеременно Q и E. В игре это нужно для качалочки.
Обратите внимание, что все потоки, как и основной, должны иметь паузу что бы процессор смог перевести дух. Подбирается индивидуально под ваш CPU.
thread(hr1)
if($flag = 1)
keypress(#q)
waitms(20)
keypress(#e)
waitms(20)
end_if
waitms(10)
end_thread
thread(hr2)
if(iskeydown(#w) = 1)
$flag = 1
else
$flag = 0
end_if
waitms(10)
end_thread
[/spoiler]
Про удобство
Можно ли сделать так чтобы после клика по пункту, менюшка не скрывалась?
Например я хочу вставить LDOWN LUP, приходится два раза лезть в Команды.
Или может использовать правую клавишу для серийной вставки команд?
возможно и можно, но довольно трудозатратно. это стандартная менюшка винды. так придется изобретать свой велосипед.
хочешь вставлять больше одной строки? милости прошу в шаблоны
Понял почему виснит. Переменная в for теперь не сбрасывается
очередное дисциплинирующее нововведение, да. с другой стороны в ряде случаев позволяет сэкономить костыли и не портить изящество кода
-
[spoiler=Пример использования потока в боте]Слежение за мышью в потоке. Если курсор не двигается заданное количество секунд то можно предположить что бот застрял.
THREAD(name, 1)
IF(($sx = $_xmouse)|($sy = $_ymouse))
IF($moustime < $_time_t)
HALT
END_IF
WAITMS(50)
ELSE
$moustime = $_time_t + 60
$sx = $_xmouse
$sy = $_ymouse
WAITMS(50)
END_IF
END_THREAD
WAIT(1)
[/spoiler]
Понял почему виснит. Переменная в for теперь не сбрасывается
очередное дисциплинирующее нововведение, да. с другой стороны в ряде случаев позволяет сэкономить костыли и не портить изящество кода
Дело не в FOR а в TFWRITEARR. Попытка записать отсутствующий массив приводит к зависанию. И этот патч это все еще не исправляет.
TFWRITEARR("file.txt", $arr)
HALT
Баг
Если в ходе выполнения скрипта (любого) в редакторе нажать Применить то кликер невозможно остановить.
-
Дело не в FOR а в TFWRITEARR. Попытка записать отсутствующий массив приводит к зависанию. И этот патч это все еще не исправляет.
минутка занимательного программирования
посмотрел, там оказывается очень забавный баг. там расчитывается максимальный индекс как размер_массива-1. При нулевом массиве получаем 0-1. Однако сама переменная беззнаковая. Следовательно вместо -1 мы получаем четыре миллиарда (итераций по добавлению пустоты, которые вешают по).
похожая ошибка, известная как Сумасшедший Ганди, была в игре Цивилизация
почитать на лурке http://lurkmore.to/Civilization#.D0.A1.D1.83.D0.BC.D0.B0.D1.81.D1.88.D0.B5.D0.B4.D1.88.D0.B8.D0.B9_.D0.93.D0.B0.D0.BD.D0.B4.D0.B8
Если в ходе выполнения скрипта (любого) в редакторе нажать Применить то кликер невозможно остановить.
ну вы совсем уже... к таким же примерно результатам приведет попытка открыть другой сценарий в момент выполенния первого.
-
ну вы совсем уже... к таким же примерно результатам приведет попытка открыть другой сценарий в момент выполенния первого.
Однако в 4.10.003 нажатие Применить останавливает скрипт.
Юзеры своими рученками куда только не тыкнут, надо учитывать все.
-
Ко всем запрещённым кнопкам подвести напряжение :D ;D
-
да нет, всеголишь требовать ввести 20 значный пароль с разными регистрами знаками и разными раскладками
-
И опять справка.
HGETTEXT
Устаревший пример
// Пример 2 (через строковую переменную)
$h = hget(44,1010)
%text = hgettext($h)
print( %text )
-
На счет функционала
В редакторе есть кнопка "Очистить", на самом деле когда мы хотим создать новый скрипт, мы жмем эту кнопку, и редактор очищается но связь с сохраненным файлом все еще остается. Теперь нажав "Сохранить" можно легко испортить предыдущий скрипт.
Нужно чтобы эта кнопка работала как "Новый скрипт", с очисткой редактора и потерей связи с предыдущем файлом.
А то пользователи все еще теряют скрипты по невнимательности
http://vk.com/topic-14410794_21900056?post=21129 (http://vk.com/topic-14410794_21900056?post=21129)
-
Ну что господа, надо заканчивать.
Релиз кандидат
http://rghost.net/58574248 (full distr)
Добавил чуток новых команд по заявкам трудящихся. Подправил те да се файлы. Даже удалось снизить уровень агрессии вирустотала.
За всеми подробностями в хистори.
-
+ WNDGETINFO
+ WNDSETINFO
+ WNDBUMP
спасибо огромное, не хватало
Johnny, огромная просьба в главном окне рядом с копирайтом показывать версию
-
Держишь кучу версий? Зачем? Последняя настолько хороша что там даже не надо ARRPOP в INT() оборачивать.
Ну, надпись то поправить недолго. Или вон, в строку состояния вывести.
-
$htxtnew=STRCUT2($htxt,1, STRLEN($htxt)-STRLEN($hname)
пропущенная последняя скобка насмерть вешает программу
справедливо для 4.10 и 4.11. в других не пробовал.
И, если уже в этой версии не будет изменен интерфейс особо, добавьте кнопочку "поверх всех окон" для главного окна, и запоминание размеров+положения для окна редактора, хотя бы, будет хорошее начало на будущее.
-
Держишь кучу версий? Зачем?
у себя на компе я разберусь ещё, какая версия работает
а вот у игроков, пользующихся моими скриптами - гораздо сложнее
з.ы. спору нет – хороша
-
Баг
Причем и в 4.10 тоже
Функция EXECUTE не вызывает файл "Тест.txt" если скрипт был загружен из списка "ранее использованных скриптов"
Запускаем кликер, нажимаем загрузить скрипт "Тест запуска файла.cms", запускаем и открывается файл "Тест.txt", все работает.
Теперь закрываем кликер.
Запускаем снова но теперь загружаем скрипт из списка ранее использованных, запускаем... тишина, файл "Тест.txt" не запускается.
-
Баг
Причем и в 4.10 тоже
Не подгружается путь до скрипта и соответственно рабочий каталог где находится скрипт не учитывается, остаётся корень самого кликера.
Если текстовик перенести туда всё работает.
Значит и изображения и другие файлы из папки со скриптом находить не будет.
-
Значит и изображения и другие файлы из папки со скриптом находить не будет.
Нет, картинки он подхватывает, из текстовика считывает, проблема именно в EXECUTE.
-
Просто очередной частный случай о которых упоминается изредка в хистори...
http://rghost.net/58645560
надо уже публиковать в среду четверг ли
-
Справка:
Плагины
...
В стандартную поставку дистрибутива включены три исходника-примера плагинов. Один дл Delphi, другой для C++ Builder, третий для Visual Studio 2005.
...
Я уже и забыл в какой последней версии были эти примеры :)
надо бы их вернуть, или удалить из справки
-
Я думаю их совершенно не нужно пихать в сборку, а прикрутить отдельным архивом в разделе загрузка на главном сайте. При том что образцы совершенно не меняются.
-
Баг?
Если поток изначально не был запущен, то потом его нельзя запустить.
THREAD(potok,0) // изначально выключен
LOGWRITE ("Поток")
SETTHREAD(potok, 0) // отработает и отключится
WAITMS(20)
END_THREAD
IF(iskeydown(1) = 1) // клик
LOGWRITE ("Клик")
WHILE(iskeydown(1) = 1)
WAITMS(20)
END_CYC
SETTHREAD (potok, 1) // должен запуститься поток
END_IF
WAITMS(20)
Если поставить THREAD(potok,1) то все работает нормально.
-
Баг?
Ну уж точно не фича
http://rghost.net/58661219
кому не сложно, повыдумывайте адекватных примеров для статейки про потоки
-
Многим просто необходимо жать разные клавиши в разное время
// Нажатия клавиш с разными задержками не тормозящие друг друга
THREAD(Поток A, 1)
KEYPRESS(#A) // клавиша нажимается раз в секунду
WAIT(1)
END_THREAD
THREAD(Поток B, 1)
KEYPRESS(#B) // клавиша нажимается раз в 5 секунд
WAIT(5)
END_THREAD
THREAD(Поток C, 1)
KEYPRESS(#C) // клавиша нажимается раз в минуту
WAIT(60)
END_THREAD
THREAD(Поток D, 1)
KEYPRESS(#D) // клавиша нажимается раз в 5 минут
WAIT(300)
END_THREAD
WAIT(1)
-
Зарелизил с последней опубликованной тут сборкой. В добрый путь епта.
-
А интересно, можно сделать отдельную привязку к окнам на каждый поток?
-
да можно даже буффер графический отдельный на каждый поток.
"но это уже совсем другая история"
-
Не верный код клавиши
Тут напомнили про PrintScreen в константах да и в справке написан код 154 хотя рабочим является код 44
#PRINTSCREEN 154
-
Странный баг
Ноль и точка в свитче определяется как одно и тоже. Оказалось что и в подпрограмму точка передается как 0 но при этом срабатывает секция CASE(".") :o
SUB(свитч,$l)
LOGWRITE ("Символ: ", $l)
SWITCH($l)
CASE(".")
LOGWRITE ("Точка")
CASE("0")
LOGWRITE ("Ноль")
DEFAULT
LOGWRITE ("Другое")
END_SWITCH
END_SUB
свитч("0")
свитч(".")
HALT
Лог:
23:29:59 Символ: 0
23:29:59 Точка
23:29:59 Символ: 0
23:29:59 Точка
Баг
Вложенный свитч работает нестабильно
http://crapware.aidf.org/forum/index.php?topic=1504.0 (http://crapware.aidf.org/forum/index.php?topic=1504.0)
-
Странный баг
Ноль и точка в свитче определяется как одно и тоже. Оказалось что и в подпрограмму точка передается как 0 но при этом срабатывает секция CASE(".") :o
Предсказуемо. Просто при отделении мух от котлет (числовых переменных от текстовых) наверно идёт фильтр по цифрам+точка как разделитель и возможно там же "минус". Если осталось что-то лишнее - это не число и обрабатывается как строка.
В "." ничего лишнего нет, вот и определяется как число, которое 0 (или булево 0).
Нужно при фильтрации учитывать: есть хотя бы одна цифра, тогда уже причислять к числам.
Нужно только смотреть не поломаются ли булевые значения при этом.
-
Баг
При чтении из файла функцией TFREAD вот такой строки "100|200" получаем в логе "236".
При этом функция STRREADLN читает строку правильно.
$a = TFREAD("тест.txt", 1)
LOGWRITE ($a)
$a = STRREADLN("тест.txt", 1)
LOGWRITE ($a)
HALT
-
Почему то упорно пытается то там то сям высчитывать текстовые строки.
Вот теперь битовая операция
1100100 = 100
11001000 = 200
---------------------------
11101100 = 236
-
оказывается эта проблема есть и в 4.10
версии ниже такого бага не имеют.
-
Баг
Перестали запускаться программы, работает только если указать полный путь
EXECUTE("Notepad.exe")
WAITMS(100)
EXECUTE("firefox.exe")
WAITMS(100)
HALT
-
Исправление некоторых ошибок
(список составим потом)
http://rghost.net/58857130
-
Странность.
HSET(-1,0)
$h = hget(740,400)
HSET($h,1) // *
WNDPOS($h,-2,252) //**
halt
* при попытке привязать к окну игры, защищенной HackShield(игра Silkroad), выдает ошибку интерпретации с предложением прервать выполнение, при этом в главном окне привязки не показывает(статус:выкл), а в окне редактора привязка есть(причем к нужному окну).
** с окном манипуляции выполняет, никаких ошибок.
Убедительная просьба.
Сделайте уже запоминание положения и размера окна редактора, даже после выхода из программы.
Сейчас все очень плохо, окно редактора привязано относительно главного окна, и если главное окно поднять на верх экрана к краю, или к правому краю, окно редактора откроется выходя за границы экрана, так что не видно даже крестика закрыть, и прочего, помогает только альт+ф4
И сворачивается("_"минимизировать) окно редактора не как все нормальные окна, а в огрызок окошка в левый нижний угол экрана, восстанавливать его неудобно
Спасибо, за терпение и что продолжаете улучшать проект.
-
Скорее всего проблема в 64 битной винде, привязывайся в ручную.
-
Скорее всего проблема в 64 битной винде, привязывайся в ручную.
Не. винды обычные 7 х86
Попробовал сейчас, вручную то же самое, для главного окна кликера окно невидимо, его будто нет под курсором вообще. Видно только из окна редактора, там только и можно привязать, в итоге как я и писал, в окне редактора привязка есть, а в главном - нет. Это все не спроста.
HackShield шифрует процесс каким-то образом, даже в Task Manager процесс есть, а информация о нем отсутствует вся.
Хотя кликер в самом окне прекрасно работает, смущает только описанная выше странность.
-
Баг
Если сделать запись в режиме редактора, кликер сворачивается в трей а потом не разворачивается.
-
Кликер сворачивается штатными средствами, скажем так. Я вообще практически руку к этому механизму не прикладывал.
Кстати, напоминаю, что в конфиге есть параметр only_tray, если его обнулить то кликер останется на таскбаре в любом своем состоянии
-
Кликер сворачивается штатными средствами, скажем так. Я вообще практически руку к этому механизму не прикладывал.
Кстати, напоминаю, что в конфиге есть параметр only_tray, если его обнулить то кликер останется на таскбаре в любом своем состоянии
Нет, даже если only_tray = 0 в режиме редактора комбинация Alt+R свернет кликер в трей и больше от туда его не достать. Нужно либо это исправлять, либо блокировать запись в режиме редактора.
На счет параметров, нуб использующий запись полезет копаться в конфиг файлах? Для большинства это вообще темный лес.
Давно стоит, как у людей, все это вынести в настройки.
-
У меня тут куча предложений. Стоит ли описывать? Так мешают жить некоторые вещи..., а некоторых не хватает. Особенно вспомагательных функций при создании скриптов.
Как пример, тут даже на другой проге накалякал пробный образец удобного задания области, правда я его использую в специальном вспомогательном скрипте при создании.
P.S. Версия 2 заодно копирует результат в буфер обмена в виде: x1,y1,x2,y2
Можно сразу вставлять в IF_PICTURE_IN()
-
не доверяю я всяким "калякам" в виде EXE-файла.
-
не доверяю я всяким "калякам" в виде EXE-файла.
Это программка написанная на AutoIt3. Визуально выделяет область и скидывает координаты в INI
-
У меня тут куча предложений. Стоит ли описывать? Так мешают жить некоторые вещи..., а некоторых не хватает. Особенно вспомагательных функций при создании скриптов.
ну напиши уж, посмотрим обсудим
-
не доверяю я всяким "калякам" в виде EXE-файла.
А, не вопрос
[spoiler]#include <WindowsConstants.au3>
#include <WinAPIEx.au3>
HotKeySet("{F1}", "Pause")
HotKeySet("{F2}", "Quit")
Global $draw = True, $stage = 0, $Select, $Lab, $x1, $y1
Global $trans = 150 ; прозрачность 192
Global $color1 = 0x0000FF ; перекрестие
Global $color2 = 0xFF0000 ; выделение
$sPath_ini = @ScriptDir & "\coord.ini"
$pos = MouseGetPos() ; получить текущие координыты указателя мыши
$Horz = GUICreate("", @DesktopWidth, 1, 0, $pos[1], $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor($color1)
WinSetTrans($Horz, '', $trans)
GUISetState(@SW_SHOWNOACTIVATE)
$Vert = GUICreate("", 1, @DesktopHeight, $pos[0], 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor($color1)
WinSetTrans($Vert, '', $trans)
GUISetState(@SW_SHOWNOACTIVATE)
$Select = GUICreate("", 1, 1, $x1, $y1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor($color2)
WinSetTrans($Select, '', 50)
;~ $Lab = GUICtrlCreateLabel('', $x1+1, $y1+1, 0, 0) ; фон
;~ GUICtrlSetBkColor(-1, 0xFF0000)
;~ WinSetTrans($Lab, '', 50)
GUISetState(@SW_HIDE, $Select)
; пауза
Do
$pos = MouseGetPos() ; получить текущие координыты указателя мыши
WinMove($Horz, '', 0, $pos[1]) ;Default
WinMove($Vert, '', $pos[0], 0)
;~ If $draw Then
;~ WinSetOnTop($Horz, "", 1)
;~ WinSetOnTop($Vert, "", 1)
;~ EndIf
If $stage = 1 Then
WinMove($Select, '', $x1, $y1, $pos[0]-$x1, $pos[1]-$y1)
;~ GUICtrlSetPos($Lab, $x1+1, $y1+1, $pos[0]-1, $pos[1]-1)
EndIf
; проверяем нажатие
If _WinAPI_GetAsyncKeyState(0x01) = True And $stage = 0 Then ; Нажата левая кнопка мыши первый раз
$x1 = $pos[0]
$y1 = $pos[1]
$stage = 1
WinMove($Select, '', $x1, $y1, $pos[0]-$x1, $pos[1]-$y1)
GUISetState(@SW_SHOWNOACTIVATE, $Select)
EndIf
If _WinAPI_GetAsyncKeyState(0x01) = False And $stage = 1 Then ; Отпущена левая кнопка мыши
IniWrite($sPath_ini, "coord", "x1", $x1)
IniWrite($sPath_ini, "coord", "y1", $y1)
IniWrite($sPath_ini, "coord", "x2", $pos[0])
IniWrite($sPath_ini, "coord", "y2", $pos[1])
IniWrite($sPath_ini, "coord", "state", '1')
Quit()
EndIf
If _WinAPI_GetAsyncKeyState(0x02) = True Then Quit() ; Нажата правая кнопка мыши - выход
Until Not Sleep(10)
Func Pause()
$draw = Not $draw
If $draw Then
GUISetState(@SW_SHOW, $Horz)
GUISetState(@SW_SHOW, $Vert)
GUISetState(@SW_SHOW, $Select)
Else
GUISetState(@SW_HIDE, $Horz)
GUISetState(@SW_HIDE, $Vert)
GUISetState(@SW_HIDE, $Select)
EndIf
EndFunc
Func Quit()
Exit
EndFunc
;~ #include <Misc.au3>
;~ If _IsPressed('01') Then ToolTip('ЛКМ' & @LF & MouseGetPos(0) & 'x' & MouseGetPos(1), 0, 0)
;~ If _IsPressed('02') Then ToolTip('ПКМ' & @LF & MouseGetPos(0) & 'x' & MouseGetPos(1), 0, 0)
[/spoiler]
-
Баг с LOAD
В скрипте загруженным через LOAD выскакивает ошибка на строке HALT после чего кликер невозможно остановить, он зависает на паузе.
1.cms
LOAD("bot.cms")
bot.cms
LOGWRITE ("Load")
WAIT(1)
HALT
-
Я вообще не смог загрузить LOAD(bot.cms) пока не положил bot.cms в папку projects
А HALT выдаёт в errors
01.12.2014 11:52:07 Thread _MAIN(0) raise exception
01.12.2014 11:52:13 Access violation at address 004D2EF2 in module 'Clickermann v4.11 build 001.exe'. Write of address 0000004B
-
Ну конечно же скрипты для устаревшей LOAD должны быть projects, факт в том что теперь здесь идут глюки.
-
Да и чёрт с ней. Кому этот LOAD нужен. Может кто-то привести внятный пример где без него никак?
-
Да и чёрт с ней. Кому этот LOAD нужен. Может кто-то привести внятный пример где без него никак?
Существует видимо клуб любителей GOTO, LOAD и конечно же INCLUDE.
http://vk.com/topic-14410794_21900056?post=22511 (http://vk.com/topic-14410794_21900056?post=22511)
http://vk.com/topic-14410794_26211333?post=22517 (http://vk.com/topic-14410794_26211333?post=22517)
Там просто не мыслят жизни без LOAD.
-
Да и чёрт с ней. Кому этот LOAD нужен. Может кто-то привести внятный пример где без него никак?
Существует видимо клуб любителей GOTO, LOAD и конечно же INCLUDE.
http://vk.com/topic-14410794_21900056?post=22511 (http://vk.com/topic-14410794_21900056?post=22511)
http://vk.com/topic-14410794_26211333?post=22517 (http://vk.com/topic-14410794_26211333?post=22517)
Там просто не мыслят жизни без LOAD.
Аааа.... Ну include очень даже полезная вещь. Пользуюсь часто. Но не так конечно, как некоторые, к месту и не к месту.
-
ну напиши уж, посмотрим обсудим
Сначала мелочи, о которых может и писали, но они конкретно мешают жить.
1. Пусть редактор сворачивается на панель задач, а не в значок. Плюс туда же сворачивается программа при автозапуске по #autorun.
2. Сделать наконец запоминание размеров/положения окна редактора.
3. При вставке команд из шаблонов/команд, а так же взятие цвета по Alt+Q вставлять текст в ту позицию где стоит курсор и без последующего сдвига строки. Сейчас вставляется в начало строки+переход на новую пустую строку со сдвигом существующей вниз.
Сейчас ввод строк типа:
MCLICK($_xmouse,INT($_ymouse/2))
HINTPOPUP(STRCONCAT("А вот и оно: ", $_ms), "Внимание!")
превращается в увлекательное жонглирование копипастом и backspase, которое отнимает уйму времени. Ну или всё писать руками с нуля.
4. Может можно организовать альтернативу для устаревшего STRCONCAT научив парсер складывать строки сразу. Вида:
«первая» + «вторая» результат – перваявторая
И
«первая» ++ «вторая» результат – первая вторая (с автоматическим добавлением пробела)
Только чтобы он не пытался вычислять. Т.е. если один из слагаемых "строка" все переводятся в строки и после уже коннектятся.
4.1. Добавить команду явного преобразования в строку типа str($num) - результат "100"
4.2. Починить наличие служебных символов в строках $ ( ) " - не знаю как с кавычками быть. Может как в питоне?
5. Дать возможность задавать начальный текст пустого скрипта, вместо существующего
// New Script
// Author: Anonymous
// Version: 1.0 (03.12.2014)
#name "New Script"
// begin your script here
print("Hello, world!")
halt // for single run
Понятно, что можно создать свой шаблон и открывать его в начале… но там не будет автовставки даты + можно добавить автовставку версии кликера.
6. При закрытии редактора спрашивать о сохранении скрипта если были изменения. Не только «применить». Кнопка «применить « при закрытии редактора может пусть нажимается автоматически? Здесь вопрос спорный нужно обсуждать. Но в реальности я почти всегда нажимаю дуплет «применить+сохранить»
7. При сохранении настроек в окне настроек кликера – автоматически закрывать это окно.
8. Добавить параметр команде SetThread (thread_name, state) для запуска потока с начала
SetThread (thread_name, 3) (СТОП+ ПУСК с начала)
Тогда на потоках можно будет делать отлов ошибок работы или сбоев приложений, да много чего.
Например одноразовые куски скрипта работающие параллельно.
thread(t1)
// скрипт отрабатывающий разово параллельно с основным
SetThread (t1, 0)
end_thread
// основная прога
…
SetThread (thread_name, 3)
…
…
SetThread (thread_name, 3)
Для написания и отладки
У нас не так много инструментов для удобного создания скриптов, предлагаю обсудить на добавление
9. Вылечить неработающий параметр из конфига delay_between_lines и сделать команду для изменения его программно «на лету». Это позволит при отладке управлять скоростью выполнения участков кода. Очень поможет.
10. Всё таки придумать как выводить номер работающей строки, если получится. Может какой снимок скрипта в памяти до парсинга, не знаю. Пусть будет отключаемой по toggle кнопке, если тяжёлое. Реально иногда невозможно понять куда нас занесло и зависло. Расстановка в рассыпуху десятков принтов с номерами вариант так себе…
11. Добавить дополнительную команду наподобие Alt+Q которая получает строку вида
LCLICK(478,462) // 16777215
Новое сочетание пусть вставляет только координаты в виде 478,462 прямо на место курсора. Удобно будет вписывать в Nclick-и и функции поиска.
12. Добавить кнопку (реальную, в редакторе + сочетание клавиш) по которой будем визуально задавать область со вставкой на место курсора координат области вида: 125,130,750,1020
Можно как в примере выше.
13. Добавить в редактор пару-тройку блоков которые будут хранить координаты точки. Объясняю см. вложение.
Это как ячейки памяти в калькуляторе навёл на точку нажал Alt+1 и в ячейке 1 сохранились координаты точки.
Эти координаты вписались в поле, рядом отображаются динамически высчитываемые смещения от точки до курсора.
Точек можно задать несколько, Alt+1, Alt+2, Alt+3… (фиксированное число)
Разместить рядом с полем где выводятся сейчас координаты под курсором.
Удобно можно будет запоминать ключевые точки и всегда видеть и вставлять смещение от них (shift+2 вставляет смещение от точки 2 до курсора).
14. вместо постоянного клепания проверочных находилок картинок, сделать блок/поле
где будут инпут поля куда вносим параметры как в IF_PICTURE_IN
Достаточно имени файла, прозрачности, процента и колормода
file.bmp -1 90 7
можно даже без .bmp (кстати его можно убрать и из функций, пусть .bmp по умолчанию добавляется)
И рядом кнопочка маленькая.
Вписали, нажали, и на экране подсветились прицелами все места где IF_PICTURE_IN нашёл совпадение. Даже, скорее это SCANPICTURE. Можно и список координат вывести, хотя бы десяток, можно в выпадающем поле. И одновременно скопированные в буфер обмена через запятую...
И такой же блок/поле для поиска цвета
Цвет колормод
255 0
… сразу всё и не вспомню, добавлю позже.
-
1. незнаю куда у тебя сворачивается окно редактора, но у меня это вообще проблема, сворачивает в огрызок около Пуска, и ни из трея ни из панели задач его не вызвать, приходится кликать на "развернуть" в этом огрызке.(см.вложение)
...
3. Лучше ненадо, я привык работать как есть(и многие), и чаще нужно чтоб оно так и работало, а в тех редких случаях, когда надо будет вставить строку в другую, не лень сделать это руками.
...
6. Тоже не проблема, не стоит менять.
...
11. Ни в коем случае. Эта строка работает как надо, иногда нужны координаты, иногда цвет.
12-15 вообще непонятно что это и зачем.
от себя
16. Добавить DEBUG/Watch окно, где вводим переменные и они там высвечиваются в реальном времени, раньше так было в редакторах языков (как сейчас, незнаю). (см вложение)
Существующая система не удобная, для отладки код заполнять принтами(их ведь еще и описывать надо, чтоб понять что к чему и не напутать print("Х= ", х$) ), или в паузе пкм по переменной для выяснения значения, это просто кошмар.
-
Поддерживаю все пункты, с их реализацией кликерман приблизится к положению элитной оболочки для написания скриптов :)
3. Лучше ненадо, я привык работать как есть(и многие), и чаще нужно чтоб оно так и работало, а в тех редких случаях, когда надо будет вставить строку в другую, не лень сделать это руками.
6. Тоже не проблема, не стоит менять.
11. Ни в коем случае. Эта строка работает как надо, иногда нужны координаты, иногда цвет.
12-15 вообще непонятно что это и зачем.
3. Если не понимаешь зачем это, то тебе это не нужно. Он просил не сломать, а дополнить.
6. Огромная проблема когда пишешь скрипты на сотни строк и постоянно их правишь и редактируешь, и если один раз не нажал сохранить по запарке, потом кучу времени теряешь на поиск где оно там не сохранило чтобы снова поправить. Для трехстрочных скриптов с двумя кликами это конечно не проблема.
11. Похоже ты даже не прочитал этот пункт. Там просят не изменить это, там просят добавить новое наподобие того.
12-14. Для трехстрочных скриптов с двумя кликами это бесполезно, потому и непонятно.
В перечисленных пунктах ты либо не понял о чем речь, либо не внимательно прочитал что просит Винт, либо совсем не понимаешь где и как это можно использовать.
Твой 16 пункт я тоже поддерживаю, это уже из разряда роскоши, но оно полезным будет.
-
1. незнаю куда у тебя сворачивается окно редактора, но у меня это вообще проблема, сворачивает в огрызок около Пуска, и ни из трея ни из панели задач его не вызвать, приходится кликать на "развернуть" в этом огрызке.(см.вложение)
...
3. Лучше ненадо, я привык работать как есть(и многие), и чаще нужно чтоб оно так и работало, а в тех редких случаях, когда надо будет вставить строку в другую, не лень сделать это руками.
...
6. Тоже не проблема, не стоит менять.
...
11. Ни в коем случае. Эта строка работает как надо, иногда нужны координаты, иногда цвет.
12-15 вообще непонятно что это и зачем.
от себя
16. Добавить DEBUG/Watch окно, где вводим переменные и они там высвечиваются в реальном времени, раньше так было в редакторах языков (как сейчас, незнаю). (см вложение)
Существующая система не удобная, для отладки код заполнять принтами(их ведь еще и описывать надо, чтоб понять что к чему и не напутать print("Х= ", х$) ), или в паузе пкм по переменной для выяснения значения, это просто кошмар.
1. Про это и речь. Бесит жутко.
3. Ну если пользоваться не активно и только шаблонами... гораздо проще нажать один раз ENTER ведь правда?
Чем, вставить команду - выделить вставленную строку - скопировать - вставить в нужное место - удалить две пустые строки образовавшиеся при этом. И эта котовасия происходит ПОСТОЯННО!
Ты разве не вставляешь в уже существующие команды системные переменные? А INT... а RND... а практически все команды работы со строками. Я понимаю что многие в строки и не суются, а о системных переменных не помнят... Но давайте ориентироваться на тех кто скрипт всё таки пишет. Новички которые вставят 1 шаблон в сборе и больше им ничего не нужно... ну разве можно на такое ориентироваться? (Я не конкретно о ком-то, я вообще имею ввиду).
Поторюсь, даже такие простые строки как
MCLICK($_xmouse,INT($_ymax/2))
Как вы вводите? Не напряжно? Не говоря уж о
$cena_t = STRFILTER(STRCUT2($str, 1, STRPOS($str, "руб")-1), "0123456789", 1)
$post = STRCUT2($str, $ver+STRLEN($cena_t), STRPOS($str, "цвет")-2)
6. ну тут обсуждаемо, не знаю как лучше. Но постоянное жонглирование двумя кнопками часто сбивает. То сохранил, а не применил и думаешь, почему не так работает. То применил, а не сохранил и вышел - потерял скрипт (такое случается у людей и крику полно).
Может достаточно будет полумер. Типа применение автоматом при сохранении... и автоматом при попытке запуска.
11. ты не так понял. Это остаётся как и было, добавляется похожая команда вставляющая по ГК только координаты без всяких Лкликов и цветов.
12-13. Для повышения автоматизации при написании скриптов. Особенно больших и сложных. Сейчас, даже тупо померить расстояние между точками, нужно сделать скриншот и в сторонней программе померить. Либо считать на калькуляторе глядя на координаты в редакторе.
Очень часто и этого мало, т.к. нужны расстояния и смещения от определённых точек и очень точно. Например от уже найденных изображений. Тут и вьювера мало, приходится в фотошопе ковырять. Напряжно это, а многим и не по зубам.
14. Почитай группу ВК, там у каждого второго что-то где-то не находит. Этот пункт позволит легко проверять заготовленные ресурсы. Там проблем помимо простой проверки выше крыши может быть. И простую проверку обычно пропускают.
Не нужно запускать отдельный скрипт типа
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "file.bmp",-1,85)
LOGWRITE ("Нашли ", $_return1, " / ", $_return2)
ELSE
LOGWRITE ("Не нашл")
END_IF
HALT
Или писать его сверху основного, т.к. жалко закрывать редактируемый.
Вот недавно писали. Графика простейшая, сглаживания нет совсем. Ничего не плывёт, всё фиксированно. Наразных окнах разное сочетание однотипных кнопок. Результат - нерегулярные сбои и ненахождения.
Понаделал скринов одних и тех же кнопок в разных окнах и на разной стадии сдвига в пределах окна. Начал накладывать в ФШ слоями. На части кнопок текст сдвигается вверх на 1 пиксель! Пипец. Процент не помогал, потому что фон градиентный. Пришлось искать 2-3 варианта каждой кнопки. Насколько бы быстрее мы это поняли просто запустив визуальные проверки где что находит.
16. да, забыл. Я об этом уже писал раньше.
http://crapware.aidf.org/forum/index.php?topic=50.msg8887#msg8887
http://crapware.aidf.org/forum/index.php?topic=50.msg8889#msg8889
-
6. Ну тогда ведь проще избавится от кнопки Применить вообще, автоматически применять при закрытии окна редактора или при запуске сценария, а автосейв/запрос при выходе добавить в опции.
11. добавлять почти дублирующие функции так быстрые клавиши превратятся в пианино, а со временем вообще никакой клавиатуры не хватит ))
-
6. Ну тогда ведь проще избавится от кнопки Применить вообще, автоматически применять при закрытии окна редактора или при запуске сценария, а автосейв/запрос при выходе добавить в опции.
11. добавлять почти дублирующие функции так быстрые клавиши превратятся в пианино, а со временем вообще никакой клавиатуры не хватит ))
Только предложения. Понятно что кому то и так хорошо.
6. Можно и совсем. Т.к. вопрос не критичный но навязчивый, думал хоть на полумеры согласятся.
11. Сейчас пять - это разве много? Я из них пользуюсь тремя, четвёртой-привязкой только для тестов иногда. Запись-для тестов ещё реже, единичные случаи. Добавив 3 команды в пианино не превратится.
Ну, как хотите. Моё дело предложить. Это ещё "писями по воде виляно" т.к. от Джони зависит. Ему это писать.
Я вот уже задумался часть реализовать сторонней программой, что возможно. Хоть и неудобно, не интегрировано, дольше выполнение, а некоторое я даже не представляю пока как, но хоть что-то. Не хотелось бы. Хочется всё в одном флаконе.
Аскетизма мне уже не хватает. Очень тяжело для каждого чиха держать открытым ФШ, скриншотер, вьювер, бубен, набор ключей, амулет...
-
Все ваши писули будут изучены и приняты к сведению. Как должен выглядить более менее приличный редактор я вижу каждый день, открывая радочую IDE.
Вот пока для самых нервных патчец, исправляющий невозвращающийся из трея редактор, отделяющий графические буфера редактора и скрипта, а так же исправление багов для TFReadArr
P 05.12.14
http://rghost.net/59424333
-
Заметил тут баг.
Если в названии папки есть первая "n" то заголовок косит, видать как перенос строки считается (\n).
(http://savepic.net/6237200.png)
-
Ещё одна "писуля"...
Просьба сделать, чтобы при работе с текстовыми файлами не спотыкался на пустых строках.
Пусть читается как пустая строка.
-
кликер спотыкается потому как получив из файла строку без данных (0A 0D за данные не считаются) он не знает что с этим делать. Я уже предлагал ввести константу #null с кодом 00 например, и заменять ею все пустышки
-
Кликер знает что такое пустые строки. В условиях они работают.
Вон и при чтении массива в новом исправлении тоже.
Просто при чтении из файла это не учтено.
-
14. вместо постоянного клепания проверочных находилок картинок, сделать блок/поле
где будут инпут поля куда вносим параметры как в IF_PICTURE_IN
Достаточно имени файла, прозрачности, процента и колормода
file.bmp -1 90 7
можно даже без .bmp (кстати его можно убрать и из функций, пусть .bmp по умолчанию добавляется)
И рядом кнопочка маленькая.
Вписали, нажали, и на экране подсветились прицелами все места где IF_PICTURE_IN нашёл совпадение. Даже, скорее это SCANPICTURE. Можно и список координат вывести, хотя бы десяток, можно в выпадающем поле. И одновременно скопированные в буфер обмена через запятую...
О чём мечтали большевики... Сам попросил сам написал. Правда отдельно от кликера (надеюсь пока).
http://crapware.aidf.org/forum/index.php?topic=42.msg9427#msg9427
Раньше Кликермэн вызывал Автоит, теперь наши победили и вызываю Автоитом Кликермэн.
Ну хоть можно новичкам дать, а то: "ищет но глючит", "буфер переполняется" и тому подобная лабуда...
-
Вот именно такой визуализации и недостает кликеру. Неужто вот также нельзя сделать кнопку, которая покажет таблицу со всеми участвующими переменными и их значения в реальном времени при выполнении?
-
Ошибка
После нескольких часов работы (сколько не знаю, я спал), привязанный к окну кликер (тыкал в одну точку с интервалом в минуту), зависает и не отвечает. Никаких потоков, простейший скрипт.
В версии 4,10 все было норм
-
если тыкал в браузер - за пару часов там память перегружается и все виснет
-
тыкал не в браузер. в игру. игра не повисла. повис только кликер. 4,10 не вис раньше
-
всяко бывает. добьешься стабильного воспроизведения ошибки, тогда и приходи
-
На счет предложений, может уже стоит поработать над функционалом KEYSTRING?
Есть такая программка "KeePass 2" и в ней есть авто-набор логинов и паролей, так вот она как то умудряется набирать абсолютно любые символы, даже непечатные!
(http://savepic.net/6419721.gif)
-
Стоит конечно. Давно при чём. Но только не нужно трогать кейстринг. Это же агрегатор кейпрессов. Просто нужна новая функция эмулирующая набор текстовой переменной именно в том виде как она задана. С теми же символами и в той же раскладке. Идеальное название print но оно занято хоть и не документированно.
Последнее время прямо наплыв с этим кейстрингом.
-
Многократно повторял у себя, результат один, пока не будет полного снимка функция возвращает абы что. Графический буфер должен быть чист! Редактор открывать нельзя. Кроме того при использовании GETSCREEN() + PXLCOUNT изображение, скорее всего, не обновляется.
Это вылезло после разбора этого скрипта
http://vk.com/topic-14410794_21900056?post=25879 (http://vk.com/topic-14410794_21900056?post=25879)
Может функция PXLCOUNT не правильно определяет положение этого вырезанного скрина?
-
Я проверял и с закрытым редактором и с открытым. Но до теста GETSCREEN уже отрабатывал поэтому было всё правильно.
Сейчас проблему удалось поймать. Стало заметно если первый GETSCREEN с областью и сразу после открытия скрипта GETSCREEN не прогонялся. В не зависимости открыт редактор или нет, ведь буферы разделены.
Вставил заделку скриншотов и понял что PXLCOUNT не при чём. Хотя и не сразу. PXLCOUNT считает правильно, но данные у него не те.
Короче GETSCREEN берёт область на 1 меньше по горизонтали и вертикали. Ошибка здесь.
Кто хочет может попробовать на белом фоне запустить
GETSCREEN(500,500,509,509)
SCREENSHOTEX(500,500,509,509)
Размер области 10х10 но GETSCREEN с областью берёт на 1 меньше (см. скрин). Но заметить это легче только если GETSCREEN(...) идёт первым в скрипте, тогда там чернота. А если не первым, тогда там мусор от преведущих GETSCREEN, что тоже приводит к ошибкам, но заметить их труднее.
У всех остальных функций область считается правильно.
-
Проблема
Короче, проблема в несовпадении области GETSCREEN с областями в функциях
GETSCREEN(500,500,509+1,509+1) // чтобы было правильно приходится прибавить по 1 <<== Проблема ==
SCREENSHOTEX(500,500,509,509)
-
В функциях всё правильно, неправильно в GETSCREEN
-
Memory Leak
Друзья мои, как выяснилось наш кликер имеет классические утечки памяти, которые при длительном его использовании приводят к активному поглощению памяти и в конечном итоге краше (от обжорства). Скорость прямопропорциональна задержкам в скрипте.
Я сделал над собой усилие, вышел из прокрастинации и подправил ряд базисных функций. Теперь вроде все хорошо. Однако дело нуждается в проверке.
Затестите пожалуйста не сломал ли я чего и не ушло ли что от моего взора В ПЛАНЕ УТЕЧЕК. Все прочие фиксы и предложения позже. Это первостепенная задача.
Тренд: http://crapware.aidf.org/forum/index.php?topic=1811.0
fix http://rghost.net/92nSY8Gmd
-
Баг
Нашел тут странный баг с "Не равно". Он есть и в старых версиях.
Смысл в том что условие в цикле сравнивает два элемента массива с переменными. Когда используется "равно" то все нормально, но если используется "не равно", то оператор "И" почему то работает как "ИЛИ"
LOGCLEAR
FOR($a=0,$a<400)
ARRPUSH($arr, $a)
END_CYC
$x = 356
$y = 359
LOGWRITE ("X:", $x," Y:", $y)
LOGWRITE ("РАВНО")
FOR($a=0,$a<ARRSIZE($arr),2)
IF(($arr[$a]=$x)&($arr[$a+1]=$y))
LOGWRITE ("Совпадает X:", $arr[$a]," Y:", $arr[$a+1])
END_IF
END_CYC
LOGWRITE ("НЕ РАВНО")
FOR($a=0,$a<ARRSIZE($arr),2)
IF(($arr[$a]!$x)&($arr[$a+1]!$y))
ELSE
LOGWRITE ("Совпадает X:", $arr[$a]," Y:", $arr[$a+1])
END_IF
END_CYC
HALT
Лог:
9:51:33 X:356 Y:359
9:51:33 РАВНО
9:51:33 НЕ РАВНО
9:51:33 Совпадает X:356 Y:357
9:51:33 Совпадает X:358 Y:359
-
Баг
Нашел тут странный баг с "Не равно". Он есть и в старых версиях.
Смысл в том что условие в цикле сравнивает два элемента массива с переменными. Когда используется "равно" то все нормально, но если используется "не равно", то оператор "И" почему то работает как "ИЛИ"
[spoiler]
LOGCLEAR
FOR($a=0,$a<400)
ARRPUSH($arr, $a)
END_CYC
$x = 356
$y = 359
LOGWRITE ("X:", $x," Y:", $y)
LOGWRITE ("РАВНО")
FOR($a=0,$a<ARRSIZE($arr),2)
IF(($arr[$a]=$x)&($arr[$a+1]=$y))
LOGWRITE ("Совпадает X:", $arr[$a]," Y:", $arr[$a+1])
END_IF
END_CYC
LOGWRITE ("НЕ РАВНО")
FOR($a=0,$a<ARRSIZE($arr),2)
IF(($arr[$a]!$x)&($arr[$a+1]!$y))
ELSE
LOGWRITE ("Совпадает X:", $arr[$a]," Y:", $arr[$a+1])
END_IF
END_CYC
HALT
Лог:
9:51:33 X:356 Y:359
9:51:33 РАВНО
9:51:33 НЕ РАВНО
9:51:33 Совпадает X:356 Y:357
9:51:33 Совпадает X:358 Y:359
[/spoiler]
Бага нет. Ты наступил на логические грабли. Кстати ты именно на эти уже наступал. Я кстати тоже ;D
Если коротко, то с участниками НЕ, для получения нужного тебе результата нужно ставить не И, а ИЛИ
IF(($arr[$a] ! $x) | ($arr[$a+1] ! $y))
При использовании НЕ в операндах
IF(($arr[$a] ! $x) & ($arr[$a+1] ! $y))
условие так же выполнится если оба операнда не совпадают.
Если совпадёт хоть один или не одного будет работать ELSE. Всё правильно.
В строке 25 LOGWRITE правильно должен быть написан
LOGWRITE ("Совпадает или X:", $arr[$a]," или Y:", $arr[$a+1])
тогда ты поймёшь, что всё правильно.
-
Memory Leak
Друзья мои, как выяснилось наш кликер имеет классические утечки памяти, которые при длительном его использовании приводят к активному поглощению памяти и в конечном итоге краше (от обжорства). Скорость прямопропорциональна задержкам в скрипте.
Я сделал над собой усилие, вышел из прокрастинации и подправил ряд базисных функций. Теперь вроде все хорошо. Однако дело нуждается в проверке.
Затестите пожалуйста не сломал ли я чего и не ушло ли что от моего взора В ПЛАНЕ УТЕЧЕК. Все прочие фиксы и предложения позже. Это первостепенная задача.
Тренд: http://crapware.aidf.org/forum/index.php?topic=1811.0
fix http://rghost.net/92nSY8Gmd
У меня ничего не поменялось. С запуском простого скрипта с потоком на нажатие одной кнопки с интервалом в 3 минуты. Быстро отъедается около полутора гигабайт памяти и потом со временем целевое приложение вылетает с ошибкой нехватки памяти.
-
У меня ничего не поменялось. С запуском простого скрипта с потоком на нажатие одной кнопки с интервалом в 3 минуты. Быстро отъедается около полутора гигабайт памяти и потом со временем целевое приложение вылетает с ошибкой нехватки памяти.
Покажи свой скрипт.
Уверен что скачал последнюю версию 4.11.003?
На оф страничке не написано что это 003 но на самом деле там самая последняя версия.
http://crapware.aidf.org/page/clickermann (http://crapware.aidf.org/page/clickermann)
-
Покажи свой скрипт.
Уверен что скачал последнюю версию 4.11.003?
На оф страничке не написано что это 003 но на самом деле там самая последняя версия.
http://crapware.aidf.org/page/clickermann (http://crapware.aidf.org/page/clickermann)
// СКРИПТ
// Author: АНТИКЛАН
// Version: 1.0 (25.10.2015)
#name "NAME" // Имя скрипта
//#include "subs.cms"
#ps2_mouse // Включаем режим PS/2 мыши
#ps2_keyboard // Включаем режим PS/2 клавиатуры
$HWND = WNDFIND("WINDOW", 1) // Присвоение переменной окна значения и привязка к окну
HSET($HWND, 1)
// ПОТОК
THREAD(THREAD_1)
KEYPRESS(#F5)
WAIT(RND(175,185))
END_THREAD
-
Потестил, действительно память утекает. Дело в HSET($HWND, 1).
У тебя в главном потоке снова и снова каждую миллисекунду происходит привязка HSET($HWND, 1)
Если это пример части скрипта то пиши так
// СКРИПТ
// Author: АНТИКЛАН
// Version: 1.0 (25.10.2015)
#name "NAME" // Имя скрипта
//#include "subs.cms"
#ps2_mouse // Включаем режим PS/2 мыши
#ps2_keyboard // Включаем режим PS/2 клавиатуры
IF($_hwnd = 0) // условие перестанет срабатывать после привязки
$HWND = WNDFIND("Блокнот", 0) // Присвоение переменной окна значения и привязка к окну
IF($HWND > 0)
HSET($HWND, 1) // если найдено привязываемся
SETTHREAD (THREAD_1, 1) // запускаем поток
ELSE
HINTPOPUP("Окно не найдено")
HALT // если нет, останавливаем выполнение
END_IF
END_IF
WAIT(1) // в главном потоке хорошо бы написать задержку
// ПОТОК
THREAD(THREAD_1,0)
KEYPRESS(#F5)
WAIT(RND(175,185))
END_THREAD
Если это весь скрипт то куда проще привязаться горячими клавишами Alt+W наведя мышь на окно.
#ps2_mouse
#ps2_keyboard
KEYPRESS(#F5)
WAIT(RND(175,185))
-
Потестил, действительно память утекает. Дело в HSET($HWND, 1).
У тебя в главном потоке снова и снова каждую миллисекунду происходит привязка HSET($HWND, 1)
Если это пример части скрипта то пиши так
// СКРИПТ
// Author: АНТИКЛАН
// Version: 1.0 (25.10.2015)
#name "NAME" // Имя скрипта
//#include "subs.cms"
#ps2_mouse // Включаем режим PS/2 мыши
#ps2_keyboard // Включаем режим PS/2 клавиатуры
IF($_hwnd = 0) // условие перестанет срабатывать после привязки
$HWND = WNDFIND("Блокнот", 0) // Присвоение переменной окна значения и привязка к окну
IF($HWND > 0)
HSET($HWND, 1) // если найдено привязываемся
SETTHREAD (THREAD_1, 1) // запускаем поток
ELSE
HINTPOPUP("Окно не найдено")
HALT // если нет, останавливаем выполнение
END_IF
END_IF
WAIT(1) // в главном потоке хорошо бы написать задержку
// ПОТОК
THREAD(THREAD_1,0)
KEYPRESS(#F5)
WAIT(RND(175,185))
END_THREAD
Если это весь скрипт то куда проще привязаться горячими клавишами Alt+W наведя мышь на окно.
#ps2_mouse
#ps2_keyboard
KEYPRESS(#F5)
WAIT(RND(175,185))
Вот как! Спасибо за полезное усовершенствование. Все таки нехватка опыта у меня на лицо. ;D Надо больше общаться с программистами опытными. ;D
Скажите вот эта задержка WAIT(1) в основном потоке не будет тормозить поток THREAD_1?
-
Не будет. Весь смысл потоков в этом.
Если это весь скрипт, то потоки тебе вообще не нужны.
-
А вот интересно. Почему функция HSET пожирает память? И постоянно ли она ее пожирает, или только при частом использовании...
-
А вот интересно. Почему функция HSET пожирает память? И постоянно ли она ее пожирает, или только при частом использовании...
Ну это к Джонни вопрос, где то он не докодил. Пожирание происходит каждый раз при вызове, это видно в диспетчере задач.
-
Ну это к Джонни вопрос, где то он не докодил. Пожирание происходит каждый раз при вызове, это видно в диспетчере задач.
А как вы это там увидели? Я тоже хочу посмотреть. :)
-
А вот интересно. Почему функция HSET пожирает память? И постоянно ли она ее пожирает, или только при частом использовании...
У меня не жрёт. Винда XP 32.
Добиться жора так и не смог хоть потоками хоть бесконечным HSET
-
А вот интересно. Почему функция HSET пожирает память? И постоянно ли она ее пожирает, или только при частом использовании...
У меня не жрёт. Винда XP 32.
Добиться жора так и не смог хоть потоками хоть бесконечным HSET
Вот как это выглядит.
В скрипте одна строка
HSET(2166928,1)
-
;D Я на данные процесса смотрел. При прошлой утечке всё было видно на процессе и там утекала оперативка. А здесь прямо сразу (ну так кажется) файл подкачки.
При чём данные по процессу: память и виртуальная память, стоят на месте (колеблятся туда-сюда в малых пределах).
-
включи диспетчер, вкладка быстродействие, наблюдай онлайн Хронология использования физической памяти. ::)
Не ну так то я тоже умею я думал там что-то более конкретное использовалось, что видно что и сколько пожирает))
-
Clickermann v4.12b
[spoiler=WhatsNew]v4.12.000 (13.01.16)
+ Интерпретатор:
+ Добавлены инструкции:
+ RADIOBOX
+ GETKEYSDOWN
+ GETDIRLIST
+ GETFILELIST
+ SETVAR
+ GETVAR
+ SCREENSHOTFIX
+ Изменены инструкции:
+ SETTHREAD
+ Прочее:
+ Исправлена ошибка со строками, содержащими символ "$"
+ Прочие оптимизации и исправления
[/spoiler]
http://rghost.net/8s6JSBVrP
Игрушечку вам принес. Самого ценного в апдейте наверное то что [возможно] удалось починить баг с символом того, что щас продают по 75 рублей.
Справка еще криво собралась, пересобрать смогу тока через неделю увы. Ну или сами как нибудь.
А ну и еще Ctrl+S прикрутил в редактор
-
Спасибище :)
всё вроде понятно кроме SCREENSHOTFIX
вкурил. скриншот в файл с фиксированным именем
-
Обновил меню команд и шаблонов.
Почему бы не добавить в константы NUM клавиши? Ну и в справку конечно.
#NUM0 96
#NUM1 97
#NUM2 98
#NUM3 99
#NUM4 100
#NUM5 101
#NUM6 102
#NUM7 103
#NUM8 104
#NUM9 105
В справке недостает указателей новых функций и пример GETKEYSDOWN не дописан.
И что на счет не задокументированных функций ABS и PXLREPLACE по моему они вполне рабочие.
$c = -12
$a = ABS($c)
LOGWRITE ($a)
HALT
GETSCREEN
PXLREPLACE(0,0, $_xmax,$_ymax, 255, 16777215) // заменяет красный цвет на белый
SCREENSHOT
HALT
-
пример использования GETKEYSDOWN
// только для Clickermann v4.12b
GETKEYSDOWN($arr)
IF($arr[0]!0) // проверяем значение первого элемента
$var=ARRSIZE($arr)//
FOR($a=0,$a<$var)
logwrite($arr[$a]) // печатаем, что нажато
END_CYC
$b= $arr[0]
WHILE(ISKEYDOWN($b)=1)// задержка пока клавиши ещё нажаты
WAITMS(10)
END_CYC
//LOGWRITE (" ") // разделитель
ELSE
WAITMS(150)// регулируемая задержка,при сильном увеличении возможны пропуски быстрых нажатий, при сильном уменьшении пропускается часть клавиш из сочетаний.
END_IF
Коды клавиш в буквенный вид не переводятся, вывод результата только в лог, чтоб не облегчать жизнь ламерам. ;)
-
Тоже пример
// только для Clickermann v4.12b
GETKEYSDOWN($arr)
IF(ARRSIZE($arr)>0)
FOR($a=0,$a<ARRSIZE($arr))
LOGWRITE($arr[$a]) // вывод в лог нажатых клавиш
END_CYC
WHILE(ARRSIZE($arr) > 0)
WAITMS(20)
GETKEYSDOWN($arr)
END_CYC
ELSE
WAITMS(20)
END_IF
-
Пример из БАГОВ
print ("Строки в переменных")
$str1 = "/SomeString 123"
$str2 = "/SomeString -123"
print ($str1)
print ($str2)
print ("")
print ("Строки в массиве")
arrpush ($mystr, "/SomeString 123")
arrpush ($mystr, "/SomeString -123") // <<< проблема здесь
for($i = 0, $i < 2)
print ($mystr[$i])
end_cyc
halt
Лог:
21:35:10 Строки в переменных
21:35:10 /SomeString 123
21:35:10 /SomeString -123
21:35:10
21:35:10 Строки в массиве
21:35:10 /SomeString 123
21:35:11 -123
-
Просто покажу скрины
-
И что на счет не задокументированных функций ... PXLREPLACE по моему они вполне рабочие.
GETSCREEN
PXLREPLACE(0,0, $_xmax,$_ymax, 255, 16777215) // заменяет красный цвет на белый
SCREENSHOT
HALT
Я придумал более полезную команду, которая будет закрашивать определённую область в буфере в заданный цвет. Нужно это для "затирания" определённых областей.
Я могу объяснить в каких случаях это нужно. Сейчас приходится городить трёхэтажный огород на основе старого скрипта по поиску нескольких изображений, попутно заполняя массивы уже проверенных областей для их дальнейшего исключения.
Слишком много кода и циклов на один поиск. Всё медленно.
-
Просто покажу скрины
тут кароче все больно хитро, влияют параметры всякие типа системный, скрытый и т.п.
вообще эти функции были сделаны для простого поиска файла в проекте
-
Просто покажу скрины
тут кароче все больно хитро, влияют параметры всякие типа системный, скрытый и т.п.
вообще эти функции были сделаны для простого поиска файла в проекте
Ну так он и однотипные не выводит. MSDOS.SYS ведь не единственный скрытый и системный.
Да ладно, хрен с ними со скрытыми. При поиске
*.reg или *.xls он ничего не находит. Ни на русском ни на английском.
Думаю косяк есть, что-то забыли включить или выключить.
-
Будем думать...
Там багов критических нашли нет? А то я не читал ни форум ни группу.
Хорошо было пять лет назад. Постов 5 в неделю. На почту писали 2 человека.
А щас вся личка засрана, я уже не то что не отвечаю, не читаю.
-
Из критических, наверно только жёр памяти по HSET()
http://crapware.aidf.org/forum/index.php?topic=356.msg13132#msg13132
А с некритическими будешь что-то делать? Там их вагон и тележка. Понятно что неохота, но они портят общее впечатление и мешают жить людям.
Самая вредная считаю, пропадание кода скрипта при жонглировании сворачиванием/разворачиванием основного окна и редактора в каких то там последовательностях (не вникал) если не была нажата "применить/сохранить".
Ну хотя-бы постоянная попытка высчитать строки как числа там где это не нужно. И как бороться не ясно.
Неработа COLORMODE с заданной областью, если область выходит за пределы экрана (все другие функции автоматом корректируют) и т.д.
-
Чево. Первый раз слышу. Можно списочек все же
-
К списку багов.
Если в ручную поставить кликер на паузу а потом запустить, все потоки которые стояли на паузе запускаются.
-
Здрасте.
>:( на второй день использования бета версии кликер перестал запускаться. Вернее он запустился, в процессах он отображается, а воспользоваться им нельзя. Да и в диспетчере задач его не было видно. Помогла лишь утилита от Sysinternals под названием ProcessExplorer. Но и это ещё не вся беда! Обладая правами админа не одна из софтин не может убить процесс Clickermann. Помогает лишь полная перезагрузка.
Бета версию использовал на Windows 8.1, предыдущая версия кликера работает отлично на данной системе.
-
LOAD надо выпилить из справки если она больше не поддерживается.
-
Вот еще баг. Тестировал тут опцию "delay_between_lines" так оказалась она воздействует только на задержки от 2 миллисекунд :o
Выставил в параметрах delay_between_lines = 100
LOGCLEAR
$m = $_ms
INC($var,1)
WAITMS(2)
LOGWRITE ("2 мс ", $_ms-$m)
$m = $_ms
INC($var,1)
WAITMS(1)
LOGWRITE ("1 мс ", $_ms-$m)
$m = $_ms
INC($var,1)
LOGWRITE ("без ", $_ms-$m)
HALT
14:42:54 2 мс 100
14:42:54 1 мс 0
14:42:54 без 0
-
Я уже не раз говорил что этот параметр не работает. Хотел ещё на его основе отладку сделать выставив 300-1000. Никакой реакции.
Вот оказывается она работает только на WAIT, а не на любую строку. И то не на все.
-
Я уже не раз говорил
вопрос только кому? завели бы уже давно тему со всеми имеющимися ньюансами и багами елки.
Bugfixes fur 4.12b & help: http://rghost.net/8ttkKls59
Починено почти все что упоминалось до пятницы (на этой неделе лол)
-
GETDIRLIST и GETFILELIST так и не работают. И в справке в содержании на них нет ссылок.
-
GETDIRLIST и GETFILELIST так и не работают. И в справке в содержании на них нет ссылок.
совпадение? не думаю!
-
у кого нить еще возникли проблемы с запуском беты? там чет один в группе беспокоит какими то небылицами.
https://vk.com/topic-14410794_26211333?post=38636
-
баг с символом того, что щас продают по 77 рублей починить удалось. :)
было бы просто замечательно если удастся починить баг с нечитаймостью в строках такого часто встречающегося символа, как " кавычки ".
-
Баг с #autorun
После запуска через скрипт с директивой #autorun кликер (после разворачивания) перестает сворачиваться в трей.
-
Баг "кликерман не видит второй монитор слева" так и не исправлен :(
мелочь в сравнении с мировой революцией, приспособился, только вот к стоящей слева чашке кофе я уже тянусь вправо :o
-
По чему бы не убрать этот скрипт возникающий каждый раз при запуске, а лучше добавить опцию в настройках "Загружать последний сохраненный скрипт" или пустое окно.
Потому как не редки случаи когда нубы, не стирая его, просто вставляют, данный им в группе код, а потом искренне недоумевают почему он выполняется однократно. Да и вообще каждый раз приходится стирать это, нафиг он нужен??
// New Script
// Author: Anonymous
// Version: 1.0 (22.02.2016)
#name "New Script"
// begin your script here
print("Hello, world!")
halt // for single run
-
Баг
При попытке чтения строки из файла содержащей имя функции (любой) в скобках, кликер виснет.
$str = TFREAD("Text.txt", 1)
LOGWRITE ($str)
HALT
В файле Text.txt 1 строка
тест тест (RND) тест.
-
По чему бы не убрать этот скрипт возникающий каждый раз при запуске, а лучше добавить опцию в настройках "Загружать последний сохраненный скрипт" или пустое окно.
Потому как не редки случаи когда нубы, не стирая его, просто вставляют, данный им в группе код, а потом искренне недоумевают почему он выполняется однократно. Да и вообще каждый раз приходится стирать это, нафиг он нужен??
// New Script
// Author: Anonymous
// Version: 1.0 (22.02.2016)
#name "New Script"
// begin your script here
print("Hello, world!")
halt // for single run
Было бы разумно завести это как опцию, чтобы каждый для себя мог выбрать что ему удобнее.
-
По чему бы не убрать этот скрипт возникающий каждый раз при запуске, а лучше добавить опцию в настройках "Загружать последний сохраненный скрипт" или пустое окно.
Потому как не редки случаи когда нубы, не стирая его, просто вставляют, данный им в группе код, а потом искренне недоумевают почему он выполняется однократно. Да и вообще каждый раз приходится стирать это, нафиг он нужен??
// New Script
// Author: Anonymous
// Version: 1.0 (22.02.2016)
#name "New Script"
// begin your script here
print("Hello, world!")
halt // for single run
Я давно уже предлагал дать возможность задавать свой. Кто хочет сделает пустой, а кому нужно свой шаблон.
-
<удалено> из-за кирилла
-
если вам не нравиться, что я сообщаю об ошибках, это не повод язвить.
можете просто попросить и я уйду.
если хотите могу выслать то, что я написал, чтобы не было таких мыслей, у меня сценарий выполняется несколько дней, даже когда я сплю. Повторять до момента ошибки иногда просто долго.
П.С. я нашел тему, где поднимался тот же вопрос http://crapware.aidf.org/forum/index.php?topic=2108.0
вроде цель проекта правильная, но с таким отношением вы всех программеров распиночите.
удачи тролль Кирилл
-
4.12.001
Убраны старые баги, добавлены новые.
В основном убраны (наверное) критические баги вроде утечки памяти в hset, паузы потоков, inc(), имен функций в строках вещающих кликер и еще чето, я не помню честно говоря.
Многие баги, в основном интерфейсные еще остались
http://rghost.net/7qHl4dssB
-
Гляжу delay_between_lines починили.
И вот результат
$ms = $_ms
FOR($a=0,$a<1000)
ARRPUSH($arr, $a)
END_CYC
LOGWRITE ($_ms-$ms)
HALT
4.11
14:19:17 595
14:19:21 626
14:19:22 589
14:19:24 582
14:19:25 582
14:19:26 587
14:19:28 585
14:19:29 585
4.12.001
14:20:01 9828
14:20:14 9832
14:20:25 9832
14:20:35 9821
14:20:45 9871
В место полсекунды почти 9 :o Кликер превратился в слоупока...
Если выставить delay_between_lines = 0 конечно все нормально будет.
А нужны ли эти задержки вообще? Почему бы не вывести в настройки thread_priority у кого там кликер сильно напрягает можно снизить приоритет. Да и вообще не удобно все это править через файл а потом еще и народу объяснять где там что можно настроить.
-
delay_between_lines и не ломался
суть в том что без него ЦП серьезно нагружается если верить диспетчеру.
раньше "сломаный" delay срабатывал только на wait, сейчас он срабатывает для каждой строки.
я не знаю насколько он нужен и насколько поможет настройка приоритетов, тут надо пробовать.
впринципе снова "сломать" delay дело пяти минут.
все должно работать из коробки и в файл тонкой настройки обывателю вообще лазать не надо.
вот теперь у нас есть две версии. если кто то добрый проведет анализ о том как влияют различные задержки на работоспособность какой нить пухлой игры - будет здорово
-
за месяц вижу ниче радикального не выявлено?
тогда заливаю эту версию в релиз (с откаченым делеем) иначе тянуть так можно долго.
времени взяться глобально пока нет, выложу что есть.
-
за месяц вижу ниче радикального не выявлено?
тогда заливаю эту версию в релиз (с откаченым делеем) иначе тянуть так можно долго.
времени взяться глобально пока нет, выложу что есть.
Из багов только некоторые сообщения о пропадающем коде из редактора
http://crapware.aidf.org/forum/index.php?topic=2522.0 (http://crapware.aidf.org/forum/index.php?topic=2522.0)
и SWITCH без CASE вешает кликер пока тот не сожрет всю оперативу ;D
http://crapware.aidf.org/forum/index.php?topic=2512.0 (http://crapware.aidf.org/forum/index.php?topic=2512.0)
-
а вот это (http://crapware.aidf.org/forum/index.php?topic=2487.0) не является ошибкой, подлежащей устранению?
-
По части досадных мелочей, окошко RADIOBOX появляется без параметра "Выше всех" из за чего, если кликер не в фокусе, оно появляется под другими окнами.
-
Ошибка в справке
(http://savepic.net/8072298.png)
Не верная ссылка, ведет к несуществующей более странице "help/what.html"
-
GETDIRLIST и GETFILELIST так и не работают. И в справке в содержании на них нет ссылок.
совпадение? не думаю!
Функции так до конца и не работают или я что-то делаю неправильно?
getfilelist($arr, "C:\*.*") - работает
getfilelist($arr, "C:\test\*.*") - не работает
-
Второй раз уже возникает вот такое
(http://savepic.net/8081233.png)
Загружен скрипт, кликер свернут в трей. При разворачивании появляется сразу редактор вот с этим скриптом. Редактор можно закрыть и при разворачивании он снова откроется. Главная форма больше вообще не появляется. Спасает только перезагрузка кликера.
-
По части досадных мелочей, окошко RADIOBOX появляется без параметра "Выше всех" из за чего, если кликер не в фокусе, оно появляется под другими окнами.
не только это окно, но и основное рабочее окно "Clickermann", может появиться под другими окнами в случаях повторного открытия с открытым окном лога и открытия повторных экземпляров программы, но это полбеды; зная, что они открыты можно покопаться и вытащить их наверх, а вот то что СООБШЕНИЕ ОБ ОШИБКЕ появляется под окнами с которыми "Clickermann" работает - это неприятно, программа просто зависает и сидишь тренеруешь наблюдательность, а когда останавливаешь программу, то сообщение, как положено выводится поверх всех окон.
-
Существует возможность сделать отдельный графический буфер для каждого потока?
-
С новым релизом товарищи! :D Если еще появится компилятор для скриптов кликермана, то я забуду про иностранный AHK так как кликерман на голову выше удобнее и красивее.
-
Что я жду от следующей версии Кликермана:
- Компилятор скриптов Кликермана как в AHK или лучше.
- Настройку изменения заголовка окна Кликермана как в UOPilot для борьбы с системами защиты в играх.
- Сделать так чтобы KEYSTRING всегда вводил прописанный в него текст сразу и полностью со всеми регистрами и знаками.
- Исправление ситуации с тем что когда Кликерман привязан к окну любые менюшки сразу закрываются при открытии.
- Реализовать многовкладочность в редакторе.
Если это будет, то Кликерман уйдет в лидеры далеко и надолго.
-
Good news everyone
На следующей неделе скорее всего дам поиграться бета версии КМ с долгожданной поддержкой юникода (читать: без секса с кодировкой при копировании) а так же х64 версию, которая как ожидается будет адекватнее себя вести при взаимодействии с х64 приложениями.
Надеюсь еще не все тестеры разбежались.
-
а новые свистелки для народа будут?
-
очень хочется вот это , прям плак плак http://crapware.aidf.org/forum/index.php?topic=2399.0
-
свестелки мб. но пока небольшие трудности с созданием х64 версии
но юникод уже прикрутили. изза этого теперь две версии функции md5 будет. одна привычная обычная, вторая для юникода
и еще изменился алгоритм расчета pxlcrc, потому что при анализе выяснилось что старая версия его расчитывает не очень корректно)))))
-
... прикрутили...
Вас стало несколько?
-
Нет, я еще пока не мистер робот.
Никто не подскажет варезную утилиту чтобы запаковать от школяров экзешник x64?
-
Johnny, есть новости? :) Что то поводу предложений из сообщения #233 (http://crapware.aidf.org/forum/index.php?topic=356.msg16281#msg16281)?
-
Johnny, есть новости? :) Что то поводу предложений из сообщения #233 (http://crapware.aidf.org/forum/index.php?topic=356.msg16281#msg16281)?
1. nope
2. это можно
3. это можно, но уже сложнее
4. впервые слышу
5. см. http://crapware.aidf.org/forum/index.php?topic=1716.0
пока выйдет в ближайшие дни только небольшой патч, реализующий юникод и исправляющий древний баг с поиском картинок
-
Вот подсобрал кое чего на счет багов и пожеланий.
Баги потоков версии 4.12.001
http://crapware.aidf.org/forum/index.php?topic=2680.0 (http://crapware.aidf.org/forum/index.php?topic=2680.0)
Запись в версии 4.12 (проблема с хоткеями)
http://crapware.aidf.org/forum/index.php?topic=2653.0 (http://crapware.aidf.org/forum/index.php?topic=2653.0)
баг в приложение к версии 4.12
http://crapware.aidf.org/forum/index.php?topic=2632.0 (http://crapware.aidf.org/forum/index.php?topic=2632.0)
Ошибка во всех функциях поиска.
http://crapware.aidf.org/forum/index.php?topic=2582.0 (http://crapware.aidf.org/forum/index.php?topic=2582.0)
Справка.
В разделе Анализ экрана отсутствует ссылка на SCREENSHOTFIX
В указателях отсутствует RADIOBOX
открытие окна лога
http://crapware.aidf.org/forum/index.php?topic=2771.0 (http://crapware.aidf.org/forum/index.php?topic=2771.0)
сворачивание программы
http://crapware.aidf.org/forum/index.php?topic=2760.0 (http://crapware.aidf.org/forum/index.php?topic=2760.0)
Еще обнаружены парочка ошибок в правописании меню команд.
-
Ещё была просьба добавить системную переменную с версией кликера
$_ver
http://crapware.aidf.org/forum/index.php?topic=1339.0
-
и ещё была просьба починить второй монитор слева (ввиду полной потери ориентации в реальном пространстве)
P.S. это просьба к Johnny - исправить, или написать что мол "извините, некогда, ставьте второй всегда справа и забудьте",
а не к комментаторам, знающим, как правильно
-
и ещё была просьба починить второй монитор слева (ввиду полной потери ориентации в реальном пространстве)
ага и треттий сверху, неужели сложно СВОИ мониторы ПРАВИЛЬНО расположить?
-
т.е. вторичный слева - это неправильно?
-
т.е. вторичный слева - это неправильно?
однозначно, должен быть справа, даже если, Вы левша. ;) монитор не из права - неисправный!
слабыми взаимодействиями и спиралью ДНК заложено, что всё в этой вселенной делается слева на право и сверху вниз, а кто против, тот .... :o
-
не, заступлюсь за буржуев. конфигурация например когда основной монитор в центре а сателиты по бокам вполне себе обычная картина.
ну когда нить руки да дойдут. все упирается в сложность отладки и изначально неориентированность на такие задачи WinAPI поэтому многие программы и игры не очень дружат с расширенными рабочми столами
все прочие замечания, указанные Андреем, в большинстве своем исправлены
-
Clickermann v4.13b
http://rgho.st/6xNP79T6m
Исправлено (надеюсь):
- хоткей записи
- баг функциий графического поиска
- большинство багов сворачивания разворачивания
- автораскомментирование с отступами
- некоторые баги потоков
а так же:
- улучшено быстродействие лупы редактора на слабых системах
- поддержка юникода
- отказ от библиотеки httpwork.dll
- задание (или нет) скрипта по умолачинию /data/default.txt
в обозримом будущем:
- x64 версия
- устранение недоразумений с типами данных и символом "
-
Поддельный сайт!
Имеется информация о том, что веб-страница на meson.rghost.ru является поддельным сайтом. В соответствии с вашими настройками безопасности она была заблокирована.
Поддельные сайты разработаны, чтобы обманным путем заставить вас сделать что-либо опасное, например установить программу или раскрыть свою личную информацию, такую как пароли, телефонные номера или данные кредитных карт.
Ввод на этой веб-странице любой информации может привести к краже личности или мошенничеству.
Перезалей на ченить другое. Лучше на яндекс-диск
-
Создал пустой файл "\data\default.txt". Наконец то пустой редактор при старте :D
в errorlog.txt пишет.
12.11.2016 11:43:30 List index out of bounds (0)
Видимо ему не нравится что файл пуст.
Функция SCREENSHOTFIX(100,100,500,500,"Картинка.bmp", 0) сохраняет, как положено, файл в папку скрипта, и создает рядом, за чем то, пустую папку "screens\".
Из "скрытых" настроек перестала работать опция "Только в системном трее"
Все еще не исправлена проблема "Выше всех", когда, например, поднятый выше всех редактор загораживает окно "Сохранить".
-
Баги 4.13
Какая то хрень с текстом при отправке в буфер обмена
$a = "Привет"
TOCLIP($a)
WAITMS(50)
LOGWRITE (FROMCLIP())
$a = "Test Привет"
TOCLIP($a)
WAIT(1)WAITMS(50)
LOGWRITE (FROMCLIP())
$a = "New"
TOCLIP($a)
WAITMS(50)
LOGWRITE (FROMCLIP())
HALT
Лог:
14:10:14 При
14:10:15 Test
14:10:15 NeƐ
На самом деле если полученное вставлять в блокнот то вместо "Привет" в буфере @8
а от английских букв остается только первая.
-
На следующей неделе скорее всего дам поиграться бета версии КМ с долгожданной поддержкой юникода (читать: без секса с кодировкой при копировании)
Уже есть в этой версии или еще нет?
Библиотеку httpwork.dll можно теперь удалить?
-
win10 x64 запуск
[spoiler](http://savepic.net/8566902.jpg)[/spoiler]
сравнение с версией 4.12
[spoiler](http://savepic.net/8565878.png)
(http://savepic.net/8554614.png)[/spoiler]
жёстко виснет на 2 сутки, тест: vituall pc vmware WS 12 pro win 32 xp sp3 framework last, win 7 32 framework last, причина неизвестна ( в процессе разбора журналов)
-
Или баг или синтаксис изменился. Тестирую скрипт
SETTHREAD (potok, 1)
LOGWRITE ("Вкл")
WAITMS(50)
SETTHREAD (potok, 2)
LOGWRITE ("Выкл")
WAIT(1)
THREAD(potok, 0)
LOGWRITE ("Строка 1")
LOGWRITE ("Строка 2")
LOGWRITE ("Строка 3")
WAIT(5)
LOGWRITE ("Строка 5")
END_THREAD
Ошибка интерпретации выскакивает на SETTHREAD (potok, 2)
-
Да, сломалось.
Но мне с самого начала непонятна такая реализация перезапуска.
Сейчас так:
0 - поток ставится на паузу
1 - поток продолжает выполнение с места, где был остановлен
2 - поток ставится на паузу, при этом при повторной его активации он начинает выполняться с начала, независимо от того, на каком этапе он был остановлен
Когда все просили сделать, и я в том числе, мне кажется предполагали именно новую команду перезапуска.
Так гораздо логичнее.
0 - поток ставится на паузу
1 - поток продолжает выполнение с места, где был остановлен
2 - поток начинает выполняться с начала (остановленный). Если поток запущен пусть там у себя внутри ставится на паузу и начинает выполняться с начала.
Самый частый случай, когда нужен перезапуск потока с начала наступает внезапно.
Вот выполнилось условие (программа выпала в ошибку). Сейчас для перезапуска нужны команды
SETTHREAD (potok, 2) стоп (с последующим пуском с начала)
SETTHREAD (potok, 1) пуск
Получается мы с Тамарой ходим парой. В любом случае мы заранее, обычно, не знаем что будет нужен именно перезапуск.
И ситуация, когда скрипт приостанавливает поток, а потом позже решает продолжить его или перезапустить, гораздо вероятнее, чем когда мы знаем заранее.
SETTHREAD (potok, 1) // пуск
...
SETTHREAD (potok, 0) // пауза
...
...
SETTHREAD (potok, 1) // пуск
...
SETTHREAD (potok, 2) // перезапуск
-
ну етить можно вообще убрать (или нет) этот сет и ввести что то типа threadpause, threadresume, threadreset
-
Чёт у меня на новой бете вообще рабочий код не стартует и ошибок не пишет. На текущей все норм.
-
Чёт у меня на новой бете вообще рабочий код не стартует и ошибок не пишет. На текущей все норм.
ну ты же догадался что этот экзешник надо кинуть в папку к последней рабочей версии?
-
ну ты же догадался что этот экзешник надо кинуть в папку к последней рабочей версии?
Да. Там и лежит. Еще пробовал делать отдельную папку с переносом папки data и библиотек. Имя экзешника можно же не менять?
-
Баг
Заметил тут, что в режиме привязки лупа показывает с большим смещением
-
Clickermann 4.13 b2 + x64
Исправление багов а так же 64 битная версия. Для каждой реализации требуется своя
версия библиотеки работы с ps2, поэтому разбил по папкам.
http://rgho.st/8xzBfRYtC
-
Вот эти меню стали появляться не из центра курсора а немного выше.
(http://savepic.net/8585271.png)
-
Ну так это спецом сделано. Фиксированное место появления, в 13b уже так было.
Кстати удобнее.
Ошибка с первой невыполняемой строкой потока так и осталась.
-
Спецом? Сомневаюсь. И ничего удобного здесь нет.
Вот как было раньше. Кликаешь и меню появляется от курсора правее и на том же уровне. Можно без проблем кликать по кнопкам.
А теперь это меню полностью перегораживает кнопки и приходится кликать в другое место чтобы от него избавиться и кликнуть по другой кнопке.
(http://savepic.net/8634435.png)
-
Удобней. Неудобно когда 3 вложенных меню съезжают всё правее и ниже.
Иногда, когда редактор в правом нижнем углу, кликнув по правой части кнопки можно было до пунктов и "не достать".
Так хоть как-то по компактней.
Открыл меню - выбирай пункт, зачем по кнопкам кликать?
Я в любом случее не закрываю кликом по кнопкам. Или по полю редактора или ниже по полю лупы.
P.S. Если по "командам" кликнуть далеко в левой части - до шаблонов было всё равно не добраться.
-
Ошибка с первой невыполняемой строкой потока так и осталась.
да что такое, это как с двумя ногами, одну вытащишь, другая увязнет.
можно пример когда который гарантированно ошибку воспроизведет?
по поводу меню всплывающих, я честно говоря не помню. определитесь там уж как удобнее.
-
так все тот же мой пример
SETTHREAD (potok, 1)
LOGWRITE ("Вкл")
WAIT(1)
THREAD(potok, 0)
LOGWRITE ("Строка 1")
LOGWRITE ("Строка 2")
LOGWRITE ("Строка 3")
SETTHREAD (potok, 2)
LOGWRITE ("Строка 5")
END_THREAD
Лог:
19:44:02 Вкл
19:44:02 Строка 1
19:44:02 Строка 2
19:44:02 Строка 3
19:44:03 Вкл
19:44:03 Строка 2
19:44:03 Строка 3
19:44:04 Вкл
19:44:04 Строка 2
19:44:04 Строка 3
19:44:05 Вкл
19:44:05 Строка 2
19:44:05 Строка 3
19:44:06 Вкл
19:44:06 Строка 2
19:44:06 Строка 3
-
Кстати это у меня одного почему то цитирование не работает?
То есть нажатие кнопки "Цитировать" на сообщении не приводит ни к каким результатам. Это началось вроде когда на сайте что то с кодировкой было.
-
Если включить лупу то при приближении к краю экрана или окна (в оконном режиме) файл errorlog.txt начинает стремительно наполняться вот этим.
07.12.2016 19:58:20 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address 0247D8FE
07.12.2016 19:58:20 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F90381AA
07.12.2016 19:58:20 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F904E276
07.12.2016 19:58:22 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903812A
07.12.2016 19:58:23 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903815E
07.12.2016 19:58:23 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903A65E
07.12.2016 19:58:24 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F90443DE
07.12.2016 19:58:24 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F904565A
07.12.2016 19:58:24 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903F9F2
07.12.2016 19:58:25 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F9048F12
07.12.2016 19:58:25 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F9048F12
07.12.2016 19:58:26 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F90394A2
07.12.2016 19:58:26 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F9043172
07.12.2016 19:58:26 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F907D482
07.12.2016 19:58:27 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F9040CE2
07.12.2016 19:58:27 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903E80E
07.12.2016 19:58:28 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903CC2E
07.12.2016 19:58:28 Access violation at address 005952A9 in module 'Clickermann.exe'. Write of address F903D56E
-
А еще кое кто тут утверждает что последняя бетта на 10ке не работает.
https://vk.com/topic-14410794_23383620?post=50777 (https://vk.com/topic-14410794_23383620?post=50777)
-
по поводу меню всплывающих, я честно говоря не помню. определитесь там уж как удобнее.
Удобнее так как было, потому что не вижу большого эффекта в том что оно появится чуть левее. А вот то что оно теперь напрочь перекрывает кнопки, это меня начало бесить еще с предыдущей бетты.
-
Кстати это у меня одного почему то цитирование не работает?
То есть нажатие кнопки "Цитировать" на сообщении не приводит ни к каким результатам. Это началось вроде когда на сайте что то с кодировкой было.
все норм. огнелис.
-
Кстати это у меня одного почему то цитирование не работает?
То есть нажатие кнопки "Цитировать" на сообщении не приводит ни к каким результатам. Это началось вроде когда на сайте что то с кодировкой было.
все норм. огнелис.
Да нет, не норм. Стал разбираться, оказалось частично все же работает.
Если "Быстрый ответ" свернут, то при нажатии на цитирование перебросит в редактор с захватом сообщения в цитату. Но если быстрый ответ открыт то ничего не работает. Раньше все было норм.
(http://savepic.net/8587145m.png) (http://savepic.net/8587145.htm)
(http://savepic.net/8650632m.png) (http://savepic.net/8650632.htm)
-
Функция HGETTEXT возвращает порченный текст
LOGWRITE (HGETTEXT($_hwnd))
HALT
Собственно как и HSETTEXT записывает неправильно
HSETTEXT($_hwnd, "text")
HALT
Тот же эффект что был раньше с TOCLIP FROMCLIP()
-
А еще кое кто тут утверждает что последняя бетта на 10ке не работает.
https://vk.com/topic-14410794_23383620?post=50777 (https://vk.com/topic-14410794_23383620?post=50777)
Так он сто пудов положил отдельно экзешник и запускает его, хотя ему два раза сказали, что "обязательно положить в папку действующего кликера".
Это к бабке не ходи, судя по тому что не открываются шаблоны и команды
Функция HGETTEXT возвращает порченный текст
Собственно как и HSETTEXT записывает неправильно
Так в окнах то винды 1251 а не юникод.
-
Так в окнах то винды 1251 а не юникод.
спорно и индивидуально. большинство WinAPI функций иимеют Ansi и Unicode версии функций одновременно, которые в свою очеред вызываются третей функцией которая определяет какую из версий нужно запустить. но можно вызывать нужную версию без этой обертки. некоторые функции кликер как раз так и вызывает.
надо просто проверить все функции кликера для работы с окнами будет.
вообще наблюдается некоторый прирост аудитории, поэтому хотелось бы разобраться со всеми багами побыстрее и до нового года выкатить обновление. если у кого что есть, пишите сразу.
-
Вот выкладывал неправильные вычисления. Что-то нахимичено с приоритетом действий
http://crapware.aidf.org/forum/index.php?topic=2874.0
-
Ошибка со строками в SETVAR
DEFINE($a, 0)
SETVAR ("$a", "Привет тест 12345")
LOGWRITE ($a)
$a = "Привет тест 12345"
$b = GETVAR ("$a")
LOGWRITE ($b)
HALT
Log:
20:04:56 Привет т
20:04:56 Привет тест 12345
-
Спецом? Сомневаюсь. И ничего удобного здесь нет.
Вот как было раньше. Кликаешь и меню появляется от курсора правее и на том же уровне. Можно без проблем кликать по кнопкам.
А теперь это меню полностью перегораживает кнопки и приходится кликать в другое место чтобы от него избавиться и кликнуть по другой кнопке.
(http://savepic.net/8634435.png)
Подтверждаю.
-
Версия 4.13b2
Код:
// 14.12.2016
#name "New Script"
DEFINE($HWND, WNDFIND("Clickermann", 1))
DEFINE($TEXT, HGETTEXT($HWND))
LOGWRITE ($TEXT)
HALT
Вывод в лог нескольких запусков:
19:16:21 汃捩敫浲湡敎⁷捓楲瑰
19:16:23 汃捩敫浲湡敎⁷捓楲瑰
19:16:24 汃捩敫浲湡敎⁷捓楲瑰
19:16:24 汃捩敫浲湡敎⁷捓楲瑰
19:16:24 汃捩敫浲湡敎⁷捓楲瑰
19:16:25 汃捩敫浲湡敎⁷捓楲瑰
И на 32 и на 64. Только символы немного различаются. Проверьте на своих машинах пожалуйста, потому что есть подозрение на баг...
-
Я уже описывал этот баг HGETTEXT выше.
-
думаю сделаем на днях чтоб кавычки не глотал.
а можно для удобства отладки примеры сломаных судеб?
-
Пример
-
Глюк с темой оформления в редакторе.
SUB(test,$par1,$par2) // переменные отображаются черным
END_SUB
test(1,2)
Если добавить пробел после test, то переменные тут же становятся синими.
В 4.12 такого нет.
-
Fix 4.13 b3
Исправление багов с текстовыми функциями, проблем связанных с выезжанием графики за края экрана,
значительные улучшения в войне с нечитаемыми кавычками
http://rgho.st/8jVBp2K9G
-
Fix 4.13 b3
Исправление багов с текстовыми функциями, проблем связанных с выезжанием графики за края экрана,
значительные улучшения в войне с нечитаемыми кавычками
http://rgho.st/8jVBp2K9G
Пока заметных проблем на своих скриптах не выявил. Тестим дальше. :)
-
Функция GETFILELIST все еще работает очень неточно.
-
а что там с Win10?
-
win10 preview x64 не запускается, процесс зависает
-
Обнаружил еще один глюк редактора.
в зависимости от числа с верху у последнего числа в комменте появляется какая то черта.
(http://savepic.net/8814058.png)
-
Там не только число. 0 - появляется черта у всех последних нулей, 3 - у троук. "y" у всех игреков.
А при "i" не появилась. Другие символы не проверял.
Я уж подумал выделение совпадающего текста, как в Notepad++
-
Обнаружился тут баг в подпрограмме.
Если использовать 2а параметра и более, и в параметре написать 1у скобку, вылетает ошибка.
Интересно что если параметр 1 то ошибки не возникает.
SUB(TEST, $str, $a)
LOGWRITE ($str, " ", $a)
END_SUB
TEST("тест ) тест", 1)
HALT
-
небольшой баг, отображения в редакторе.
Такое, видимо, много где есть http://crapware.aidf.org/forum/index.php?topic=356.msg18959#msg18959 (http://crapware.aidf.org/forum/index.php?topic=356.msg18959#msg18959)
-
мда, так до релиза и не доедем.
а еще виртуальную десятку ставить...
а у меня даже места нету на диске((((
-
мда, так до релиза и не доедем.
а еще виртуальную десятку ставить...
а у меня даже места нету на диске((((
Не боись. Все получится. Глаза боятся руки делают. ::)
-
Баг
При чтении из файла пустые строки становятся кавычками ""
FOR($a=1,$a<TFCOUNT("input.txt")+1)
$str = TFREAD ("input.txt", $a)
LOGWRITE ("Строка: ", $str)
LOGWRITE ("Длина: ", STRLEN($str))
TFWRITE("output.txt", $str)
END_CYC
HALT
Содержимое файла input.txt
Строка 1
Строка 2
Строка 3
Строка 4
Лог:
13:19:06 Строка: Строка 1
13:19:06 Длина: 8
13:19:06 Строка: ""
13:19:06 Длина: 2
13:19:06 Строка: Строка 2
13:19:06 Длина: 8
13:19:06 Строка: ""
13:19:06 Длина: 2
13:19:06 Строка: Строка 3
13:19:06 Длина: 8
13:19:06 Строка: ""
13:19:06 Длина: 2
13:19:06 Строка: Строка 4
13:19:06 Длина: 8
-
это не баг. В текстовых файлах не бывает "пусых" строк. На месте "пустой" строки есть перевод каретки (0A 0D), вот вам и 2 символа. А вот откуда взялись кавычки в логе, это, конечно, вопрос.
-
это не баг. В текстовых файлах не бывает "пустых" строк. На месте "пустой" строки есть перевод каретки (0A 0D), вот вам и 2 символа. А вот откуда взялись кавычки в логе, это, конечно, вопрос.
В 4.12 все нормально, показывает 0 длину и копирует пустые строки.
Дело конечно в борьбе с кавычками которая началась вестись в 4.13 версии. Вот такой глюк вылез.
-
Надо исправить наконец код PRINTSCREEN в файле const.txt и спраке
#PRINTSCREEN 154
Правильное значение 44
#PRINTSCREEN 44
-
Вот еще пример вылезания кавычек. Удаление пробелов из строки. В результате должна получиться пустая строка но...
PRINT (STRLEN(STRFILTER(" ", " ", 0)))
HALT
В логе значение 2
-
При запуске кликера через ассоциированный скрипт с параметром #autorun кликер остается на экране в недосвернутом состоянии.
Надо бы это поправить чтоб он полностью был только в трее или на панеле задач.
-
Так 4.13 кроме экзешников пока ничего и нет.
-
На самом деле можно обойтись без Win_Api_Constants.cms достаточно просто внести эти строки в файл const.txt
Ну добавится решетка в начале каждой команды типо #WM_KEYDOWN неужели это такая проблема?
-
Ну зачем тебе сохранять его в темп то? Выбирай сохранить как, а лучше скачать а уж потом запускать.
-
может всеже стоит научить в новой версии функцию DIST правильно работать с дробными числами!!!???
ладно еслиб она выдавала ошибку, или возвращала "0", но она ведь часто вводит в заблуждение. я то уже в курсе, и всегда пользуюсь своими вычислениями если есть вероятность дробного числа. а такова вероятность всегда очень велика, даже при простейших математических действиях с координатами, и в дальнейшем используя DIST, может долго поламать голову над чудесами которые происходит далее. а если координаты берутся не с экрана, а из самого приложения? и я вообще не пойму, почему изначально эта функция предполагала расчеты только с целыми? в чем была загвоздка при создании ее полноценной?
пример.
$x1 = 0
$y1 = 0
$x2 = 1
$y2 = 2.0001
print(Sqrt(POW(($x1-$x2),2)+POW(($y1-$y2),2)))
print(dist($x1,$y1,$x2,$y2))
halt
циферки может каждый сам поменять, и посмотреть на эту беду.
к примеру если выставить координаты, и дну из них поделить на два (на практике может встретиться очень часто)
$x1 = 0
$y1 = 0
$x2 = 1
$y2 = 103/2
то у нас DIST выдаст 1.4142135623731 , полторы точки :o от нулевой точки до 51-ой , этож нонсэнс, а сразу и не поймешь в чем тут косяк.
-
Ну очевидно что полпиксела быть не может. Нужно просто использовать INT
-
Ну очевидно что полпиксела быть не может. Нужно просто использовать INT
нужно то оно нужно, но на практике нам об этом никто не говорит :D .
плюс, как я писал ранее, координаты можно брать из самого приложения, а там они всегда дробные. и часто какаянибудь сотая часть единицы играет роль. да можно было бы использовать ROUND и смещать точку на столько сколько требуется. но тотже ROUND тоже с причудами :D, он часто возвращает числа типа 22.99999999999, и снова скрипт гонит не по теме. и снова после ROUND требуется еще не забыть использовать INT. а не много ли лишних движений?
что ж там такого в этом DIST проблемно было сделать, чтоб он работал как нужно?
опять же повторюсь, я уже привык, многие из активных пользователей тоже, но всеже нужно сделать как положено.
насчет ROUND я погоречился ;D, смещаем току умножением. но фак остается фактом, ROUND часто вадавал мне лишние девятки после точки. щяс пытаюсь найти как :D
но фак остается фактом, ROUND часто вадавал мне лишние девятки после точки. щяс пытаюсь найти как :D
поковырял я это ROUND, чето ничего не нашел >:(. да и не помню уже в какой это версии было. кароче забил. нашел лишь небольшей косячек с округлением 5,6,7 или более знаков после точки (зависит он количества знаков перед точкой), выдает отрицательные числа. но это скорее всего так и требуется, так как там есть вроде какоето максимальное число для памяти т.д. и т.п., но лучше бы в этих случаях выдавало ошибку.
урааааа :D :D нашел девятки :D
закономерности никакой не нашел, просто наугад :(
print(ROUND (2567.4535848 , -4))
в лог выдает 2567.4535999999997 , пхуууу, ато я уж посчитал что выставил себя лапухом ;D
-
выявлен баг, стабильный баг. в функции ROUND . вот на это я частенько и напарывался, о чем писал выше.
$n = RND (0, 9999999)/1000
print($n)
print(ROUND ($n , -1))
waitms(100)
лог:
14:48:22 3029.151
14:48:22 3029.2
14:48:22 2958.86
14:48:22 2958.9
14:48:22 9476.338
14:48:22 9476.2999999999987
14:48:22 2778.042
14:48:22 2778
14:48:22 7206.278
14:48:22 7206.3
14:48:22 3186.751
14:48:22 3186.8
14:48:22 5989.206
14:48:22 5989.2
14:48:23 5519.9849999999994
14:48:23 5520
14:48:23 8356.742
14:48:23 8356.7000000000013
14:48:23 8906.4860000000013
14:48:23 8906.5
14:48:23 8243.3070000000013
14:48:23 8243.2999999999987
14:48:23 4159.407
14:48:23 4159.3999999999994
14:48:23 3857.423
14:48:23 3857.4
14:48:23 5222.6719999999994
14:48:23 5222.7
14:48:23 362.745
14:48:23 362.7
14:48:23 9822.203
и так далее.
:-\ судя по кусочку лога:
14:48:23 8356.742
14:48:23 8356.7000000000013
14:48:23 8906.4860000000013
14:48:23 8906.5
тут и с делением чтото глюкает :-\
[spoiler] :D неужели, только сейчас я догнал, в чем может быть проблема при использовании кликера в одной 3д игре, где езда на автомобиле отлажена от и до. авто едет очень быстро, координаты берутся из памяти, расчеты ведутся мгновенно, нужна максимальная точность, вроде все идет по курсу, но в какието моменты руль на мгновение до упора поварачивает в не нужном направлении, я грешил на считывание из памяти возможных косяков. но теперь думаю проверить всё заново, так как гдето всеже могут вылазить дробные числа, и какаянибудь функция срабатывает не правильно.[/spoiler]
-
Почему DIST работает с целыми числами я понимаю и у меня с ним никогда не возникали проблемы, ну кроме времён когда и выходные данные были целые.
При разработке в голове сложилось: для чего кликеру DIST? - считать расстояние между пикселами экрана. Коордмнаты пикселов могут быть только целые числа, поэтому выбираем тип данных int. Ну так люди программируют. Нужно использовать тот тип данных который нужен. Можешь конечно все числа заводить во float, но это лишняя трата памяти, времени расчётов и точности.
Если бы всякие If_picture_in работали с float мы бы сильно потеряли в скорости.
Вот те косяки с точностью - это не косяки, это особенности работы программ с вещественными числами в формате с плавающей точкой. Подобные результаты будут во многих языках программирования.
Понятно что дистанция между точками в своих системах координат (или игровых) может иметь дробные координаты, но дист для них не задумывался. Приходиться считать самим. Сейчас желательно переделать dist под новые расширенные применения кликера. Он чуть вырос из экранной "тыкалки".
-
Нужно исправить устаревший скрипт в справке.
(http://savepic.net/8987288.png)
-
баг при вызове подпрограммы со строковыми параметрами в версии v4.13 b3.
SUB(test, $text)
print($text)
END_SUB
$str = "Русский, Anglish"
test($str) //всё норм - "Русский, Anglish"
wait(1)
test("Anglish") //получаем "ANGLISH" вместо "Anglish"
wait(1)
test("Русский, Anglish") //получаем "Русский)" и ошибку
halt
[spoiler]пол дня себе мозг выносил с этой неразберихой >:( [/spoiler]
-
версия v4.13 b3 х64 не работает в режиме ps2.
(http://i.imgur.com/D5c9rum.png)
тоже самое и с #ps2_mouse+LCLICK
-
версия v4.13 b3 х64 не работает в режиме ps2.
(http://i.imgur.com/D5c9rum.png)
тоже самое и с #ps2_mouse+LCLICK
работает но там нужен соответствующий драйвер ioport.dll под х64 сборку
-
v4.13 b3 х86
первый getscreen не видит второй монитор
последующие getscreen – видят
-
Здравствуйте!
Запущено два Клмна, оба 4.13.б3 х64, но из разных папок. В одном из них открываю скрипт через встроенный редактор, изменяю его, сохраняю и жму "Применить", после это жму кнопку закрытия редактора. После этого выскакивает окошко с вопросом "Применить изменения?" и тремя кнопками (yes, no, cancel). Если жму йес, то ничего не происходит, просто это окно исчезает, а сам редактор не закрывается. При повторной попытке происходит то же самое, а если всё-таки нажать ноу в диалоге, то естественно скрипт не применяется (хоть и сохраняется). Чяднт? это нормально ли? и что делать, чтоб применить изменения? Пробовал перезапускать скрипты, но ситуация повторяется.
ПС. Есть подозрения, на то что эт из-за того, что в одном файле подключён скрипт через инклуд.
ППС. Переписал все функции без инклуда и закомментил сам инклуд, и действительно -- редактор аки чудо закрылсо, но вот сам скрипт почему-то не заработал, хотя вчера ещё всё было норм. Щас буду посмореть.
Это и в других версиях так. Если есть инклюд, а файла самого ещё нет. Или если дикие ошибки в коде.
Окау, Винт, спасиб! Я уже понял, что эт норм)) Файл инклюдов есть и используется уже в других проектов, а вот здесь лагануло. Использовал в файле с #include строчку rc(int($vr1/10)+3,int($vr2/10)+9), которая передавала в инклуд координаты клика через int, может rclick не понимает, когда в него передают координаты с использованием других функций, хотя странно это, вроде было норм.
Кстати, цитирование сломанное ещё не исправлено в SimpleMachines-движке, хотя в прошлом сентября, когда я пришёл сюда на форум, всё работало хорошо.
Также периодически происходит лаг, когда только что открытый скрипт не появляется в списке недавно открывавшихся скриптов, и причём он не появляется там и после повторном переоткрытия через диалоговое окно. Странно ещё и то, что эти MostRecentlyUsed-списки файлов разные для редактора и для основной формы кликера, видимо они хранятся в разных ключах реестра или в разных параметрах.
-
Это и в других версиях так. Если есть инклюд, а файла самого ещё нет.
Или если дикие ошибки в коде.
-
Clickermann 4.13.004b x32
http://rgho.st/8zP5kcmFG
Кароч я типа не умер, хотя за последний год знатно сменил как образ жизни так и сферу интересов. Но все же, иногда удается урвать минутку чтоб пару раз шлифануть свой алмаз.
Вобщем очередная версия бета теста, которая уже скорее ближе к релизу. С актуальной справкой и множественными исправлениями о которых написано в истории.
Версия для 64 подъедет чуть позже (на самом деле просто пока не нашел инструмент чтоб запаковать 64 битный экзешник чтоб школяры не скрывали редакторы и не занимались прочей херней, кто знает такой - можете подсказать)
Среди значимых доработок - наконец более менее поддержка расширенных рабочих столов как слева так и справа. Кто то там настоятельно просил. Ну и так, по мелочи.
-
Стоит добавить системную переменную возвращающую HWND кликера, типо $_my_hwnd
Баг с запятой все еще присутствует.
SUB(test, $text)
print($text)
END_SUB
test("Раз,Два")
halt
И недоработки в справке.
(http://savepic.net/9815634m.png) (http://savepic.net/9815634.htm)
-
И ещё системную переменную с текущей версией кликера.
А не появилась возможность получать сообщения для окна кликера?
WRITEMEM и чтение требует адрес в виде строки, можно это обойти? Чтоб можно было задавать адрес 10 ричным числом. Или минимум быстрые функции перевода в HEX и обратно.
-
WRITEMEM и чтение требует адрес в виде строки, можно это обойти? Чтоб можно было задавать адрес 10 ричным числом. Или минимум быстрые функции перевода в HEX и обратно.
читаю справку - "Адрес представлен строкой шестнадцатеричного числа" . смотрю пример - "$var = readmem(2080, 0x0006F2B7)" . и где тут строка адреса :-\ ? .
а теперь пару тестов. нахожу в памяти кликера (к примеру) любое число, беру адрес этого значения. пишу такой код.
print(readmem(3736, 0x00020F00))
print(readmem(3736, 134912))
print(readmem(3736, 0x00020F00+20-20))
halt
и, о чудо, все отлично работает :D. справка немного вводит в заблуждение.
ого, HGETPID (hwnd) , здорово :D . работает .
print(readmem(HGETPID(WNDFIND ("редактор")), 0x00020F00))
но, HGETPID в редакторе не подсвечивается. и в справке пример по данной функции немного не по теме.
(http://i.imgur.com/QPxe84r.png)
-
в справке возможны косяки эт да. скидывайте поправим.
А не появилась возможность получать сообщения для окна кликера?
появилась. getmessage()
так же возможно еще добавим пару штук для господ крутых программистов, способных создавать свои DLL, но это не точно
-
читаю справку - "Адрес представлен строкой шестнадцатеричного числа" . смотрю пример - "$var = readmem(2080, 0x0006F2B7)" . и где тут строка адреса :-\ ? .
Мммм. Я когда писал с телефона ещё новую версию не смотрел. Это был вопрос по старой версии где такое не прокатывало.
-
появилась. getmessage()
так же возможно еще добавим пару штук для господ крутых программистов, способных создавать свои DLL, но это не точно
Да, да уже увидел 2222. Получается сообщение хранится в какой-то переменной, а при вызове getmessage() получаем её данные.
Или сообщение должно прийти именно в этот момент?
Если первое, то после вызова getmessage() данные удаляются?
При повторном вызове getmessage() (без прихода нового сообщения) выдаст старые данные или что? Как сбросить?
Пример:
Мы подпрягли стороннюю программу что-то делать и нужно ждать от неё ответ о завершении и после получить результаты.
Вызвали...
в цикле getmessage() пока не придёт нужное значение.
А если после этого нужно второй раз так сделать? Ведь getmessage() вернёт сразу старое значение о завершении.
Даже если приложение сразу будет слать неправильное сообщение для "затирки" и при повторном вызове мы не можем сразу в цикле проверять getmessage(), вдруг она не успела затереть.
P.S. придумал, именно для этого случая, получать ответ только по запросу SETMESSAGE. Чтоб мы не ждали ответ не зная когда, а конкретно шлём запрос "готово?" и приходит ответ. Но опять же нужно в начале слать себе же лишний SETMESSAGE для "перезатирки".
Не удобняк. Нужно чтоб в момент забирания getmessage() старое сообщение удалялось само. Правда мы теряем на этом одно значение iParam, wParam равные 0,0. Но мы и так его уже потеряли когда нам совсем ничего не приходит.
-
Или сообщение должно прийти именно в этот момент?
Если первое, то после вызова getmessage() данные удаляются?
При повторном вызове getmessage() (без прихода нового сообщения) выдаст старые данные или что? Как сбросить?
конечно НЕ в этот момент, его не поймать. просто запоминаетс последнее сообщение и в момент вызова функции эти данные извлекаются.
и нет, не "сбрасывается". тут есть ньюанс (тобой отмеченный впрочем). даже сообщение с нулями - сообщение. более того, тот же Bluestack пока ему не пришлешь WM_NULL корректо не обработает нажатие в себя в режиме работы через postmessage(). это так, пример из жизни.
поэтому здесь ответственность ложится скорее на стороннюю программу. в конце концов есть целых два параметра!
Не удобняк. Нужно чтоб в момент забирания getmessage() старое сообщение удалялось само.
и в результате там оказывались нули, которые так то тоже сообщение, только с нулями?
для таких (и перечисленных) случаев можно скриптом хранить значения параметров с предыдущего шага и сравнивать с текущим. и соответственно ждать когда он иначнкт отличаться.
не знаю что удобнее. для начала неплохо бы дойти до реальных скриптов и программ посылающих сообщения.
-
Короче, нужен механизм для определения что сообщения небыло. Т.к. у нас реализация getmessage спицифическая. Функция реагирующая на сообщения сидит внутри интерпритатора и по get отдает сохраненные данные. Но если ничего совсем не приходило она все равно дает начальные значения по умолчанию 0,0.
Есть выход. В функции getmessage() возвращать 3 параметра iParam, wParam, flagnew. Третий флаг 0/1. Флаг имеет 1 если сообщение пришло но еще не забиралось. Как забираем по getmessage после сразу сбрасывает флаг в 0. И повторный getmessage вернет уже старые параметры и 0.
Можно последний параметр сделать необязательным.
И почему 2222? Понятно что для запоминания, но ведь для пользовательских выделен другой диапазон.
-
Почему это удобней переложить на внутренности функции... Во первых чтоб каждый раз не городить одну конструкцию, даже в подпрограмме. А главное, для разных потоков. Вот где начнутся грабли если следить извне. Будем попадать в промежуточные моменты, когда забрал, а флаг еще не поменял. Внутри функции решит этот вопрос сразу.
-
да, с необязательным параметром флагом идея мне по нраву. и не надо отказываться от нулей, и можно обойти острые углы вроде вызова функции еще до сообщения
почему 2222? да бог его знает. у нас же еще тестирование. а какое номер хотелось бы? чтоб он смотрелся красиво как в десятичном так и в хексе?
-
Команды-Шаблоны и keywords.txt дополнены новыми функциями.
-
Стандартные сообщения до WM_User-1. от 0 до 0x03FF (1023)
Локальные сообщения от WM_User от 0x0400 (1024) до 0x7FFF (32767)
Глобальные сообщения от 0xC000 (49152) до 0xFFFF (65535)
Можно и в 2222 лишь бы проблем небыло потом.
Вот красивый 50000. xC350
-
Clickermann 4.13.004b - параметры GETSCREEN перестали работать :(
снимок, независимо от параметров, делается всего экрана.
win10 32bit home
-
+ Доработка READMEM(), теперь функция
В справке осталось в примечаниях старое
Полученное значение возвращается в переменную $_return1
+ Добавлены хоткеи Tab, Ctrl + Tab для групповой табуляции
Работает только 1 раз, после чего выделение слетает. Подвинуть на 2+ таба так сразу нельзя.
+ Окно теперь запоминает положение при переходе на главное окно
Ещё бы и окно лога запоминать.
И почему запоминает положение между запусками. Если CM закрыть открыть всё по умолчанию.
+ Улучшено быстродействие лупы
Раньше лупа на границах экрана показывала чёрным. Теперь там "кака".
Справа/слева продолжается затайленное с другой стороны.
Снизу показывает верх, но со сдвигом ~+300/
В верху совсем случайный мусор из соседнего с буфером кода.
(http://savepic.net/9858213.png) (http://savepic.net/9862309.png)
И так
IF((11.2 - 11) = 0.2)
LOGWRITE("верно")
ELSE
LOGWRITE("НЕ верно")
END_IF
HALT
И так
IF((11.2 - 11) - 0.2 = 0)
LOGWRITE("верно")
ELSE
LOGWRITE("НЕ верно")
END_IF
Выдаёт "НЕ верно".
+ Доработка KEYSTRING(), теперь он сам жмет Shift
Почему то не жмёт на 3 и 4. Может ещё на каких. Все не пробовал.
KEYSTRING("Елки ПаЛКИ 134567890 !№;%:?*()", 10)
Елки ПаЛКИ 134567890 !34%:?*()
В новой математике ROUND так и остался буржуйским банковским. Как ним пользоваться в нормальных вычислениях я ХЗ.
У меня большая проблема с основной функцией работы с экраном.
Не знаю GETSCREEN виноват или сохранятель скриншотов. Думаю GETSCREEN.
Скриншот нормального человека:
(http://savepic.net/9846968.png)
Скриншот курильщика:
(http://savepic.net/9844920.png)
Фотошоп показывает, что файл с прозрачностью.
Весь экран
(http://savepic.net/9877691m.png) (http://savepic.net/9877691.htm)
Фотошоп
(http://savepic.net/9864379m.png) (http://savepic.net/9864379.htm)
-
А у меня GETSCREEN так не делает. Система XP
-
А у меня GETSCREEN так не делает. Система XP
в вин7 64 и вин10 32 тоже норм отрабатывает.
READMEM (pid, addr, [size] )
Параметр size указывает на размер целого значения: 1, 2, 4 или 8 байт. если бы функция могла возвращать значение "с плавающей точкой" (float), цены бы ей не было ::)
-
А у меня GETSCREEN так не делает. Система XP
У меня тоже XP. НЕ знаю уже что и делать.
Ещё при каждом пуске в error появляется
05.09.2017 10:07:20 List index out of bounds (0)
-
В справке битая ссылка со времён царя гороха
http://crapware.aidf.org/forum/index.php?topic=1570.0
-
Ещё при каждом пуске в error появляется
05.09.2017 10:07:20 List index out of bounds (0)
Провел эксперименты. Нашёл, что ошибка появляется когда есть файл скрипта по умолчанию default.txt
У меня там такой текст:
#name "New Script"
// Author: Vint
// Version: 0.1 (04.09.2017)
// Скрипт для Clickermann v4.13.004b
Пробовал пересохранить в UTF-8 не помогло.
Пробовал удалить текст по русски - тоже.
Кстати. Файл ошибок errorlog.txt всегда пересоздаётся новый. Видно как он при старте "моргает". Приэтом размер становится 0. А через секунду когда прописывается ошибка, размер меняется на 1.
И содержит всегда последнюю ошибку, или пустой.
P.S. Дальнейшие копания показали: ошибка появляется, когда в шаблоне нет значащих строк. Есть что нибудь кроме строк комментариев и директив #
Та же ошибка пишется в лог, если сохранять любой пустой скрипт или скрипт без значащих строк.
В старых версиях в этом случае (при попытке закрыть пустой редактор) выскакивало всегда окно "сохранить"? Не давало закрыть редактор, так же, как при отсутствии файла прописанного в include.
-
Какая то проблема с определением строк и чисел
В 4.12 такой код работает верно, а в 4.13 только если обернуть $arr[$a] INTом
STRSEPARATE("1112,296,1382,1968", ",", $arr)
$siz = ARRSIZE($arr)
$min = 999999
FOR($a=0,$a<$siz)
IF($arr[$a] < $min)
$c = $a
LOGWRITE ("$c ", $c)
$min = $arr[$a]
END_IF
LOGWRITE ("$arr ", $arr[$a], " $min ", $min)
END_CYC
LOGWRITE ("Min: ", $arr[$c])
HALT
Лог
18:32:15 $c 0
18:32:15 $arr 1112 $min 1112
18:32:15 $arr 296 $min 1112
18:32:15 $arr 1382 $min 1112
18:32:15 $arr 1968 $min 1112
18:32:15 Min: 1112
-
На самом деле логично. Strseparate - разбивка строки. Получаем подстроки. В питоне тоже так. Хочется чисел, ну прогоняем map-ом или на выходе преобразуем через int().
Так как в 4.12 удобней, но не всегда. Мне раз нужны были строки, так хрен получишь.
И не логично было что по pop() возвращало строку, а по индексу - число.
Это я так... На самом деле удобно конечно. Но нужны операторы нормального перевода в строки и числа. Целые то ладно можно и int, а вот как нужно дробное, вот где начинается веселье. Точность мы не всегда знаем, так ещё гребаное банковское округление.
Это писец, товарищи. В базовых операторах языков программирования такое округление.
-
После обновления появилась ошибка "Run-time error at line:IF($a!$b)", до этого нормально работало
значение переменных 3763620110 и 3763620109
-
После обновления появилась ошибка "Run-time error at line:IF($a!$b)", до этого нормально работало
значение переменных 3763620110 и 3763620109
Ага, отныне так.
IF($a!=$b)
-
SWITCH не понимает латиницу. На символы и русские буквы отвечает верно, а на латинские выдает в лог "Другая буква".
v4.13.004b. Windows 7 Максимальная x86 SP1$_test = "s"
SWITCH ($_test)
CASE("w")
LOGWRITE("Буква w")
CASE("s")
LOGWRITE("Буква s")
CASE("ц")
LOGWRITE("Буква ц")
CASE("ы")
LOGWRITE("Буква ы")
CASE("+")
LOGWRITE("Плюс")
DEFAULT
LOGWRITE("Другая буква")
END_SWITCH
HALT
-
чтоб школяры не скрывали редакторы и не занимались прочей херней
Не скрывали или не вскрывали? Если не вскрывали то у школяров для этого опыта маловато ещё наверное. :D
А когда 64-bit версия будет? И когда маскировку от всяких там защит сделаешь? ::)
-
Clickermann v4.13.005b
Исправления\доработки для большинства (если не всех) здесь упомянутых вещей плюс долгожданное для одного нашего товарища сохранение позиции и адекватное сворачивание при #autorun. Код сообщения для GetMessage() теперь можно задать через конфиг.
http://rgho.st/859ggQqGG
А когда 64-bit версия будет? И когда маскировку от всяких там защит сделаешь? ::)
Ну люди говорят что даже CM полуторагодичной давности все еще может пободаться с некоторыми защитами вроде GG. Благо там действительно было уделено некоторое внимание вопросу обхода примитивных защит. Версия х64 появится как только версия х32 будет вылизана (хотя бы будет работать так же как 4.12, чтоб не ломать шаблоны опытным кодерам). Особо вокруг нее плясать с бубном никто не собирается. Так, символически.
Выйдет сразу как только бетатестеры скажут "Ну, слава богу, вроде критичных недоработок, наконец, нет"
p.s. вырежем goto пока не поздно, не?
-
из хелпа - точно вырезать
а вообще я их использую для выходов по ошибкам. много править придётся
-
Clickermann v4.13.005b
Исправления\доработки для большинства (если не всех) здесь упомянутых вещей плюс долгожданное для одного нашего товарища сохранение позиции и адекватное сворачивание при #autorun. Код сообщения для GetMessage() теперь можно задать через конфиг.
http://rgho.st/6cqRgqYpG
А когда 64-bit версия будет? И когда маскировку от всяких там защит сделаешь? ::)
Ну люди говорят что даже CM полуторагодичной давности все еще может пободаться с некоторыми защитами вроде GG. Благо там действительно было уделено некоторое внимание вопросу обхода примитивных защит. Версия х64 появится как только версия х32 будет вылизана (хотя бы будет работать так же как 4.12, чтоб не ломать шаблоны опытным кодерам). Особо вокруг нее плясать с бубном никто не собирается. Так, символически.
Выйдет сразу как только бетатестеры скажут "Ну, слава богу, вроде критичных недоработок, наконец, нет"
p.s. вырежем goto пока не поздно, не?
GO TO пусть остается. Никто же не убирает её в других языках. Эта конструкция не мешает а иногда даже полезна. Кому не надо не будут использовать и все. И из справки ничего убирать не надо. :D
А вот маскировочку все же усовершенствовать бы. Все больше проектов банят за КМ. Пора прятаться. Мне кажется это важно для будущего проекта. И как всегда спасибо огромное за труд. Не пропадай. :D
-
Clickermann v4.13.005b
Он у меня "ослеп".
Функции связанные с поиском картинок (IF_PICTURE_IN, SCANPICTURE,...) не работают.
Windows 7 Максимальная x86 SP1
-
ой.
-
GO TO пусть остается. Никто же не убирает её в других языках.
В Python нет GOTO. Правда есть сторонняя библиотека, но это скорее баловство.
Вот из wiki:
этого оператора нет ни в Модуле-2, ни в Обероне и Компонентном Паскале. В Java есть зарезервированное слово goto, но оно не несёт никаких функций — оператора безусловного перехода в языке нет.
p.s. вырежем goto пока не поздно, не?
Такой вопрос можно предлагать если уже есть многоуровневые break и continue, есть return и обработка исключений. И даже если это всё есть...
думаю, всё равно не нужно убирать. Много новичков начинают с GOTO и для них это будет слишком. Особенно, если погружаться они не будут, а так заавтоматить пару-тройку действий.
-
Clickermann v4.13.005b
Мы вернулись. Действительно была проблема с подгружаемыми картинками.
http://rgho.st/859ggQqGG
-
Clickermann v4.13.005b
Мы вернулись. Действительно была проблема с подгружаемыми картинками.
http://rgho.st/859ggQqGG
Спасибо... Искренне...
-
Много новичков начинают с GOTO и для них это будет слишком. Особенно, если погружаться они не будут, а так заавтоматить пару-тройку действий.
Начиная программировать еще в QBASIC я впервые познакомился с GOTO. Лишать людей GOTO это все равно что лишить их детства. Детство не вернуть но воспоминания остаются навсегда. И это прекрасно. :'(
-
+ Добавлены хоткеи Tab, Ctrl + Tab для групповой табуляции
Почему обратно, не стандартное везде Shift+Tab? Даже на кнопке нарисовано.
В справке GETMESSAGE прописан код сообщения 1024, а в config.ini 2222.
По началу не понял почему не работает, пока не проверил конфиг.
В GETMESSAGE не работает параметр isnew. Всё время результаты 0.
-
+ Добавлены хоткеи Tab, Ctrl + Tab для групповой табуляции
Почему обратно, не стандартное везде Shift+Tab? Даже на кнопке нарисовано.
стандартное?... видел в какой то программе, но не запомнил. ну, можно сделать и стандартное для релиза.
так то автоотступы - наше все
В справке GETMESSAGE прописан код сообщения 1024, а в config.ini 2222.
По началу не понял почему не работает, пока не проверил конфиг.
конфиг старый прилип видимо. 1024 это как раз этот ваш WM_USER
В GETMESSAGE не работает параметр isnew. Всё время результаты 0.
а вот тут не соглашусь. проверял вот таким кодом. все работает и дропается. не?
postmessage($_hwnd_self, 2222, 123, 321)
wait(1)
getmessage( $lp, $wp, $flag)
print( $lp, " ", $wp, " ", $flag)
wait(1)
getmessage( $lp, $wp, $flag)
print( $lp, " ", $wp, " ", $flag)
halt
-
появилось немого времени потестить getmessage. в дальнейшем думаю прицепить обмен сообщениями между автоит и кликерманом. пока автоита нет. попробовал обмен между двумя кликерманами. заодно, думал проверить скорость обмена. это мое первое знакомство с обменом по postmessage, поэтому, возможно, я это делаю не так как это требуется. но я именно так примерно понял как это должно работать.
суть такова, первый кликер должен отправить числа от 0 до 9 второму кликеру. второй должен принять эти сообщения.
//первый кликер
FOR($a=0,$a<10)
WHILE($flag=0) //ожидание готовности приема второго кликера
getmessage( $lp, $wp, $flag)
waitms(10)
END_CYC
print($n) // смотрим, что будет отправлено второму кликеру.
//отправляем второму кликеру $n
postmessage(197852, 2222, $n, 0) // 197852 - hwnd второго кликера
inc($n)
waitms(20)
END_CYC
halt
//второй кликер
FOR($a=0,$a<10)
//даем знать первому кликеру, что готовы на прием данных
postmessage(132198, 2222, 0, 0) // 132198 - hwnd первого кликера
WHILE($flag=0) //ожидание данных от первого кликера
getmessage( $lp, $wp, $flag)
waitms(5)
END_CYC
print($lp) //смотрим что пришло
waitms(200)
END_CYC
halt
в этоге, эта конструкция не работает :( . как оказалось, если не запущенному кликеру отправить любое сообщение, то при его запуске, сообщение lparam и wparam сохраняются в памяти, а флаг isnew всегда будет равен 1 .
еще немного тестов, как оказалось, флаг isnew не всегда будет равен 1 . а только при первом опросе getmessage . так почему же не работает то что я накалякал ??? . к вечеру в голове уже каша, позже попробую осмыслить.
-
стандартное?... видел в какой то программе, но не запомнил. ну, можно сделать и стандартное для релиза.
так то автоотступы - наше все
Стандартное. TAB перебирает в Win элементы, Shift+TAB в обратном порядке. В редакторах текстовых то же самое.
С параметром isnew это я накосячил, вроде работает.
-
[spoiler]
появилось немого времени потестить getmessage. в дальнейшем думаю прицепить обмен сообщениями между автоит и кликерманом. пока автоита нет. попробовал обмен между двумя кликерманами. заодно, думал проверить скорость обмена. это мое первое знакомство с обменом по postmessage, поэтому, возможно, я это делаю не так как это требуется. но я именно так примерно понял как это должно работать.
суть такова, первый кликер должен отправить числа от 0 до 9 второму кликеру. второй должен принять эти сообщения.
//первый кликер
FOR($a=0,$a<10)
WHILE($flag=0)
getmessage( $lp, $wp, $flag)
waitms(10)
END_CYC
print($n) // смотрим, что будет отправлено второму кликеру.
//отправляем второму кликеру $n
postmessage(197852, 2222, $n, 0) // 197852 - hwnd второго кликера
inc($n)
waitms(20)
END_CYC
halt
//второй кликер
FOR($a=0,$a<10)
//даем знать первому кликеру, что готовы на прием данных
postmessage(132198, 2222, 0, 0) // 132198 - hwnd первого кликера
WHILE($flag=0) //ожидание данных от первого кликера
getmessage( $lp, $wp, $flag)
waitms(5)
END_CYC
print($lp) //смотрим что пришло
waitms(200)
END_CYC
halt
в этоге, эта конструкция не работает :( . как оказалось, если не запущенному кликеру отправить любое сообщение, то при его запуске, сообщение lparam и wparam сохраняются в памяти, а флаг isnew всегда будет равен 1 .
[/spoiler]
моя ошибка, перед циклами нужно было обновить значение $flag.
getmessage( $lp, $wp, $flag)
WHILE($flag=0) //ожидание готовности приема второго кликера
getmessage( $lp, $wp, $flag)
END_CYC
все норм работает, и скорость отличная :D . в среднем 33-35мс на моем примере без задержек и print . то есть 3-4мс на передачу двух параметров.
но все же прием сообщения неработающим кликером это лишнее. я считаю, что при запуске сценария, флаг isnew должен быть обнулен. да и wParam и lParam незачем принимать значения, пока скрипт не запущен. но это не проблема, можно обойти.
-
расскажите, критических ошибок нету, в поиске картинок к примеру? а то я ток на рабочих проектах могу успеть потестить
-
расскажите, критических ошибок нету, в поиске картинок к примеру? а то я ток на рабочих проектах могу успеть потестить
а мне то как интересно. итак второй год без обновлений...
но все же прием сообщения неработающим кликером это лишнее.
да, определенно. в релизе поправим. как и комбинацию для shift + tab. эт мелочи.
-
Как на счет решения проблемы "заголовка" в оконном режиме.
https://vk.com/topic-14410794_21900056?post=60895 (https://vk.com/topic-14410794_21900056?post=60895)
(https://pp.userapi.com/c841620/v841620841/36856/Ls3LrdbN46A.jpg)
(https://pp.userapi.com/c841632/v841632841/3e399/-xKKUE_jAD4.jpg)
-
Обнаружил баг.
Если привязать кликер к окну а затем закрыть это окно в режиме редактора, то после отвязки редактор вподает в ступор.
-
Как на счет решения проблемы "заголовка" в оконном режиме.
В смещении участвует не только заголовок, но и толщина рамки. Казалось бы не велика беда сделать оффсеты по x,y. НО толщина этих рамок в разных версиях винды разная. И тут уже начинается головная боль
-
Заметил, что на windows7 подобная конструкция работала, а на windows 10 выскакивает ошибка интерпретации строки
$com_ = INT (INIREAD("..\command_file.ini","com","command"))
Ошибка возникает из-за попытки выйти на каталог выше. Проверьте плз. Кусок кода написал по памяти, поэтому слеш мог поставить не правильно, но пробовал и прямой и обратный.
-
SETVAR и GETVAR не работают пока переменной не существует :-\ , это нормально?
$var = 0 //без обьявления выдает ошибку.
SETVAR ("$var", 2) //и тут
print($var)
print(GETVAR("$var")) //и тут
halt
-
SETVAR и GETVAR не работают пока переменной не существует :-\ , это нормально?
Да, и об этом написано в справке.
Примечания
К моменту вызова переменная с указанным именем должна существовать
-
у меня одного в версии 4.13.004 в режиме "редактора" падает fps рабочего стола? при этом проц не нагружается, видеокарта вроде тоже не напрягается. просто картинка начинает тормозить, будь то игра, видео, или просто при передвижении окна по рабочему столу. если закрыть редактор, все становится норм.
речь не идет о содержимом запущенного скрипта, кликер тупит систему без выполнения сценария.
-
у меня одного в версии 4.13.004 в режиме "редактора" падает fps рабочего стола? при этом проц не нагружается, видеокарта вроде тоже не напрягается. просто картинка начинает тормозить, будь то игра, видео, или просто при передвижении окна по рабочему столу. если закрыть редактор, все становится норм.
речь не идет о содержимом запущенного скрипта, кликер тупит систему без выполнения сценария.
Чем-то нагружать нужно? Если не запущено игр, то всё нормально. (Игры запустить не могу на работе)
-
Чем-то нагружать нужно?
нет, стоит только запустить прогу, открыть редактор, взять окно редактора и поводить его по рабочему столу, и сразу видно как окно перескакивает с места на место, не скользит.
как обычно, дело оказалось в стиле рабочего стола, мой любимый "Aero" :D . если сменить стиль, тормоза пропадают.
-
В версии 4.13.005b инструкция типа $var = PXLcount (795,221, 939, 236, 0) в XP SP3 стала работать неправильно, на чистом белом выдает ошибочно значения $var >0. В WIN7 x64 она работает правильно. В версии 4.13.004b инструкция работает правильно как в XP, так и WIN7.
-
В версии 4.13.005b инструкция типа $var = PXLcount (795,221, 939, 236, 0) в XP SP3 стала работать неправильно, на чистом белом выдает ошибочно значения $var >0. В WIN7 x64 она работает правильно. В версии 4.13.004b инструкция работает правильно как в XP, так и WIN7.
Странно, у меня выдает 0. Сижу на XP
-
Да, ошибся я, на один пиксел pxlcount выходил за GETSCREEN, а не внутрь уменьшался, как думал, исправил, все заработало. Этот же ошибочный кусок взял и для теста, откуда и паника. Почему-то это сходило с рук в WIN7 и 14.13.004b.
-
Почему-то это сходило с рук в WIN7 и 14.13.004b.
Потому, что в 004b не работали параметры getscreen, снимок делался целогоэкрана.
005b при запуске сразу помещает снимок экрана в буфер, далее его можно обновлять гетскрином (так у меня в вин10). В старых версиях же изначально в буфере темнота.
-
Как на счет решения проблемы "заголовка" в оконном режиме.
Починено. Там вообще не очень корректно работало.
v4.13.006b
http://rgho.st/7NMC8qtZk
так же добавлены две сис переменные $_date_str и $_time_str для вполне очевидных целей
-
Как на счет решения проблемы "заголовка" в оконном режиме.
Починено. Там вообще не очень корректно работало.
сорри, в 006b что-то тоже "не тавой"..
было подобное, гетскрин привязаного внутри окна браузера flashplayer иногда давал результат как без привязки (браузер передвинут в 0,0), но размером с сам флэш, и где пространство браузера - пустота, т.е. изображение флэша сдвинуто вправо-вниз и обрезано нижним правым углом до размеров флэша без глюка. причём, если чуть подождать и повторить гетскрин - уже всё нормально. аналогичным образом "прыгало" изображение флэша и в лупе редактора при включенной привязке.
не был уверен, что случай не индивидуальный (в частности, у меня 125% скалинг интерфейса винды и во флэше включено аппаратное ускорение, чего делать вроде как не рекомендуется) поэтому не поднимал вопрос на форуме, а выкрутился обёрткой:
sub(safegs,$sgs_cm)
$t_sgs=0
for($t_i=1,(($t_i<15)&($t_sgs=0)))
waitms(100*$c_slow)
getscreen
$t_sgs=pxlxor(1,10,1,10)
end_cyc
colormode($sgs_cm)
if($t_i>10)
print("=== warning, ",$t_i," getscreen tries")
screenshot("bad-gs-")
end_if
end_sub
до 005b спасало на ура, до bad-gs-ххх доходило ооочень редко, единицы за несколько месяцев.
поставил 006b, сделал один тестовый прогон - всё нормально. ок, оставил на ночь. на утро - 112 однотонных последовательных bad-gs-ххх размером 41736 х 2933 (и, соответственно 467 мб штука :) )
причём, судя по логам скрипта, он несколько раз таки отработал нормально, но в какой-то момент стал слепым и наплодил вот таких монстров.
P.S.: раз добрался, опишу ещё один недочёт, который стал наблюдаться с 005b - иногда не ловится hwnd по тайтлу. тайтл - абсолютно статический. тоже пришлось обернуть:
for($t_i=0,(($t_i<10)&($sw=0)))
waitms(100)
$sw = wndfind("заголовок")
end_cyc
по 004b включительно это не требовалось, глюк не проявлялся ни разу.
-
до 006 getscreen с привязкой захватывал не целевой элемент (как воще т задумывалось) а все родительское окно. поэтому появлялись сдвижки графики равные всяким панелям, рамкам, заголовкам. в 006 захватывается только тот элемент интерфейса к которому была привязка.
посмотрю что там может разростить на пицот мегабайт. возможно где то утечка памяти. а возможно все и правда индивидуально весьма. оконный режим - вещь такая, в себе.
-
до 006 getscreen с привязкой захватывал не целевой элемент (как воще т задумывалось) а все родительское окно. поэтому появлялись сдвижки графики равные всяким панелям, рамкам, заголовкам. в 006 захватывается только тот элемент интерфейса к которому была привязка.
заглянул ради интереса на 006 снова лупой редактора - так и скачет. выглядит это так (gif):
(https://vgy.me/fFpbyr.gif)
т.е. изображение на долю секунды "съезжает" вправо и вниз (чётко на расстояния от 0 до края флэша без привязки), затем "возвращается" обратно. закономерности во времени появления таких скачков не наблюдается, интервалы абсолютно разные.
а, и забыл сказать - без привязки никаких скачков нет, всё всегда где должно быть.
посмотрю что там может разростить на пицот мегабайт. возможно где то утечка памяти.
ага, плиз, а то страшно надолго оставлять стало :)
-
Как на счет решения проблемы "заголовка" в оконном режиме.
Починено. Там вообще не очень корректно работало.
v4.13.006b
http://rgho.st/7NMC8qtZk
так же добавлены две сис переменные $_date_str и $_time_str для вполне очевидных целей
v4.13.007
Так, тут кароче выяснилось что дело было не в бобине. А в некорректной работе WinAPI применимо к нашим целям.
Вернул что сломал. Теперь графика не должна съезжать на размер шапок рамок
http://rgho.st/6P7Rjb6Mw
Надо уже разобраться с этой фигней и к НГ выкатить обновление. Ребята два года ждут уже.
p.s. что касается поведения флеш плеера когда он становится весь черный - так было всю дорогу. возможность получения графики в оконном режиме исключительно на совести разработчиков принимающей стороны
-
Так, тут кароче выяснилось ...
Да теперь все ровно. Однако ступор редактора после исчезновения привязанного окна все еще остается.
-
Нельзя ли в этой прекрасной программе для ускорения поиска нужного куска в длинном тексте сделать некоторые разделители разноцветными, напр. //+++++ подсвечивать красным цветом, //~~~~~~ - синим, //*** - желтым, оставляя остальные, как и сейчас, зеленым.
-
А вот то что старые переменные $_xmax и $_ymax по прежнему сжирают по одному пикселю в уплату за свою работу - огорчило.
А что с ними не так? Всё правильно, максимальные координаты x,y (не размер экрана).
-
И до кучи хотелось, бы поддержка файла qinsert_menu большего размера, так как он очень маленький и многие полезные команды в него уже не влезают, если файлы большего размера не поддерживаются, тогда ещё одно меню куда пользователи будут сохранять личные команды.
Чего? :o
-
впервые слышу. по задумке они так то безразмерными должны быть. Oraven вон их допиливает постоянно.
и уж точно нигде жестких границ не задавалось. у нас даже размер истории открытых файлов можно подстраивать.
а можно файл который не смог не влез? потестирую погоняю. да и вдруг там просто где то синтаксис запорот, скобочку забыл или символ какой
-
А системную переменную с номером версии ввели?
-
Появление версии 4.13.4 я проспал. И даже не заметил, когда изменились и дополнились операторы сравнения:
Неравно
| !=
|
Больше или равно
| >=
|
Меньше или равно
| <=
|
Печалька, что ! поменяли на !=, что теперь делать (переходить ли на новую версию и править скрипты или подождать поправок)? А ведь было чуть легче, если б была переменная с кодом версии кликера:
if($_ver>="4.13.4")
if($a!=$b)
else
if($a!$b)
end_if
$a=1
else
if($_ver>="4.13.4")
if($a!=$c)
else
if($a!$c)
end_if
$a=0
end_if
else
$a=2
end_if
Но в идеале хорошо б, если интерпретатор сам понимал "старые" выражения как надо и не давал ошибок, чтоб не плодить горы лишнего кода.
Ещё б не плохо оператор return, который бы определял, какое значение возвращает функция-подпрограмма. Ну и брейк для выхода из цикла можно добавить заодно.
sub(func,$par)
$a=5*$par
return $a
end_sub
// Было:
func(3)
print($a+2)
// Стало бы:
print(func(3)+2)
Но добавление "Меньше/Больше или равно" это всё-таки прогресс. Жалко вот ещё, что strreplace обрабатывает/заменяет только первое вхождение, а не все.
PS. Оказывается, пропустил я не только 4.13.4бетку, но и 4.13.7)) Сразу захотелось узнать, будет ли конструкция вида if ("4.13.4"<=$_ver<"4.13.7") работать)) Ну а чё, стандартный такой себе математический диапазон, с коим все мы сталкиваемся в школе или вузе.
..а на windows 10 выскакивает ошибка интерпретации строки
$com_ = INT (INIREAD("..\command_file.ini","com","command"))
Ошибка возникает из-за попытки выйти на каталог выше. Проверьте плз. Кусок кода написал по памяти, поэтому слеш мог поставить не правильно, но ..
Может, дело в имени переменной $com_ (заканчивается не на букву)? Сам я ешё не тестил пока ничего новее 4.13.3, завтра возможно исправлюсь.
у меня одного в версии 4.13.004 в режиме "редактора" падает fps рабочего стола? при этом проц не нагружается, видеокарта вроде тоже не напрягается. просто картинка начинает тормозить, будь то игра, видео, или просто при передвижении окна по рабочему столу. если закрыть редактор, все становится норм.
речь не идет о содержимом запущенного скрипта, кликер тупит систему без выполнения сценария.
Первое, что приходит в голову, это лупа (либо отключаем когда не нужна, либо понижаем скорость обновления в конфиге). У меня бывал глюк после пользования лупой, что либо окно редактора становилось чёрным, либо элементы интерфейса главной формы — не прорисованными (вплоть до переразворачивания).
-
Печалька, что ! поменяли на !=, что теперь делать (переходить ли на новую версию и править скрипты или подождать поправок)? А ведь было чуть легче, если б была переменная с кодом версии кликера.
да, переменная с версией это давно пора, и предлагали ранее.
как вариант (сам не тестировал), можно попробовать с #define
пример редактирования скрипта под версию 4.13...
#define !: !=
if(1 ! 0)
print("да, !")
else
print("нет, !")
end_if
halt
но нужно учитывать, что все строки с восклицательным знаком также добавят к себе "=" . данный пример работает на 13.006 корректно, кроме "да, !=" в логе :D.
насчет пользовательских функций также уже давно обсуждалось. было бы здорово.
http://crapware.aidf.org/forum/index.php?topic=2108.0
-
данный пример работает на 13.006 корректно, кроме "да, !=" в логе :D.
Сорян, Драмчег, пока я написал тебе ответ выше, ты меня уже опердил))
-
у меня одного в версии 4.13.004 в режиме "редактора" падает fps рабочего стола? при этом проц не нагружается, видеокарта вроде тоже не напрягается. просто картинка начинает тормозить, будь то игра, видео, или просто при передвижении окна по рабочему столу. если закрыть редактор, все становится норм.
речь не идет о содержимом запущенного скрипта, кликер тупит систему без выполнения сценария.
Первое, что приходит в голову, это лупа (либо отключаем когда не нужна, либо понижаем скорость обновления в конфиге). У меня бывал глюк после пользования лупой, что либо окно редактора становилось чёрным, либо элементы интерфейса главной формы — не прорисованными (вплоть до переразворачивания).
да не, не изза лупы это, я там далее сам потестил и понял в чем загвоздка http://crapware.aidf.org/forum/index.php?topic=356.msg24857#msg24857
и это начиная именно с версии 4.13 и выше. сильно не напрягает, так как скрипты то в основном запускаются с главного окна (не с редактора). просто заметил кой какой косячек.
[spoiler=вот в чем дело :)]черт подери, может Johnny встроил майнер в кликер :o ;D . при майнинге видеокартой какраз таки фпс раб. стола падает, только намного сильнее.
на заметку Johnny для новых версий ;). [/spoiler]
-
[spoiler=вот в чем дело :)]черт подери, может Johnny встроил майнер в кликер :o ;D
на заметку Johnny для новых версий ;). [/spoiler]
Идея годная, больше 1000 голов уже есть, пора монетизировать! :D
А ваще Аэро лупе не помеха, одно может помогать другому тормозить.
Ну и майнин в простое -__-
По ходу и задумка с #дефайном неплохое быстрое решения, я уж и забыл про него, хотя перед переходом на новый движок надо малость потестить завтра и оценить все про да контра.
Захотелось ещё вот кратко набросать список нововведённых функций:
[spoiler=Свежие функции Кликермана после релиза 4.13.3b]
$_xmin (эти два для режима привязки? или только для мультимонитора?)
$_ymin ~~~
$_date_str
$_time_str
HGETPID(hwnd)
GETMESSAGE (wParam, lParam, [isnew] )
Tab, Ctrl+Tab, Shift+Tab, Ctrl+S (пользуюсь в редакторе этим хоткеем ещё с 4.13.3 точно)
$_hwnd_self
!= <= >=
and or xor ^
arrsort($array)
#logfile "debug.txt"
\data\default.txt
--httpwork.dll
CHAR(code)[/spoiler]
Для таких как я, которые вечно всё пропускают. Я ожидал, что будет 4 версия, но вот 5-ой и 7-ой я точно не ждал, хорошие у Джона перемены)) Unicode у меня кстати так и не работает, надо б на эту тему написать обзорчег.
Провел эксперименты. Нашёл, что ошибка появляется когда есть файл скрипта по умолчанию default.txt
Не совсем въеду, об чём речь. Что за дефолт и где он лежит? ...А, всё, почитал справку, раздел "История") Дооо, надо эт потестить есчо. Читаю в справке: "Доработка функций граф поиска", думаю: во-о-о, чтот Джонни ввёл для расчёта графов и задачи коммивояжера)
Надумал щас вот побыряку потестить и запустить новые версии кликера да не тут то было. Ни одна из новых версий не пошла, два раза вылетает "Прекращена работа программы" и без всяких опций. С-под админа тож не завелось, завтра надо буит добавить в исключения и перегрузиться. Обычно я не тушу комп, а гибернирую))
Ещё интрэсна, научатся ли когда-нибудь функции getfilelist/getdirlist возвращать и дату изменения файлов/папок, а не только их имена? Допустим даже через несколько скрытых параметров (один ключ = нужны ли пользователю даты или нет, второй = формат возвращаемой даты).
Мои пометки к новой справке:
+ Доработка READMEM(), теперь функция
Теперь функция, а раньше тогда что это было? Или тут недописано?
+ Отказ от библиотеки httpwork.dll
Это ещё зачем? и повлияет ли это на выпил httpGet?
У меня и так обращение по протоколу https: вешает намертво х64-версию КЛМН, то же происходит и от многих других сайтов при работе х32 с этой функцией. А многие http-сайты (не засекьюренные) возвращают увы только пустую строку, несмотря на весь мощный потенциал этой фишки. То есть в большинстве случаев она либо виснет, либо отдаёт "".
+ Исправление ряда проблем с кавычками в возвращаемых строках
+ Исправление ряда багов потоков
+ Предупреждение об отсутствии файла в #include
За это отдельное спасиб, потестим! Не лишним было б и предупреждение о недостающем гетскрине, по аналогии (для любителей искать чёрную кошку на чёрном экране, к коим относится и ваш слуга)).
+ Исправление GETFILELIST()
+ Исправление GETDIRLIST()
А что там было не так?
Еще кажется, из хелпы было удалено, что имя переменной после доллара должно начинаться с буквы, но не цифры. Упростились требования к имени?
RNDFROM
Функция. Возвращает случайно выбранное число из заданного набора.
Разве функция не может возвращать строки из указанного набора?
ARRSORT
Сортирует элементы массива по возрастанию.
Пока не судьба потестить функцию, но уже интересно: сортируются ли значения и по алфавиту или только числа по возрастанию? Соблюдается ли "натуральный порядок" при сортировке? Например: 1,2,3,10,100 вместо 1,10,100,2,3. Будет ли в функции создан ключ для удаления дублей строк/чисел или хотя бы функционал для маркироовки дублей (напр., временный массив с позициями дублирующихся строк)? Ешё мелочь, но спрошу: если будет фильтрация дублей, то будет ли фильтр регистро(не)зависимым или по выбору?
STRPOS
Функция. Возвращает позицию начала искомой подстроки во входной строке.
Та же байда, что и со стринг-реплейсом: работает только с первым элементом вместо того, чтоб создать массив позиций всех найденных строк.
CHAR
Функция. Возвращает символ по его коду.
Работает только с ascii-диапазоном? Или поширее?
SETKBLAYOUT
Устанавливает языка ввода (раскладки) в конкретном окне.
Можно к примеру в справке указать что для русяза код равен 1049.
WHILE ... END_CYC
Цикл с предусловием.
Можно в примеры добавить нечто вроде:
[spoiler=(ожидание) поиска картинки]
$counter=0
$present=0
while($present=0)
getscreen(0,0, $_xmax,$_ymax)
//colormode(8, 0,0, $_xmax,$_ymax)
if_picture_in(0,0, $_xmax,$_ymax, "screen.bmp")
move($_return1,$_return2)
print("Found at (",$_return1,",",$_return2,")")
waitms(1)
$present=1
else
print("Not found!")
inc($counter)
if($counter>10)
beep(800,800)
halt
end_if
end_if
waitms(300)
end_cyc[/spoiler]
SCREENSHOTFIX
По-прежнему, данная команда так и не появилась в гиперссылочном содержании вверху страницы раздела "Анализ экрана". Также у функции в справке неправильно описан синтаксис -- очевидно, он взят из SCREENSHOTEX, а надо так:
SCREENSHOTFIX(x1, y1, x2, y2, path, [format])
То есть в описании отсутствует обязательный параметр PATH с указанием пути к файлу перезаписываемой картинки, хотя пример к функции предподнесён правильно.
Ещё такой попутный квешн: раз кликер меняет применяемую к jpeg-скринам компрессию только при перезагрузке проги, можно ли его заставить как-либо перечитать настройки из конфига без перезапуска?
$_date_str
$_time_str
Их пока что не нашёл в справке, во "Введении". Типа возвращает строку с наконкатенированными циферками и разделителями?
LOGSHOW (show, [x, y] )
Может, добавить ещё две факультативные координаты в параметры, чтоб можно было задавать и размер лога на экране?
EXECUTE (filename, [param] )
Он больше не переводит самопроизвольно передаваемые в кавычках параметры в верхний регистр?
GETMESSAGE (wParam, lParam, [isnew] )
Для меня это всё тёмный лесъ, как и ридмем/райтмем)) Нужно хотя б с десяток реальных, полезных, насущных примеров применения, самых т. с. не в бровь, а в глаз, с протейшими вещами, которые можно сотворить с этими командами. Но вот идея Драмстера обмениваться ментально флагами состояния с другой копией кликера мне оч понра. А можно например посылая мессидж без привязки к окну, закрывать/ сворачивать/ менять текст элементов? И можно ли менять текст элементов окна путём записи чрез команду writemem?
Кроме всяких туда-сюда снующих и вечно всплывающих жучков (не в последнюю очередь благодаря большому поддерживаемому diversity функций кликера, что несомненно есть немалый плюс), слабым местом является слабая представленность интерфейсеых функций. Вот в 2016-ом, относительно недавно, была добавлена RADIOBOX, как она удобна и как бы я без неё жил! Но вот некоторых элементов для создания элементов интерфейса кликеру имхо явно не хватает:
1) Создание из скрипта формы произвольной, конфигурируемой формы и размера (простите за тавтологию) + создание на этой форме любого количества кнопок опять же произвольного, задаваемого в скрипте размера
2) Возможность выводить полученную в графическом буфере либо из файла картинку в любом месте экрана и с любой прозрачностью, в том числе использовать выводимые картинки в виде фона для кнопок из пункта 1
То есть по сути нужен пяток простых, но крутых новых функций:
- drawform (name, [x1,y1, x2,y2], [background])
- drawimage (name, targetFormname, [x1,y1, x2,y2], sourceFile/sourceVar, [transparency, buttonname], [effect, effectStrenght])
- drawtext (name, targetFormname, fontfamily, fontsize, [border, bordercolor, bordersize,] [x1,y1, x2,y2], string)
- changeobj (name, newSourceName, targetFormname)
- drawbutton (name, targetFormname, subOnclick, [x1,y1, x2,y2], [background])
Возможно, чтоб не вводить диссонанс в большой список параметров и не путать отсутствующие параметры с имеющимися, можно было б организовать парсинг параметров путём задания их синтаксиса в виде пар, к примеру так:
drawtext(string="MyText", size=18)
Это будет не плохой шажок навстречу АвтоИту по созданию интерфейсов программок -____- Так недалеко и до регекспа.
-
потестировал те самые, загадочные $_xmin $_ymin. как и все догадывались, они показывают отрицательные значения координат при расположении дополнительного монитора левее или выше основного.
и даже при таком расположении экранов
(https://i.imgur.com/IKMwWF1.png)
переменные возвращают правильные значения (отрицательные $_xmin/$_ymin и положительные $_xmax/$_ymax) .
но, видимым этот дополнительный монитор не становится. потестил с разными расположениями мониторов. как оказалось, пока основной монитор не будет выше (либо равно) и левее (либо равно) дополнительного, то правильного скрина не будет. вкратце, если одна из переменных $_xmin или $_ymin будет меньше нуля, то скриншот экрана страдает. основной монитор в таком случае находится в верхнем левом углу всего скриншота, а все остальное - черное.
-
+ Доработка READMEM(), теперь функция
Теперь функция, а раньше тогда что это было? Или тут недописано?
Дописано. А раньше была не функция :D
Команда/оператор, вызывалась READMEM(), результат возвращался в $_return1
Теперь это функция и вызывается типа так:
$result = READMEM()
STRPOS
Функция. Возвращает позицию начала искомой подстроки во входной строке.
Та же байда, что и со стринг-реплейсом: работает только с первым элементом вместо того, чтоб создать массив позиций всех найденных строк.
Всё нормально, для "поиска всех" обычно существует другая команда. Чтобы тупо не тратить время на поиск в больших строках того, что часто нельзя использовать. Даёшь STRPOSALL!!!
Именно в таком виде (поиск первого) она чаще всего и используется. Потом могут идти изменения строки и все остальные позиции будут не актуальны.
1) Создание из скрипта формы произвольной, конфигурируемой формы и размера (простите за тавтологию) + создание на этой форме любого количества кнопок опять же произвольного, задаваемого в скрипте размера
:) Ты просто не представляешь сколько это функций, параметров и режимов. Для простоты - это больше чем сейчас есть в кликере всего остального.
Регексп, кстати, проще прикрутить. Это сторонние модули.
-
Вчера обнаружил во время попыток запустить новые релизы в свойствах исполняемого файла вот такую новую галочку:
(https://image.prntscr.com/image/jDeQzZ91RIKzNADXrpNV9g.png)
Установка галочки никак не повлияло на возможность запуска. Тесты совместимости тож не помогли, добавил в деп-список, теперь нужен ребут.
STRPOS
Функция. Возвращает позицию начала искомой подстроки во входной строке.
Та же байда, что и со стринг-реплейсом: работает только с первым элементом вместо того, чтоб создать массив позиций всех найденных строк.
Всё нормально, для "поиска всех" обычно существует другая команда. Чтобы тупо не тратить время на поиск в больших строках того, что часто нельзя использовать. Даёшь STRPOSALL!!!
Именно в таком виде (поиск первого) она чаще всего и используется. Потом могут идти изменения строки и все остальные позиции будут не актуальны.
"Даёшь STRPOSALL!11"? Намекаешь, что в реале эта команда никогда и никем не используется? И что вот, каждый раз в цикле заново искать? "Потом могут идти изменения строки и все остальные позиции будут не актуальны" -- я подозревал об этом, когда пытался в уме себе представить работу функции, но допускал, что в реальности дела получше, а что, разве нельзя к полученнным найденным индексам позиций прибавлять смещения на количество добавляемых/вставляемых символов? Ведь их число мы всегда знаем или можем подсчитать.
1) Создание из скрипта формы произвольной, конфигурируемой формы и размера (простите за тавтологию) + создание на этой форме любого количества кнопок опять же произвольного, задаваемого в скрипте размера
:) Ты просто не представляешь сколько это функций, параметров и режимов. Для простоты - это больше чем сейчас есть в кликере всего остального.
Регексп, кстати, проще прикрутить. Это сторонние модули.
Ну а что, эволюцирнировать-то надо :) Рано или поздно всё равно это всё появится, а щас вижу пошёл у нас весёлый период экспериментов и устранения багов/ добавления новых плюшек, я токк за! С регулярками подозреваю, что было б просто, так Джонни б уже прикрутил, а так надо будет ещё их сравнивать/ тестить на предмет больших перловой поддержки и вменяемого АПИ, чтоб после введения regEx не отвалилась работа строчных функций. Хотя даст бог, и кавычки станут на место)) Так что мож щас и время пришло для начала введения создания формочек, ну не сразу все функции вводить, а постепенно, но с сохранением бек-компатибили, не так как с != вышло, а то скоро такими темпами и === заступят на дежурство.
-
Ошибка при сравнении строк с числами v4.13.007
if(1="text")
print("стаботало")
end_if
halt
-
Ошибка при сравнении строк с числами v4.13.007
Почему только строк? На сравнении двух чисел тож спотыкается (http://crapware.aidf.org/forum/index.php?topic=3705.msg25270#msg25270). Ну ведь результат, возвращаемый ф-цией ArrSize, это число, верно? Подозреваю, собака порылась в новых матоператорах, а не в ифе. Оказывается, пытался запихнуть в ячейку с помощью $uniqz[0]=$curr, и понял свою тупость только после тестирования в 4,13,3. Кстати, почему не сделать рабочей эту тему схему присвоения $array[$idx]=$defvar?! .....Хотя стоп, поменял $uniqz[0]=$curr на соответствующий arrpush($uniqz[0],$curr), но дело не сдвинулось, иф не выполняется как положено. Даже в 4,13,3 не работает, наверно мой загон закрался... Почему arrpush($uniqz,$curr) можно присваивать, а arrpush($uniqz[0],$curr) нельзя? :'(
Ещё заметил, что "блокируемый" ввод в редактор при исполнении скрипта вовсе не блокируется с клавиатуры, точнее, блокируется, но.. В общем я сделал очередной скрипт с while+iskeydown и бесстрашно жал хоткеи прям с фокусом на редакторе, а потом через какое-то время заметил, что некоторые части строк в скрипте хаотично перемешались. Не наю, может причина не в блокировке, но покрайняку нажатия в редактора шли и возможно некоторые он не обработал или сделал это не верно. В общем, пришлось потерять несколько минут на устранение мешанины (это ещё скриптик небольшой был и был предыдущий сейв, слегка отличающийся от кода в эдиторе). Было такое кстать несколько раз, три раза в 2-х скрипта, кажися.
ПСы. Ой чуть не забув, аррСорт тож не робит (http://crapware.aidf.org/forum/index.php?topic=3704.msg25259#msg25259) у мя.
-
функции Кликермана после релиза 4.13.3b
Clickermann осваиваю недавно, использую 4.12.001 (http://crapware.aidf.org/files/7/) (2 008 780 байт). Хотелось бы сразу разбираться и вникать в свойства и методы наиболее поздней, пусть даже нестабильной, версии. Если такая возможность для новичков существует, то откуда её (последнюю версию) загрузить?
-
функции Кликермана после релиза 4.13.3b
Clickermann осваиваю недавно, использую 4.12.001 (http://crapware.aidf.org/files/7/) (2 008 780 байт). Хотелось бы сразу разбираться и вникать в свойства и методы наиболее поздней, пусть даже нестабильной, версии. Если такая возможность для новичков существует, то откуда её (последнюю версию) загрузить?
В самом низу 26-ой страницы данной темы товарищ Челледжер ака автор программы скидывал линк на версию Clickermann 4.13.007, here u have.
-
функции Кликермана после релиза 4.13.3b
Clickermann осваиваю недавно, использую 4.12.001 (http://crapware.aidf.org/files/7/) (2 008 780 байт). Хотелось бы сразу разбираться и вникать в свойства и методы наиболее поздней, пусть даже нестабильной, версии. Если такая возможность для новичков существует, то откуда её (последнюю версию) загрузить?
Вот полная сборка последней версии Clickermann 4.13.007b
https://yadi.sk/d/hyLYf0_23QgUfn (https://yadi.sk/d/hyLYf0_23QgUfn)
-
Ошибка при сравнении строк с числами v4.13.007
if(1="text")
print("стаботало")
end_if
halt
ну вываливаться оно конечно не должно, но чисто концептуально:
вот к примеру условие 1 = "1" что должно вернуть? истину или ложь?
Clickermann осваиваю недавно, использую 4.12.001 (2 008 780 байт). Хотелось бы сразу разбираться и вникать в свойства и методы наиболее поздней, пусть даже нестабильной, версии. Если такая возможность для новичков существует, то откуда её (последнюю версию) загрузить?
у нас тут клуб перфекционистов. дай бог году к 2020 выкатим релиз. а пока тыщи активных пользователей продолжат страдать и ждать версию х64
Почему arrpush($uniqz,$curr) можно присваивать, а arrpush($uniqz[0],$curr) нельзя?
потому что первый аргумент - имя массива. $uniqz[0] же является уже ссылкой на его первый элемент. в справке так то написано.
-
ну выва... условие 1 = "1" что должно вернуть? истину или ложь?
Истину! На худой конец -1 (минус единицу, эквивалент true). Именно простотой своей макроязык Clickermann-а в его текущем состоянии увлекателен, обаятелен, очарователен и притягателен.. наверное.
у нас... дай бог году к 2020 выкатим релиз. а пока тыщи активных пользователей продолжат страдать и ждать версию х64
Не страдать (Win 10 64x + 4.12.001 (2 008 780 (http://crapware.aidf.org/files/7/) байт) - полёт нормальный), но терпеливо ожидать специализированной для х64 - это факт; хотя какие преимущества - по существу непонятно.
- Почему arrpush($uniqz,$curr) можно присваивать, а arrpush($uniqz[0],$curr) нельзя?
- потому что первый аргумент - имя массива. $uniqz[0] же является уже ссылкой на его первый элемент. в справке так то написано.
Спросив, вложенные? массивы что ли... предполагаются Cleoss (http://crapware.aidf.org/forum/index.php?action=profile;u=3865)-ом в #412 (http://crapware.aidf.org/forum/index.php?topic=356.msg25271#msg25271)
И от себя вопрос:
- Продолжающаяся разработка Clickermann кроме:Плагины представляют собой стандартную DLL библиотеку с одной единственной экспортной функцией... Техническая реализация... Все что вам необходимо знать - это формат экспортной функции, которую вызывает кликер. Она выглядит так в стандарте С++:
int execute(int* _arr, int _size)
То есть... Данный подход позволяет передать в плагин практически неограниченное количество параметров. В кликере вызов плагина реализуется следующим (к примеру) образом:
CALL("plugin.dll", 1, 2, 3)
print("result: ", $_return1)
Инструкции CALL передается любое число... его функция вернет свое значение в системную переменную $_return1.
предполагает? ли добавление иных интерфейсов? для последующей интеграции, скажем: а) функции чтения Command Line Parameters (https://www.autoitscript.com/autoit3/docs/intro/running.htm#CommandLine) переданных при запуске Clickermann, б) внутренние ActiveX/COM (https://www.autoitscript.com/autoit3/docs/intro/ComRef.htm) и внешние (http://www.script-coding.com/AutiItX.html) интерфейсы, в) может быть чего-то в таком направлении следует ожидать? Собственно, чем х64 к 2020-му году, мне хочется более прямой интеграции с javascript-ом браузеров.
Я недавно на форуме, однако прошу: насколько это возможно оперативнее рассмотреть предложенные мной ссылки, дабы ими не нарушить сложившейся приятной, ламповой атмосферы этого форума.
Вот полная сборка последней версии Clickermann 4.13.007b...
Годно! Благодарю, загружено ;)
-
Истину! На худой конец -1 (минус единицу, эквивалент true).
Вот и JS-теры подкатили :) Господь с вами, какую истину. И иж тем более откуда такой "худой конец"? Кто здесь поймет эти заморочи и главное, зачем их сюда тащить?
Ни в коем случае не истина и тем более -1 (разрешите полюбопытствовать в каких языках -1 это истина. Так, для себя, чтоб держаться от них подальше).
Раз у нас динамическая типизация. Предлагаю не выдумывать велосипед и в условиях содрать сделать так:
Все числа кроме 0 это True, 0 - False.
Все не пустые строки True, пустые "" - False.
Если логические операнды числа - здесь всё понятно.
Если строки = - полное соответствие, != понятно, < > предлагаю варианты или классическое лексикографическое сравнение или более полезное в кликере по длине строк.
Если логические операнды разных типов - это всегда False!
Никакие неявные преобразования типов не происходят.
-
Раз у нас динамическая типизация. Предлагаю не выдумывать велосипед и в условиях содрать сделать так:
Все числа кроме 0 это True, 0 - False.
Все не пустые строки True, пустые "" - False.
Если логические операнды разных типов - это всегда False!
Никакие неявные преобразования типов не происходят.
Тогда почему б не заиметь хоть парочку операторов функций для приведения на случай всяких эксепшнов?! Смутно помнится, они даже были раньше в кликере, но по (не)понятным причинам выпилены вместе с delvar. Хотя мб они работают недокументированно?)) Вон трейсей норм ся чувствует. Всего-то и нужно, что tostr/tofloat. И может ещё проверялку для необъявленной переменной?) Не кошерно возвращать ноль из ничего)) Чтот вроде if($quantity!=_nill). А вот if($string) для заданной строки БЕЗ сравнения это вполне себе по-яваскриптовому бодро, в птинципе таким же макаром можно было б и необъявленную выявлять. А то ужо дожились: неизвестно какие типы у ячеек массива и с чем их опосля сравнивать, какой огород нужен)
-
у нас... дай бог году к 2020 выкатим релиз. а пока тыщи активных пользователей продолжат страдать и ждать версию х64
Не страдать (Win 10 64x + 4.12.001 (2 008 780 (http://crapware.aidf.org/files/7/) байт) - полёт нормальный), но терпеливо ожидать специализированной для х64 - это факт; хотя какие преимущества - по существу непонятно.
корректное отрабатывание оберток для функций, взаимодействующий со сторонными приложениями и системой через WinAPI, например.
х32 приложение не может полноченно существовать в х64 системе и работать даже с банальный х64 блокнотом
Спросив, вложенные? массивы что ли... предполагаются Cleoss (http://crapware.aidf.org/forum/index.php?action=profile;u=3865)-ом в #412 (http://crapware.aidf.org/forum/index.php?topic=356.msg25271#msg25271)
на случай если кто до сих пор не понял. если что то не всунуто в кликер, то это я тупо не знаю как воткнуть это что то в уже существующие реалии. а не потому что я вредный.
не боги горшки обжигают как бы и я кликер пишу на нормальном ЯП в соверменной среде и тимею понимание как должен выглядеть инстурмент.
мне вообще все больше импанирует идея что пора все переписывать по новой, потому что архитектура "четверки" уже упирается макушкой в потолок. с другой стороны писать клон AutoIt мне никогда не хотелось.
Плагины ...
были введены в бородатом году как решение для довольно скудного на то время функционала. я вообще не знаю пригодилось ли это хоть раз потмоу что имхо тем кто может понять что там написано и как собратьс вою DLL кликер то собственно особо и не нужен.
идея кстати с получением параметров вызова довольно интересная но на практике что она может дать? ну у нас как бы итак параметр анализируется, позволяя одним щелчком запускать скрипт. а кроме того что?
-
Раз у нас динамическая типизация. Предлагаю не выдумывать велосипед и в условиях содрать сделать так:
Все числа кроме 0 это True, 0 - False.
Все не пустые строки True, пустые "" - False.
Если логические операнды разных типов - это всегда False!
Никакие неявные преобразования типов не происходят.
Тогда почему б не заиметь хоть парочку операторов функций для приведения на случай всяких эксепшнов?! Смутно помнится, они даже были раньше в кликере, но по (не)понятным причинам выпилены вместе с delvar. Хотя мб они работают недокументированно?)) Вон трейсей норм ся чувствует. Всего-то и нужно, что tostr/tofloat. И может ещё проверялку для необъявленной переменной?) Не кошерно возвращать ноль из ничего)) Чтот вроде if($quantity!=_nill). А вот if($string) для заданной строки БЕЗ сравнения это вполне себе по-яваскриптовому бодро, в птинципе таким же макаром можно было б и необъявленную выявлять. А то ужо дожились: неизвестно какие типы у ячеек массива и с чем их опосля сравнивать, какой огород нужен)
вот этого говна мы старательно избигаем. никаких заморочек по поводу типов данных и инициализации переменных у нас быть не должно.
задача написать С++ на Delphi у нас никогда не стояла. у нас на первом месте всегда была нубоориентированность.
мы тут конечно все уже спецы, но вот остальные тыщи пользователей - не очень
рано или поздно конечно начнется мракобесие с сортами целых чисел, без которого на самом деле даже DLL корректно не вызвать. но пока - не.
надо просто допилить инструмент для самых маленьких и решите уже наконец сколько будет 1 = "1"
-
с другой стороны писать клон A##t мне никогда не хотелось.
Позвольте.. Clickermann - не клон, отнюдь. Ваши слова: "вот этого... мы старательно избигаем. никаких заморочек по поводу типов данных и инициализации переменных у нас быть не должно... у нас на первом месте всегда была нубоориентированность", (#421) - а так же моё участие в этом форуме тому в подтверждение. Ваш Clickermann - самодостаточный проект. В чём-то похожий на множество других, не спорю; но другой, самобытный и развивающийся. Отличный проект, короче.
идея ... с получением параметров вызова ... на практике что она может дать? ну у нас как бы итак параметр анализируется, позволяя одним щелчком запускать скрипт. а кроме того что?
Интеграция с другими макрос-языками, например bat(cmd,vbs,js)-скрипты. Да с чем угодно, даже из 1С 7.7, к примеру будет возможно сделать скрин области экрана и пр. всего 1-ной командой:
КомандаСистемы("clickermann.exe getScreen.cms 100 100 800 600 screenshot.jpg"); -- разумеется, в getScreen.cms (без параметров, даже сейчас) можно командами INIREAD, TFREAD, TFREADARR выкручиваться через файл(-ы), но это: 1) снижает отклик, 2) нагружает файловую, 3) раздувает скрипт-источник командами сохранения в файл. Впрочем, извиняюсь.. это пожалуй действительно не самое необходимое.
решите уже наконец сколько будет 1 = "1"
Голосую: истинно
// Файл констант Clickermann
// --- Логика ---
#TRUE 1
-
Ещё идея, но тоже в плане бреда.. хочется дерективу #icon
#icon "vote_yes.png" // vote_yes.bmp
[spoiler=см. подробнее]
(!) только зелёные направления; красными - нет, однозначно не обсуждаем; а вот количество ЯД(WMR, QIWI) за такую хотелку - напротив можем на полном серьёзе обсудить. Вам надеюсь, моё предложение не покажется чем-то сверх.. Но, как живописец художнику(-кам), ответственно заявляю: с художественно-эстетической точки зрения текущий icon.. что в tray, что на панели задач - лично мне как-то не очень.
(http://rgho.st/8QKpTlQcz/image.png)[/spoiler]
-
Плиз маскировочку от защит. Так сказать "из коробки". Хотя бы как в UOPilot. Очень надо! ::)
-
Плиз маскировочку от защит. Так сказать "из коробки". Хотя бы как UOPilot. Очень надо! ::)
Какую там еще маскировочку как UOPilot?
Последняя версия 4.13.007b научилась менять заголовок на свое название. Делается это в ручную в файле config.ini
Пример: представляемся блокнотом
; Используемый GUI идентификатор программы
program_name = Блокнот
Также нужно переименовать Clickermann.exe в notepad.exe
-
"Последняя версия 4.13.007b научилась менять заголовок на свое название. Делается это в ручную в файле config.ini"
Однако в окне команды RADIOBOX сохранится красивая надпись “Clickerman“.
-
v.4.13.007b - битовые операции ограничены числами от -2147483648 до 2147483647
print( -2147483648 or 2147483647 ) // если уменьшить первое или увеличить второе, то в ответ строка с этими двумя числами и знаком "или" между ними.
// соответственно, тоже самое с and и xor
halt
[spoiler=предложение]может стоит добавить операцию NOT? возможно данная операция врядли пригодится комуто, но и без нее как то чего то не хватает. [/spoiler]
-
v.4.13.007b - screenshotex и screenshotfix работают не корректно
все последние пиксели по Х становятся равны пикселям Х-1 . все последние пиксели по Y становятся равны пикселям Y-1
если делать скрин полоски высотой в один пиксель, то там пустота - цвет черный, прозрачность = 0 . если делать скрин полоски шириной в один пиксель - тоже самое.
для наглядности:
GETSCREEN
PXLREPLACE(0,0, 4, 4, -1, 1) //экспериментируем в области 5х5. закрашиваем в черный (почти)
PXLREPLACE(0,0, 0, 0, -1, 255) //первый пиксель красный
PXLREPLACE(1,0, 1, 0, -1, 65280) //второй - зеленый
PXLREPLACE(2,0, 2, 0, -1, 16711680) //третий - синий
//-----------------------------------------
screenshotex(0,0, 4, 0,"5x1_") //скрин полоски пикселей. все черное - цвет = 0 (и прозрачность = 0). при смещении полоски в низ, всеравно все черное.
screenshotex(0,0, 0, 4,"1x5_")//тоже самое и по вертикали
screenshotex(0,0, 2, 1,"3x2_") //3x2
screenshotex(0,0, 3, 1,"4x2_") //4x2
screenshotex(0,0, 3, 2,"4x3_") //4x3
screenshotex(0,0, 4, 2,"5x3_") //5x3
screenshotfix(0,0, 3, 1,"screens\screenshotfix_4x2.bmp") //таже беда что и с screenshotex
screenshot("screenshot_") //работает правильно
halt
3x2 - (https://i.imgur.com/zLGr8m0.png) 4x2 - (https://i.imgur.com/JPkSE2d.png) 4x3 - (https://i.imgur.com/jdUpwkH.png) 5x3 - (https://i.imgur.com/rOQOY9T.png)
в версии 4.12 работает правильно.
-
v.4.13.007b - битовые операции ограничены числами от -2147483648 до 2147483647
print( -2147483648 or 2147483647 ) // если уменьшить первое или увеличить второе, то в ответ строка с этими двумя числами и знаком "или" между ними.
// соответственно, тоже самое с and и xor
halt
[spoiler=предложение]может стоит добавить операцию NOT? возможно данная операция врядли пригодится комуто, но и без нее как то чего то не хватает. [/spoiler]
я бы не сказал что это ошибка. просто 32 разрядное вычисление.
и отсюда же проистекает второй вопрос. "NOT 0" сколько будет? max_int32 или max_int64? или может вам хочется шагнуть в будущее и аж 128 разрядов?
тут как бы вопрос концепции
-
v.4.13.007b - screenshotex и screenshotfix работают не корректно
опять ошибки. да что такое..
а просто screenshot все делает правильно?
-
а просто screenshot все делает правильно?
Да.
и отсюда же проистекает второй вопрос. "NOT 0" сколько будет? max_int32 или max_int64? или может вам хочется шагнуть в будущее и аж 128 разрядов?
если мой калькулятор не ошибается, то "not 0" в любом случае равно -1 :-\, что 4 байта, что 8 байт. 32 единицы = -1, и 64 единицы тоже =-1 . то есть если к любому числу в 4 байта дописать еще тридцатьдве единицы, то число не меняется.
но в самом деле это все фигня (насчет "32 разрядное вычисление") :), просто заметил случайно, проверил в старших версиях - там работает если число за пределами 4 байт. в 4.13 не работает, ну и черт с ним :D.
-
v4.13.008b
мониторы, скриншоты, условия
меня уже в личку замучили. давайте тут кароче нет больше критических ошибок и мы в релиз мм?
http://rgho.st/6JKHvYstW
-
v4.13.008b
GETSCREEN с дополнительным монитором правее либо выше основного работает отлично. но пока-что в этом нет смысла, так как мышиные действия не работают с отрицательными параметрами :(.
-
Вот зараза... Не могу скачать файл. Ни Хром ни Microsoft Edge не пускают :o . Пишут: вирус сидит - и всё тут.
Люди, помогите файл получить :'( Наверняка ведь какую-то нужную функцию за вирус принимает :-[
-
Что-то случилось с "while" - в 4.13.007b x32 работает, а в 4.13.008b x32 перестал работать код типа:
$time_0 = $_time_t
WHILE ((ISKEYDOWN(#ESC)=0 and ( $time_0 +5 > $_time_t ))
BEEP(800,200)
WAIT(1)
END_CYC
WAIT(4)
ошибка при интерпретации строки IF.......
-
Что-то случилось с "while" - в 4.13.007b x32 работает, а в 4.13.008b x32 перестал работать код типа:
$time_0 = $_time_t
WHILE ((ISKEYDOWN(#ESC)=0 and ( $time_0 +5 > $_time_t ))
BEEP(800,200)
WAIT(1)
END_CYC
WAIT(4)
ошибка при интерпретации строки IF.......
какая то проблема со скобками
print(( $time_0 +5 > $_time_t )) выдает не 0 или 1, а строку ( $time_0 +5 > $_time_t ), если убрать вторые скобки, то норм.
более наглядно - print(3-(1+1)) не выдает единицу, а выдает 3-(1+1)
то есть вот так вроде работает WHILE (ISKEYDOWN(#ESC)=0 & $time_0 +5 > $_time_t ), без скобок.
давайте тут кароче нет больше критических ошибок и мы в релиз мм?
:(
-
WHILE ((ISKEYDOWN(#ESC)=0 and ( $time_0 +5 > $_time_t ))
ошибка при интерпретации строки
Здесь вообще-то скобки не хватает после =0
-
WHILE ((ISKEYDOWN(#ESC)=0 and ( $time_0 +5 > $_time_t ))
ошибка при интерпретации строки
Здесь вообще-то скобки не хватает после =0
я сразу тоже подумал что проблема в недостающей скобке, но как оказалось, к сути проблемы это не относится. со скобкой или без, если вот это ISKEYDOWN(#ESC)=0 поместить в скобки, то в ответ "0=0" вместо "1" . то же самое с $time_0 +5 > $_time_t .
-
А как же мой "Большой тест"? Он как раз и выявляет эту проблему. v4.13.008b все комплексные условия выдают ошибку.
-
видимо не судьба :/
насчет Большого теста, он актуален для последней релизной версии 4.12? насколько я помню он давльно староват.
были обновления к нему? так то да, надо бы его погонять. только сдобрить всякими каверзными вещами типа 1 = "text"
тут кстати мелькала фраза что в отрицательные координаты мышь не проходит поэтому типа поддержка расширенного стола бесполезна. а у меня проходит, кликает в минус. у вас как?
-
тут кстати мелькала фраза что в отрицательные координаты мышь не проходит поэтому типа поддержка расширенного стола бесполезна. а у меня проходит, кликает в минус. у вас как?
работает, если только один из параметров отрицательный. если оба отрицательные, то действия такие же как и ранее при LCLICK(-1,-1) - клик там где курсор.
-
тут кстати мелькала фраза что в отрицательные координаты мышь не проходит поэтому типа поддержка расширенного стола бесполезна. а у меня проходит, кликает в минус. у вас как?
работает, если только один из параметров отрицательный. если оба отрицательные, то действия такие же как и ранее при LCLICK(-1,-1) - клик там где курсор.
ясно. совсем забыл. кароче настраивайтесь на то что теперь LCLICK() без параметров быдет тыкать в текущее место. а -1 -1 в -1 -1. подругому не вижу как решить эту дилемму
-
На счет опции игнорирования ошибок.
При включенной опции не во всех случаях они игнорируются!
Речь идет что то типо о занятом доступе.
Вот тестовые скрипты. Открываем две копии кликера
В первую вставляем это
FOR($a=0,$a<99999)
TOCLIP(STRCONCAT("Тест ", $a))
WAITMS(1)
END_CYC
HALT
Во вторую это
$test = FROMCLIP()
LOGCLEAR
LOGWRITE($test)
WAITMS(1)
В итоге выскакивают две ошибки.
Если опция игнорирования ошибок включена, вторая ошибка будет проигнорирована но первая все равно вылазит.
Тоже самое происходит при попытке чтении занятого файла.
-
ясно. совсем забыл. кароче настраивайтесь на то что теперь LCLICK() без параметров быдет тыкать в текущее место. а -1 -1 в -1 -1. подругому не вижу как решить эту дилемму
Давно уже говорил, не приучайте к (-1, -1) всё надеялся что положение мониторов поправят. Так нет же, в каждом вопросе про клик без координат ксерили этот (-1, -1) (http://crapware.aidf.org/forum/index.php?topic=93.msg1041#msg1041). Почему такая недальновидность.
Даже пост мой уже удалён, один яндекс и помнит см. скрин.
-
Clickermann v4.13.009b x32
Пока чинил условия, попутно сделал скриншот лупы по хоткею, ввел пару сис.переменных, еще че-то делал...
Короче по ссылке полный пак, потому что даже файл с надписями пришлось править. Справка актуальная.
https://yadi.sk/d/XV6uduqE3SHSjA
p.s. [spoiler=про SSL]Отдельно сделал поддержку https для любителей httpget("https://")
(изначально в дистрибутив не входит)
Для того чтобы кликер подцепил шифрование, нужно скачать две библиотеки проекта OpenSSL: libeay32.dll , ssleay32.dll и кинуть их рядом с clickermann.exe
Скачать их можно например отсюда https://code.google.com/archive/p/openssl-for-windows/downloads (следите за разрядностью)
Если этого не сделать запрос через https, как и ранее, вызовет некритичную ошибку функции httpget(). Это временное решение, в дальнейшем надеюсь уйдем от этого
Для тех кому все это вообще не уперлось - ниче качать не надо, кликер вас поймет и простит[/spoiler]
-
Clickermann v4.13.009b x32
после захвата в оконный режим flash player (обоими способами) - ничего не в нём не видит (чёрная лупа, серые скрины).
проявилось после наката 007->009; откат решает проблему.
-
после захвата в оконный режим flash player (обоими способами) - ничего не в нём не видит (чёрная лупа, серые скрины).
да и не только flash, у меня вообще в привязке к любому окну чёрная лупа
-
Hotfix
зачем то закомментировал вызов одной из функций и успешно забыл)))
бывает. вот бы все ошибки исправлялись двумя нажатиями Backspace
http://rgho.st/8cnJWhvJ6
-
Hotfix
подтверждаю, в 010 снова всё в норме. спасибо!
все ошибки исправлялись двумя нажатиями Backspace
главное на нём не заснуть под утро, как в том анекдоте :D
-
Люди добрые, ну помогите мне скачать файл :'(
Ну никак у меня не получается мою десятую Винду заставить пропустить этот файл в комп :(
Что я понимал, из найденного в поисковике - то уже испробовал, для обхода защиты. Что мне сделать, чтобы он скачался?.. :'(
-
Люди добрые, ну помогите мне скачать файл :'(
Ну никак у меня не получается мою десятую Винду заставить пропустить этот файл в комп :(
Что я понимал, из найденного в поисковике - то уже испробовал, для обхода защиты. Что мне сделать, чтобы он скачался?.. :'(
Полная сборка 4.13.010b
https://yadi.sk/d/oJYOm1W_3SQoRo (https://yadi.sk/d/oJYOm1W_3SQoRo)
-
Люди добрые, ну помогите мне скачать файл :'(
Ну никак у меня не получается мою десятую Винду заставить пропустить этот файл в комп :(
Что я понимал, из найденного в поисковике - то уже испробовал, для обхода защиты. Что мне сделать, чтобы он скачался?.. :'(
Ха, на десятке... У меня на XP нельзя скачать ни мазилой ни хромом. Раньше спасала опера (только с турбо), теперь и она в пролёте. Яндекс поставил, врубил там турбо и о боги! всё скачалось... с 4-го раза. Почему с 4-го, потому что никакой реакции на нажатия кнопки небыло, но через 2 минуты наконец то сработало и загрузилось сразу 3 копии.
-
Ха, на десятке... У меня на XP нельзя скачать ни мазилой ни хромом. Раньше спасала опера (только с турбо), теперь и она в пролёте. Яндекс поставил, врубил там турбо и о боги! всё скачалось... с 4-го раза. Почему с 4-го, потому что никакой реакции на нажатия кнопки небыло, но через 2 минуты наконец то сработало и загрузилось сразу 3 копии.
Дело не в винде а версии браузера.
Использую в основном 38.0.1 портативную версию мазилы.
https://downloads.sourceforge.net/portableapps/FirefoxPortable_38.0.1_Russian.paf.exe (https://downloads.sourceforge.net/portableapps/FirefoxPortable_38.0.1_Russian.paf.exe)
А чтобы сайты не ругались на устаревшую версию браузера использую дополнение User Agent Overrider 0.2.5.1
https://addons.mozilla.org/ru/firefox/addon/user-agent-overrider/versions/0.2.5.1-signed (https://addons.mozilla.org/ru/firefox/addon/user-agent-overrider/versions/0.2.5.1-signed)
Подменяю значения юзер агента типо у меня 50 версия
Windows / Firefox 50: Mozilla/5.0 (Windows NT 5.1; rv:50.0) Gecko/20100101 Firefox/50.0
-
Да это понятно, браузеры совсем офигели. Закручивают гайки уже давно, медленно но верно. Взяли на себя роль цензуры и полиции. Пора делать свой браузер с блекджеком и блудницами.
-
Полная сборка 4.13.010b
https://yadi.sk/d/oJYOm1W_3SQoRo (https://yadi.sk/d/oJYOm1W_3SQoRo)
Ииииииессс!.. ;D
Спасибо огромнейшее :)
Полез через Андроид с Яндекс-диска скачивать. Тут, в Украине, свободный доступ к Яндексу закрыт, а на планшете у меня VPN втыкнут.
Пока скачивал, мысль в голову пришла: а не проверить ли мне, как Андроид - с http://rgho.st/8cnJWhvJ6 скачать сможет, или тоже упрётся?.. ???
А он взял - и качнул файл... без возражений :D
Вот теперь лазейка, на случай проблем со скачиванием, засветилась :)
В общем, спасибо ещё раз!.. ;)
-
+ Доработка #logfile, теперь можно задать произвольное имя лога
- не можно а нужно, без указания имени файл теперь не создаётся.
ну эту мелочь мы поправим на релизе
жду кароче еще недельку обнаружение критических ошибок и делаю обновление а то я вижу в группе вк многих уже конкретно отсылают в эту ветку
- нет сообщения о введении нового синтаксиса операций сравнения
есть сообщение о новой математике. оно подразумевается.
"всем читать справку заново" я напишу в посте об обновлении на сайте и в группе
Выходит, что старый синтаксис пока реабилитирован и нужды переписывать скрипты нет?
да. внезапно прервать совместимость вверх - плоха идея
-
Да это понятно, браузеры совсем офигели. Закручивают гайки уже давно, медленно но верно. Взяли на себя роль цензуры и полиции. Пора делать свой браузер с блекджеком и блудницами.
Как вариант (с блудницами) использую в этой же ...й стране Zaborona VPN. У меня с десяток разных браузеров установлено, под разные нужды и заходят они куда попало ) Как по мне, то удобный браузер Cyberfox, там хоть все старые лисьи аддоны работают.
Это не реклама, это на тот случай, если кто не может скачать с Яндекс-диска...
-
Неужели все? Значит пора собирать релиз
Где там пак со всеми поправленными шаблонами под новые фичи и прочим?
-
Выдает ошибку.
DEFINE($a,"тест")
IF($a="тест")
LOGWRITE ("ок")
END_IF
HALT
Если за место DEFINE написать $a = "тест" ошибки нет.
-
Выдает ошибку.
DEFINE($a,"тест")
IF($a="тест")
LOGWRITE ("ок")
END_IF
HALT
Если за место DEFINE написать $a = "тест" ошибки нет.
ну так то и это починено. готовим значит релизы на той неделе уже блядь
вот с этого поста возьму сборку http://crapware.aidf.org/forum/index.php?topic=356.msg26108#msg26108 и просто вкину exe
-
ну так то и это починено. готовим значит релизы на той неделе уже блядь
А исправлена ли проблема чтения занятых данных в буфере обмена и файлах?
http://crapware.aidf.org/forum/index.php?topic=356.msg25983#msg25983 (http://crapware.aidf.org/forum/index.php?topic=356.msg25983#msg25983)
-
не так что бы очень, но будем реалистами. вот это
FOR($a=0,$a<99999)
TOCLIP(STRCONCAT("Тест ", $a))
WAITMS(1)
END_CYC
HALT
не скрипт. это олимпиада "как бы повеселее повесить кликер". я не сторонник подстраивать ПО под экзальтированные стресс-тесты, когда основные задачи ПО как бы давно давно сформулированы. подобные скрипты носят скорее академический характер. на практике ни один программист не станет обновлять буффер обмена каждую милисекунду.
можно вообще все заканопатить в проверки, но ехать это будет еще медленнее чем виртуальная машина Java :\
-
не так что бы очень, но будем реалистами.
Это "стресс тест" нужен чтобы выявить проблему выскакивающей ошибки которая останавливает скрипт. И это при том что игнорирование ошибок включено.
Тоже самое относится к чтению файла. Тут некоторые писали что AGClient пишет out.txt а кликер ругается на интерпретацию, и все из за занятого файла.
С INIREAD такого, кстати, не наблюдается.
-
ладно, погоняем. вообще игнорирование оно такое теоретическое и его по хорошему никто не проверял.
ваши предложения?
вот возник конфликт интересов и мы его типа поймали. что дальше? ругаемся стандартным сообщением? ждем 10 секунд и молча повторяем операцию?
или как вообще?
-
ладно, погоняем. вообще игнорирование оно такое теоретическое и его по хорошему никто не проверял.
ваши предложения?
вот возник конфликт интересов и мы его типа поймали. что дальше? ругаемся стандартным сообщением? ждем 10 секунд и молча повторяем операцию?
или как вообще?
не 10 секунд а несколько миллисекунд 50-100, пытаемся снова несколько раз, если ничего не вышло возвращаем пустую строку и идем дальше. И сообщения там не нужны, ведь это не ошибка скрипта.
По хорошему функции должны выдавать коды ошибок в системную переменную $_error, с которыми можно что то сделать, например по условию повторить операцию.
-
не 10 секунд а несколько миллисекунд 50-100, пытаемся снова несколько раз, если ничего не вышло возвращаем пустую строку и идем дальше. И сообщения там не нужны, ведь это не ошибка скрипта.
а если речь о записи в буфер\файл, что мы возвращаем? и не залипнем ли совсем?
иные программы прямо говорят мол сорян, нет доступа к файлу. а нам надо что то на случай когда пользователь вообще не дома.
По хорошему функции должны выдавать коды ошибок в системную переменную $_error, с которыми можно что то сделать, например по условию повторить операцию.
а кто эту переменную будет обнулять? как понять кто ее взвел, если та функция в функции? я в курсах про всякие GetLastError() в солидных языках, но у нас то все максимально упрощено. мы этим всегда и брали. решений в духе пилота накрутить можно, но к чему это приводит - подите и посмотрите.
кароч тут на самом деле все не так просто. я думаю выкачу все же обновление а потом подумаю как по красивее это все дело сделать
-
ведь убирали баг, когда без пробела между именем и параметром, всё пишется чёрным цветом.
в версии 4.13.010b он снова появился.
воще то нет, не исправляли. потому что это стильное поле ввода - единственный кусок ПО, позаимствованный (и чуток подпиленный) на стороне. а учитывая что он не поддерживается автором уже четыре года, то как бы и исправлений ждать не приходится. короче, тебе показалось))
после нажатия клавиши ALT ...
а ты где проверял? в некоторых программах (в том же блокноте винды) простое нажатие на Alt активирует работу с меню например. не, тут все нормально.
В меню настроек горячих клавиш, вместо " Запуск сценария" информативней будет написать " Запуск - пауза"
а вот это справедливо
-
а кто эту переменную будет обнулять?
Переменная обновляется каждый раз после вызова функции. В потоках эта переменная должна быть изолированна.
В autoit есть функция SetError позволяющая менять значения в этой переменной если потребуется её обнулить.
Возврат ошибок нужен, как минимум, для функций чтения-записи в файл и буфер обмена.
-
Друзья, может и есть такая команда, но я не нашел. Мне нужна команда которая включит у кликера замок (Always on top). Пожалуйста добавьте такую команду в ближайшем релизе.
И еще.. Дорогой и горячо любимый автор данного программного обеспечения, я слёзно тебя умоляю, сделай в настройках галочку на миниатюрный интерфейс по моему образцу во вложении!
Миниатюрный дизайн мне необходим так как я использую кликер на дополнительном 19 дюймовом мониторе развёрнутом вертикально. Там у меня находятся 2 окна браузера друг над другом, места катастрофически не хватает и при этом есть желание всегда видеть 2 кликера поверх окон для оперативного вмешательства. Одним словом - не комфортно! Миниатюрный дизайн сильно поможет.
-
обрадовался, когда увидел новую функцию CHAR - Возвращает символ по его коду.
Но обломался, когда попытался её использовать, аудитория программы русскоязычная, а символы возвращаются почему-то латинские.
Может есть возможность в будущем добавить параметр, выбирающий возвращаемый язык символов?
так у нас же юникод. по таблице юникода русские буквы начинаются с 1040 и до 1103 (в десятичном)
print(CHAR(1055),CHAR(1088),CHAR(1080),CHAR(1074),CHAR(1077),CHAR(1090),CHAR(33))
halt
13:37:46 Привет!
возможно есть смысл добавить константы для русск букв, но в этом случае будет путаница с виртуальными кодами клавиш клавиатуры, как и с примером выше CHAR(33) - восклицательный знак. смотрим в нашу таблицу кодов кнопок, 33 - это PageUp.
-
так короче, меня уже по 10 раз за день в ЛС долбят вопросом ВЫ ЧТО ЗАБРОСИЛИ ПРОЕКТ?
поэтому все уходит на потом
1. контроль ошибок нужен, но там надо много делать и много думать
2. миниатюрный дизайн? зачем? не проще ли просто свернуть в трей и оттуда уже запускать через меню?
3. добаить не получится потому что кликер не отличит строчные от прописных. с кодами кнопок проще. кнопка есть кнопка.
-
" 1. контроль ошибок нужен, но там надо много делать и много думать "
проверьте это:
$x1 = 500
$y1 = 300
$x2 = 0
$y2 = 0
GETSCREEN
SCREENSHOTEX($x1, $y1, $x2, $y2, "Image_")
HALT
В ранних версиях такой фортель не прокатывал. Прошу прощения, если не по теме
-
в моем скрипте все координаты вычисляются и в результате моей ошибки большие координаты остались равны 0. Если бы, как в более ранних версиях, выдавало ошибку с остановкой и звуком, то было бы потрачено гораздо меньше времени на поиск причины кривой работы скрипта и отладку
-
Вместо ожидаемого нажатия десяти клавиш и получения строки в 10 символов, получаются строки произвольной длинны не более девяти символов
Все нормально. Потому что коды от 58 до 64 не относятся к клавишам а значит и не печатаются.
FOR($a=48,$a<=90)
LOGWRITE ("Код: ", $a, " Символ: ", CHAR($a))
END_CYC
HALT
21:44:20 Код: 58 Символ: :
21:44:20 Код: 59 Символ: ;
21:44:20 Код: 60 Символ: <
21:44:20 Код: 61 Символ: =
21:44:20 Код: 62 Символ: >
21:44:20 Код: 63 Символ: ?
21:44:20 Код: 64 Символ: @
-
насчет кодов клавиш, то они все вот тут https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
и видим, что "0x3A-0x40 Undefined" , это 58-64 коды.
но это фигня, кнопок то оказывается намного больше чем в справке. к примеру, это куча медиа клавиш для работы со звуком, медиаплеером, браузером, почтой... и еще куча ненужных кнопок, смотрим по ссылке. не знаю работаю ли эти все коды, но проверил парочку на вин10, вроде работают как нужно.
было бы неплохо добавить ссылку на страницу мсдн с кодами кнопок (https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx) в справку.
насчет "сжирается один символ" и "При запуске Clickermann кнопкой в окне, понятно, что требуется активировать рабочее окно, но вот зачем при запуске горячими клавишами такое происходит?".
очень похоже, что для пуска используется физическое нажатие KEYDOWN(#alt) - KEYDOWN(#a) - KEYUP(#alt) - KEYUP(#a), в этом случае активным становится меню окна, и один кейпресс уходит на сбрасывание меню и возврат к полю ввода. правильно - KEYDOWN(#alt) - KEYDOWN(#a) - KEYUP(#a) - KEYUP(#alt), в этом случае окно ввода остается активным при пуске.
-
Так это обсуждалось сто раз. Уже несколько лет. Проблемы нет в самом кликере. Это активация меню по ALT.
Влияет и на первую кнопку и на первый клик.
Варианта два:
1. Или сменить ГК запуска скрипта на другие (без ALT). Мне не нравится привык уже. Но вариант хороший если скрипт не идёт в чужие руки.
2. Вставить в начеле скрипта клик по заголовку нужного окна. Раньше делал только так. Это заодно приводит к одинаковому состоянию при любом способе запуска, хоть ГК, хоть кликом по пуску. Универсально в некотором смысле.
Можно попробовать вместо клика активировать окно через WNDBUMP, но нужно чтоб HWND легко определялся.
WNDBUMP(WNDFIND("Notepad++"))
Чёт не помогает этот вариант. А раз помогло.
Иногда ставлю в скриптах, в начале
WAITMS(100)
KEYUP(#ALT)
Это защита от не успевания отпускания ALT. Где стартовая задержка маленькая. Или увеличивать задержку. Но это как дополнение! Само по себе активацию меню не снимает.
-
вариант 3. включать трехсекундную паузу перед запуском, которая вощет даже вынесена на главную форму, раз не успеваете отжать хоткей
я тут все же посмотрел проблемы доступа к общим ресурсам и думаю ближайшие дни вылечу ошибку чтения "занятого" текстовика.
а то непорядок. любой блокнот может, а мы - нет.
-
вариант 3. включать трехсекундную паузу перед запуском, которая вощет даже вынесена на главную форму, раз не успеваете отжать хоткей
Это толька на тормозное отжатие, и добавлено как приписка.
На активацию главного меню программы это никак не повлияет. Мы нажимая при запуске ALT уже активировали меню и снять активацию может только нажатая клавиша или первый клик. Они, кстати только снимают активацию и никак не обрабатываются по прямому назначению.
-
В файле const.txt отсутствует запись "#PAUSE 19"
-
Clickermann v4.12.001 READMEM в ХРx32 работает правильно.
Clickermann v4.13.010b READMEM в 7x64 и 10x64 работает правильно. В XPx32 выдает 0.
-
Clickermann v4.13.011b (exe only)
- фикс работы с уже кем-то открытыми файлами
- фикс readmem, writemem
- всякая мелочь
http://rgho.st/7y4kTMcpQ
-
Простенький пример.
Работаю в Excel с прайсами, используя текстовые фильтры. Стиль ссылок на ячейку обычный, вида "A1". Вылезла ошибка.
Часть кода:
UNDEFINE($r1c1)
//Ячейки фильтров в массив
arrpush($r1c1, "A1")
arrpush($r1c1, "B1")
arrpush($r1c1, "C1")
arrpush($r1c1, "D1")
arrpush($r1c1, "E1")
arrpush($r1c1, "F1")
arrpush($r1c1, "G1")
arrpush($r1c1, "H1")
arrpush($r1c1, "I1")
arrpush($r1c1, "J1")
arrpush($r1c1, "K1")
arrpush($r1c1, "L1")
arrpush($r1c1, "M1")
arrpush($r1c1, "N1")
arrpush($r1c1, "O1")
arrpush($r1c1, "P1")
arrpush($r1c1, "Q1")
arrpush($r1c1, "R1")
arrpush($r1c1, "S1")
arrpush($r1c1, "T1")
arrpush($r1c1, "U1")
arrpush($r1c1, "V1")
arrpush($r1c1, "W1")
arrpush($r1c1, "X1")
arrpush($r1c1, "Y1")
arrpush($r1c1, "Z1")
//вывод в лог
FOR($a=0,$a<ARRSIZE($r1c1))
LOGWRITE($a," = ",$r1c1[$a])
END_CYC
LOGWRITE("STRMD5($r1c1[5]) = ",STRMD5($r1c1[5]))
LOGWRITE("STRMD5(E1) = ",STRMD5("E1"))
21:26:46 0 = A1
21:26:46 1 = B1
21:26:46 2 = C1
21:26:46 3 = D1
21:26:46 4 = 0
21:26:46 5 = F1
21:26:46 6 = G1
21:26:46 7 = H1
21:26:46 8 = I1
21:26:46 9 = J1
21:26:46 10 = K1
21:26:46 11 = L1
21:26:46 12 = M1
21:26:46 13 = N1
21:26:46 14 = O1
21:26:46 15 = P1
21:26:46 16 = Q1
21:26:46 17 = R1
21:26:46 18 = S1
21:26:46 19 = T1
21:26:46 20 = U1
21:26:46 21 = V1
21:26:46 22 = W1
21:26:46 23 = X1
21:26:46 24 = Y1
21:26:46 25 = Z1
21:26:46 STRMD5($r1c1[5]) = E1DFFC8709F31A4987C8A88334107E89
21:26:46 STRMD5(E1) = 48ED5D2DB39237D7AE5E829B17581629
5-ый элемент массива - 0 ? Мне как раз нужен столбец по этому адресу... ну как всегда ;D
Что такого необычного в буквенно-цифровом сочетании "E1", что оно не воспринимается ?
Все буквы для массива набраны исключительно в разкладке En. Эта ошибка выплывает из-за имени переменной $r1c1, или где ?
Clickermann v4.13.011b
Windows 8.1
-
Проверил ещё раз... имя массива тут не при чём. Не воспринимается сама буква "E"... и получается всё, что после неё...
//Ячейки фильтров в массив
arrpush($rc, "C1")
arrpush($rc, "1E")
arrpush($rc, "K1")
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
LOGWRITE($a," = ",$rc[$a])
END_CYC
22:16:51 0 = C1
22:16:51 1 = 1
22:16:51 2 = K1
-
;D а что ты хотел? E1 = 0E1 = 0 * 10^1 = 0 . странный какойто баг ;D . а самое главное то, что в 4.12 такая-же фигня, и до сих пор ни кого это не смущало :-\.
arrpush($a, "1E2")
$b[0] = "1E2"
STRSEPARATE ("1E2", " ", $c)
$d = "1E2"
print($a[0]) // 100 1*10^2
print($b[0]) // 1E2
print($c[0]) // 1E2
print($d) // 1E2
halt
замечен еще один баг насчет чтения не существующих элементов массива.
arrpush($a, "A1")
arrpush($a, "B1")
arrpush($a, "C1")
print($a[4])
halt
первый пуск - ошибка, как и положено
второй пуск - в логе "22:21:31 봿F뵍F뵗F봥F봲F"
третий пуск - вешает кликер
повесить кликер можно чтением и других несуществующих элементов. закономерности не заметил.
добавлено:
arrpush($rc, "1E")
1E = 1*10^0 = 1
-
Да, но всё же... загоняю как бы текстовую переменную...
DEFINE($ERROR, "E1")
arrpush($rc, "C1")
arrpush($rc, $ERROR)
arrpush($rc, "K1")
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
LOGWRITE($a," = ",$rc[$a])
END_CYC
Аналогичный результат:
arrpush($rc, STRCONCAT(CHAR(69),"1")) //"E1"
22:34:26 0 = C1
22:34:26 1 = 0
22:34:26 2 = K1
-
Да, но всё же... загоняю как бы текстовую переменную...
ну.... ничего не поделаешь, будем ждать фикса. а пока можно обойти как-нибудь вот так:
STRSEPARATE ("C1,E1,K1", ",", $rc)
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
LOGWRITE($a," = ",$rc[$a])
END_CYC
halt
ну или так:
arrpush($rc, "C1")
$rc[1] = "E1"
arrpush($rc, "K1")
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
LOGWRITE($a," = ",$rc[$a])
END_CYC
halt
-
Сенкс, но я выберу лучше способ через коды... ;) Больше не хочу связываться с буквой "E" ;)
arrpush($rc, 67) // "C"
arrpush($rc, 69) // "E"
arrpush($rc, 75) // "K"
//вывод в лог
FOR($a=0,$a<ARRSIZE($rc))
LOGWRITE($a," = ", STRCONCAT(CHAR($rc[$a]),"1"))
END_CYC
23:05:35 0 = C1
23:05:35 1 = E1
23:05:35 2 = K1
А для использования исключительно в Excel рекомендую вид ссылки на ячейку:
arrpush($rc, "$E$1")
-
Когда пимерно пофиксится
саппресс подавление ошибок? Уже месяц не пишу на КЛМНе, не вижу смысла -- скрипты нормально не выполняются. Ошибки выскакивают на ровном месте (в настройках подавление стоит), оператор равенства поменян, условия сломаны были, юникода в файлах нету на некириллической винде + файлы создаются без bom (тут в жалобах уже кидали скрин интерфейса главной формы с исковерканным кракозябликами русским -- то же самое и с создаваемыми "юникодовскими" файлами). И в своих файлах настроек клмн как не понимал юникод, так и не бум-бум.
-
2Johnny
случайно заметил, что имя класса окна кликермана - рандомный набор букв. причём меняется от запуска к запуску.
не замечал такого у других прог, оно как бы и не мешает, но подозрительно, вдруг на что-то внутри кликермаа влияет
-
2Johnny
случайно заметил, что имя класса окна кликермана - рандомный набор букв. причём меняется от запуска к запуску.
не замечал такого у других прог, оно как бы и не мешает, но подозрительно, вдруг на что-то внутри кликермаа влияет
Давно это увидел, когда делал определение собственного hwnd и pid не через заголовок. Заголовок в разных версиях чуть по другому писался.
Так вот, пришел к выводу, что это сделано специально рандомом, как раз для противодействия задачи аналогичной моей. Чтобы защиты тупо не прописали себе в базы эти классы.
И как это, не мешает... мешает ещё как. Мне мешало сделать надежное определение окна для любых заголовков и для всех разумных версий КМ.
Там есть главное окно 1х1 прозрачное в центре экрана, а видимое нами 'главное окно' являетя дочерним к нему. Вот у главного класс всегда один. Я искал этот класс и брал первое дочернее, profit.
-
Так вот, пришел к выводу, что это сделано специально рандомом, как раз для противодействия задачи аналогичной моей.
...
Там есть главное окно 1х1 прозрачное в центре экрана, а видимое нами 'главное окно' являетя дочерним к нему. Вот у главного класс всегда один. Я искал этот класс и брал первое дочернее, profit.
да, наверняка так и есть. спс, нашёл это окно владельца, задача решена
-
Там есть главное окно 1х1 прозрачное в центре экрана, а видимое нами 'главное окно' являетя дочерним к нему. Вот у главного класс всегда один. Я искал этот класс и брал первое дочернее, profit.
чевооо? эт что еще за окно, я такого не делал это же ломает саму идею рандомных классов
откуда оно взялось и как на него посмотреть?
-
Когда пимерно пофиксится саппресс подавление ошибок? Уже месяц не пишу на КЛМНе, не вижу смысла -- скрипты нормально не выполняются. Ошибки выскакивают на ровном месте (в настройках подавление стоит)
так вместо того что бы бунтовать надо было описать ошибку. ошибка есть ошибка, хоть ты заподавляйся. их быть вообще не должно.
оператор равенства поменян, условия сломаны были,
ниче не сломано ниче не поменяно. по крайней мере в последней БЕТА версии, коих было уже немало. и тот факт, что вы пропустили возвращение "старого равно" (впрочем, с сохраненинием нового) говорит как раз о том, что следим мы невнимательно.
если вам раз в жизни попалось гнилое яблоко, это не повод отказаться от них навсегда
юникода в файлах нету на некириллической винде + файлы создаются без bom (тут в жалобах уже кидали скрин интерфейса главной формы с исковерканным кракозябликами русским -- то же самое и с создаваемыми "юникодовскими" файлами). И в своих файлах настроек клмн как не понимал юникод, так и не бум-бум.
ну не знаю. мне новая (ну как новая... раньше то все вообще писалось в Delphi 7) RAD студия юникод обещала, но видимо в двойке там это еще не доделано было. надо скачать че нить по новее.
я так то только адаптировал интерпретатор и всякие динамические распределения памяти
-
чевооо? эт что еще за окно, я такого не делал это же ломает саму идею рандомных классов
откуда оно взялось и как на него посмотреть?
ууупс ::)
-
Неужели, в новой версии можно использовать CRLF :D
print(char(13),char(10),"первая строка",char(13),char(10),"вторая строка",char(13),char(10),"третья строка")
$mr = dialogbox(STRCONCAT ("первая строка",char(13),char(10),"вторая строка",char(13),char(10),"третья строка"), 4)
halt
(https://i.imgur.com/ZkIREkL.png)
-
Неужели, в новой версии можно использовать CRLF :D
Действительно!
А чтобы упростить вставку переноса строки можно воспользоваться #define
#define @CR:char(13),char(10)
TOCLIP(STRCONCAT("Текст 1", @CR, "Текст 2", @CR,"Текст 3"))
HALT
-
когда же это кончится...
-
Теперь не грузятся старые скрипты в ANSI кодировке если в них присутствует кириллица.
Неужели нельзя сделать совместимость?
-
ДИРЕКТИВЫ ПРЕПРОЦЕССОРА
Так как в последней версии пользователь может сам выбирать "GUI идентификатор программы", который отображается в главном окне, неплохо бы отображать во всех диалоговых окнах (INPUTBOX, DIALOGBOX, RADIOBOX и, надеюсь, новых) рядом с "GUI" имя скрипта #name. Часто бывает так, запустив несколько скриптов, вдруг всплывает диалоговое окно, требующее новых инструкций. Приходится искать от какого проекта окно.
-
Писал это ВК. Повторю и здесь.
Очень порадовала новая функция CHAR в последней версии КМ. Жду от автора обратную функцию ASC("symbol").
В процедуры работы с числами желательно добавить функцию MOD - Деление по модулю:
$a MOD $b = $a - $b * INT($a / $b)
-
INPUTBOX и RADIOBOX
Если в DIALOGBOX шрифт определяется "Свойства: Экран" на вкладке "Оформление", "Дополнительно", "Окно сообщения", то в INPUTBOX и RADIOBOX шрифты постоянные, заданные автором КМ. Желательно привести их к общим настройкам экрана или хотя бы иметь возможность менять их в файле config.ini.
ИМХО кнопка "ОК" в INPUTBOX должна быть до нажатия любого переключателя не активной. Ни один переключатель не должен иметь зеленого индикатора, который появится только после выбора или перевыбора. Можно задать место индикатора по умолчанию.
RADIOBOX (message, radio1, ...,[default])
Параметры
message - сообщение диалогового окна
radio1 - строка, описывающая переключатель
default - место зеленого индикатора. Если default больше количества переключателей, он не учитывается.
-
DIALOGBOX можно сделать удобнее.
DIALOGBOX (message, buttons1, buttons2, buttons3, [icon])
Параметры
message - сообщение диалогового окна
buttons1,2,3... - порядковый номер кнопки
$inscription(buttons n) - надпись на соответствующей кнопке
icon - код иконки
Теперь коды наборов кнопок не нужны, их заменят надписи на кнопках. Возвращаемые коды равны порядковым номерам кнопок. Коды иконок остаются. Количество кнопок можно ограничить до 6, а можно и без ограничений.
Пример
// Выводит диалоговое окно с тремя кнопками - Пиво, Сок, Вода.
$message = "Что будем пить?"
$inscription(buttons1) = "Пиво"
$inscription(buttons2) = "Сок"
$inscription(buttons2) = "Вода"
$mr = DIALOGBOX($message, buttons1, buttons2, buttons2, [2])
-
подумаем, ага
тем временем очередная сборка
Clickermann v4.13.13b
то же что 12b, только с поддержкой старых ANSI файлов.
напоминаю что теперь все файлы (кроме ini, правда пока) имеют кодировку UTF-8
при любом сохранении файлы будут перекодированы
http://rgho.st/7btZpvcc4
-
Clickermann v4.13.13b
то же что 12b,
а где можно узнать, что было в 12 по сравнению с 11?
-
Clickermann v4.13.13b
то же что 12b,
а где можно узнать, что было в 12 по сравнению с 11?
Исправление arrpush и то что я описал, переход на utf8 в файлах. С последним были недоработки небольшие.
-
А почему выбран с BOM? Скрипты тоже должны быть с BOM или без разницы?
-
А почему выбран с BOM? Скрипты тоже должны быть с BOM или без разницы?
Вот .13b и делает как раз "без разницы" В .12b скрипты в ANSI с кириллицей внутри не грузились.
-
Вот .13b и делает как раз "без разницы" В .12b скрипты в ANSI с кириллицей внутри не грузились.
Вопрос не про ANSI, а про UTF-8 с BOM и без BOM.
-
А почему выбран с BOM? Скрипты тоже должны быть с BOM или без разницы?
Потому что bom говорит нам однозначно что перед нами текст в кодировке utf8. Если же его убрать то определение типа кодировки превратится в веселую угадайку с эврестическим анализом текста.
При работе через чисто через кликер о кодировке думать не надо. При работе в других вещах следите чтоб был либо ansi как и раньше, либо utf8 с bom (проверяется легко - пустой файл будет весить три байта)
-
Вот .13b и делает как раз "без разницы" В .12b скрипты в ANSI с кириллицей внутри не грузились.
Вопрос не про ANSI, а про UTF-8 с BOM и без BOM.
Протестил, в .13b UTF-8 без BOM вместо кириллицы абракодабра.
Значит BOM обязателен.
-
В конфиге
; Код сообщения, на которое должена реагировать ф-ция GetMessage
msg_hook = 2222
В справке пример с 1024.
Будут подставлять пример из справки и кричать, что не работает. Как я кричал :D ;D
-
Протестил, в .13b UTF-8 без BOM вместо кириллицы абракодабра.
Значит BOM обязателен.
Очень хреново. Во всяких Notepad++ и прочих выставил по умолчанию UTF-8 без BOM. Для питона и PHP - противопоказано, там BOM не катит. Для прочей хрени типа веб-шаблонов и CSS тоже нежелательно. Вот теперь веселуха будет каждый раз не забыть сменить кодировку.
Потому что bom говорит нам однозначно что перед нами текст в кодировке utf8. Если же его убрать то определение типа кодировки превратится в веселую угадайку с эврестическим анализом текста.
У нас же всего два вида UTF8 и cp1251 не нужно определять кучу кодировок. Можно определять при открытии, а сохранять всегда в UTF-8.
Ну да ладно... всё равно будут путаться пока не разберутся.
-
Прекрасно бом катит в php говорю как практикующий.
Да и для вашего хваленого питона уверен три байта в начале файла - не проблема. А если проблема, то пусть они подстраиваются под нас. Соблюдать соглашение о передаче данных это не очень то и хреново.
-
Ну это смотря под какие версии используются. Под старые но всё ещё поддерживаемые возникают проблемы. Я про питон 2 ветки.
wikipedia:
А наличие маркера в начале файлов PHP (до тега <?php) приводит к тому, что пустая строка отправляется клиенту ещё до начала выполнения кода, что вызывает сбой в тех случаях, когда клиенту должен сразу отправиться HTTP-заголовок (при переадресации запроса, например)
-
Не получается передать параметры программе если запускать через ассоциацию файлов.
Т.е. если просто запускать программу с параметрами и руками грузить скрипт, то параметры передаются:
"D:\Яндекс Диск\Clickermann v4.13.013b\Clickermann v4.13.013b x32.exe" 123 abc
При указании полного пути к экзешнику и файлу тоже нормально
"D:\Яндекс Диск\Clickermann v4.13.013b\Clickermann v4.13.013b x32.exe" "D:\Яндекс Диск\Clickermann v4.13.013b\projects\Новые переменные 4.13.cms" 123 abc
Обычный запуск БЕЗ доп. параметров через ассоциации работает как всегда
"D:\Яндекс Диск\Clickermann v4.13.013b\projects\Новые переменные 4.13.cms"
А вот попытка запустить напрямую скрипт +доп. параметры не удалась
"D:\Яндекс Диск\Clickermann v4.13.013b\projects\Новые переменные 4.13.cms" 123 abc
или
"D:\Яндекс Диск\Clickermann v4.13.013b\projects\Новые переменные 4.13.cms" "123 abc"
В параметрах только путь к кликеру и путь к скрипту остальных нет
$_param_str D:\Яндекс Диск\Clickermann v4.13.013b\Clickerm
ann v4.13.013b x32.exe;D:\Яндекс Диск\Clickermann v4.13.013b\projects\Новые переменные 4.13.cms;
Это так, просто для информации. Есть возможность передавать и хорошо.
-
Предлагаю приложить qinsert_menu.txt от kiril-а для 4.13.013
-
Не получается передать параметры программе если запускать через ассоциацию файлов.
это к мистеру Гейтсу. возможно он отрезал таким образом ряд багов на случай если кто то решит переписать ассоциации или еще что.
хотя завтра какой нить Notepad# перепишет под себя *.cms и что ему ваши параметры?..
-
Понятно. Ну это я так, чтоб народ не мучался всё тестируя заново.
Я к примеру всегда запускал из bat-ов или планировщика указывая только скрипт. А здесь облом. Нужно запомнить.
-
Ещё вопрос, почему убрали параметр
; Использовать для работы с графикой только первичный монитор (для многомониторных систем)
only_primary_monitor
не работал? Вроде удобная штука.
-
Ещё вопрос, почему убрали параметр
; Использовать для работы с графикой только первичный монитор (для многомониторных систем)
only_primary_monitor
не работал? Вроде удобная штука.
после того как getscreen научился хоть по пикселю обновлять, смысл его исчез
-
В константах
#PRINTSCREEN 154
У меня он определяется как 44 на XP SP3
Проверьте на других системах.
-
У меня он определяется как 44 на XP SP3
Проверьте на других системах.
44
-
Ну теперь то достаточно хорошо для публикации? Версия 13.13 счастливая?
(https://pp.userapi.com/c846018/v846018382/258ae/lh8gJMl7-wA.jpg)
-
Ну теперь то достаточно хорошо для публикации? Версия 13.13 счастливая?
Для меня не очень. Хачу харчо, вернее - прямую функциию копирования файлов.
COPY(file1, file2)
Надоело костыли мастырить через Clip или через массив.
-
Пока не поздно, ввести наконец проверку на этапе запуска. Хотя бы примитивную первого уровня сложности (без учёта переплетений).
После удаления комментариев, считаем суммарно
IF + IF_PIXEL_IN + IF_PICTURE_IN = END_IF
FOR + WHILE = END_CYC
SWITCH = END_SWITCH
SUB = END_SUB
THREAD = END_THREAD
Скобки '(' = ')'
Само собой не учитывая данные в строках (строчных переменных).
При несовпадении выводить сообщение о ошибке:
"Не совпадает ...тратата...
Рекомендуется воспользоваться кнопкой 'волшебная палочка' ..."
Запуск не производить.
А то уже капец достало, постоянно и регулярно детские болезни левизны в коммунизме.
А, ещё подпрограммы 'SUB(ляляля' должны быть выше всех вызовов 'ляляля('
-
Пока не поздно, ввести наконец проверку на этапе запуска. Хотя бы примитивную первого уровня сложности (без учёта переплетений).
А, ещё подпрограммы 'SUB(ляляля' должны быть выше всех вызовов 'ляляля('
Согласен. А еще кумарит, что #include должно уже быть готово до запуска проекта. А если я програмирую в теле скрипта одну подключаемую штуку, то фигвам.
-
Пока не поздно, ввести наконец проверку на этапе запуска. Хотя бы примитивную первого уровня сложности (без учёта переплетений).
А, ещё подпрограммы 'SUB(ляляля' должны быть выше всех вызовов 'ляляля('
Согласен. А еще кумарит, что #include должно уже быть готово до запуска проекта. А если я програмирую в теле скрипта одну подключаемую штуку, то фигвам.
фиг вам и это правильно. Научитесь пользоваться комментариями или создать файл на который ссылаетесь.
Чё то, дядя, ты мимо темы ответил. Видимо не въехал в смысл мною написаного. Разжевывать ламерам нет никакого желания.
-
Graubart подключение инклюдов на лету / динамическое что ли?
ууууууу, Джонни будет "рад" )
-
Нафиг, нафиг. Есть другие способы.
-
Graubart подключение инклюдов на лету / динамическое что ли?
ууууууу, Джонни будет "рад" )
Именно это я имел ввиду. Так я даже не предлагаю Джонни делать такую заморочку. Просто кумарит. А на костылях это можно обойти. В одном скрипте делаю инклюд, затем передаю управление другому скрипту, который его подключает. Вообще на костылях в КМ можно сделать всё... ну, почти всё:)...
-
в v4.13... не работает вызов DLL
http://crapware.aidf.org/forum/index.php?topic=3937.msg26940#msg26940
-
да, было такое дело. связано с нашим переходом на юникод
Clickermann v4.13.014b
- исправлен (относительно бет) вызов "плагинов" через call
- добавлены простенькие проверки наличия нужного кол-ва end_ и скобок
- исправлен автоформат для switch
http://rgho.st/7PmZBkR6w
-
- исправлен автоформат для switch
Это то о чем я думаю? У кейсов тоже будет отступ как я и предлагал? :)
Скорей бы релиз. Я уже умираю как хочу всё это попробовать! :D
-
уже упоминалось, просьба таки сделать чтоб "запоминалась" геометрия окна лога сообщений. наверное, все его каждый раз "тянут" для себя на одно и то же место - чё б ему сразу там не появляться.
-
уже упоминалось, просьба таки сделать чтоб "запоминалась" геометрия окна лога сообщений. наверное, все его каждый раз "тянут" для себя на одно и то же место - чё б ему сразу там не появляться.
учитывая, что лог появляется относительно основных окон, позиция которых вполне себе запоминается, не вижу смысла.
да и в "боевом режиме" окно лога не используется. в основном для отладки на стадии написания
хватит хотелок. завтра праздничный релиз
-
учитывая, что лог появляется относительно основных окон, позиция которых вполне себе запоминается, не вижу смысла.
ну, относительно окна редактора (откуда в 99.9% случаев и вызывается) - ога, появляется в одном и том же месте.
только вот не там где надо - перекрывает собой редактор :) и каждый раз мув+ресайз его приходится.
ваще здорово было бы тогда хотя бы "появлять" его под редактор, такой же ширины, и высотой строк в 5-10.
но наверное, просто запоминать где и каким его в последний раз закрыли - будет таки проще и практичнее :)
да и в "боевом режиме" окно лога не используется. в основном для отладки на стадии написания
в боевом режиме лог не нужен вообще, факт. но есть ещё один важный режим - ДОписания, который, как ремонт в доме, обычно не прекращается никогда.
-
У меня всё таки вопрос по скринам.
С начала версии 4.13 в скринах по умолчанию проставлена прозрачность в альфа канале. В итоге весь белый цвет с прозрачностью.
В просмотрщике показывающем прозрачность стало невозможно работать с скринами.
отображение см. скрин.
Сам BMP отличается. см. HEX
-
прозрачности быть не должно. поглядим.
* шутка про внезапно вспоминающийся баг раз в неделю *
-
ну теперь то можно, что ли?
(прозрачность поправил. картинки сохраняются в 24 битной схеме. ранее были в 32)
-
Все молчат, лучше выложить, пока опять чего не написали)
-
Если не трудно исправьте пожалуйста цвет параметров в подпрограмме.
-
Тоже немножко отпишусь здесь :)
Цикл FOR() в Шаблонах v. 4.12.014b предлагается с равно, а в Командах он остался как был.
/// Шаблоны/циклы,условия/
FOR($a=0,$a<5)
END_CYC
///Команды/Условия,цикл,подпрограммы/for-цикл с параметром
FOR($a, $a < 5)
-
пошли придирки.
ну все, завтра выкатываю релиз.
-
ура! и спасибо.
config.ini: google=32839
а что это?
-
Поздравляю всех с новым релизом! Огромная благодарность Johnny за его труд и терпение, а также всем кто все это время помогал в тестировании, оформлял баг-репорты и просто морально поддерживал. Ура!
-
Пусть у меня работает всего один робот (больше, пока, некуда применить), но я прекрасно понимаю ЗНАЧЕНИЕ самого факта существования такого инструмента, как Clickermann... Он - единственный в своём роде... Таким сбалансированным сочетанием потребительских свойств, как у Clickermann-а, не может похвастаться ни один, из известных мне, инструментов.
Полностью разделяю восторг и радость предыдущих выступающих :)
Браво и огромная благодарность Автору!!!
(вот бы ещё один канальчик для пожертвований создать из какой-нибудь широко распространённой платёжной системы... За пределами РФ КИВИ-кошелёк приходится специально для Clickermann-а создавать, хоть Clickermann и тысячу раз этого достоин)
-
мои поделки в 7к строк написанные местами под 4.11, местами под 4.12, работают идеально под финалом 4.13.
i0 в шоке, великолепный релиз
нарвался только на один момент обратной несовместимости: screenshot и screenshotex теперь делают файлы с восьмизначным индексом. "screenshotXXXXXXXX.bmp" вместо четырёхзначного. это не отражено нигде, ни в комментариях к релизу, ни в справке.
p.s. и всё-таки, что такое config.ini: google=32839?
-
Потратил 2 часа на поиск причины почему у меня после обновления перестали работать некоторые условия. Оказывается теперь Clickermann не сравнивает значения разных типов. Как минимум числовые и строковые. Не знаю было ли это багом или нет, но на 4.12 код ниже работал. Получается так что в коде ниже переменная инициализированная по-умолчанию нулём сравнивается со строкой. На 4.12 это прокатывало, сейчас уже нет. Теперь если нужно сравнить значение переменной с каким-либо другим значением, то типы этих значений должны совпадать. Покопался в справке по этой теме ничего не нашел. Было бы неплохо описать этот момент для новичков. Или я плохо искал. :D
DEFINE($VAR)
IF($VAR ! "TEXT")
LOGWRITE("SOME TEXT")
END_IF
HALT
-
p.s. и всё-таки, что такое config.ini: google=32839?
Теперь кликер сам может делать скриншот 100X100 по координате курсора простым нажатием клавиш Alt+G
Можно поменять в настройках горячих клавиш.
-
ура! и спасибо.
config.ini: google=32839
а что это?
тоже что и все остальное в той секции. кодированный хоткей.
нарвался только на один момент обратной несовместимости: screenshot и screenshotex теперь делают файлы с восьмизначным индексом. "screenshotXXXXXXXX.bmp" вместо четырёхзначного. это не отражено нигде, ни в комментариях к релизу, ни в справке.
почти к каждому релизу идет строка в духе:
Прочие оптимизации и исправления
присмотрись. вот это оно. учитывая что бету крутили считай год, я все запомнить не смог.
-
Потратил 2 часа на поиск причины почему у меня после обновления перестали работать некоторые условия. Оказывается теперь Clickermann не сравнивает значения разных типов. Как минимум числовые и строковые. Не знаю было ли это багом или нет, но на 4.12 код ниже работал. Получается так что в коде ниже переменная инициализированная по-умолчанию нулём сравнивается со строкой. На 4.12 это прокатывало, сейчас уже нет. Теперь если нужно сравнить значение переменной с каким-либо другим значением, то типы этих значений должны совпадать.
не обязательно. у нас тут просто появляется небольшое промежуточное звено а-ля сравнение несравнимого.
к примеру код
DEFINE($VAR)
IF($VAR ! "1")
LOGWRITE("SOME TEXT")
END_IF
HALT
прекрасно и ожидаемо отработает несмотря на различие типов.
в твоем же примере сравнивая число 0 с текстом "TEXT", который кликер не может автоматически подогнать, теперь выдается ни false ни true а что то типа man, i dunno
типа суперпозиции а-ля кот Шредингера, когда и не да и не нет. при этом в случае возникновения такой ситуации при наличии отработает блок else.
вообще нормальные компиляторы в таком случае либо выдают какую то дичь (привет ява) либо ошибку еще на стадии компиляции (привет все остальные). так что мы еще отделались малой кровью.
p.s. надо говорить что сравнивать числа с текстом - это плохо?
-
Пусть у меня работает всего один робот (больше, пока, некуда применить), но я прекрасно понимаю ЗНАЧЕНИЕ самого факта существования такого инструмента, как Clickermann... Он - единственный в своём роде... Таким сбалансированным сочетанием потребительских свойств, как у Clickermann-а, не может похвастаться ни один, из известных мне, инструментов.
Полностью разделяю восторг и радость предыдущих выступающих :)
Браво и огромная благодарность Автору!!!
ат души!
(вот бы ещё один канальчик для пожертвований создать из какой-нибудь широко распространённой платёжной системы... За пределами РФ КИВИ-кошелёк приходится специально для Clickermann-а создавать, хоть Clickermann и тысячу раз этого достоин)
хз. ну хочешь биткоиновый кошелек дам, если они еще хоть что то стоят?)
вообще поскольку сбор доната (и вообще коммерциализация) никогда не был целью, вопрос сбора средств проработан никак. если кто подскажет как сейчас собирают денежку (не считая Краудфандинга ) да еще с приемом комментариев всяких типа как у стримеров, с радостью послушаю. я про это даже не думал. не того уровня у нас тут финансовые потоки так то
-
Потратил 2 часа на поиск причины почему у меня после обновления перестали работать некоторые условия. Оказывается теперь Clickermann не сравнивает значения разных типов. Как минимум числовые и строковые. Не знаю было ли это багом или нет, но на 4.12 код ниже работал. Получается так что в коде ниже переменная инициализированная по-умолчанию нулём сравнивается со строкой. На 4.12 это прокатывало, сейчас уже нет. Теперь если нужно сравнить значение переменной с каким-либо другим значением, то типы этих значений должны совпадать.
не обязательно. у нас тут просто появляется небольшое промежуточное звено а-ля сравнение несравнимого.
к примеру код
DEFINE($VAR)
IF($VAR ! "1")
LOGWRITE("SOME TEXT")
END_IF
HALT
прекрасно и ожидаемо отработает несмотря на различие типов.
в твоем же примере сравнивая число 0 с текстом "TEXT", который кликер не может автоматически подогнать, теперь выдается ни false ни true а что то типа man, i dunno
типа суперпозиции а-ля кот Шредингера, когда и не да и не нет. при этом в случае возникновения такой ситуации при наличии отработает блок else.
вообще нормальные компиляторы в таком случае либо выдают какую то дичь (привет ява) либо ошибку еще на стадии компиляции (привет все остальные). так что мы еще отделались малой кровью.
p.s. надо говорить что сравнивать числа с текстом - это плохо?
И все таки этот момент надо осветить хотя бы в справке, для новичков. Или для таких тупиц как я например. =) А вообще может жестко ограничить в интерпретаторе что сравниваться должны только значения одинаковых типов, с выводом ошибки интерпретации в случае нарушения данного правила? Сильно в меня не кидайтесь я просто сторонник максимально логичного и понятного кода. =)
Пусть у меня работает всего один робот (больше, пока, некуда применить), но я прекрасно понимаю ЗНАЧЕНИЕ самого факта существования такого инструмента, как Clickermann... Он - единственный в своём роде... Таким сбалансированным сочетанием потребительских свойств, как у Clickermann-а, не может похвастаться ни один, из известных мне, инструментов.
Полностью разделяю восторг и радость предыдущих выступающих :)
Браво и огромная благодарность Автору!!!
ат души!
(вот бы ещё один канальчик для пожертвований создать из какой-нибудь широко распространённой платёжной системы... За пределами РФ КИВИ-кошелёк приходится специально для Clickermann-а создавать, хоть Clickermann и тысячу раз этого достоин)
хз. ну хочешь биткоиновый кошелек дам, если они еще хоть что то стоят?)
вообще поскольку сбор доната (и вообще коммерциализация) никогда не был целью, вопрос сбора средств проработан никак. если кто подскажет как сейчас собирают денежку (не считая Краудфандинга ) да еще с приемом комментариев всяких типа как у стримеров, с радостью послушаю. я про это даже не думал. не того уровня у нас тут финансовые потоки так то
А надо бы. Проект сам себя то уж должен содержать. Оплата домена, хостинга ну и на пирожок для мотивации =)
-
На жидкий пирожок. В смысле жидкий хлеб.
-
+ Блокировка редактирования кода во время выполнения скрипта
привела к тому, что теперь невозможно на паузе вбить переменную и посмотреть значение (её нет в main скрипта, только в инклюде). Может быть сделать имя переменной в окне Debug редактируемым?
-
Не понял куда вбить нужно. У меня работает по прежнему и просмотр и изменение.
Если скрипт поставить на паузу. Или ты имеешь ввиду на рабочем скрипте когда отрабатывает WAIT?
-
запускаю скрипт. ставлю на паузу. открываю редактор кликера. вижу скрипт без инклюдов. мне нужно посмотреть переменную, которая только в инклюде встречается.
раньше я её руками вбивал в код в свободную строку, выделял и смотрел значение, а после откатывал изменения и закрывал редактор.
теперь редактирование заблокировано
-
Ничёсе порядок действий.
Так на такое и небыло рассчитано. Правильно что нельзя.
А вот отдельное поле с вводом переменной нужно. Даже не так, нужно изменить эту систему, сейчас просматривать не удобно. Все эти выделения, целиться, потом ПКМ... брррр.
-
скриншот из окна редактора неправильно работает в многомониторных системах.если дополнительный слева или сверху, то даже скриншот на основном мониторе берёт непонятно какую область. но это не критично, просто на заметку.
-
Баг 4.13
Скрипт выполняет анализ цвета в оконном режиме. Если во время выполнения скрипта окно исчезнет, при последующей перепривязке кликер перестает видеть цвет. Редактор при этом цвет показывает, но функции выводят в лог код цвета 0.
Если отключить оконный режим то при выполнении выскакивает ошибка интерпретации GETSCREEN.
Проблему решает только перезапуск кликера.
Кликер должен определять существует привязанный HWND или уже нет, и возвращать 0 в $_hwnd если окно исчезает.
-
Новый сезон нашего шоу!
Версия 4.14.000b х32
http://rgho.st/6kRSxdxkl
Шо нового в основном:
- инструкции работы с файлами и файловой системой
- обновленный colormode, тепепрь на математике а не на битовых операциях
- цветной текст в логе (см. printc, в хистори забыл добавить..)
- мелкие фиксы
так то все описано в справке, кроме упомянутого
-
Замечен баг при вызове подпрограммы со строковым параметром. Кстати он был и в 4.13 . Если строка длинная (более 253 символов), то в подпрограмме к ней добавляются ковычки :-\ .
SUB(test, $str_par)
print(strcut($str_par,1,1)," ",$a) //смотрим, какой символ первый в строке
END_SUB
$str = ""
FOR($a=1,$a<99999)
$str = strconcat($str, "a") //добавляем символ к имеющейся строке
test($str) //вызов с параметром этой стоки
waitms(20)
END_CYC
лог:
....
22:30:19 a 247
22:30:19 a 248
22:30:19 a 249
22:30:19 a 250
22:30:19 a 251
22:30:19 a 252
22:30:20 a 253
22:30:20 " 254
22:30:20 " 255
22:30:20 " 256
22:30:20 " 257
22:30:20 " 258
22:30:20 " 259
....
В справке не написан диапазон режимов colormode :(.
Мое мнение - нужно оставить старый вариант колормода для совместимости старых скриптов с новой версией. А новый вариант обозвать какнибудь иначе.
-
В справке не написан диапазон режимов colormode
пока что от 1 до 32. 33 - ч\б
эт скорее даже не режим, а уровень контрастности (вырезание полутонов).
можно в принципе уменьшить такой большой разбег, конечно, до любого кратного 32 значения. то есть до 16, 8 или 4
можно и сохранить старый для соместимости, но основным я бы его не делал. новая метода дает более корректный результат как с точки зрения цифр, так и с точки зрения визуального восприятия
-
Обновил файлы команд и шаблонов.
Может, если уж пошла модернизация, стоит добавить встроенное плавное перемещение мыши для кликов и move?
Это должен быть третий необязательный параметр скорости перемещения.
И надо что то делать с подвисание кликера во время работы функций. Например поиск картинок, невозможно остановить кликер пока функция не завершит работу.
-
Функция FCopy выдает ошибку если файл получатель уже существует.
FCopy("C:\Image.jpg","Image2.jpg")
Нужно добавить необязательный параметр перезаписи файла. Если не указано то не переписывать файл но и не выдавать ошибок на ровном месте.
-
Я не могу выбрать этот кликер для открывания файлов cms по умолчанию. Ни на 32-разрядной семерке, ни на 64-разрядной.
-
Я не могу выбрать этот кликер для открывания файлов cms по умолчанию. Ни на 32-разрядной семерке, ни на 64-разрядной.
Это твой личный выбор и мы его искренне уважаем. Каждый выбирает то что ему больше нравится или к чему он привык.
(http://s17.rimg.info/1110f4a040e627baeb56331df566c107.gif) (http://smayliki.ru/smilie-1037782215.html)
:o
https://youtu.be/q5pLXZQrCyk (https://youtu.be/q5pLXZQrCyk)
-
Запусти кликер от админа, зайди в настройки кликера и нажми кнопку "добавить" в ассоциации файлов.
-
Запусти кликер от админа, зайди в настройки кликера и нажми кнопку "добавить" в ассоциации файлов.
Благодарю!
-
А еще бы к CALL массивы прикрутить на вход и выход.
-
В общем тут одна херь мешает работать )) Эта херь наблюдалась и в более ранней версии, но отпишу уже тут.
Объясню ситуацию...
Я запускаю на компе 12 виртуальных машин и в каждой виртуалке запускается игра и кликер со скриптом. В каждом окне, как вы понимаете, игра одна и та же и скрипт в кликере один и тот же. В скрипте есть команда - WNDPOS ($hwnd,0,0), и эта команда работает нормально до тех пор, пока я не запущу еще 2-3 виртуальные машины (естественно с той же игрой и скриптом). После запуска дополнительных виртуалок, в них (в любых запущенных виртуалках) начинает выскакивать ошибка - "Ошибка при интерпретации строки: WNDPOS ($hwnd,0,0) Прервать выполнение сценария?". Как сами понимаете, эту ошибку я взять под контроль не могу, так как кликер при ней клинит (на остальные возможные ошибки винды и игрового клиента реакция в скрипте прописана). От чего эта ошибка появляется? У процессора мощи еще предостаточно даже при открытии дополнительных виртуалок (у него 12 ядер - 24 потока), памяти тоже предостаточно. Скорее всего какая-то реакция происходит от того, что слишком нагружаются диски, на которых расположены "диски" виртуальных машин. Так или иначе - есть какие-то мысли, как избежать этой ошибки? Ошибка-то какая-то глючная... Если она появилась 1 раз, то уже не пропадет, пока не перезагрузишь винду в виртуалке... Хоть ты игру перезапускай, хоть кликер - пофиг...
-
А вы точно уверены, что этот междусобойчик имеет какое-то отношение к тестированию новой версии?
Опять ты... "этот междусобойчик", как на старой, так и на новой версии присутствует.
-
Добавлю, что само окно, которое нужно переместить на координаты, в момент появления ошибки, существует. Там условия в скрипте:
$hwnd=wndfind("Заголовок окна")
IF($hwnd ! 0)
WNDGETINFO($hwnd, $x_hwnd, $y_hwnd, $hwnd_width, $hwnd_height)
IF(($x_hwnd ! 0)|($y_hwnd ! 0))
WNDPOS($hwnd,0,0)
END_IF
END_IF
-
В общем пока решил проблему тем, что запускаю второй кликер в каждой виртуалке, который контролит появление этой ошибки. Но это - корявый костыль...
-
Новый сезон нашего шоу!
Версия 4.14.000b х32
Шо нового в основном:
- цветной текст в логе (см. printc, в хистори забыл добавить..)
вопрос, как это правильно работает
printc("В таре №1 = 115 л.", 1582483) получаем цветной текст в логе - приятно, удобно, но с подстановкой переменной не работает
printc("В таре №1 = ", $PL_1_G," л.", 1582483) - получаем пропуск строки, хотя при написании print("В таре №1 = ", $PL_1_G," л.") - получаем текст в логе"В таре №1 = 115 л."
printc(В таре №1 = $PL_1_G, 1582483) - а так получаем цветной текст Втаре№1=115
-
вопрос, как это правильно работает
Для конкатенации строк в кликере есть функция STRCONCAT
printc(STRCONCAT("В таре №1 = ", $PL_1_G), 1582483)
-
- обновленный colormode, тепепрь на математике а не на битовых операциях
У меня вопрос... А старый colormode вообще убран будет? Просто по моим наблюдениям, новый далеко не всегда справляется с такой задачей, как например в полоске ХП все пиксли сделать одного цвета.
-
Конечно лучше бы для совместимости оставить старый колормод, и добавить новый.
-
Конечно лучше бы для совместимости оставить старый колормод, и добавить новый.
Типа colormode1 и colormode2
Просто мне, например, только из-за colormode придется остаться на более ранней версии кликера...
-
будет будет
осталось машину откачать. так то бета версия была готова еще в том году, но нисрослося.
-
Исходя из темы - http://crapware.aidf.org/forum/index.php?topic=4477.msg30530#msg30530 (http://crapware.aidf.org/forum/index.php?topic=4477.msg30530#msg30530)
Я тут подумал... Может сделать вывод этой ошибки отключаемым...? Параметр в config.ini:
; В случае непредвиденной ошибки программа преостановит сценарий и выдаст диалоговое окно
; Полезно отключать при оставлении работающей программы без контроля на длительное время
skip_error =0
на эту ошибку никак не влияет похоже. Но тут еще нюанс есть... Нужно, если вывод этой ошибки будет отключен, чтобы скрипт все же понимал как-то, что ошибка-то произошла и на самом деле никакой информации из ini-файла взято не было, или не внесено в файл. Или что можно придумать...?
Чтобы было понятней... У себя-то в программе я могу написать всю процедуру с ini-файлом через Try и в случае ошибки, какой-нибудь переменной, типа boolean, присвоить значение - true, а после всей операции, проверить значение этой переменной.
procedure TForm1.Button1Click(Sender: TObject);
begin
error := False;
Try
variables := TIniFile.Create(ExtractFilePath(Application.ExeName)+'variables.ini');
variables.WriteString('Agr1.1','relog','1');
variables.Free;
except
error := True;
end;
if error then Данные не были внесены в ini-файл else Данные были успешно внесены в ini-файл;
end;
В кликере реализовать бы подобную возможность...
-
Скоро сказка сказывается, да не скоро дело делается
Clickermann v4.14.001b x32
+ Интерпретатор:
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
+ Добавлена поддержка внешнего препроцессора и директива #preprocessor
+ Добавлены инструкции:
+ CODE
+ FREADDATA
+ FWRITEDATA
+ FDELETE
+ FCOPY
+ FCREATE
+ FEXISTS
+ FSIZE
+ WNDFINDARR
+ CONTRAST
+ LOGWRITEC (PRINTC)
+ CALLARR
+ Исправления:
+ #define больше не вызывает ошибку проверки синтаксиса
+ Исправлен SETVAR
+ CALL, INIREAD, INIWRITE могут работать с файлами вне папки проекта
+ ARRSORT сортирует строки и числа
+ Редактор:
+ Лупа теперь использует CONTRAST вместо COLORMODE
+ Лог:
+ Поддержка цветных строк
+ Прочее:
+ Исправление ложных уведомлений об обновлении при сбоях на сервере
+ Предупреждение о масштабировании экрана, отличном от 100%
+ Прочие оптимизации и исправления
-
Скоро сказка сказывается, да не скоро дело делается
+ Интерпретатор:
+ Добавлена поддержка внешнего препроцессора и директива #preprocessor
А вот это чтото интересное, только вот перечитав пару раз справку - ничего не понял :(
Можно как-нибудь по нагляднее, на каком-нибудь примере чтоль?
Ну и CALLARR порадовал :).
-
Скоро сказка сказывается, да не скоро дело делается
+ Интерпретатор:
+ Добавлена поддержка внешнего препроцессора и директива #preprocessor
А вот это чтото интересное, только вот перечитав пару раз справку - ничего не понял :(
Можно как-нибудь по нагляднее, на каком-нибудь примере чтоль?
Ну и CALLARR порадовал :).
Так пример же в папке проджекс лежит.
-
Да, пример увидел, "вроде" понял что он делает. Но где применимо, пока не совсем понимаю. Наверное это возможность сделать что-то сверхсложное... :o
Или это чтото на подобии скрытия кода для любопытных?
-
хоть сокрытия, хоть шифрования, хоть доработки и введения собственных конструкций и инструкций.
но порог вхождения велик, да. мало того, что надо иметь возможность создавать DLL чисто технически, так еще и писать нетривиальные алгоритмы уровня парсера.
этакая игрушка для энтузиастов, как и плагины. но зато на мне свет клином не сойдется. даж если меня завтра камаз собьет, сообщество смогет дорабатывать проект
-
только вот перечитав пару раз справку - ничего не понял :(
Я что-то вообще про это дело в справке ничего найти не могу... И вообще не понимаю - для чего этот preprocessor нужен...
-
С DLL все понятно. Есть шаблон, есть процедуры которых нет в КМ - все что нужно пихай внутрь, на выходе или действие или число (еще лучше было бы если на выходе массив с заданным именем). А с препроцессором не догоняю.
-
С DLL все понятно. Есть шаблон, есть процедуры которых нет в КМ - все что нужно пихай внутрь, на выходе или действие или число (еще лучше было бы если на выходе массив с заданным именем).
Я не понимаю... Ну, разделила длл строку на строки... Для чего это надо-то...? В чем это может пригодиться?
-
Видимо пример надо было посложнее придумать)) Вообще это чисто для тех кто захочет поиграться с синтаксисом. Но как побочная возможность - спрятать код. Причем способов масса.
Тут вон чувак давеча менял области памяти кликера чтоб colormode свой слабать. Вот таким парням это и будет занятной игрушкой.
-
Но как побочная возможность - спрятать код.
Вот это мне и не понятно... ну, предположим, что в коде я все поменял местами, а длл, при запуске скрипта, все расставляет на свои места... Тормознул скрипт после запуска, открыл редактор и вот тебе весь рабочий код... В чем фишка...? Я не умоляю того, что вы что-то придумали путевое, но я пока понять не могу...
-
Но как побочная возможность - спрятать код.
Тормознул скрипт после запуска, открыл редактор и вот тебе весь рабочий код...
нет. как уже не раз упоминалось, даже в более ранних версиях скрипт "в редакторе" и скрипт "в памяти" отличаются. банально, если бы вы"тормознули" скрипт, то не увидели бы никогда комментариев, пустых строк и т.п. в вашем варианте. они просто вырезаются еще до стадии выполнения штатным препроцессором дабы увеличить быстродействие. не говоря уже об остальных преобразованиях.
это правда вопрос понимания)) пожалуй стоит подождать примеров достойных, или пока я сам что нибудь напишу
-
wchar_t* execute (data: wchar_t*);
Сама строка символов представлена в формате UTF-8, а значит каждый символ кодируется двумя байтами.
UTF-8 или все таки UTF-16 ? UTF-8 расширяем до 4 байт же.
-
банально, если бы вы"тормознули" скрипт, то не увидели бы никогда комментариев, пустых строк и т.п. в вашем варианте. они просто вырезаются еще до стадии выполнения штатным препроцессором дабы увеличить быстродействие.
Не понимаю... - https://www.youtube.com/watch?v=VMdtMROhwPo&feature=youtu.be (https://www.youtube.com/watch?v=VMdtMROhwPo&feature=youtu.be)
-
wchar_t* execute (data: wchar_t*);
Сама строка символов представлена в формате UTF-8, а значит каждый символ кодируется двумя байтами.
UTF-8 или все таки UTF-16 ? UTF-8 расширяем до 4 байт же.
Над формулировками, конечно, подумать стоит, равно как и подтянуть собственные знания.
Но wchar в винде это фиксированно 2 байта. В ядре кликера соответственно тоже используется такой размер. Стало быть пляшем от того.
Да и не думаю, что кому то потребуются расширенния. Вообще, так бы и сидели на однобайтовом ASCII, если б не всякие нелокализованные виндовсы и прочие редко возникающие нюансы.
-
банально, если бы вы"тормознули" скрипт, то не увидели бы никогда комментариев, пустых строк и т.п. в вашем варианте. они просто вырезаются еще до стадии выполнения штатным препроцессором дабы увеличить быстродействие.
Не понимаю... - https://www.youtube.com/watch?v=VMdtMROhwPo&feature=youtu.be (https://www.youtube.com/watch?v=VMdtMROhwPo&feature=youtu.be)
все верно. я и говорю, поскольку "в редакторе" лежит скрипт до обработки препроцессором, то и посмотреть то, что получается после, у вас не получится. это начальный вариант. на выполнение идет код без комментариев и прочей шелухи. его никто не видит. стало быть шифрование возможно и никакое открытие в редакторе после ничего не даст.
блин, надеюсь найдется кто-то более умелый в объяснениях)) или тупо сам напишу если будет время примитивнейший пример такого плана.
-
Над формулировками, конечно, подумать стоит, равно как и подтянуть собственные знания.
Но wchar в винде это фиксированно 2 байта. В ядре кликера соответственно тоже используется такой размер. Стало быть пляшем от того.
Да и не думаю, что кому то потребуются расширенния. Вообще, так бы и сидели на однобайтовом ASCII, если б не всякие нелокализованные виндовсы и прочие редко возникающие нюансы.
Вопрос не в том сколько потребуется, а в способе обработки. Если в UTF-16 можно брать символ по индексу, то в UTF-8 уже придется бегать итератором. Это все, конечно, лирика, но лучше такое указывать. Как и порядок байт LE или BE (для win - LE, но опять же, для определенности).
-
все верно. я и говорю, поскольку "в редакторе" лежит скрипт до обработки препроцессором, то и посмотреть то, что получается после, у вас не получится. это начальный вариант. на выполнение идет код без комментариев и прочей шелухи. его никто не видит. стало быть шифрование возможно и никакое открытие в редакторе после ничего не даст.
>:( А вот и не правда, не работает задуманное тобой :(.
Вот качаю я твой пример из последней беты. смотрю код cms
// 29.11.2018
#preprocessor "comas.dll"
print("Hello"); print(", "); print("World!");
halt
Запускаю этот код этой же последней версией, жму "плей", и чудо, в логе у нас все сработало не так как записано в коде, со всякими там точками с запятыми... ;D
Открываю редактор, и что же я там вижу:
(https://i.imgur.com/M2sLheY.png)
А вижу я то, что препроцессор исправил код в верный вид и вписал его в редактор, и все могут посмотреть как должно быть.
А я то думал... должно быть так, я пишу какойто код к примеру в делфи, где присваиваю переменнолй текст кода, который сможет прочесть кликерман. И при запуске препроцессора с этой длл, этот код кликермана встроится в память кликермана, и не появится в редакторе. Судя по справке и вашему обсуждению так оно и должно было быть :(.
Я кстати потратил с час гдето, чтообы вписать (понять как) в длл простенький код кликермана. И этот код действительно телепортируется в кликерман, и работает. Но только в последний момент я заметил, что этот весь код перекидывается именно в редактор, а ни куда то там в память проги :(.
А были надежды на написания "пользовательских" функций и еще чего, но пока в этом препроцессоре я смысла вообще не вижу :(
Еще простой пример бесполезности:
Код делфи:
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
strbuf: String;
wc_res: PWideChar;
begin
// Пишем сразу готовый код
strbuf := '#preprocessor "comas.dll"' + #13#10 +
'LOGSHOW (1, 100, 100 )'+ #13#10 +
'print("Тестовый текст")'+ #13#10 +
'halt' ;
// ShowMessage(strbuf); //можно глянуть наш код
wc_res := PWideChar(strbuf);
result := wc_res;
end;
Код кликермана:
#preprocessor "comas.dll"
halt
Запускаю код кликермана:
А в нем уже сразу при запуске препроцессор всовывает код:
#preprocessor "comas.dll"
LOGSHOW (1, 100, 100 )
print("Тестовый текст")
halt
Либо я все совсем не так понял, либо я даже не знаю что и думать :-[
-
Я вот как бы все это и пытаюсь объяснить )) Какой смысл - менять чего-то там в коде, если остановил кликер, открыл редактор и вот он тебе весь рабочий код...? )
-
А я бы хотел в новой версии увидеть полноценные настраиваемые горячие клавиши.
К как реализуется сейчас: в коде прописано условие "если такая то клавиша нажата, то надо че то выполнить", код почти на 5 тыщь строк, зажимаем клавишу и ждем пока до этого куска кода дойдет очередь.
Как хотелось бы: примерная реализация кнопки остановки скрипта, т.е. назначил клавишу, нажал на нее, скрипт "встал на паузу" (условно говоря) выполнилась часть кода по условию и скрипт продолжился дальше.
Возможно ли это как то реализовать?
-
код почти на 5 тыщь строк, зажимаем клавишу и ждем пока до этого куска кода дойдет очередь
Пффф... Я ничего не жду. Вывел горячие клавиши в отдельный поток и оперируешь в нем переменными, а основное тело скрипта уже отталкивается от этих переменных.
-
код почти на 5 тыщь строк, зажимаем клавишу и ждем пока до этого куска кода дойдет очередь
Пффф... Я ничего не жду. Вывел горячие клавиши в отдельный поток и оперируешь в нем переменными, а основное тело скрипта уже отталкивается от этих переменных.
А вот это интересно, сейчас попробую :)
Задумка не плохая, в потоке ставится флаг что кнопка нажата, а в основном скрипте когда доходит до нужного места автоматом выполняется кусок скрипта.
Если в потоке запустить радиобокс то и он открывается и скрипт продолжает жать кнопки )))
-
Я допускаю, что мы с dramster что-то не понимаем, но все же хотелось бы понять - как избежать "обножения" кода, при выключении
Clickermann-а и открытии редактора скриптов...?
-
Я какбы тоже обдумывал смысл этого препроцессора все эти дни. Вроде вполне понял как это работает (по крайней мере я в это верю ;D). И пришел к выводу, что вот это:
хоть сокрытия, хоть шифрования
Просто не работает, чтото не получилось, и Джонни исправит... надеемся.
Вот это
хоть доработки и введения собственных конструкций и инструкций.
Уже итак есть - CALL или CALLARR.
Пользовательских функций написать не выйдет, так как эта дериктива выполнится одним махом при запуске, и вызов этих "функции" с параметрами в виде переменных приведут к не пойми чему.
Вобщем, кроме как псевдокомпиляции написанного кликермановского кода в длл и последующем запуске этого кода ( не через редактор, а внедряя этот код в память) я не вижу.... естественно когда это заработает как нужно. И это было бы здорово.
А сейчас хотелось бы поговорить о пользовательских функциях, необязательно написанных на кликермане, можно написать в сторонних языках. И эта возможность у нес есть. Все упирается в типы данных.
Кликерман имеет что - строки, числа, массивы. Впринципе этого вполне хватает 99% случаев. Передать в ДЛЛ мы можем числа и массивы, УРА, этого хватит на все 100% случаев. Передав массив, в длл мы его переделаем под то что нам требуется, и будем работать с теми типами которые нам нужны именно там.
Остается один ОГРОМНЫЙ недостаток. ДЛЛ возвращает лишь одно число в 4 байта :( и всё...И хоть ты тресни. >:(
Есть второй недостаток, это то, что CALL это не функция.
Но ведь #preprocessor "filename" возвращает PWideChar, это куча информации (незнаю даже, есть ли в нем ограничение). Почему бы не сделать и в CALL/CALLARR возврат хотябы массива чисел, бОльшего то и не надо :'( из этого массива в кликермане также можно сделать то что нужно.
Это было по [Alpha/Beta Testing]
Далее хотел по предложению в следующих версиях:
Мы имеем графический буфер, обрабатывается довольно быстро, но только теми процедурами, которые присутствуют в штатном функционале. Если нужно с графикой поиздеваться по своему, то выхода 2 - попиксельный анализ и обработка в буфере или попиксельно перекидывать буфер в массив и далее уже ковыряние и снова попиксельно сунем в буфер. И первое и второе занимает вечность.
Предложение
Добавить две функции:
. выгрузка графического буфера (области) в массив
. загрузка массива в графический буфер (область)
В массиве никаких координат, просто цвета.
Для чего? Имея CALLARR и выгрузку графического буфера в массив , мы уже сможем быстро обработать/анализировать большие части графики как нам захочется. А когда CALL будет возвращать массив, то и загрузка массива в графический буфер в тему.
::) Пока это все мои ХОТЕЛКИ. + все уже существующее в кликермане = цены ему не будет ;D
-
Хотеть так хотеть. Нужна выгрузка графического буфера (области) в двумерный массив. Ну и конечно же доделать CALL.
-
Хотеть так хотеть. Нужна выгрузка графического буфера (области) в двумерный массив. Ну и конечно же доделать CALL.
Зачем двумерный? :-\
Просто перенести из памяти поочередно цвета в массив, этого достаточно.
-
И пришел к выводу, что вот это:
хоть сокрытия, хоть шифрования
Просто не работает, чтото не получилось, и Джонни исправит... надеемся.
Я в принципе так и подумал, что по замыслу, если прописываешь в скрипте:
#preprocessor "comas.dll"
halt
То при остановке скрипта, в нем только эти строки и должны оставаться, а все, что dll в него добавляла, должно оставаться где-то внутри кликера и не отображаться в скрипте.
-
Что бы искать в определенной строке, ну и операции с матрицами делать удобней.
Я бы еще и от поддержки разных типов данных не отказался, но это фантастика.
-
Что бы искать в определенной строке, ну и операции с матрицами делать удобней.
Этож двойное увеличение сохроняемой информации,. Нахера? Нам же потом еще работать с этим всем.
И в файлах, и в той же памяти кликера, никакой двумерности, просто идут цвета поочереди. И никто не жалуется. Номер элемента массива - вот тебе и координата.
Главное заранее знать разрешение. Или ты чтото другое, не координаты, хотел писать внагрузку пиксельному массиву?
-
Двумерные массивы сами по себе хороши. С другой стороны можно обработку многомерных массивов и в dll делать (когда будет удобный выход).
ps Расчеты в компьютерной графике под 2-3х мерные массивы заточены.
-
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
Чтото я так прикинул, это же лишнее :-\ . Никто не запрещал ранее удалять массив перед его новой записью если нужно, по крайней мере я привык. А вот часто бывает нужда именно добавления процедурами новых данных в массив. Сейчас приходится в этих случаях создавать дополнительный массив для хранения информации, и перекидывать ее в него.
-
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
Чтото я так прикинул, это же лишнее :-\ . Никто не запрещал ранее удалять массив перед его новой записью если нужно, по крайней мере я привык. А вот часто бывает нужда именно добавления процедурами новых данных в массив. Сейчас приходится в этих случаях создавать дополнительный массив для хранения информации, и перекидывать ее в него.
это было сделано для приведения всех процедур к единому стандарту. ранее одни массив очищали (например те что считывают файлы), другие нет (те что работали с экраном).
процедура слияния массивов (по аналогии с srtconcat) будет добавлена чуть позже. с точки зрения самого языка (и языков) это не лишнее, это так как везде
и да, про препроцессор и правда недоработочка... исправили
-
и да, про препроцессор и правда недоработочка... исправили
Здесь нет смайла с фейерверками... ;D
А... Как бы вопрос... А где качать исправленную версию...? Там же?
-
Patch 4.14.002b
https://yadi.sk/d/7CYIVwReKaelpA
Исправлен ехе файл, справка
Добавлена процедура arrconcat
-
Вот сейчас я туплю страшно и чего-то не понимаю, или препроцессор как-то не так опять работает...?
и да, про препроцессор и правда недоработочка... исправили
Patch 4.14.002b
https://yadi.sk/d/7CYIVwReKaelpA
Исправлен ехе файл, справка
Добавлена процедура arrconcat
На сколько я понял, в 4.14.002b препроцессор исправлен? Одно точно - он стал работать по-другому с примером в папке "PrepSample". Теперь, при открытии редактора, после отработки скрипта, скрипт такой же, какой и было до запуска, но...
Код делфи:
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
strbuf: String;
wc_res: PWideChar;
begin
// Пишем сразу готовый код
strbuf := '#preprocessor "comas.dll"' + #13#10 +
'LOGSHOW (1, 100, 100 )'+ #13#10 +
'print("Тестовый текст")'+ #13#10 +
'halt' ;
// ShowMessage(strbuf); //можно глянуть наш код
wc_res := PWideChar(strbuf);
result := wc_res;
end;
Код кликермана:
#preprocessor "comas.dll"
halt
Вот это все намутит не возможно. Стоит состряпать свою длл и заменить ею ту, что находится в примере и кликер просто не даст применить скрипт...
-
??? Да не, я проверил, работает отлично.
Весь код делфи:
library PrepSample;
uses
Vcl.Dialogs,
SysUtils;
//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
strbuf: String;
wc_res: PWideChar;
begin
// Пишем сразу готовый код
strbuf := '#preprocessor "comas.dll"' + #13#10 +
'LOGSHOW (1, 100, 100 )'+ #13#10 +
'print("Тестовый текст")'+ #13#10 +
'halt' ;
// ShowMessage(strbuf); //можно глянуть наш код
wc_res := PWideChar(strbuf);
result := wc_res;
end;
//------------------------------------------------------------------------------
// список экспорта
exports execute;
begin
// тело пусто
end.
Код кликера:
#preprocessor "test.dll"
halt
Скомпилированная "test.dll" рядом с сохраненным cms
Результат:
(https://i.imgur.com/rDiGnSW.png)
И как я не пытался, код в редакторе так и не увидел :)
-
Етит... Я "exports execute;" забыл прописать...
-
Весь код делфи:
library PrepSample;
uses
Vcl.Dialogs,
SysUtils;
//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
strbuf: String;
wc_res: PWideChar;
begin
// Пишем сразу готовый код
strbuf := '#preprocessor "comas.dll"' + #13#10 +
'LOGSHOW (1, 100, 100 )'+ #13#10 +
'print("Тестовый текст")'+ #13#10 +
'halt' ;
// ShowMessage(strbuf); //можно глянуть наш код
wc_res := PWideChar(strbuf);
result := wc_res;
end;
//------------------------------------------------------------------------------
// список экспорта
exports execute;
begin
// тело пусто
end.
Я правильно понимаю? Строка
'#preprocessor "comas.dll"' + #13#10 +
лишняя? Ведь она уже есть в начальном скрипте кликера и, благодаря ей, кликер и вызывает код из длл...
-
Весь код делфи:
library PrepSample;
uses
Vcl.Dialogs,
SysUtils;
//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
strbuf: String;
wc_res: PWideChar;
begin
// Пишем сразу готовый код
strbuf := '#preprocessor "comas.dll"' + #13#10 +
'LOGSHOW (1, 100, 100 )'+ #13#10 +
'print("Тестовый текст")'+ #13#10 +
'halt' ;
// ShowMessage(strbuf); //можно глянуть наш код
wc_res := PWideChar(strbuf);
result := wc_res;
end;
//------------------------------------------------------------------------------
// список экспорта
exports execute;
begin
// тело пусто
end.
Я правильно понимаю? Строка
'#preprocessor "comas.dll"' + #13#10 +
лишняя? Ведь она уже есть в начальном скрипте кликера и, благодаря ей, кликер и вызывает код из длл...
но это не мешает сунуть результат первого препроцессора в следующий по порядку. кто сказал что препроцессор может быть один
-
функция GETKEYSDOWN ($arr) - возвращает значения в текстовом формате.
для проверки условий их приходится предварительно преобразовывать
IF(INT($arr[0])=17)
LOGWRITE ("клавиша нажата")
END_IF
может стоит сразу возвращать числовые значения?
а точно? чет не вижу ошибки и все работает и без Int
-
ну так и? больше нет противоречий? можно в релиз?
-
ну так и? больше нет противоречий? можно в релиз?
В keywords.txt нет ARRCONCAT
И вот обновленные команды-Шаблоны
а так можно и в релиз.
-
ну так и? больше нет противоречий? можно в релиз?
Пока небыло необходимости/возможности потестить все новинки. Я думаю врядли все сразу полезли тестить все и вся. Я проверил только то что мне было интересно.
-
Да, и еще с этим ВОМ, что и как он там делает, неужели без него никак? Хотябы убрать его при создании батников, а то некрасиво както, придет новичек/супермегапрограммист, решит чениибуть этоковое,, а тут фиг тебе. Да и с ини там какието проблемы были.
Не стал искать тех ошибок, проще показать на примере
STRWRITELN ("test.bat", "pause")
execute("test.bat") //не стработает изза этих пару байт в записи
halt
-
Да, и еще с этим ВОМ, что и как он там делает, неужели без него никак? Хотябы убрать его при создании батников, а то некрасиво както, придет новичек/супермегапрограммист, решит чениибуть этоковое,, а тут фиг тебе. Да и с ини там какието проблемы были.
Не стал искать тех ошибок, проще показать на примере
STRWRITELN ("test.bat", "pause")
execute("test.bat") //не стработает изза этих пару байт в записи
halt
Может нужно добавить дополнительный параметр указывающий в каком формате сохранять файл?
-
Еще вспомнил.
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
Ок, раз так положено то пусть так и будет, тем более что все условие со склейкай массивов созданы.
Но почему так?
STRSEPARATE ("1,2,3,4", ",", $arr)
print(arrsize($arr)) // 4
STRSEPARATE ("1,2,3,4", ",", $arr)
print(arrsize($arr)) // 8
halt
Я уже начал привыкать к новшеству, и случайно наткнулся. :-\
-
STRPOS не различает регистр
Давно это уже. Но сейчас функционал шире и стало неприятно.
Другие функции STRREPLACE, STRFILTER регистр различают.
STRCUT и STRCUT2 не проверял.
-
Баг c PRINTC. Сначала подумал, что это из за моей лапши, но как оказалось, это происходит со всеми строками, которые не умещаются в ширину лога
Еще заметил, что если текущий час меньше 10, то время в логе отображается без 0 в разряде десятков. Вроде тоже фигня, но всё равно, как то неперфекционально :D
-
Баг c PRINTC. Сначала подумал, что это из за моей лапши, но как оказалось, это происходит со всеми строками, которые не умещаются в ширину лога
Еще заметил, что если текущий час меньше 10, то время в логе отображается без 0 в разряде десятков. Вроде тоже фигня, но всё равно, как то неперфекционально :D
Есть такой баг. Обхожу его увеличением окна лога. А то, что часы до 10 без нуля, действительно неудобно. Это не только в логе, но также и в текущей дате и времени. И часы, и минуты, и секунды. При выводе кривокосо получается. :)
-
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
Как то теперь неудобненько выходит.
Я хотел при помощи SCANPICTURE получить массив координат нескольких разных изображений, но ни тут то было. Про SCANPXL вообще молчу. :c
-
Да это кто-то крикнул не подумавши. Забывают они чистить массив или лень, а теперь мучайся.
-
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
Как то теперь неудобненько выходит.
Я хотел при помощи SCANPICTURE получить массив координат нескольких разных изображений, но ни тут то было. Про SCANPXL вообще молчу. :c
в последней бете (которой кажется тут нет) есть процедура слияния массивов
-
в последней бете (которой кажется тут нет) есть процедура слияния массивов
Есть - http://crapware.aidf.org/forum/index.php?topic=356.msg31439#msg31439
Ссылка тут https://yadi.sk/d/7CYIVwReKaelpA .
Слияние массивов ARRCONCAT работает:
$arr1[0]= 1 //один массив
$arr1[1]= 2
$arr1[2]= 3
$arr2[0]= 4 //второй массив
$arr2[1]= 5
$arr2[2]= 6
ARRCONCAT ($arr3, $arr1, $arr2) //соединяем в третий массив
//смотрим что вышло
FOR($a=0,$a<arrsize($arr3))
print($arr3[$a]) // в логе - 1, 2, 3, 4, 5, 6 .
END_CYC
halt
-
препроцессор срабатывает до запуска скрипта, сразу же после загрузки скрипта в кликер. Так и должно быть?)
-
препроцессор срабатывает до запуска скрипта, сразу же после загрузки скрипта в кликер. Так и должно быть?)
Думаю, что да... Он же как бы вставляет код в кликер, который в нем и должен быть по задумке...
Единственное, что я не понимаю, для чего нужно прописывать "halt":
#preprocessor "comas.dll"
halt
Ведь код из длл будет крутиться в кликере в цикле и для чего нужен этот halt, после #preprocessor "comas.dll", непонятно... А без halt-а полная хрень получается.
-
#preprocessor "script.dll"
HALT
Запускаю скрипт на хосте и все вроде работает. Запускаю этот же скрипт в виртуалке, из той же папки, и уже не работает... То есть - сам #preprocessor "script.dll" не срабатывает.
-
Фикса работы preprocessor-а в виртуалках ожидать...? Или заморочек по этому поводу не будет? Мне просто чтоб знать...
-
а что прямо все плохо-плохо?
что за виртуалка, какая там система. молчит ли errorlog
тогда и проблему мб удастся локализовать.
-
Сорри - завтра буду конкретно разбираться. Просто вот только что попробовал запихнуть в длл "Тестовый тест" и все сработало в виртуалке. Но закатываю в длл свой скрипт и на хосте работает все, а в виртуалке нет. В общем завтра буду более подробно копаться. Сегодня только с работы пришел... А так, при запуске в виртуалке, такое ощущение, что просто срабатывает HALT, который после #preprocessor "script.dll" стоит, чего в принципе никак быть не должно.
-
В общем ситуация такая... Прописываю в длл просто наш "Тестовый тест" и все норм срабатывает в виртуалке. Потом закатываю в длл свой скрипт в котором получается 1477 строк + файл sub.cms, в котором еще порядка 1800 строк и который подключен в основном скрипте, как - #include "sub.cms". После этого в виртуалке вся эта тема перестает работать и даже если, после запуска такого скрипта, откатить все на наш "Тестовый тест", то и он уже не работает и вновь заработает только после полной перезагрузки виртуальной машины. В общем хрень какая-то получается...
На хосте все нормально работает.
На тесты, по понятным причинам, не хочу тут выкладывать весь свой скрипт. Если кому-то интересно (из тех, кого я тут знаю), я могу все выложить в личку. Просто в том проекте, в котором я работаю, онлайн очень не большой и даже с моим приходом на этот проект, цены на нужный ресурс очень упали. Еще одного или пару таких, как я, на этот проект и на нем делать нечего будет... А если мой скрипт обнародовать в этом проекте, то он вообще загнется...
-
Johnny, отправил видео в личку.
Может все из-за того, что на виртуалке та папка, из которой скрипт запускается, является сетевой...? Но если скрипт не закатывать в длл, то все работает на виртуалке, а там, и работа с ини-файлами, и со скринами, и с текстовыми файлами, и опять же с длл-ками другими и все лежит в тех же папках и скрипт со всем справляется...
-
если файл не найден, включая преп, то выдается соответствующая ошибка. стало быть файл находится
если ошибка необрабатываемая, ошибка памяти или еще какая хрень, то должна быть запись в файле logerror
в другом случае надо смотреть сам скрипт
-
надо смотреть сам скрипт
Отправил в личку.
-
Тут еще один затык имеется...
Положим в папку со скриптом любой скрин, обозвав его "1.bmp", и запустим скрипт:
freaddata("1.bmp", $arr)
FCreate("2.bmp", 1)
FWRITEDATA ("2.bmp", $arr)
HALT
2.bmp создастся, но не станет таким же, как 1.bmp, а останется пустым. И останется таким до тех пор, пока мы не закроем полностью тот кликер, который его создавал. А вот если мы его закроем, а потом откроем заново и запустим скрипт:
freaddata("1.bmp", $arr)
FWRITEDATA ("2.bmp", $arr)
HALT
Тогда у нас все получится.
Эта фишка касается не только bmp-файлов - это касается любых файлов, созданных скриптом. После FCreate, при создании любого файла, с ним ничего нельзя будет сделать до тех пор, пока кликер, который его создавал, не будет закрыт. Ничего нельзя будет сделать не только скриптом, но и другими программами.
То есть, при создании любого файла с помощью FCreate, для того чтобы в дальнейшем работать с этим файлом, придется сначала закрыть кликер, который его создавал, и потом открыть другой.
Но и после:
freaddata("1.bmp", $arr)
FWRITEDATA ("2.bmp", $arr)
HALT
Мы не сможем даже удалить 2.bmp, пока не закроем кликер.
-
И еще вопрос... Ожидать реализации работы с ини-файлами, которые лежат в расшаренной папке, из запущенного скрипта, который лежит в виртуальной машине?
У меня, например, адрес получается такой - $n = INIREAD("Z:\Miner\ini\mir_4\group_1\min_01.ini", "chit", "1"), но LOGWRITE ($n) ничего не выдает...
А, к примеру, если запустить так:
if (FExists("Z:\Miner\ini\mir_4\group_1\min_01.ini"))
FCOPY ("Z:\Miner\ini\mir_4\group_1\min_01.ini", "C:\Clickermann v4.14 x32\projects\Miner\ini\mir_4\group_1\min_01.ini")
LOGWRITE ("Файл скопирован")
else
LOGWRITE ("Файл недоступен")
end_if
То выдает ошибку FCOPY. То есть файл-то доступен...
-
Забыл отписать...
что за виртуалка, какая там система. молчит ли errorlog
1 - VMware Workstation 15 Pro 15.0.3 Build 12422535 RePack by KpoJIuK
2 - Windows 7 x32
3 - logerror молчит
-
Windows 10 1809 Clickermann v4.14 x32
Вот такой код у меня пожирает примерно 100 килобайт оперативной памяти в секунду
SUB(TEST, $x, $y)
MOVE($x, $y)
END_SUB
TEST(0,0)
-
Windows 10 1809 Clickermann v4.14 x32
Вот такой код у меня пожирает примерно 100 килобайт оперативной памяти в секунду
SUB(TEST, $x, $y)
MOVE($x, $y)
END_SUB
TEST(0,0)
А такой вообще 3000к
SUB(qwert, $a)
END_SUB
qwert("Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст ")
-
У меня и без параметров пожирает по 100 :D
-
Windows 10 1809 Clickermann v4.14 x32
Вот такой код у меня пожирает примерно 100 килобайт оперативной памяти в секунду
SUB(TEST, $x, $y)
MOVE($x, $y)
END_SUB
TEST(0,0)
Естественно, практически пустой цикл. Так всегда было. Ещё и проц грузит на 25-30%.
Достаточно одной таблЭтки и память стабильна и проц 0.2%
SUB(TEST, $x, $y)
MOVE($x, $y)
WAITMS(5)
END_SUB
TEST(0,0)
Мы вызвали подпрограмму, создались локальные переменные, может ещё чего. Адрес возврата кинулся на стек. Возможно, создаётся новый объект.
Быстро закончили и сразу же опять вызываем. Что-то не успевает освобождаться (опять блокируется), в итоге, сборщик мусора не может уничтожить временные данные. Мы не даём ему время постоянно блокируя объект.
-
Достаточно одной таблЭтки и память стабильна и проц 0.2%
Нет. На версии 4.13 этот код
А такой вообще 3000к
SUB(qwert, $a)
END_SUB
qwert("Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст ")
не вызывает разрастание памяти процесса.
-
Почему же нет. 14 более оптимизированная, внутренне может работает быстрее и времени когда объект не заблокирован практически не остаётся. Не успевает оно его поймать для очистки в этот короткий промежуток времени.
Не проблема это вовсе, не делать пустых циклов и всё станет нормально.
WAITMS(3) можно поставить хоть в подпрограмму, хоть после её вызова - результат один.
Часто у всех в коде вызывается одна подпрограмма с практически пустыми внутренностями?
Как только внутри будет код побольше, который выполняется чуть дольше проблемы не должно быть.
Пусть посмотрит, конечно, я не против. Может скальпель внутри забыл, всякое бывает.
-
Заметил коекакую особенность, возможно это имеет какоето объяснение, но я пока не знаю как обойти:
Речь о версии 4.14.002 . FREADDATA после прочтения файла, както его блокирует для дальнейшего изменения или удаления.
Помогает лишь перезагрузка программы.
GETSCREEN
SCREENSHOTFIX(0,0, 10,10, "screen.bmp")
waitms(200)
FREADDATA ("screen.bmp", $arr_bmp)
//далее файл чемто занят, вручную не удалить, очистка массива не помогает. Удаление кликером не работает. Новый скрин с этим же именем выдает ошибку.
//только перезапуск кликермана дает результат :(
halt
-
Всех с Днем Программиста!
И в честь нашего праздника...
Patch 4.14.003b
https://yadi.sk/d/hPssEg8K76M9RQ
Исправлено почти все, что тут накопано, что-то добавлено, обновлена справка. Ковыряйтесь на здоровье
(https://lh6.googleusercontent.com/kdajyxcNJhC6wRWJK3j9nzx6cMQoVYue-FR3-ZBciP1BSVjSMK5-FIV44CvHVsmzpoLM-nJG44hyjGX6XVt2og9uS9Opk_iCQJfLpDwZ9GtI6wcEt7BD5ZWjBjGS-PhHY6eeQgLM)
-
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg (https://yadi.sk/d/zJPu59MW7-YROg)
-
А там ничего по дороге не потерялось?
Просто размер прыгнул с 2.8 до 1.9 Mb
-
А там ничего по дороге не потерялось?
А таки потерялось. STRWRITELN не работает. Другое не знаю. не пробовал.
-
А таки потерялось. STRWRITELN не работает. Другое не знаю. не пробовал.
Если файла нет, то создаёт и прописывает строку. Если файл уже есть - ошибка интерпретации. Даже если создавал он же.
Вот такой скрипт срабатывает один раз, пока файла нет
StrWriteln("out.txt", "Упс")
HALT
-
В редакторе, в левом меню "Команды"
Системные переменные;
Весь экран ($_xmin,$_ymin,$_ymax,$_ymax); $_xmin,$_ymin,$_ymax,$_ymax;
-
А таки потерялось. STRWRITELN не работает. Другое не знаю. не пробовал.
Если файла нет, то создаёт и прописывает строку. Если файл уже есть - ошибка интерпретации. Даже если создавал он же.
Вот такой скрипт срабатывает один раз, пока файла нет
StrWriteln("out.txt", "Упс")
HALT
Локализовали. Небольшие издержки оптимизации кода.
По поводу размера - веселимся с упаковщиком
-
По поводу размера - веселимся с упаковщиком
Так и подозревал. Опять Касперский начал агриться. Пришлось отключать, пока распаковал и в постоянную папку перенёс.
-
По поводу размера - веселимся с упаковщиком
Так и подозревал. Опять Касперский начал агриться. Пришлось отключать, пока распаковал и в постоянную папку перенёс.
О как. А ведь я через ВТ пропускаю каждый билд. Правда чисто один ехешник.
Хм, пока у нас проблемы только с чересчур параноидальным встроенным в десятку дефендером вроде были.
-
Вот этот тип (см. скрин) сразу в хранилище кидает.
Не разбираюсь в версиях Касперского, т.к. дома не использую.
-
AVAST сегодня тоже в хранилище кинул кликермана.ехе Хотя вчера норм было)
-
Говно!)
Вообще понятно (но не всем далеко), что там претензии уровня "чет подозрительна".
Но как то же дрВеб с Каспером держат себя в руках. Остальным ноунеймам что не нравится?
Собсно вот отчет с ВТ для последнего билда https://www.virustotal.com/gui/file/a4050c520b54e6b6d5375ab75c8aaaefe58809b812b12ebf3e527407290f81fb/detection
Хз. Поиграемся с настройками пакера.
-
А таки потерялось. STRWRITELN не работает. Другое не знаю. не пробовал.
Если файла нет, то создаёт и прописывает строку. Если файл уже есть - ошибка интерпретации. Даже если создавал он же.
Вот такой скрипт срабатывает один раз, пока файла нет
StrWriteln("out.txt", "Упс")
HALT
Локализовали. Небольшие издержки оптимизации кода.
По поводу размера - веселимся с упаковщиком
А где качать исправленную версию? Или ее еще нет?
-
Да на релизе выкатим. Проблема действительно в этой вот одной единственной функции, которая к слову считается устаревшей после ввода серии tf...
Все остальное должно работать. Но время у тестеров есть. Я не тороплюсь)
-
Проблема действительно в этой вот одной единственной функции, которая к слову считается устаревшей после ввода серии tf...
Единственным плюсом функции STRWRITELN является наличие флага перезаписи. Стоит добавить такой флаг в функцию TFWRITE и всю серию STR… можно похерить. Хотя, серия STR… работает быстрее TF… на пару микросекунд :)
-
Предлагаю реализовать, чтобы в скрипте можно было получить список запущенных окон.
-
Предлагаю из плагина возвращать не 1 число, а массив целых чисел.
-
Верните плиз старый COLORMODE...
-
Верните плиз старый COLORMODE...
А что с ним не так? Он не изменился, или ты про колормод лупы?
-
Верните плиз старый COLORMODE...
А что с ним не так? Он не изменился, или ты про колормод лупы?
В смысле - не изменился...? Раньше он вроде быд девяти-уровневым и работал по-другому. А теперь он 30+ уровней имеет и не справляется с задачей так, как справлялся тот, что был раньше.
-
В смысле - не изменился...? Раньше он вроде быд девяти-уровневым и работал по-другому. А теперь он 30+ уровней имеет и не справляется с задачей так, как справлялся тот, что был раньше.
Вроде? COLORMODE не изменился, добавилась новая цветокоррекция CONTRAST
какие 30 уровней, прочти справку для начала...
CONTRAST
Применяет цветокоррекцию к текущему снимку экрана.
Синтаксис
CONTRAST (value, [x1, y1, x2, y2] )
Параметры
value - число от 1 до 9, соответствующее степени контраста
x1, y1, x2, y2 - область снимка экрана, к которой будет применена коррекция
Описание
Процедура изменяет текущий снимок экрана, увеличивая контрастность и уменьшая количество полутонов. В основной справке есть статья посвещенная цветокоррекции.
Есть возможность указать область для применения фильтра. Быстродействие обратно пропорционально размеру области. Вызов CONTRAST(0) не имеет смысла, вызов CONTRAST(9) сделает снимок черно-белым. В отличие от COLORMODE для получения корректного результата необходимо применять процедуру только к неизмененным снимкам.
-
прочти справку для начала...
Прошу прощения...
-
Предлагаю константы дополнить значениями lParam для PS/2 клавиатуры.
Значения сняты с помощью программы Microsoft Spy++ 11. В конце файла в комментарии есть примеры нажать/отпустить F1, нажать/отпустить Alt+F1. И справку дополнить бы не мешало.
-
Предлагаю константы дополнить значениями lParam для PS/2 клавиатуры.
Значения сняты с помощью программы Microsoft Spy++ 11. В конце файла в комментарии есть примеры нажать/отпустить F1, нажать/отпустить Alt+F1. И справку дополнить бы не мешало.
А можно чуток разжевать плиз... Что значит - "Значения сняты с помощью программы Microsoft Spy++ 11."? Ну, это не предъява ) Это просто мне - дураку...)
-
В разделе SPY выставляешь что смотреть (окна, процессы, потоки). Смотрим процессы. Правой кнопкой мыши выбираешь процесс. Нажимаешь Message, получаешь лог сообщений. В опциях лога выбираешь какие сообщения тебе нужны(клава, мышь и тд). Переходишь в изучаемый процесс. Жмешь клавиши. В логе все сообщения получаемые процессом отражаются. На каждое сообщение можно посмотреть properties.
Для примера. Фильтр сообщений - Клава. Нажал F2.
В логе 2 сообщения:
Нажал F2
(Хендл окна. Сообщение 0100(не системно нажал). wParam(код F2). lParam(003C0001))
Отпустил F2
(Хендл окна. Сообщение 0101(не системно отпустил). wParam(код F2). lParam(C03C0001))
Тут можно почитать, как кодируется lParam(если не правильно, комбинация Alt+клавиша не пройдет)
http://decoding.dax.ru/practic/altcode/altcode.html
зы Посылка сообщений не является аналогом PS/2 режима. Т.е. если защита агрится на посылку сообщений о нажатии клавиши, то работать не будет, или выкинет из проги, или бан, или искать в защите слабое место, патчить его и радоваться жизни.
-
Ну, вот теперь сразу все ясно стало... ;D
-
Всех с Днем Программиста!
И в честь нашего праздника...
Patch 4.14.003b
https://yadi.sk/d/hPssEg8K76M9RQ
Исправлено почти все, что тут накопано, что-то добавлено, обновлена справка. Ковыряйтесь на здоровье
(https://lh6.googleusercontent.com/kdajyxcNJhC6wRWJK3j9nzx6cMQoVYue-FR3-ZBciP1BSVjSMK5-FIV44CvHVsmzpoLM-nJG44hyjGX6XVt2og9uS9Opk_iCQJfLpDwZ9GtI6wcEt7BD5ZWjBjGS-PhHY6eeQgLM)
Johnny спасибо! И тебя! :D
-
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg (https://yadi.sk/d/zJPu59MW7-YROg)
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть
-
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg (https://yadi.sk/d/zJPu59MW7-YROg)
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть
Вероятно редактор появляется за экраном. Хотя, в той сборке что я выложил, такого быть не должно.
Я специально в файле \data\config_editor.ini указал координаты окна 100 100. Именно там должно появляться окно.
left =100
top =100
-
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg (https://yadi.sk/d/zJPu59MW7-YROg)
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть
Вероятно редактор появляется за экраном. Хотя, в той сборке что я выложил, такого быть не должно.
Я специально в файле \data\config_editor.ini указал координаты окна 100 100. Именно там должно появляться окно.
left =100
top =100
каким то образом авто заменяется файл \data\config_editor.ini , и не открывается редактор. приходится из архива каждый раз его доставать. такая ситуация происходит при сворачивании кликера в трей.
-
С помощью препроцессора вполне возможно сделать хоть и немного кривые, но функции.
С локальными переменными и возвращаемыми значениями.
s = `
sub(ar, $i, $j)
$ret = $arr[$i+10*$j+11]
end_sub
ar(1, 2)
$v1 = ar(1, ar(2, sin(3))))
$v2 = sin(ar(2, sin(3)))
$v3 = ar(ar(1, 2), ar(3, 4))
`;
a = s.split('\n');
b = [];
localvars = new Map();
subname = ''
subnames = new Set();
// todo: make both 'SUB' and 'sub' support
a = a.map(s=>{
if (s.startsWith('sub(')) {
subname = s.match(/\(\s*(\w+)/)[1];
subnames.add(subname);
localvars = new Map();
localvars.set('$ret', '$_' + subname + '_ret');
return s.replace(/\$\w+/g, s=>{
localvars.set(s, '$_' + subname + '_' + localvars.size);
return localvars.get(s);
}
);
}
if (s.startsWith('end_sub')) {
localvars = new Map();
return s;
}
return s.replace(/\$\w+/g, s=>{
return localvars.get(s) || s;
}
);
}
)
a2 = [];
tempn = 0;
for (let s of a) {
if (s.match(/^\s*(sub|for|while|do|if)\s*\(/)) {
a2.push(s);
continue;
}
let ws = s.match(/^\s*/)[0];
// todo: make "(" string support
let temps = []
for (let i = 0; i < 10; i++) {
s = s.replace(/(\w+)\([^()]*\)/, (s, fname) => {
let tempname = '$_temp_' + (++tempn)
let o = {type: 'call', s, fname, n: tempn, tempname};
o.id = temps.push(o);
return tempname;
})
}
let inlines = new Map();
for (let o of temps) {
for (let i = 0; i < 10; i++) {
o.s = o.s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
}
if (subnames.has(o.fname)) {
a2.push(ws + o.s);
a2.push(ws + o.tempname + ' = $_' + o.fname + '_ret');
} else {
inlines.set(o.tempname, o.s)
}
}
for (let i = 0; i < 10; i++) {
s = s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
}
a2.push(s);
}
s = a2.join('\n')
console.log('%o', s);
Из
sub(ar, $i, $j)
$ret = $arr[$i+10*$j+11]
end_sub
ar(1, 2)
$v1 = ar(1, ar(2, sin(3))))
$v2 = sin(ar(2, sin(3)))
$v3 = ar(ar(1, 2), ar(3, 4))
генерирует
sub(ar, $_ar_1, $_ar_2)
$_ar_ret = $arr[$_ar_1+10*$_ar_2+11]
end_sub
ar(1, 2)
$_temp_1 = $_ar_ret
$_temp_1
ar(2, sin(3))
$_temp_3 = $_ar_ret
ar(1, $_temp_3)
$_temp_4 = $_ar_ret
$v1 = $_temp_4)
ar(2, sin(3))
$_temp_6 = $_ar_ret
$v2 = sin($_temp_6)
ar(1, 2)
$_temp_8 = $_ar_ret
ar(3, 4)
$_temp_9 = $_ar_ret
ar($_temp_8, $_temp_9)
$_temp_10 = $_ar_ret
$v3 = $_temp_10
Если кто может перевести в dll (сам на подходящих языках плохо пишу), пожалуйста скомпилируйте.
-
А какая именно функция должна быть в длл? Я так понимаю "ar", типа вот эта :
....
$ret = $arr[$i+10*$j+11]
....
Но кроме двух параметров $i и $j у нас же еще есть некий массив $arr. В последней версии длл вроде принимает массивы, не пробовал использовать в длл пока. В таком случае нужно параметры $i и $j добавить в массив. Можно в начало, можно в конец.
из справки:
Однако необходимо помнить, что массив должен содержать только целочисленные значения, иначе будет ошибка.
А у тебя sin(3) = 0.052 = 0
Если нужно именно так как ты написал, то можно и дробные пересылать в длл, но перед этим их нужно перевести целочисленные http://crapware.aidf.org/forum/index.php?topic=5212.0 , ну или както попроще.
Вобщем, для начала, вот простенький пример твоей функции на делфи7, работает только с целочисленными.
Код делфи:
library test;
uses
SysUtils;
//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( _mas: pInteger; _size: Integer): Integer; export; stdcall;
type
pIntArr = array[0..0] of Integer;
var
i, j : Integer;
begin
// _mas - указатель на начало массива параметров integer
// _size - размер массива (число параметров)
i := pIntArr(_mas^)[_size-2]; //наши два параметра
j := pIntArr(_mas^)[_size-1];
result := pIntArr(_mas^)[i + 10*j + 11]; // присваиваем возвращаемое значение
end;
//------------------------------------------------------------------------------
// список экспорта
exports execute;
begin
// тело пусто
end.
Тестовый код, для проверки в кликере, версия 4.14.003 (x32):
FOR($a=0,$a<200) //создаем рандомный массив со значениями от 0 до 9. 200 элементов
ARRPUSH ($arr, rnd(0,9))
END_CYC
$i = 1
$j = 2
ARRPUSH ($arr, $i) //добавляем в конец наши параметры
ARRPUSH ($arr, $j)
print("результат расчитанный кликером = ", $arr[$i+10*$j+11])
callarr("test.dll", $arr)
print("результат расчитанный dll = ",$_return1)
halt
Результаты расчетов кликера и длл совпадают.
(https://i.imgur.com/1WwK58X.png)
Во вложении "test.dll"
-
Вот тот мой препроцессор (работает только в браузере): https://output.jsbin.com/rafaqey ( код - https://jsbin.com/rafaqey/edit?js,output )
А вот что оно делает (там этот же пример)
#preprocessor "please_make_this_dll.dll" #preprocessor "please_make_this_dll.dll"
// пример // пример
// локальные переменные $x и $y - имена поменять // локальные переменные $x и $y - имена поменять
sub(fn1, $x, $y) sub(fn1, $_fn1_1, $_fn1_2)
// возвращаемое значение - имя поменять // возвращаемое значение - имя поменять
$ret = $x * $x + $y * $y $_fn1_ret = $_fn1_1 * $_fn1_1 + $_fn1_2 * $_fn1_2
end_sub end_sub
for ($x = 0, $x < 5) for ($x = 0, $x < 5)
for ($y = 0, $y < 5) for ($y = 0, $y < 5)
// вызов функции - сохранить возвращаемое // вызов функции - сохранить возвращаемое
// значение во временную переменную // значение во временную переменную
$s = $s + fn1($x, $y) fn1($x, $y)
end_cyc $_temp_1 = $_fn1_ret
end_cyc $s = $s + $_temp_1
end_cyc
end_cyc
// пример 2 // пример 2
sub(fn2, $i) sub(fn2, $_fn2_1)
// возвращаемой значение - имя всегда $ret // возвращаемой значение - имя всегда $_fn2_ret
$ret = $i * ($i + 1) $_fn2_ret = $_fn2_1 * ($_fn2_1 + 1)
end_sub end_sub
// развёртка функций должна поддерживать // развёртка функций должна поддерживать
// многократную вложенность // многократную вложенность
$v1 = fn2(1) + fn2(fn2(fn2(fn2(1)))) fn2(1)
$_temp_1 = $_fn2_ret
// встроенные функции не должны развёртываться fn2(1)
$v2 = fn2(cos(sin(fn2(1)))) $_temp_2 = $_fn2_ret
fn2($_temp_2)
$_temp_3 = $_fn2_ret
fn2($_temp_3)
$_temp_4 = $_fn2_ret
fn2($_temp_4)
$_temp_5 = $_fn2_ret
$v1 = $_temp_1 + $_temp_5
// встроенные функции не должны развёртываться
fn2(1)
$_temp_6 = $_fn2_ret
fn2(cos(sin($_temp_6)))
$_temp_9 = $_fn2_ret
$v2 = $_temp_9
-
Win7 x64 SP1, 4.14.03 (пробовал так же .02, от .01 нашёл только анонс с чейнджлистом, но не нашёл самих файлов) при запуске сразу пишет в errorlog.txt:
01.02.2021 01:56:56 Access violation at address 0063C4FE in module 'Clickermann.exe'. Read of address 00000000
и затем после открытия редактора - циклически:
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:04 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:04 Access violation at address 00000000. Read of address 00000000
при этом нельзя передвинуть окно редактора и нельзя передвинуть открытое окно лога - они "прыгают" назад туда, где изначально появились. после попытки запустить скрипт - пропадает кнопка запуска, в логе снова access violation уже с ненулевыми оффсетами, скрипт не запускается. это у меня что-то? 4.13.х из того же места работают без эксцессов.
а чё, собственно, полез в бету: Clickermann любой версии, включая последнюю релизную 4.13, выдаёт неверный unix timestamp в $_time_t, а именно - смещает его соответственно установленному в системе часовому поясу. так быть не должно, поскольку это число - абсолютный отсчёт секунд от.. ну вы в курсе, и в любой момент в любой точке мира одинаков.
в последней 4.14, судя по тому что поиск по форуму "$_time_t" никаких подобных комплейнов не нашёл - наверное, так же, проверить, вот, не удалось.
-
Win7 x64 SP1, 4.14.03 (пробовал так же .02, от .01 нашёл только анонс с чейнджлистом, но не нашёл самих файлов) при запуске сразу пишет в errorlog.txt:
01.02.2021 01:56:56 Access violation at address 0063C4FE in module 'Clickermann.exe'. Read of address 00000000
Я это ловил ещё на 4.13
http://crapware.aidf.org/forum/index.php?topic=4295.msg29320#msg29320
Потом она пропала и больше я её не видел, соответственно не разбирался.
Предполагаю, мог быть виноват каспер, но это не точно. Винда 10 точно не причина, т.к. тогда на работе стояла XP.
А вот $_time_t очень давно я проверял, всё было нормально. Сейчас проверил. Все и 4.14 и 4.13 и 4.11 и 4.8 и 4.6 (пропускал версии чтоб быстрее найти) выдают это вот сдвинутое на таймзону. Вот здесь не скажу кто виноват. Но давно, когда проверял ещё на XP было всё нормально, думаю версия была 4.8 и 4.11
-
А вот $_time_t очень давно я проверял, всё было нормально. Сейчас проверил. Все и 4.14 и 4.13 и 4.11 и 4.8 и 4.6 (пропускал версии чтоб быстрее найти) выдают это вот сдвинутое на таймзону. Вот здесь не скажу кто виноват. Но давно, когда проверял ещё на XP было всё нормально, думаю версия была 4.8 и 4.11
да вот и мне кажется (но это неточно), что 2-3 года назад я опирался в скрипте на абсолютное значение $_time_t, чтоб определённые фрагменты отрабатывали только в рамках установленного отрезка времени, и всё работало как надо. с той поры не изменилось ничего - тот же ноут, та же винда, даже та же версия clickermann, изменился почему-то только сам $_time_t :o
-
Может всё таки десятка виновата? Она же пережила много обновлений включая глобальные.
Вот, я уже давал ссылку на статью, где обсуждается их изменение с временем
http://crapware.aidf.org/forum/index.php?topic=5437.msg35928#msg35928
Может и с Unix временем есть несколько функций. Одна учитывает таймзону, другая нет. Или это параметры одной функции.
-
Может всё таки десятка виновата?
у меня семёрка, и апдейты были выключены раньше чем кликерманн впервые на ней появился.
разве что оно использует какие-то дот-неты и иже с ними, которые ставятся отдельно и в принципе вероятность их обновления есть - я точно уже не вспомню.
если мне не изменяет память и $_time_t я раньше ↑↑ юзал без эксцессов - то это было на этом же бинаре, который сейчас, я его 100 лет не менял со времён какой-то нормально работающей беты 4.13, даже не релиза ещё.
больше похоже на костыль в функции (который, кстати, может быть в том на чём он написан, а не в самом кликере), высчитывающей unix ts, который раньше срабатывал, а теперь больше нет.
Может и с Unix временем есть несколько функций. Одна учитывает таймзону, другая нет. Или это параметры одной функции.
unix время и tz - это взаимоисключающие параграфы, не думаю что есть такая функция, ибо она бессмысленна.
-
Clickermann_414003b.exe
Windows 10 PRO не срабатывает команда HTTPGet
errorlog.txt 08.04.2021 20:31:52 HTTPGet Error (https://ya.ru (https://ya.ru))
$str = httpget("https://ya.ru")
print($str)
и так вот как я решил проблему:
User agent с которого поступает запрос Mozilla/3.0 (compatible)
Соответственно если этого недостаточно то можно принимать запрос на своём сервере и перенаправлять его с заданным User agent
$str = httpget("http://1jf.ru/")
print($str)
-
Windows 10 PRO не срабатывает команда HTTPGet
errorlog.txt 08.04.2021 20:31:52 HTTPGet Error (https://ya.ru (https://ya.ru))
$str = httpget("https://ya.ru")
print($str)
и так вот как я решил проблему:
User agent с которого поступает запрос Mozilla/3.0 (compatible)
Соответственно если этого недостаточно то можно принимать запрос на своём сервере и перенаправлять его с заданным User agent
Проблема в том, что https изначально не поддерживается. Для поддержки нужно скачать две dll-ки
http://crapware.aidf.org/forum/index.php?topic=356.msg26057#msg26057
Ты даже с темой угадал, ответ как раз здесь был :)
А ну и несмотря на заявленную передачу дополнительных заголовков запроса, они не передаются. Я не смог добиться уже давно.
По идее передавать нужно так:
$URL = "https://ya.ru"
$UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0"
LOGWRITE (HTTPGET($URL, $UserAgent)
но User-Agent не передаётся.
Проверял на "http://httpbin.org/headers" или "http://httpbin.org/user-agent"
-
Добрый день! Извесна проблема, что в некоторых приложениях при привязке к окну getscreen делает снимок черный квадрат, без привязки все хорошго каринка как видит глаз?
-
Через FReadData можно прочитать картинку bmp и сохранить массивом в памяти.
Как потом использовать этот массив в функциях If_picture_in или ScanPicture?
А то иногда приходится сравнивать экран с несколькими образцами, и если это в цикле, то каждая итерация гоняет чтение картинок с диска.
-
Через FReadData можно прочитать картинку bmp и сохранить массивом в памяти.
Как потом использовать этот массив в функциях If_picture_in или ScanPicture?
Никак. Функции поиска не принимают ни массивы ни указатели, только путь к файлу.
А то иногда приходится сравнивать экран с несколькими образцами, и если это в цикле, то каждая итерация гоняет чтение картинок с диска.
Может и гоняет, я не проверял. А возможно там кэшируется и объект не удаляется. В любом случае, для меня не критично.