Всем добрый день!
у меня есть несколько переменных - пары координат х и у, которые нужно вводить по очереди.
скрипт выглядит схематично так:
set #uslovie 1
set #x1 234
set #y1 699
set #x2 676
set #y2 099
set #x3 222
set #y3 222
:begin
if #uslovie = 1
send #x1
send {tab}
send #y1
set #uslovie #uslovie + 1
end_if
if #uslovie = 2
send #x2
send {tab}
send #y2
set #uslovie #uslovie + 1
end_if
if #uslovie = 3
send #x3
send {tab}
send #y3
set #uslovie #uslovie + 1
end_if
goto begin
if #uslovie = 3
send #x3
send {tab}
send #y3
set #uslovie #uslovie + 1
end_if
goto begin
if #uslovie = 3
send #x #uslovie - порядковый номер х совпадает с условием
send {tab}
send #y #uslovie - порядковый номер y совпадает с условием
set #uslovie #uslovie + 1
end_if
goto begin
вообще можно сделать массив, а в варианте с луа можно даже "именно так", т.к. там в этот же массив можно запихать что угодно и даже функцию, которая вернет это "условие". Тут очень большой вопрос кстати что содержится в #uslovie. Если это просто некоторое число или строка, то вообще не вижу проблемы:
set arr[1 1] x1
set arr[1 2] y1
set arr[1 3] uslovie1
set arr[2 1] x2
set arr[2 2] y2
set arr[2 3] uslovie2
set arr[3 1] x3
set arr[3 2] y3
set arr[3 3] uslovie3
ну и получается универсальный блок:
if arr[n 3] = 3
send arr[n 1] arr[n 3] - порядковый номер х совпадает с условием
send {tab}
send arr[n 2] arr[n 3] - порядковый номер y совпадает с условием
set #uslovie #uslovie + 1
end_if
Спасибо, огромное!
Предполагал что это можно сделать при помощи массивов.
Не очень ими владею, буду читать справку:-)
#uslovie да, просто число в данном случае. Я упростил весь блок,
чтобы осталось самому голову поломать:-)
Ещё раз спасибо!
set arr[1 1] x1
set %arr[1 1] x1
init_arr %a (1) 234 699 // x1 y1
init_arr %a (2) 676 99 // x2 y3
init_arr %a (3) 222 222
for #i 1 size(%a)
log %a [#i 1]
log tab
log %a [#i 2]
log
end_for
end_script
Спасибо, про % только хотел спросить:-)
Теперь обобщу полученную информацию и попытаюсь применить в своем скрипте:-)
спасибо еще раз! вроде начинаю разбираться с массивами )
подскажите а можно похожее провернуть с findcolor?
есть несколько таких участков:
set $a findcolor (177, 251 224, 285 1 1 331878 %arr 2)
if $a > 0 // Yes
left %arr [1 1], %arr [1 2]
wait 1000
end_if
Можно, но findcolor не понимает массивы, поэтому нужно присвоить значение массива числовой переменной и уже её использовать в findcolor.
init_arr %a (1) 472, 106 672, 301 4464896 // область поиска и цвет
init_arr %a (2) 1517, 530 1753, 692 16633191 // область поиска и цвет
init_arr %a (3) 80, 91 232, 207 7919083 // область поиска и цвет
for #i 1 size (%a)
set #startX %a [#i 1]
set #startY %a [#i 2]
set #endX %a [#i 3]
set #endY %a [#i 4]
set #color %a [#i 5]
set #a findcolor (#startX #startY #endX #endY 1 1 #color %arr)
if #a > 0
left %arr [1 1], %arr [1 2]
wait 1000
end_if
end_for
end_script
Спасибо огромное!
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)