Show Posts

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


Messages - tmp~1

Pages: [1] 2 3
1
Code: (clickermann) [Select]
INC($n,1)
KEYSTRING($n)
WAITMS(50)
KEYPRESS(#ENTER)
WAITMS(50)
KEYPRESS(#F6)
WAITMS(50)
KEYPRESS(#BACKSPACE)
WAITMS(50)

Хы) Раз уж на то пошло, тогда так...
Code: (clickermann) [Select]
INC($n)
KEYSTRING($n)
WAITMS(50)
KEYPRESS(#ENTER)
WAITMS(50)
KEYPRESS(#F6)
WAITMS(50)
KEYPRESS(#BACKSPACE)
WAITMS(50)

Но все равно неправильно работает.
Тест в Блокноте:

2
Общие вопросы / Re: Виртуальная машина
« on: October 14, 2017, 03:20:34 PM »
Для игр обычно лучше других ВМ подходит VMware Workstation.
Только что попробовал на нее поставить последнюю версию BlueStacks. Встала без проблем.

4
Общие вопросы / Re: Помогите новичку
« on: October 01, 2017, 11:28:24 PM »
...
И всё это вместо того, чтоб просто нажать и отпустить клавишу?
...

Так просто возьми и напиши человеку как это можно сделать, если знаешь. В чем проблема?

5
Общие вопросы / Re: Помогите новичку
« on: October 01, 2017, 10:41:28 PM »
Привет. Мне надо сделать так, чтобы вместо одного нажатия пкм, я мог ее зажать и был повтор кликов нное кол-во раз в секунду  до тех пор пока я не отпущу клавишу.

Привет. Тебе нужно просто напросто переназначить клавиши. Для этого есть специальные программы. Например - Key Remapper, или его более продвинутый вариант Key Manager. Он позволяет переназначить клавиши мыши и клавиатуры, как для всей системы, так и для конкретных приложений, а так же совсем их отключить. Таких программ можно найти много, как платных, так и бесплатных.
Для твоей задачи потребуется поменять назначение ПКМ на клавиатурную клавишу. И написать несложный скрипт на Clickermann. В целевом окне, в которое нужно кликать, эта клавиатурная клавиша, по умолчанию, не должна выполнять никаких действий.
Например - заменим нажатие ПКМ клавишей F4 (код    115).
Теперь можно зажать ПКМ, а целевое окно получит нажатие F4 (т.е. пустышку), а для Clickermann ПКМ будет не нажата.
Зато Clickermann увидит нажатие клавиши с кодом 115 и по этому сигналу пошлет окну клики ПКМ.
Чтобы это работало, возможно потребуется включить в скрипте режим ps2.

:( Очень жаль, что Clickermann сам не умеет пока менять назначение клавиш, очень бы пригодилось. :(

6
Arrpop должна всегда возвращать значение в переменную, иначе не работает.
Джонни объяснял, что это нормально для функции, но я такого прикола не понял. Обычно функциям плевать куда мы возвращаем значения, хоть в переменную, хоть в поток вывода, хоть в никуда. Как это может влиять на извлечение переменной мне непонятно. Но запомнил и применяю так, как задумал автор.

Спасибо  :)

7

Странно вот что. Если возвращать из ARRPOP() в переменную - $tmp = ARRPOP($arr), то код перестает работать как задумано. :(


дело тут совсем не в ARRPOP(). он всегда работал и работает как задумывалось.

тут дело в неправильном условии цикла for. ($i>ARRSIZE($arr)-($count+1)) - а никто не заметил, что количество элементов массива постоянно уменьшается? нужно ведь отталкивакться от первоначального значения количества элементов. в данном случае это $a. правильно - ($i>$a-($count+1))

Спасибо. :) Еще раз убеждаюсь что КМ не ошибается, а ошибается сам пользователь. Условие проверить я почему-то не посчитал нужным, несогласен был только с записью ARRPOP(). Вечером попробую всё это осмыслить..., сейчас нет времени.

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

Ну хорошо, вернемся к оригинальному вопросу.  :) И попробуем ответить снова. Поехали..

День добрый.

Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция = ($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)) от координаты $x_ishodnoe

Вручную везде по тексту вводить конструкции типа
ldown($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_gr+INT(($y_ishodnoe-$y_gr)*$y_peresch))

или
if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

- просто замучаешься. Наверняка есть возможность задания подобных функций, чтобы можно было сокращать до примерно
ldown(функция($x_ishodnoe),функция($y_ishodnoe))
Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...

День добрый. :)
Уважаемый gsukhado, к сожалению, на данный момент, Clickermann не обладает подобным функционалом, а именно - создание пользовательских функций, ввиду их невостребованности целевой аудиторией.
Если Вам необходима консультация специалистов по оптимизации Вашего кода, то пожалуйста выложите Ваш код здесь, на форуме, в этой теме, вместе с подробным описанием того, что он должен делать. Как показывает практика, ЭТО ЛУЧШИЙ СПОСОБ для уменьшения размера исходного кода и исправления ошибок в алгоритме (обычно, код "худеет" в несколько раз(!)).
Если Вам такой вариант не подходит, то пожалуйста, обратите Ваше внимание на следующие рекомендации. Рассмотрим пример кода из Вашего сообщения...



На изображении, для наглядности, строка разбита на несколько строк, и одинаковые куски кода выделены красным цветом.
Картинка наглядно показывает, что Ваш КОД НАПИСАН НЕ ВЕРНО. Так блин никто не делает!!! Так писать не правильно!!! Прётесь тут на... (тут вставляем отборную брань). Исправьте ОШИБКИ В НАПИСАНИИ Вашего код и проблемы с "сокращением" кода отпадут сами собой!!! (приветливо улыбаемся)

Рекомендуемый вариант оптимизации:
Code: (clickermann) [Select]
// Строка для примера:
// if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)
 
$x = $x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch) // вычисления в переменную
 
IF(PXL($x, $y_vert_chat) = 4144959) // оптимизированная строка

Спасибо что Вы с нами! :)


Ну вот примерно так. :)

