1 (изменено: salyahovds, 2015-07-16 01:10:08)

Тема: Отредактировать задержку

Добрый день. Только познакомился с программой, вообщем дуб-дубом. Умудрился даже себе скрипт для игры запилить, но мне нужно заменить значение 20 мс , на рандомное скажем от 15 до 30,  помогите дополнить, заранее благодарю.

NumPad1:: 
Send, {a}
Sleep, 20 \ поменять задержку между нажатием клавиши здесь, с фиксированной на рандом в пределах от 15 до 30 мс.
Send, {a}
Sleep, 20
Send, {a}
Sleep, 20
Send, {b}
return

2 (изменено: Indomito, 2015-07-16 10:11:31)

Re: Отредактировать задержку

В скрипте своём замени Sleep, 20 на Sleep, %vWait%, т.е. в веди переменную vWait

Вот так например.

; Что бы всегда сработал NumPad1 надо использовать vk-code или написать:
  SetNumLockState, On
  SetNumLockState, AlwaysOn

; На счёт рандомно я не понял, т.е. можно но результат будет не предсказуемый.
  vWait := 20
  сWaitSteps  := 1
  minWait :=  15
  maxWait :=  30

~^PgDn:: ; Уменьшить задержку, но не менее чем до, minWait в ms
  vWait -= сWaitSteps
  if (vWait <= minWait)
        vWait := minWait
Return

~^PgUp:: ; Увеличить задержку, но не более чем до, maxWait в ms
  vWait += сWaitSteps
  if (vWait => maxWait)
        vWait := maxWait
Return

NumPad1:: 
Send, {a}
Sleep, %vWait% 
Send, {a}
Sleep, 20
Send, {a}
Sleep, 20
Send, {b}
return

P.S. Могу дать примеры и готовые функции, хотя их и на форуме много.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

3

Re: Отредактировать задержку

http://ahkscript.org/docs/commands/Random.htm

4 (изменено: Indomito, 2015-07-16 14:06:11)

Re: Отредактировать задержку

Про vk-code/sc-code.

Шаг №1 Где их найти.
      - в таблице Виртуальные коды клавиш.
      -  программе AHK: Скрипт на замену "Window Spy".

+ В моей программе.
#Persistent 
#SingleInstance Ignore 

fnTray()

 hHookKeybd := DllCall("SetWindowsHookEx"
  , Int, WH_KEYBOARD_LL := 13
  , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
  , Ptr, DllCall("GetModuleHandle", UInt, 0, "Ptr")
  , UInt, 0, "Ptr")
Return
  
LowLevelKeyboardProc(nCode, wParam, lParam)  {
    Critical
    SetFormat, Integer, H
    ;saveClipboard := Clipboard
    vkCode := NumGet(lParam+0, 0, "UInt") 
    If (vkCode = 0x1B && GetKeyState("Ctrl", "P") && GetKeyState("LWin", "P"))
        ExitApp 
    If (vkCode = 0x56 && GetKeyState("Ctrl", "P"))
        {
          ;Clipboard := saveClipboard
          Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
        }
    ToolTip, % Clipboard := wParam . "| vkCode: " . vkCode . " scCode: " . NumGet(lParam+0, 4, "UInt")
                    . " Extended: " . NumGet(lParam+0, 8, "UInt") & 1 . " Time: " . NumGet(lParam+0, 12, "UInt")
    Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
} 

fnTray()
{
global ;Установки трея для скрипта

    Menu1  := "Выход"

    Menu, tray, NoStandard  ; меню в трее будет не стандартным - своим
      
      ;Добавляем пункт меню по ПКМ
      Menu, tray, add, %Menu1%, lEnd_VkScCode

      
      ; Задаём свою выноску "балон"
      vTip := " ——VK" "  and  " "SC Code x86/x64——`n`n               Автор: Indomito©`n"
      Menu, tray, tip, %vTip%
      Menu, tray, default, %Menu1%  ; Этот пункт меню по умолчанию двойной щелчёк ЛКМ по иконке в трее для его вызова
      ;Menu, Tray, Click, 1          ; Переназначаем двойной на одиночный ЛКМ      
Return      

}

lEnd_VkScCode:
  ExitApp

Шаг №2 Как их использовать.
1. Определить vk-code/sc-code для клавиши.
2.1  vk-code - например для Numpad1 это vk61 и vk23, т.е. vk-code не подходят - они зависят от статуса NumLock.
2.2   sc-code - например для Numpad1 это sc4F и не зависят от статуса NumLock.
3. Вместо буквенного обозначения Numpad1 пишем vk61 или vk23 если нужна разная реакция, а если одинаковая sc4F

Простой пример.

