The method I mentioned above takes about 15 minutes to do manually each season. After a couple seasons it was getting a little to tedious so I wrote a AutoHotKey script to do it. It runs in about 2 minutes does everything mentioned above. You will need to install AutoHotKey then make a .ahk file in notepad and just paste in what is below. Open your .ahk file you made then At the training camp day of the year go to options and the advanced page then hit Ctrl + j on your keyboard and it will run.
Resolution is 1920 x 1080, scaling at 125% running DDSCF at fullscreen. If your settings are different you will need to adjust the x,y coordinates
7/31 EDIT.... I changed the script to be a little more friendly and so I could add alternate training / progression models quicker
CTRL + j will lower the recruits key attributes ( I do this every season)
CTRL + h will give extra training to all players key attributes ( I run this on years ending in 0,1,2,4,5,6,7,9)
CTRL + g will train key (at a lower rate) and secondary skills on all players (script fixes recruits so they dont get an extra boost from this) ( I run this on years ending in 3 & 8)
The next two scripts are just quick and dirty to get me through the season pretty quick on I can get to year 5 where the rosters will be full of players who have been through the recruiting and training changes mentioned.
CTRL + w is a script to get from training camp to Bowl Week
CTRL + e is a script to get from after bowls are simmed back to training camp
CTRL + r is a script used with Window Spy to determine offset for on screen selections
- Code: Select all
;===========================================================
;===========================================================
;======
;====== Ctrl + j - lower recruits (every year)
;====== Ctrl + h - trains all players key att (0,1,2,4,5,6,7,9)
;====== Ctrl + g - trains all players key & sec att (3 & 8)
;======
;======
;====== Ctrl + w - adv to bowl games, manually sim
;====== Ctrl + e - adv to back to training camp
;======
;====== Ctrl + r - use with window spy to find offset
;======
;===========================================================
;===========================================================
;======
;====== Y coordinates for each selection
;====== at the bottom in the functions need to adjust
;====== a few coordinates their also for different
;====== screen size
;======
;===========================================================
;===========================================================
global PBRec := 740
global PBAll := 719
global ABPlus := 830
global ABMinus := 850
global PosQB := 780
global PosRB := 796
global PosFB := 813
global PosTE := 830
global PosWR := 850
global PosG := 870
global PosT := 890
global PosC := 910
global PosP := 930
global PosK := 945
global PosDT := 965
global PosDE := 985
global PosLB := 1000
global PosCB := 1020
global PosSS := 1040
global PosFS := 1055
global RatACC := 795
global RatAGI := 815
global RatARM := 835
global RatEND := 855
global RatHND := 870
global RatINT := 890
global RatKAC := 910
global RatKDI := 930
global RatPBK := 945
global RatRBK := 965
global RatSPD := 985
global RatSTR := 1005
global RatTAC := 1020
global xOffset := -10
global yOffset := -10
;===========================================================
;===========================================================
;====== CTRL + r
;====== Calibrate x,y on screen
;====== Should align perfectly in Playcalling
;====== box top left corner, use spy to find offset
;===========================================================
;===========================================================
^r::
xBox := 398 + xOffset
yBox := 289 + yOffset
Click, %xBox%, %yBox%
return
;===========================================================
;===========================================================
;====== CTRL + w
;====== Get us from training camp to bowl week
;===========================================================
;===========================================================
^w::
TimeSleep := 100
LongSleep := 1500
SelectClick(TimeSleep,340,240,240) ; Advance past Training Camp
Sleep %LongSleep%
SelectClick(TimeSleep,1333,40,40) ; Close Results Window
Sleep %TimeSleep%
SelectClick(TimeSleep,340,240,240) ; Advance past Redshirts
Sleep %TimeSleep%
Send {Enter} ; Confirm Redshirts
Sleep %TimeSleep%
SelectClick(TimeSleep,370,240,240) ; Open weekly schedule
Sleep %LongSleep%
SelectClick(TimeSleep,500,600,600) ; Sim regular season
return
;===========================================================
;===========================================================
;====== CTRL + e
;====== Get us from after bowls back to training camp
;===========================================================
;===========================================================
^e::
TimeSleep := 100
LongSleep := 1500
SelectClick(TimeSleep,340,240,240) ; Advance to Awards
Sleep %LongSleep%
SelectClick(TimeSleep,1270,40,40) ; Close Results Window
Sleep %TimeSleep%
SelectClick(TimeSleep,340,240,240) ; Advance to Senior Bowl
Sleep %TimeSleep%
SelectClick(TimeSleep,900,40,40) ; Sim Senior Bowl, View Results
Sleep %LongSleep%
xCloseBox := 410 - xOffset
yCloseBox := 20 - yOffset
SelectClick(TimeSleep,xCloseBox,yCloseBox,yCloseBox) ; Close Results Window
LongSleep := 2000
SelectClick(TimeSleep,340,240,240) ; Advance to EOS
Sleep %LongSleep%
Send {Enter} ; Confirm EOS
Sleep %LongSleep%
Sleep %LongSleep%
Sleep %LongSleep%
SelectClick(TimeSleep,1333,40,40) ; Close EOS Results Window
Sleep %LongSleep%
SelectClick(TimeSleep,340,240,240) ; Advance to New Season
Sleep %LongSleep%
Sleep %LongSleep%
SelectClick(TimeSleep,340,240,240) ; Advance past Staff Offers R1
Sleep %TimeSleep%
Send {Enter} ; Confirm Advance
Sleep %TimeSleep%
SelectClick(TimeSleep,340,240,240) ; Advance past Staff Offers R2
Sleep %TimeSleep%
Send {Enter} ; Confirm Advance
Sleep %TimeSleep%
SelectClick(TimeSleep,340,240,240) ; Advance past Staff Offers R3
Sleep %TimeSleep%
Send {Enter} ; Confirm Advance
Sleep %TimeSleep%
SelectClick(TimeSleep,340,240,240) ; Advance past Staff Offers R4
Sleep %TimeSleep%
Send {Enter} ; Confirm Advance
Sleep %TimeSleep%
SelectClick(TimeSleep,340,240,240) ; Advance past Staff Offers R5
Sleep %TimeSleep%
Send {Enter} ; Confirm Advance
Sleep %LongSleep%
SelectClick(TimeSleep,1333,40,40) ; Close EOS Results Window
Sleep %LongSleep%
SelectClick(TimeSleep,340,240,240) ; Advance Signing Day
return
;===========================================================
;===========================================================
;====== CTRL + j
;====== Lower Recruits Key Attributes
;====== Run every season
;===========================================================
;===========================================================
^j::
AdjDT := 13
AdjKP := 9
AdjRest := 18
;============================= RECRUITS =================================
PlayersBox(PBRec)
AmountBox(ABMinus)
NumberValueBox(AdjRest)
;============================= QB =================================
PosBox(PosQB)
AttBox(RatACC)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= RB =================================
PosBox(PosRB)
AttBox(RatAGI)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= WR =================================
PosBox(PosWR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= TE =================================
PosBox(PosTE)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= FB =================================
PosBox(PosFB)
AttBox(RatPBK)
ApplyChanges()
AttBox(RatRBK)
ApplyChanges()
;============================= G ==================================
PosBox(PosG)
ApplyChanges()
AttBox(RatPBK)
ApplyChanges()
;============================= T ==================================
PosBox(PosT)
ApplyChanges()
AttBox(RatRBK)
ApplyChanges()
;============================= C ==================================
PosBox(PosC)
ApplyChanges()
AttBox(RatPBK)
ApplyChanges()
;============================= DE =================================
PosBox(PosDE)
AttBox(RatSPD)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= LB ==================================
PosBox(PosLB)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= SS ==================================
PosBox(PosSS)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= FS ==================================
PosBox(PosFS)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= CB ==================================
PosBox(PosCB)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= DT =================================
NumberValueBox(AdjDT)
PosBox(PosDT)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= K =================================
NumberValueBox(AdjKP)
PosBox(PosK)
AttBox(RatKAC)
ApplyChanges()
AttBox(RatKDI)
ApplyChanges()
;============================= P =================================
PosBox(PosP)
ApplyChanges()
AttBox(RatKAC)
ApplyChanges()
return
;===========================================================
;===========================================================
;====== CTRL + h
;====== Train all players in key attributes
;====== Run years ending with 0,1,2,4,5,6,7,9
;===========================================================
;===========================================================
^h::
AdjDT := 3
AdjKP := 2
AdjRest := 4
;============================= All Players ========================
PlayersBox(PBAll)
AmountBox(ABPlus)
NumberValueBox(AdjRest)
;============================= QB =================================
PosBox(PosQB)
AttBox(RatACC)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= RB =================================
PosBox(PosRB)
AttBox(RatAGI)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= WR =================================
PosBox(PosWR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= TE =================================
PosBox(PosTE)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= FB =================================
PosBox(PosFB)
AttBox(RatPBK)
ApplyChanges()
AttBox(RatRBK)
ApplyChanges()
;============================= G ==================================
PosBox(PosG)
ApplyChanges()
AttBox(RatPBK)
ApplyChanges()
;============================= T ==================================
PosBox(PosT)
ApplyChanges()
AttBox(RatRBK)
ApplyChanges()
;============================= C ==================================
PosBox(PosC)
ApplyChanges()
AttBox(RatPBK)
ApplyChanges()
;============================= DE =================================
PosBox(PosDE)
AttBox(RatSPD)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= LB ==================================
PosBox(PosLB)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= SS ==================================
PosBox(PosSS)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= FS ==================================
PosBox(PosFS)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= CB ==================================
PosBox(PosCB)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= DT =================================
NumberValueBox(AdjDT)
PosBox(PosDT)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= K =================================
NumberValueBox(AdjKP)
PosBox(PosK)
AttBox(RatKAC)
ApplyChanges()
AttBox(RatKDI)
ApplyChanges()
;============================= P =================================
PosBox(PosP)
ApplyChanges()
AttBox(RatKAC)
ApplyChanges()
return
;===========================================================
;===========================================================
;====== CTRL + g
;====== Train all players in key and secondary attributes
;====== Run years ending with 3 & 8
;===========================================================
;===========================================================
^g::
AdjDT := 2
AdjKP := 1
AdjRest := 3
;============================= All Players ========================
PlayersBox(PBAll)
AmountBox(ABPlus)
NumberValueBox(AdjRest)
;============================= QB =================================
PosBox(PosQB)
AttBox(RatACC)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= RB =================================
PosBox(PosRB)
AttBox(RatAGI)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= WR =================================
PosBox(PosWR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= TE =================================
PosBox(PosTE)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= FB =================================
PosBox(PosFB)
AttBox(RatPBK)
ApplyChanges()
AttBox(RatRBK)
ApplyChanges()
;============================= G ==================================
PosBox(PosG)
ApplyChanges()
AttBox(RatPBK)
ApplyChanges()
;============================= T ==================================
PosBox(PosT)
ApplyChanges()
AttBox(RatRBK)
ApplyChanges()
;============================= C ==================================
PosBox(PosC)
ApplyChanges()
AttBox(RatPBK)
ApplyChanges()
;============================= DE =================================
PosBox(PosDE)
AttBox(RatSPD)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= LB ==================================
PosBox(PosLB)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= SS ==================================
PosBox(PosSS)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= FS ==================================
PosBox(PosFS)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= CB ==================================
PosBox(PosCB)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= DT =================================
NumberValueBox(AdjDT)
PosBox(PosDT)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatTAC)
ApplyChanges()
;============================= K =================================
NumberValueBox(AdjKP)
PosBox(PosK)
AttBox(RatKAC)
ApplyChanges()
AttBox(RatKDI)
ApplyChanges()
;============================= P =================================
PosBox(PosP)
ApplyChanges()
AttBox(RatKAC)
ApplyChanges()
AdjDT := 3
AdjKP := 2
AdjRest := 2
;============================= ALL =================================
PlayersBox(PBAll)
AmountBox(ABPlus)
NumberValueBox(AdjRest)
;============================= QB =================================
PosBox(PosQB)
AttBox(RatARM)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= RB =================================
PosBox(PosRB)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= WR =================================
PosBox(PosWR)
AttBox(RatAGI)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= TE =================================
PosBox(PosTE)
AttBox(RatSPD)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= FB =================================
PosBox(PosFB)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= G ==================================
PosBox(PosG)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= T ==================================
PosBox(PosT)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= C ==================================
PosBox(PosC)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= DE =================================
PosBox(PosDE)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= LB ==================================
PosBox(PosLB)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= SS ==================================
PosBox(PosSS)
AttBox(RatTAC)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= FS ==================================
PosBox(PosFS)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= CB ==================================
PosBox(PosCB)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= DT =================================
NumberValueBox(AdjDT)
PosBox(PosDT)
AttBox(RatINT)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= K =================================
NumberValueBox(AdjKP)
PosBox(PosK)
AttBox(RatINT)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= P =================================
PosBox(PosP)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= LOWER RECRUITS ====================
PlayersBox(PBRec)
AmountBox(ABMinus)
NumberValueBox(AdjRest)
;============================= QB =================================
PosBox(PosQB)
AttBox(RatARM)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= RB =================================
PosBox(PosRB)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= WR =================================
PosBox(PosWR)
AttBox(RatAGI)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= TE =================================
PosBox(PosTE)
AttBox(RatSPD)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= FB =================================
PosBox(PosFB)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= G ==================================
PosBox(PosG)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= T ==================================
PosBox(PosT)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= C ==================================
PosBox(PosC)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
;============================= DE =================================
PosBox(PosDE)
AttBox(RatSTR)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= LB ==================================
PosBox(PosLB)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= SS ==================================
PosBox(PosSS)
AttBox(RatTAC)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= FS ==================================
PosBox(PosFS)
ApplyChanges()
AttBox(RatHND)
ApplyChanges()
;============================= CB ==================================
PosBox(PosCB)
ApplyChanges()
AttBox(RatAGI)
ApplyChanges()
;============================= DT =================================
NumberValueBox(AdjDT)
PosBox(PosDT)
AttBox(RatINT)
ApplyChanges()
AttBox(RatSPD)
ApplyChanges()
;============================= K =================================
NumberValueBox(AdjKP)
PosBox(PosK)
AttBox(RatINT)
ApplyChanges()
AttBox(RatSTR)
ApplyChanges()
;============================= P =================================
PosBox(PosP)
ApplyChanges()
AttBox(RatINT)
ApplyChanges()
return
ESC::ExitApp
;===========================================================
;===========================================================
;======
;====== Below are functions used in the script
;======
;===========================================================
;===========================================================
SelectClick(TimeSleep,xBox1,yBox1,ySel1)
{
xBox := xBox1 + xOffset
Wiggle := xBox + 5
yBox := yBox1 + yOffset
ySel := ySel1 + yOffset
Sleep %TimeSleep%
Click, %xBox%, %yBox%
Sleep %TimeSleep%
Click, %Wiggle%, %ySel%, 0
Sleep %TimeSleep%
Click, %xBox%, %ySel%
Sleep %TimeSleep%
return
}
PlayersBox(ySel1)
{
TimeSleep := 100
xBox1 := 880
yBox1 := 690
SelectClick(TimeSleep,xBox1,yBox1,ySel1)
return
}
PosBox(ySel1)
{
TimeSleep := 100
xBox1 := 880
yBox1 := 730
SelectClick(TimeSleep,xBox1,yBox1,ySel1)
return
}
AttBox(ySel1)
{
TimeSleep := 100
xBox1 := 880
yBox1 := 770
SelectClick(TimeSleep,xBox1,yBox1,ySel1)
return
}
AmountBox(ySel1)
{
TimeSleep := 100
xBox1 := 880
yBox1 := 803
SelectClick(TimeSleep,xBox1,yBox1,ySel1)
return
}
NumberValueBox(NumVal)
{
TimeSleep := 100
xBox := 975 + xOffset
yBox := 808 + yOffset
Wiggle := xBox + 5
Click, %xBox%, %yBox%
Sleep %TimeSleep%
Click, %Wiggle%, %yBox%
Sleep %TimeSleep%
Click, %xBox%, %yBox%
Send {BS}
Send {BS}
Send {BS}
Send %NumVal%
Sleep %TimeSleep%
return
}
ApplyChanges()
{
xBox := 973 + xOffset
yBox := 866 + yOffset
Click, %xBox%, %yBox%
Sleep 239
Send {Enter}
Sleep TimeSleep
return
}