Credit goes to

for the original script. I just modified it so it worked for me.
Also, although I think the automated screenshots is a great idea, it caused problems with creating the files which had to be created manually and was proving to be more hassle than useful.
This is my version of the macro, I have been working on this a couple of weeks and happy to say it's working for me and 2 other friends.
Requirements:
Full screen 1920x1080 resolution
One-click Cargo
One-click Passenger
ACTool (free program to run the script)
Lock your buildings!
NOT compatible with the night theme
Instructions:
Download ACTool and set your start/stop hotkeys
Copy and paste the entire code in the spoiler section into ACTool and save it
in the "constants" section of the code, where it says "send" you may change the number to 6, 10 or 30 (only these 3 available at this time) depending on which journey time you would like the script to send your trains on
run the game and put it into full screen
press your hotkey to start the script
Watch!
What this script actually does:
This will send your trains out on the journey time you have specified in the "constants" section
!!!!DO NOT EDIT reason OR main. only edit send with either 6, 10 or 30.!!!!
It will click on your trains at docks and town (however it does not click halfway on contract journeys)
it will automatically close the level-up and achievement boxes so they will not stop the script
constants
send = 30
reason = 0
main = 1
end
call dockcheck
Procedure dockcheck
while $main = 1
LoadRGB 155, 73
if {RGBRed} = 1
call dock
else
call main
end
end
end
procedure dock //If dock is available go there and click on the trains
MousePos 157, 69
call click
delay 2 sec
MousePos 1700, 945
call click
MousePos 1700, 939
call click
MousePos 1700, 934
call click
MousePos 1700, 926
call click
MousePos 1700, 920
call click
MousePos 1700, 914
call click
MousePos 1700, 902
call click
MousePos 1700, 898
call click
MousePos 28, 1030
call click
delay 2 sec
end
procedure main //Clicks on all the trains on the main screen
//while $main = 1
MousePos 1670, 945
call cc
MousePos 1670, 939
call cc
MousePos 1670, 933
call cc
MousePos 1670, 925
call cc
MousePos 1670, 919
call cc
MousePos 1670, 911
call cc
MousePos 1670, 905
call cc
MousePos 1670, 892
call cc
MousePos 1670, 886
call cc
Mousepos 1670, 880
call cc
MousePos 1670, 870
call cc
call errorlog
//end
end
procedure getcolor //checks if the train clicked from main is a "dispatchable train" if yes dispatch it
delay 500
LoadRGB 1030, 578
if {RGBGreen} = 195
CASE $send
when 6
MousePos 814, 585
when 10
MousePos 1033, 574
when 30
MousePos 1252, 579
else
end
call click
else
end
end
procedure errorlog //Checks if there is any errors going on + handling them.
LoadRGB 681, 420
case {RGBGreen}
when 236
//236
setconst reason = lvlup
when 136
//136
setconst reason = achievment
when 30
//30
setconst reason = disconnect
else
Setconst reason = normal
end
if $reason = achievment
MousePos 1245, 361
call click
end
if $reason = disconnect
//call reconnect
end
if $reason = lvlup
MousePos 851, 794
call click
end
end
procedure cc
call click
call getcolor
end
procedure click
leftclick
delay 500
end
More features are due to be included in this script later on after i've fully got them working and tested, these are but not limited to:
automatic international deployment
automatic switching between 2nd and 3rd stations for express and international trains
and more...
Please go ahead and try this script out or yourself, if you're having problems you may contact me on

and I will do my best to run through it with you and get it working.