Здравствуйте, гость ( Вход | Регистрация )

> Поиск цвета пикселя в заданных координатах
paxael
сообщение 7.11.2020, 22:26
Сообщение #1


**

Neophyte
Сообщений: 10
Регистрация: 1.11.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.789
Возраст: 36



Доброе время суток. Помогите разобраться. Я только начинаю знакомство с UO Pilotоm по этому многих тонкостей не знаю. Вот кусок моего скрипта в которым у меня возникают проблемы:
скрипт
Код
// перемещение к захвату
kleft 858, 381 5 5 // ПЕРВАЯ попытка
wait 1500 + random (500)
if 632, 474 1585282 // проверка иконки перемещения
kleft 936, 554 5 5 // применить
wait 2000 + random (500)
kleft 698, 543 5 5 // да
wait 2000 + random (500)
kleft 729, 451 5 5 // жмяк по захвату
wait 3000 + random (500)

// бьём эту ТВАРЬ
Repeat 33
kleft 676, 648
wait 3000
if_not 998, 363 39305 // проверка энергии
kleft 947, 404 5 5 // добавить
wait 2000 + random (500)
move 976, 345 5 5 // навести курсор
wait 500 + random (300)
kleft 987, 384 5 5 // больше
wait 2000 + random (500)
kleft 1016, 568 5 5 // покупка
wait 2000 + random (500)
kleft 684, 636 5 5 // купить и применить
wait 2000 + random (500)
kleft 1086, 91 5 5 // закрыть окно
wait 2000 + random (500)
end_if
End_Repeat
kleft 1025, 202 5 5 // закрыть логово
wait 2000 + random (500)

else // если нет иконки ищем крест и закрываем окно
set #a findcolor (999, 86 1049, 316 1 1 (8708095) %arr 2) // поиск креста
if #a > 0
kleft %arr [1 1], %arr[1 2]
wait 2000 + random (500)
end_if
end_if

Это скрипт для игры Викинги, с помощью его хочу бить захватчиков. Проблема в этой части if 632, 474 1585282 // проверка иконки перемещения не всегда срабатывает поиск цвета пикселей, хотя картинка на которой ищу не изменяется, может 50 раз нормально найти, а потом нет. В чём может быть проблема и как её можно решить, может заменить на другой код? Буду рад любой помощи. Так же принимаются поправки по остальному коду в этом скрипте, буду благодарен за совету, так как сам в этом полный бот)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 8.11.2020, 20:23
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.742
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29658
Пользователь №: 11.279



Что-то у меня на радикале грузится весь хлам, кроме ваших изображений...
Для начала начните использовать в пилоте "Скрипт/Форматировать". Вам же проще будет глаза не ломать.

Вообще по уму раскидать бы все это по подпрограммам (gosub) и было бы проще и красивее.

Рестарт нулевого скрипта при этом делать нужно? Если нужно, то следующий блок просто пропустите, если рестарт делать не надо то:
В данных условиях мы можем переместить:
restart_script 0
внутрь тела if в оба блока (истины и else) последней строкой.


Как только мы сможем проверить отсутствие необходимых условий вкрутить еще один if. Будет что-то вроде:

Код
if
    код кликов
    до появления возможности
    определить нужен ли переход
    ко второй попытке
    if_not надо во второую попытку?
        код который
        нужно выполнить,
        если вторая попытка не нужна.
    end
else // если нет иконки ищем крест и закрываем окно
    .....
end



--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
paxael
сообщение 8.11.2020, 21:56
Сообщение #3


**

Neophyte
Сообщений: 10
Регистрация: 1.11.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.789
Возраст: 36



Цитата(DarkMaster @ 8.11.2020, 20:23) *

Для начала начните использовать в пилоте "Скрипт/Форматировать". Вам же проще будет глаза не ломать.

Очень дельный совет, спасибо) Теперь всё красиво, как я люблю)))
Цитата
Вообще по уму раскидать бы все это по подпрограммам (gosub) и было бы проще и красивее.

Понятия не имею как это сделать, только начинаю изучать эту программу. Буду пробовать разобраться что за (gosub).
Цитата
Рестарт нулевого скрипта при этом делать нужно? Если нужно, то следующий блок просто пропустите, если рестарт делать не надо то:
В данных условиях мы можем переместить:
restart_script 0
внутрь тела if в оба блока (истины и else) последней строкой.

Ну рестарт мне нужен после тога как закончу бить захватчика, после выполнения этого кода:
скрипт
Код
// бьём эту ТВАРЬ
    Repeat 33
        kleft 676, 648
        wait 3000
        if_not 998, 363 39305 // проверка энергии
            kleft 947, 404 5 5 // добавить
            wait 2000 + random (500)
            move 976, 345 5 5 // навести курсор
            wait 500 + random (300)
            kleft 987, 384 5 5 // больше
            wait 2000 + random (500)
            kleft 1016, 568 5 5 // покупка
            wait 2000 + random (500)
            kleft 684, 636 5 5 // купить и применить
            wait 2000 + random (500)
            kleft 1086, 91 5 5 // закрыть окно
            wait 2000 + random (500)
        end_if
    End_Repeat
    kleft 1025, 202 5 5 // закрыть логово
    wait 2000 + random (500)

