Автокликер Clickermann :: Форум
Основной раздел => Предложения => Topic started by: Hito on April 26, 2020, 12:26:58 PM
-
Предлагаю ввести функцию проверки наличия файла или каталога по маске, на подобии - GetFileList. Только GetFileList помещает в массив список всех найденных файлов, а я говорю о функции, которая будет искать 1 файл по маске.
Объясню - зачем это может быть нужно...
К примеру, мне нужно получить расстояние до моба и вместо того, чтобы мутить долгий процесс по вычислению цифр, из которых состоит число (их позицию и их значение), я просто заранее сохранил бы в папку "расстояние" скрины с разным расстоянием, а их название состояло бы из их контрольной суммы пикселей и значения расстояния. Пример - "130_847690405.bmp". А в скрипте написал бы подобный код:
IF($target > 0)
GETSCREEN($x1,$y1, $x2,$y2)
$count = PXLCRC ($x1,$y1, $x2,$y2)
IF(FExists_mask(STRCONCAT("screens\расстояние\*_",$count,".bmp")))
$rasstoyanie = STRCUT ($_return1, 1, STRPOS($_return1, "_")-1)
else
IF(FExists(STRCONCAT("screens\расстояние\цех\_",$count,".bmp")))
else
SCREENSHOTFIX($x1,$y1, $x2,$y2, STRCONCAT("screens\расстояние\цех\_",$count,".bmp")) // Здесь сохраняем заготовку, которую я потом просмотрю, допишу расстояние в ее названии и перекину в папку - "расстояние".
END_IF
END_IF
END_IF
Подобный способ распознания того же расстояния был бы очень быстрым в сравнении со способами, в которых используются большие массивы...
-
зачем искать 1 файл по маске? для проверки наличия файла/каталога есть функция FEXISTS
-
зачем искать 1 файл по маске? для проверки наличия файла/каталога есть функция FEXISTS
Ты хорошо понял то, что я описал...?
-
Ну я понял. А ты проверял варианты с INIREAD/GETVAR? тебе действительно не хватает скорости?
-
Ну я понял. А ты проверял варианты с INIREAD/GETVAR? тебе действительно не хватает скорости?
Я понимаю, что данные можно занести в ини. К примеру в ини на кеше пикселей будет записано - сколько это метров. Но ты представляешь себе, какой это объем работы - занести все эти данные в ини...? А так скрипт сам тебе скрин подготовил, если не распознал картинку, а ты посмотрел этот скрин, метры в его названии прописал и в рабочую папку перебросил.
-
1.А нельзя выдернуть координаты перса и моба из памяти программы и посчитать длину вектора?
2. Код получает данные перса с расшаренного диска ноутбука (здоровье, мана, координаты, id и время). В каждом каталоге находится 1 подкаталог имя которого является цифровым значением.
Если каталогов-параметров становится слишком много и файловая система начинает подтормаживать, их можно раскидать по подкаталогам-разделителям.
for($ia3=1, $ia3<= $_Pulse)
UNDEFINE($arr3)
SWITCH($ia3)
CASE(1)
getdirlist($arr3, "b:\HPm\*")
$_HPmax[0]=$arr3[0]
CASE(2)
getdirlist($arr3, "b:\HPt\*")
$_HPtek[0]=$arr3[0]
CASE(3)
getdirlist($arr3, "b:\MPm\*")
$_MPmax[0]=$arr3[0]
CASE(4)
getdirlist($arr3, "b:\MPt\*")
$_MPtek[0]=$arr3[0]
CASE(5)
getdirlist($arr3, "b:\x\*")
$_Xper[0]=$arr3[0]
CASE(6)
getdirlist($arr3, "b:\y\*")
$_Yper[0]=$arr3[0]
CASE(7)
getdirlist($arr3, "b:\fx\*")
$f_Xper[0]=$arr3[0]
CASE(8)
getdirlist($arr3, "b:\fy\*")
$f_Yper[0]=$arr3[0]
CASE(9)
getdirlist($arr3, "b:\fz\*")
$f_Zper[0]=$arr3[0]
CASE(10)
$_TimeNout[1]=$_TimeNout[0]
getdirlist($arr3, "b:\Time\*")
$_TimeNout[0]=$arr3[0]
if($_TimeNout[0]>$_TimeNout[1]+15000)
BEEP(750,1000)
BEEP(650,1000)
print("Нет сигнала с ноута")
end_if
CASE(11)
getdirlist($arr3, "b:\ID\*")
$_ID[0]=$arr3[0]
$_Pulse=10
END_SWITCH
end_cyc
-
1.А нельзя выдернуть координаты перса и моба из памяти программы и посчитать длину вектора?
2. Код получает данные перса с расшаренного диска ноутбука (здоровье, мана, координаты, id и время). В каждом каталоге находится 1 подкаталог имя которого является цифровым значением.
Если каталогов-параметров становится слишком много и файловая система начинает подтормаживать, их можно раскидать по подкаталогам-разделителям.
for($ia3=1, $ia3<= $_Pulse)
UNDEFINE($arr3)
SWITCH($ia3)
CASE(1)
getdirlist($arr3, "b:\HPm\*")
$_HPmax[0]=$arr3[0]
CASE(2)
getdirlist($arr3, "b:\HPt\*")
$_HPtek[0]=$arr3[0]
CASE(3)
getdirlist($arr3, "b:\MPm\*")
$_MPmax[0]=$arr3[0]
CASE(4)
getdirlist($arr3, "b:\MPt\*")
$_MPtek[0]=$arr3[0]
CASE(5)
getdirlist($arr3, "b:\x\*")
$_Xper[0]=$arr3[0]
CASE(6)
getdirlist($arr3, "b:\y\*")
$_Yper[0]=$arr3[0]
CASE(7)
getdirlist($arr3, "b:\fx\*")
$f_Xper[0]=$arr3[0]
CASE(8)
getdirlist($arr3, "b:\fy\*")
$f_Yper[0]=$arr3[0]
CASE(9)
getdirlist($arr3, "b:\fz\*")
$f_Zper[0]=$arr3[0]
CASE(10)
$_TimeNout[1]=$_TimeNout[0]
getdirlist($arr3, "b:\Time\*")
$_TimeNout[0]=$arr3[0]
if($_TimeNout[0]>$_TimeNout[1]+15000)
BEEP(750,1000)
BEEP(650,1000)
print("Нет сигнала с ноута")
end_if
CASE(11)
getdirlist($arr3, "b:\ID\*")
$_ID[0]=$arr3[0]
$_Pulse=10
END_SWITCH
end_cyc
Я это, как пример привел. Примеров может быть куча. Под каждый пример искать выход из положения, вместо того, чтобы найти просто файл по маске...? Согласен - можно. Но я просто предложил ввести такую функцию...
-
Это многогранный костыль. С его помощью можно через расшаренную папку обмениваться данными по локальной сети, получать на виртуальный диск результаты расчетов из dll. Можно запускать dll в нескольких потоках, без опасения, что возвращаемый в глобальную переменную результат будет получен не тем потоком.
ps Мы не можем ждать милостей от природы. Взять их у неё – наша задача
-
Это многогранный костыль.
А я о том, чтобы как можно меньше приходилось обращаться к костылям.