From e4dc7cd52ab3630cd364a5e5c973e195e1048f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=7B=D0=98=D0=9C=D0=AF=7D?= <{E-MAIL}> Date: Sun, 13 Jul 2025 21:31:47 +0300 Subject: [PATCH] Added scripts to project --- MousePositions.log | 112 ++++++++++++++++++++++++++++ click_five_target.ahk | 155 +++++++++++++++++++++++++++++++++++++++ click_one_target.ahk | 97 ++++++++++++++++++++++++ coordinations_logger.ahk | 39 ++++++++++ 4 files changed, 403 insertions(+) create mode 100644 MousePositions.log create mode 100644 click_five_target.ahk create mode 100644 click_one_target.ahk create mode 100644 coordinations_logger.ahk diff --git a/MousePositions.log b/MousePositions.log new file mode 100644 index 0000000..7c7dc57 --- /dev/null +++ b/MousePositions.log @@ -0,0 +1,112 @@ +2025-06-23 13:57:14 | 10672,-79 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-23 13:57:16 | 3762,44 | DirtyLeague +2025-06-23 13:57:18 | 3762,44 | DirtyLeague +2025-06-23 13:57:20 | 3762,44 | DirtyLeague +2025-06-23 13:57:22 | 3762,44 | DirtyLeague +2025-06-23 13:57:24 | 3762,44 | DirtyLeague +2025-06-23 13:57:26 | 3762,44 | DirtyLeague +2025-06-23 13:57:28 | 3762,44 | DirtyLeague +2025-06-23 13:57:30 | 3762,44 | DirtyLeague +2025-06-23 14:07:24 | 9786,-120 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-23 14:07:26 | 1637,501 | DirtyLeague +2025-06-23 14:07:28 | 1625,501 | DirtyLeague +2025-06-23 14:07:30 | 1625,502 | DirtyLeague +2025-06-23 14:07:32 | 1873,1901 | DirtyLeague +2025-06-23 14:07:34 | 1944,1782 | DirtyLeague +2025-06-23 14:07:36 | 1944,1782 | DirtyLeague +2025-06-23 14:07:38 | 1944,1782 | DirtyLeague +2025-06-23 14:07:40 | 1944,1782 | DirtyLeague +2025-06-23 14:07:42 | 1944,1782 | DirtyLeague +2025-06-23 14:07:44 | 1944,1782 | DirtyLeague +2025-06-23 14:07:46 | 1944,1782 | DirtyLeague +2025-06-23 14:07:48 | 1944,1782 | DirtyLeague +2025-06-23 14:07:50 | 1944,1782 | DirtyLeague +2025-06-23 14:07:52 | 1944,1782 | DirtyLeague +2025-06-23 14:07:54 | 1944,1782 | DirtyLeague +2025-06-23 14:07:56 | 1577,1707 | DirtyLeague +2025-06-23 14:07:58 | 981,1628 | DirtyLeague +2025-06-23 14:08:00 | 981,1628 | DirtyLeague +2025-06-23 14:08:02 | 981,1628 | DirtyLeague +2025-06-23 14:08:04 | 981,1628 | DirtyLeague +2025-06-23 14:08:06 | 1766,960 | DirtyLeague +2025-06-23 14:08:08 | 3702,119 | DirtyLeague +2025-06-23 14:08:10 | 3702,119 | DirtyLeague +2025-06-23 14:08:12 | 3702,119 | DirtyLeague +2025-06-23 14:08:14 | 3702,119 | DirtyLeague +2025-06-23 14:08:16 | 3702,119 | DirtyLeague +2025-06-23 14:08:18 | 3702,119 | DirtyLeague +2025-06-23 14:08:20 | 3702,119 | DirtyLeague +2025-06-23 14:08:22 | 3702,119 | DirtyLeague +2025-06-23 14:08:24 | 3702,119 | DirtyLeague +2025-06-23 14:08:26 | 3702,119 | DirtyLeague +2025-06-23 14:08:28 | 3702,119 | DirtyLeague +2025-06-23 14:37:36 | 4594,-4022 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-23 14:37:38 | 1646,429 | DirtyLeague +2025-06-23 14:37:40 | 1640,457 | DirtyLeague +2025-06-23 14:37:42 | 1640,457 | DirtyLeague +2025-06-23 14:37:44 | 1640,457 | DirtyLeague +2025-06-23 14:37:46 | 1640,457 | DirtyLeague +2025-06-23 14:37:48 | 1640,457 | DirtyLeague +2025-06-23 14:37:50 | 1640,457 | DirtyLeague +2025-06-25 23:20:39 | 2281,849 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-25 23:20:41 | 2281,849 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-25 23:20:43 | 1578,1373 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-25 23:20:45 | 3312,339 | DirtyLeague +2025-06-25 23:20:47 | 3766,44 | DirtyLeague +2025-06-25 23:20:49 | 3766,44 | DirtyLeague +2025-06-25 23:20:51 | 3766,44 | DirtyLeague +2025-06-25 23:20:53 | 3766,44 | DirtyLeague +2025-06-25 23:21:23 | 2464,-10 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-06-25 23:21:25 | 3764,52 | DirtyLeague +2025-06-25 23:21:27 | 3755,37 | DirtyLeague +2025-06-25 23:21:29 | 3755,37 | DirtyLeague +2025-06-25 23:21:31 | 3755,37 | DirtyLeague +2025-06-25 23:21:33 | 3755,37 | DirtyLeague +2025-06-30 08:39:29 | 927,639 | DirtyLeague +2025-06-30 08:39:31 | 1157,534 | DirtyLeague +2025-06-30 08:39:33 | 1157,534 | DirtyLeague +2025-06-30 08:39:35 | 1157,534 | DirtyLeague +2025-06-30 08:39:37 | 1154,534 | DirtyLeague +2025-07-11 00:15:25 | 2771,231 | DirtyLeague +2025-07-11 00:15:27 | 2525,458 | DirtyLeague +2025-07-11 00:15:29 | 2534,475 | DirtyLeague +2025-07-11 00:15:31 | 2534,475 | DirtyLeague +2025-07-11 00:15:33 | 2531,464 | DirtyLeague +2025-07-11 13:35:02 | 9517,1201 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-07-11 13:35:04 | 9550,1195 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-07-11 13:35:06 | 9541,1195 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-07-11 13:35:08 | 1859,1233 | DirtyLeague +2025-07-11 13:35:10 | 2088,1075 | DirtyLeague +2025-07-11 13:35:12 | 1861,1253 | DirtyLeague +2025-07-11 13:35:14 | 1861,1251 | DirtyLeague +2025-07-11 13:35:16 | 1857,1251 | DirtyLeague +2025-07-11 21:10:28 | 1888,1780 | DirtyLeague +2025-07-11 21:10:30 | 1278,570 | DirtyLeague +2025-07-11 21:10:32 | 1273,570 | DirtyLeague +2025-07-11 21:10:34 | 1273,570 | DirtyLeague +2025-07-11 21:10:36 | 1273,570 | DirtyLeague +2025-07-11 21:10:38 | 2536,614 | DirtyLeague +2025-07-11 21:10:40 | 2536,614 | DirtyLeague +2025-07-11 21:10:42 | 1820,1292 | DirtyLeague +2025-07-11 21:10:44 | 1862,1293 | DirtyLeague +2025-07-11 21:10:46 | 1862,1293 | DirtyLeague +2025-07-11 21:10:48 | 2650,1409 | DirtyLeague +2025-07-11 21:10:50 | 2643,1412 | DirtyLeague +2025-07-11 21:10:52 | 2643,1412 | DirtyLeague +2025-07-11 21:12:06 | 9547,1124 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-07-11 21:12:08 | 9545,1124 | Total Commander (x64) 10.00 - 团 抢信萌岩腥形吕臀 +2025-07-11 21:12:10 | 3550,210 | DirtyLeague +2025-07-11 21:12:12 | 1863,1160 | DirtyLeague +2025-07-11 21:12:14 | 1857,1160 | DirtyLeague +2025-07-11 21:12:16 | 1855,1160 | DirtyLeague +2025-07-11 21:12:18 | 1855,1160 | DirtyLeague +2025-07-11 21:12:20 | 1855,1160 | DirtyLeague +2025-07-11 21:12:22 | 1318,410 | DirtyLeague +2025-07-11 21:12:24 | 1318,410 | DirtyLeague +2025-07-11 21:12:26 | 1318,410 | DirtyLeague +2025-07-11 21:12:28 | 1300,476 | DirtyLeague +2025-07-11 21:12:30 | 1284,577 | DirtyLeague +2025-07-11 21:12:32 | 2521,616 | DirtyLeague +2025-07-11 21:12:34 | 2542,601 | DirtyLeague +2025-07-11 21:12:36 | 9006,1745 | DirtyLeague +2025-07-11 21:12:38 | 8792,1573 | DirtyLeague diff --git a/click_five_target.ahk b/click_five_target.ahk new file mode 100644 index 0000000..833fd32 --- /dev/null +++ b/click_five_target.ahk @@ -0,0 +1,155 @@ +#Requires AutoHotkey v2.0 +#SingleInstance Force +SetTitleMatchMode 2 +CoordMode "Mouse", "Client" + +; === CONFIGURATION === +global targetWindow := "DirtyLeague" +global isRunning := false +global actionQueue := [] +global timerStates := Map() +global timerFunctions := [] +global startupDelay := 5000 ; 5-second global delay (ms) + +; Timer configurations +timers := [ + [25, "Common", [1850, 1150]], + [50, "Rare", [1300, 450]], + [90, "Epic", [2520, 450]] +] + +; === INITIALIZATION === +Sleep startupDelay ; GLOBAL STARTUP DELAY HERE +SetupTimers() +SetTimer ProcessQueue, 1000 +SetTimer UpdateStatusTooltip, 1000 + +; === HOTKEYS === +^!s:: { + global timerFunctions + ; Kill all timers + for fn in timerFunctions { + SetTimer fn, 0 + } + SetTimer ProcessQueue, 0 + SetTimer UpdateStatusTooltip, 0 + ToolTip + ExitApp +} + +; === TIMER SETUP === +SetupTimers() { + global timers, timerStates, timerFunctions, startupDelay + + For i, timer in timers { + timerName := "Timer" i + ms := timer[1] * 60000 + + timerStates[timerName] := { + interval: ms, + nextRun: A_TickCount + startupDelay + (1000 * i), ; Includes global delay + opponent: timer[2], + position: timer[3] + } + + fn := ObjBindMethod(MyTimer, "Trigger", timerName) + timerFunctions.Push(fn) + SetTimer fn, ms + SetTimer fn, -(startupDelay + (1000 * i)) ; Respects global delay + } +} + + +class MyTimer { + static Trigger(name) { + global actionQueue, timerStates + + ; Update next run time for this timer + timerStates[name].nextRun := A_TickCount + timerStates[name].interval + + ; Add to queue + actionQueue.Push({ + name: name, + opponent: timerStates[name].opponent, + opponentPos: timerStates[name].position, + time: FormatTime(, "HH:mm:ss") + }) + } +} + +ProcessQueue() { + global isRunning, actionQueue, CommonSequence + + if (!isRunning && actionQueue.Length > 0) { + isRunning := true + current := actionQueue.RemoveAt(1) + + if WinExist(targetWindow) { + WinActivate + WinWaitActive + + ; Opponent-specific step + ToolTip "Attacking: " current.opponent, 10, 10 + MouseMove current.opponentPos[1], current.opponentPos[2] + Click + Sleep 4000 + + ; Common sequence + For step in CommonSequence { + ToolTip step.action "...", 10, 10 + MouseMove step.pos[1], step.pos[2] + Click + Sleep step.delay + } + } else { + ToolTip "ERROR: Window not found", 10, 10 + Sleep 2000 + } + + ToolTip ; Clear action tooltip + isRunning := false + } +} + +UpdateStatusTooltip() { + global isRunning, timerStates + + if (isRunning) { + ; Don't update status during battles + return + } + + statusText := "Next Battles:`n`n" + totalWidth := 300 ; Tooltip width in pixels + + ; Calculate time until next run for each timer + for name, timer in timerStates { + remaining := timer.nextRun - A_TickCount + if (remaining < 0) { + statusText .= name ": READY NOW`n" + } else { + mins := Floor(remaining / 60000) + secs := Mod(Floor(remaining / 1000), 60) + progress := 100 - (remaining * 100 / timer.interval) + progress := Min(Max(progress, 0), 100) ; Clamp 0-100 + + ; Create progress bar + barWidth := Floor(totalWidth * (progress/100)) + progressBar := "[" . Format("{:-" barWidth "}", "") + . Format("{:" (totalWidth-barWidth) "}", "") . "]" + + statusText .= name ": " Format("{1:02}:{2:02}", mins, secs) + . " (" progress "%)`n" progressBar "`n" + } + } + + ; Add queue status if any + if (actionQueue.Length > 0) { + statusText .= "`nQueued: " actionQueue.Length " battles" + } + + ToolTip statusText, 10, 10, 1 ; Tooltip with ID 1 +} + +; Clear tooltips when script exits +OnExit(ObjBindMethod(ToolTip, , , , 1)) \ No newline at end of file diff --git a/click_one_target.ahk b/click_one_target.ahk new file mode 100644 index 0000000..f06d3b6 --- /dev/null +++ b/click_one_target.ahk @@ -0,0 +1,97 @@ +#Requires AutoHotkey v2.0 +#SingleInstance Force +SetTitleMatchMode 2 +CoordMode "Mouse", "Client" + +; Hotkey to stop the script (Ctrl+Alt+S) +^!s:: ExitApp + +; Settings +targetWindow := "DirtyLeague" ; Window title to look for +intervalMinutes := 100 ; Execution interval in minutes +intervalMs := intervalMinutes * 60000 ; Convert to milliseconds +delayMinutes := 1 +delayMs := delayMinutes * 60000 + +target1_x := 1860 +target1_y := 1250 + +; Initialize variables +nextRunTime := 0 +remainingTime := 0 + +; Main timer (runs every 100 minutes) +SetTimer AutoClick, intervalMs + +; Countdown timer (updates every second) +SetTimer UpdateCountdown, 1000 + +; Delay timer +SetTimer () => AutoClick(), -3000 ;-delayMs + +UpdateCountdown() { + global nextRunTime, remainingTime + + if (nextRunTime = 0) { + ToolTip "Waiting for first run..." + return + } + + remainingTime := nextRunTime - A_TickCount + + if (remainingTime <= 0) { + ToolTip "Running now..." + return + } + + ; Convert milliseconds to minutes:seconds + remainingMinutes := Floor(remainingTime / 60000) + remainingSeconds := Mod(Floor(remainingTime / 1000), 60) + + ; Display countdown + ToolTip "Next run in: " remainingMinutes "m " remainingSeconds "s", 10, 10 +} + +AutoClick() { + global nextRunTime, intervalMs + + ; Set next scheduled run time + nextRunTime := A_TickCount + intervalMs + + ToolTip "STARTING...", 10, 10 + SetTimer () => ToolTip(), -2000 + + ; Activate the window + if WinExist(targetWindow) { + WinActivate + WinWaitActive + } else { + ToolTip "ERROR: Window not found", 10, 10 + SetTimer () => ToolTip(), -2000 + return + } + + ; Perform click sequence with feedback + ToolTip "Clicking opponent...", 10, 10 + MouseMove target1_x, target1_y + Click + Sleep 4000 + + ToolTip "Starting battle...", 10, 10 + MouseMove 1945, 1780 + Click + Sleep 30000 + + ToolTip "Closing results...", 10, 10 + MouseMove 980, 1630 + Click + Sleep 4000 + + ToolTip "Closing shop...", 10, 10 + MouseMove 3700, 120 + Click + Sleep 4000 + + ToolTip "Cycle complete!", 10, 10 + SetTimer () => ToolTip(), -2000 +} \ No newline at end of file diff --git a/coordinations_logger.ahk b/coordinations_logger.ahk new file mode 100644 index 0000000..4e649e4 --- /dev/null +++ b/coordinations_logger.ahk @@ -0,0 +1,39 @@ +#Requires AutoHotkey v2.0 +#SingleInstance Force + +; Configuration +logFile := "MousePositions.log" ; Log file name +interval := 2000 ; 2 seconds in milliseconds + +; Main timer +SetTimer LogMousePosition, interval + +; Hotkey to stop the script (Ctrl+Alt+S) +^!s:: { + SetTimer LogMousePosition, 0 ; Turn off timer + MsgBox "Mouse logging stopped. Data saved to " logFile + ExitApp +} + +LogMousePosition() { + ; Get current mouse position (screen coordinates) + MouseGetPos &x, &y + + ; Get active window info + activeWin := WinGetTitle("A") + activeWin := activeWin ? activeWin : "No active window" + + ; Format: Timestamp | Screen X,Y | Window Title + logEntry := FormatTime(, "yyyy-MM-dd HH:mm:ss") " | " x "," y " | " activeWin + + ; Append to log file + try { + FileAppend logEntry "`n", logFile + } catch as e { + MsgBox "Error writing to log file: " e.Message + } + + ; Optional: Show tooltip with current position (for debugging) + ToolTip "Logged: " x "," y, x+20, y+20 + SetTimer () => ToolTip(), -1000 ; Remove tooltip after 1 second +} \ No newline at end of file