Author Topic: Не нажимается мышка в Nox - работая в Bluestaks  (Read 4608 times)

0 Members and 1 Guest are viewing this topic.

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Доброго времени суток.
Задача: сдвинуть экран в эмуляторе, для чего зажать левую кнопку мышки, сдвинуть и отпустить.
Скрипт отлично работал в Блюстаксе. Сейчас потребовалось применить в Нокс - все прочее работает отлично, в т.ч. обычные клики, а вот при сдвиге экрана - мышка как будто не нажимается, а просто по экрану перемещается.
Не подскажете, в чем тут может быть подвох? Попробовал уже ldown заменить на POSTMESSAGE - результат не изменился :(

Code: [Select]
if($emulator_vybor=0)  // для Блюстака
   ldown(INT($x_pxl_lev_verh+$x_zone_pxl/2+$x_move_fict/2),INT($y_pxl_lev_verh+$y_zone_pxl/2+$y_move_fict/2))
else   // для Нокса
   $x_nox=INT($x_pxl_lev_verh+$x_zone_pxl/2+$x_move_fict/2)
   $y_nox=INT($y_pxl_lev_verh+$y_zone_pxl/2+$y_move_fict/2)
   POSTMESSAGE($hwnd1,0x0201,0x0001,$x_nox+($y_nox*65536))   //LDOWN
end_if
         print ("---кликнули на ", 70+284+$x_move_fict/2, " на ", 400+284+$y_move_fict/2)
   waitms(800+rnd(0,100))
   m_move(INT($x_pxl_lev_verh+$x_zone_pxl/2-$x_move_fict/2), INT($y_pxl_lev_verh+$y_zone_pxl/2-$y_move_fict/2))
   //      print("---Передвинулись на дальность", $x_move_fict, " и ", $y_move_fict)
   waitms(900+rnd(0,100))
if($emulator_vybor=0)  // для Блюстака
   lup($_xmouse, $_ymouse)
else   // для Нокса
   POSTMESSAGE($hwnd1,0x0202,0x0000,$_xmouse+($_ymouse*65536))   //LUP
end_if

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Пробуй mover вместо move.

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Пробуй mover вместо move.
Опробовал - увы, вообще никак... По описанию в хэлпах - mover  в оконном режиме не работает вообще :(

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Выкладываю весь блок, имеющий отношение к сдвигу экрана. Может тут что-то можно иное подкрутить, чтобы в Nox заработало? Впечатление, что при сдвиге - "не запоминает" что нажата кнопка мышки... Но именно в Nox, в Блюстаке все работает...

Code: [Select]
////////////////////////////////////////////////////////////////////////////////
///     подпрограмма замедленного передвижения                              ////
////////////////////////////////////////////////////////////////////////////////

SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_SPEED = 3  // множитель скорости
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0)+RND(-2,2), ROUND($MOVE_Y,0)+RND(-2,2)) // добавляем рандом
      WAITMS($rnwait) // задержка при движении по точкам
   END_CYC
   
END_SUB

SUB(m_move,$M_X,$M_Y)
   $rnwait = RND(6,15) // случайная скорость
   $MOVE_MID_X = ($_xmouse+$M_X)/2
   $MOVE_MID_Y = ($_ymouse+$M_Y)/2
   mouse_move($MOVE_MID_X+RND(-30,30),$MOVE_MID_Y+RND(-30,30))
   mouse_move($M_X,$M_Y)
   MOVE($M_X,$M_Y) //передвинуть окончательно в заданную точку
END_SUB


/////////////////////////////////////////
// а это вырезка из основного кода:
 
//---получить куда хотим идти
$x_boi_map=INT(rnd(0, ABS($x_tetraedr*$x_mashtab-$x_zone_pxl-$x_pogreshn)))
$y_boi_map=INT(rnd(0, ABS($y_tetraedr*$y_mashtab-$y_zone_pxl-2*$y_pogreshn)))

