Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форумы Боевого Народа _ Battlefield: Bad Company 2 _ Плохие макросы 2

Автор: CoolCmd 12.4.2010, 17:48

В продолжении http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?showtopic=51022 темы.

Вот этот скрипт для Autohotkey настраивает классы и фильтры. Почему кости этого не делают сами - для меня загадко. Например в MAG есть пять профилей, которые можно настраивать как угодно. А мы все ручками должны делать как обезьяны. devil.gif

Как выбирать и настраивать классы.
В конце макроса есть строчки вида

Код
*F11::CustomizeKit(1,   5, 3, 1,    5, 2, 8); assault
F11 - горячая кнопко. Если на нее нажать, то будет выбран один из четырех классов и настроено оружие с пёрками. Звездачко означает, что комбинации Alt+F11, Ctrl+F11 и т.д. будут работать как F11. Кнопки можно настроить по своему вкусу.
CustomizeKit означает, что это настройка класса.
Далее нужно указать 7 чисел.
Первое число - класс. 1 = штурмовик, 2 = инженер, 3 = медик, 4 = разведчик.
Второе число - выбор основной пушки.
Третее число - выбор дополнительной пушки.
И т.д. Описание есть в скрипте.
После ; можно оставить любой комментарий, например что бы не забыть, для чего нужна эта настройка.
На примере выше настройка штурмовика, которым я играю для разнообразия.

Настройка фильтров в обозревателе серверов.
Код
*0::FilterServers("Multiplay",   2, 0,   1, 0, 1, 0, 0,   1)
Вначале задается горячая кнопка как и на примере выше. В данном случае кнопка 0.
FilterServers означает, что это настройка фильтров.
Далее идет перечисление параметров фильтра. Описание в скрипте.
На примере выше будут найдены серваки Multiplay с режимом conquest, ранговые, непустые и без пароля.

Код
*=::Edit
Для запуска редактора с текстом этого скрипта нажать кнопку =.

Автор: Sarafander 12.4.2010, 18:12

zomfg!!
бинды через autohotkey,
демки через фрапс.

что же дальше? гланды через ж%%у? :D

Автор: Feb 12.4.2010, 18:15

Не получится, что PB посчитает все это чем-то читообразным и того, чик и нету?

Автор: CoolCmd 12.4.2010, 18:34

Feb Если кикнет, то откомпилируй макрос и панк заткнется.

Автор: Sena1974 15.4.2010, 7:51

С добрым утром,а как сделать что бы всё делалось одной кнопкой,например по F9,(т.е по клику на F9 ,чтобы сразу 4 класса настраивались)

Автор: CoolCmd 15.4.2010, 11:59

Sena1974

Код
*F9::
CustomizeKit(1, ....)
CustomizeKit(2, ....)
CustomizeKit(3, ....)
CustomizeKit(4, ....)
return

Автор: Sena1974 15.4.2010, 12:25

спасибо,а вот ещё глупый вопрос,у меня клавиатура G15,можно ли как то на неё сделать тоже самое,чтоб без автохотея обходиться?Т.е повесить всё это на одну из клавиш G,гораздо удобнее

Автор: CoolCmd 15.4.2010, 13:26

Я с софтом для g15 не сталкивался. А чем AHK не устраивает? Она от модели клавы не зависит и возможностей поболее будет. yes.gif

Автор: Sena1974 15.4.2010, 14:10

в принципе да,всё устраивает, переделал скрипт на одну кнопку F9,всё работает,спасибо

Автор: Maximut RDF_team 16.4.2010, 7:52

Цитата(CoolCmd @ Понедельник, 12 Апреля 2010, 20:48:18) *
В продолжении http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?showtopic=51022 темы.

Вот этот
[attachment=38269:attachment]скрипт для Autohotkey настраивает классы и фильтры. Почему кости этого не делают сами - для меня загадко. Например в MAG есть пять профилей, которые можно настраивать как угодно. А мы все ручками должны делать как обезьяны. devil.gif

Как выбирать и настраивать классы.
В конце макроса есть строчки вида
Код
*F11::CustomizeKit(1,   5, 3, 1,    5, 2, 8); assault
F11 - горячая кнопко. Если на нее нажать, то будет выбран один из четырех классов и настроено оружие с пёрками. Звездачко означает, что комбинации Alt+F11, Ctrl+F11 и т.д. будут работать как F11. Кнопки можно настроить по своему вкусу.
CustomizeKit означает, что это настройка класса.
Далее нужно указать 7 чисел.
Первое число - класс. 1 = штурмовик, 2 = инженер, 3 = медик, 4 = разведчик.
Второе число - выбор основной пушки.
Третее число - выбор дополнительной пушки.
И т.д. Описание есть в скрипте.
После ; можно оставить любой комментарий, например что бы не забыть, для чего нужна эта настройка.
На примере выше настройка штурмовика, которым я играю для разнообразия.

Настройка фильтров в обозревателе серверов.
Код
*0::FilterServers("Multiplay",   2, 0,   1, 0, 1, 0, 0,   1)
Вначале задается горячая кнопка как и на примере выше. В данном случае кнопка 0.
FilterServers означает, что это настройка фильтров.
Далее идет перечисление параметров фильтра. Описание в скрипте.
На примере выше будут найдены серваки Multiplay с режимом conquest, ранговые, непустые и без пароля.

Код
*=::Edit
Для запуска редактора с текстом этого скрипта нажать кнопку =.

Вот так народ ленится и на Клуб Чампах Задаёт себе такие глупые вопросы, как:
1. А чё Оружие Другое
2. Почему я не могу попасть по цели
3. Что За Дуратский комп...
И Так далее.... Качайте Скилл Народ! Набивайте руку! А то если что случится, будите ныть и кричать...

Автор: FeN 16.4.2010, 8:50

Качать скилл при настройке кита? :lol:

Автор: Maximut RDF_team 16.4.2010, 9:35

FeN , я имею ввиду всё пальцами щёлкать по стандартным "буквам"!

Автор: ROX (RUS) 16.4.2010, 20:11

А есть программы попроще чем Autohotkey? Хочу написать простые скрипты для быстрого ввода админских команд в чате игры. Я открыл Autohotkey и понял, что ничего не понял, прога явно заточена под гиков, а не под простых пользователей.

Автор: CoolCmd 16.4.2010, 20:15

ROX (RUS) А разве админы - не гики по определению? rolleyes.gif

Автор: kub 16.4.2010, 20:28

Народ, а у меня этот скрипт вызывает только очень положительные эмоции.
Только немного НО...
1)Работает через раз (иногда выставляет не те координаты). В общем я не жалуюсь, но как-то странно для AFK
2)Ну просто нечего написать, настолько все хорошо
3)Скрипт на выбор оружия для класса работает только:
-при начальном выборе классов
-при дальнейшем выборе, только через enter
4)Опять же, автор, не бросай дело yes.gif

Автор: CoolCmd 16.4.2010, 20:35

Цитата(kub @ Пятница, 16 Апреля 2010, 20:28:28) *
Народ, а у меня этот скрипт вызывает только очень положительные эмоции.
Только немного НО...
1)Работает через раз (иногда выставляет не те координаты). В общем я не жалуюсь, но как-то странно для AFK
Забыл сказать. В скрипте первая строчка такая:
Код
BF_DELAY := 50

Попробуй увеличить число 50, например до 60, 70 и т.д. Возможно, у тебя комп более тормозной.

Цитата(ROX (RUS) @ Пятница, 16 Апреля 2010, 20:26:26) *
Не надо быть сволочью, а нужно точно объяснять за что именно кикнул, что бы потом не читать про то, что админы-уроды кикают просто так.
Если тебе просто нужно типа: нажал одну кнопку - появилась длинная строчка текста, то и в autohotkey довольно просто. Например горячая кнопка 7:
*7::SendRaw @kick nick aaaaaaaabbbbbbbcccccc

Сложно?

Автор: kub 16.4.2010, 20:48

Наверное, я единственный, кто ни фига не понимает в программировании?

Автор: ROX (RUS) 20.4.2010, 20:57

CoolCmd А можешь включить в свой скрипт или написать отдельный скрипт на быструю смену инверсии вертушек? А то постоянно только взлетишь, как оказывается, что стоит неправильная инверсия, пока залезешь в меню что бы сменить, вертушку уже сбивают.

Автор: MAKSIMYS 20.4.2010, 21:47

на вертолетах и БПЛА инверсия РАЗНАЯ. и это жутко бесит.

Автор: CoolCmd 21.4.2010, 1:39

Цитата(ROX (RUS) @ Вторник, 20 Апреля 2010, 20:57:59) *
CoolCmd А можешь включить в свой скрипт или написать отдельный скрипт на быструю смену инверсии вертушек? А то постоянно только взлетишь, как оказывается, что стоит неправильная инверсия, пока залезешь в меню что бы сменить, вертушку уже сбивают.

Жмешь 8 (кнопку можешь изменить в последней строке) и опция переключается. К сожалению повесить вкл. и выкл. на отдельные кнопки нельзя - скажи спасибо костям.

Если в файле найдешь этот кусок:
Код
  OptToggleVerticalFlyInversion()
;;;Sleep 500
и удалишь ;;; то после изменения опции будет пауза 500 миллисекунд - сможешь рассмотреть новое состояние опции.

Автор: Protey 21.4.2010, 7:52

Цитата(Sarafander @ Понедельник, 12 Апреля 2010, 20:12:44) *
zomfg!!
бинды через autohotkey,
демки через фрапс.

что же дальше? гланды через ж%%у? :D

дальше спеки через оператора с камерой за спиной играющего и трансляцией в онлайн! XD
а вообще надо попробовать бинды, хоть что-то чем вообще ничего...

Автор: Sarafander 21.4.2010, 10:07

Цитата(Protey @ Среда, 21 Апреля 2010, 07:52:22) *
Цитата(Sarafander @ Понедельник, 12 Апреля 2010, 20:12:44) *

что же дальше? гланды через ж%%у? :D

дальше спеки через оператора с камерой за спиной играющего и трансляцией в онлайн! XD

:+: :D :+:
действительно, если кто-то всерьез будет делать турнирчики с деньгами, как они будут стримить сиё действо жаждущей зрелищ толпе фанатов?

Автор: ROX (RUS) 21.4.2010, 11:50

На форуме ForTeam администратор писал, что EA обещала в дальнейшем внедрить в игру спектраторов.

Автор: Protey 21.4.2010, 11:54

Цитата(ROX (RUS) @ Среда, 21 Апреля 2010, 13:50:55) *
На форуме ForTeam администратор писал, что EA обещала в дальнейшем внедрить в игру спектраторов.

лучше не надо... пусть лучше сделают, чтобы мы сами могли внедряться!

Автор: CoolCmd 22.4.2010, 19:21

[attachment=38429:attachment]

Изменения.

1. Вертикальную ось можно не только переключать (Ctrl+F10), но и включать (Ctrl+F11) и выключать (Ctrl+F12).

2. Переключение яркости во время игры. На ночной карте я ставлю яркость 1 (Ctrl+F7), на остальных 0.4 (Ctrl+F8).

3. Настройка фильтров работает с патчем R7. К сожалению, игра запоминает только состояние флажков, а 3 списка и название сервера - нет (тупые ленивые кости). С помощью скрипта можно запомнить несколько вариантов всех параметров.

4. Настроек классов тоже может быть несколько. Например, у меня есть два инженера: один для атакамы, второй для пехотных карт.

Автор: EdTambov 22.4.2010, 20:43

Цитата(CoolCmd @ Четверг, 22 Апреля 2010, 19:21:59) *
2. Переключение яркости во время игры. На ночной карте я ставлю яркость 1 (Ctrl+F7), на остальных 0.5 (Ctrl+F8).

Да ты скриптонуп???!! :D
Или нет, макронуп smile.gif

Автор: CoolCmd 22.4.2010, 22:44

EdTambov Не хочу зрение портить. Называй этот как хочешь.

Автор: Skar 16.5.2010, 14:14

А можно в AHK сделать следующее: чтобы нажатие ЛКМ было не просто нажатием а нажатием ЛКМ и ее же "отжатием" через определенное кол-во милисекунд?

Автор: CoolCmd 26.5.2010, 13:38

Skar Можно.

Автор: Skar 26.5.2010, 15:09

Цитата(CoolCmd @ Среда, 26 Мая 2010, 13:38:20) *
Skar Можно.



то есть получается можно сделать то, что изначально нам не дали разработчки - переключение режимов стрельбы

Автор: CoolCmd 27.5.2010, 8:15

Skar Ыхы. smile.gif Надо будет попробовать...

Автор: Skar 27.5.2010, 23:38

Чето я не могу это сделать =))) В Кваке второй как-то просто любые скрипты давались, а для АНК не могу =)))

Автор: CoolCmd 9.6.2010, 11:11

Наваял макрос для стрельбы из ПКМ. Он делает три вещи.

1. Стрельба одиночными. Ну тут все просто.
2. Компенсация вертикальной отдачи. Ствол во время стрельбы не задирает вверх. Но разброс никуда не делся, поэтому кучность не впечатляет.
3. Компенсация вертикальной отдачи + снижение скорострельности для ликвидации разброса. Точность стопроцентная.

http://www.youtube.com/watch?v=FczZwqwj_iw

На практике пользы от него немного. Вертикальную отдачу я и сам могу в какой-то мере компенсировать, а третий режим снижает скорострельность, поэтому человечки валятся долго и уныло. Возможно для применения макроса нужно набить руку или сменить тактику, не знаю. Хочу переделать его для M60, может валить быстрее будет. smile.gif

Вот скрипт для одиночной стрельбы, остальные фичи давать не буду по понятным причинам. Включение/выключение нажатием кнопки 6. В 32-битной винде при включении будет раздаваться короткий писк из динамика в корпусе компа. Перед ползанием по менюшкам игры необходимо отключить режим.
[attachment=39114:attachment]

Автор: Skar 9.6.2010, 12:00

CoolCmd

о! круто =) седня вечером протестирую =) По идее снижать скорострельность не нужно, если брать перк на точность, тогда восстановления спрэда будет хватать

Автор: Skar 9.6.2010, 12:14

Если без перка то тогда такие ограничения получаются:

ПКМ, Т88 - 540 rpm
M249 - 600 rpm
M60 - 480 rpm
Mg36, XM8 - 660 rpm

Автор: ILUXA-rus 9.6.2010, 12:50

CoolCmd Читер

Автор: CoolCmd 9.6.2010, 13:12

Цитата(Skar @ Среда, 9 Июня 2010, 13:14:09) *
Если без перка то тогда такие ограничения получаются:

ПКМ, Т88 - 540 rpm
M249 - 600 rpm
M60 - 480 rpm
Mg36, XM8 - 660 rpm

Спасибо, проверю теорию практикой. smile.gif

ILUXA-rus Троль :D

Автор: EdTambov 9.6.2010, 14:13

ILUXA-rus папко начал нубоскриптить :D

Автор: ILUXA-rus 9.6.2010, 14:18

EdTambov нуб так не заскриптит -)

Автор: CoolCmd 9.6.2010, 15:47

Цитата(EdTambov @ Среда, 9 Июня 2010, 15:13:07) *
папко начал нубоскриптить :D
Да уж, куда мне до твоих читов :D

Автор: CoolCmd 9.6.2010, 23:02

Цитата(Skar @ Среда, 9 Июня 2010, 13:14:09) *
Если без перка то тогда такие ограничения получаются:

ПКМ - 540 rpm

Видимо так и есть. Я сделал 570 и разброс есть, но не слишком большой.

Автор: Skar 9.6.2010, 23:38

Затестил одиночные. Ну точность повышается в разы, но эффективность (по личным ощущениям) наоборот - снижается. Очередями короткими все равно как-то быстрее забарываешь. Правда вот Г3 становится очень неплохой пушкой, до уберствола все равно канешн не дотягивает

Автор: Skar 10.6.2010, 0:09

Хотя всетки нет - с винторезом получается читерство. Обратите внимание на точность

Автор: TeHb 10.6.2010, 9:21

А я все думаю, как народ на дальние дистанции так хорошо лупит из ПКМ, вот оно что, буду знать. rolleyes.gif

ЗЫ Сам макросы использовал только для авиации в BF2, все-таки это не совсем честно. devil.gif

Автор: CoolCmd 10.6.2010, 9:58

Цитата(Skar @ Четверг, 10 Июня 2010, 00:38:40) *
Затестил одиночные. Ну точность повышается в разы, но эффективность (по личным ощущениям) наоборот - снижается.
Все правильно. Попадать-то ты попадаешь, но убить не успеваешь, людишки бегать начинают. С пукалками инженера та же история (без макросов). Кстати, у меня результативность с М60 выше, чем у ПКМ с макросом. rolleyes.gif Попробую прикрутить к М60 и VSS (и на хард в кусты :D ).

