Size yine özel bir katkı sağlayacak maden kazmak için script paylaşıyorum.
F1-F2-F3-F4 tuşları ile çalışmaktadır. ( Başlat / Durdur )
ALT + 1 = Pickaxe Konumu
ALT + 2 = F1 ile maden başlatırken kazacağı yön için konum (1 adım önü)
ALT + 3 = F2 ile maden başlatırken kazacağı yön için konum (1 adım önü)
ALT + 4 = F3 ile maden başlatırken kazacağı yön için konum (1 adım önü)
ALT + 5 = F4 ile maden başlatırken kazacağı yön için konum (1 adım önü)
#SingleInstance Force
#NoEnv
SendMode, Input
SetBatchLines, -1
#MaxThreadsPerHotkey 1
; ========= Global =========
global devam := false
global aktifSet := 0 ; 2..5 => (koordinat1, koordinatN)
global dosyaYolu := "ayar.ini"
global a1 := "", a2 := "", b1 := "", b2 := "" ; aktif X/Y çifti
; ========= Kısayollar =========
; F1 = koordinat1 & koordinat2
; F2 = koordinat1 & koordinat3
; F3 = koordinat1 & koordinat4
; F4 = koordinat1 & koordinat5
F1::StartOrToggle(2)
F2::StartOrToggle(3)
F3::StartOrToggle(4)
F4::StartOrToggle(5)
; Acil durdurma
Esc::StopAll()
; Koordinat kaydetme (Alt + 1..5)
!1::SaveCoord(1)
!2::SaveCoord(2)
!3::SaveCoord(3)
!4::SaveCoord(4)
!5::SaveCoord(5)
; Durumu göster (isteğe bağlı): Ctrl+F
^f::
TrayTip, Otomasyon,
(Join`n
Aktif Set: %aktifSet% (1 & %aktifSet%)
a=(%a1%,%a2%) b=(%b1%,%b2%)
), 2
return
; ========= Yardımcılar =========
StartOrToggle(idx) {
global devam, aktifSet
; Aynı set çalışıyorsa F tuşuna tekrar basmak durdursun
if (devam && aktifSet = idx) {
StopAll()
return
}
; Yeni set: Koordinatları ATA ve başlat
if (!SetActivePair(idx)) {
return
}
aktifSet := idx
devam := true
SetTimer, Hyper, Off
SetTimer, Hyper, 50
TrayTip, Otomasyon, Başladı: koordinat1 & koordinat%idx%, 1
}
StopAll() {
global devam
devam := false
SetTimer, Hyper, Off
TrayTip, Otomasyon, Durduruldu, 1
}
; INI'den okuyup AKTİF (a1,a2) ve (b1,b2) değerlerini ATAR
SetActivePair(idx) {
global a1, a2, b1, b2
if (!GetCoord(1, ax, ay)) {
TrayTip, Otomasyon, koordinat1 ayarlı değil!, 2
return false
}
if (!GetCoord(idx, bx, by)) {
TrayTip, Otomasyon, koordinat%idx% ayarlı değil!, 2
return false
}
a1 := ax, a2 := ay
b1 := bx, b2 := by
return true
}
; 10ms parçalarla bekler; arada F1..F4/ESC ile anında kesilir
WaitOrStop(ms) {
global devam
step := 10, elapsed := 0
while (elapsed < ms) {
if (!devam)
return false
Sleep, %step%
elapsed += step
}
return true
}
SaveCoord(n) {
global dosyaYolu
CoordMode, Mouse, Screen
MouseGetPos, x, y
key := "koordinat" . n
IniWrite, %x%`,%y%, %dosyaYolu%, Ayar, %key%
isim := (n = 1) ? "Pickaxe (Kazma) Koordinatı" : "Yürüme Koordinatı"
Tooltip, % isim " [" key "] = " x "," y
Sleep, 1200
Tooltip
}
GetCoord(n, ByRef x, ByRef y) {
global dosyaYolu
key := "koordinat" . n
IniRead, val, %dosyaYolu%, Ayar, %key%,
if (ErrorLevel || val = "")
return false
StringSplit, p, val, `,
x := p1, y := p2
if (x = "" || y = "")
return false
return true
}
; ========= Ana iş döngüsü =========
Hyper:
if (!devam)
return
; reentrancy kapat
SetTimer, Hyper, Off
; --- Adım 1 ---
if (!devam)
return
MouseClick, left, a1, a2, 2
MouseClick, left, b1, b2
; --- Adım 2 ---
if (!WaitOrStop(3000))
return
if (!devam)
return
MouseClick, left, a1, a2, 2
MouseClick, left, b1, b2
; --- Adım 3 ---
if (!WaitOrStop(3000))
return
if (!devam)
return
MouseClick, left, a1, a2, 2
MouseClick, left, b1, b2
; --- Adım 4 ---
if (!WaitOrStop(3000))
return
if (!devam)
return
MouseClick, right, b1, b2
; döngü devamı
if (devam)
SetTimer, Hyper, 50
return
