Hints, tips and tricks for newbies
Moderators: Dorian (MJT support), JRL
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sat Nov 24, 2007 5:08 pm
im sure i gonna have many questions, so i made this topic, so the forum wont be filled with bunch of my little topics
my script
Code: Select all
label>start
mousemove>100,100
wait>1
mousemove>200,200
wait>1
goto>start
so after every sec it changes between these locations..
this script works, but i want it to change to 300,300 after every 4 minutes for only once.
how i do it?
-
Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
-
Contact:
Post
by Marcus Tettmar » Sat Nov 24, 2007 5:12 pm
Something like this:
Code: Select all
VBSTART
VBEND
VBEval>Timer,startTime
label>start
//how much time has elapsed (seconds)
VBEval>Timer-%startTime%,elapsed
If>elapsed<240
mousemove>100,100
wait>1
mousemove>200,200
wait>1
Else
//4 mins elapsed
MouseMove>300,300
Wait>1
//reset timer
VBEval>Timer,startTime
Endif
goto>start
Last edited by
Marcus Tettmar on Sat Nov 24, 2007 6:08 pm, edited 1 time in total.
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sat Nov 24, 2007 5:31 pm
looks nice..i have some questions though
should there be - or , between time and starttime
and does it mean that i take a timer and starttime? and you define the timer time with the random word "elapsed" ? or elapsed is somekind of function?
and why is this is the 3rd row? does it have to be there? and what it does?
and howcome this resents the timer when it says "starttimer"
sorry if too many stupid questions..i want to understand the script too..not only copy/paste the script
-
Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
-
Contact:
Post
by Marcus Tettmar » Sat Nov 24, 2007 5:39 pm
The VBScript Timer function returns *seconds since midnight". So the following will return the number of seconds since midnight:
VBEval>Timer,startTime
startTime will be equal to the number of seconds since midnight.
If we wait a few seconds ....
Wait>5
.. then do it again:
VBEval>Timer,startTime
.. startTime will now be about 5 bigger than it was before.
So we can measure elapsed time
VBEval>Timer,startTime
..
..
.. some time later
..
..
VBEval>Timer-%startTime%,elapsedtime
We call Timer again to get the number of seconds since midnight and subtract the original startTime from it. THis will give us elapsed seconds:
VBScript:
VBEval>Timer - %startTime%,elapsedtime
English:
[Seconds since midnight] minus [the seconds since midnight we recorded at starup] must equal [seconds elapsed]
I do hope this makes sense.
Last edited by
Marcus Tettmar on Sat Nov 24, 2007 6:12 pm, edited 1 time in total.
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sat Nov 24, 2007 6:02 pm
okay i got it now..
..but it isn't working right..i made this simple script here:
Code: Select all
VBSTART
VBEND
wait>3
VBEval>Timer,startTime
wait>10
VBEval>Timer-startTime,elapsedtime
send>elapsedtime
elapsedtime should be equal to 10 .. but try this script..and check what answer u get..print the elapsedtime to notepad or something
72058.296875
72079.90625
due to this..my old script keeps executing the "elapsedtime>120"
-
Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
-
Contact:
Post
by Marcus Tettmar » Sat Nov 24, 2007 6:08 pm
Sorry, my mistake. You need to do:
VBEval>Timer-%startTime%,elapsedTime
I will edit my other posts.
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sat Nov 24, 2007 6:23 pm
ohh thanks..works great now
okay now this one...
i have a picture...and i want to move my mouse to a certain colour..
can this be done my MS? or with VB? or smthing?
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sun Nov 25, 2007 7:18 am
i looked a little bit your code..but it was rather hard..couldn't really understand everything
but here i wrote my own..does this one work?
weird..i couldnt copy my code here... so i uploaded
http://char.planet.ee/code.txt
-
Marcus Tettmar
- Site Admin
- Posts: 7395
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
-
Contact:
Post
by Marcus Tettmar » Sun Nov 25, 2007 9:15 am
Here's an adaptation of the code I pointed to. This will seek through an area on the screen, defined by the XStart, XStop, YStart and YStop variables. When it finds a pixel who's colour is MY_COLOR, it will move the mouse to that position and then stop.
Code: Select all
Let>XStart=10
Let>XStop=30
Let>YStart=10
Let>YStop=30
Let>MY_COLOR=12632256
Let>x=XStart
Repeat>x
Let>y=YStart
Repeat>y
GetPixelColor>x,y,color
If>color=MY_COLOR
MouseMove>x,y
Goto>end
Endif
Let>y=y+1
Until>y>YStop
Let>x=x+1
Until>x>XStop
Label>end
Define the first 5 variables for the dimensions and colour you want it to stop at.
If you want it to go to all occurrences of that colour then remove the Goto>end line (and replace with whatever other processing is required).
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sun Nov 25, 2007 11:43 am
what does that repeat function do?
how it works?
but atm it scans the screen diagonally..atleast it seems to me like that
Let>y=y+1
Let>x=x+1
u do these both .. so the both coordinates increase...
Code: Select all
XY1 X2 X3 X4 X5 X6 X7 X8 X9
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
the scanner moves like this ... X1-Y1 X2-Y2 X3-Y3 X4-Y4 X5-Y5 etc
but it doesnt check X1-Y2 or Y2-X7
or im wrong?
-
Me_again
- Automation Wizard
- Posts: 1101
- Joined: Fri Jan 07, 2005 5:55 pm
- Location: Somewhere else on the planet
Post
by Me_again » Sun Nov 25, 2007 1:46 pm
You're wrong. Look where the pairs of repeat/until statements are in the sequence. The y loop from repeat>y to until>y is inside the x loop, so the program will set the x value and run through all the y values before incrementing the x value again.
-
Me_again
- Automation Wizard
- Posts: 1101
- Joined: Fri Jan 07, 2005 5:55 pm
- Location: Somewhere else on the planet
Post
by Me_again » Sun Nov 25, 2007 1:57 pm
You can always use MessageModal> (MDL>) to display values when testing. e.g.
Code: Select all
Let>XStart=10
Let>XStop=15
Let>YStart=10
Let>YStop=15
Let>x=XStart
Repeat>x
Let>y=YStart
Repeat>y
MDL>x value = %x% y value = %y%
Let>y=y+1
Until>y>YStop
Let>x=x+1
Until>x>XStop
Label>end
-
Char
- Newbie
- Posts: 7
- Joined: Sat Nov 24, 2007 4:59 pm
Post
by Char » Sun Nov 25, 2007 2:08 pm
but how long does the scanning take for ..umm for example
1024*768 screen
-
Rain
- Automation Wizard
- Posts: 550
- Joined: Tue Aug 09, 2005 5:02 pm
-
Contact:
Post
by Rain » Sun Nov 25, 2007 4:16 pm
Char wrote:but how long does the scanning take for ..umm for example
1024*768 screen
It took 73 seconds on mine but it depends on your system.
This script will tell you how long it took to scan a 1024x768 area.
Code: Select all
Let>XStart=0
Let>XStop=1024
Let>YStart=0
Let>YStop=768
Let>x=XStart
VBSTART
VBEND
VBEval>Timer,timerStarted
Repeat>x
Let>y=YStart
Repeat>y
Let>y=y+1
Until>y>YStop
Let>x=x+1
Until>x>XStop
Label>end
VBEval>Timer-%timerStarted%,timeElapsed
mdl>Scan took %timeElapsed% seconds