Цитата(Skar @ Четверг, 10 Июня 2010, 01:09:31) *
Обратите внимание на точность
Неплохо. У Илюхи точность в 2 раза ниже.

Цитата(TeHb @ Четверг, 10 Июня 2010, 10:21:04) *
А я все думаю, как народ на дальние дистанции так хорошо лупит из ПКМ, вот оно что, буду знать.
Это паранойя. Макрос есть только у меня, ну может еще пара челов его сделали. К тому же его можно прикрутить практически к любой пушке, а ПКМ взял, потому что у тестового перса анлоков нед.

Цитата
ЗЫ Сам макросы использовал только для авиации в BF2, все-таки это не совсем честно. devil.gif
Это СОВСЕМ не честно. Мне интересен процесс создания, а не результат. Хотя... Смотрел передачку по ТВ о совковом фальшивомонетчике, тот тоже утверждал, что делал деньги из спортивного интереса. Спрашивают: а фигли на них машину купил? Да вот, говорит чуть не плача, жизнь заставила. smile.gif Нужно тоже поскорее завязывать пока не подсел. smile.gif)

Автор: AleksandrSL 10.6.2010, 10:55

Лучше бы уровняли возможности, у людей с разным пингом. Разница в пинге, у кого 20 а у кого 150 вот это тоже не честно, люди же в этом не виноваты, что живут за сотни км от сервера, а др под боком.
CoolCmd

Цитата
Это СОВСЕМ не честно

Любое стороннее вмешательство, не предусмотренное разработчиками, это очень плохо, так что лучше завязывай. ;)

Автор: Skar 10.6.2010, 11:20

Цитата(CoolCmd @ Четверг, 10 Июня 2010, 09:58:54) *
Нужно тоже поскорее завязывать пока не подсел. smile.gif)


Ну тут от человека зависит. Кто-то юзает читы, кому-то это не интересно. Также и с синглшотами. Есть пушки с которыми реально неинтересно становится. С Винторезом процесс выглядит так - навел на голову, сделал два быстрых клика, человек упал.

Автор: AleksandrSL 10.6.2010, 11:25

Skar

Цитата
Любое стороннее вмешательство, не предусмотренное разработчиками, это очень плохо

А остальное по барабану :angry:
Цитата
Есть пушки с которыми реально неинтересно становится

Играй с которыми интересно, и нефиг всякую хрень изобретать. :no:

Автор: ILUXA-rus 10.6.2010, 11:32

Нехасе.... а если этот скрипт работает спреем стрелять не получится?

Автор: CoolCmd 10.6.2010, 11:48

Цитата(AleksandrSL @ Четверг, 10 Июня 2010, 11:55:27) *
Любое стороннее вмешательство, не предусмотренное разработчиками, это очень плохо, так что лучше завязывай. ;)
Плохо не стороннее вмешательство, а то что оно есть не у всех. ;)

Цитата(Skar @ Четверг, 10 Июня 2010, 12:20:24) *
Ну тут от человека зависит. Кто-то юзает читы, кому-то это не интересно. Также и с синглшотами.
А я стрельбу одиночными читом не считаю. Почему мы должны быть заложниками гребаных консолей? К тому же любой чел может стрелять по 1-2 выстрела, а второй выстрел отклоняется недалеко от первого.

Цитата(ILUXA-rus @ Четверг, 10 Июня 2010, 12:32:09) *
Нехасе.... а если этот скрипт работает спреем стрелять не получится?
Как и в предыдущих батлах нужно режим вкл/выкл кнопкой, если я твой вопрос правильно понял.
Микрофон приказал долго жить

Автор: Skar 10.6.2010, 12:03

Цитата(CoolCmd @ Четверг, 10 Июня 2010, 11:48:42) *
А я стрельбу одиночными читом не считаю. Почему мы должны быть заложниками гребаных консолей? К тому же любой чел может стрелять по 1-2 выстрела, а второй выстрел отклоняется недалеко от первого.


тут просто дело в том, что в ранних играх (бф2, 2142) пушки по-любому имели базовую девиацию, даже при стрельбе через прицел. Сейчас начального разброса нет. Суть правда не в этом. Скажем при переключении на одиночные на штурмовых винтовках ты не получаешь никакого преимущества, скорее даже наоборот. С пулеметами примерно тоже самое, ну разве что патроны экономнее расходуются(но тут уже первое нессответствие - во втором БФе не было переключения на одиночные у пулеметов). Есть 2 ствола с которыми этот скрипт можно приравнять к читерству - Г3 и Винторез. Дело в том, что у них очень быстро увеличивается отдача и спрэд от выстрела к выстрелу. Второй выстрел обычно улетает в молоко и после этого еще и ствол задирает неистово и паузы нужно делать длинные между выстрелами. При стрельбе одиночными такого нет и в помине - можно просто кликать и убивать =) Г3 канешн это все не особо спасает - дамаг не тот пока что. А вот ВСС становится имбалансным совсем. Правда, думается мне что после патча Р8 она и так станет оверпавером.

Кстати у многих стволов звук сильно отличается при стрельбе очередями/одиночными. Оч понравился звук М416 - почти Крылов из 2142

Автор: AleksandrSL 10.6.2010, 12:12

CoolCmd

Цитата
Плохо не стороннее вмешательство, а то что оно есть не у всех.

А нам то что теперь делать, кто в этом не хрена не понимает? Мы то, рядовые игроки(нубы) больше всего от этих кустарных изделий и страдаем.

Автор: Skar 10.6.2010, 12:25

Мне вот стало другое интересно - можно ли самому так задрочиться чтобы успевать отжимать кнопку в течении 100 мс и стрелять одиночными безо всяких макросов?

Автор: ILUXA-rus 10.6.2010, 12:35

Х.з. я в принципе приноровился с ВСС стрелять по 2 пули, 2 пули летят точно в одну точку.
Но макрос нужно попробовать.

Автор: Skar 10.6.2010, 12:53

Цитата(ILUXA-rus @ Четверг, 10 Июня 2010, 12:35:47) *
Х.з. я в принципе приноровился с ВСС стрелять по 2 пули, 2 пули летят точно в одну точку.


да не летят они в одну точку, хоть плачь =))) еслиб летели то точность из ВССа былаб сравнима с точностью из других болтовок (а так у всех процентов 25%). С одиночными да - летят как нефиг нафиг. Потому и чит - лазерно-точное оружие с хорошим дамагом и обоймой на 20 патронов

Автор: CoolCmd 10.6.2010, 13:11

Цитата(AleksandrSL @ Четверг, 10 Июня 2010, 13:12:01) *
CoolCmd
Цитата
Плохо не стороннее вмешательство, а то что оно есть не у всех.
А нам то что теперь делать, кто в этом не хрена не понимает?
Не страдать паранойей и играть как раньше. Большой пользы как видишь макрос не дает, за исключением уникума Skar, который из vss всегда в голову попадает.

Автор: ILUXA-rus 10.6.2010, 13:11

Skar ну тогда попробую сегодня...
CoolCmd там есть какие-то тонкости в установке ?
П.С. как ставить?)
Кстати, ПБ это за чит не засчитает?

Автор: CoolCmd 10.6.2010, 13:17

Цитата(ILUXA-rus @ Четверг, 10 Июня 2010, 14:11:32) *
П.С. как ставить?)
Ставишь autohotkey. Да раза щелкаешь на скрипте. Запускаешь батлу. Жмешь 6 для включения/отключения. Выходишь из батлы. В трее щелкаешь по зеленому значку скрипта правой кнопкой и выбираешь нижний пункт (не помню как называется).

Цитата(ILUXA-rus @ Четверг, 10 Июня 2010, 14:11:32) *
Кстати, ПБ это за чит не засчитает?
Нед. В 2142 попадались странные серверы, которые кикали за использование autohotkey. Но это просто обходится компиляцией скрипта, хехе. smile.gif

Автор: Skar 10.6.2010, 13:23

ILUXA-rus

ну вообще в серверных настройках ПБ есть рестрикшн на АНК, но обычно он отключен. Если включен, то с работающим АНК тебя просто не пустит или выкинет с сервера через определенное время. Так что считать или не считать это читом - на твое усмотрение.

Автор: ILUXA-rus 10.6.2010, 17:08

Я не пойму как запустить макрос, я скачал автохоткей, запустил его, скачал скрипт, запустил его, в трее 2 зеленых квадрата....что дальше делать?
короче у меня не работает

Автор: Sooold #2 10.6.2010, 18:13

ILUXA-rus Нажать кнопочку *6*.

Автор: CoolCmd 10.6.2010, 21:52

Sooold #2 Все оказалось не так просто.

Для тех у кого не работают скрипты autohotkey:
1. запускайте игру без админских прав (до патча не будет пинга)
2. отключите UAC (Илюхе помогло)
3. запускайте скрипты с админскими правами

Самый простой способ для геймеров - второй.

Сегодня в первый раз побегал с VSS (на харде). Skar был прав - одиночные часто выручают, уж очень у нее разброс высокий! Для любителей просиживать задницу в кустах must have. smile.gif

Автор: delphi 10.6.2010, 22:40

Цитата(AleksandrSL @ Четверг, 10 Июня 2010, 10:55:27) *
Лучше бы уровняли возможности, у людей с разным пингом. Разница в пинге, у кого 20 а у кого 150 вот это тоже не честно

забавно звучит.может еще и денег всем дать ))

Автор: AleksandrSL 11.6.2010, 5:21

delphi

Цитата
забавно звучит.может еще и денег всем дать ))
Что забавно, поясни? Ну и вообще, я рад что позабавил тебя. А так, не в тему.

Автор: delphi 11.6.2010, 11:19

ну вот как ты себе представляешь уровнять людей с РАЗНЫМ пингом? smile.gif) как можно уровнять гонщиков с разными машинами? как уровнять бомжа и бизнесмена? бредж :D

Автор: AleksandrSL 11.6.2010, 15:15

delphi

Цитата
как можно уровнять гонщиков с разными машинами? как уровнять бомжа и бизнесмена? бредж

Не путай реальность с виртуальностью. Можно сделать что то на подобии HitFixer, правда я не знаю как.

Автор: CoolCmd 16.6.2010, 22:26

Когда-то Эд доказывал, что обе пули Абакана летят точно в цель. И как всегда попал пальцем в небо. smile.gif

Расстояние 60 метров:
[attachment=39228:attachment]
Вторая пуля летит выше из-за отдачи.

С использованием макроса (компенсация отдачи):
[attachment=39229:attachment]
Вторая пуля попадает в дырку от первой (типа робин гуд smile.gif )

Частота стрельбы двойными выстрелами у Абакана примерно 5 выстрелов в секунду. Т.е. 600 в минуту, как и указано в таблице с характеристиками оружия. Но для того, что бы компенсировать разброс, скорострельность нужно уменьшить, как и в случае с ПКМ. Не знаю насколько, не проверял за ненадобностью.

Автор: Skar 16.6.2010, 23:43

CoolCmd 480 rpm =) ну или 4 двойных в секунду. Судя по фрагмувику RulaH из Epsilon стреляет именно с таким макросом

Автор: CoolCmd 17.6.2010, 9:41

Skar Я вчера пробовал на полной скорости: разброс небольшой, нет смысла уменьшать, в ближнем бою и так тяжело с абакашей. На дальней можно самому паузу сделать, скорострельность-то никакая. А еще лучше по две очереди, все четыре пули вфкучке. yes.gif Вот я сейчас думаю, можно ли надрочить стрельбу и стрелять руками как с макросом (ну почти smile.gif ).

Автор: Skar 17.6.2010, 14:42

Цитата(CoolCmd @ Четверг, 17 Июня 2010, 09:41:09) *
Вот я сейчас думаю, можно ли надрочить стрельбу и стрелять руками как с макросом (ну почти smile.gif ).


ну во-первых имеет смысл задуматься о переносе кнопки стрельбы на клавиатуру - чтоб прицел не дергался от кликов. А так в принципе 4 нажатия в секунду - не так уж и сложно

Автор: EdTambov 17.6.2010, 14:59

Skar ты чем "кликаешь", что у тебя прицел дергается, молотком чтоли? smile.gif

Автор: CoolCmd 17.6.2010, 17:38

Цитата(Skar @ Четверг, 17 Июня 2010, 15:42:22) *
ну во-первых имеет смысл задуматься о переносе кнопки стрельбы на клавиатуру
Предлагаю вариант получше: педали. Ноги-то у нас никак не задействованы. Правая стреляет очередью, левая - одиночными. Или можно на левую нож повесить (а еще лучше пинок как в duke nukem).

Цитата(Skar @ Четверг, 17 Июня 2010, 15:42:22) *
А так в принципе 4 нажатия в секунду - не так уж и сложно
Я имел ввиду не скорострельность - с этим проблем нед - а что бы оба выстрела попадали в одну точку как на втором скрине выше.

EdTambov Например высокая чувствительность и скользкий коврик. smile.gif


Цитата(Skar @ Четверг, 17 Июня 2010, 00:43:03) *
Судя по фрагмувику RulaH из Epsilon стреляет именно с таким макросом
У тебя есть ссылка на видео? Я на ТебеТруба не нашел.

Автор: Sooold #2 17.6.2010, 17:52

CoolCmd нененене! На педали надо движение, левая педаль - левая нога ступает, правая - педаль - правая нога... :D

Автор: Skar 17.6.2010, 18:07

Цитата(CoolCmd @ Четверг, 17 Июня 2010, 17:38:31) *
У тебя есть ссылка на видео? Я на ТебеТруба не нашел.



http://www.youtube.com/watch?v=HLWD8_THK4E&feature=fvsr

http://www.own3d.tv/video/26889/Rulah_fragmovie/?HD

кстати, по поводу педалей мы вчера как раз глумились, когда слай тестил стрельбу с клавы =)

Автор: EdTambov 17.6.2010, 18:56

Skar класс видос.
з.ы. Снято с помощью PlayClaw ;)

Автор: CoolCmd 17.6.2010, 22:31

Цитата(Skar @ Четверг, 17 Июня 2010, 19:07:21) *
http://www.youtube.com/watch?v=HLWD8_THK4E&feature=fvsr
Мдя, фрагмуви да еще без звука. Но местами очень похоже. Так что слова Эда "класс видос" нэсколько нэуместны. smile.gif

Цитата(Skar @ Четверг, 17 Июня 2010, 19:07:21) *
когда слай тестил стрельбу с клавы =)
Надо же как у вас все далеко зашло. Тяготит запись смерти после воскрешения медиком? smile.gif)

Автор: Skar 17.6.2010, 23:14

Цитата(CoolCmd @ Четверг, 17 Июня 2010, 22:31:33) *
Надо же как у вас все далеко зашло. Тяготит запись смерти после воскрешения медиком? smile.gif)



ахаххааа =))) даж не знаю, мне первые 100 часов приходилось играть при 15 фпсах, поэтому как-то смирился с умиранием. На самом деле в этой игре больше забешивает полное отсутствие тимплея на пабликах - воип нигде не работает, не командиров, приказов и прочей лабуды, ну и кстати запись смерти тимплею не способствует.

Автор: REDFRO 18.6.2010, 19:43

CoolCmd неплохо!

Автор: Psydrey 19.6.2010, 3:43

запись смерти как раз способствует, врага надо знать в лицо или по киту и куда он побежал после этого, я не злопамятный но я всё помнюsmile.gif

Автор: Skar 19.6.2010, 13:31

CoolCmd я смотрю твоими макросами уже вовсю заинтересовались?

Автор: REDFRO 21.6.2010, 20:37

Если бы ты, CoolCmd, побольше скурил мануалов по отдаче, столь любезно написанные на EA форуме на англицком, можно было и скорострельность и точность приемлемую поднять, убрав при этом отдачу на 90% у любого оружия. На мой взгляд тут лучше всех ведет MG36. Вот муви, кот. получился на быструю руку:
http://s1.downup.ws/files/RDESKID/NVEExport.0001.avi
(что то я с ютюбом не дружу, по-этому выкладываю так..ссылка жива долго не будет, максимум неделю)

Автор: AntLion 22.6.2010, 12:29

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

Автор: antonn 22.6.2010, 20:22

Те кто их продолжает использовать бросили бы, если бы не нравилось, имхо

Автор: Skar 24.6.2010, 9:22

Цитата(AleksandrSL @ Пятница, 11 Июня 2010, 15:15:07) *
delphi
Цитата
как можно уровнять гонщиков с разными машинами? как уровнять бомжа и бизнесмена? бредж

Не путай реальность с виртуальностью. Можно сделать что то на подобии HitFixer, правда я не знаю как.



в бк2 не работает latency compensation, как в 2142. Нужный параметр походу скрыт где-то в недрах игры, так что мечты о хитфиксере для бк2 останутся мечтами

