UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2, 3
TRUB
Доброго времени суток. Есть метод позволяющий брать данные из других веток скрипта:
#i.2 - обращаемся к переменной #i из скрипта, находящегося в окне номер 2, при этом скрипт 2 должен работать или быть на паузе.
$i.5 - обращаемся к строковой переменной из 5 скрипта.
%arr.5 [1 3] - обращаемся к элементу массива из 5 скрипта.
когда делаю ссылку на масив:


1------- Это 1 скрипт где записываются данные вручную.
Код

set $e 742, 523                      //точка подтверждения  перемещения
init_arr %fc1 (1) 690, 335 1783605   // координаты и цвет в одну строку для проверки на пустоту
set delimiter ' '                    // установить разделитель между элементами 'пробел


//--------------Даные 1 сумка 1 ячеек -----------------
init_arr %b1c1 (1) 500, 245 725008    // координаты и цвет в одну строку для проверки на пустоту
set delimiter ' '                    // установить разделитель между элементами 'пробел'

2-------Это 2 скрипт где происходят все действия
Код

if %b1c1.1 [1]                               //Проверяем ячейку на пустоту [1]- значит пустая
else                                   //если нет то выполняеться действия
    move %b1c1.1 [1 1] %b1c1.1 [1 2]       //переносим курсор  на искомую ячейку
    wait 300                           //ждем  300 мс
    left_down %b1c1.1 [1 1] %b1c1.1 [1 2]  //зажимаем левую клавишу
    move %fc [1 1] %fc [1 2]         //Перетаскиваем предмет в хранилеще
    wait 300                           //ждем  300 мс
    left_up %fc1.1 [1 1] %fc1.1 [1 2]      //отпускаем  левую клавишу
    left $e.1                            //закрываем окно подтвеждения
end_if
if  %f1c.1 [1]                 //проверка  на  наличие окна  подтверждения
    left $e.1              //нажимаем в указаной точке   чтоб закрыть окно
else
end_if


----------------------------------------------------------------------------------------------
Когда запускаю ругаеться на "Syntax error (Exp1)" Понимаю что есть где-то подвог, а где найти не могу.
Вверх
DarkMaster
В первой же строке:
Цитата
if %b1c1.1 [1]

Сравнение то где? В пилоте так не прокатывает.
Цитата
if %f1c.1 [1]

Аналогично.
Какое-нибудь:
if %b1c1.1 [1] != ""
используйте
Вверх
cirus
Цитата
if %b1c1.1 [1]
Сравнение то где?

Вообще-то это проверка на цвет.
Цитата
2-------Это 2 скрипт где происходят все действия

Вначале скрипта добавить:
Код
set delimiter ' ' 

Разделитель устанавливается для каждой вкладки отдельно. Кстати, в первом скрипте он не нужен.
Или не использовать его вообще, тогда значения указывать отдельно:
Код
if %b1c1.1 [1 1] %b1c1.1 [1 2] %b1c1.1 [1 3]

Вместо if else можно использовать if_not.
Код
set delimiter ' '
if_not %b1c1.1 [1]                          //Проверяем ячейку на пустоту [1]- значит пустая
    move %b1c1.1 [1 1] %b1c1.1 [1 2]       //переносим курсор  на искомую ячейку
    wait 300                           //ждем  300 мс
    left_down %b1c1.1 [1 1] %b1c1.1 [1 2]  //зажимаем левую клавишу
    move %fc [1 1] %fc [1 2]         //Перетаскиваем предмет в хранилеще
    wait 300                           //ждем  300 мс
    left_up %fc1.1 [1 1] %fc1.1 [1 2]      //отпускаем  левую клавишу
    left $e.1                            //закрываем окно подтвеждения
end_if

Вверх
DarkMaster
Цитата
Вообще-то это проверка на цвет.

Судя по комментам, там предполагается появление пустоты. Т.е. в любом случае это краш.
Вверх
TRUB
DarkMaster
Цитата
Судя по комментам, там предполагается появление пустоты. Т.е. в любом случае это краш.

Пустатой я предполагаю что там будет определенный цвет , который я заведомо знаю.
Код
init_arr %fc1 (1) 690, 335 1783605   // координаты и цвет в одну строку для проверки на пустоту

Может я вас не правильно понимаю. Но там нет сравнения там только правда\ложь.
cirus
Код
set delimiter ' ' 
я так понял надо использовать там где скрипт обработки ?
А не там где объявление , если данные и обработка этих данных находятся в разных местах.
Цитата
Вместо if else можно использовать if_not.
-вы правы . Вечером все переделаю и проверю.
Вверх
cirus
Цитата
set delimiter ' '
я так понял надо использовать там где скрипт обработки ?

Да.
Вверх
TRUB
Все что выше советовали, переделал работает. Появилась новое препятствие.
Когда делаю релог в окне игры
Код

set delimiter ' '
set $var setlayout (0409)          // включили английскую раскладку
//set workwindow 197538 // сделать рабочим окно c указанным хендлом
move %h3.1 [1 1] %h3.1 [1 2]
left %h3.1 [1 1] %h3.1 [1 2]    // выбераем  строку ввода пароля
wait 2s
set SendExDelay 100              // задержка между вводами букв
sendex ~xxxxxxxx                // ввод пароля
//send 1                        // проверрка на ввод  любой клавиши
wait 2s
end_script

не хочет вводить любые символы, окно клиента все равно что не активное.Где тут подводные камни?
Вверх
cirus
А курсор ставит в строку ввода пароля? Кстати, без move тоже должно работать.
sendex работает только для активного окна, т. е. рабочее окно должно быть не переднем плане.
Или используйте send или send217, они работают для неактивного окна.


Вверх
TRUB
использовал "kleft "
оно и активизирует окно и становиться в нужное поле.
Начались проблемы с вводом, Sendex не работает
а Send водит только маленький регистр.
send_down ~ // зажатие "Shift" не срабатывает

Питался записать макрос ввода пароля, удаляю лишние движений мышкой , запускаю , и системе вылетает с синим экраном... =) первый раз было чуть с стула не упал.
Мимо ввода подскажите как правильно редактировать макрос чтоб таких казусов не было.


Вверх
cirus
Цитата
а Send водит только маленький регистр.

Что за приложение?
Цитата
Sendex не работает

А рабочее окно на переднем плане?
Цитата
send_down ~ // зажатие "Shift" не срабатывает

Зажать модификатор (Ctrl, Alt, Shift) можно только sendex или sendex_down/sendex_up.
Можно попробовать что-то вроде:
Код
sendex ~  // зажать шифт
send q      // нажать q, т. е. должно напечатать Q
sendex     // отпустить все модификаторы

Цитата
как правильно редактировать макрос чтоб таких казусов не было.

Проблема не в редактировании макроса, а их корявой реализации в пилоте. Для работы макросов требуется соблюдение ряда условий.
Лучше оставьте макросы как самый последний вариант.
Как вариант, вместо нажатий использовать буфер:
Код
set clipboard qweRTy     // копируем в буфер логин
wait 100
kleft 200 200     // выбираем  строку ввода пароля
wait 200
sendex ^v              //нажать Ctrl + V (вставить логин)
end_script




Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.