//---переезд на новое место
while ((ABS($x_boi_map-$x_tekush_abs) > 3)|(ABS($y_boi_map-$y_tekush_abs) > 3))
   
   // расчеты точек сдвига
   if (ABS($x_boi_map-$x_tekush_abs) > (INT(3/4*$x_zone_pxl)))
      if ($x_boi_map-$x_tekush_abs > 0)
         $x_move_fict=INT(3/4*$y_zone_pxl)
      else
         $x_move_fict=(-1)*INT(3/4*$y_zone_pxl)
      end_if
   else
      $x_move_fict=$x_boi_map-$x_tekush_abs
   end_if
   
   if (ABS($x_move_fict/2)>INT(ABS($x_move_fict/2))) //уменьшение до четного числа
      if ($x_move_fict>0)
         $x_move_fict = $x_move_fict-1
      else
         $x_move_fict = $x_move_fict+1
      end_if
   end_if
   //      print("текущее $x_move_fict = ", $x_move_fict)
   
   if (ABS($y_boi_map-$y_tekush_abs) > (INT(3/4*$y_zone_pxl)))
      if ($y_boi_map-$y_tekush_abs > 0)
         $y_move_fict=INT(3/4*$y_zone_pxl)
      else
         $y_move_fict=(-1)*INT(3/4*$y_zone_pxl)
      end_if
   else
      $y_move_fict=$y_boi_map-$y_tekush_abs
   end_if
   
   if (ABS($y_move_fict/2)>INT(ABS($y_move_fict/2))) //уменьшение до четного числа
      if ($y_move_fict>0)
         $y_move_fict = $y_move_fict-1
      else
         $y_move_fict = $y_move_fict+1
      end_if
   end_if
   //      print("текущее $y_move_fict = ", $y_move_fict)
   
   // собственно начало сдвига
   if($emulator_vybor=1)  // для Блюстака
      ldown(INT($x_pxl_lev_verh+$x_zone_pxl/2+$x_move_fict/2),INT($y_pxl_lev_verh+$y_zone_pxl/2+$y_move_fict/2))
   else   // для Нокса, экспериментировал по разному :(
      $x_nox=INT($x_pxl_lev_verh+$x_zone_pxl/2+$x_move_fict/2)
      $y_nox=INT($y_pxl_lev_verh+$y_zone_pxl/2+$y_move_fict/2)
     
      move($x_nox,$y_nox)  // просто поставили мышь на начальную точку
      print("переместили мышь на ", $_xmouse, " ", $_ymouse)
      POSTMESSAGE($hwnd1,0x0201,0x0001,$x_nox+($y_nox*65536))   //LDOWN
      //   ldown($x_nox,$y_nox)
      waitms(1250+rnd(0,50))
     
   end_if
   print("---кликнули на ", $_xmouse, " ", $_ymouse)
   waitms(250+rnd(0,50))
   m_move(INT($x_pxl_lev_verh+$x_zone_pxl/2-$x_move_fict/2), INT($y_pxl_lev_verh+$y_zone_pxl/2-$y_move_fict/2))
   //      print("---Передвинулись на дальность", $x_move_fict, " и ", $y_move_fict)
   waitms(900+rnd(0,100))
   if($emulator_vybor=1)  // для Блюстака
      lup($_xmouse, $_ymouse)
   else   // для Нокса
      POSTMESSAGE($hwnd1,0x0202,0x0000,$_xmouse+($_ymouse*65536))   //LUP
   end_if
   print("---Отжали мышь на ", $_xmouse, " ", $_ymouse)
   waitms(900+rnd(0,150))
   
   $x_tekush_abs=$x_tekush_abs+$x_move_fict
   $y_tekush_abs=$y_tekush_abs+$y_move_fict
   //      print("Координаты новой карты для боя (пиксели относит.лев.верхн.края Города):")
   //      print("сдвинули карту, =", $x_tekush_abs, " и ", $y_tekush_abs)
end_cyc

//   print("...приехали =", $x_tekush_abs, " и ", $y_tekush_abs)



Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Code: (clickermann) [Select]
POSTMESSAGE($hwnd1,0x0202,0x0000,$_xmouse+($_ymouse*65536))
в ряде эмуляторов ведра как ни странно нужно вместо команды отжатия лкм (202) отправлять просто нулевую команду (0)
дикость с точки зрения winapi но говорят работает