Автор: REDFRO 25.6.2010, 9:36

Пачаму начальника, есть такое. Заходим в браузер серверов. Выбираем серв на котором будем играть. Смотрим параметр ЛАТ. Запоминаем. Выходим из игры. Лезем в МоиДоки/BFBC2/gamesettings.ini и до строки (стразу над ней)
[GstPersistence]
вставляем
SettingsManager.floatSet GSDefaultLatencyCompensation 0.0450000
SettingsManager.U32Set GSInterpolationTime 45

где вместо 45 ставим то число, кот увидели в столбце ЛАТ.

Запускаем игру заходим на серв. ВСЁ. Проверенно, улучшения есть!
Муторно, но пашет, пока не автоматизированно.
И еще, для тех кто в курсе, DllCall("mouse_event"...) с относительными координатами РУЛЕЗ! ;)

Автор: Skar 25.6.2010, 11:07

Цитата(REDFRO @ Пятница, 25 Июня 2010, 09:36:04) *
Пачаму начальника, есть такое. Заходим в браузер серверов. Выбираем серв на котором будем играть. Смотрим параметр ЛАТ. Запоминаем. Выходим из игры. Лезем в МоиДоки/BFBC2/gamesettings.ini и до строки (стразу над ней)
[GstPersistence]
вставляем
SettingsManager.floatSet GSDefaultLatencyCompensation 0.0450000
SettingsManager.U32Set GSInterpolationTime 45

где вместо 45 ставим то число, кот увидели в столбце ЛАТ.



этому плацебо посвящен не один десяток тем на еашных форумах. 100500 людей из самых разных игровых сообществ тестили и в итоге пришли к выводу, что эта строчка кода из сеттингов 2142 ничего не дает в бк2.

По себе скажу, что у меня с хитрегом стало все окей как только я перестал играть на фортимовских серваках. Да и вообще - нафиг там играть? Хитрег плохой и сплошной густав спам. А те серваки которые на 32 - там еще и лаги безумные. На каком-нить условном ТВ2 норвежском можно спокойно играть даже на 32 человечном сервере

Автор: CoolCmd 25.6.2010, 12:27

Цитата(Skar @ Пятница, 25 Июня 2010, 12:07:01) *
100500 людей из самых разных игровых сообществ тестили и в итоге пришли к выводу, что эта строчка кода из сеттингов 2142 ничего не дает в бк2.
100502

Автор: Skar 25.6.2010, 15:01

Цитата(CoolCmd @ Пятница, 25 Июня 2010, 12:27:33) *
Цитата(Skar @ Пятница, 25 Июня 2010, 12:07:01) *

100500 людей из самых разных игровых сообществ тестили и в итоге пришли к выводу, что эта строчка кода из сеттингов 2142 ничего не дает в бк2.
100502


Тем более =))))

Автор: REDFRO 25.6.2010, 20:05

Тады тока трафик шейпер на коленке. То что плацебо - это да, выяснил. Значит будет неплохо вот http://www.wowinterface.com/downloads/info13581-LeatrixLatencyFix.html

Автор: Pupseg 26.6.2010, 2:10

CoolCmd даю идею для автохоткей! стабилизатор снайперки грубер для бк2

сделать скрипт с циклом движения прицела вверх и вниз) (единственное придётся ловить момент начала шатания... иль включать при нажатии правой кнопки ;) надо только проверить "шатание" начинается от момента прицеливания иль оно само по себе циклует))

п.с. крутую программу для меня открыл)) очень сильный инструмент! (не только для игр! но и для автокада уже придумал пару скриптов)))

Автор: CoolCmd 26.6.2010, 16:56

Pupseg Само по себе. Отбой. smile.gif

Автор: Pupseg 26.6.2010, 18:18

CoolCmd ну тогда придётся делать отдельную кнопку включения)) и ловить момент :D

ну и сделать смещения в цикле с помощью колёсика, для пущей синхронизации.)

Автор: REDFRO 27.6.2010, 13:10

Зделать можно, но автоматики не получиться. Можно сделать так. При включении прицела специальной клавишей как бы подгонять значение, пока качание не пропадет. Примерно до 6 нажатий. Хотя надо отследить, всегда ли, при включении прицела, одинаковая точка старта качания...
после проверки
Замеченно, что качание прицела, в оптике есть переменная, изменяющаяся (качающаяся) всегда, и не зависит от того, целишся или нет...

Автор: махusеr2х 29.6.2010, 21:43

Эдак и до разработки читов скоро дойдет :lol:

Автор: antonn 30.6.2010, 0:04

Cheat - жульничать. Является ли жульничеством макросничество - вопрос расплывчатый...

Автор: махusеr2х 30.6.2010, 12:42

ИМХО, отключение тряски прицела уже оно.

Автор: Snumsmumrik 30.6.2010, 17:04

махusеr2х ну так вроде как это и не "отключение" тряски, а компенсация её (которая, к слову, как я понял и не работает в полном смысле этого слова).
Хотя в общем и в целом макросничество не поддерживаю, если разрабы сами не добавляют его в возможности игры.

Автор: REDFRO 7.7.2010, 16:49

Давно уже скрипто-дело вышло за рамки банальной одиночной стрельбы. На примере моей проги она уже не только убирает отдачу, но и убирает разброс пуль. При чем скорострельность остаеться родной. После последних экспериментов, так же выявленна явная связь между скоростью стрельбы и отдачей, но ни как не с количеством выпущенных пуль, т.е. не пули делают отдачу... ;)

ПыСЫ. Мдааа, наверное мои призывы к помощи в скриптоделе - очень смертельный грех, раз трут мои сообщения.

Автор: махusеr2х 7.7.2010, 18:21

Цитата
ну так вроде как это и не "отключение" тряски, а компенсация её

Автоаим - это тоже в некоторой мере компенсация плохой меткости играющего.

Автор: REDFRO 8.7.2010, 12:03

Ну удивлюсь если же всё таки панк бастер начнет кикать за скрипты )))


Все кто хотят и могут разработать что то грандиозное на Authotkey для BFBC2 свяжитесь со мной по аське (4-четыре-4-8-восемь-7-семь-0-шесть)

Автор: Skar 8.7.2010, 12:43

Цитата(REDFRO @ Четверг, 8 Июля 2010, 12:03:09) *
Ну удивлюсь если же всё таки панк бастер начнет кикать за скрипты )))



ну какбы в бф2 и бф2142 можно было панк настроить так, чтобы за макросы кикал. Правда при таких раскладах он кикал и за обладание дровами от логитековских мышей и клавиатур. Думаетя, что скоро в бк2 такое тоже введут. По крайней мере на соревнованиях это станет необходимостью

Автор: iperov 18.7.2010, 21:43

кик за дрова от игровых мышей? :D
A4 Tech X7 мышка отличная, с oscar editor, макросы можно писать прямо на кнопки разнообразные

Автор: REDFRO 24.7.2010, 13:54

В помощь начинающим AutohotKey "строителям", полезная функция для меда. Зажмаем клавишу, выбираеться дефибрилятор, ресает, и когда отпускаешь кнопку, возвращаеться на главное оружие:

Код
Вашакнопка::
Send {3}
Sleep 20;--Тут можно и побольше, смотрите сами
   Loop
     {
       GetKeyState, State, Q , P
       If State = U
         {
           break
          }
         else
          {
            Send{LButton}
           }
      }
Send{2}


Процедура спота при стрельбе:

Код
; в начале объявите
lastSpot:= 0

;Затем при стрельбе вызывайте SPOT
Fire:
MouseClick, Left, , , 1, 0
Gosub, SPOT
return

SPOT:
; (1500) Можно и по-меньше поставить... на ваше усмотрение
if ((A_TickCount - lastSpot >= 1500) or lastSpot = 0)
{
   Send{q}
   lastSpot := A_TickCount
}
return


И еще парочка важной инфы:
Плент разминируеться за 6000 (в миллисекундах), минируеться за 4300, что карта на сквадраше, после взрыва открываеться через 20 секунд, и что отдача до 200 мс и после - разные вещи.

Юзайте на здоровье!

Автор: CoolCmd 26.7.2010, 10:40

Цитата(REDFRO @ Суббота, 24 Июля 2010, 14:54:45) *
; (1500) Можно и по-меньше поставить... на ваше усмотрение
http://denkirson.xanga.com/722757523/bad-company-2/ пишут что
Цитата
With the cooldown, the fastest continuous rate that a player can spot without overheating is once every two seconds.

Может и лажа, у меня спот через раз работает. Но идея спота во время стрельбы хорошая, можно сделать на 1 выстрел больше.

Автор: maGz74 29.7.2010, 8:59

вот страничка http://forum.ea.com/eaforum/posts/list/495/421736.page с инфой

Автор: REDFRO 29.7.2010, 13:04

Вот тока для заметки, MouseMove, 0,1,,R не работает в BFBC2. Точнее работает, но передвигает вниз в зависимости от чуствительности в игре, от "нихерасебе" до "какого хера ты смотришь вниз?"...

Автор: CoolCmd 2.8.2010, 15:07

Побегал я с VSS и реально запарился переключать режимы одиночный/очередь. Поэтому в недрах секретных лабораторий был рожден макрос для ленивых криворуких нубов вроде меня. Он немного понижает скорострельность VSS (или любой другой пушки) до уровня, когда достаточно просто стрелять одиночными. Эффективность в ближнем бою немного падает, зато не нужно переключать режимы. В менюшках игры как и раньше нужно пользоваться правой кнопкой. Переключается режим нажатием на "5" (можно изменить).

[attachment=39849:attachment]

Автор: CoolCmd 2.8.2010, 15:18

Цитата(REDFRO @ Суббота, 24 Июля 2010, 14:54:45) *
Плент разминируеться за 6000 (в миллисекундах), минируеться за 4300
Сделал залипание Е на 6 секунд?

Автор: CoolCmd 3.8.2010, 16:43

Чет не втыкает макрос VSS_Noob. Не рыба, не мясо. Пришлось от него отказаться. Попробовал прицепить стрельбу одиночными на отдельную кнопку. Кнопка должна быть удобной. Повесил на х3 (владельцы мышей a4 в курсе), но не понравилось, потому что кнопка расположена почти в центре мыши, целится тяжело, а для стрельбы на дальних нужна максимальная точность. Но удачный вариант все же нашел: для стрельбы одиночными нужно зажать Alt (voip серавно не пашет) и нажать LMB как обычно. Плюс прикрутил автоспот как у REDFRO с небольшим изменением. Вот этот вариант:

[attachment=39870:attachment]
Большинство целей валится как обычно, а снипы как мухи дохнут от одиночных. Наверное это последний мой макрос для VSS. smile.gif

Автор: REDFRO 4.8.2010, 16:48

Ну чтож, продолжим выкладывать куски моей проги...

Код
%ИМЯ процедуры1%:
%Счетчик1%+=1
if %Счетчик1%=2
{
  %Счетчик1%:=0
   sleep 75
;Здесь желательно сдвинуть прицел на 1 пункт вниз, если канечно знаете как это делаеться
}
return


Потом при стрельбе с промежутком 60 мс вызывайте её и она вам поможет стрелять из любого оружия асаулта

Код
Loop
{
; Здесь ловим клавишу выстрела и останавливаем цикл
  Send (LButton)
Sleep, 60
}


И будет у вас прекрасно стрелять штурмовик )))

Если у кого-то есть траблы с ловлей кнопки и прекращение цикла, то могу посоветовать (бывает на слабеньких компах):

Код
%Имя процедуры2%:
if A_TimeIdlePhysical>1500
{
  break;или exit
}
return


Столкнувшись с множеством проблем "понимания" батлой той или иной кнопки в сочетании с Ctrl и Shift (в динамики, очень быстрых действий), пришлось сделать такую функцию:

Код
%Имя функции1%(%Пер1%); Пер1 - имя переменной, в кот. нам передали что нажать
{
   GetKeyState, state, LControl
   GetKeyState, state2, LShift
    if state = D
    {
      Send ^{%Пер1%}
    }
    else
    if state2 = D
    {
      Send +{%Пер1%}
    }  
     else
    {
      Send {%Пер1%}
    }  
}
;тупо, но работает, если есть выход по более оптимизации части кода, плиз пишите


Пы.Сы. Естественно я всё переделываю на показ, т.е. одна процедура стрельбы намного сложнее чем просто Send (LButton), надеюсь вы найдете свою...
Пы.Пы.Сы. Не ругайте если что не так, я только 3 месяца как изучаю этот язык...

Автор: CoolCmd 4.8.2010, 17:41

Цитата(REDFRO @ Среда, 4 Августа 2010, 17:48:33) *
Столкнувшись с множеством проблем "понимания" батлой той или иной кнопки в сочетании с Ctrl и Shift (в динамики, очень быстрых действий), пришлось сделать такую функцию:
Нужно было справку читать. Или посмотреть например на мой последний макрос.

Автор: REDFRO 5.8.2010, 8:05

Цитата(CoolCmd @ Среда, 4 Августа 2010, 17:41:10) *
Цитата(REDFRO @ Среда, 4 Августа 2010, 17:48:33) *

Столкнувшись с множеством проблем "понимания" батлой той или иной кнопки в сочетании с Ctrl и Shift (в динамики, очень быстрых действий), пришлось сделать такую функцию:
Нужно было справку читать. Или посмотреть например на мой последний макрос.


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

Пы.Сы. Меня ваще бесит такое отношение, мля, значешь лучше способ, поделись, чем тыкать в справку, наверное для этого и создана эта ветка форума - чтобы учиться...

Обещаю в конце моих "страданий" по доведению этого чуда до ума - выложить процедуру коррекции стрельбы как отдачи так и разброса (для медика).

Автор: CoolCmd 5.8.2010, 11:28

Цитата(REDFRO @ Четверг, 5 Августа 2010, 09:05:20) *
Пы.Сы. Меня ваще бесит такое отношение, мля, значешь лучше способ, поделись, чем тыкать в справку, наверное для этого и создана эта ветка форума - чтобы учиться...
Когда тебе говорят правильный ответ - это не учеба. В школе это называется "дай списать". smile.gif

Я же тебе открытым текстом говорю, что ответ на твой вопрос есть в моем последнем макросе. Он крохотный совсем. Открываешь и смотришь на команду "нажатия" кнопок. Сравниваешь со своей. Замечаешь в моем варианте что-то "лишнее". Открываешь справку и смотришь, что это "лишнее" делает. Если не знаешь английский, то так и скажи, часть я могу перевести.

Автор: REDFRO 5.8.2010, 13:46

Да давно я заметил твой блайнд

Цитата(CoolCmd @ Четверг, 5 Августа 2010, 11:28:58) *
Когда тебе говорят правильный ответ - это не учеба. В школе это называется "дай списать". smile.gif


Тады нахер я тут что-то пытаюсь выкладывать? Т.е. это ни кому не надо? Ок. Завязали!

Автор: maGz74 5.8.2010, 18:51

за наводку про меда - Редисыч, тебе респект и уважуха

Автор: maGz74 6.8.2010, 6:23

а вот с CoolCmdшным макросом не могу раздуплиться. Может в личку скинешь намек где рыть?

Автор: CoolCmd 6.8.2010, 9:49

Прикрутил гашение лампочки CapsLock на клаве. В BF2 и BF2142 этим занималась сама игра, а БК2 уже нет (у грибков нет лампочек? smile.gif ). Я на CapsLock повесил вызов карты, что бы за колобками наблюдать. Ну и плюс сам скрипт был упрощен.

[attachment=39894:attachment]

REDFRO

Цитата
Т.е. это ни кому не надо?
Автоспот очень полезная штука, даже во время езды на танке.

Автор: REDFRO 6.8.2010, 10:23

Как устанавливать абсолютные координаты экрана я знаю, (типа разрешение 65535на65535)
Так, теперь вопрос года. Я к программистам:
КАКАЯ функция возвращает абсолютные координаты курсора?
Сейчас курю мануал по функция DirectX, там есть функция, только для запсии, установки курсора в нужное положение...

Автор: REDFRO 6.8.2010, 10:33

А вот самая великая наводка которую я нашел, пока к размышлению:
Если максимально компенсировать вертикальную отдачу, и не компенсировать горизонтальную, ну тоесть зажать прицел в одном месте, тогда пули, У ВСЕХ видов оружия (кроме снайпа, по понятным причинам smile.gif ), кладутся по нарастающей спирали с 6 вершинами против часовой стрелки (разрастающийся шестиугольник) или 5, так, забыл, вечером гляну на записи....
Кто дадумаеться как это компенсировать?
Для справки

Вот код спирали против часовой стрелки с 6 вершинами

Код
MouseGetPos, x1, y1
Pi:=3.14
Ra:=60
Gra:=360
Loop
{
  Gra-=1.1
  Ra-=0.5
  x2:=Round(Ra*Cos(Gra)+x1 )
  y2:=Round(Ra*Sin(Gra)+y1 )
}

