Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Lol on June 11, 2015, 10:00:34 AM

Title: Скорость воспроизведения
Post by: Lol on June 11, 2015, 10:00:34 AM
Есть ли какой-то способ после записи скрипта увеличить скорость его воспроизведения? Каждый параметр waitms(8) редактировать в ручную не вариант. Надо просто иметь какой-то общий коэффициент/ползунок или что-то еще. Справку разглядывала, ничего не нашла.
Title: Re: Скорость воспроизведения
Post by: Vint on June 11, 2015, 11:27:05 AM
Каждый параметр waitms(8) редактировать в ручную не вариант.

Сликкермэн это средство автоматизации, поэтому делать кучу однотипных действий не нужно.
Даже если такого средства изменения нет, его можно сделать через код.

Вот такой скрипт кладётся рядом с изменяемым.
в $name = "Record1.cms"   прописываем имя изменяемого файла.
в $w = 0.25   множитель на который умножим все задержки WAITMS
Скрипт умножит все задержки больше 5 на множитель.

Code: (clickermann) [Select]
//Скрипт замениы паузы по записанному скрипту
#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
Title: Re: Скорость воспроизведения
Post by: Lol on June 15, 2015, 01:18:40 PM
А если я хочу текущий скрипт без сохранения файла ускорить, то что мне нужно изменить в вышеприведенном скрипте?
Title: Re: Скорость воспроизведения
Post by: Vint on June 15, 2015, 02:05:05 PM
Без сохранения никак. Но неужели сохранить сложно?
Title: Re: Скорость воспроизведения
Post by: 123 on June 18, 2015, 11:52:39 AM
После записи только с редактированием, хотя бы однократным.
Если можно запустить скрипт только 1 раз для достижения цели, а там цикл, надо все длительности ожиданий заменить на просто переменную WAITMS($waitx), которую вначале объявить равной, например, 50 (мс) или и с числом множителем, где нужно ожидание во сколько-нибудь раз меньше или больше этого. Для изменения её в процессе работы, вставить регулярные проверки, нажата ли клавиша, и назначить увеличение или уменьшение этой переменной, например, на "+" $waitx=$waitx+10, а на "-"  $waitx=$waitx-10 (но не меньше 0).
Если много раз, то придётся дополнительно в конце скрипта в ini файл сохранять, чему там было в последний раз равно $waitx и читать его оттуда в начале скрипта при следующем его запуске. Как-то так.
Title: Re: Скорость воспроизведения
Post by: Vint on June 18, 2015, 01:16:24 PM
Это дебри. Большинство не справится с этим. Человек только запись юзает.
Title: Re: Скорость воспроизведения
Post by: Johnny on June 19, 2015, 12:31:53 PM
самое тривиальное решение это записанный код пропустить через какой нить текстовый редактор автозаменяя waitms( на waitms($k*
Вначале скрипта объявляете этот самый $k = 1.0 и играетесь
Title: Re: Скорость воспроизведения
Post by: Vint on June 19, 2015, 05:44:24 PM
самое тривиальное решение это записанный код пропустить через какой нить текстовый редактор автозаменяя waitms( на waitms($k*
Вначале скрипта объявляете этот самый $k = 1.0 и играетесь

Всё бы хорошо, но не катит. Стал бы я скрипт писать, если бы было всё так просто.
Дело в том что увеличить задержки так, легко, а вот уменьшение некорректно.
Если  получится дробное число, то всё... WAITMS не понимает дробных чисел.
Code: (clickermann) [Select]
LOGCLEAR
WAIT(1)

$time = $_ms
WAITMS(0.5*502)
LOGWRITE ("Время выполнения: ", $_ms-$time, " ms")

$time = $_ms
WAITMS(0.5*501)
LOGWRITE ("Время выполнения: ", $_ms-$time, " ms")
HALT

Лог:
Code: [Select]
17:44:07 Время выполнения: 251 ms
17:44:07 Время выполнения: 0 ms

Тем более я сделал минимальный неизменяемый порог, чтобы маленькие задержки не исчезали совсем.
Например при ускорении в 4 раза 0.25 всё что меньше 20 мс превратится в пшик, что может вызвать проблемы.
Title: Re: Скорость воспроизведения
Post by: security on June 25, 2015, 04:06:42 PM
Добавлю свой код на php (вдруг покажется кому-то удобнее)

Code: [Select]
<?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);

?>

А так, все уже итак расписали подробно ребята выше.
Title: Re: Скорость воспроизведения
Post by: Vint on June 25, 2015, 04:21:58 PM
Я сам написал, сам и поправлю.
Можно заменять на WAIT($K*  и множителем перевести в миллисекунды, тогда всё нормально.
Code: (clickermann) [Select]
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