Из вашего совета я понял нужно сделать так (или я не правильно понял):
скрипт
Код
if  724, 66 2706009   // проверка кнопки навигатора
    set #a findcolor (975, 90 1273, 337 1 1 (8708095) %arr 2) // поиск креста
    if  #a > 0
        kleft %arr [1 1], %arr[1 2]
        wait 2000 + random (500)
    end_if
end_if

kleft 725, 63 5 5 // навигатор
wait 2000 + random (500)

while 1017, 162 5252419
    set #a findcolor (386, 284 500, 756 1 1 (7569544) %arr 2 10) // поиск захвата
    if  #a > 0
        kleft %arr [1 1], %arr[1 2] // жмяк по захвату
        wait 1500 + random (500)
        kleft 695, 541 5 5 // да
        wait 1500 + random (500)
    else // если на страницы нет нужного захвата, клацаем 6 раз в низ
        kleft 1202, 741 2 2      // 1
        wait 100 + random (150)
        kleft 1202, 741 2 2      // 2
        wait 100 + random (150)
        kleft 1202, 741 2 2      // 3
        wait 100 + random (150)
        kleft 1202, 741 2 2      // 4
        wait 100 + random (150)
        kleft 1202, 741 2 2      // 5
        wait 100 + random (150)
        kleft 1202, 741 2 2      // 6
        wait 100 + random (150)
    end_if
end_while

// перемещение к захвату
kleft 858, 381 5 5 // ПЕРВАЯ попытка
wait 1500 + random (500)
if  636, 520 10116233 11889312 // проверка иконки перемещения
    kleft 936, 554 5 5 // применить
    wait 2000 + random (500)
    kleft 698, 543 5 5 // да
    wait 2000 + random (500)
    kleft 729, 451 5 5 // жмяк по захвату
    wait 3000 + random (500)

    // бьём эту ТВАРЬ
    Repeat 33
        kleft 676, 648
        wait 3000
        if_not 998, 363 39305 // проверка энергии
            kleft 947, 404 5 5 // добавить
            wait 2000 + random (500)
            move 976, 345 5 5 // навести курсор
            wait 500 + random (300)
            kleft 987, 384 5 5 // больше
            wait 2000 + random (500)
            kleft 1016, 568 5 5 // покупка
            wait 2000 + random (500)
            kleft 684, 636 5 5 // купить и применить
            wait 2000 + random (500)
            kleft 1086, 91 5 5 // закрыть окно
            wait 2000 + random (500)
        end_if
    End_Repeat
    kleft 1025, 202 5 5 // закрыть логово
    wait 2000 + random (500)
    restart_script 0
else // если нет иконки ищем крест и закрываем окно
    set #a findcolor (999, 86 1049, 316 1 1 (8708095) %arr 2) // поиск креста
    if  #a > 0
        kleft %arr [1 1], %arr[1 2]
        wait 2000 + random (500)
    end_if
    restart_script 0
end_if

Вставил рестарт в двух местах, но так он не срабатывает. Может я вас не так понял (IMG:style_emoticons/default/unsure.gif)
Цитата
Как только мы сможем проверить отсутствие необходимых условий вкрутить еще один if. Будет что-то вроде:

Тут тоже если честно не совсем понял как это реализовать (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
paxael   Поиск цвета пикселя в заданных координатах   7.11.2020, 22:26
cirus   Может цвет незначительно меняется. Проверьте всег...   8.11.2020, 0:56
paxael   Может цвет незначительно меняется. Проверьте всег...   8.11.2020, 11:06
DarkMaster   https://forum.uokit.com/index.php?showtopic=22116 ...   8.11.2020, 11:08
paxael   И ещё такой вопрос у меня возник. Есть ли команда ...   8.11.2020, 11:27
DarkMaster   log 1 goto qwe log 2 :qwe Но в целом очень ...   8.11.2020, 13:04
paxael   не совсем понял, что вы хотите сделать. Вот смотр...   8.11.2020, 17:03
DarkMaster   Это типа функций на старом синтаксисе. Так не бы...   8.11.2020, 22:33
paxael   После какой строки можно сделать проверку? Когда ...   8.11.2020, 22:47
DarkMaster   // перемещение к захвату kleft 858, 381 5 5 // ПЕ...   8.11.2020, 23:21
paxael   // перемещение к захвату kleft 858, 381 5 5 // П...   8.11.2020, 23:26
DarkMaster   учтите, что в старом синтаксисе переменные все гл...   8.11.2020, 23:29


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 7.7.2025, 20:06
Designed by Nickostyle