#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, Flygon's beginner 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_Descending)
; Here we start main deck monsters.
AddCardByText("Tri-brigade Nervall", 3)
AddCardByText("Maxx C", 3)
AddCardByText("Tri-brigade Kerass", 2)
AddCardByText("Tri-brigade Kit", 3)
AddCardByText("Ash Blossom & Joyous Spring", 3)
AddCardByText("Rescue Cat", 3)
AddCardByText("Destiny HERO - Celestial", 1)
AddCardByText("Zoodiac Thoroughblade", 1)
AddCardByText("Tri-brigade Fraktall", 3)
AddCardByText("Destiny HERO - Dasher", 1)
AddCardByText("The Primal Being", 1)
AddCardByText("s Feather Duster", 1)
; The period is important for this card.
AddCardByText("You can only activate 1 fusion destiny per turn.", 2)
AddCardByText("You can only activate 1 Lightning Storm per turn.", 1)
AddCardByText("Fire Formation - Tenki", 3)
AddCardByText("Called By The Grave", 2)
AddCardByText("Crossout Designator", 2)
AddCardByText("Forbidden Droplet", 2)
AddCardByText("Infinite Impermanence", 3)
AddCardByText("Tri-brigade Revolt", 1)
; Now we switch to extra deck monsters.
AddCardByText("Destiny HERO - Destroyer Phoenix Enforcer", 1)
AddCardByText("Zoodiac Boarbow", 1)
AddCardByText("Zoodiac Drident", 1)
AddCardByText("Zoodiac Chakanine", 1)
AddCardByText("Divine Arsenal AA-ZEUS - Sky Thunder", 1)
AddCardByText("Salamangreat Almiraj", 1)
AddCardByText("Ancient Warriors Oath - Double Dragon Lords", 1)
AddCardByText("Tri-brigade Ferrijit the Barren Blossom", 1)
AddCardByText("Tri-brigade Bearbrumm the Rampant Rampager", 1)
AddCardByText("the Desperate Doom Eagle", 1)
AddCardByText("Bow of the Goddess", 1)
AddCardByText("Accesscode Talker", 1)
AddCardByText("Tri-brigade Shuraig the Ominous Omen", 2)
AddCardByText("Predaplant Verte Anaconda", 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