Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Lol on June 11, 2015, 10:00:34 AM
-
Есть ли какой-то способ после записи скрипта увеличить скорость его воспроизведения? Каждый параметр waitms(8) редактировать в ручную не вариант. Надо просто иметь какой-то общий коэффициент/ползунок или что-то еще. Справку разглядывала, ничего не нашла.
-
Каждый параметр waitms(8) редактировать в ручную не вариант.
Сликкермэн это средство автоматизации, поэтому делать кучу однотипных действий не нужно.
Даже если такого средства изменения нет, его можно сделать через код.
Вот такой скрипт кладётся рядом с изменяемым.
в $name = "Record1.cms" прописываем имя изменяемого файла.
в $w = 0.25 множитель на который умножим все задержки WAITMS
Скрипт умножит все задержки больше 5 на множитель.
//Скрипт замениы паузы по записанному скрипту
#name "Change wait v 0.0.2"
// Author: Vint
// Version: 0.0.2 (18.06.2014)
// for Clickermann 4.10
$name = "Record1.cms" // имя файла
$w = 0.25 // множитель задержки, можно дробный
$count = TFCOUNT($name)
for($num=0, $num < $count)
$kr = ($num+1)/100
IF(INT($kr) - $kr = 0)
LOGWRITE ("Обработка строки ", $num+1)
END_IF
$str = TFRead($name, $num+1)
IF STRLEN($str) > 8
IF(STRPOS($str, "waitms") > 0)
$old = INT(STRCUT2($str, STRPOS($str, "(")+1, STRPOS($str, ")")-1))
TFDELETE($name, $num+1)
WAITMS(10)
//TFWRITE($name, STRCONCAT("WAITMS(", $old + $w, ")"), $num+1)
IF($old > 5)
$new = INT($old*$w)
ELSE
$new = $old
END_IF
TFWRITE($name, STRCONCAT("WAITMS(", $new, ")"), $num+1)
WAITMS(10)
END_IF
END_IF
END_CYC
HALT
-
А если я хочу текущий скрипт без сохранения файла ускорить, то что мне нужно изменить в вышеприведенном скрипте?
-
Без сохранения никак. Но неужели сохранить сложно?
-
После записи только с редактированием, хотя бы однократным.
Если можно запустить скрипт только 1 раз для достижения цели, а там цикл, надо все длительности ожиданий заменить на просто переменную WAITMS($waitx), которую вначале объявить равной, например, 50 (мс) или и с числом множителем, где нужно ожидание во сколько-нибудь раз меньше или больше этого. Для изменения её в процессе работы, вставить регулярные проверки, нажата ли клавиша, и назначить увеличение или уменьшение этой переменной, например, на "+" $waitx=$waitx+10, а на "-" $waitx=$waitx-10 (но не меньше 0).
Если много раз, то придётся дополнительно в конце скрипта в ini файл сохранять, чему там было в последний раз равно $waitx и читать его оттуда в начале скрипта при следующем его запуске. Как-то так.
-
Это дебри. Большинство не справится с этим. Человек только запись юзает.
-
самое тривиальное решение это записанный код пропустить через какой нить текстовый редактор автозаменяя waitms( на waitms($k*
Вначале скрипта объявляете этот самый $k = 1.0 и играетесь
-
самое тривиальное решение это записанный код пропустить через какой нить текстовый редактор автозаменяя waitms( на waitms($k*
Вначале скрипта объявляете этот самый $k = 1.0 и играетесь
Всё бы хорошо, но не катит. Стал бы я скрипт писать, если бы было всё так просто.
Дело в том что увеличить задержки так, легко, а вот уменьшение некорректно.
Если получится дробное число, то всё... WAITMS не понимает дробных чисел.
LOGCLEAR
WAIT(1)
$time = $_ms
WAITMS(0.5*502)
LOGWRITE ("Время выполнения: ", $_ms-$time, " ms")
$time = $_ms
WAITMS(0.5*501)
LOGWRITE ("Время выполнения: ", $_ms-$time, " ms")
HALT
Лог:
17:44:07 Время выполнения: 251 ms
17:44:07 Время выполнения: 0 ms
Тем более я сделал минимальный неизменяемый порог, чтобы маленькие задержки не исчезали совсем.
Например при ускорении в 4 раза 0.25 всё что меньше 20 мс превратится в пшик, что может вызвать проблемы.
-
Добавлю свой код на php (вдруг покажется кому-то удобнее)
<?php
$source = file("source.cms"); // Исходный файл
$factor = 1.5; // Множитель
$output = "";
foreach($source as $line)
{
$line = trim($line);
if(preg_match("/^waitms\(([\d]+(|\.[\d]+))\)$/", $line, $matches))
{
$output .= "waitms(" . intval($matches[1] * $factor) . ")\r\n";
}
else
{
$output .= "{$line}\r\n";
}
}
file_put_contents("output.cms", $output);
?>
А так, все уже итак расписали подробно ребята выше.
-
Я сам написал, сам и поправлю.
Можно заменять на WAIT($K* и множителем перевести в миллисекунды, тогда всё нормально.
LOGCLEAR
WAIT(1)
$K = 0.0005
$time = $_ms
WAIT($K*502)
LOGWRITE ("Время выполнения: ", $_ms-$time, " ms")
$time = $_ms
WAIT($K*501)
LOGWRITE ("Время выполнения: ", $_ms-$time, " ms")
HALT