quando o scrip envia o click para tela especifica ele nao manda click no local que definir ele envia apenas onde o mouse fisico esta posicionado na tela
Code: Select all
; Configuração para coordenadas e resolução da tela
SetDefaultMouseSpeed, 0
SetMouseDelay, 10
#SingleInstance, Force
; Variáveis globais para coordenadas e número de bags
global hwnd, base_x, base_y, offset, num_bags
; Função para capturar o HWND da janela
GetWindowHandle() {
WinGet, hwnd, ID, otPokemon | Noob - Master Jr
if (!hwnd) {
MsgBox, Não foi possível encontrar a janela "otPokemon | Noob - Master Jr"
ExitApp
}
return hwnd
}
; Função para calcular coordenadas de Berrypot
GetBerryPotCoords(row, col) {
global base_x, base_y, offset
x := base_x + (col - 1) * offset
y := base_y + (row - 1) * offset
return [x, y]
}
; Função para definir coordenadas baseado na resolução
SetResolution(resolution) {
if (resolution = "1366x768") {
base_x := 1193
base_y := 98
offset := 34
} else if (resolution = "1920x1080") {
base_x := 1747
base_y := 98
offset := 34
}
}
; Função para enviar clique virtual
PostClick(hwnd, x, y) {
lParam := (y << 16) | (x & 0xFFFF) ; Combina x e y em um único número
DllCall("user32.dll\PostMessage", "Ptr", hwnd, "UInt", 0x201, "Ptr", 0, "Ptr", lParam) ; WM_LBUTTONDOWN (0x201)
DllCall("user32.dll\PostMessage", "Ptr", hwnd, "UInt", 0x202, "Ptr", 0, "Ptr", lParam) ; WM_LBUTTONUP (0x202)
}
; Função para enviar teclas
PostKey(hwnd, key) {
vk := GetKeyVK(key) ; Obtém o código virtual da tecla
sc := GetKeySC(key) ; Obtém o código de scan da tecla
DllCall("user32.dll\PostMessage", "Ptr", hwnd, "UInt", 0x100, "Ptr", vk, "Ptr", (sc << 16)) ; WM_KEYDOWN (0x100)
DllCall("user32.dll\PostMessage", "Ptr", hwnd, "UInt", 0x101, "Ptr", vk, "Ptr", (sc << 16)) ; WM_KEYUP (0x101)
}
; Inicialização da interface para escolher a resolução e número de bags
F1::
Gui, Add, Text,, Selecione a resolução da tela:
Gui, Add, Radio, vRes1366 Checked, 1366x768
Gui, Add, Radio, vRes1920, 1920x1080
Gui, Add, Text,, Quantidade de bags para abrir:
Gui, Add, Edit, vNumBags, 32 ; Caixa de texto com valor padrão "32"
Gui, Add, Button, gSubmitResolution, Confirmar
Gui, +AlwaysOnTop -MinimizeBox -MaximizeBox
Gui, Show, w170 h135,, Escolher Resolução e Bags
return
SubmitResolution:
Gui, Submit, NoHide
if (Res1366) {
SetResolution("1366x768")
} else if (Res1920) {
SetResolution("1920x1080")
}
if (NumBags = "" or NumBags <= 0) {
MsgBox, Por favor, insira um número válido de bags.
return
}
num_bags := NumBags
Gui, Destroy
; Capturar o HWND
hwnd := GetWindowHandle()
; Calcular coordenadas para os berrypots
berrypots := []
Loop 4 {
row := A_Index
Loop 5 {
col := A_Index
berrypots.Push(GetBerryPotCoords(row, col))
}
}
row := 5
Loop 3 {
col := A_Index
berrypots.Push(GetBerryPotCoords(row, col))
}
bag := GetBerryPotCoords(5, 4)
click_interval := 300
double_click_interval := 300
; Loop para abrir bags
Loop %num_bags%
{
for i, coords in berrypots {
; Colher Apricorns
Loop 4 {
PostClick(hwnd, coords[1], coords[2]) ; Clique direito
Sleep, %click_interval%
}
; Plantar Apricorns
PostKey(hwnd, "5") ; Seleciona o item 5
Sleep, %click_interval%
PostClick(hwnd, coords[1], coords[2]) ; Clique esquerdo
Sleep, %double_click_interval%
}
; Abrir a bag
PostClick(hwnd, bag[1], bag[2]) ; Clique direito na bag
Sleep, 1000
}
ExitApp
; Atalho para interromper a macro
F2::ExitApp