/* Quality of Life Shortcuts v1.3 Tested resolution - 720p, 1080p Only copy the code for your resolution */ ; Version 1920 x 1080 ========================== /* Ask the user to run the script as Admin via UAC This is required to make sure all keystrokes goes thru */ full_command_line := DllCall("GetCommandLine", "str") if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)")) { try { if A_IsCompiled Run '*RunAs "' A_ScriptFullPath '" /restart' else Run '*RunAs "' A_AhkPath '" /restart "' A_ScriptFullPath '"' } ExitApp } #Requires AutoHotkey v2.0 CoordMode "Mouse", "Client" showHotkeys() CapsLock & 1:: { if WinExist("ahk_class UnrealWindow"){ WinActivate ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 90, 185, 3 Sleep 1000 MouseClick "Left", 1650, 1000 Sleep 1000 } } CapsLock & 2:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 90, 330, 3 Sleep 1000 MouseClick "Left", 1650, 1000 Sleep 1000 } } CapsLock & 3:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 90, 460, 3 Sleep 1000 MouseClick "Left", 1650, 1000 Sleep 1000 } } CapsLock & 4:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 90, 595, 3 Sleep 1000 MouseClick "Left", 1650, 1000 Sleep 1000 } } CapsLock & 5:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 90, 730, 3 Sleep 1000 MouseClick "Left", 1650, 1000 Sleep 1000 } } CapsLock & W:: ; Zoom in for map navigation { Loop 15 Send "{WheelDown}" } CapsLock & Q:: ; Zoom out for map navigation { Loop 15 Send "{WheelUp}" } CapsLock & J:: ; Go to echo selection tab thru character screen { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "C", , "Wuthering Waves" Sleep 1500 MouseClick "Left", 80, 465, 2 Sleep 1000 MouseClick "Left", 1540, 320 } } CapsLock & K:: ; Check echo list and sort by newly added { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "B", , "Wuthering Waves" Sleep 1500 MouseClick "Left", 75, 325, 3 Sleep 1000 MouseClick "Left", 445, 990 Sleep 1000 MouseClick "Left", 445, 845 } } CapsLock & L:: ; Go to the Echo Merge menu { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "{ESC}", , "Wuthering Waves" Sleep 1500 MouseClick "Left", 1430, 490 Sleep 1500 MouseClick "Left", 70, 600 Sleep 1500 MouseClick "Left", 1020, 210 Sleep 1000 MouseClick "Left", 240, 990 Sleep 1000 MouseClick "Left", 240, 875 Sleep 500 MouseClick "Left", 400, 990 Sleep 500 MouseMove 115, 130 } } CapsLock & H:: ; Show menu { showHotkeys() } CapsLock & 7:: { clickTimer() } CapsLock & M:: { if WinExist("ahk_class UnrealWindow"){ WinGetPos , , &W, &H MsgBox "Your Wuthering Waves screen resolution is " W " x " H } else { MsgBox "Wuthering Waves windows not detected" } } CapsLock & 0:: { MsgBox "Quality of Life Hotkeys Disabled" ExitApp } showHotkeys() { MsgBox " ( Quality of Life Hotkeys is Active LIST OF HOTKEYS CAPSLOCK + (1 to 5) - Switch to Team 1 to 5 CAPSLOCK + 7 - Perform Substat Roll at Specific Time CAPSLOCK + Q - Zoom In (Useful when viewing map) CAPSLOCK + W - Zoom Out CAPSLOCK + J - Open Echo Selection for Active Character CAPSLOCK + K - Open Echo Inventory CAPSLOCK + L - Open Echo Merge Menu CAPSLOCK + H - Show the list of hotkeys CAPSLOCK + M - Checks Your Game Resolution CAPSLOCK + 0 (Zero) - Exit the Script )" } clickTimer() { IB := InputBox("Please enter the time to click in 'HHMMSS' 24-hour format`n`nExamples: `n055745 (5AM 57 Min 45 Sec)`n101515 (10AM 15 Min 15 Sec)`n142715 (2PM 27 Min 15 Sec)") if IB.result = "Cancel" MsgBox "Substat auto roll canceled" else { timerLength := Strlen(IB.value) if (timerLength = 6) { TargetTime := IB.value TargetTime := (SubStr(TargetTime, 1 , 2) * 3600000) + (SubStr(TargetTime, 3 , 2) * 60000) + (SubStr(TargetTime, 5 , 2) * 1000) CurrentTime := (A_Hour * 3600000) + (A_Min * 60000) + (A_Sec * 1000) ; MsgBox "Current Time - " CurrentTime " | Time Target - " TargetTime /* Additional time subtraction to compensate for calculation delay Higher value = Faster Roll Execution Put it between 0 - 800 because 1s = 1000ms Lower value mean the click will happen earlier Default = 300 */ TimeCompensation := 300 ; CHANGE THIS NUMBER FOR AN EVEN MORE PRECISE TIMING TimeUntilTarget := TargetTime - CurrentTime - TimeCompensation if TimeUntilTarget < 0 { MsgBox "The target time is already past!" return } else { SetTimer clickSubstat, TimeUntilTarget MsgBox "Time until target (in millisec): " TimeUntilTarget } } else { MsgBox "Incorrect timer inputted, please make sure it's similar to the example given`n`nExamples: `n055745 (5AM 57 Min 45 Sec)`n101515 (10AM 15 Min 15 Sec)`n142715 (2PM 27 Min 15 Sec)" } } } clickSubstat() { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" MouseClick "Left", 435, 1000 SetTimer , 0 Sleep 2000 MouseClick "Left", 965, 750 } else { SetTimer , 0 } } ; End of Version 1920 x 1080 ========================== ; Version 1280 x 720 ========================== /* Ask the user to run the script as Admin via UAC This is required to make sure all keystrokes goes thru */ full_command_line := DllCall("GetCommandLine", "str") if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)")) { try { if A_IsCompiled Run '*RunAs "' A_ScriptFullPath '" /restart' else Run '*RunAs "' A_AhkPath '" /restart "' A_ScriptFullPath '"' } ExitApp } #Requires AutoHotkey v2.0 CoordMode "Mouse", "Client" showHotkeys() CapsLock & 1:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 50, 130, 3 Sleep 1000 MouseClick "Left", 1100, 650 Sleep 1000 } } CapsLock & 2:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 50, 215, 3 Sleep 1000 MouseClick "Left", 1100, 650 Sleep 1000 } } CapsLock & 3:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 50, 300, 3 Sleep 1000 MouseClick "Left", 1100, 650 Sleep 1000 } } CapsLock & 4:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 50, 400, 3 Sleep 1000 MouseClick "Left", 1100, 650 Sleep 1000 } } CapsLock & 5:: { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "L", , "Wuthering Waves" Sleep 1000 MouseClick "Left", 50, 480, 3 Sleep 1000 MouseClick "Left", 1100, 650 Sleep 1000 } } CapsLock & W:: ; Zoom in for map navigation { Loop 15 Send "{WheelDown}" } CapsLock & Q:: ; Zoom out for map navigation { Loop 15 Send "{WheelUp}" } CapsLock & J:: ; Go to echo selection tab thru character screen { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "C", , "Wuthering Waves" Sleep 1500 MouseClick "Left", 50, 300, 2 Sleep 1000 MouseClick "Left", 1025, 205 } } CapsLock & K:: ; Check echo list and sort by newly added { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "B", , "Wuthering Waves" Sleep 1500 MouseClick "Left", 50, 215, 3 Sleep 1000 MouseClick "Left", 280, 650 Sleep 1000 MouseClick "Left", 280, 555 } } CapsLock & L:: ; Go to the Echo Merge menu { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" ControlSend "{ESC}", , "Wuthering Waves" Sleep 1500 MouseClick "Left", 955, 350 Sleep 1500 MouseClick "Left", 50, 390 Sleep 1500 MouseClick "Left", 565, 210 Sleep 1000 MouseClick "Left", 155, 650 Sleep 1000 MouseClick "Left", 160, 580 Sleep 500 MouseClick "Left", 270, 655 Sleep 500 MouseMove 75, 90 } } CapsLock & H:: ; Show menu { showHotkeys() } CapsLock & 7:: { clickTimer() } CapsLock & M:: { if WinExist("ahk_class UnrealWindow"){ WinGetPos , , &W, &H MsgBox "Your Wuthering Waves screen resolution is " W " x " H } else { MsgBox "Wuthering Waves windows not detected" } } CapsLock & 0:: { MsgBox "Quality of Life Hotkeys Disabled" ExitApp } showHotkeys() { MsgBox " ( Quality of Life Hotkeys is Active LIST OF HOTKEYS CAPSLOCK + (1 to 5) - Switch to Team 1 to 5 CAPSLOCK + 7 - Perform Substat Roll at Specific Time CAPSLOCK + Q - Zoom In (Useful when viewing map) CAPSLOCK + W - Zoom Out CAPSLOCK + J - Open Echo Selection for Active Character CAPSLOCK + K - Open Echo Inventory CAPSLOCK + L - Open Echo Merge Menu CAPSLOCK + H - Show the list of hotkeys CAPSLOCK + M - Checks Your Game Resolution CAPSLOCK + 0 (Zero) - Exit the Script )" } clickTimer() { IB := InputBox("Please enter the time to click in 'HHMMSS' 24-hour format`n`nExamples: `n055745 (5AM 57 Min 45 Sec)`n101515 (10AM 15 Min 15 Sec)`n142715 (2PM 27 Min 15 Sec)") if IB.result = "Cancel" MsgBox "Substat auto roll canceled" else { timerLength := Strlen(IB.value) if (timerLength = 6) { TargetTime := IB.value TargetTime := (SubStr(TargetTime, 1 , 2) * 3600000) + (SubStr(TargetTime, 3 , 2) * 60000) + (SubStr(TargetTime, 5 , 2) * 1000) CurrentTime := (A_Hour * 3600000) + (A_Min * 60000) + (A_Sec * 1000) ; MsgBox "Current Time - " CurrentTime " | Time Target - " TargetTime /* Additional time subtraction to compensate for calculation delay Higher value = Faster Roll Execution Put it between 0 - 800 because 1s = 1000ms Lower value mean the click will happen earlier Default = 300 */ TimeCompensation := 300 ; CHANGE THIS NUMBER FOR AN EVEN MORE PRECISE TIMING TimeUntilTarget := TargetTime - CurrentTime - TimeCompensation if TimeUntilTarget < 0 { MsgBox "The target time is already past!" return } else { SetTimer clickSubstat, TimeUntilTarget MsgBox "Time until target (in millisec): " TimeUntilTarget } } else { MsgBox "Incorrect timer inputted, please make sure it's similar to the example given`n`nExamples: `n055745 (5AM 57 Min 45 Sec)`n101515 (10AM 15 Min 15 Sec)`n142715 (2PM 27 Min 15 Sec)" } } } clickSubstat() { if WinExist("ahk_class UnrealWindow"){ WinActivate "Wuthering Waves" MouseClick "Left", 296, 666 SetTimer , 0 Sleep 2000 MouseClick "Left", 666, 666 } } ; End of Version 1280 x 720 ==========================