Как скриптом создать имя плавающей переменной и затем вывести ее в лог?
for #i 1 5
set #a(#i) #i
log #a(#i)
end_for
log #a(4) //вывести содержание переменной из середины
end_script
for #i 1 5
init_arr %a(#i) #i
log %a(#i) [1]
end_for
log %a(4) [1]
end_script
Что понимается под плавающей переменной?
Какая именно задача?
Что должны увидеть в логе?
Что значит представить массив в качестве переменной? "set #a(#i) %a(#i)[1]" В этой записи %a(#i)[1] - это уже и есть переменная (ячейка массива итой строки, первого столбца).
log clear
log mode compact
set #poisk findimage (1023, 34 1077, 50 (D:\_UOPilot\newimage\astro.bmp) %arr 2 80 -1) //поиск
for #i 1 size(%arr)
if #poisk > 0
set #sx (%arr[#i 1] - 5) //координаты для анализа объекта
set #sy (%arr[#i 2] + 10)
set #ex (%arr[#i 1] + 12)
set #ey (%arr[#i 2] + 25)
//--где будет действие
set #x %arr[#i 1] + 0
set #y %arr[#i 2] + 0
log #x #y
init_arr %x(#i) #x [1] //присваеваем уникальное имя и задаем коорд.
init_arr %y(#i) #y [1]
//log массив %x(#i)[1] %y(#i)[1]
//log #sx #sy #ex #ey
//move #sx #sy //обл поиска
//wait 100
//move #ex #ey //конец обл поиска
set $path "D:\_UOPilot\newimage\ras\" //картинки для выбора лучшего варианта
set delimiter ' '
dir (%image $path *.bmp*) //поиск картинок в папке и загрузка их в массив
//log В папке найдено: size(%image) картинок
for #j 1 size(%image)
set #v findimage(#sx #sy #ex #ey (%image [#j 1]) %a) //поиск лучшего объекта
//log поиск в #sx #sy #ex #ey
if #v > 0
//log Найдена картинка %image [#j 3]
init_arr %b(#i) %image [#j 3] //присвоим параметру отсева уникальное имя
log %b(#i) [1]
break
else
//log нет цифр
end_if
end_for
end_if
end_for
set delimiter
//log %b(1)[1]%b(2)[1]%b(3)[1]
set $p %b(1)[1]%b(2)[1]%b(3)[1]
set $m minx(minx(%b)) //отсев нужного значения
log $m
set #n posex($m $p) //позиция значения в масиве
log поз #n
for #i 1 size(%arr) //действие
if #i = #n //когда позиция и значение совпадают выполнить действие
log #i = #n
move %x(#i)[1] %y(#i)[1] //действие в лучшей точке в нужном месте
end_if
end_for
end_script
Даже ещё можно сократить
log поз #n
for #i 1 size(%arr) //действие
if #i = #n //когда позиция и значение совпадают выполнить действие
log #i = #n
move %x(#i)[1] %y(#i)[1] //действие в лучшей точке в нужном месте
end_if
end_for
end_script
log поз #n
Set #i #n //когда позиция и значение совпадают выполнить действие
move %x(#i)[1] %y(#i)[1] //действие в лучшей точке в нужном месте
end_script
log clear
log mode compact
set #poisk findimage (1023, 34 1077, 50 (D:\_UOPilot\newimage\astro.bmp) %arr 2 80 -1) //поиск
for #i 1 size(%arr)
if #poisk > 0
set #sx (%arr[#i 1] - 5) //координаты для анализа объекта
set #sy (%arr[#i 2] + 10)
set #ex (%arr[#i 1] + 12)
set #ey (%arr[#i 2] + 25)
//--где будет действие
set #x %arr[#i 1] + 0
set #y %arr[#i 2] + 0
log #x #y
init_arr %x(#i) #x [1] //присваеваем уникальное имя и задаем коорд.
init_arr %y(#i) #y [1]
//log массив %x(#i)[1] %y(#i)[1]
//log #sx #sy #ex #ey
//move #sx #sy //обл поиска
//wait 100
//move #ex #ey //конец обл поиска
set $path "D:\_UOPilot\newimage\ras\" //картинки для выбора лучшего варианта
set delimiter ' '
dir (%image $path *.bmp*) //поиск картинок в папке и загрузка их в массив
//log В папке найдено: size(%image) картинок
for #j 1 size(%image)
set #v findimage(#sx #sy #ex #ey (%image [#j 1]) %a) //поиск лучшего объекта
//log поиск в #sx #sy #ex #ey
if #v > 0
//log Найдена картинка %image [#j 3]
init_arr %b(#i) %image [#j 3] //присвоим параметру отсева уникальное имя
log %b(#i) [1]
break
else
//log нет цифр
end_if
end_for
end_if
end_for
set delimiter
//log %b(1)[1]%b(2)[1]%b(3)[1]
set $p %b(1)[1]%b(2)[1]%b(3)[1]
set $m minx(minx(%b)) //отсев нужного значения
log $m
set #n posex($m $p) //позиция значения в масиве
log поз #n
for #i 1 size(%arr) //действие
if #i = #n //когда позиция и значение совпадают выполнить действие
log #i = #n
move %x(#i)[1] %y(#i)[1] //действие в лучшей точке в нужном месте
end_if
end_for
end_script
Убрал лишние строки, задал переменные через set, а не примочками init_arr, как и просил.
log clear
log mode compact
while #poisk < 0 or #poisk = 0
set #poisk findimage (1023, 34 1077, 50 (D:\_UOPilot\newimage\astro.bmp) %arr 2 80 -1) //поиск
end_while
for #i 1 size(%arr)
//-- координаты для анализа объекта
set #sx (%arr[#i 1] - 5)
set #sy (%arr[#i 2] + 10)
set #ex (%arr[#i 1] + 12)
set #ey (%arr[#i 2] + 25)
//-- где будет действие
log x: %arr[#i 1] y: %arr[#i 2]
//-- присваиваем уникальное имя и задаем коорд.
set %x[#i] %arr[#i 1]
set %y[#i] %arr[#i 2]
//log #sx #sy #ex #ey
//move #sx #sy //обл поиска
//wait 100
//move #ex #ey //конец обл поиска
set $path "D:\_UOPilot\newimage\ras\" //картинки для выбора лучшего варианта
set delimiter ' '
dir (%image $path *.bmp*) //поиск картинок в папке и загрузка их в массив
//log В папке найдено: size(%image) картинок
for #j 1 size(%image)
set #v findimage(#sx #sy #ex #ey (%image [#j 1]) %a) //поиск лучшего объекта
//log поиск в #sx #sy #ex #ey
if #v > 0
//log Найдена картинка %image [#j 3]
set %b[#i] %image [#j 3] //присвоим параметру отсева уникальное имя
log %b[#i]
break
end_if
//log нет цифр
end_for
end_for
set delimiter ''
//log %b[1]%b[2]%b[3]
set $p %b[1]%b[2]%b[3]
set $m minx(minx(%b)) //отсев нужного значения
log $m
set #n posex($m $p) //позиция значения в массиве
log поз #n
move %x[#n] %y[#n] //действие в лучшей точке в нужном месте
end_script
Плавающее имя SaveImage
set #j 0 //счетчик для имени картинки
while 1 = 1
if 55, 82 6738175 //условие когда нам необходимо сохранить часть экрана(сделать скриншот)
set #j #j +1 //начало отсчета цикла и имени картинки
for #i #j 999
init_arr %name(#i) #i //задаем имя
set %a GetImage (700, 40 1365, 766) // сохранить в памяти часть экранной области
set $jpg SaveImage (%a [1 1] D:\123\%name(#i) [1].jpg) // сохранить в файл на диск C:\
set $b DeleteImage (%a [1 1]) // удалить из памяти часть экранной области
break //прерываем цикл что бы не считать в холостую
end_for
end_if
end_while
End_script
Картинки должны сохраняться на D:\ с именами 1.jpg , 2.jpg , и т.д. , верно?
for #i 1 9999
while_not 55, 82 6738175 //условие когда нам необходимо сохранить часть экрана(сделать скриншот)
end_while
set %name[1] #i //задаем имя
set %a GetImage (700, 40 1365, 766) // сохранить в памяти часть экранной области
set $jpg SaveImage (%a[1 1] D:\123\%name[1].jpg) // сохранить в файл на диск D:\
end_for
попробовал прикрутить дату и время к имени но гдето подводные камни...
while 1 = 1
if 697, 152 10213092 //условие когда нам необходимо сохранить часть экрана(сделать скриншот)
set $b DateNow TimeNow //дата время
//log $b
init_arr %b $b // перевести в %
log %b[1] %b[2] // вывести в дату и время
set %a GetImage (582, 208 590, 220 ) // сохранить в памяти часть экранной области
set $jpg SaveImage (%a [1 1] D:\123\(%b[1] %b[2]).jpg) // сохранить в файл на диск C:\
set $b DeleteImage (%a [1 1]) // удалить из памяти часть экранной области
end_if
end_while
End_script
while 1 = 1
if 697, 152 10213092 //условие когда нам необходимо сохранить часть экрана(сделать скриншот)
set $b DateNow TimeNow //дата время
//log $b
init_arr %b $b // перевести в %
log %b[1] %b[2] // вывести в дату и время
set %a GetImage (582, 208 590, 220 ) // сохранить в памяти часть экранной области
set $jpg SaveImage (%a [1 1] D:\123\%b[1].jpg) // сохранить в файл на диск C:\
set $b DeleteImage (%a [1 1]) // удалить из памяти часть экранной области
end_if
end_while
End_script
обошол кастылями
while 1 = 1
if 295, 63 16777215 //условие когда нам необходимо сохранить часть экрана(сделать скриншот)
set $b DateNow TimeNow //дата время
//log $b
set $i ":" // что ищем
set $c "-" // чем заменяем
set $s string_replace ($b $i $c all)
log $s
init_arr %b $s // перевести в %
log %b[1] %b[2] // вывести в дату и время
set %a GetImage (582, 208 590, 220 ) // сохранить в памяти часть экранной области
set $jpg SaveImage (%a [1 1] D:\123\%b[1] %b[2].jpg) // сохранить в файл на дискс именем (дата-время)
set $b DeleteImage (%a [1 1]) // удалить из памяти часть экранной области
end_if
end_while
End_script
while 1 = 1
if 295, 63 16777215 //условие когда нам необходимо сохранить часть экрана(сделать скриншот)
init_arr %b (1) day . month . year _ hour . min . sec
log %b[1] // вывести в дату и время
set %a GetImage (582, 208 590, 220 ) // сохранить в памяти часть экранной области
set $jpg SaveImage (%a [1 1] D:\123\%b[1].jpg) // сохранить в файл на диск C:\
set $b DeleteImage (%a [1 1]) // удалить из памяти часть экранной области
end_if
end_while
End_script
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)