Author Topic: Нужна лёгкая помощь  (Read 5268 times)

0 Members and 1 Guest are viewing this topic.

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Нужна лёгкая помощь
« on: February 22, 2017, 09:02:42 PM »
Нужно написать макрос для игры кс:го что-бы после зажатия ЛКМ (допустим в АК-47 разница между выстрелами 80 мс) каждые 80 мс прицел опускался вниз, вот так: после 1-го - на 3 пикселя, 2-го - на 6 пикс., 3-го на 11 пикс., 4-го - на 19 пикс., 5-го - на 27 пикс. Скриптами только начал пользоваться, потому прошу помощи у вас)

И ещё, в кс-ке мышка привязывается в центре екрана в таких координатах - 640,512 , мб поможет.
« Last Edit: February 22, 2017, 09:05:17 PM by Денди, денди пуудж »

Атеист

  • Guest
Re: Нужна лёгкая помощь
« Reply #1 on: February 23, 2017, 02:42:47 PM »
С Праздником Господа Защитники Отечества!
Информации в задаче маловато конечно, плюс мое незнание КС. Нужно ли смещать прицел по обеим осям, или только по вертикальной оси Y?
Суммируются ли смещения прицела после выстрелов, или отсчет идет от положения прицела до стрельбы?
Взял за точку отсчета вот это видео - https://youtu.be/rTqZ3ZmB8U4?t=105
Короче, вот скрипт для компенсации отдачи оружия (для стрельбы очередями от 1 до 5 выстрелов). Между очередями пауза в 100 миллисекунд, и возврат оружия в исходное положение, с учетом текущего положения курсора. Смещение прицела только по вертикальной оси, как в задаче.
Вообще идея с прицелом хорошая, надо развивать.

Code: (clickermann) [Select]
STRSEPARATE("3:6:11:19:27", ":", $arr) // смещения прицела вниз по оси Y после выстрелов
$arrsize = ARRSIZE($arr)

WHILE(1)
   
   FOR($n = 0, ($n < $arrsize) & (ISKEYDOWN(1) = 1)) // если нажата ЛКМ
     
      $y = $arr[$n] // величина смещения (в пикселах)
     
      MOVE($_xmouse, $_ymouse + $y) // компенсация отдачи оружия (смещение прицела вниз по оси Y)
     
      WAITMS(80) // задержка между выстрелами
     
      INC($z, $y) // СУММА смещений прицела при стрельбе
     
   END_CYC
   
   IF($y ! 0) // если были сделаны выстрелы (нажатия ЛКМ)
     
      MOVE($_xmouse, $_ymouse - $z) // возврат оружия в исходное положение, как до стрельбы
     
      WAITMS(100) // пауза между очередями
     
      UNDEFINE($y)
      UNDEFINE($z)
     
   ELSE
     
      WAITMS(10) // интервал между проверками нажатия ЛКМ
     
   END_IF
   
END_CYC
« Last Edit: February 23, 2017, 07:59:25 PM by Атеист »

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #2 on: February 23, 2017, 07:06:46 PM »
Спасибо огромное за скрипт, но не могу понять в чём проблема, на рабочем столе мышка плавно опускается на заданное количество пикселей, как только нахожу в игру в кс, и начинаю стрелять, прицел мгновенно фиксируется на земле снизу и начинает кружится по кругу, отключаю скрипт - всё норм, не подскажешь в чём проблема? Мб  это типо античита?)
Можно как-то фото/видео прицепить сюда?
« Last Edit: February 23, 2017, 07:19:12 PM by Денди, денди пуудж »

Атеист

  • Guest
Re: Нужна лёгкая помощь
« Reply #3 on: February 23, 2017, 07:20:41 PM »
Трудно сказать в чем проблема, в КС как такового курсора нет, возможно смещения нужно подобрать другие. А может и античит. Попробуй смещения поменьше сделать. К сожалению мне негде протестировать скрипт.