vk61::
vk23::
 scc := GetKeySC(A_ThisHotkey),  scc := Format("sc{:x}", scc)
 vkc := GetKeyVK(A_ThisHotkey),  vkc := Format("vk{:x}", vkc)
 key := GetKeyName(A_ThisHotkey) 
 snl := "OFF"
 If GetKeyState("NumLock", "T")
          snl :=  "ON"
 MsgBox Нажали на %key% ( %scc% `& %vkc% ) `n`n Статус NumLock = %snl%
Return
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

5

Re: Отредактировать задержку

Malcev не думаю что эта функция нужна для вывода, я про Random, OutputVar [, Min, Max] просто вывод надо подгонять, а случайное число...

Хотя "Хозяин - Барин".

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

6

Re: Отредактировать задержку

а случайное число...

ТС ведь написал, что нужно именно случайное.

Вместо буквенного обозначения Numpad1 пишем vk61 или vk23

А можно узнать для чего?

NumpadEnd:: ; для совместимости с Numlock, если не нужно, то удалить
NumPad1:: 
    Random, Sleep1, 15, 30
    Send, {a}
    ToolTip %Sleep1% ; для проверки, потом удалить
    Sleep, %Sleep1%
    Send, {a}
    Sleep, 20
    Send, {a}
    Sleep, 20
    Send, {b}
    return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

7

Re: Отредактировать задержку

serzh82saratov пишет:

ТС ведь написал, что нужно именно случайное.

serzh82saratov пишет:

А можно узнать для чего?

Всё, меня "на ноль помножили", хорошо что не поделили

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

8 (изменено: salyahovds, 2015-07-16 16:22:05)

Re: Отредактировать задержку

Спасибо за ответы, очень ценю.

serzh82saratov

NumpadEnd:: ; для совместимости с Numlock, если не нужно, то удалить
NumPad1:: 
    Random, Sleep1, 15, 30
    Send, {a}
    ToolTip %Sleep1% ; для проверки, потом удалить
    Sleep, %Sleep1%
    Send, {a}
    Sleep, 20
    Send, {a}
    Sleep, 20
    Send, {b}
    return

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

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

NumPad1:: 
Random, Sleep1, 15, 30
    Send, {a}
    Sleep, %Sleep1%
Random, Sleep2, 15, 30
    Send, {a}
    Sleep, %Sleep2%
Random, Sleep3, 15, 30
    Send, {a}
    Sleep, %Sleep3%
    Send, {b}
return

Для наглядности менял 30 на 3000 мс , чтоб глаз видел как работает , в итоге каждый раз все по разному в промежутках между автонажатием, спасибо .

9

Re: Отредактировать задержку

Indomito пишет:

Всё, меня "на ноль помножили", хорошо что не поделили

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

По теме употребления скан кодов написал небольшой пост.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10 (изменено: Malcev, 2015-07-16 17:01:44)

Re: Отредактировать задержку

Удобней будет в функцию это все свернуть.

NumPad1:: 
Send, a
RandomSleep(15, 30)
Send, b
RandomSleep(15, 30)
Send, c
return

RandomSleep(x, y)
{
   Random, Sleep, x, y
   Sleep, %Sleep%
   return
}

Оффтоп:
serzh82saratov, а почему ты используешь 32-битную AHK на 64-битной винде?

Use: AutoHotkey_L v1.1.22.03 (Unicode 32-bit). OS: Win7x64

11

Re: Отредактировать задержку

serzh82saratov пишет:

По теме употребления скан кодов написал небольшой пост.

Речь про скан-коды, а в примере почему-то VK-коды.

12

Re: Отредактировать задержку

salyahovds пишет:

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

<50 мс уже признак того, что это не человек кликает.
А если вы сами, каждый раз, жмёте на кнопку стартующую скрипт, то даже значение в 1мс будет не критичным т.к. будут перемешаны с другими вашими действиями.

13 (изменено: salyahovds, 2015-07-16 21:42:41)

Re: Отредактировать задержку

Nikva пишет:
salyahovds пишет:

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

<50 мс уже признак того, что это не человек кликает.
А если вы сами, каждый раз, жмёте на кнопку стартующую скрипт, то даже значение в 1мс будет не критичным т.к. будут перемешаны с другими вашими действиями.

учту , спасибо еще раз.

PS: Вообщем в dota 2 не работает , с ботами работает , а в мультиплэйр режиме нет . Мне кажется он видит процесс ahk и не дает ему вгрызатсья, не знаю.

PSS: Как и советовали увеличил мс , сделал от 60-150, и все заработало ! УРя! Уря !

14 (изменено: serzh82saratov, 2015-07-16 18:45:52)

Re: Отредактировать задержку

serzh82saratov, а почему ты используешь 32-битную AHK на 64-битной винде?

Как то попадались скрипты не работающие на х64 AHK. Если кому то компилировать, то битность ОС пользователя не важна (то есть если у меня х32 АНК работает в х64 ОС, значит будет работать везде). Да и для себя не вижу никаких преимуществ, а с теми случаями когда интерпретатор должен соответствовать битности ОС не сталкиваюсь.

Речь про скан-коды, а в примере почему-то VK-коды.

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

15

Re: Отредактировать задержку

Malcev пишет:

Удобней будет в функцию это все свернуть.

Вот это толково выглядит, но пока не стал трогать, позже поменяю ,  спасибо. Мир вашему дому!)