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

Основной раздел => Общие вопросы => Topic started by: Пытливый on September 09, 2017, 10:12:09 PM

Title: Можно ли написать пользовательскую функцию скриптом?
Post by: Пытливый on September 09, 2017, 10:12:09 PM
Например хочу сделать примерно так:
Code: [Select]
fun(GetColorXY, $X, $Y)
 GetScreen()
 $result = Pxl($X, $Y)
end_fun
...
if (GetColorXY(1,1) = 0)
 print("Темно")
else
 print("Светло")
end_if
Title: Re: Можно ли написать пользовательскую функцию скриптом?
Post by: open_78 on September 09, 2017, 10:35:14 PM
Зачем усложнять?
Code: (clickermann) [Select]
$X=10
$Y=10

GETSCREEN
IF(PXL($X,$Y)=0)
   PRINT("Темно")
ELSE
   PRINT("Светло")
END_IF
Title: Re: Можно ли написать пользовательскую функцию скриптом?
Post by: Пытливый on September 09, 2017, 11:42:33 PM
Нет, такое решение не подходит. Мне нужно слегка проапгрейдить родную функцию Pxl() которая будет возвращать цвет пикселя. У меня в скрипте таких парных вызовов больше полусотни. Писать перед каждым вызовом Pxl() дополнительно вызов GetScreen() меня утомило. Я вот удивляюсь, почему этот вызов изначально в ней не сделан, если без него она работает неправильно?
Title: Re: Можно ли написать пользовательскую функцию скриптом?
Post by: Пытливый on September 10, 2017, 01:57:49 AM
С чего это оно не согласуется? Я спросил, как СКРИПТОМ написать функцию, получил предложение использовать WinApi - вот это действительно мало согласуется с моим вопросом.
Quote
По моему довольно странно ради одного пикселя обновлять графический буфер программы, учитывая размеры современных мониторов. Кроме того PXL прекрасно работает с содержимым графического буфера, даже без GETSCREEN  перед каждым вызовом. Поэтому желаемая вами форма апгрейда совсем не рациональна и для большинства пользователей не актуальна
Так и я о том-же.  В 4.6 версии мне вызывать GETSCREEN не требовалось. Перешел на 4.12 и без вызова GETSCREEN PXL() тупо возвращает 0 цвет.
Title: Re: Можно ли написать пользовательскую функцию скриптом?
Post by: Oraven on September 10, 2017, 09:03:06 AM
В старых версиях кликера редактор делал снимки в тот же буфер что и GETSCREEN. В новых буферы изолированны.
Поэтому у некоторых, кто запускал скрипт в режиме редактора, могло сложиться ощущение что GETSCREEN вообще не нужен. GETSCREEN пишут там где требуется получить актуальный снимок экрана. Можно сделать один снимок а потом серией условий проанализировать его.

Покажи свой скрипт, может его можно оптимизировать.