Видео и картинки можно залить на хостинг, типа https://www.youtube.com/ или http://hostingkartinok.com/ и в свое сообщение на форуме вставить ссылку.
« Last Edit: February 23, 2017, 07:46:47 PM by Атеист »

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #4 on: February 23, 2017, 08:01:43 PM »
Ок, сегодня не смогу, постараюсь завтра вечером описать проблему как можно лучше

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #5 on: February 23, 2017, 09:11:50 PM »
Оххх, сорян за качество,провайдер мудак инет слабый и так еле загрузил, но смысл ты поймёшь                                                                                                                                                                                 https://www.youtube.com/watch?v=4urgJL8Sjxw

Атеист

  • Guest
Re: Нужна лёгкая помощь
« Reply #6 on: February 23, 2017, 09:35:20 PM »
В этом скрипте есть пара переменных, значения которых не известны заранее. Это системные переменные текущих координат курсора $_xmouse и $_ymouse. От них высчитывается значение смещения прицела. Надо посмотреть какие координаты содержат эти переменные при стрельбе.
В скрипт, в цикл FOR нужно вставить строку:
LOGWRITE ($_xmouse, ",", $_ymouse)
и посмотреть что в журнале будет. Можно и другие переменные тоже проверить, но с ними вроде всё предсказуемо.

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #7 on: February 23, 2017, 10:09:41 PM »
Надо было вот так дописать?

WHILE(1)
 
   FOR($n = 0, ($n < $arrsize) & (ISKEYDOWN(1) = 1)) // если нажата ЛКМ
 
         LOGWRITE ($_xmouse, ",", $_ymouse)
     
        $y = $arr[$n] // величина смещения (в пикселах)
 
      MOVE($_xmouse, $_ymouse + $y) // компенсация отдачи оружия (смещение прицела вниз по оси Y)
 

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #8 on: February 23, 2017, 10:11:35 PM »
Крч я понятия не имею как правильно писать на этом языке, потому лучше будет тебе скинуть весь скрипт как надо и расказать что нажимать и куда смотреть))

Атеист

  • Guest
Re: Нужна лёгкая помощь
« Reply #9 on: February 23, 2017, 10:20:15 PM »
Да, всё верно. Нужно посмотреть что оставит в логе скрипт при стрельбе и выложить лог сюда.

[spoiler= Скрипт]
Code: (clickermann) [Select]
    STRSEPARATE("3:6:11:19:27", ":", $arr) // смещения прицела вниз по оси Y после выстрелов
    $arrsize = ARRSIZE($arr)
     
    WHILE(1)
     
       FOR($n = 0, ($n < $arrsize) & (ISKEYDOWN(1) = 1)) // если нажата ЛКМ
     
          LOGWRITE ($_xmouse, ",", $_ymouse)

          $y = $arr[$n] // величина смещения (в пикселах)
     
          MOVE($_xmouse, $_ymouse + $y) // компенсация отдачи оружия (смещение прицела вниз по оси Y)
     
          WAITMS(80) // задержка между выстрелами
     
          INC($z, $y) // СУММА смещений прицела при стрельбе
     
       END_CYC
     
       IF($y ! 0) // если были сделаны выстрелы (нажатия ЛКМ)
     
          MOVE($_xmouse, $_ymouse - $z) // возврат оружия в исходное положение, как до стрельбы
     
          WAITMS(100) // пауза между очередями
     
          UNDEFINE($y)
          UNDEFINE($z)
     
       ELSE
     
          WAITMS(10) // интервал между проверками нажатия ЛКМ
     
       END_IF
     
    END_CYC
[/spoiler]

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #10 on: February 23, 2017, 10:36:56 PM »
Нууу, скорее всего это тебя огорчит

21:37:43 640,512
21:37:43 640,512
21:37:43 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:44 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:45 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512
21:37:46 640,512

Атеист

  • Guest
