#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
CardSortType_Rarity := 1
CardSortType_Level := 2
CardSortType_ATK := 3
CardSortType_DEF := 4
CardSortOrder_Ascending := 1
CardSortOrder_Descending := 2
MsgBox, 4, Hazama's Gemless deck, Press the Yes button if your game is in windowed mode. If you need to cancel the process, press ESC.
LastWinW := 0
LastWinH := 0
IfMsgBox Yes
{
WinWaitActive, masterduel
WinGetPos,X,Y,LastWinW,LastWinH,A
ResizeWin(512, 512)
RemoveMainDeckMonsters()
; RemoveMainDeckMonsters ensures the mouse is not pointing at the button of display unowned cards.
DisplayUnownedCards()
RemoveExtraDeckMonsters()
ClearAllFilters()
SetCardSortMethod(CardSortType_Rarity, CardSortOrder_Ascending)
AddCardByText("Sea Stealth Attack", 3)
AddCardByText("Torrential Tribute", 2)
AddCardByText("Gaia Knight, The Force of Earth", 3)
AddCardByText("+ Blue-Eyes White Dragon", 2)
AddCardByText("Berserker of the Tenyi", 1)
SetCardSortMethod(CardSortType_Rarity, CardSortOrder_Descending)
; Here we start main deck monsters.
AddCardByText("Megalosmasher X", 3)
AddCardByText("Planet Pathfinder", 3)
AddCardByText("Pacifis, the Phantasm City", 3)
AddCardByText("Dimensional Fissure", 3)
AddCardByText("Mystical Space Typhoon", 2)
AddCardByText("Forbidden Chalice", 2)
AddCardByText("Floodgate Trap Hole", 2)
AddCardByText("Paleozoic Canadia", 2)
AddCardByText("Paleozoic Dinomischus", 2)
AddCardByText("Paleozoic Pikaia", 2)
AddCardByText("Spiral Battle Min", 3)
AddCardByText("Spiral Power Min", 2)
AddCardByText("Dogmatika Punishment", 3)
AddCardByText("Fists of the Unrivaled Tenyi", 3)
; Now we switch to extra deck monsters.
AddCardByText("Herald of Pure Light", 1)
AddCardByText("Cat Shark", 1)
AddCardByText("Number 45: Crumble Logos the Prophet of Demolition", 1)
AddCardByText("The Phantom Knights of Cursed Javelin", 1)
AddCardByText("Gem-Knight Pearl", 1)
AddCardByText("Number 82: Heartlandraco", 1)
AddCardByText("Gagaga Samurai", 1)
AddCardByText("Number 70: Malevolent Sin", 1)
AddCardByText("Defender of the Labyrinth", 1)
ResizeWin(LastWinW, LastWinH)
}
Else
{
Return
}
ResizeWin(Width = 0,Height = 0)
{
WinGetPos,X,Y,W,H,A
if(%Width% = 0)
{
Width := W
}
if(%Height% = 0)
{
Height := H
}
WinMove,A,,%X%,%Y%,%Width%,%Height%
}
DisplayUnownedCards()
{
PixelGetColor, OutputVar, 464, 181
OutputVar += 0
if(OutputVar < 2000)
{
Click, 464 181
Sleep, 3000
}
}
RemoveMainDeckMonsters()
{
; 70 instead of 65 to account for situations where the player already has an open menu.
Loop, 70
{
Click, 148 197 Right
Sleep, 100
}
}
RemoveExtraDeckMonsters()
{
Loop, 20
{
Click, 150 341 Right
Sleep, 100
}
}
ClearAllFilters()
{
Click, 467 198
Sleep, 2000
}
SetCardSortMethod(cardtype, cardorder)
{
CardSortType_Rarity := 1
CardSortType_Level := 2
CardSortType_ATK := 3
CardSortType_DEF := 4
CardSortOrder_Ascending := 1
CardSortOrder_Descending := 2
Sleep, 1000
Click, 419 195
Sleep, 3000
targetScreenPosX := 255
if(cardorder = CardSortOrder_Descending)
{
targetScreenPosX += 63
}
targetScreenPosY := 0
switch %cardtype%
{
case %CardSortType_Rarity%: targetScreenPosY = 150
case %CardSortType_Level%: targetScreenPosY = 177
case %CardSortType_ATK%: targetScreenPosY = 207
case %CardSortType_DEF%: targetScreenPosY = 232
}
Click, %targetScreenPosX%, %targetScreenPosY%
Sleep, 3000
}
AddCardByText(text, copies)
{
text := StrReplace(text, "/", "{NumpadDiv}")
text := StrReplace(text, "+", "{NumpadAdd}")
text := StrReplace(text, "-", "{NumpadSub}")
Click, 383 180
Sleep, 200
Send, %text%
Sleep, 200
Send, {Enter}
Sleep, 1000
Loop, %copies%
{
Click, 360 225 Right
Sleep, 100
}
Click, 443 181
Sleep, 1000
}
/::
WinWaitActive, masterduel
WinGetPos,X,Y,LastWinW,LastWinH,A
ResizeWin(512, 512)
MouseGetPos, xpos, ypos
clipboard = Click, %xpos% %ypos%
return
Esc::
if(%LastWinW% != 0 && %LastWinH% != 0)
{
ResizeWin(LastWinW, LastWinH)
}
ExitApp ; Exit script with Escape key
return
Comments