1 (изменено: Flooo, 2020-07-23 21:17:20)

Тема: AHK: Объединить 2 скрипта

Помогите, не получается обьединить 2 сценария. Пробывал через #include, но там выдает ошибки дупликатов. Удаляю дубликатные строки - скрипт не работает должным образом.
Здесь 2 одинаковых скрипта:
1

e::                  ; Change this button on other
settimer, timer, 1    ; запустить таймер каждые 80мс
return

timer:   ; таймер
If !GetKeyState("e", "P")   ; and here too
{
    settimer, timer, off   ; выключить таймер
    Return
}
send {8}  ;  this button will click many times if u pressing button
Return

End::Suspend

2

t::                  ; Change this button on other
settimer, timer, 1    ; запустить таймер каждые 80мс
return

timer:   ; таймер
If !GetKeyState("t", "P")   ; and here too
{
    settimer, timer, off   ; выключить таймер
    Return
}
send {F11}  ;  this button will click many times if u pressing button
Return

End::Suspend

Скрипт при зажатии клавиши e спамит цифру 8. Другой аналогично другую клавигу спамит.

2 (изменено: __Михаил__, 2020-07-23 21:11:41)

Re: AHK: Объединить 2 скрипта

Префикс языка укажите в шапке темы.

Метка timer дублируется, либо меняйте название, либо делайте определение текущей клавиши.

Кнопку End нужно оставить только одну.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3 (изменено: Flooo, 2020-07-23 21:26:49)

Re: AHK: Объединить 2 скрипта

__Михаил__ этот код я скопироавл откуда то, и поэтому сам незнаю что за "timer"
Мне здесь ясно только то, что надо Return и End удалить, чтобы работал в #include.(но код  не спамит с должной скоростью)

Также пытался вписать всё в один скрипт, но как я вычитал там нужно форма кода:
Клавиша::
{
действие
}
Return

Почти получилось, но кнопка практически не спамится. Будто строки с указанием таймера не читаются

4

Re: AHK: Объединить 2 скрипта

Не работает должным образом - нефиг копировать чужой код и глупо пытаться от него получить желаемого без должной правки.

Опишите что именно вы желаете получить от скрипта.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5

Re: AHK: Объединить 2 скрипта

__Михаил__ по отдельности они работают.  Нажимаю e спамится 8. Нажиммаю t спамит F11.

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

6 (изменено: __Михаил__, 2020-07-23 21:58:13)

Re: AHK: Объединить 2 скрипта

Flooo

E::
T::
Loop
{
 If not getkeystate(A_ThisHotkey,"p")
  Break

 If InStr(A_ThisHotkey, "E") ? 0 : 1
 {
  Send, {F11}
 }
 Else
 {
  Send, 8
 }
}
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7

Re: AHK: Объединить 2 скрипта

__Михаил__ ох, спасибо большое. Это просто идеально. И кнопки быстро спамятся и в include тоже вписывается хорошо

8 (изменено: fgslm, 2020-07-23 22:28:27)

Re: AHK: Объединить 2 скрипта

__Михаил__ пишет:

Flooo

E::
T::
Loop
{
 If not getkeystate(A_ThisHotkey,"p") ;Было бы неплохо, если бы вы после каждой строки оставляли пояснение
  Break

 If InStr(A_ThisHotkey, "E") ? 0 : 1 ;что именно происходит в той или иной строке/функции
 {
  Send, {F11} ; А то я тоже например, бы хотел использовать функцию "A_ThisHotkey" или др. в своих кодах
 }
 Else
 {
  Send, 8 ; Но вместо этого приходится лезть в справку и переворачиватьтонны текста чтобы найти внятное пояснение 
 }
} ;Хотябы небольшой функции
Return

Спасибо

9

Re: AHK: Объединить 2 скрипта

__Михаил__ пишет:
If InStr(A_ThisHotkey, "E") ? 0 : 1

Довольно странная конструкция.

e::
t::
   while GetKeyState(A_ThisHotkey, "P")
      Send % A_ThisHotkey = "e" ? "8" : "{F11}"
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Объединить 2 скрипта

teadrinker пишет:

? 0 : 1

что обозначает?

11

Re: AHK: Объединить 2 скрипта

teadrinker

Это великий и ужасный код, неведомый обычному смертному кодеру.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

12

Re: AHK: Объединить 2 скрипта

teadrinker

В руках профессионала любой код можно сократить, чуть ли не до 2-3 строк...
Итак пытался сделать минимум, без лишних переменных и проверок. Но так как поторопился упустил такой вариант сокращения, ведь он очевиден.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101