Re: Нужна лёгкая помощь
« Reply #11 on: February 23, 2017, 11:20:46 PM »
Не то чтоб сильно огорчило, но видимо на эти переменные опереться не получится. Есть еще процедура MOVER в запасе, но с ней тоже не всё гладко. Еще можно попробовать клавиатуру использовать для смещения прицела. Может быть режим ps/2 поможет. Получается гаданием занимаюсь, без самой игры трудно что либо придумать.  :-\

А уменьшение смещений что нибудь меняет? Если заменить первую строку вот такой:
Code: (clickermann) [Select]
STRSEPARATE("1:1:1:1:1", ":", $arr) // смещения прицела вниз по оси Y после выстрелов
З.Ы. Качаю игру, будет время попробую допилить скрипт.
[spoiler=Я буду устанавливать сейчас все игры!][/spoiler]
« Last Edit: February 24, 2017, 12:09:17 AM by Атеист »

Денди, денди пуудж

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: Нужна лёгкая помощь
« Reply #12 on: February 23, 2017, 11:49:21 PM »
Нет, не меняется совсем ничего, ни лог, ни действия в игре(
« Last Edit: February 23, 2017, 11:59:05 PM by Денди, денди пуудж »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Нужна лёгкая помощь
« Reply #13 on: February 24, 2017, 08:45:57 AM »
В 3D игре правильно работает только MOVER!

Code: (clickermann) [Select]
STRSEPARATE("3:6:11:19:27", ":", $arr) // смещения прицела вниз по оси Y после выстрелов
$arrsize = ARRSIZE($arr)

WHILE(1)
   
   FOR($n = 0, ($n < $arrsize) & (ISKEYDOWN(1) = 1)) // если нажата ЛКМ
      $y = $arr[$n] // величина смещения (в пикселах)
      MOVER(0,$y) // компенсация отдачи оружия (смещение прицела вниз по оси Y)
      WAITMS(80) // задержка между выстрелами
      INC($z, -$y) // СУММА смещений прицела при стрельбе
   END_CYC
   
   IF($y ! 0) // если были сделаны выстрелы (нажатия ЛКМ)
      MOVER(0,$z) // возврат оружия в исходное положение, как до стрельбы
      WAITMS(100) // пауза между очередями
      UNDEFINE($y)
      UNDEFINE($z)
   ELSE
      WAITMS(20) // интервал между проверками нажатия ЛКМ
   END_IF
   
END_CYC

Атеист

  • Guest
Re: Нужна лёгкая помощь
« Reply #14 on: February 24, 2017, 09:34:53 AM »
Я тоже накатал нечто подобное и добавил костыль с биндами. Команду "Огонь" нужно повесить на клавишу HOME, или другую свободную. И можно отлаживать и оптимизировать под конкретные пушки.  :)
Code: (clickermann) [Select]
STRSEPARATE("3:6:11:19:27", ":", $arr) // смещения прицела вниз по оси Y после выстрелов
$arrsize = ARRSIZE($arr)

WHILE(1)

   FOR($n = 0, ($n < $arrsize) & (ISKEYDOWN(1) = 1)) // если нажата ЛКМ
      IF(ISKEYDOWN(36) = 0)
         KEYDOWN(36) // #HOME - Огонь!
      END_IF
      $y = $arr[$n] // величина смещения (в пикселах)
      MOVER(0, $y) // компенсация отдачи оружия (смещение прицела вниз по оси Y)
      WAITMS(80) // задержка между выстрелами
      INC($z, $y) // СУММА смещений прицела при стрельбе
   END_CYC
   
   IF($y ! 0) // если были сделаны выстрелы (нажатия ЛКМ)
      IF(ISKEYDOWN(36) = 1)
         KEYUP(36) // #HOME - Стоп огонь!
      END_IF
      MOVER(0, -$z) // возврат оружия в исходное положение, как до стрельбы
      WAITMS(200) // пауза между очередями
      UNDEFINE($y)
      UNDEFINE($z)
   ELSE
      WAITMS(10) // интервал между проверками нажатия ЛКМ
   END_IF
   
END_CYC