9
[spoiler=Цитата]

Code: (clickermann) [Select]
$count = 4 // Количество рандомных действий 4 из 12

FOR($a=0,$a<12) // создаем массив из 12 номеров
   ARRPUSH($arr,$a+1)
END_CYC
FOR($i=ARRSIZE($arr)-1,($i>-1)&($i>ARRSIZE($arr)-($count+1)),-1)
   $n = RND(0,$i)
   SWITCH($arr[$n])
   CASE(1)
      LOGWRITE ("выполнение  действие № 1")
   CASE(2)
      LOGWRITE ("выполнение  действие № 2")
   CASE(3)
      LOGWRITE ("выполнение  действие № 3")
   CASE(4)
      LOGWRITE ("выполнение  действие № 4")
   CASE(5)
      LOGWRITE ("выполнение  действие № 5")
   CASE(6)
      LOGWRITE ("выполнение  действие № 6")
   CASE(7)
      LOGWRITE ("выполнение  действие № 7")
   CASE(8)
      LOGWRITE ("выполнение  действие № 8")
   CASE(9)
      LOGWRITE ("выполнение  действие № 9")
   CASE(10)
      LOGWRITE ("выполнение  действие № 10")
   CASE(11)
      LOGWRITE ("выполнение  действие № 11")
   CASE(12)
      LOGWRITE ("выполнение  действие № 12")
   END_SWITCH
   $arr[$n] = $arr[$i]
   $tmp = ARRPOP($arr)
END_CYC

HALT

[/spoiler]

