Virtual Hypnotist’s scripts use a fairly simple programming language developed by me, which is known as the Virtual Hypnotist Interactive Scripting Language (ISL). This scripting system is a greatly enhanced version of the one used in Hypnotizer 2000.
Here's some key tips:
Index:
Speak command
YesNo command
GetKey and KeyBuffer commands
GetText command
GetVoice and VoiceBuffer commands
Goto command
GotoLabel command
Labels for the Goto command
WatchKey command
User and System Variables
Set command
Change command
Inline math (replaces old Calc and Rand commands)
If statement
CharH command
CharV command
CharZoom, VidZoom, and VisZoom commands
CharCenter statement
Anim command
BackRate, CustRate, and VidRate commands
Sound command
Load command
Run command
LoadRun command
Call command
LoadCall command
Pause command
BackVol, CustVol, and VidVol commands
ToneVol command
MaskVol command
ToneFreq command
ToneType command
BackBal, CustBal, and VidBal commands
BackFile, CustFile, and VidFile commands
BackStat, CustStat, and VidStat commands
LoadVars command
SaveVars command
Flashers command
ShowImage command
Beep command
Print command
Abs command
Format command
SubCycleTime, SubCycles, and SubDuration commands
FlasherShape command
SubOn and SubOff commands
End statement
Stop statement
Exit statement
Start metacommand
Ack metacommand
Error metacommand
Transmit metacommand
Cancel metacommand
Comment Markers
Commands/Statements versus Metacommands
Values for the Key variable
When you want the program to speak a phrase, start
a line with the command <speak>.
For example, to say the phrase "hello world",
you would create this line of text:
<speak> hello world
The built-in Microsoft Agent speech system has its own commands also (please note that Virtual Hypnotist simply passes these commands onto Microsoft Agent, and does not actually process them). These commands can only be used on lines that use the speak command. Here's some of them:
\Chr="type"\ modifies the character of the voice
\Chr="Normal"\My name is Genie for normal speech (default)
\Chr="Monotone"\My name is Genie for monotone speech
\Chr="Whisper"\My name is Genie for whispered speech
\Ctx="type"\ modifies the context of the speech
Call me at \Ctx="Address"\555-1212 for addresses and phone numbers
My email is \Chr="Email"\oops@aol.com for electronic mail
This is \Chr="Unknown"\ unknown context (default)
\Emp\ emphasizes the next word
Hello \Emp\Hello Hello
\Lst\
repeats the last spoken statement
\Map="spokentext"="balloontext"\
maps the spoken text to display the balloon text
\Mrk=number\ defines a bookmark in the spoken text
\Pau=number\ pauses for the specified number of
milliseconds (range: 10-2250)
\Pit=[+/-]number\ sets the baseline pitch in Hertz
(range: 50-400)
\Rst\ resets all tags to the default
\Spd=[+/-]number\ sets the baseline average speaking
rate in words per minute (range: 50-250)
\Vol=[+/-]number\ sets the baseline volume (range:
1-65535)
So, to pause for 2 seconds in the middle of the phrase "hello world", you would type:
<speak> hello \pau=1000\ world
The Pit,
Spd, and Vol commands support relative offsets,
and also resetting to default values.
To raise the voice pitch by 10hz, between the phrase "hello world",
you would type:
<speak> hello \pit=+10\ world
To reset the pitch to the original value (set in the session configuration window), type:
<speak> hello \pit=0\ world
Also remember that there might be a small pause after the spoken line of text, because the software waits for the speech system to declare it's done speaking before continuing.
When you click Speak in the Script Maker, you get presented with this dialog:
You simply type the text that you want spoken into the text box.
The YesNo command will pop up a question
box with the buttons Yes and No.
So, if you want the user to answer the question
"Do you like this script?" you would type:
<yesno> Do you like this script?
Their result is then stored in the variable yesno. Read the section on User and System Variables and also IF statements for more info on this.
Here's the Script Maker's dialog for the YesNo command:
3. GetKey and KeyBuffer statements
The GetKey statement will wait for a user to type in a key, and will then store the value in the key variable.
So, to have the program say "Press any key" and for it to wait for a keypress, type this:<speak> Press any key
<getkey>The KeyBuffer statement will enable key detection, until GetKey is given, and will not wait for user input.
This is if you don't want getkey to wait, but instead want to get the input during other commands.
Make sure that you include a pause between KeyBuffer and GetKey, since it won't pause at all for you. So, like the above example:<keybuffer>
<speak> Press any key \Pau=4000\
<getkey>That code will turn on key detection at <keybuffer>. Then the phrase will be spoken, but will also include a 4 second pause. The <getkey> command will then stop key detection, and store the name of the pressed key in the key variable. See the section on User and System Variables and also IF statements on information on how to work with the result.
The GetText command will pop up a text box window, and will allow the user to type in some text and click the OK button when finished (or press enter). The text will then be stored in the text variable. Read the section on User and System Variables and also IF statements for more info on this.
So, to have the program say "What is your name?" and for a text box to pop up, type this:
<speak> What is your name?
<gettext>
5. GetVoice and VoiceBuffer statements
The GetVoice statement will turn listening mode (speech recognition) on if it is available, and will wait for a user to say something into their microphone. The word(s) spoken by the user are stored into the voice variable.
So, for the program to ask the user their name, type this:
<speak> What is your name?
<getvoice>The VoiceBuffer statement will enable voice recognition, and then will save what the person said at the <getvoice> command. This is usually more reliable.
So to do the same as above (ask for the name), type this:
<voicebuffer>
<speak> What is your name?
<getvoice>Note – it’s highly recommended to ask the system if speech recognition is enabled before using these statements. See the section on User and System Variables and also IF statements for more info on how to do this, and also how to get the result of the GetVoice statement.
The goto command will tell the program to jump to a specified line in the script file. There are 3 types of uses:
Usage: <goto> [+/-]number
To go to line 4 in the file, type this:
<goto> 4
To go 2 lines back, type this:
<goto> -2
To go 2 lines forward, type this:
<goto> +2
Here's the Script Maker's Goto dialog:
Instead of using absolute or relative line numbers like the Goto command, the GotoLabel command goes to a specified text label.
Usage: <gotolabel> label
The label value is a defined label in the script. In the next section, I describe how to create a label called Mylabel. To make the script go to the label Mylabel, simply type:
<gotolabel> mylabel
Labels for the GotoLabel command
Usage: labelname:
To create a label that the GotoLabel command can reference, simply pick a name for the label and put a semicolon after it (all on a blank line) like this:
Mylabel:
This command turns on key detection, to determine if a key is pressed or released.
Usage: <watchkey> key
Look in the last section of this page for values for the key variable.
So, to turn on detection for the spacebar, you would type:<watchkey> Space
Now you can use the KeyPressed variable to get the result. See the section on User and System Variables and also IF statements for more info.
There are 256 user variables available (named 0 to 255). They start out blank, and can be used to store text and numbers. These next sections describe how to use them. There are also numerous system variables, and are listed here:
---System variables---
Name – contains the user’s name, which they typed into VH when it was first run.
Usage: %name%Age – contains the user's age, which they chose when VH was first run.
Usage: %age%
Gender – contains the user’s gender, which they chose when VH was first run.
Usage: %gender%
Trigger – contains the user’s preferred induction trigger word.
Usage: %trigger%
Key - contains the name of the key pressed from the GetKey statement; look at this section below for the returned values.
Usage: %key%YesNo - contains status of the YesNo command; values returned are either “yes” or “no”.
Usage: %yesno%Text - contains the text that was entered by the user from the GetText statement.
Usage: %text%Voice - contains the text that was spoken by the user from the GetVoice statement.
Usage: %voice%KeyPressed - returns the status of the key declared by the WatchKey command; values are either “true” or “false”.
Usage: %keypressed%Speech - returns the status of the speech system; value is “true” if the speech system is enabled, and “false” if it is disabled. Please note that if the speech system is disabled, Speak commands will still be processed, but will appear as text messages instead of spoken text.
Usage: %speech%SpeechRec - returns the status of the speech recognition system; value is “true” if speech recognition is enabled, and “false” if it is disabled.
Usage: %speechrec%BackDuration - contains the length of the loaded background audio file in seconds
Usage: %backduration%BackPosition - contains the location in seconds of the currently loaded background audio file
Usage: %backposition%BackVol - contains the volume level of the background audio.
Usage: %backvol%BackBal - contains the balance value of the background audio.
Usage: %backbal%BackRate - contains the playback rate of the background audio.
Usage: %backrate%BackFile - contains the filename or URL of the background audio
Usage: %backfile%CustDuration - contains the length of the loaded custom audio file in seconds
Usage: %custduration%CustPosition - contains the location in seconds of the currently loaded custom audio file
Usage: %custposition%CustVol - contains the volume level of the custom audio.
Usage: %custvol%CustBal - contains the balance value of the custom audio.
Usage: %custbal%CustRate - contains the playback rate of the custom audio.
Usage: %custrate%CustFile - contains the filename or URL of the custom audio
Usage: %custfile%VidDuration - contains the length of the loaded video file in seconds, or the total number of frames in the loaded flash animation
Usage: %vidduration%VidPosition - contains the location in seconds of the currently loaded video file, or the current frame number of the loaded flash animation
Usage: %vidposition%VidVol - contains the volume level of the video. Does not work on flash animations.
Usage: %vidvol%VidBal - contains the balance value of the video. Does not work on flash animations.
Usage: %vidbal%VidRate - contains the playback rate of the video. Does not work on flash animations.
Usage: %vidrate%VidFile - contains the filename or URL of the video or flash animation
Usage: %vidfile%ToneVol - contains the volume level of the brainwave synchronizer's tones.
Usage: %tonevol%MaskVol - contains the volume level of the brainwave synchronizer's background mask.
Usage: %maskvol%ToneFreq1 - contains the frequency value of the brainwave synchronizer's first tone.
Usage: %tonefreq1%ToneFreq2 - contains the frequency value of the brainwave synchronizer's second tone.
Usage: %tonefreq2%Date - contains the system's date
Usage: %date%Time - contains the system's time
Usage: %time%ElapsedTime - contains the amount of time in seconds that the session has been running for
Usage: %elapsedtime%LineNum - contains the current script line number that is being processed
Usage: %linenum%CharName - contains the name of the currently loaded animated character
Usage: %charname%Brainwave - returns true or false depending on if the brainwave generator system is enabled or not.
Usage: %brainwave%Version - returns the version number of the program
Usage: %version%
For version 5.51 (5.5.1.670), it would return 5.51.VersionMajor - returns the major version number of the program
Usage: %versionmajor%
For version 5.51, it would return 5.VersionMinor - returns the minor version number of the program
Usage: %versionminor%
For version 5.51, it would return 5.VersionRevision - returns the revision version number of the program
Usage: %versionrevision%
For version 5.51, it would return 1.VersionBuild - returns the build number of the program
Usage: %versionbuild%
For version 5.51, it would return 670.
---Using variables in scripts---
Values of each variable can be returned by using percent signs; the percent signs would mean "contents of":
Usage: %variable%
What happens is that before each line is run, the script preprocessor looks over it and changes all of the variable values marked with the percent signs (like %name% or %2%) to their actual values, and then runs the command (so these can be used in any command).
So %2% would be described as "contents of user variable 2"
To speak the value of user variable 2, you would type this:
<speak> %2%
That's how it would look in the script, but if variable 2 was set to the phrase "Hello World", to the script processor it'll look like this:
<speak> Hello World
This is because it temporarily changes "%2%" to "Hello World".
To place the variable in a sentence, type this:
<speak> Variable two contains the value %2%.
That will speak "Variable two contains the value Hello World."
You can also use these variables with any of the commands in this program. For example, to see if variable 2 equals variable 5, you would type:<if> %2% = %5%
(the IF statements are explained in this section)
To use system variables, the same method is used as above, except the variable name is used instead:
<speak> Hello, %name%, how are you doing? Your gender is %gender%.
You add variables by clicking on the Insert menu in the Script Maker, and clicking Variable, and choosing the variable you want to add. You simply choose the variable, and it will add the percent signs around it.
Here's the Script Maker dialog box for inserting User variables:
This command stores information into a user variable.
Usage: <set variable> data
The variable parameter refers to the variable number to store data into, and data is the text, numbers, or the name of a nother variable you want to store into the variable.
To store the phrase “Hello World” into variable #2, type this:
<set 2> Hello World
To store the contents of the Name variable into variable #2, type this:
<set 2> %name%
To store the contents of variable 5 into variable 2, type:
<set 2> %5%
Here is the Script Maker's dialog for the Set command. You select the variable number using the slider, and type the text into the text box.
If you choose the Set (to variable) menu item in the Script Maker, you will choose the variable number, and then will be presented with a list of variable names to choose from.
Changes the user variables (Name, Age, Gender and Trigger) temporarily (while VH is running, not permanently).
Usage: <change uservariable> newvalue
To change the user's name to Mike, you would type:
<change name> Mike
Arithmetic operations can be performed on any line, with numbers, user variables, strings, etc. This command replaces the old Calc and Rand commands.
Usage: (value1 operation value2)
Math operations are:
addition (+)
subtraction (-)
division (/)
multiplication (*)
modulus (&) - returns the remainder after dividing 2 numbers
random number (@) - returns a random number between the first and second specified numbersand boolean operations are:
equals (=)
does not equal (!)
is greater than (>)
is less than (<)
is like (~)The Is Like (~) operator compares two strings, and returns true or false if they are at least 50% (if the first string has an even number of characters) or 60% (if it has an odd number) alike. So this would return false:
<print> (hello ~ goodbye)
But this would return true (the sequence 'hel' matches in both):
<print> (hello ~ help)
To add 5 to user variable 30 in the Speak command for example (result is temporary), you would type:
<speak> (%30% + 5)
To multiply the age variable by 10, and to store the result in variable 3, you would use the Set command:
<set 3> (%age% * 10)
When using boolean operations, the result will be either true or false. So if you typed:
<speak> (4 > 5)
The system would say "false", because 4 is less than 5.
To speak a random number from 1 to 10, you would type:
<speak> (1 @ 10)
The IF statement is used to check the values of variables. There are 4 operations that can be used: = (equals), < (less than), > (greater than), or ! (is not). The line after the IF statement will be run if the IF statement is true, and the second line after will be run if it is false. The second line (false line) will be skipped if the statement is true. This command uses the boolean operation code from the intrinsic math function (shown above) and works in a similar manner.
Usage:
<if> firstvalue operation secondvalue
True line
False lineTo see if variable 6 equals the phrase "Hello", to go to line 2 if it does, and to go to line 3 if it does not, you would type this:
<if> %6% = Hello
<goto> 2
<goto> 3Another thing you can do is use user and system variables as regular variables:
<if> %3% = %name%
<speak> Hello, %name%and also:
<if> %3% = %5%
<speak> %3% equals %5%The above top line would be read as "If variable 3 equals variable 5, then...".
Math (from section 13 above) can also be used, since it can be used on any line:
<if> (%3% + 12) = (%2% / 16)
<goto> 2To goto line 2 if a random number between 3 and 8 equals 5, you would type:
<if> (3 @ 8) = 5
<goto> 2
Moves the visible character horizontally (the character must be enabled for this to work).
Usage: <charh> [+/-] percentage
Examples:
<charh> 15 (moves to 15% of the screen)
<charh> -15 (moves left 15%)
<charh> +15 (moves right 15%)
Moves the visible character vertically (the character must be enabled for this to work).
Usage: <charv> [+/-] percentage
Examples:
<charv> 15 (moves to 15% of the screen)
<charv> -15 (moves down 15%)
<charv> +15 (moves up 15%)
17. CharZoom, VidZoom, and VisZoom commands
CharZoom makes the visible character larger or smaller by percent of the current size; VidZoom changes the size of the video or flash animation, and VisZoom changes the size of the custom visuals.
Usage:
<charzoom> percent
<vidzoom> percent
<viszoom> percentExamples:
<charzoom> 15 (makes character 15% of the current size)
<charzoom> 200 (makes character 2x, or 200% bigger)
Centers the visible character on the screen.
Usage: <charcenter>
Animates the current character with a specified animation.
Usage: <anim> name, soundeffectsFor example, if the loaded character has an animation called "write", you would type:
<anim> write, true
Here's the animation list box available in the Script Maker:
20. BackRate, CustRate, and VidRate commands
BackRate (previously called AudRate) changes the speed of the background audio, CustRate changes the speed of the custom audio, and VidRate changes the speed of the video (doesn't work on Flash animations); by percentage of the default (original) speed.
Usage:
<backrate> percentage
<custrate> percentage
<vidrate> percentageExample (sets video to speed 200%):
<vidrate> 200
Plays a sound file located in either the "sounds" directory, or a URL.
Usage: <sound> filename[, wait[, balance]]
Example: to play the sound snap.wav in VH’s “sounds” directory, you would type this:
<sound> snap.wav
To play the sound located at the URL http://www.mysite.com/snap.mp3, you would type this:
<sound> http://www.mysite.com/snap.mp3
The wait parameter is optional; the only accepted value for it is “1” – when wait is 1, the command will wait until the sound is finished playing before continuing to the next command; otherwise the sound will play and other commands will run while it’s playing.
So to play the snap.wav file, and wait for it to finish, you would type this:<sound> snap.wav, 1
The balance parameter is also optional, but if you use it, you must also include the wait parameter. The values are either a negative percentage (for left), or a positive percentage (for right). If balance is 0, the sound plays in the center; and if the balance parameter is not specified, the balance is automatically 0.
So to play the snap.wav file, to not wait for it to finish, and to play it on the left speaker, you would type:
<sound> snap.wav, 0, -100
In the Script Maker, you can easily set up this command by selecting a sound file:
Loads a script into memory, and replaces any script that’s already loaded in that section
Note – with this command you can’t load something into the same category as the running script (i.e. load an induction file during a running induction)Usage: <load section> filename
Section is one of these (these are originally set in the “Choose Components” window):
1=Induction
2=Deepener
3=Suggestions
4=Wakening
5=Subliminals
6=Custom (mainly used for remote sessions)
7=Interactive (cannot be used with this command)
8=Dynamic (cannot be used with this command - used only by LoadCall command)Filename is the name or URL of the new script; the program will automatically look in the correct directory for it.
So to load the script called “newscript.txt” which is in the Deepener section, you would type this:<load 2> newscript.txt
To load the script at the URL http://www.mywebsite.com/script.txt which is in the Deepener section, you would type this:
<load 2> http://www.mywebsite.com/script.txt
To have the deepener run, either the program needs to be currently running an induction file (so that the next script is the deepener), or the Run command needs to be used.
Runs a different section, completely exiting the current one.
Usage: <run> section[, linenum]Section is one of these (these are originally set in the “Choose Components” window):
1=Induction
2=Deepener
3=Suggestions
4=Wakening
5=Subliminals (cannot be used with this command)
6=Custom (mainly used for remote sessions)
7=Interactive (cannot be used with this command)
8=Dynamic (cannot be used with this command - used only by LoadCall command)So to stop the current script and run the pre-selected script in the Suggestions section, you would type this:
<run> 3
To run the same script as above, but start it at line 10, you would type:
<run> 3, 10
Load and Run commands combined - supports URLs
Note – with this command you can’t load something into the same category as the running scriptUsage: <loadrun section> filename[, linenum]
Section is one of these (these are originally set in the “Choose Components” window):
1=Induction
2=Deepener
3=Suggestions
4=Wakening
5=Subliminals (cannot be used with this command)
6=Custom (mainly used for remote sessions)
7=Interactive (cannot be used with this command)
8=Dynamic (cannot be used with this command - used only by LoadCall command)So to load a script called “newscript.txt” in the Deepener section, and then exit the current script and run the Deepener, you would type this:
<loadrun 2> newscript.txt
To load and run the script above, but to start on line 10, you would type:
<loadrun 2> newscript.txt, 10
Similar to the Run command, but pauses the current script and returns back to the position where the script was called (after the called script finishes).
Usage: <call> section[, linenum]
Section is one of these (these are originally set in the “Choose Components” window):
1=Induction
2=Deepener
3=Suggestions
4=Wakening
5=Subliminals (cannot be used with this command)
6=Custom (mainly used for remote sessions)
7=Interactive (cannot be used with this command)
8=Dynamic (cannot be used with this command - used only by LoadCall command)So to pause the current script and run the pre-selected script in the Suggestions section, you would type this:
<call> 3
To run the same script as above, but start it at line 10, you would type:
<call> 3, 10
Loads a script into a dynamic script buffer (section 8), and supports full script recursion.
Usage: <loadcall> directory/filename, [linenum]
Note – this command allows you to use any of the VH script sections, by specifying the directory or URL that the script is in.
So to run a script called “newscript.txt” in the inductions section, and then return to the current script, you would type this:<loadcall> inductions/newscript.txt
To do the same as above, but to start on line 10, you would type:
<loadcall> inductions/newscript.txt, 10
To load the script at http://www.mywebsite.com/script.txt and start on line 10, you would type:
<loadcall> http://www.mywebsite.com/script.txt, 10
Then, inside the loaded script you can call another script using the loadcall command, which will run and then return, and then the loaded script will return to the original main script.
Pauses for a specified amount of time.
Usage: <pause> milliseconds
So to pause the script for 3 seconds, you would type:
<pause> 3000
28. BackVol, CustVol, and VidVol commands
BackVol sets the background volume, CustVol sets the custom audio volume (custom audio file or the file played by the Sound command), and VidVol sets the video volume (doesn't work on Flash animations).
Note – the values are between –5000 and 0, 0 being the loudestUsage:
<backvol> value
<custvol> value
<vidvol> value
Sets the volume level of the brainwave generator’s tones.
Usage: <tonevol> value
Note – values are between –5000 and 0 (0 being loudest)
Sets the volume level of the brainwave generator’s mask (background sound).
Usage: <maskvol> value
Note – values are between –6000 and 0 (0 being loudest)
Sets the frequency of one of the brainwave generator’s tone generators.
Usage: <tonefreq tonenum> frequency
So to change tone 1’s frequency to 1000hz, you would type:
<tonefreq 1> 1000
Sets the wave type of one of the brainwave generator’s tones.
Usage: <tonetype tonenum> typenum
Typenum is either 1 for sine waves, 2 for square waves, 3 for triangle waves, or 4 for sawtooth waves. To change tone 1’s type to triangle, you would type:
<tonetype 1> 3
33. BackBal, CustBal, and VidBal commands
These change the balance of the audio. BackBal changes the background audio, CustBal changes the custom audio, and VidBal changes the video's audio. Value is from -100 to 100 (left to right). VidBal doesn't work on Flash animations.
Usage:
<backbal> value
<custbal> value
<vidbal> valueSo to have the background audio play in the left ear only, you would type:
<backbal> -100
34. BackFile, CustFile, and VidFile commands
These load new media files. BackFile loads a new background audio file, CustFile loads a new custom audio file, and VidFile loads a new video or Flash animation file. URLs can be used too. BackFile and CustFile get their files from the "audio" directory while VidFile get it's file from the "videos" directory.
Usage:
<backfile> filename
<custfile> filename
<vidfile> filenameTo load the video file "candle.avi", you would type:
<vidfile> candle.avi
To load the video file located at http://www.mysite.com/candle.avi, you would type:
<vidfile> http://www.mysite.com/candle.avi
35. BackStat, CustStat, and VidStat commands
These set general parameters of the media components. BackStat changes the parameters of the background audio, CustStat changes the parameters of the custom audio, and VidStat changes the parameters of the video or Flash animation. There are variables available that return the length and position of the media files (see the sections on User and System Variables and IF statements for more info)
There are 5 total commands available: loop, pause, show, hide, and play:
Loop: plays the media file in looping mode
Pause: pauses the media file
Show: displays the video (vidstat command only)
Hide: hides the video (vidstat command only)
Play: plays the file normally in non-loop modeUsage:
<backstat> [loop/pause/play]
<custstat> [loop/pause/play]
<vidstat> [loop/pause/show/hide/play]So to pause the video, you would type:
<vidstat> pause
The LoadVars command allows a script to load user variables that have been saved with the SaveVars command. The variables are stored in sections according to the script filename in the file vars.ini.
Usage: <loadvars> [number or true/false]
The number parameter specifies the variable number (0-255) to load. If this parameter is omitted, all the saved variables are loaded - in this case, either "true" or "false" can be specified to tell the system if it should overwrite all currently loaded user variables even if there's not a saved value for them (this defaults to false).
So to load variable 50, you would type:
<loadvars> 50
To load all variables for the script, you would type:
<loadvars>
or
<loadvars> falseTo load all variables for the script, and overwrite all loaded variables, you would type:
<loadvars> true
The SaveVars command allows a script to save user variables into a built-in datafile for later use. The variables are stored in sections according to the script filename in the file vars.ini.
Usage: <savevars> [number]
The number parameter specifies the variable number (0-255) to save. If this parameter is omitted, all the currently used (non-empty) variables are saved.
So to save variable 50, you would type:
<savevars> 50
The Flashers command changes the size and status of the brainwave generator's flasher bars. The flashers must be enabled beforehand in order for this command to work.
Usage: <flashers> on/off/stop/[+/-]percent
There are six types of parameters that can be used with this. The on parameter makes the flashers visible and starts the flashing. The off parameter stops the flashing and hides the flashers. The stop parameter stops the flashing but keeps the flashers visible. Then to resize the flashers, the percent parameter is used; either enter an absolute percent size to set them to, or use the + or - signs right before it to change their relative percentage size based on their current size.
To turn off the flashers, you would type:
<flashers> off
To increase the size of the flashers by 2 percent, you would type:
<flashers> +2
To set the flashers at a size of 2%, you would type:
<flashers> 2
The ShowImage command allows you to display an image while the session is running.
Usage: <showimage> filename, duration, horizposition, vertposition
The filename value should either be the name of an image file located in the "images" directory, or a URL. Duration is the amount of time in milliseconds the picture should be shown for. Horizposition and vertposition are the horizontal and vertical position that the picture should be shown at, in percent values.
So to display the image demo.gif for 3 seconds in the center of the screen, you would type:
<showimage> demo.gif, 3000, 50, 50
So to display the image http://www.mywebsite.com/demo.gif for 3 seconds in the center of the screen, you would type:
<showimage> http://www.mywebsite.com/demo.gif, 3000, 50, 50
The Beep command plays a tone at a specified frequency and duration (in milliseconds).
Usage: <beep> frequency, duration
To beep at a frequency of 1000hz for half a second, you would type:
<beep> 1000, 500
The Print command outputs text the script processor console, and if in a remote session, sends the text to the server machine.
Usage: <print> text
Text can be regular text, numbers, or user/system variables. For example, if the user's name is Mike, to print "User name: Mike", you would type:
<print> User name: %name%
The Abs command calculates the absolute value of a number, and stores the result in a variable.
Usage: <abs variable> number
Number is the number or variable name (surrounded with percent marks) to calculate, and variable is the destination variable to store the result. So to find the absolute value of variable 5, and to store the result in variable 6, type:
<abs 6> %5%
The Format command allows you to determine how a user variable is shown. It pipes the data into Visual Basic's Format() function and returns the result (some operations won't work due to the ISL syntax rules).
Usage: <format> variable, format
Variable is the user variable number to modify, and format specifies the textual format:
<set 1> = 17:04:23
<set 2> = January 27, 1993#Returns current system time in the system-defined long time format.
<format> 1, Long Time#Returns current system date in the system-defined long date format.
<format> 2, Long Date#Returns "17:4:23"
<format> 1, "h:m:s"
#Returns "05:04:23 PM"
<format> 1, "hh:mm:ss AMPM"#Returns "Wednesday, Jan 27 1993"
<format> 2, "dddd, mmm d yyyy"
44. SubCycleTime, SubCycles, and SubDuration commands
The SubCycleTime, SubCycles and SubDuration commands change the parameters of the popup subliminal messages.
SubCycleTime changes the message cycle time value, SubCycles changes the cycles per message value, and SubDuration changes the message duration value.Usage:
<subcycletime> [+/-] value
<subcycles> [+/-] value
<subduration> [+/-] value
Value is the number value to change the setting to, or the relative offset (if + or - symbols are used). So to change the duration value to 300 milliseconds, you would type:
<subduration> 300
To decrease the duration value by 10 milliseconds, you would type:
<subduration> -10
The FlasherShape command changes the shape of the flashers.
Usage: <flashershape> value
Values for this are numbers 0 through 5. They are:
0. Rectangle
1. Square
2. Oval
3. Circle
4. Rounded rectangle
5. Rounded squareTo change the flashers to ovals, you would type:
<flashershape> 2
The SubOn and SubOff commands turn on and off the subliminal message systems.
Usage:
<subon> value
<suboff> valueValue is the system to turn on/off:
1. Standard popup subliminals
2. Phrase flasher subliminalsSo to turn off the phrase flasher subliminals, you would type:
<suboff> 2
To tell the program to exit the script, simply use this command:
<end>
Otherwise the script will automatically exit when it reaches the end.
Ends the entire local or remote session.
Note – this command is used in both local (normal) and remote sessionsUsage: <stop>
Exits the entire Virtual Hypnotist application.
Usage: <exit>
Starts a remote session.
Note – this command is only used to establish a remote session; this command must be sent from the server (controller) computer to the client in order for the client to accept any further commands. This command cannot be used in scripts.Usage: <start>
Used by the VH client machine during a remote session, as an acknowledgement response. The text after it is optional. This command cannot be used in scripts.
Usage: <ack> [text]
Sent by the VH client machine to the host during a remote session if an error has occurred. This command cannot be used in scripts.
Usage: <error> [description]
Used by the Remote Controller to send a script over the instant messenger. This command cannot be used in scripts, and cannot be used in group (chat room) sessions.
Usage: <transmit> filelength
Filelength is the total number of script lines to send.
Used by the Remote Controller to cancel the currently running script. This command cannot be used in scripts.
Usage: <cancel>
55. Ping and Pong metacommands
These are only available in a chat room. The Ping metacommand is sent by the client machine to the server machine, when the user selects it. The server machine then adds the user to it's connection list. The Pong command is sent back from the server machine after it gets a Ping command, to notify the client machine that it has added the client to the connection list.
Usage:
<ping> serversn
<pong> clientsnThe serversn value is the server machine's screenname. The clientsn value is the client machine's screenname.
This is only available in a chat room. The Drop metacommand is sent by the client machine to the server machine, if the client user deselects the server user. The server machine then removes the user from the connection list.
Usage: <drop> serversn
The serversn value is the server machine's screenname.
A comment marker is simply the character #. To make a comment, simply add it wherever you’d like. For example:
# this is a comment
The line will be skipped during script processing. In the Script Maker, the Insert Comment Marker menu item will insert this character. Blank lines will also be skipped. If a line contains a command, and a comment marker after it, such as this:
<speak> Hello #this speaks hello
The speak command will be processed, but the comment will be ignored.
58. Commands/Statements versus Metacommands
The difference between normal commands and metacommands are where they are located in the program’s code. Normal commands are in the Script Processor’s code (the file ScriptProcessor.bas), and metacommands are located outside the script processor, in sections that are called directly by HypnoChat’s code. Normal commands can only be used while the Script Processor is running, and normally other commands from the outside can’t be run if a script is currently running (it will only process the current script), unless it is in Interactive Mode (where it runs single commands one by one). Metacommands can be run at any time, and are usually used to start and stop the scripts themselves (a running script cannot be stopped unless the script exits, or if the user wants to end the session; the <cancel> metacommand can forcefully tell the script processor to exit the current script immediately).
59. Values for the "key" variable
The software stores a text value for the key pressed, into the key variable. Here's the values:
(These are not case sensitive)
ESC (can't be used because ESC returns to the main menu)
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
`
0
1
2
3
4
5
6
7
8
9
-
=
Backspace
CTRL
Left Windows Key
Right Windows Key
ALT
Menu Key
Shift
Enter
Space
\
]
[
'
;
/
.
,
Scroll Lock
Pause
Insert
Home
Page Up
Delete
Page Down
End
Up Arrow
Left Arrow
Right Arrow
Down Arrow
Keypad +
Keypad -
Keypad *
Keypad /
Numlock
Keypad 5
Keypad Middle
Tab
Caps Lock
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z