Автор: maGz74 6.8.2010, 10:55

осталось в макрос впаять это дело

Автор: REDFRO 6.8.2010, 13:17

Это не только впаять, но еще и протестировать, отладить, отточить, и еще у каждого промежутка между выстрелами свой радиус, плюс еще она начинает не с первой пули каца... Отлично видно на штурмовике. И еще одна большая трабла есть, я не могу указывать игре на определенные координаты, типа встань туда, встань туда, я могу только давать команды типа "перемести курсор влево/вправо/вверх/вниз на...". ну тоесть типа MouseMove, x ,y,,r

Автор: maGz74 9.8.2010, 9:30

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

Автор: REDFRO 9.8.2010, 10:46

Нашел метод ФИЗИЧЕСКОГО отслеживания мыши, через устройство HID. Чем это сможет помочь?

Автор: maGz74 9.8.2010, 11:34

написание собственного чита на AHK :D

Автор: maGz74 10.8.2010, 8:21

;Caps Lock single-fire mode by Cadeyrn1:
LButton::
{
if GetKeyState("Capslock", "T")
Loop
{
SendInput {Click}
Sleep, 300
if GetKeyState("LButton", "P")
Continue
else
Break
}
else
{
SendInput {LButton down}
KeyWait, LButton, U
SendInput {LButton up}
}
return
}

Автор: REDFRO 10.8.2010, 16:18

Споминая былые строки, кто то попросил сделать компенсацию качки при прицеливании у снайпа. Сделал, протестил, пипец как не удобно для меня когда прицел не качаеться, а на подсознании этого ждешь и сам пытаешь автоматом корректировать )))
В общем нахрен его, но если кому надо, вот основа

Код
tim:=190
CountC:=10

TR1:
CountK:=0
loop
  {
   CountK+=1

   if (CountK) > 2*CountC
    {
     CountK:=1
    }

   If ((CountK)=1) or ((CountK)=CountC) or ((CountK)=(2*CountC))
     {
      timK:=tim+80
     }
    else
   if ((CountK)=2) or ((CountK)=(CountC-1)) or ((CountK)=(CountC+1)) or ((CountK)=((2*CountC)-1))
     {
      timK:=tim+40
     }
    else
     {
     timK:=tim
     }

   if (CountK>CountC) and (CountK<=2*CountC)
    {
     MouseY-=KachP
     Gosub, %функция движения мыши%
    }
    else
    {
     MouseY+=KachP
     Gosub, %функция движения мыши%
    }

  GetKeyState, RState, SC02C, P
   If RState = U
    {
     break
    }

  sleep, timK
}
CountK:=0
return


Сделанно было за 1 час, за "орфографию" заранее сори...

Пы.Сы. %функция движения мыши% зависит от чуствительности мыши в игре * на какой-то множитель от чуствительности в виндозе. Ищите и обрящите, у меня стояло 0.56

Автор: maGz74 11.8.2010, 11:33

%функция движения мыши% зависит от чуствительности мыши в игре * на какой-то множитель от чуствительности в виндозе. Ищите и обрящите, у меня стояло 0.56
подбирал опытным путем?
а отсылка gosub выглядит так?
gosub, m_sens
m_sems:
m=0,56 ?????

Автор: REDFRO 11.8.2010, 12:15

Цитата(maGz74 @ Среда, 11 Августа 2010, 11:33:56) *
%функция движения мыши% зависит от чуствительности мыши в игре * на какой-то множитель от чуствительности в виндозе. Ищите и обрящите, у меня стояло 0.56
подбирал опытным путем?
а отсылка gosub выглядит так?
gosub, m_sens
m_sems:
m=0,56 ?????


Вообщето я говорил об переменной KachP. Это раз. Во вторых, где ты в коде нашел переменную "m" которой ты захотел присвоить 0,56???
0,56 - чуствительность в "ИГРЕ", это три.

Автор: maGz74 11.8.2010, 12:20

таки тогда я совсем весь запутался, прочел про функцию Gosub все, и в русском и в оригинале, но так и не понял куда ведет твоя отсылка, напиши в личку полную версию, для полного понимания сути этого скрипта.

Автор: REDFRO 11.8.2010, 13:39

Меня этот субъект убивает. А ты думаешь нахрен я вот так написал %функция движения мыши%, наверное потомучто это должна быть твоя функция движения мыши, и как ты там её испольнишь - твои траблы! Знающие - поймут. Не Знающие - будут тупить и гуглить. Можете меня цитировать.

Автор: maGz74 11.8.2010, 13:52

нимб на бок не съехал?
"Не Знающие - будут тупить и гуглить", так понимаю себя ты в Знающие записал?

Автор: CoolCmd 11.8.2010, 14:28

Цитата(maGz74 @ Вторник, 10 Августа 2010, 09:21:21) *
;Caps Lock single-fire mode by Cadeyrn1:
Если использовать capslock для одиночных, то во время стрельбы не получится сидеть или двигаться. С alt удобнее.

Автор: ILUXA-rus 11.8.2010, 14:33

Я всех имею без всяких скриптов, и знающих и не знающих тоже...))

Автор: CoolCmd 11.8.2010, 14:49

ILUXA-rus У тебя очередной приступ троллизма?

Автор: ILUXA-rus 11.8.2010, 14:56

CoolCmd Тсс....

Автор: maGz74 11.8.2010, 15:14

"Если использовать capslock для одиночных, то во время стрельбы не получится сидеть или двигаться. С alt удобнее."
я именно так и сделал

Автор: REDFRO 12.8.2010, 8:24

Цитата(maGz74 @ Среда, 11 Августа 2010, 13:52:12) *
нимб на бок не съехал?
"Не Знающие - будут тупить и гуглить", так понимаю себя ты в Знающие записал?


Понималка еще не выросла. Я говорил о тех, кто знает что такое логика программирование, о тех людях которым не надо обяснять что такое %переменная%, о тех, кто не просят говенькое себе в личку, на голубой каёмочке! И да, я тоже много чего не знаю! Молчи - умнее казаться будешь.

Автор: maGz74 12.8.2010, 8:47

мне твое говенненькое и не нужно :D

Автор: EdTambov 12.8.2010, 9:55

maGz74 REDFRO
За базар можно и по лбу получить.

Автор: REDFRO 12.8.2010, 16:55

Цитата(maGz74 @ Четверг, 12 Августа 2010, 08:47:24) *
мне твое говенненькое и не нужно :D


Цитата(maGz74 @ Пятница, 6 Августа 2010, 06:23:24) *
Может в личку скинешь намек где рыть?


*just_ignored*

Цитата(EdTambov @ Четверг, 12 Августа 2010, 09:55:56) *
maGz74 REDFRO
За базар можно и по лбу получить.


Шел бы лесом Ленинским путём!
Да..., я кажеться сильно ошибся форумом для обсуждения такого типа вещей.

Автор: olegkamo 12.8.2010, 17:48

Нимб упал окончательно и показались "рожки" ...

Автор: Avalon_tm 12.8.2010, 19:01

REDFRO ИМХО "это" нам совсем не камрад, EdTambov дай иму РО назавжды?

Автор: EdTambov 13.8.2010, 0:05

REDFRO R/O 7 дней для ошибающихся форумом.

Автор: APOSTOL_KILLER 10.11.2010, 9:55

Братва привет!
напишите пару примеров макросов для мыши Х7 (Oscar), а то у меня дальше стрельбы одиночными дело не продвинулось

Автор: Pupseg 13.11.2010, 21:52

Ух смотрю макросеров куча, аж до срача дошло))

п.с. Открыл для себя прогу AutoIT в ней тоже можно писать макросы для клавы и мышки, только возможностей куча))) пишу на ней разные полезняшки, инсталяторы в фоновом режиме, сбор характеристик с кучи компов.
кто работает админом советую

Автор: EdTambov 14.11.2010, 12:21

Цитата(Pupseg @ Суббота, 13 Ноября 2010, 21:52:14) *
Ух смотрю макросеров куча, аж до срача дошло))

Ты бы видел базар на тоталбф по поводу макросеров, игры в лане и в инете и бана одного из про-игроков (бк2). Вот уж захватывающее чтиво :D

Автор: REDFRO 14.11.2010, 19:07

Пофлудили все на форуме, включили свои программки и пошли дальше играть. Это был фиереский театр лицедейства! И если бы этот про игрок своим действием не предупредил об бане за макросы всё сообщество БК2, то на сайте pbbans.com было-бы по-больше "новых срочек"! :D

Автор: Ramirag 20.11.2010, 18:03

Кто-нибуть знает как убрать дерганье прицела, после окончания атаки, при которой фиксится отдача?

Автор: delphi 23.11.2010, 13:40

купи чит и не парься.убрать дерганье прицела...может еще чтобы стреляло само,перезаряжалось,целилось?

Автор: Grey Denisson 25.11.2010, 21:37

Цитата *
Ramirag
...после окончания атаки, при которой фиксится отдача?


Что-то не пойму, про, что вопрос-то?

Автор: Pupseg 21.2.2011, 19:01

Это сообщение более важно как история.... яркий пример как писать не надо)))))))

Модный прицел с "щелчками" для снайпера)
Код
#NoEnv
#SingleInstance, Force
Process, Priority,,High
SetMouseDelay, -1
SetEnv, corr, 0
SetScrollLockState, On

Loop
{
state := GetKeyState("Scrolllock", "T")
If state
    {
        Sleep, 100
        Suspend, Off
    }
Else
    {
        Sleep, 100
        Suspend, On
    }
}

PGDN::
{
    If corr>=1
    {
        corr-=1
    }
    Sleep, 10
    ToolTip, %corr%, 50, 30, 1
    SetTimer, tipkill, 1500
    Return
}

PGUP::
{
    corr+=1
    Sleep, 50
    ToolTip, %corr%, 50, 30, 1
    SetTimer, tipkill, 1500
    Return
}

LButton::
{
    DllCall("mouse_event", uint, 1, int, 0, int, -corr, uint,0, int,0 )
    Sleep, 10
    MouseClick, left,,, 1, 0, D
    zoom=1
    Return
    Loop
    {
        If zoom=1
        {
            Sleep, 5
        }
        Else
        {
            Sleep, 50
            MouseClick, left,,, 1, 0, U
            Break
        }
    }
}
  
RButton::
{
    MouseClick, right,,, 1, 0, D
    Sleep, 50
    MouseClick, right,,, 1, 0, U
    Sleep, 50
    zoom=0
    Return
}

tipkill:
{
    SetTimer, tipkill, Off
    ToolTip
    Return
}

Delete::
{
    Reload
}

NumpadMult::
{
    SetScrollLockState, Off
    ExitApp
}


Есть куча вопросов по языку... например как реализовать зажатие левой кнопки с условием лкм и при этом не нарваться на зацикливание... т.к. кнопка зажата софтом и скрипту уже не до физического состояния мыши. снятие GetKeyState не канает... может есть какойнить хитрый dll?)

Автор: Grey Denisson 22.2.2011, 6:09

Цитата *
Delete::
{
Reload
}


2Pupseg

Это что?, если это хоткей, то где Return в конце?, что такое Reload?, зачем стоко не нужных блоков? SetEnv не рекоменуется для этого языка, EnvSet как альтернатива (хз правда зачем ведь всю конструкцию можно построить по другому).
Цитата *
ToolTip, %corr%, 50, 30, 1
SetTimer, tipkill, 1500
К чему этот таймер?, прощще:
Код
ToolTip, %corr%, 50, 30, 1
Sleep, 1500
ToolTip


Цитата *
...кнопка зажата софтом и скрипту уже не до физического состояния мыши...
Ни какой *.dll не нужен.

Цитата *
MouseClick, left,,, 1, 0, D

Почему именно так?
Код
MouseClick, L
;или
SendInput, {LButton Down}
KeyWait, LButton
SendInput, {LButton Up}
;или
While GetKeyState("LButton", "P")
   {
       DllCall("mouse_event", uint, 1, int, 0, int, -corr, uint, 0, int, 0) ; хз для чего это...
       Sleep, 30 ; слип 10 как у тебя маловат, будет пригружать проц и появятся лаги
    }


С самого запуска скрипта ты пытаешся отслеживать состояние кнопки скролллок Loop'ом, зачем?

Код
ScrollLock::
Suspend
If (A_IsSuspended)
   {
      ScrollLockState, Off
      ToolTip, OFF, 640, 512
      Sleep, 300
      ToolTip
      SoundBeep, 7500, 50
      Sleep, 150
      SoundBeep, 7500, 50
   }
Else
   {
      ScrollLockState, On
      ToolTip, ON, 640, 512
      Sleep, 300
      ToolTip
      SoundBeep, 7500, 50
   }
Return


Вот моё видение этой функции.

Ты будешь использовать ToolTip в игре где ПБ рандомно скринит твой экран? Ну раз-на-раз не приходится, всё-же удобнее будет для информации использовать поле чата чем тултип, ведь тултип - это оверлей, а ПБ за это наказывает (не без помощи дотошных админов, которые с пристрастием проверяют/отсылают каждый скрин).

Код
ScrollLock::
Suspend
If (A_IsSuspended)
   {
      ScrollLockState, Off
      SendInput, {vk4b} ; хоткей чата по умолчанию (удобнее в виде виртуального кода)
      Sleep, 150
      SendInput, {Raw}|| ; в игре будет выглядеть как спецсимвол ввиде прицела
      Sleep, 250 ; этот интервал по желанию (в принципе достаточно, чтобы увидеть)
      SendInput, {Escape} ; отменяем ввод (ведь эта инфа приватная)
      Sleep, 150
      SendInput, {vkc0 2} ; жмётся тильда для того, чтобы убрать окно чата
      SoundBeep, 7500, 50 ; звуковой сигнал от системного динамика (по желанию)
      Sleep, 150
      SoundBeep, 7500, 50
   }
Else
   {
      ScrollLockState, On
      SendInput, {vk4b}
      Sleep, 150
      SendInput, {Raw}| ; полная конспирация :)
      Sleep, 250
      SendInput, {Escape}
      Sleep, 150
      SendInput, {vkc0 2}
      SoundBeep, 7500, 50
   }
Return


Вообще, то, что ты тут выложил мягко говоря - неюзабельно. Опиши суть, далее - видно будет. smile.gif

Автор: Pupseg 22.2.2011, 7:34

Grey Denisson

релоад это для случая если скрипт лагнет, ресет такой



1.Таймер для отсутствия дополнительной задержки, да и в мануале так было писано
2.Нет нельзя! зацикливание будет
3.Отслеживание, от лампочки работает отлично, т.к. в суспенде хоть лоб разбей хоткеи отключаются, а циклы нет
4. По поводу чата, спс))) сам думаю также сделать


