Hello.
I am struggling with to understand how to jump between labels, in what, by my standards, is quite a convoluted process.
To cut a long story relatively short, I am trying to force a video game to do the following:
1) Load the game into what I'll call its initial configuration - label LOAD.
2) Change some aspect of the game so that it's in what I'll call Configuration 1 - label MOUSE.
3) When it's in Configuration 1, force the computer to play against itself - label GAME.
4) Save a print screen of some information about Configuration 1.
5) Repeat step 1 - so, when the print screen has been dumped in the folder, load the game, and then...
5) Repeat steps 3 and 4 for x amount of times.
6) Change some aspect of the game so that it's in what I'll call Configuration 2.
...
It isn't working properly. I can't get it to the stage where x number of repetitions of Configuration 1 are completed, with the game being loaded into its initial state after each repetition, and then Configuration 2 is loaded.
What am I doing wrong, please? The individual bits, taken in isolation, work - so, it loads, I can mouse-move to force it to change configuration, I can print-screen, etc, but the whole thing doesn't work together.
Obviously, any help you can give me will be hugely appreciated.
This is how my code looks:
'THIS LOADS THE GAME
'Set the focus to FM21
SetFocus>Football Manager 2021
Wait>2
Let>k=0
Let>counter=1
Goto>Load
Label>Load
'Make a loop, both for the overall repetition of the matches, and for the iteration of the filenames
Wait>2
'Click 'FM' button
MouseMove>3235,71
LClick
Wait>2
'Click` 'Load Game' button
MouseMove>3376,277
LClick
Wait>2
'Click 'Do Not Save Game' button
MouseMove>2086,1189
LClick
Wait>2
'Select one of the games to load
MouseMove>1345,863
LDblClick
Wait>2
'Hit continue
MouseMove>3616,61
LClick
Wait>2
'THE GAME HAS BEEN LOADED'
'NEXT, CHANGE THE FORMATION
Label>start
SetFocus>Football Manager 2021
Wait>2
'Move mouse around and click through to (home) manager's preferred formation.
MouseMove>1117,84
LClick
Wait>2
MouseMove>1134,77
LClick
Wait>2
MouseMove>767,915
LClick
Wait>2
MouseMove>1545, 160
LClick
Wait>2
MouseMove>1572,275
LClick
Wait>2
MouseMove>1602,415
LClick
Wait>2
MouseMove>2944,90
LClick
Wait>2
MouseMove>3039,607
LClick
Wait>2
Goto>mouse
Label>mouse
'Set variable for mouse move
Let>init=1270
Let>pixels1=counter*70
Let>pixels2=pixels1+init
LClick
MouseMove>2300,init
LClick
Wait>2
MouseMove>2300,pixels2
LClick
Wait>2
MouseMove>2846,1786
LClick
Wait>2
Press CTRL
Send>s
Release CTRL
Wait>2
'Preparing for screen dump
HoldKey>VK_SHIFT,1000,0,0
Send>A
ReleaseKey>SHIFT
Wait>2
'Press OK when asked to print screen
MouseMove>2124,1241
LClick
Wait>2
'Locate Save As box
MouseMove>1929,630
LClick
Wait>2
'Delete contents of Save As box
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Wait>2
'Make new filename
Send> formation_%counter%
wait>2
Press ENTER
Let>k=k+1
Wait>1
Press CTRL
Send>s
Release CTRL
If>k<3
Goto>game
Else
Goto>start
Endif
Goto>game
Label>game
'Hit continue
MouseMove>3616,61
LClick
Wait>4
'Hit continue again
LClick
Wait>4
'Click name of league at top of screen
MouseMove>1186,92
LClick
Wait>4
'Click Team Opposition Test
MouseMove>713,907
LClick
Wait>3
'Select schedule
MouseMove>1140,170
Wait>2
LClick
Wait>3
'Click Senior Squad schedule
MouseMove>1160,240
LClick
Wait>3
'Click the match report
MouseMove>1989,493
LClick
Wait>2
'Preparing for screen dump
HoldKey>VK_SHIFT,1000,0,0
Send>A
ReleaseKey>SHIFT
Wait>2
'Press OK when asked to print screen
MouseMove>2124,1241
LClick
Wait>2
'Locate Save As box
MouseMove>1929,630
LClick
Wait>2
'Delete contents of Save As box
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Wait>2
'Make new filename
Send> matchreport_%counter%_%k%
wait>2
Press ENTER
'Hit the back button
MouseMove>60,37
LClick
Wait>2
'You're now back on the fixtures screen - print it
'Preparing for screen dump
HoldKey>VK_SHIFT,1000,0,0
Send>A
ReleaseKey>SHIFT
Wait>2
'Press OK when asked to print screen
MouseMove>2124,1241
LClick
Wait>2
'Locate Save As box
MouseMove>1929,630
LClick
Wait>2
'Delete contents of Save As box
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Press BACKSPACE
Wait>2
'Make new filename
Send> scoreline_%counter%_%k%
wait>2
Press ENTER
'Hit the back button
MouseMove>414,50
LClick
Wait>2
If>counter<3
Goto>Load
Else Goto>start
Wait>2
Endif
Labelling - user issue, not software issue.
Moderators: Dorian (MJT support), JRL
- Dorian (MJT support)
- Automation Wizard
- Posts: 1386
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Labelling - user issue, not software issue.
Just something that isn't going to affect your script, but is redundant..
You don't need a Goto just before the label.
All you need is the label. You're telling the script to go to a label which is on the next line anyway.
You don't appear to need these lines at all. you only need a label if you want to jump to it from somewhere else. But I don't see a goto>mouse anywhere else in your script.
Near the bottom you have this :
The correct usage would be :
You've created an infinite loop, as you've set counter=1, then later you have if>counter<3, but you don't have let>counter=counter+1 anywhere. So it'll always be 1.
Goto>Game is also redundant as your label is directly below. You want it to jump to start if it isn't <3, but just carry on if it is.
Or in other words.. if k is 0,1, or 2, carry on as normal, but if it's >2, go to start. So:
It's probably worth looking at the usage examples in Help. If you press F1 on any command you'll get context sensitive help for that command. There's also a command reference here.
It's probably worth running it through line by line just to see where it's failing, just to give you a good starting point. Break it down into chunks again and build it up again slowly.
You don't need a Goto just before the label.
Code: Select all
Goto>Load
Label>Load
You don't appear to need these lines at all. you only need a label if you want to jump to it from somewhere else. But I don't see a goto>mouse anywhere else in your script.
Code: Select all
Goto>mouse
Label>mouse
Code: Select all
If>counter<3
Goto>Load
Else Goto>start
Wait>2
Endif
Code: Select all
If>counter<3
Goto>Load
Else
Goto>start
Wait>2
Endif
Goto>Game is also redundant as your label is directly below. You want it to jump to start if it isn't <3, but just carry on if it is.
Code: Select all
If>k<3
Goto>game
Else
Goto>start
Endif
Goto>game
Label>game
Code: Select all
If>k<3
Else
Goto>start
Endif
Label>game
Code: Select all
If>k>2
Goto>start
Endif
Label>game
It's probably worth running it through line by line just to see where it's failing, just to give you a good starting point. Break it down into chunks again and build it up again slowly.
Yes, we have a Custom Scripting Service. Message me or go here
Re: Labelling - user issue, not software issue.
Thanks for your advice.
I'll take a look at the extraneous labels, and I'll try to run it in chunks.
I appreciate your help!
I'll take a look at the extraneous labels, and I'll try to run it in chunks.
I appreciate your help!