Странно вот что. Если возвращать из ARRPOP() в переменную - $tmp = ARRPOP($arr), то код перестает работать как задумано. :(
В логе:
Code: [Select]
21:34:27 выполнение  действие № 8
21:34:27 выполнение  действие № 10
21:34:27 выполнение  действие № 4
21:34:27 выполнение  действие № 1
21:34:27 выполнение  действие № 2
21:34:27 выполнение  действие № 3
21:34:27 выполнение  действие № 11
21:34:27 выполнение  действие № 5
21:34:27 выполнение  действие № 7
21:34:27 выполнение  действие № 6
21:34:27 выполнение  действие № 9
21:34:27 выполнение  действие № 12

Может это только у меня так работает?
Clickermann v4.12 (build 001); Windows 7(x64)


UPD: Попробовал создавать массив другими способами. Есть такая беда с массивами.

Code: (clickermann) [Select]
// Так
$arr[0] = 1
$arr[1] = 2
$arr[2] = 3
$arr[3] = 4
$arr[4] = 5
$arr[5] = 6
$arr[6] = 7
$arr[7] = 8
$arr[8] = 9
$arr[9] = 10
$arr[10] = 11
$arr[11] = 12

// И так
STRSEPARATE("1:2:3:4:5:6:7:8:9:10:11:12", ":", $arr)

Но не помогло. :(
А если получать элементы массива не через ARRPOP($arr), то весь алгоритм рассыпается. :-\


10
...
Вопрос был есть ли функции и аналоги или нет. А начальный код, минимум как пример или частный случай.
И ответ дали: функций нет. Остальное как методы уменьшения видимого кода. Можно было и без них

Вот же вопрос... (я выделил фразы, которые считаю ключевыми в этом вопросе).
Хорошо, если getvar / setvar совсем не к месту (да, я с таковыми ни разу еще не сталкивался), то и #include  абсолютно ни при чем - мне не надо прятать код, мне надо упростить код, когда почти в каждой строке я вынужден писать длинные выражения типа

if ((pxl($x_gr+INT((231-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT((436-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT((524-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT((576-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

я просто чисто технически где-то в скобках или знаках ошибусь.
И хочу его сократить до

if ((pxl(функция1(231),$y_vert_chat)=4144959)&(pxl(функция1(436),$y_vert_chat+функция2(4))=12566527)&(pxl(функция1(524),$y_vert_chat+функция2(17))=12566527)&(pxl(функция1(576)),$y_vert_chat+функция2(48))=16744319))
а сами "функция1" и "функция2" вынести например в подпрограмму или каким-то образом задать. Это обычные алгебраические функции.

Как это можно сделать?

Вопрос предельно понятный, с примером строки которую нужно сократить. Даже не видя остального кода, первым решением должно быть - присвоить значения этих длинных выражений переменным (с короткими понятными именами). И в коде использовать вызов этих переменных, а не сами эти выражения.

Ну ладно вы ломанули по бездорожью, вы то пропрете, вы подкованы и не один мануал искурили. А представьте как новички читающие ваши варианты за вами в дебри полезут. Босые - до первой крапивы. С макросами ведь код проще не станет и макросы сам код не изменят. Значит надо править сам код, а не вуалировать его и не прятать.

Вообще странно, что я тут вам это объясняю. Все всё прекрасно поняли. Сами то используете в таких случаях переменные... А такие переменные, которые получают свои значения один раз за весь сценарий, есть почти в каждом коде. И не надо быть Вангой и "анализировать стиль которым описан вопрос", чтобы понять, что такие переменные в коде есть. В каждом коде всегда есть строка, в которой переменная получает свое значение в последний раз и потом работает как константа.

11
Кто нибудь может объяснить как работает ARRPOP($arr)? Эта функция должна удалять из массива последний элемент. Но делает это не всегда. Почему? И как надо её применять, чтобы код был верным?

Пояснения в коде ниже - строки 36-38 и 42

Code: (clickermann) [Select]
$count = 4 // Количество рандомных действий 4 из 12

FOR($a=0,$a<12) // создаем массив из 12 номеров
   ARRPUSH($arr,$a+1)
END_CYC
FOR($i=ARRSIZE($arr)-1,($i>-1)&($i>ARRSIZE($arr)-($count+1)),-1)
   $n = RND(0,$i)
   SWITCH($arr[$n])
   CASE(1)
      LOGWRITE ("выполнение  действие № 1")
   CASE(2)
      LOGWRITE ("выполнение  действие № 2")
   CASE(3)
      LOGWRITE ("выполнение  действие № 3")
   CASE(4)
      LOGWRITE ("выполнение  действие № 4")
   CASE(5)
      LOGWRITE ("выполнение  действие № 5")
   CASE(6)
      LOGWRITE ("выполнение  действие № 6")
   CASE(7)
      LOGWRITE ("выполнение  действие № 7")
   CASE(8)
      LOGWRITE ("выполнение  действие № 8")
   CASE(9)
      LOGWRITE ("выполнение  действие № 9")
   CASE(10)
      LOGWRITE ("выполнение  действие № 10")
   CASE(11)
      LOGWRITE ("выполнение  действие № 11")
   CASE(12)
      LOGWRITE ("выполнение  действие № 12")
   END_SWITCH
   $arr[$n] = $arr[$i]
   
   ARRPOP($arr) // скрипт работает правильно; массив НЕ очищается
   //   $del = ARRPOP($arr) // скрипт работает НЕ правильно; массив очищается
   //   LOGWRITE (ARRPOP($arr)) // скрипт работает НЕ правильно; массив очищается
   
END_CYC

TFWRITEARR("file.txt", $arr) // почему в файле остался мусор?

HALT

12
[spoiler]
Макросы, сабы, инклуды - это конечно здорово. Но первым делом надо бы было поинтересоваться - "Меняют ли переменные (из этих длинных строк) свои значения по ходу выполнения скрипта?". Нам же этого не сказали.
И если не меняют, то просто загнать вычисления типа "$x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)" в переменные, после того, как они в последний раз получат свои значения. Для этого можно выбрать удобное место в скрипте.
Code: (clickermann) [Select]
// Строка для примера:
// if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)

$x = $x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch) // вычисления в переменную

IF(PXL($x, $y_vert_chat) = 4144959) // ...

Ничего нового, просто хочу заострить на этом ваше внимание, т.к. похоже этот важный момент незаслуженно упущен, поэтому можно напрасно полезть в дебри из макросов буквально на ровном месте.
Нужно хоть название темы прочесть, а желательно всю ветку сообщений, прежде чем флудить в теме заострением внимания на ненужных и не интересных автору темы моментах.
[/spoiler]

Автор темы как раз и спрашивает - можно ли описать в скрипте функции, вызов которых можно было бы делать в коде, например вместо выражений условий IF(). Для того, чтобы вместо длинной строки вычислений, в коде были бы короткие вызовы функций.
По факту ему не нужны сами эти функции, а нужны результаты работы этих функций, то есть то, что они возвращают. Это должно было бы сделать код менее громоздким и более читабельным. Иными словами - требуется вместо длинных строк однотипных вычислений, вставлять в код короткие результаты этих вычислений, это в идеале.

Если представить, что все эти вычисления производятся в сценарии у автора всего ОДИН РАЗ (например при запуске скрипта вычисляются координаты плавающих окон, или каких-то опорных пикселей), то повторять эти вычисления, как минимум глупо. И даже если бы были такие функции, то размножать их в коде, вместо того чтобы использовать уже известный результат их работы, было бы не верно. Так или иначе функции вернули бы результаты своей работы в переменные. Так почему не убрать все обертки и сразу не поместить эти результаты в переменные?
Я специально оговорился, выделив в своем прошлом ответе условие, при котором такой подход сработает.

kiril, ты первым должен был уточнить этот момент, так как первым начал "помогать" автору темы, начав с этого...
К сожалению, это  бред, от полного непонимания того, что вы пытаетесь использовать.
попробуйте другие способы, автозамену кода например,
или #define Заменяет один текст на другой,
или #include Вставляет в это место содержимое текстового файла из папки проекта. Это позволяет "прятать" объемный код, повышая таким образом читаемость скрипта.
Да и ни каких особых мучений при написании кода который вам понятен и работоспособность которого можете проверить, быть не должно.

Так что задачу не понял как раз ты, а не я. И вместо того, чтобы понять, начал бездумно помогать автору темы размножать его вычисления в коде, предварительно переписав их макросами. Жесть же? ;D
Пойми, я не оспариваю решения предложенные до меня, там всё верно. Я предлагаю другое, самое очевидное решение, которое ВОЗМОЖНО было проигнорировано потому, что никто не уточнил детали задачи.

13
Макросы, сабы, инклуды - это конечно здорово. Но первым делом надо бы было поинтересоваться - "Меняют ли переменные (из этих длинных строк) свои значения по ходу выполнения скрипта?". Нам же этого не сказали.
И если не меняют, то просто загнать вычисления типа "$x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)" в переменные, после того, как они в последний раз получат свои значения. Для этого можно выбрать удобное место в скрипте.
Code: (clickermann) [Select]
// Строка для примера:
// if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)

$x = $x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch) // вычисления в переменную

IF(PXL($x, $y_vert_chat) = 4144959) // ...

Ничего нового, просто хочу заострить на этом ваше внимание, т.к. похоже этот важный момент незаслуженно упущен, поэтому можно напрасно полезть в дебри из макросов буквально на ровном месте.

14
Использование / Re: Бот для Fantastic Fishing
« on: September 23, 2017, 04:48:03 PM »
Не стоит огорчаться, человек просто не понимает, что люди сюда приходят не лично к нему, чтобы парить его вопросами, на которые он не знает ответ. Лично к нему никто не приходит. А приходят сюда чтобы поклониться гению Johnny, который собирает тысячи, а может и миллионы таких как мы. Каждого, отдельно взятого, такого "учителя", в тени самого Johnny даже невидно. Но надо понимать, что каждый пришедший сюда, приносит к алтарю Johnny что то новое, поэтому так важен для Johnny.

Это церковь Johnny и мы его паства, а пастырь наш - Johnny. И право голоса у всех равное.

Права следить за порядком даны только супермодераторам, иные - глупцы и самозванцы.
Наезжающий на "овец" из паствы Johnny и разгоняющий "стадо" ЕГО - заблудший грешник. Если он не покаится, то не быть ему уважаемым.

Форум, к сожалению, очень неоживленный. Одни уважаемые и остались... :-\ И это печально, как бы странно это не звучало.

Каждый человек, который не поленился зарегистрироваться на форуме и принять участие в обсуждениях - уже уважаемый форумчанин. Он и определяет тот самый "список уважаемых", но только для себя.

Давайте не будем бычить на тех кого пригласил Johnny!?

15
Подобное решение было уже - http://crapware.aidf.org/forum/index.php?topic=1965.msg11828#msg11828
только 23 строку поправить надо, чтобы больше одного раза подряд  скрипт выполнять можно было без ошибок.

Pages: [1] 2 3