Author Topic: Выбор случайного значения из двух преложенных  (Read 3710 times)

0 Members and 5 Guests are viewing this topic.

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Собственно не получается всё никак понять, как же это реализовать.

Нужно объявить я так понимаю переменную, а потом что дальше я хз, не получается.

В общем нужно, чтобы после того как я нашел пиксель у меня был выбор из двух координат. А точнее - при нахождении пикселя - курсор двигается либо именно MOVE(159,357) или же второй вариант MOVE(123,321)
Именно такие вот значения, а не в перемешку.
Спасибо заранее.

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Мда уж, насколько все просто, но догадаться я почему то не смог. Спасибо)

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Примерно такое же и я думал попробовать сделать, но более сложный вариант. Сейчас у меня скрипт после нахождения цвета делает нажатия по заданным координатам. Вот они в этом куске кода:
Code: (clickermann) [Select]
getscreen
IF_PIXEL_IN (5,453, 590,545, 4375807)
   lclick($_return1, $_return2)
   WAITMS(50)
   LCLICK(134,131)
   WAITMS(50)
END_IF

getscreen
IF_PIXEL_IN (5,453, 590,545, 1589622)
   lclick($_return1, $_return2)
   WAITMS(50)
   LCLICK(134,131)
   WAITMS(50)
END_IF

LCLICK(1054,207)
Это 134,131 и 1054,207. Можно ли как-то задать переменные, чтобы в случайном порядке менялись эти координаты из заданных мною? Например, вместо 134,131 случайным образом выбиралась координата, например, либо 150,150, либо 200,200, либо 300,300? То же самое и с координатой 1054,207. Для неё выбор, например, 600,600, либо 700,700, либо 800,800.
Но только интересует не весь диапазон (или как оно там будет называться) от 150 до 300, а именно те координаты, которые я хочу.
Забыл добавить. Если скрипт при проходе цикла вместо координаты 134,131 выбрал 150,150, то и следующее нажатие должно быть в ту же координату. При новом проходе выбирается случайная координата, но опять же с условием, что вместо 134,131 скрипт нажмёт одну и ту же координату из заданных мною.
Версия кликера v4.7 SE, если это имеет значение.
« Last Edit: December 20, 2017, 02:16:27 PM by silver073000 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Забыл добавить. Если скрипт при проходе цикла вместо координаты...
Где здесь цикл?

в начале создаёшь массив с координатами
Code: (clickermann) [Select]
// заносим в массив все пары координат
STRSEPARATE("50:50:60:60:70:70:80:80:90:90:100:100:110:110:120:120", ":", $coords)

Выше поисков выбираешь координаты
Code: (clickermann) [Select]
$n = RND(0, (ARRSIZE($coords) / 2 - 1)) // случайный номер из номеров пар
$cx = $coords[$n*2]
$cy = $coords[$n*2 + 1]

Нуи в своих поисках кликаешь
Code: (clickermann) [Select]
LCLICK($cx, $cy)


silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
в начале создаёшь массив с координатами
Code: (clickermann) [Select]
// заносим в массив все пары координат
STRSEPARATE("50:50:60:60:70:70:80:80:90:90:100:100:110:110:120:120", ":", $coords)
Это, я так понял, для первой координаты? В моём случае это 134,131. Для второй примерно то же самое, только $coords2 будет. Ну и сами координаты прописывать во втором случае
Code: (clickermann) [Select]
$n2 = RND(0, (ARRSIZE($coords2) / 2 - 1)) // случайный номер из номеров пар
$cx2 = $coords[$n2*2]
$cy2 = $coords[$n2*2 + 1]
Или так нельзя? :)

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Столкнулся с такой проблемой :) Версия кликера 4.07 выдаёт ошибку на строке
Code: (clickermann) [Select]
$n2 = RND(0, (ARRSIZE($coords2) / 2 - 1)), но при этом правильно работает с окном. Последняя версия кликера правильно обрабатывает строку, но привязка к окну не совсем корректно работает. Если в момент нажатия кликера по координате над окном просто проводить курсором, то предметы смещаются, будто на них щёлкнули и перетащили.
Стоит у меня Win 7 x32
Целевое окно кликера BlueStacks.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Какая версия? 4.07  :o

Весь свой скрипт пиши.
Такой скрипт на версии 4.13.007b работает без ошибок
Code: (clickermann) [Select]
STRSEPARATE("50:50:60:60:70:70:80:80:90:90:100:100:110:110:120:120", ":", $coords)
$n = RND(0, (ARRSIZE($coords) / 2 - 1)) // случайный номер из номеров пар
$cx = $coords[$n*2]
$cy = $coords[$n*2 + 1]

LOGWRITE ($cx,",",$cy)
HALT

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Извиняюсь. Используется 4.7. Она корректно работает с целевым окном, но даёт сбой на строке
Code: (clickermann) [Select]
$n = RND(0, (ARRSIZE($coords) / 2 - 1))Последняя версия кликера работает отлично со строкой, но не совсем корректно работает привязка.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А, так ничего странного. 4.7 знать не знает что такое массивы. Они появились только в 4.8 версии и выше.

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Попробую найти 4.8. Сможет она обрабатывать эту строку? Авось, и привязка корректно работать будет :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Да, массивы появились только в 4.8
STRSEPARATE вообще в 4.11

Можно бы было на свитче сделать... но SWITCH появился в 4.9

Значит руками на IF-ах
Code: (clickermann) [Select]
$v = RND(1, 3) // 3 - это количество вариантов

IF($v = 1)
    LCLICK(150, 150)
ELSE
    IF($v = 2)
        LCLICK(200, 200)
    ELSE
        IF($v = 1)
            LCLICK(300, 300)
        END_IF
    END_IF
END_IF

Лесенку можно выделить в подпрограмму.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
По секрету. У одного Дяденьки на этом форуме, лежит архивчик,
 куда он натрамбовывает старые версии,
 как Дедуша Мороз  новогодние подарки в мешок!
:o

Вот эта коварная тема гражданской наружности:
http://crapware.aidf.org/forum/index.php?topic=2709.msg17161#msg17161


silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
А чегож, поищи. Вдруг версия повзрослела и окрепла за то время, что ей ни кто не пользуется.
Авось кроме привязки там много необычных, богом забытых, плюшек найдётся.
Язвить по этому поводу не надо.
Мне, например, совсем не хочется, чтобы случайно проведённый над окном курсор сбил всё расположение целей. Потому и использую именно версию 4.7, ибо могу курсором водить над окном и всё останется на своих местах. В последующих версиях происходит смещение целей. Потому и пытаюсь найти решение моей задачи именно под версию 4.7.

silver073000

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Значит руками на IF-ах
Code: (clickermann) [Select]
$v = RND(1, 3) // 3 - это количество вариантов

IF($v = 1)
    LCLICK(150, 150)
ELSE
    IF($v = 2)
        LCLICK(200, 200)
    ELSE
        IF($v = 1)
            LCLICK(300, 300)
        END_IF
    END_IF
END_IF

Лесенку можно выделить в подпрограмму.
Благодарю за этот вариант :) Отлично справляется с поставленными мною задачами.