Author Topic: Помощь в создании бота на примере браузерной игры mycultures online  (Read 28094 times)

0 Members and 1 Guest are viewing this topic.

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Как мне научиться так писать код? Кстати с праздником!

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Начинаю вникать, и вылезают непонятные вещи, к примеру написанный код удаления отчетов, работает если я нажимаю зеленую кнопку пуска скрипта, при нажатии ALT+A. Скрипт картинку находит на экарне, но действия дальше не делает, как будто окно с приложением не активно, в чем проблема?

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\prishlosoobsheniefuul24bit.bmp")
   MOVE($_return1+130, $_return2-40)
   wait(3)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (913,213,1016,238, "bmp\zakritotchet2bit.bmp",-1,45)
      LCLICK($_return1, $_return2)
     
   END_IF
Else
   HINTPOPUP("Ñîîáùåíèé íåò")
END_IF
MOVE($_xmax,$_ymax)
wait(2)

GETSCREEN
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\otchetosragenii24bit.bmp")
   MOVE($_return1+50, $_return2-40)
   wait(3)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (913,213,1016,238, "bmp\zakritotchet2bit.bmp",-1,30)
      LCLICK($_return1, $_return2)
     
   END_IF
Else
   HINTPOPUP("Îò÷åòîâ íåò")
END_IF
Else
HINTPOPUP("Íè÷åãî íå ïðèøëî")


HALT


P.S. У меня в браузере комментарии скрипта абракадаброй показываются, как исправить?
« Last Edit: September 17, 2013, 12:33:36 AM by johnix »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Лишний Else в конце

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\prishlosoobsheniefuul24bit.bmp")
   MOVE($_return1+130, $_return2-40)
   wait(3)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (913,213,1016,238, "bmp\zakritotchet2bit.bmp",-1,45)
      LCLICK($_return1, $_return2)
     
   END_IF
Else
   HINTPOPUP("Сообщений нет")
END_IF
MOVE($_xmax,$_ymax)
wait(2)

GETSCREEN
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\otchetosragenii24bit.bmp")
   MOVE($_return1+50, $_return2-40)
   wait(3)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (913,213,1016,238, "bmp\zakritotchet2bit.bmp",-1,30)
      LCLICK($_return1, $_return2)
     
   END_IF
Else
   HINTPOPUP("Отчетов нет")
END_IF

HINTPOPUP("Ничего не пришло")

HALT

При нажатии кнопки Alt происходит потеря фокуса, нужно предварительно кликнуть по игре (можно прописать в скрипте) чтобы фокус восстановился.

Исправить кодировку помогает изменение вот этих параметров в ключе CodePage
Тут имеется ввиду 3 параметра
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
Сделай бекап ключа, исправь и перезагрузи комп.


Code: [Select]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1253.nls"
"1254"="c_1254.nls"
"1255"="c_1255.nls"
"1256"="c_1256.nls"
"1257"="c_1257.nls"
"1258"="c_1258.nls"
"1361"="c_1361.nls"
« Last Edit: September 17, 2013, 01:24:02 AM by Oraven »

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Изменение реестра не помогло, заметил что в телефонном браузере та же фигня, но когда вы пишите мой код, он отображает русские символы, что за прикол?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Это потому что я декодировал твой текст.

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Это потому что я декодировал твой текст.
Как?
Проверил, в новом сообщении русские символы отображает правильно, спасибо!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Давно уже у меня лежит старая программка "Shtirlitz IV". Она для декодирования текстов из разных кодировок.

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Этот скрипт зациклиться?
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(5)
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\login.bmp",-1,80)
 DBLCLICK($_return1+50, $_return2) //
   KEYSTRING($login)
   WAIT(1)
   LCLICK($_return1+50, $_return2+40)
   WAIT(10)
   LCLICK(988,616)  // 10412001
   wait(1)
   LCLICK(885,449)  // 5931704
ELSE wait(10)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
После Else ничего не пишется.

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(5)
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\login.bmp",-1,80)
   DBLCLICK($_return1+50, $_return2) //
   KEYSTRING($login)
   WAIT(1)
   LCLICK($_return1+50, $_return2+40)
   WAIT(10)
   LCLICK(988,616)  // 10412001
   wait(1)
   LCLICK(885,449)  // 5931704
ELSE
   wait(10)
END_IF

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Понятно, так этот поиск картинки зациклиться? Мне нужно сделать так, что если он не найдет картинку, он будет ее искать бесконечно, если найдет, то выполняется действие

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Такой код буедт отражать то что я хочу?
Code: (clickermann) [Select]
start:   
GETSCREEN
    COLORMODE(5)
    IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\login.bmp",-1,80)
      DBLCLICK($_return1+50, $_return2) //
      KEYSTRING($login)
      WAIT(1)
      LCLICK($_return1+50, $_return2+40)
      WAIT(10)
      LCLICK(988,616)  // 10412001
      wait(1)
      LCLICK(885,449)  // 5931704
    ELSE
      goto (start)
    END_IF

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Я так понял это только часть кода, немного по нубски но да это будет работать. Но я бы добавил небольшую задержку если login.bmp не найден, это разгрузит процессор.

Code: (clickermann) [Select]
start:
GETSCREEN
COLORMODE(5)
IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\login.bmp",-1,80)
   DBLCLICK($_return1+50, $_return2) //
   KEYSTRING($login)
   WAIT(1)
   LCLICK($_return1+50, $_return2+40)
   WAIT(10)
   LCLICK(988,616)  // 10412001
   wait(1)
   LCLICK(885,449)  // 5931704
ELSE
   WAITMS(100)
   goto (start)
END_IF

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
а что вы можете предложить, чобы это было менее нубски?

Oraven

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

Использование специально для этого предназначенных циклов конечно!

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (1,1,$_xmax,$_ymax, "bmp\login.bmp",-1,80)
      $check = 1
      DBLCLICK($_return1+50, $_return2) //
      KEYSTRING($login)
      WAIT(1)
      LCLICK($_return1+50, $_return2+40)
      WAIT(10)
      LCLICK(988,616)  // 10412001
      wait(1)
      LCLICK(885,449)  // 5931704
   ELSE
      WAITMS(100)
   END_IF
END_CYC

Эта GOTO очень быстро превращается в клубок с беготней по всему скрипту во всех мыслимых и не мыслимых направлениях. Цикл же, выполняется логично построчно. Переменная $check изменилась, цикл больше не действует.
« Last Edit: October 01, 2013, 11:05:37 PM by Oraven »

johnix

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
А теперь для понимания. Правильно ли я вас понимаю, если переменная "проверка" равна нулю, и картинка логина не находилась, будет выполнять условие задержка 100 мс, но если картинка была найдена, то выполниться условие "аутентификация" и переменной "проверка" присвоится значение единицы, исключая ее тем самым из скрипта на совсем?