скрипт Включается-выключается ScrollLock`om
PgUp - Добавляет коррекрировку
pgdown - убавляет
Левая кнопка входит в цикл зажатой кнопки
выход правый клик

сделано для снайперок



а конструкции мне ссцит светил, если писал по другому, компил обламывался

Автор: Grey Denisson 22.2.2011, 18:56

По релоуду: ну да - есть такая функция, она актуальна только в том случае если сам скрипт был отредактирован в процессе когда он уже запущен, что-бы изменения вступили в силу, в твоём случае для чего это? - не понятно (ну да ладно автору виднее, я сам ни разу не пользовался перезагрузкой при помощи хоткея, в процессе "дебага", кликал мышью в контексном меню скрипта в трее, или "убивал/перезапускал").

Код
Home::
{
    If corr<=75
    {
        corr+=5
    }
    Gosub, thetip
    Sleep, 200
    Return
}

Не понятно для чего после того как скрипт уходит читать метку thetip, прописан Sleep, 200 и Return? Ни того, ни другого тут быть не должно, Return скрипт найдёт в конце метки thetip, и этот поток завершится.
Код
Home::
   If corr<=75
      {
         corr+=5
       }
    Gosub, thetip
А вот если скрипт не уходит на метку, то вне болока а не в нутри ставится Return. И вообще - если нет условия (If, While), или нет цикла (Loop) - блок не нужен.
Код
RButton::
{
    MouseClick, right,,, 1, 0, D
    Sleep, 50
    MouseClick, right,,, 1, 0, U
    Sleep, 50
    zoom=0
    Return
}

Код
RButton::
   MouseClick, right,,, 1, 0, D
   Sleep, 50
   MouseClick, right,,, 1, 0, U
   Sleep, 50
   zoom=0
Return

"Чужой огород" - это дебри (я о скриптовоянии, если нет пометок от автора в самом скрипте), когда человек излогает суть своего вопроса ясно, то это упрощает/ускоряет решение этого вопроса. SciTE конечно очень удобен в плане написания, и подсветка синтаксиса не просто так придумана, http://www.script-coding.com/ много толковых идей по этому языку и не только...

Автор: Pupseg 23.2.2011, 8:56

Grey Denisson про рерурны не знаю))) иногда без них глючит, то переменную не поменяет, то залипнет, слип остался от старых типов)))

хотя чтение мануалов продолжается))) ретурны выкинул


а про комменты правду говоришь, нужны они

Автор: Grey Denisson 23.2.2011, 14:39

Цитата *
...иногда без них глючит, то переменную не поменяет, то залипнет...

Залипания, глюки, не срабатывание горячих клавишь или их фунций всё зависит от нагруженности процессора, как одна из причин, и не корректном оформлении скрипта (нагруженностью не нужным контентом) как ещё из причин и т.д.
Пример: нажимая на клавишу 1 (по умолчанию пистолет) в процессе игры можно случайно нажать на тильду и вылезет "чат окно" которое и так сильно раздражает, пытаясь сие обойти, написал вот такой вариант, где горячая клавиша тильды присутствует на своём-же месте, но у неё есть условие - если интервал нажатия/удержания меньше чем 500мс, то нажатие считается случайным и игнорируется.
Код
vkc0::; tilda
starttimevkc0 := A_TickCount
While GetKeyState("vkc0", "P")
   {
      elapsedtimevkc0 := A_TickCount - starttimevkc0
      Sleep, 50
      If (elapsedtimevkc0 > 450)
         {
            SendInput, {vkc0}
            KeyWait, vkc0
         }
   }
Return
Но между строками elapsedtimevkc0... и If (elapsedtimevkc0... с начало не ставил слип, и как итог получил во время удержания этого хоткея скачёк загруженности процессора в 15-25% (величина пиковая правда, далее на спад шло, но всё-же на лицо был лаг, а если к этим %-там прибавить общую нагруженность процессора самой игрой...). После того как этот поток "разбавил" задержкой, добился отсутствия лага. Я не говорю, что везде и всюду надо "впихивать слипы", просто это как один из вариантов "дебага". Тот-же твой безконечный цикл который отслеживает состояние капслока:
Код
Loop
{
state := GetKeyState("CapsLock", "T")
If state
    {
        Sleep, 100
        Suspend, Off
    }
Else
    {
        Sleep, 100
        Suspend, On
    }
}
он в свою очередь отъедает кванты процессорного времени, а всё по тому, что составленно не корректно. И ещё - попробуй в "шапку" скрипта прописать SetBatchLines, -1 (из мануала следует, что это для ускорения чтения).

Автор: Pupseg 23.2.2011, 17:36

Да) камушек думаю подгружает!) где начинал писать ~10ггц, как перенёс скрипты на ~4ггц стало подтупливать)) увеличил слип проверки лампочки, и всё стало отлично)))


п.с. обкатал сегодня прицел) прям для гола!!! очень удобно снимать с одного расстояния кучку вуки))) ониж любят патькой сидеть

интересно, а за эту функцию панк может пнуть?))
DllCall("mouse_event", uint, 1, int, 0, int, 0, uint,0, int,0 )

Автор: Grey Denisson 23.2.2011, 22:35

Цитата *
интересно, а за эту функцию панк может пнуть?


Нет, за это ни чего не будет, так как это не вклинивается в процесс самой игры, просто это не везде работает. Знаю точно, что сие абсолютно безполезно в КОД'е.

Код
Loop
{
state := GetKeyState("CapsLock", "T")
If state
    {
        Sleep, 500
        Suspend, Off
    }
Else
    {
        Sleep, 500
        Suspend, On
    }
}


Код
RControl::
{
    SendInput, {vk4b}
    Sleep, 100
    SendInput, %corr%
    Sleep, 200
    SendInput, {Escape}
    Return
}
Мда..., "а воз и ныне там".

И ещё: точным абакан ты не сделаешь, и вторую пулю из пары ни чем компенсировать нельзя (а тем более вторую и третью у м16а2), едиственное, что можно сделать для общей точности - это выбрать интервал между кликами (но это уже будет мешать на ближних дистанциях, где точность не важна а всё решает скорость), DllCall в этом случае вообще не нужен. А для снайперских винтовок (bolt actioin) вообще не нужен ни какой скрипт (ИМХО).

Автор: Pupseg 24.2.2011, 0:18

Grey Denisson дану! ещё как можно компенсировать!!! вопрос временной задержки!!!

с макросом, на дальних хитрег моргает 2 раза!!

Автор: Grey Denisson 24.2.2011, 3:30

Цитата *
...дану!
Нуда! Нельзя контролировать промежуток времени меду первым выстрелом и вторым в паре, как нельзя использовать пустой подствол, как после выкидывания аммобокса или аптеки автоматически возращаешься к последнему выбранному стволу и т.д. и т.п. Но если ты чего-то тут достигнешь - гинессбук ждёт! smile.gif

Автор: Pupseg 25.2.2011, 17:06

Grey Denisson
кто сказал, что я пытаюсь регулировать промежуток между 2мя пулями в очереди?)))))))))

вся фишка компенсации тут
DllCall("mouse_event", uint, 1, int, 0, int, -32, uint,0, int,0 )


универсальный, настраиваемый кликер
смотрите ниже правильную версию, без применения техники быдлокода)))

Автор: Pupseg 25.2.2011, 17:38

вкл-выкл как всегда капс
правый контрл показывает текущую настройку (рандомы показываются поле rnd= первый зажим второй пауза)

ins-del - настройка длительности зажима курка (шаг 5мс)
home-end - пауза между очередями (шаг 10мс)
pgup-pgdn - рандом зажима... он плюсуется к основной задержке (шаг 5мс)
numpad + и - - рандом задержки между очередями (шаг 10мс)

Автор: Pupseg 25.2.2011, 22:11

Прошу модеров удалить мои старые сообщения, или подождать когда я поправлю "фундаментальные" косяки в скриптах))))

вот пофикшенный универсал)

особое спасибо Grey Denisson за указание на ошибки

Раскрывающийся текст
Код
#NoEnv
#SingleInstance Force
Process Priority,,High
SetMouseDelay -1

;Стандартные настройки
SetEnv, _hold, 80 ;Это переменная отвечает за длительность очереди
SetEnv, _sleep, 40 ;Эта за паузу между ними
SetEnv, h_random, 0 ;Рандом для длины очереди
SetEnv, s_random, 0 ;Рандом для паузы))
Suspend, On


;Включение - капсом. Если капс горит, то работаем
CapsLock::
Suspend
If (A_IsSuspended)
    {
        SetScrollLockState, Off
    }
Else
   {
        SetScrollLockState, On
   }
Return


;Все хоткеи ниже настраивают настройки xD
Ins::
If _hold<200
    {
        _hold+=5
        Sleep, 100
    }
Return

Del::
If _hold>5
    {
        _hold-=5
        Sleep, 100
    }
Return

Home::
If _sleep<300
    {
        _sleep+=10
        Sleep, 100
    }
Return

End::
If _sleep>10
    {
        _sleep-=10
        Sleep, 100
    }
Return

PGUP::
If h_random<120
    {
        h_random+=5
        Sleep, 100
    }
Return

PGDN::
If h_random>0
    {
        h_random-=5
        Sleep, 100
    }
Return

NumpadSub::
If s_random<120
    {
        s_random+=10
        Sleep, 100
    }
Return

NumpadAdd::
If s_random>0
    {
        s_random-=10
        Sleep, 100
    }
Return


;Показывает текущие настройки. Очередь.мс=... Пауза.мс=... Рандом=очередь... пауза...
RControl::
SendInput, {vk4b}
Sleep, 100
SendInput, Hold=%_hold% Sleep=%_sleep% Rnd=%h_random% %s_random%
Sleep, 400
SendInput, {Escape}
Return

LButton::
Loop
{
GetKeyState, szButtonState, LButton, P
If szButtonState = U
{
Break
}
MouseClick, left,,, 1, 0, D
Random, rnd, 0, h_random
Sleep, _hold+rnd
MouseClick, left,,, 1, 0, U
Random, rnd, 0, s_random
Sleep, _sleep+rnd
}


Цитата(Grey Denisson @ Вторник, 22 Февраля 2011, 18:56:07) *
По релоуду: ну да - есть такая функция, она актуальна только в том случае если сам скрипт был отредактирован в процессе когда он уже запущен, что-бы изменения вступили в силу, в твоём случае для чего это? - не понятно (ну да ладно автору виднее, я сам ни разу не пользовался перезагрузкой при помощи хоткея, в процессе "дебага", кликал мышью в контексном меню скрипта в трее, или "убивал/перезапускал").


иногда бывает мышка нефункциональна))))))) хоткей как выход

Автор: Grey Denisson 26.2.2011, 5:49

Цитата *
...особое спасибо...
Н.з. smile.gif
Не много поправил твой код:
Цитата *
Раскрывающийся текст
Код
#IfWinActive ahk_class Battlefield: Bad Company 2 ; скрипт работает только в самой игре
#NoEnv
#SingleInstance Force
Process Priority,, High
SetBatchLines, -1 ; задаём скорость чтения
SetMouseDelay -1
;Стандартные настройки
SetEnv, _hold, 80;Это переменная отвечает за длительность очереди
SetEnv, _sleep, 40;Эта за паузу между ними
SetEnv, h_random, 0;Рандом для длины очереди
SetEnv, s_random, 0;Рандом для паузы))
Suspend, On
Return ; ставится для того, что-бы была прочитана только "шапка" в целях оптимизации
;  основная часть кода
LButton::
   Loop
      {
          GetKeyState, szButtonState, LButton, P
          If szButtonState = U
              {
                  Break
              }
         MouseClick, left,,, 1, 0, D
         Random, rnd, 0, h_random
         Sleep, _hold+rnd
         MouseClick, left,,, 1, 0, U
         Random, rnd, 0, s_random
         Sleep, _sleep+rnd
     }
Return ; дополнил, то, что ты забыл
Читая ветку "Обсуждение PC версии", наткнулся на http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?s=&showtopic=61100&view=findpost&p=1340605, собственно человека можно понять, эта "хрень" действительно действует на нервы. Так как в самой игре отсутствует опция отвечающая за регулирование поведения чат окна, решил поправить это посредством кода:
Код
#IfWinActive ahk_class Battlefield: Bad Company 2 ; работает только в игре
#NoEnv
Process, Priority,, H
SetBatchLines, -1
Return
sc11C:: ; кнопка включения/отключения (цифровой энтер - можно заменить, по желанию)
   KeyWait, sc11C
   i++
   SetTimer, countersc11c, -300 ; анализ количества нажатий в интервале времени 300 мс
Return
countersc11c: ; счётчик нажатий
   If i = 1
      {
         SetTimer, action1sc11c, -10
      }
   If i = 2
      {
         SetTimer, action2sc11c, -10
      }
   i = 0
Return
action1sc11c: ; включаем (при одиночном нажатии)
   cwkt = 1
   SendInput, {vk4a} ; J (общий чат (по умолчанию))
   Sleep, 150
   SendInput, {Raw}| ; тут пишем кому, что как говорится
   Sleep, 250
   SendInput, {Escape} ; прочитали, отменяем ввод (это-же не для всех :))
   Sleep, 150
   SendInput, {vkc0 2} ; закрываем чат окно
   SetTimer, cwkt, 250 ; запускаем таймер (частота интераций через каждые 250 мс (в принципе можно и чащще, но для чего?..., и так приемлемо (имхо)))
Return
action2sc11c: ; отключаем (при двойном нажатии)
   cwkt = 0
   SendInput, {vk4a}
   Sleep, 150
   SendInput, {Raw}||
   Sleep, 250
   SendInput, {Escape}
   Sleep, 150
   SendInput, {vkc0 2}
   SetTimer, cwkt, Off
Return
cwkt: ; таймер запускающий поиск пикселя на экране определённого цвета (ярко жёлтая часть "ползунка" чат окна)
   PixelGetColor, bingo, 686, 194 ; координаты поиска (при условии, что разрешение: 1280х1024)
      If bingo = 0x32CDF4 ; условие при совпадении по цвету
         {
            SendInput, {vkc0 2} ; действие (двойной клик на тильду)
         }
Return
~ESC:: ; клавиша эскейп отлючает таймер, для того, чтобы он не мешал "сёрферить" по опциям игры, после (по желанию) нужно заново активировать ротацию таймера нажав на цифровой энтер
   If cwkt = 1
      {
         SetTimer, cwkt, Off
      }
Return
Собственно вся аннотация в коде, могу лишь добавить, что координаты поиска в зависимости от разрешения монитора нужно поменять, если разрешение отличное от моего smile.gif: 1280х1024. Елси чат окно не имеет ползунка (начало раунда, или в чат окне слишком мало постов, чтобы появился он), или чат окно находится в расширенной форме, то цвет не будет найден, соответственно эффекта не будет. Решение проблемы: "нафлудить", чтобы "забить окно и появился "ползунок", или закрыть расширенную форму чат окна нажав тильду. По игре заметил при появлении нового сообщения от чат бота или игроков, не большие лаги, так и не установил: является это изъяном скрипта или это не связано с ним, если будут субъективные мнения - делитесь. smile.gif По мне, так и без действия скрипта лаги с обновлением чат окна есть. Иногда скрипт мешает мельканием расширенной формы чат окна (опять-таки имхо).

Автор: Grey Denisson 26.2.2011, 6:18

Код
~vk4a:: ; J
~vk4b:: ; K
~vk4c:: ; L
If cwkt = 1
   {
      SetTimer, cwkt, Off
   }
Return
Всё тоже самое, что относится к эскейпу с отличием только в том, что это для того, чтобы можно пользоваться чатами в момент запущеного таймера.

P.S.: За всем не углядишь, всего не упомнишь... :(

Автор: Pupseg 26.2.2011, 12:20

Grey Denisson SetBatchLines, -1
спс за опцию!) проморгал когда писал выше

а ретурн копипаста походу не захватила))
спс за дополнения)

Автор: Grey Denisson 26.2.2011, 15:45

Ну уж коли зашел разговор (писанина) о том, что-кому не нравится в игре, то меня с появления этой игры сильно раздражало то, что при быстром двойном нажатии и дальнейшем удержании клавиши движения вперёд, персонаж начинал бежать. В МОХ'е к стати такого нет, хотя графический движок тот-же, видимо версия другая, ну да ладно - МОХ УГ, купил/глянул/и забыл/забил (имхо конечно).

Код
vk57:: ; W (движение вперёд по умолчанию) виртуальный код, на случай если язык в системе будет не английский на переднем плане
   If (A_TimeSincePriorHotkey < 150 && A_PriorHotkey = "vk57 Up") ; если последний хоткей был нажат менее чем 150 мс назад, и этот хоткей отпущенная клавиша W, то
      {
         SendInput, {vk57 Down} ; после нажатия и удержания W
         Sleep, 200 ; через 200 мс
         SendInput, {LShift} ; дополнительно срабатывает клавиша бега (по умолчанию), чтобы после не большой пробежки персонаж перешол на шаг
      }
   Else ; или-же при не совпадении условий выше закомментированных
      {
         SendInput, {vk57 Down} ; клавиша W ведёт себя как обычно
      }
Return
vk57 Up:: SendInput, {vk57 Up}
"Шапку" писать не стал, ибо в предидущих постах можно поглядеть, да собственно просто скопировав/вставив этот код в тот, где "борьба" с чат окном будет достаточно.

Автор: Pupseg 27.2.2011, 5:32

Переписанный прицел))) вроде работает и не глючит)))
WaitKey творит чудеса... как я мог ранее пропустить эту замечательную функцию)))))

Раскрывающийся текст

#IfWinActive ahk_class Battlefield: Bad Company 2 ;Работать только в окне батлы
#NoEnv
#SingleInstance Force
Process, Priority,,High
SetMouseDelay -1
SetBatchLines, -1
SetEnv, corr, 0 ;Стандартная корректировка в попугаях (зависит от dpi мышки и сенсы)
SetEnv, _tip, True ;Бул для костыля от 2ого нажатия контрл (выкидывает в меню изза эскейпа)
SetCapsLockState, Off
Suspend, On ;По стандарту скрипт не работает
Return

;Вкл-выкл
CapsLock::
Suspend
If (A_IsSuspended)
{
SetCapsLockState, Off
}
Else
{
SetCapsLockState, On
}
Return

;Щелчки)) от 0 до 80 "попугаев"
PGDN::
If corr>=1
{
corr-=1
}
Sleep, 100
Return

PGUP::
If corr<=81
{
corr+=1
}
Sleep, 100
Return


End::
If corr>=5
{
corr-=5
}
Sleep, 100
Return

Home::
If corr<=75
{
corr+=5
}
Sleep, 100
Return

Del::
If corr>=10
{
corr-=10
}
Sleep, 100
Return

Ins::
If corr<=70
{
corr+=10
}
Sleep, 100
Return

;Самое вкусное
LButton::
DllCall("mouse_event", uint, 1, int, 0, int, -corr, uint,0, int,0 ) ;Поднимает ствол на количество щелчков
Sleep, 10 ;Пауза перед выстрелом... мне 10мс хватает. возможно кому-то придётся увеличить
MouseClick, left,,, 1, 0, D
KeyWait, LButton
MouseClick, left,,, 1, 0, U
Return

RControl::
If _tip
{
_tip:=False
SendInput, {vk4b}
Sleep, 100
SendInput, %corr%
Sleep, 400
SendInput, {Escape}
Sleep, 100
_tip:=True
}
Return

Автор: Grey Denisson 27.2.2011, 19:59

У меня пара вопросов по твоему коду: 1). А ты в курсе, что курсор не всегда поднимается на столько пискселей, сколько диктует ему динамическая переменная corr? Для проверки поставь к примеру 50, и покликай вот с таким вариантом функции LButton.

Код
LButton::
   DllCall("mouse_event", uint, 1, int, 0, int, -corr, uint, 0, int, 0)
   Sleep, 10
   MouseClick, L,,, 1, 0, D
   KeyWait, LButton
   MouseClick, L,,, 1, 0, U
   DllCall("mouse_event", uint, 1, int, 0, int, corr, uint, 0, int, 0)
   Sleep, 10
Return
Не обязательно в самой игре (поставь ; перед директивой #IfWinActive ahk_class Battlefield: Bad Company 2, чтобы эта строка игнорировалась), покликай мышью и ты убедишься, что не всегда курсор возвращается в верхнюю и нижнюю точки при клике. Так как MouseMove в этой игре не работает в Direct3D (трёхмерная графика - сама игра, геймплэй...), а лишь только в DirectDraw (двухмерная графика - меню игры, рабочий стол Windows...) и учитывая "корявость" DllCall("mouse..., думаю не стоит заморачиваться этим. 2). Почему курсор поднимается только вверх, и не возвращается по окончании удержания хоткея?

Автор: Pupseg 27.2.2011, 21:57

Grey Denisson зачем обратно-то?))) лишнее палево честно сказать)))

не знаю - не знаю у меня на место корректно встаёт. может виновата акселерация мыши?? она какраз и зависит от числа "пикселей"

Аккселерация мышки

Выключено
Код
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,00,a0,00,00,00,00,00,00,00,40,\
01,00,00,00,00,00,00,80,02,00,00,00,00,00,00,00,05,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,66,a6,02,00,00,00,00,00,cd,4c,\
05,00,00,00,00,00,a0,99,0a,00,00,00,00,00,38,33,15,00,00,00,00,00


Стандартно
Код
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,15,6e,00,00,00,00,00,00,00,40,\
01,00,00,00,00,00,29,dc,03,00,00,00,00,00,00,00,28,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,b8,5e,01,00,00,00,00,00,cd,4c,\
05,00,00,00,00,00,cd,4c,18,00,00,00,00,00,00,00,38,02,00,00,00,00



Кстати 10мс и вправду мало!! пару раз залипал)) поставил 20мс всё ок стало

Автор: Grey Denisson 27.2.2011, 22:28

Цитата *
зачем обратно-то?
Обратно, чтобы уловить моменты, когда отправные точки курсора будут не совпадать (это про тест, если ты об этом). Если на второй вопрос твой встречный вопрос, то реально не понимаю в чём комфорт, если после сдвига вверх прицела надо будет заного лишний раз позицианировать его на цели в случае промаха на пример). У меня мышь A4Tech XL-760H (3600 dpi), играю на этой чуствительности. И действительно, что в игре, что в процессе теста в 2д режиме, отправные точки хаотично "скачат", ну не так часто, но бывает. Проверял на всех частотах чуствительности dpi, эффект идентичный, мышь не причём явно.
Код
;#IfWinActive ahk_class Battlefield: Bad Company 2
#NoEnv
#SingleInstance Force
Process, Priority,, High
SetMouseDelay -1
SetBatchLines, -1
SetEnv, corr, 50
SetEnv, _tip, True
SetCapsLockState, Off
Suspend, On
Return
CapsLock::
   Suspend
   If (A_IsSuspended)
      {
         SetCapsLockState, Off
      }
   Else
      {
         SetCapsLockState, On
      }
Return
PGDN::
   If corr>=1
      {
         corr-=1
      }
   Sleep, 100
Return
PGUP::
   If corr<=81
      {
         corr+=1
      }
   Sleep, 100
Return
End::
   If corr>=5
      {
         corr-=5
      }
   Sleep, 100
Return
Home::
   If corr<=75
      {
         corr+=5
      }
   Sleep, 100
Return
Del::
   If corr>=10
      {
         corr-=10
      }
   Sleep, 100
Return
Ins::
   If corr<=70
      {
         corr+=10
      }
   Sleep, 100
Return
LButton::
   DllCall("mouse_event", uint, 1, int, 0, int, -corr, uint, 0, int, 0)
   Sleep, 30
   MouseClick, L,,, 1, 0, D
   KeyWait, LButton
   MouseClick, L,,, 1, 0, U
   DllCall("mouse_event", uint, 1, int, 0, int, corr, uint, 0, int, 0)
   Sleep, 30
Return
RCtrl::
   If _tip
      {
         _tip:=False
         SendInput, {vk4b}
         Sleep, 100
         SendInput, %corr%
         Sleep, 400
         SendInput, {Escape}
         Sleep, 100
         _tip:=True
      }
Return
Только слегка изменил, чтобы был возврат курсора по отпусканию для сравнения.

Автор: Pupseg 27.2.2011, 22:56

Grey Denisson всё-таки попробуй отрубить акселерацию....
так-как писанный дллкалл эмулирует движение мыши, а не уже офильтрованного и "ускоренного" курсора...
то-есть двигая курсор создаётся опорная точка для аккселерации, далее нажимая на кнопку срабатывает колл - который сдвигает мышь на большое расстояние, соответственно происходит расчёт аккселерации который всё портит

писанный ранее тест по теме позиционирования скрипт прошёл без проблем.

А вот и мои результаты, благодаря работе скрипта выше
[attachment=45273:attachment][attachment=45274:attachment]

вот скомпилированная версия прицела) менять что-то врятли уже буду
[attachment=45278:attachment]

Автор: Grey Denisson 27.2.2011, 23:10

Чесно говоря, в сей нюанс ни когда не вникал, за ненадобностью, но всё-же... Объясни подробнее, где, что надо делать. Просто хочу удостоверится в правильности твоих высказываний, м.б., можно будет при корректной работе DllCall "покреативить".

Автор: Pupseg 27.2.2011, 23:16

Тут рег-файлы
один включает другой выключает аккселерацию

)))) креативить))) можно, например планирую на следующих выходных уберабакан сделать) с компенсацией удара от первого патрона, счётчиком очередей (чтоб слегка сбавлял темп в "автоматическом режиме") хотя это всё отдалённо попахивает читом под названием norecoil

Код
;думаю так лучше
LButton::
   DllCall("mouse_event", uint, 1, int, 0, int, -corr, uint, 0, int, 0)
   Sleep, 20
   MouseClick, L,,, 1, 0, D
   Sleep, 10
   DllCall("mouse_event", uint, 1, int, 0, int, corr, uint, 0, int, 0)
   KeyWait, LButton
   MouseClick, L,,, 1, 0, U
   Sleep, 30
Return


хотя потестил скрипт.... функция возврата нах не нужна... от неё только глюки, изза необходимости делать более 50мс задержку (это столько выстрел делается)

Автор: Grey Denisson 3.3.2011, 0:37

Цитата *
...хотя это всё отдалённо попахивает читом под названием norecoil
Для меня это - прикладное программирование. smile.gif

Автор: Pupseg 7.3.2011, 5:00

уберабакан

возможно придётся отключить акселерацию мышки.
и откалиблоравть dllcall, у меня там стоит 32 (короче нужно подобрать это число так , чтобы обе пули из 2шки ложились в точку

Код
#IfWinActive ahk_class Battlefield: Bad Company 2
#NoEnv
#SingleInstance Force
Process, Priority,,High
SetMouseDelay -1
SetBatchLines, -1
SetEnv, _loop, 0
SetCapsLockState, Off
Suspend, On
Return

CapsLock::
Suspend
If (A_IsSuspended)
    {
        SetCapsLockState, Off
    }
Else
   {
        SetCapsLockState, On
   }
Return

LButton::
Loop
{
    GetKeyState, szButtonState, LButton, P
    If szButtonState = U
    {
        _loop := 0
        Break
    }
    If _loop > 3
        {
            _loop := 4
        }
    MouseClick, left,,, 1, 0, D
    Sleep, 40
    DllCall("mouse_event", uint, 1, int, 0, int, 32-(_loop*4), uint,0, int,0)
    Sleep, 80-(_loop*4)
    DllCall("mouse_event", uint, 1, int, 0, int, -32+(_loop*4), uint,0, int,0)
    MouseClick, left,,, 1, 0, U
    Sleep, 80+(_loop*8)
    _loop += 1
}
Return


Автор: Grey Denisson 7.3.2011, 19:24

Думаю, что отключать ни чего не стоит, просто напиши код в котором стрельба с зажатым прицелом будет повтором при удержании с простым кликом без DllCall:

Код
...
While GetKeyState("LButton", "P")
   {
       MouseClick, L
       Sleep, 100 ; интервал в 100мс наиболее подходит
   }
...
, а при стрельбе без прицеливания, используй DllCall как стабилизатор, примерно вот так:
Код
...
While GetKeyState("LButton", "P")
   {
      DllCall("mouse_event", UInt, 0x2, Int, 0, Int, 0, UInt, 0, Int, 0)
      Sleep, 30
      DllCall("mouse_event", UInt, 0x4, Int, 0, Int, 0, UInt, 0, Int, 0)
      Sleep, 30
   }
...
В общем поковыряв вызов функции (DllCall), из полезного пока нашел только вот, что -
Всем известна проблема с чувствительностью мышки при управлении танковым орудием (другие виды башенных орудий как-то в чувствительности по адекватнее), приходится или менять её в опциях игры, или ставить заведомо большую (что безусловно мешает вне техники), ну или же юзать джойстик. Так вот, как одно из решений данной проблемы:
Код
~XButton2:: ; ближняя-боковая на мыши (при желании можно заменить)
   xb2 := 1
   KeyWait, XButton2
   xb2 := 0
Return
$vk45:: ; поворот в право (e по умолчанию)
   If xb2 = 1
      {
         While GetKeyState("vk45", "P")
            {
               DllCall("mouse_event", UInt, 1, Int, 1000, Int, 0, UInt, 0, Int, 0)
               Sleep, 30
            }
      }
   Else
      {
         SendInput, {vk45 Down}
         KeyWait, vk45
         SendInput, {vk45 Up}
      }
Return
$vk51:: ; поворот в лево (q по умолчанию)
   If xb2 = 1
      {
         While GetKeyState("vk51", "P")
            {
               DllCall("mouse_event", UInt, 1, Int, -1000, Int, 0, UInt, 0, Int, 0)
               Sleep, 30
            }
      }
   Else
      {
         SendInput, {vk51 Down}
         KeyWait, vk51
         SendInput, {vk51 Up}
      }
Return
Маленькая аннотация: при зажатой ближней-боковой кнопки мыши (на мой взгляд это удобно, хотя...), нажатие и удержание кнопок q и e позволяют разворачивать башню в техники соответственно в лево и в право. Если кнопка-модификатор (ближняя-боковая на мыши) не зажата, то ети клавиши выполняют свои функции. Шапкой код оформлять не стал, вся инфа выше имеется.

Автор: Grey Denisson 14.3.2011, 0:19

http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?s=&showtopic=61382&view=findpost&p=1364961, + в воздухе сие при управлении вертолётом позволяет делать боковые стрэйфы не опасаясь задействовать лишнее в отличии если юзать мышь (имхо).

Автор: Pupseg 21.4.2011, 17:07

народ а кто пробовал приворачивать http://leenissen.dk/fann/wp/
к Autohotkey) мож есть у кого библиотека для вызова без dllcall

Автор: CoolCmd 22.4.2011, 11:11

Pupseg Какое отношение эта хрень имеет к игре?

Автор: Pupseg 23.4.2011, 18:37

CoolCmd хитрожопый и безпалевный рандом

Автор: Grey Denisson 25.4.2011, 20:44

Рэндом для чего?

Автор: Pupseg 28.4.2011, 6:42

Grey Denisson пауза между выстрелами, если произошло 2-3 клика быстрых, то следующие должны идти с долгой паузой, и наоборот

Автор: Grey Denisson 29.4.2011, 21:42

Цитата *
...2-3 клика быстрых, то следующие должны идти с долгой паузой
Хочу уточнить, что ты подразумеваешь под словом клики: зажал/удерживаешь ЛКМ, а скрипт генерирует клики, или буквальные/физические несколько кликов? Если зажал/удерживаешь - то ответ уже был:
Цитата *
...стрельба с зажатым прицелом будет повтором при удержании с простым кликом без DllCall:
Код
...
While GetKeyState("LButton", "P")
   {
       MouseClick, L
       Sleep, 100; интервал в 100мс наиболее подходит
   }
...
Если второй вариант из моего вопроса (на счёт рандомности) - я себе представляю это примерно вот как-то так:
Код
SetEnv, var, 30
SetEnv, var2, 50
Return
LButton::
While GetKeyState("LButton", "P")
   {
      MouseClick, L
      Random, randelay, %var%, %var2%
      Sleep, % randelay
      If (A_Index > 1 && A_Index <= 5)
         {
            SetEnv, var, 50
            SetEnv, var2, 70
         }
      If (A_Index >= 6 && A_Index <= 10)
         {
            SetEnv, var, 70
            SetEnv, var2, 90
         }
      If (A_Index >= 11 && A_Index <= 23)
         {
            SetEnv, var, 120
            SetEnv, var2, 140
         }
      If (A_Index >= 24 && A_Index <= 28)
         {
            SetEnv, var, 100
            SetEnv, var2, 120
         }
      If A_Index >= 29
         {
            SetEnv, var, 70
            SetEnv, var2, 90
         }
   }
Return
Генерируется выборочное число исходя из минимального барьера (var), и максимального (var2). Пример взят из моего скрипта для КСС (там эти тайминги актуальны), на соответствие для БК2 не проверял, да и нет нужды, ибо не подойдёт, выложил для наглядности. По экспериментировав со значениями динамических переменных можешь подобрать, что нибудь приемлимое для себя... Этот вариант по типу - зажал/удерживаешь, если нравится спамить клики, то можно вот так:
Код
LButton::
If (A_TimeSincePriorHotkey < 80 && A_PriorHotkey = "LButton Up")
   {
      SendInput, {LButton Up}
      Hotkey, LButton, key_off, On
      Sleep, 500
      Hotkey, LButton, LButton, On
      If GetKeyState("LButton", "P")
         {
            SendInput, {LButton Down}
         }
   }
Else
   {
      SendInput, {LButton Down}
   }
Return
LButton Up::
SendInput, {LButton Up}
key_off:
Return
В этом варианте можешь заменить 80 и 500 на динамические переменные и тоже провести свой дэбаг, хотя я считаю саму Вашу изначальную идею - утопичной, ибо нет смысла рэндомно отсекать, если достаточно просто зажать/удерживать для определённой скорости интераций в кликах скрипта в достижении баланса скорость/точность естевтственно в режиме прицеливания (имхо). smile.gif

Автор: Pupseg 30.4.2011, 10:37

нее)) рандом этот очевиден...

я хочу сделать.

на входе:
данные о длительности зажатия и бездействия кнопки
длительность прошлого скриптового зажатия и паузы после

выход:
значение порога "рандома" для следующего "зажатия"


а алгоритм прост. если выпадают длинные пороги, то следующие будут маленькие, для восстановления разброса, а также если выпадают маленькие, то для использования разброса следующие будут длиннее.

п.с. нейронка удобна тем, что легко считаются промежуточные значения, дай ей только несколько примеров входных данных и правильных ответов на них, и она сама себе "разработает" алгоритм для расчёта

Автор: Grey Denisson 30.4.2011, 12:46

Если будут достигнуты какие-либо успехи на этом поприще, то потрудитесь выложить свой труд коллега, ибо я хотя бы смогу на примере осмыслить суть сей темы, покась я ни бум-бум не въезжаю... rolleyes.gif

Автор: Pupseg 30.4.2011, 23:26

Обязательно выложу) как мысли соберутся. это будет нескоро, хотя в этой ветке давно никто не писал smirk.gif

Автор: Mozilla 1.5.2011, 14:23

У меня при запуске любого скрипта выдает :

[attachment=48517:attachment]

Что делать?

Автор: Pupseg 1.5.2011, 18:35

Цитата(Mozilla @ Воскресенье, 1 Мая 2011, 14:23:11) *
У меня при запуске любого скрипта выдает :

[attachment=48517:attachment]

Что делать?


исходник в студию...

но судя по еррору, то неправильно выставлены хоткеи. Скорее всего это неверно указана ссылка на функцию Run. попробуй
Код
#z::
"тут тело функции Run"
Return

Автор: Grey Denisson 1.5.2011, 21:01

Не знаю почему, но при первом запуске AutoHotkey.exe он как пример запускает свой скрипт в котором по сочетании клавишь Win+z запускается (по идее) их домашняя страничка, у меня она не запускается, да этого мне и не надо. Проверь, что бы на твоей машине файлы с расширением *.ahk запускались именно по средству AutoHotkey.exe, для проверки попробуй вот такой простой скрипт:

Код
#NoEnv
SetBatchLines, -1
hModule := DllCall("LoadLibrary","Str","gdiplus.dll")
VarSetCapacity(Temp1,16,0), NumPut(1,Temp1,0,"Char")
DllCall("gdiplus\GdiplusStartup","UInt*",pToken,"UInt",&Temp1,"UInt",0)
OnExit, ExitSub
Gui, -Caption +E0x80000 +LastFound +Owner +AlwaysOnTop
Gui, Show, w515 h515, Clock
hWnd := WinExist()
;DllCall("SetParent","UInt",hWnd,"UInt",WinExist("ahk_class Progman"))
hDC := DllCall("GetDC","UInt",0)
VarSetCapacity(Temp1,40,0), NumPut(515,Temp1,4), NumPut(515,Temp1,8), NumPut(40,Temp1,0), NumPut(1,Temp1,12,"UShort"), NumPut(0,Temp1,16), NumPut(32,Temp1,14,"UShort")
hBitmap := DllCall("CreateDIBSection","UInt",hDC,"UInt",&Temp1,"UInt",0,"UInt",0,"UInt",0,"UInt",0)
DllCall("ReleaseDC","UInt",0,"UInt",hDC)
hDC := DllCall("CreateCompatibleDC","UInt",0)
DllCall("gdi32\SelectObject","UInt",hDC,"UInt",hBitmap)
DllCall("gdiplus\GdipCreateFromHDC","UInt",hDC,"UInt*",pGraphics)
DllCall("gdiplus\GdipSetSmoothingMode","UInt",pGraphics,"Int",4)
HandColor = 0xDD000000
SecondHandColor = 0xDD7777FF
Color1 = 0xCCA9A9A9
Color2 = 0xAABBBBBB
Color3 = 0xDD000000
Color4 = 0xDD777777
Color5 = 0xDD555555
Color6 = 0xDDFFFFFF
DllCall("gdiplus\GdipCreatePen1","Int",HandColor,"Float",2,"Int",2,"UInt*",pPenHand)
DllCall("gdiplus\GdipCreatePen1","Int",SecondHandColor,"Float",2,"Int",2,"UInt*",pPenSecondHand)
DllCall("gdiplus\GdipCreatePen1","Int",Color1,"Float",87,"Int",2,"UInt*",pPen1)
DllCall("gdiplus\GdipCreatePen1","Int",Color1,"Float",3,"Int",2,"UInt*",pPen2)
DllCall("gdiplus\GdipCreatePen1","Int",Color1,"Float",6,"Int",2,"UInt*",pPen3)
DllCall("gdiplus\GdipCreatePen1","Int",Color2,"Float",6,"Int",2,"UInt*",pPen4)
DllCall("gdiplus\GdipCreatePen1","Int",Color3,"Float",6,"Int",2,"UInt*",pPen5)
DllCall("gdiplus\GdipCreatePen1","Int",Color4,"Float",8,"Int",2,"UInt*",pPen6)
DllCall("gdiplus\GdipCreatePen1","Int",Color2,"Float",8,"Int",2,"UInt*",pPen7)
DllCall("gdiplus\GdipCreatePen1","Int",Color3,"Float",8,"Int",2,"UInt*",pPen8)
DllCall("gdiplus\GdipCreatePen1","Int",Color2,"Float",20,"Int",2,"UInt*",pPen9)
DllCall("gdiplus\GdipCreatePen1","Int",Color3,"Float",20,"Int",2,"UInt*",pPen10)
DllCall("gdiplus\GdipCreatePen1","Int",Color2,"Float",16,"Int",2,"UInt*",pPen11)
DllCall("gdiplus\GdipCreatePen1","Int",Color5,"Float",6,"Int",2,"UInt*",pPen12)
DllCall("gdiplus\GdipCreatePen1","Int",Color4,"Float",6,"Int",2,"UInt*",pPen13)
DllCall("gdiplus\GdipCreatePen1","Int",Color6,"Float",10,"Int",2,"UInt*",pPenOverlay)
DllCall("gdiplus\GdipCreateSolidFill","Int",HandColor,"UInt*",pBrush)
Gosub, DrawClock
SetTimer, DrawClock, 1000
OnMessage(0x201,"DragWin")
Return
DrawClock:
DllCall("gdiplus\GdipGraphicsClear","UInt",pGraphics,"Int",0)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen1,"Float",44,"Float",44,"Float",427,"Float",427,"Float",178,"Float",92)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen2,"Float",86,"Float",86,"Float",343,"Float",343,"Float",270,"Float",268)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen3,"Float",150,"Float",150,"Float",215,"Float",215,"Float",120,"Float",88)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen4,"Float",150,"Float",150,"Float",215,"Float",215,"Float",77,"Float",41)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen5,"Float",150,"Float",150,"Float",215,"Float",215,"Float",57,"Float",20)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen4,"Float",150,"Float",150,"Float",215,"Float",215,"Float",30,"Float",27)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen6,"Float",150,"Float",150,"Float",215,"Float",215,"Float",330,"Float",58)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen7,"Float",160,"Float",160,"Float",195,"Float",195,"Float",161,"Float",109)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen8,"Float",160,"Float",160,"Float",195,"Float",195,"Float",120,"Float",41)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen9,"Float",166,"Float",166,"Float",183,"Float",183,"Float",108,"Float",11)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen10,"Float",166,"Float",166,"Float",183,"Float",183,"Float",100,"Float",8)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen9,"Float",166,"Float",166,"Float",183,"Float",183,"Float",89,"Float",11)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen10,"Float",166,"Float",166,"Float",183,"Float",183,"Float",60,"Float",28)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen10,"Float",166,"Float",166,"Float",183,"Float",183,"Float",30,"Float",28)
TimeMonths := ((A_MM - 1) * 2.33) + (A_DD * 0.037)
TimeDays := A_DD * 0.9
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPenOverlay,"Float",166,"Float",166,"Float",183,"Float",183,"Float",60,"Float",TimeDays)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPenOverlay,"Float",166,"Float",166,"Float",183,"Float",183,"Float",30,"Float",TimeMonths)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen11,"Float",166,"Float",166,"Float",183,"Float",183,"Float",330,"Float",29)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen3,"Float",171,"Float",171,"Float",173,"Float",173,"Float",126,"Float",82)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen5,"Float",171,"Float",171,"Float",173,"Float",173,"Float",120,"Float",6)
TimeHours := Mod((A_Hour * 30) + (A_Min // 2),360)
TimeMinutes := Mod((A_Min * 6) + (A_Sec * 0.1),360)
TimeSeconds := Mod(A_Sec * 6,360)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen5,"Float",180,"Float",180,"Float",155,"Float",155,"Float",270,"Float",TimeHours)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen4,"Float",180,"Float",180,"Float",155,"Float",155,"Float",TimeHours - 90,"Float",360 - TimeHours)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen4,"Float",187,"Float",187,"Float",141,"Float",141,"Float",198,"Float",TimeMinutes + 72)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen12,"Float",187,"Float",187,"Float",141,"Float",141,"Float",TimeMinutes - 90,"Float",288 - TimeMinutes)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen4,"Float",194,"Float",194,"Float",127,"Float",127,"Float",263,"Float",TimeSeconds + 7)
DllCall("gdiplus\GdipDrawArc","UInt",pGraphics,"UInt",pPen13,"Float",194,"Float",194,"Float",127,"Float",127,"Float",TimeSeconds - 90,"Float",353 - TimeSeconds)
TimeHours += 90, TimeMinutes += 90, TimeSeconds += 90
DllCall("gdiplus\GdipDrawLine","UInt",pGraphics,"UInt",pPenHand,"Float",257,"Float",257,"Float",257 - (108 * Cos(TimeHours * 0.017453)),"Float",257 - (108 * Sin(TimeHours * 0.017453)))
DllCall("gdiplus\GdipDrawLine","UInt",pGraphics,"UInt",pPenHand,"Float",257,"Float",257,"Float",257 - (154 * Cos(TimeMinutes * 0.017453)),"Float",257 - (154 * Sin(TimeMinutes * 0.017453)))
DllCall("gdiplus\GdipDrawLine","UInt",pGraphics,"UInt",pPenSecondHand,"Float",257,"Float",257,"Float",257 - (173 * Cos(TimeSeconds * 0.017453)),"Float",257 - (173 * Sin(TimeSeconds * 0.017453)))
DllCall("gdiplus\GdipFillEllipse","UInt",pGraphics,"UInt",pBrush,"Float",251,"Float",251,"Float",12,"Float",12)
DllCall("UpdateLayeredWindow","UInt",hWnd,"UInt",0,"UInt",0,"Int64*",0x20300000203,"UInt",hDC,"Int64*",0,"UInt",0,"UInt*",0x1FF0000,"UInt",2)
Return
Esc::ExitApp
GuiClose:
ExitApp
DragWin()
{
Gui, +LastFound
PostMessage, 0xA1, 2
}
ExitSub:
DllCall("gdiplus\GdiplusShutdown","UInt",pToken)
DllCall("FreeLibrary","UInt",hModule)
ExitApp
Это графическая эмитация системных часов, закрыть этот маленький скрипт ты можешь прибив его через контекстное меню иконки в трее, если он запустится, то и любой другой тоже.

Автор: Mozilla 1.5.2011, 22:03

Pupseg да все получись. Как то запустил, но чот мне не вштырило от этих скриптов. Ощущение ... реальности что ли теряется?

Автор: Pupseg 2.5.2011, 13:25

Mozilla Ну почему-же продадает?)
у абакана нету автоматического режима? а у снайперок прицелы не корректируются?)

Автор: Mozilla 2.5.2011, 14:14

Pupseg в том то и дело, на ВСС прицел почти не дергается. Точнее дергается, но не так как при обычной стрельбе. Там можно впринципе 4-5 раз успеть выстрелить, прежде чем прицел уходит вверх и пули не попадают. А 4-5 хватает чтоб сделать трупом любого.

На абакане не использовал, а что он дает?

Автор: REDFRO 2.5.2011, 18:14

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

Первая проблема, чтобы компенсировать отдачу, надо либо высчитывать время в которое производился выстрел, и компенсировать его по времени, но это сложно и очень таки не точно. Вывод надо самому создавать очередь, т.е. посылать клики с такой скорострельностью, с которой стреляет оружие.
Вот тута и вторая проблема с которой я столкнулся - НЕ ТОЧНОСТЬ таймера/слипа в AHK, т.е. при использовании простых Click - Sleep 60, давали естественно ужасные результаты в виде захлебывания, и не ритмичности.
И третья проблема - это собственно как корректировать отдачу, на сколько и т.д. Решилось чистым экспериментальным путем аж в пол года))).

И так, начнем понемногу...
Простые Click или MouseClick или даже Send абсолютно не устраивали в виду своей заторможенности. Т.е. на них тратились драгоценные миллисекунды времени. Решение естесвенно:

Код
DllCall("mouse_event", UInt, 0x02, UInt, 0, UInt, 0, UInt, 0, UInt, 0)
DllCall("mouse_event", UInt, 0x04, UInt, 0, UInt, 0, UInt, 0, UInt, 0)


Это САМЫЙ быстрый клик который можно послать в программу, а чередование их, даёт странный эффект, особенно после последнего патча, но об этом позже...

И так начинаем стрелять:
Код
...
kos=0
While GetKeyState("LButton", "P")
{
  kos+=1; Кол-во пуль
...
DllCall("mouse_event", UInt, 0x02, UInt, 0, UInt, 0, UInt, 0, UInt, 0)
DllCall("mouse_event", UInt, 0x04, UInt, 0, UInt, %MouseY2%, UInt, 0, UInt, 0)
; Да да именно так, т.е. нажали на кнопку и опучтили её уже скорректированном виде, где MouseY2 присваивается значение из матрицы отдачи, в соответствии с пулей.
...
Mouse_Y2:=(Mouse_Y2/2)-%MouseY2%
;Здесь мы считаем на сколько надо будет скорректировать прицел после стрельбы, ибо корректировка заставляет наблюдать иногда землю... На стадии разработки так и осталась, ибо не сильно таки беспокоит.
...
HSleep(n/1000)
; И сама функция точного ожидания HSleep, где "n" - то, сколько между выстрелами ждать будем.
...
}


Да да, самый сок, та самая функция уточненного ожидания. Из-за привязанности AHK к кратности 15 в таймингах, мы не сможем получить например 50 или 70 мс, выходит 45 и 75 соответственно...

Код
HSleep( Seconds )
{
Static Freq,pQPC

If !Freq
{
   DllCall( "QueryPerformanceFrequency", Int64P,Freq )
   hMod := DllCall( "GetModuleHandle", Str,"kernel32.dll" )
   pQPC := DllCall( "GetProcAddress", UInt,hMod, Str,"QueryPerformanceCounter" )
}
DllCall( pQPC,Int64P,T1 )
If ( Seconds > 0.032 )
{
  Sleep %  ( Seconds - 0.016 ) * 1000
; Т.е. что, мы сначала ждем ОБЫЧНЫЙ тайминг сна кратный 15, а остальной остаток отдаем на ожидание при помощи использования HPET (википедьте кто не знает)
  DllCall( pQPC,Int64P,T2 )
  Seconds := Seconds - ((T2-T1)/Freq)
}
DllCall( pQPC, Int64P,pTick )
cTick := pTick
While( ( (Tick:=(pTick-cTick)/Freq)) < Seconds )
{
   DllCall( pQPC, Int64P,pTick )
   Sleep -1
}
DllCall( pQPC,Int64P,T3 )
}


Но эта функция, HPET, сильно нагружает процессор при вычислении, относительно стареньких процессоров канечно))), но в целом можно немного доработать её и использовать целую HPET, но тогда она начнет неплохо грузить проц.

А теперь самое интересное, та самая матрица отдачи. Эта матрица не подойдет каждому ибо зависит от чуствительности мыши, чем меньше она, тем меньше компенсировать, но у меня она такая:
4,4,3,2,2,1,1

Теперь пару слов об скорострельности. Возьмем нашу всеми любимую MG36, у неё, судя по характеристикам и таблицам в инете, скорострельность 80 мс, НО, из-за того, что наш код немного всё таки кушает мс, то я использую где то 70-75 мс, для точной стрельбы 85-90. А вот теперь интересность, если выставить 55мс для этого оружия, то оно начнет стрелять как бы пучками пуль, не совсем прицельно, зато убийственно! Экспериментируйте.

Автор: REDFRO 2.5.2011, 19:50

Да, забыл, пару слов...
Весь скрипт действует под:

SetBatchlines, -1

Это опять таки приводит к нагрузке на проц, так что если хотите экономить, то юзайте её только в функции уточненного ожидания.

И еще, наверное это уже знает каждый, но всё такие НЕ ЮЗАЙТЕ ХУКИ, панк бастер не любит их))) и банит!

Пы.Сы. Какие-либо дополнения и корректировки для скрипта я уже забросил делать еще 3 месяца назад, если есть какие-либо предложения или вопросы, ОБРАЩАЙТЕСЬ, пока у меня хорошее настроение))

Автор: Grey Denisson 2.5.2011, 20:51

Цитата *
...НЕ ЮЗАЙТЕ ХУКИ, панк бастер не любит их))) и банит!
Бред, наиграл 600+ часов - ПБ ни разу не напряг
Цитата *
...если есть какие-либо предложения или вопросы, ОБРАЩАЙТЕСЬ, пока у меня хорошее настроение))
Спасибо добр-человек, но всё уже давно изучено, и написано. А разбираться в тонкостях нагромождения твоих мыслей, нет ни какого желания. ;)

Автор: REDFRO 3.5.2011, 19:33

Цитата(Grey Denisson @ Понедельник, 2 Мая 2011, 20:51:14) *
Бред, наиграл 600+ часов - ПБ ни разу не напряг

Первый вариант с
#InstallKeybdHook
#InstallMouseHook
уносился панков как GAME HACK #80584, многих знакомых побанило. Убрал строки от греха подальше и спокойно стрелял...
Цитата(Grey Denisson @ Понедельник, 2 Мая 2011, 20:51:14) *
Спасибо добр-человек, но всё уже давно изучено, и написано. А разбираться в тонкостях нагромождения твоих мыслей, нет ни какого желания. ;)

Кому надо, тот разберётся...

Автор: Grey Denisson 3.5.2011, 23:38

Цитата *
...многих знакомых побанило.
Вас там целый батальон смерти - "Stormtroopers Of Scripts"? Выложи факт, из которого будет явным образом видно, что наказание последовало за использование скрипта в сыром или откомпилированном виде, что-то я таких прецендентов не нашел пока...

Автор: Pupseg 5.5.2011, 21:54

Изувеченный абакан) после этого скрипта, чёт больше не хочется с ними всеми играть smile.gif

Раскрывающийся текст
Код
;~ #IfWinActive ahk_class Battlefield: Bad Company 2
#NoEnv
#SingleInstance Force
Process, Priority,,High
SetMouseDelay -1
SetBatchLines, -1
SetEnv, _loop, 0
SetEnv, _mloop, 0
SetEnv, _rnd, 0
SetEnv, _mrnd, 0
SetCapsLockState, Off
Suspend, On
Return

CapsLock::
Suspend
If (A_IsSuspended)
    {
        SetCapsLockState, Off
    }
Else
   {
        SetCapsLockState, On
   }
Return

LButton::
Loop
{
    Random, _rnd, 10, 35
    Random, _mrnd, 10, 35
    Random, _hrnd, -20, 20
    _rnd /= 2
    _mrnd /= 3
    Round(_rnd, 1)
    Round(_mrnd, 1)
    Round(_hrnd, 1)
    
    GetKeyState, szButtonState, LButton, P
    If szButtonState = U
    {
        DllCall("mouse_event", uint, 1, int, 0, int, -24*_mloop, uint,0, int,0)
        _loop := 0
        _mloop := 0
        Break
    }
    If _loop > 4
        {
            _loop := 5
            DllCall("mouse_event", uint, 1, int, _hrnd, int, 0, uint,0, int,0)
        }
    MouseClick, left,,, 1, 0, D
    Sleep, 40-_mrnd
    DllCall("mouse_event", uint, 1, int, 0, int, 8-(_loop)+_mrnd, uint,0, int,0)
        If _loop > 4
        {
            DllCall("mouse_event", uint, 1, int, -_hrnd, int, 0, uint,0, int,0)
        }
    Sleep, 50+_rnd
    DllCall("mouse_event", uint, 1, int, 0, int, -8+(_loop)-_mrnd, uint,0, int,0)
    MouseClick,left,,, 1, 0, U
        if _loop < 1
        {
            DllCall("mouse_event", uint, 1, int, 0, int, 32, uint,0, int,0)
            Sleep, 80
            _mloop += 1
        }
    Else
        {
            Sleep, 90+(_loop*6)
        }
    _loop += 1
}
Return

Автор: Grey Denisson 6.5.2011, 23:06

Цитата *
...чёт больше не хочется с ними всеми играть smile.gif
Не парьтесь батенька, считаю, что краткость мысли - сестра таланта.

P.S.: И всё же опробуйте мой совет по абакану http://xn----8sbbemc3a7aecex.xn--p1ai/forum/index.php?s=&showtopic=62191&view=findpost&p=1386658...

Автор: Pupseg 27.5.2011, 6:26

Упрощённый абакан с компенсацией 2й пули

играл-играл, да прозрел, что очередьи с абакана нужно сажать по 2 штуки быстро, а далее маленькая пауза)
Код
#IfWinActive ahk_class Battlefield: Bad Company 2
#NoEnv
#SingleInstance Force
Process, Priority,,High
SetMouseDelay -1
SetBatchLines, -1
SetCapsLockState, Off
Suspend, On
Return

CapsLock::
Suspend
If (A_IsSuspended)
    {
        SetCapsLockState, Off
    }
Else
   {
        SetCapsLockState, On
   }
Return

LButton::
Loop
{
    GetKeyState, szButtonState, LButton, P
    If szButtonState = U
    {
        Break
    }
    Random, rnd, 20, 40
    Loop, 2
    {
        MouseClick, left,,, 1, 0, D
        Sleep, 60
        DllCall("mouse_event", uint, 1, int, 0, int, 32, uint,0, int,0)
        MouseClick,left,,, 1, 0, U
        Sleep, 140
        DllCall("mouse_event", uint, 1, int, 0, int, -32, uint,0, int,0)
    }
Sleep, rnd
}
Return

Автор: Grey Denisson 28.5.2011, 10:58

Потестил - тихий ужас... smile.gif

Автор: Merzavets 19.7.2011, 21:50

Простенький скрипт для стрельбы из автоматов и дробовиков, который я использую в игре. Основная идея - сделать возможность переключаться между разными режимами стрельбы, нажимая хоткеи. Автохоткей я недавно изучаю, поэтому на поиск решения ушла масса времени :(
Для включения/оключения хоткеев надо нажать капслок. Потом F7 - автомат будет стрелять чуть медленнее, но кучнее. По F8 включается ускоренная перезарядка дробанов. Есть автоспот противника. Наслаждайтесь.

Раскрывающийся текст
Код
#IfWinActive Battlefield: Bad Company 2
SetBatchlines -1
SendMode Input
Suspend on
return

CapsLock::
Suspend Toggle; отключает или включает все или выбранные горячие клавиши
if (A_IsSuspended); содержит 1, или если скрипт приостановлен 0
{
    SetCapsLockState Off; капс выключен
    SoundBeep, 500, 150; проиграть звук
}
else; иначе
{
    SetCapsLockState On; капс включен
    SoundBeep, 1500, 150; проиграть звук
}
return; возврат

F7::
SoundBeep, 1500, 150
Hotkey, *LButton, action1; создать хоткей и перейти к метке action
return

action1:
SetTimer, timer, 80; запустить таймер на 80 миллисекунд
gosub timer; перейти к метке timer
return

timer:
if GetKeyState("LButton", "P"); если нажат хоткей, то...
{
    Send {blind}{q 1}; спот противника
    Send {blind}{Click}; выстрел
}
else; иначе
SetTimer, timer, Off; отключить таймер при отпущенном хоткее
return

F8::
SoundBeep, 1500, 150
Hotkey, *LButton, action2
return

action2:
Click Down; нажать левую кнопку мыши
Loop; замкнутый цикл
{
    GetKeyState, state, LButton, P; если нажат хоткей, то...
    if state = U ; если хоткей отпущен, то...
    break; выйти из замкнутого цикла
    Send {blind}{q 1}
    Sleep 50
    Send {blind}{Click}
    Sleep 50
    Send {blind}{1}; переключиться на пистолет
    Sleep 50
    Send {blind}{2}; переключиться на дробовик
    Sleep 500
}
Click Up ; отпустить левую кнопку мыши
return

Автор: Merzavets 19.7.2011, 22:36

Блин, какого хрена не ставятся пробелы перед точкой с запятой? Если кто скопирует скрипт, то обязательно поставьте пробелы.

Автор: Pupseg 21.7.2011, 17:14

Merzavets а чё не собирается .. там вроде больше ничего нету и на пробел должно быть пофиг


люди
нужны мастера писатели на C
как в автохоткее считатать строки(структуру) если есть указатель выданный dllcall, но нету размера этой кучи.

п.с. вернулся я к своей заморочке с нейронными сетями.. хочу сделать стабилизатор-подруливатель для вертушки)) берущий данные с видео потока (что-то отдалённо похожее на авиагоризонт в виде из кабины есть)
п.п.с. насчёт производительности думаю не стоит упоминать... я пока не представляю чем можно загрузить амд1090Т

http://leenissen.dk/fann/html/files/fann-h.html



Кстати кому мысль не приходила сделать тягу на джостике?
замутить цикл считывания состояний, то-есть если тяга 50%, то нажимать W с периодичностью, и в зависимости от тяги менять длительность нажатий и паузу между ними))) если никто меня не опередит я изображу кусочек быдлокода.

Автор: Merzavets 21.7.2011, 17:54

Без пробелов скрипт ошибку выдаёт. Надо тогда точки с запятой просто стереть, вместе с комментариями...

Автор: Pupseg 29.7.2011, 22:57

Merzavets случаем не сцытом пользуешься? если да, то используй минус на нампаде для комментирования строчек.)

Автор: Grey Denisson 8.8.2011, 3:46

Цитата *
...используй минус на нампаде для комментирования строчек.
http://www.autohotkey.com/docs/commands/_CommentFlag.htm

Автор: Merzavets 10.8.2011, 18:46

Цитата(Pupseg @ Суббота, 30 Июля 2011, 00:57:18) *
Merzavets случаем не сцытом пользуешься? если да, то используй минус на нампаде для комментирования строчек.)

Спасибо, действительно удобно.
Написал ещё один макрос, который не ограничивает скорострельность оружия, а только очень хорошо гасит отдачу. Желательно из автоматов стрелять короткими очередями по 7-10 патронов, из пулемёта можно и больше. После стрельбы прицел приходит в исходное положение. Наслаждайтесь))
Раскрывающийся текст
Код
#IfWinActive, Battlefield: Bad Company 2
SetBatchLines, -1
SetMouseDelay, -1
SetKeyDelay, -1
SendMode, Input
Suspend, On
return

CapsLock::
Suspend, Toggle
if (A_IsSuspended)
{
    SetCapsLockState, Off
    SoundBeep, 500, 150
}
else
{
    SetCapsLockState, On
    SoundBeep, 1500, 150
}
return

*LButton::
start_time := A_TickCount
Click Down
Loop
{
    GetKeyState, state, LButton, P
    if state = U
        break
    DllCall("mouse_event", uint, 1, int, 0, int, 1, uint, 0, int, 0)
    Sleep, 20
}
Click Up
value := (A_TickCount - start_time)/15
DllCall("mouse_event", uint, 1, int, 0, int, -value, uint, 0, int, 0)
return

Автор: Pupseg 10.8.2011, 23:31

Эх лучшеб нормально о массивах из длл рассказали, а именно я имею указатель на массив и его тип... не спорю! то, что язык совсем не для этого предназначен)))))))))
но как-то делают хитрые клиенты с помощью длл
п.с. голова сейчас забита учением sql, bash, sed, autoit ))

Автор: Grey Denisson 11.8.2011, 9:25

Цитата *
...как-то делают хитрые клиенты с помощью длл
Клиенты/длл чего/каких?
Цитата *
...sql, bash, sed, autoit
Определённо, лучше знать один/два язык/а, но в совершенстве. С#, АНК, + знание http://develab.narod.ru/api/

Автор: Pupseg 11.8.2011, 16:28

Ну начнём с того, что с одним sql делать нефига)))) толку?) баш это интерпретатор. а сед это регулярные выражения (не интерактивный текстовый редактор)

Автор: Grey Denisson 11.8.2011, 19:10

Цитата *
...регулярные выражения...
Это понятие реализовано во всех языках. Начни лучше с того, чтобы простым/внятным языком объяснить, что из себя представляют (принцип действия) хитрые клиенты, и какие длл идут в ход при создании их.

Автор: Merzavets 11.8.2011, 20:56

Ещё немного подумал и решил, что антиотдачу надо отключать через некоторое время. При стрельбе длинной очередью прицел у автоматов/пулемётов стабилизируется и антиотдача только мешает. Вот и переделал свой скриптик))

Конкретно макрос писался для М416, так как, в основном, бегаю штурмовиком. Для других видов оружия возможно потребуется изменить некоторые параметры, просто изучите чудо-программу Autohotkey и будет вам щастье))

Раскрывающийся текст
Код
#IfWinActive, Battlefield: Bad Company 2
SetBatchLines, -1
SetMouseDelay, -1
SetKeyDelay, -1
Suspend, On
return

CapsLock::
Suspend, Toggle
if (A_IsSuspended)
{
    SetCapsLockState, Off
    SoundBeep, 500, 150
}
else
{
    SetCapsLockState, On
    SoundBeep, 1500, 150
}
return

*LButton::
start_time := A_TickCount
Click Down
Loop
{
    GetKeyState, state, LButton, P
    if A_TimeSinceThisHotkey < 900
    {
        value1 := 1
        value2 := (A_TickCount - start_time) / 15
    }
    else
    {
        value1 := 0
        value2 := (900 / 15)
    }
    if state = U
        break
    DllCall("mouse_event", uint, 1, int, 0, int, value1, uint, 0, int, 0)
    Sleep, 20
}
Click Up
DllCall("mouse_event", uint, 1, int, 0, int, -value2, uint, 0, int, 0)
return

Автор: Grey Denisson 12.8.2011, 8:18

Цитата *
...изучите чудо-программу Autohotkey
Безспорно, язык очень даже востребованный.
мой вариант
Код
#IfWinActive ahk_class Battlefield: Bad Company 2
SetBatchLines, -1
var1:=1 ; start move
var2:=15 ; stop move
var3:=25 ; value move
value:=0
value2:=0
dvar:=1
Return
;/*
vkbb:: ; +
   var1+=dvar
   SendInput, {vk55} ; y - chat key
   Sleep, 250
   SendInput, {Raw}X %var1%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2} ; tilde
   Return

RCtrl & vkbb::
   var1-=dvar
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}X %var1%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return

vkbd:: ; -
   var2+=dvar
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}Y %var2%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return

RCtrl & vkbd::
   var2-=dvar
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}Y %var2%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return

vk08:: ; backspace
   var3+=dvar
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}Z %var3%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return

RCtrl & vk08::
   var3-=dvar
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}Z %var3%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return

F12:: ; change size dynamic variables
   KeyWait, F12
   iteration++
   SetTimer, counterrctrlf12, -350
   Return
counterrctrlf12:
   If iteration=1
      SetTimer, action1rctrlf12, -0 ; 1
   Else If iteration=2
      SetTimer, action2rctrlf12, -0 ; 10
   Else If iteration=3
      SetTimer, action3rctrlf12, -0 ; 100
   Else If iteration>=4
      SetTimer, action4rctrlf12, -0 ; 500
   iteration=
   Return
action1rctrlf12:
   dvar:=1
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}DVAR %dvar%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return
action2rctrlf12:
   dvar:=10
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}DVAR %dvar%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return
action3rctrlf12:
   dvar:=100
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}DVAR %dvar%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return
action4rctrlf12:
   dvar:=500
   SendInput, {vk55}
   Sleep, 250
   SendInput, {Raw}DVAR %dvar%
   Sleep, 250
   SendInput, {Esc}
   Sleep, 250
   SendInput, {vkC0 2}
   Return
;*/
$LButton::
   If GetKeyState("RButton", "P")
      Gosub, 2
   Else
      Gosub, 1
   Return
1: ; ordinary
   Click Down
   While GetKeyState("LButton", "P")
   {
         If (A_Index>var1&&A_Index<var2)
         {
            value:=% var3
            value2:=% var3
            cnt:=% A_Index
            cnt-=% var1
            value2*=% cnt
         }
         DllCall("mouse_event", UInt, 0x0001
                              , Int, 0
                              , Int, value
                              , UInt, 0
                              , Int, 0)
         If (A_Index>=var2)
         {
            value:=0
            value2:=% var3
            cnt:=% var2
            cnt-=% var1
            value2*=% cnt
         }
      If GetKeyState("RButton", "P")
      {
         Click Up
         value:=0
         DllCall("mouse_event", UInt, 0x0001
                              , Int, 0
                              , Int, -value2*1.5 ; 1.5 - fov increase
                              , UInt, 0
                              , Int, 0)
         value2:=0
         cnt:=0
         Gosub, 2
      }
      Sleep, 50
   }
   Click Up
   value:=0
   DllCall("mouse_event", UInt, 0x0001
                        , Int, 0
                        , Int, -value2
                        , UInt, 0
                        , Int, 0)
   value2:=0
   cnt:=0
   Return
2: ; sighted
   While GetKeyState("LButton", "P")
   {
      Click
      Sleep, 120 ; stg, m416, 9a-91, aks-u
      If !GetKeyState("RButton", "P")
         Gosub, 1
   }
   Return
Значение переменной var3 напрямую зависит от резолюции монитора, и уровня чувствительности в настройках игры (в скрипте, соответствует 1280х1024 и 30 чувствительности) Для изменения переменных клавиши: + и -, количество нажатий на клавишу ф12 задаёт размер изменения значения переменной (четыре позиции: 1, 10, 100, 500). Клавиша чата у меня Y (виртуальный код - vk55), меняем если не подходит, желательно тоже использовать виртуальный (vk) или машинный (sc) код своей клавиши, чтобы при русской локализации системы она корректно работала.

Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)