Author Topic: Вопрос В помощи освоения условий Else, WHILE,  (Read 19391 times)

0 Members and 1 Guest are viewing this topic.

JacsoN

  • Активный участник
  • ***
  • Posts: 152
  • извините но мне нужны полнейшие обяснения
    • View Profile
Вот так   искать  несколько  картинок ?   и  если  да  то  тут  нужны  Wait? или  поубирать? 
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (506,393, 779,1008, "zp.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (506,393, 779,1008, "zp.bmp", -1, 100)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         IF_PICTURE_IN (506,393, 779,1008, "zp.bmp", -1, 100)
            $check = 1
            LCLICK($_return1, $_return2)
            WAITMS(100)
         ELSE
            WAITMS(50)
         END_IF
      END_CYC
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         IF_PIXEL_IN(711,389, 773,956, 113282)
            $check = 1
            LCLICK($_return1, $_return2)
            WAITMS(100)
         ELSE
            WAITMS(50)
         END_IF
      END_CYC
  а  как тут  теперь  скорость поиска?  дольше  искать  будет ?    может  выгоднее  запустить  несколько Кликерманов?
« Last Edit: January 11, 2020, 10:00:22 PM by JacsoN »
если  есть  возможность  объясни  по  скайпу  что  да  как

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Не верные параметры в заголовке подпрограммы
SUB(Find_pix, $x, $y, $x1, $y1, $color, $check = 0)

Кликер не поддерживает пока присвоение переменным значения.
Правильно так:
Code: (clickermann) [Select]
SUB(Find_pix, $x, $y, $x1, $y1, $color, $check)Но в случаи того скрипта $check там вообще нельзя писать, та как в вызове нет такого параметра. Отсюда и ошибка.

На счет твоего скрипта верно так
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (506,393, 779,1008, "zp.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (506,393, 779,1008, "zp.bmp", -1, 100)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         IF_PICTURE_IN (506,393, 779,1008, "zp.bmp", -1, 100)
            $check = 1
            LCLICK($_return1, $_return2)
            WAITMS(100)
         ELSE
            WAITMS(50)
         END_IF
      END_IF
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(711,389, 773,956, 113282)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
а  как тут  теперь  скорость поиска?  дольше  искать  будет ?    может  выгоднее  запустить  несколько Кликерманов?

Искать будет картинки друг за другом, пока не совпадет. Скорость зависит от размера области поиска и размера картинки поиска.

JacsoN

  • Активный участник
  • ***
  • Posts: 152
  • извините но мне нужны полнейшие обяснения
    • View Profile
а  как тут  теперь  скорость поиска?  дольше  искать  будет ?    может  выгоднее  запустить  несколько Кликерманов?

Искать будет картинки друг за другом, пока не совпадет. Скорость зависит от размера области поиска и размера картинки поиска.
Размер  картинки 1x30-50 пикселей в  длину  примерно  такая  картинка , а  еще  что скажешь  из  личного  опыта  2- запущенных  кликермана   медленнее  будут  работать   чем 1 нос  полным  кодом?  то есть  если  в  каждом кликермане  задать  область  допустим 1 половина  экрана и 2   вторая  половина экрана
« Last Edit: January 11, 2020, 10:28:36 PM by JacsoN »
если  есть  возможность  объясни  по  скайпу  что  да  как

gogodanse

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Народ кто шарит может кинуть правильно смысл

(strpos($Масив в котором ищем, "Фраза1", "Фраза2"))

Выдает ошибку, что не так ?

Мне нужно чтобы он любую из двух фраз искал, а не обе сразу
« Last Edit: January 12, 2020, 03:09:52 PM by gogodanse »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Народ кто шарит может кинуть правильно смысл

(strpos($Масив в котором ищем, "Фраза1", "Фраза2"))

Выдает ошибку, что не так ?

Мне нужно чтобы он любую из двух фраз искал, а не обе сразу

Clickermann -> Справка -> Язык сценариев -> Строки и строковые файлы -> strpos
strpos вроде только одну подстроку ищет...
Я не ду... Потому и не бу...

gogodanse

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Народ кто шарит может кинуть правильно смысл

(strpos($Масив в котором ищем, "Фраза1", "Фраза2"))

Выдает ошибку, что не так ?

Мне нужно чтобы он любую из двух фраз искал, а не обе сразу

Clickermann -> Справка -> Язык сценариев -> Строки и строковые файлы -> strpos
strpos вроде только одну подстроку ищет...

А если два условия поставить это будет бред ?

Допустим:

(strpos($Масив в котором ищем, "Фраза1"))
(strpos($Масив в котором ищем, "Фраза2"))

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Народ кто шарит может кинуть правильно смысл

(strpos($Масив в котором ищем, "Фраза1", "Фраза2"))

Выдает ошибку, что не так ?

Мне нужно чтобы он любую из двух фраз искал, а не обе сразу

Clickermann -> Справка -> Язык сценариев -> Строки и строковые файлы -> strpos
strpos вроде только одну подстроку ищет...

А если два условия поставить это будет бред ?

Допустим:

(strpos($Масив в котором ищем, "Фраза1"))
(strpos($Масив в котором ищем, "Фраза2"))
Code: (clickermann) [Select]
// Так ищем обе подстроки
IF(strpos($stroka, "Фраза1"))
   IF(strpos($stroka, "Фраза2"))
      LOGWRITE ("Обе подстроки найдены")
   END_IF
END_IF
// А так ищем любую из подстрок
$flag = 0
IF(strpos($stroka, "Фраза1"))
   $flag = 1
else
   IF(strpos($stroka, "Фраза2"))
      $flag = 1
   END_IF
END_IF

IF($flag)
   LOGWRITE ("Одна из подстрок, или обе присутствуют.")
END_IF
« Last Edit: January 12, 2020, 06:04:29 PM by Hito »
Я не ду... Потому и не бу...

gogodanse

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Народ кто шарит может кинуть правильно смысл

(strpos($Масив в котором ищем, "Фраза1", "Фраза2"))

Выдает ошибку, что не так ?

Мне нужно чтобы он любую из двух фраз искал, а не обе сразу

Clickermann -> Справка -> Язык сценариев -> Строки и строковые файлы -> strpos
strpos вроде только одну подстроку ищет...

А если два условия поставить это будет бред ?

Допустим:

(strpos($Масив в котором ищем, "Фраза1"))
(strpos($Масив в котором ищем, "Фраза2"))
Code: (clickermann) [Select]
// Так ищем обе подстроки
IF(strpos($stroka, "Фраза1"))
   IF(strpos($stroka, "Фраза2"))
      LOGWRITE ("Обе подстроки найдены")
   END_IF
END_IF
// А так ищем любую из подстрок
$flag = 0
IF(strpos($stroka, "Фраза1"))
   $flag = 1
else
   IF(strpos($stroka, "Фраза2"))
      $flag = 1
   END_IF
END_IF

IF($flag)
   LOGWRITE ("Одна из подстрок, или обе присутствуют.")
END_IF

Блин не хотел я else использовать :((( ну ладно спасибо hit <3 как обычно выручил, щас ещё подумаю если что дак этот использую

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Блин не хотел я else использовать :(((
А чем else тебе не нравится...?
Я не ду... Потому и не бу...

gogodanse

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Блин не хотел я else использовать :(((
А чем else тебе не нравится...?

Посмотри пожалуйста

$pack1 = "Окно1"
$close1 = WNDFIND("Окно1")
$HTML = HTTPGET ("Ссылка на сайт")
if (strpos($HTML, "Фраза 1")) если фраза найдена
   if(wndfind($pack1)) // если окно не открыто
   else
Выполняем действия для открытия окна
   END_IF
END_IF

if (strpos($HTML, "Фраза1")) Тут через else тоесть если фраза не найдена
else
   if(wndfind($pack1))  А окно открыто
Выполняем действия для закрытия окна
   END_IF
END_IF

Дак вот я понял что на сайте может быть 2 разные фразы, и мне нужно сделать так чтобы он искал обе фразы
« Last Edit: January 12, 2020, 07:50:42 PM by gogodanse »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Блин не хотел я else использовать :((( ну ладно спасибо hit <3 как обычно выручил, щас ещё подумаю если что дак этот использую

вот тебе без ELSE, в чем проблема то?..
Code: (clickermann) [Select]
// Так ищем обе подстроки
IF((strpos($stroka, "Фраза1") > 0) & (strpos($stroka, "Фраза2") > 0))
   LOGWRITE ("Обе подстроки найдены")
END_IF

// А так ищем любую из подстрок
IF((strpos($stroka, "Фраза1") > 0) | (strpos($stroka, "Фраза2") > 0))
   LOGWRITE ("Одна из подстрок, или обе присутствуют.")
END_IF


Посмотри пожалуйста

$pack1 = "Окно1"
$close1 = WNDFIND("Окно1")
$HTML = HTTPGET ("Ссылка на сайт")
if (strpos($HTML, "Фраза 1")) если фраза найдена
   if(wndfind($pack1)) // если окно не открыто
   else
Выполняем действия для открытия окна
   END_IF
END_IF

if (strpos($HTML, "Фраза1")) Тут через else тоесть если фраза не найдена
else
   if(wndfind($pack1))  А окно открыто
Выполняем действия для закрытия окна
   END_IF
END_IF

Дак вот я понял что на сайте может быть 2 разные фразы, и мне нужно сделать так чтобы он искал обе фразы

Code: (clickermann) [Select]
$pack1 = "Окно1"
$close1 = WNDFIND("Окно1")
$HTML = HTTPGET ("Ссылка на сайт")
if ((strpos($HTML, "Фраза 1") > 0) | (strpos($HTML, "Фраза 2") > 0)) // если фраза найдена
   if(wndfind($pack1) = 0) // если окно не открыто
      // Выполняем действия для открытия окна
   END_IF
ELSE // Тут через else тоесть если фраза не найдена
   if(wndfind($pack1) > 0)  // А окно открыто
      // Выполняем действия для закрытия окна
   END_IF   
END_IF
« Last Edit: January 12, 2020, 10:04:12 PM by Oraven »

gogodanse

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Блин не хотел я else использовать :((( ну ладно спасибо hit <3 как обычно выручил, щас ещё подумаю если что дак этот использую

вот тебе без ELSE, в чем проблема то?..
Code: (clickermann) [Select]
// Так ищем обе подстроки
IF((strpos($stroka, "Фраза1") > 0) & (strpos($stroka, "Фраза2") > 0))
   LOGWRITE ("Обе подстроки найдены")
END_IF

// А так ищем любую из подстрок
IF((strpos($stroka, "Фраза1") > 0) | (strpos($stroka, "Фраза2") > 0))
   LOGWRITE ("Одна из подстрок, или обе присутствуют.")
END_IF


Посмотри пожалуйста

$pack1 = "Окно1"
$close1 = WNDFIND("Окно1")
$HTML = HTTPGET ("Ссылка на сайт")
if (strpos($HTML, "Фраза 1")) если фраза найдена
   if(wndfind($pack1)) // если окно не открыто
   else
Выполняем действия для открытия окна
   END_IF
END_IF

if (strpos($HTML, "Фраза1")) Тут через else тоесть если фраза не найдена
else
   if(wndfind($pack1))  А окно открыто
Выполняем действия для закрытия окна
   END_IF
END_IF

Дак вот я понял что на сайте может быть 2 разные фразы, и мне нужно сделать так чтобы он искал обе фразы

Code: (clickermann) [Select]
$pack1 = "Окно1"
$close1 = WNDFIND("Окно1")
$HTML = HTTPGET ("Ссылка на сайт")
if ((strpos($HTML, "Фраза 1") > 0) | (strpos($HTML, "Фраза 2") > 0)) // если фраза найдена
   if(wndfind($pack1) = 0) // если окно не открыто
      // Выполняем действия для открытия окна
   END_IF
ELSE // Тут через else тоесть если фраза не найдена
   if(wndfind($pack1) > 0)  // А окно открыто
      // Выполняем действия для закрытия окна
   END_IF   
END_IF

Я так понимаю это оптимизация моего кода D:

Все было так просто , спасибо большое  ::)

JacsoN

  • Активный участник
  • ***
  • Posts: 152
  • извините но мне нужны полнейшие обяснения
    • View Profile
Не верные параметры в заголовке подпрограммы
SUB(Find_pix, $x, $y, $x1, $y1, $color, $check = 0)

Кликер не поддерживает пока присвоение переменным значения.
Правильно так:
Code: (clickermann) [Select]
SUB(Find_pix, $x, $y, $x1, $y1, $color, $check)Но в случаи того скрипта $check там вообще нельзя писать, та как в вызове нет такого параметра. Отсюда и ошибка.
Всем  привет   вот    я внес  изминения  по твоим  рекомендациям  и всеравно  такое  высвечивается  скрин  Ниже   подскажите  как  проправить   чтобы  работало  на  ура
 
Code: (clickermann) [Select]
//Оптимизируем код так как он повторяется 6 раз
SUB(Find_pix, $x, $y, $x1, $y1, $color, $check)
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN($x, $y, $x1, $y1, $color)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
         LOGWRITE ("pix fined")
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
end_sub

//Ждем картинку  ===========================================================
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (117,141, 183,1016, "2.bmp")
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (117,141, 183,1016, "0.bmp")
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
      IF_PICTURE_IN (117,141, 183,1016, "1.bmp")
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
       END_IF
END_IF
   END_IF
END_CYC


//Если картинка найдена то ищем пиксели итд.
Find_pix(496, 945, 498, 950, 213)  //  Есть
Find_pix(397, 797, 412, 803, 213) // Жду
Find_pix(462, 636, 485, 642, 213)   //  есть
с  сабами  не  работал  никогда  для меня  все новое   пока  разбираюсь
если  есть  возможность  объясни  по  скайпу  что  да  как

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
   подскажите  как  проправить   чтобы  работало  на  ура

Количество параметров в вызове меньше чем установленных переменных в заголовке подпрограммы.
Code: (clickermann) [Select]
Find_pix(496, 945, 498, 950, 213)
Code: (clickermann) [Select]
SUB(Find_pix, $x, $y, $x1, $y1, $color, $check)
Code: (clickermann) [Select]
//Оптимизируем код так как он повторяется 6 раз
SUB(Find_pix, $x, $y, $x1, $y1, $color)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN($x, $y, $x1, $y1, $color)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
         LOGWRITE ("pix fined")
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
end_sub

//Ждем картинку  ===========================================================
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (117,141, 183,1016, "2.bmp")
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (117,141, 183,1016, "0.bmp")
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         IF_PICTURE_IN (117,141, 183,1016, "1.bmp")
            $check = 1
            LCLICK($_return1, $_return2)
            WAITMS(100)
         ELSE
            WAITMS(50)
         END_IF
      END_IF
   END_IF
END_CYC


//Если картинка найдена то ищем пиксели итд.
Find_pix(496, 945, 498, 950, 213)  //  Есть
Find_pix(397, 797, 412, 803, 213) // Жду
Find_pix(462, 636, 485, 642, 213)   //  есть