Author Topic: эмуляция геймпада(джойстика)  (Read 4347 times)

0 Members and 1 Guest are viewing this topic.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
эмуляция геймпада(джойстика)
« on: September 11, 2014, 02:09:53 AM »
 Вобщем, даже незнаю, кому это может пригадиться, но всеже. Подумайте, может комуто упростит работу моя затея, и меня еще ктонибудь поддержит. :)

 Я даже непредставляю, как это сможет работать в кликере. Примерный принцип работы джойстика многие представляют. У вас рычаг, чем больше наклон вправо по оси х тем дальше удаляется точка от нулевой отметки вправо. Аналогично и в остальных направлениях. вроде всё просто.
 Чем же это может помоч? Я думаю каждый для себя найдет применения(конечноже в играх). Чем это поможет мне? Мне очень упростит управление траспорта в очень увлекательной онлайн игре. Для того, чтобы ехать в определенном направлении(по отношению к контрольной точке на радере, например ровно на север), мне надо было писать код, в котором на кнопки кликер нажимает со скоростью света, все это конечноже тупит и тормозит. Еслиже делать задержки, то петляет по дороге, кабудто еду с бара.
 Впринципе вот этот код у меня работал неплохо, кроме того, что он сильно грузил комп. Езда попрямой по радару на значек севера.

Code: (clickermann) [Select]
$KEYDOWN = 0x0100
$KEYUP = 0x0101
$w = 0x57
$s = 0x53
$a = 0x41
$d = 0x44

$seed = 0
POSTMESSAGE ($HWND, $KEYDOWN , $w , 0 )
GETSCREEN
WHILE($seed ! 1)
   IF_PICTURE_IN (54,600, 231,758, "3.bmp" , -1 , 30)
      $x = $_return1
      $y = $_return2
      IF($x = 135)
         WAITMS(150)
      END_IF
   END_IF
   

   IF($x < 135)
      POSTMESSAGE ($HWND, $KEYUP , $d , 0 )
      POSTMESSAGE ($HWND, $KEYDOWN , $a , 0 )
      IF($x < 125)
         WAITMS(75)
      END_IF
      IF($x < 129)
         WAITMS(25)
      END_IF
   END_IF
   IF($x > 135)
      POSTMESSAGE ($HWND, $KEYUP , $a , 0 )
      POSTMESSAGE ($HWND, $KEYDOWN , $d , 0 )
      IF($x > 145)
         WAITMS(75)
      END_IF
      IF($x > 141)
         WAITMS(25)
      END_IF
   END_IF
   WAITMS(5)
   POSTMESSAGE ($HWND, $KEYUP , $a , 0 )
   POSTMESSAGE ($HWND, $KEYUP , $d , 0 )
   WAITMS(15)
   GETSCREEN
   IF_PICTURE_IN (984,620, 1000,670, "4.bmp" , -1 , 40)
      $seed = 1
   END_IF
END_CYC

POSTMESSAGE ($HWND, $KEYUP , $w , 0 )
Всё бы ничего, еслибы не ввели защиту (кик за keyspam), и код перестал работать.

 Я думаю с эмуляцией джойстика без проблем можно былобы ездить по контрольным точкам. ведь принцип какой - IF($x < 125) - поворот влево с усилием 50%(поворот руля на 50%), IF($x < 129) - с усилием 25%. А можно же добавить таких условий 5-10 и это не сильно повлияет на производительность. Возможно я в чемто ошибаюсь, жду вашего мнения.

 Подумайте, возможно это глупая и никому ненужная затея. А возможно многим это поможет в реализации какох-либо игровых задач.

 Жду ваших ответов и вашего мнения.


aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: эмуляция геймпада(джойстика)
« Reply #1 on: September 11, 2014, 06:59:04 AM »
что мешает реализовать самому?

через SUB

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: эмуляция геймпада(джойстика)
« Reply #2 on: September 11, 2014, 10:38:34 AM »
что мешает реализовать самому?

через SUB
Поподробнее :o, я чегото недогоняю.

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: эмуляция геймпада(джойстика)
« Reply #3 on: September 11, 2014, 11:31:05 AM »
ну у джойстика все его кнопки как то интерпретируются игрой вычислить это и эмулировать то или иное нажатие

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: эмуляция геймпада(джойстика)
« Reply #4 on: September 11, 2014, 02:58:17 PM »
ну у джойстика все его кнопки как то интерпретируются игрой вычислить это и эмулировать то или иное нажатие
нажатие кнопок здесь не причем, я про палку, которая торчит из джойстика. угол наклона этой палки соответствует углу поворота руля, или скорости передвижения курсора, или еще чего. в настройках джойстика, например, это отображено на координатной плоскости. в зависимости от наклона манипулятора, точка, которая находится в нулевой координате, двигается по это плоскости. если отпустить его, то точка возвращается опятьже в нулевую координату.
по такому же принципу работает игровой руль, но в нем передвижение производится только по оси х.