So, here it is, my new unofficial patch.
I hope you like or consider the new additions/commands/fixes as useful.
Please let me know if you run into any kind of problem with it!
Remark: To be on the safe side, download and install the last official (Non-Fury) build of Tease AI first.
Download - Current Build 0.54.9
viewtopic.php?f=26&t=19518
(In theory, it should work without that, at least for the personality I am working on, but you never know, for compatibility reasons it's better to install that first).
This patch is compatible to every script and personality except Fury, it's also compatible to scripts which uses commands from the sweet-patch.
Newest update:
Download Unofficial Patch 55.7.2b:
https://mega.nz/file/SVp1FRjb#HgMOatL0a ... zaATXFG_fs
Older versions (not needed to download, listed just for the sake of completeness):
- Spoiler: show
- Download Unofficial Patch 55.7.2:
https://mega.nz/file/vI4VXAwb#mcBrcrRgP ... CVqgD50Bxs
Markus
New in Unofficial Patch 55.7.2b:
- Spoiler: show
-
Patch 55.7.2b - Release notes
- Fixed 'Key phrases'
------------------------------
Script example:
Are you?
[yes] Good
[no] Too bad
[sorry] Ok, accepted
@DifferentAnswer Yes or no?
---> The output using that script example 3 times in a row:
02:54 Domme Name: Are you?
02:55 Sub Name: sure
02:55 Domme Name: Good
02:55 Domme Name: Are you?
02:55 Sub Name: nah
02:55 Domme Name: Too bad
02:55 Domme Name: Are you?
02:56 Sub Name: I excuse
02:56 Domme Name: Ok, accepted
Hint: A 'Key phrase' can only have up to 2 words, i.e.: 'of course', not more.
- Update for switch back to picture box
------------------------------
Sometimes TAI doesn't switch back to the picture box after a video was played, instead the mediaplayer is still there.
Added a 'first try' to get rid of that.
Only in a special case that try is implemented, so it still could happen.
Anyway, you can always use that button at the right bottom to switch back to the picture box manually.
- Update for @DisplayVideoTaunts(X,Y)
------------------------------
Simply changed the font color to white.
- Fixed 'maximize media window' together with 'side chat'
------------------------------
Quote from the forum:
Also, something I've noticed - the "maximize media window" keeps on showing the command/type bar at the bottom.
I use side chat, so I keep the "maximize media window" checked, but when I run the exe, the command bar is there at the bottom.
If I uncheck the "maximize media window" option, then check it again, it disappears until I shut down the program and start it again,
then it pops up once more until I uncheck and recheck the option again.
Not really something program-breaking, but it is kind of annoying, so I thought you might want to know about that.
- Fixed 'Chat Window Color'
------------------------------
Changing the color will now take effect immediately, not only when you type something.
That color will be also set at the programm start and when you load a saved theme.
- Mark a video - PageUp-Key in the videolog.txt
------------------------------
Additionally to the information written automatically into the videolog, with the PageUp-Key, the video path will be inserted again plus " ---> MarkedVideo!".
That way you can find that video later on, i.e. if you want to cut/reencode/delete it or whatever.
Release notes Unofficial Patch 55.7.2 and the download links of the Beatmeters:
- Spoiler: show
-
Patch 55.7.2 - Release notes
New commands:
- @PlayCHC(X,Y)
------------------------------
X = Video genre (ALL,HARDCORE, and so on...)
Y = Playtime
I.e.:
@NullResponse @PlayCHC(ALL,#Random(5,8) minutes)
This does NOT play a CHC (Cock hero challange) video (!!!)
Instead it kinda generates one.
What it does, it playes a random video from the given video genre for a random time.
Then it plays another random video from the given video genre, (it jumps to a random position of that video) for a random time and so on until the playtime is over.
After around 30 seconds it plays additionally a random beatmeter from the folder TAI/Video/BeatMeter
If you just want to test this to get an impression, here is one single beatmeter for testing:
ForTestingOneBeatMeter.zip:
https://mega.nz/file/uJZgxIpL#V654LgbUS ... w1Jl-YsYp4
And here is a collection of beatmeters, 191 files, for easier downloading they are seperated in 8 packages,
each package can be unzipped individual:- Spoiler: show
-
BeatMeterPack01.zip:
https://mega.nz/file/nEgHVAYS#lbgePAj1b ... DDFSkklM0U
BeatMeterPack02.zip
https://mega.nz/file/adwBiKpT#9EULAKU4t ... lVEbg83Bqw
BeatMeterPack03.zip
https://mega.nz/file/nZxnzA7K#S2rM1KPhl ... XMP0InjPHQ
BeatMeterPack04.zip
https://mega.nz/file/6VgRwCyA#_dn7xxN32 ... wSy_Go1UNk
BeatMeterPack05.zip
https://mega.nz/file/PJoRmIIT#z1Z5shsYW ... 4qAVMxFSJE
BeatMeterPack06.zip
https://mega.nz/file/DZoFnQwK#eALFSh1Fm ... LntIWTubtY
BeatMeterPack07.zip
https://mega.nz/file/HIoXRSJC#YpMV8ZOqR ... WknwBZcasU
BeatMeterPack08.zip
https://mega.nz/file/rNwjkaRA#T_vxeiKYE ... K6aPV6cAeE
- @BeatMeter(X)
------------------------------
X = Time till the beatmeter starts
Don't use it together with @PlayCHC(X,Y)
This is meant to be combinate with @PlayVideo or @PlayVideoNoWait commands.
I.e.:
@NullResponse @PlayVideo @BeatMeter(30)
Or:
@NullResponse @PlayVideoNoWait(All) @BeatMeter(30)
(CheckIfVideoHasEnded)
@NullResponse @CheckPlayVideo @Goto(CheckIfVideoHasEnded)
(Video Ended)
...
- @BeatMeterStop
------------------------------
When a video ends, a playing beatmeter ends as well, so in most cases this command is not necessary.
Could maybe be used for @PlayVideoNoWait commands.
I.e.:
@NullResponse @PlayVideoNoWait(All) @BeatMeter(20)
@NullResponse @Wait(40)
No more beatmeter for you @BeatMeterStop
And no more video as well @StopVideo #Grin
- @DisplayVideoTaunts(X,Y)
------------------------------
X = Minimum value for the random time till the next taunt will be displayed
Y = Maximum value for the random time till the next taunt will be displayed
I.e.:
Let's watch a video @PlayVideo(softcore,5 Minutes) @BeatMeter(30) @DisplayVideoTaunts(50,120)
This will display a taunt line from these vocabulary files:
#SYS_TauntVideoBlowjob.txt
#SYS_TauntVideoFemdom.txt
#SYS_TauntVideoFemsub.txt
#SYS_TauntVideoGeneral.txt
#SYS_TauntVideoHardcore.txt
#SYS_TauntVideoLesbian.txt
#SYS_TauntVideoPlayCHC.txt
#SYS_TauntVideoSoftcore.txt
Since vocabulary files are located in the Scripts/YourPersonality - folder, they are not included in this patch,
you'd have to create them.
And because of the way they are displayed, you cannot use html tags like <i>example</i> in it, but you still
can use @FollowUp commands and flags.
- @SetSpecificDate(X,Y)
------------------------------
X = The name of your date variable
Y = The specific date
I.e.: @SetSpecificDate(myTestDate1, 12.09.2020 01:00:00)
Some more examples:
Quote from a forum post:
'Set a mark on 12th of September at 01:00' @SetSpecificDate(myTestDate1, 12.09.2020 01:00)
#Var[myTestDate1]
Set XMas @SetSpecificDate(myTestDate2xmas, 24.12.2020 00:00:01)
#Var[myTestDate2xmas]
With variables and Random
Type the early hour of the day! @InputVar[earlyHour]
Type the late hour of the day! @InputVar[lateHour]
@NullResponse @RapidCodeOn @SetVar[YourRandomHour]=[#Random(#Var[earlyHour],#Var[lateHour])]
@NullResponse @SetSpecificDate(myTestDate3, #Random(1,30).12.2020 #Var[YourRandomHour]:00)
#Var[myTestDate3]
- #CurrentHour #CurrentMinute #DayOfMonth #MonthOfYear
------------------------------
The #CurrentHour was already in former patches, it's listed in the headline for the sake of completeness.
I.e.:
It's the #DayOfMonth.#MonthOfYear.#CurrentYear
Time is #CurrentHour:#CurrentMinute
@NullResponse @RapidCodeOn @If[#MonthOfYear]==[9]Then(itsSeptember)
Sadly it's not September now ... @Goto(continueHere)
(itsSeptember)
Since we have September now ...
@NullResponse @RapidCodeOn @If[#CurrentMinute]>=[0]And[#CurrentMinute]<[10]Then(itsEarlyThatHour)
But it's not within the first 10 minutes of this hour @Goto(continueHere)
(itsEarlyThatHour)
And it's within the first 10 minutes of this hour @Goto(continueHere)
(continueHere)
...
Will produce this output:
02:03 Domme Name: It's the 11.9.2020
02:03 Domme Name: Time is 14:3
02:03 Domme Name: Since we have September now ...
02:03 Domme Name: And it's within the first 10 minutes of this hour
As you can see, there is the zero missing when using #CurrentMinute while it's lower than 10.
This is intended that way, because it's meant to be used within the @If command, like in the example above.
Btw.: These are already in TAI:
#CurrentTime
#CurrentDay
#CurrentMonth
#CurrentYear
#CurrentDate
- Audio volume control for played beatmeters ... Numpad 1 (raise volume) and numpad 3 (lower volume)
------------------------------
That is to control the volume of the beatmeters.
The changed volume will be displayed in the top- left corner for some seconds.
- Edited Writing Task Label
------------------------------
Now it's a bit bigger, has another and bigger Font.
------------------------------
Some updates:
------------------------------
------------------------------
------------------------------
- Update for Images loading from the Web (timeouts):
------------------------------
TAI will now show a random local picture instead of the 'Error Loading Image'-picture.
So the timeout values are set back to the original values (they were edited in former patch versions).
- Update for @DommeAvatarTemp[X]
------------------------------
With patch 55.7.0 it was only possible to use a specific path to a specific picture.
With this update, now you can use wildcards, i.e.:
@DommeAvatarTemp[marAva2domme\firstDomme\*.jpg]
- Update for HttpWebRequest (SecurityProtocol)
------------------------------
An error occurred when TAI tried to show a blog image:
'The request was aborted: Could not create SSL/TLS secure channel.'
That's because the SecurityProtocol which TAI was using is outdated, now it uses 'TLS1.2'
- Update for .NET framework
------------------------------
TAI now uses the .NET framework 4.7.1
That was necessary for the HttpWebRequest-Update.
So, if you don't have '.NET framework 4.7.1' (or an even newer version) installed, you have to update your .NET framework to (at least) the version 4.7.1
- Audio volume for videos
------------------------------
In older versions the initial volume of the video player was set to the default value of 50.
To me, that was always too loud (compared to the volume of the metronome or other sound-files).
Now the initial volume of the video player is set to the start value of 15.
- Audio volume control for videos ... Numpad + and numpad -
------------------------------
Now you can change the audio volume of a playing video with these 2 keys on your keyboard.
The changed volume will be displayed in the top- left corner for some seconds.
- Update for 'Note down picture paths - PageDown-Key'
------------------------------
It notes down the path of the picture only if it's not from the URL-files.
If it is from an URL-file then it will remove the picture from the URL-file.
- Update for Random number generator
------------------------------
There was a small chance for an error message, fixed.
#################################################################################################################
#################################################################################################################
#################################################################################################################
#################################################################################################################
#################################################################################################################
Patch 55.7.0 - Release notes
It is still based on patch 55.3, includes everything from Patch 55.3, 55.3b, 55.4 and 55.5
Confused about the version numbers?
This has the version number 55.7 and it's finished in January 2020.
Then there is the Sweet-Patch 56.2 (higher version number, but released earlier, january 2019).
The reason for those differences between the version numbers is the source-code on which these patches are built on.
Mine is based on 55.3, the sweet-patch is based on 56.0.
I have the impression that the patch 56.0 was never communicated to the audience here on the Milovana-Forum,
so I have never looked at it before I started with this patch.
After I looked up the changelog for 56.0, I have decided that it would not worth the effort to rebuilt all
my additions anew based on it. So this has the 55.3 version as a base for this patch.
Why this patch?
For the project 'Webtease to TAI' which I am working on I needed the @MetronomeLimit(X) command back.
(In webteases you have often the case that you have to stroke for X-times.)
This was missing in the Sweet-Patch, but the major personalities were already using it.
To keep the compatibility for scripts written for the sweet-patch,
this patch has implemented (recreated on my own since the source code of the sweet-patch was not available at that time)
some of the commands which came with it.
Well, and then, while I was at it, ... I just had the one or other idea which is now implemented as well.
Own additions first:
- Rebuilt metronome for @Metronome commands:
------------------------------
In my past patches the metronome I have used for all those @Metronome commands was not implemented very well,
... mea culpa, ... it could have 'stuttered'.
I have completly reworked that, now it should work at least as good as the original metronome from TAI.
It also respects a pause (when you open the options), let's say you have 20 strokes to do (using the @MetronomeLimit(X) command)
after 5 done you open options,... have the pause,... when you close the options, you still have 15 left to do.
- Rebuilt @PlayAudio[X]
------------------------------
Every audio file is played by a new instance of the windows media player.
So now you have 2 media players, the first (old/original) plays videos and gifs, but not the audio files anymore.
And the second (new one) plays audios only.
This has the effect that you can play a video (or gif) and at the same time an audio.
That is what was done in the sweet-patch with the @PlayAudioNoWait[X], but there was a possible conflict:
Audio file 1 @PlayAudioNoWait[tease\Tri\sound3.mp3]
Audio file 2 @PlayAudio[tease\Tri\sound2.mp3]
---> You would have end up with 2 files playing at the same time, and with some bad luck, it could have happened
that while both playing the stroke-taunts could start. I once had that situation.
Now you have only one media player that plays audios, it cannot happen anymore that 2 files playing at the same time.
Playing one sound stops the sound which was started before (if it's still running).
Another positive effect is that you can change the volume of a video without that it takes effect on the volume the soundfiles are played with.
- Safety for @Metronome commands and audio-files:
------------------------------
The metronome and also a playing audio will stop automatically when these commands are given:
- Any Edge command
- @StartStroking
- @End
This is to prevent to collide with the standard metronome, even if you forget to use the @MetronomeOff command.
- The display of .gif files:
------------------------------
Finally, the display of gifs should work perfectly now.
They are displayed streched to fit the screen, they should not stutter or freeze anymore.
Also that jumping back to a previous shown picture (gif), then again forth to the new one (do you know what I mean?)
should be gone for good.
- Responses deactivated for tasks: @CBT, @CBTBalls, @CBTCock and @CustomTask(X):
------------------------------
If you have a large amount of response-files, then it can slow down the commands above a lot.
I.e.: I have 378 response files, so it takes nearly 30 seconds from the moment I type an answer like 'done' after a CBT-Line was given
till the moment the domme starts to type again.
That is because in that moment TAI is looking through all the response-files.
Now it skips that check while these commands are running.
- @PlayVideoNoWait[X]
------------------------------
X = A specific path, the base path is the TAI/Video-folder.
Inspired, of course, by the @PlayVideoNoWait(X) command from the Sweet-Patch.
I.e.:
Time for another webcam show @PlayVideoNoWait[AV_Clips/cam/webcamshow07.mp4]
You still could use 'wildcard characters', i.e.:
Time for another webcam show @PlayVideoNoWait[AV_Clips/cam/*.*]
The script will continue running like it does when using the @PlayVideoNoWait(X) command.
- @DommeNameTemp(X)
------------------------------
I.e.:
@NullResponse @DommeNameTemp(Emma)
This changes ONLY the name of the domme, nothing else. -> This is important, ... you have to deal with the pictures are shown
on your own, ... means you would have to display a picture, lock it, let her type text... unlock it, show the next picture and so on.
That is made with 'Webtease to TAI' in mind.
There you can have the pictures of the webtease be shown all the time, ... here is an example of how it could look like:
@Stroking #StopStroking @StopStroking
(0001)
Well hello there my little strokepets. @ShowImage[wttai\Eat-it-4-Emma\start.jpg] @LockImages
@RapidCodeOn @NullResponse @UnlockImages
(0002)
As a Lady, I would normally introduce myself.@ShowImage[wttai\Eat-it-4-Emma\2.jpg] @LockImages
Bla bla...
@RapidCodeOn @NullResponse @UnlockImages
The pro on this is that you can deliver a script with a 'new' mistress, without that the user has to change any contacts or
other settings or such.
(In the past sometimes even the @SystemMessage command was 'misused' in some scripts to 'implement' a new mistress/contact,
this could be a better alternative to do that).
Adding the @NullResponse @DommeNameTemp(Emma) would make it look like that 'Emma' is the domme now.
(You will have a 'Emma is typing...' output as well).
The name of the original domme will be reseted when you use the '@DommeNameReset' command or when TAI is closing.
- @DommeNameReset
------------------------------
I.e.:
@NullResponse @DommeNameReset
Resets the original domme name when you have used @DommeNameTemp(X).
- @DommeAvatarTemp[X] and @DommeAvatarReset
------------------------------
X = A specific path, the base path is the TAI/Image-folder.
I.e.:
@DommeAvatarTemp[wttai\Eat-it-4-Emma\start.jpg]
It works like the @DommeNameTemp(X) and @DommeNameReset, just for the avatar picture.
- Two dommes in one picture
------------------------------
If you use picture sets showing 2 girls at once, now you can add a textfile to the picture set folder:
tai2dommesAtOnce.txt
TAI will check if that textfile is present in the current domme picture set folder,
if it is, it will set a tempflag named 'tai2dommesAtOnce', if not the flag will be deleted.
I.e.:
@Flag(tai2dommesAtOnce) @NullResponse @Chance30(SwitchTheDomme)
...
(SwitchTheDomme)
Hey Marsha, wanna take the keyboard for a while?
@NullResponse @DommeNameTemp(Marsha) @DommeAvatarTemp[rndAva\marsha02.jpg]
- Random number generator:
------------------------------
I have implemented a new random number generator which now will be re-initialise with a new GUID everytime it's used.
This should make the random numbers even more random.
If the min_value is bigger than max_value, TAI will not crash anymore, but you will get a message box
and the result is 5.
- Images loading from the Web (timeouts):
------------------------------
It sometimes happens to me that the timeout comes too soon, so I have raised the timeout values.
This is somewhat of a compromise, but I guess any timeout-value is one.
I.e. if your INet connection is totally down, then a higher timeout value means that you have to wait longer till an
error message appears and the script continues.
On the other hand, if your INet connection is just slow, you have now a much higher chance that the loading of that picture will succeed, even if it takes a while.
- Pause for metronome, videos and audios:
------------------------------
When you open the options, the standard metronome, my new metronome, and also a video (or audio) which is playing will go into pause,
continues when you close the options.
- Video files:
------------------------------
TAI will find also .mkv videofiles now.
- Focus on the Chat-Textbox:
------------------------------
When you close the options, now the focus will go back to the textbox where you type your chat text in.
So you don't have to click there once before you are able to type text again.
The cursor goes also back to the chat when using the buttons 'Hide/Show Media Panel' and 'Hide/Show Video Controls'.
- Script-Log:
------------------------------
It simply loggs the scripts which are running into the textfile 'scriptlog.txt', made that mostly for myself.
(I have 'merged' HoT and Miss Blue to one personality, this just helps to keep track of the script-flow.)
Will be saved only when TAI was closed (just to prevent unnecessary HDD-access).
- Video-Log:
------------------------------
This will log:
- The video paths of every video which was 'called'
- If the video has started at all
- And if the video height was 0.
In larger video collections you might find here and there a video which has problems to be played, maybe a strange video-codec was used or such.
This log simply helps to identify the videos which has problems to be played.
- #CurrentHour
------------------------------
I.e.:
@NullResponse @If[#CurrentHour]<[17]Then(tooEarly)
- Note down picture paths - PageDown-Key
------------------------------
When the focus is on the chatbox (the cursor is blinking there), you can press the PageDown-Key.
This will write the path of the picture which is shown to the textfile 'picsnoted.txt'.
I use this to track down pictures I would like to delete after the session.
------------------------------
------------------------------
------------------------------
- Compatibility with the Sweet-Patch
------------------------------
These Commands made it from the Sweet-Patch to this patch:
@PlayVideoNoWait(X)
X = Videocategory
That function can be used the same way as @PlayVideo(X)
I.e.:
Let's watch a video @PlayVideoNoWait(FEMSUB)
The script will keep on running, without waiting for the video to be played till it's end.
@JumpVideo(X)
X = Percent of the video
I.e.:
@NullResponse @PlayVideoNoWait(Lesbian) @JumpVideo(30)
@StopVideo
If you have used the command '@PlayVideoNoWait(X)' you can stop that video before it has ended.
This works also for the new command @PlayVideoNoWait[X]
@CheckPlayVideo:
Quote from the Sweet-Patch:
"if @PlayVideoNoWait is used, sometimes you need to know during the script if the video keeps playing or not.
When you called this function, if the video is ended,
the script goes to the Goto tag (Video Ended) you must have inserted in the script.
If not ended, the scripts keeps going normally"
Deactivated:
@PlayAudioNoWait[X]
That had lead to the problem that there are sometimes 2 audios playing.
In the past, you as a scripter were always able to stop a running audio by just playing another one,
and this technique is used much in the personalities I know.
I.e.: You play an audio which has changing beats, an overdrive or such, it can last very long,
you can let it run for a random time and then stop it with just playing a 'pling'-sound.
So,... I have deactivated that command, ...it can still be used for compatibility-reasons,
but if it's used, it will do exactly the same as the command @PlayAudio does.
#################################################################################################################
#################################################################################################################
#################################################################################################################
#################################################################################################################
#################################################################################################################
Patch 55.5 - Release notes
It is still based on patch 55.3, includes everything from Patch 55.3 and 55.3b and 55.4
- Bug in filter @DayOfWeek:
------------------------------
There were 2 different problems with that command, the one day-off problem and the language problem.
Both should be fixed now. In example:
@DayOfWeek(Monday) Today is Monday
Will show that line if it's monday, doesn't matter what language your PC is set to.
If you would need to have days in your own language you would still need to ask the program for the english day, i.e. in german:
@DayOfWeek(Monday) Heute ist Montag
... see, you still have to 'ask' for the english day in the script but can output whatever you like.
Added commands:
----------------
@MetronomeUp(X)
@MetronomeDown(X)
This is made for loops, so that you can de- or increase the bpm of a running metronome by X
(all metronome bpm's are limited now to values between 1 and 360)
- Changed values for:
---------------------
@TnAFastSlides
That was original at 334 miliseconds, in patch 55.4 I changed it to 7000 ms, that was much too slow.
Now it's set at 1000 ms which is still some sort of compromise.
That feature for saying 'stop' while pics displayed fast on the screen would need to be reworked completly anyway.
- Useless additions
---------------------
You could use:
@MetronomeRandom(30, 300) -> new
instead of
@MetronomeOn(#Random(30,300)) -> old
It's up to you what you prefer, it would do exactly the same.
You could write a response file with a @DebugSkipModule command, please keep in mind that is for testing only, it could lead to side-effects.
It does the same as a module (and only a module, not a link file or such) reach a @End.
#################################################################################################################
#################################################################################################################
#################################################################################################################
#################################################################################################################
#################################################################################################################
Patch 55.4 - Release notes
- Includes everything from Patch 55.3 and 55.3b
- Changed values for:
---------------------
Command / old value in miliseconds / new value in miliseconds
@TnAFastSlides / 334 / 7000
@TnASlides / 1000 / 10000
@TnASlowSlides/ 5000 / 13000
@Slideshow(slow) / 5000 / 12000
@Slideshow(fast) / 500 / 5000
Added commands:
----------------
+ @MetronomeOn(X)
X stands for bpm, i.e.: @MetronomeOn(120)
This metronome is independent, that command does nothing more than to start the metronome, it will not lead to stroke taunts etc.
Avoid to use @StartStroking together with @MetronomeOn(X), that would lead to 2 metronomes playing at the same time.
+ @MetronomeLimit(Y)
Y is the limit, i.e.: @MetronomeLimit(10) means from that point on the metronome plays 10 times and then stops.
+ @MetronomeOff
This command or @MetronomeLimit(Y) is always needed to stop the metronome, if you forget to use one of them, the metronome will run forever.
+ @WebcamVideo
Shows what the webcam sees in a new window, if you have 2 monitors the new window will be displayed on the second monitor.
There is no connecting to the internet or such, all happens local on your computer.
This feature makes most sense to use for testing if the users webcam works correctly and to adjust the webcam picture.
Don't use it together with @CamSnapFolder or @CamSnapFile, if you want to take a snapshot you would have to close the webcam video window before doing so.
+ @WebcamClose
Close the webcam window.
+ @CamSnapFolder[XXX\YYY\ZZZ]
i.e: @CamSnapFolder[myPersonalityName\camshots\kneeling]
This starts a timer of 10 seconds, this is needed because depending on the different hardware (webcam) it can take a while till a webcam is ready to take pictures.
Once the 10 seconds are over it take a snapshot and saves it to the folder-path specified with [XXX\YYY\ZZZ].
The Images folder of Tease AI is always the base folder, i.e. you have TeaseAI.exe in C:\tai\hot5\TeaseAI.exe then it would be saved in C:\tai\hot5\Images\myPersonalityName\camshots\kneeling\
Non existing folders will be created automatically, also the filename will be created automatically, i.e. Webcamshot_2018_01_17___9_10_56.jpg
So, with @CamSnapFolder pictures will always have a unique name, so they will never be overwritten, the disadvantage is that you could display them only with @ShowImage[myPersonalityName\camshots\kneeling\*.jpg]
+ @CamSnapFile[XXX\YYY\ZZZ\example.jpg]
i.e: @CamSnapFile[myPersonalityName\camshots\toys\mytoy01.jpg]
The same as @CamSnapFolder[XXX\YYY\ZZZ] but you have a specific name for the picture.
Advantage: You can display that specific named picture with @ShowImage[myPersonalityName\camshots\toys\mytoy01.jpg]
Disadvantage: Every time the script with that command in it runs, it will always overwrite the last saved picture with the same name.
For all webcam features:
In case your webcam is working correctly outside of Tease AI but it doesn't work inside, then a possible reason could be that you have more than one video capture devices connected to your computer.
Even then the webcam should be the device with the number 0, but well, ... who knows.
So for that case and that case only there is a file called 'videosource.xml', you can open it up with a simple text-editor and change the number in the line <videosource>0</videosource> to 1, 2, 3 ...
To the Scripters:
Please make always sure the webcam is ready when you use the new webcam features, i.e. asking the user if it's connected, try a @WebcamVideo and ask the user if all is ready ... see also the example script.
A little demonstration script:
--------------------------------
@StopStroking Patch 55.4
Demonstration script
#SubName, Give me 20 very slow strokes @MetronomeOn(30) @MetronomeLimit(20)
I will wait till you are done @Wait(40)
@SystemMessage Easy to calculate the waiting: 1 stroke is 2 seconds per stroke, multiplied with the limit of 20 strokes makes a wait value of 40
Now start stroking @MetronomeOn(80)
Looks nice @ShowImage
Looks also nice @ShowImage
Even better! @ShowImage @MetronomeOn(120)
You have so many pictures ... @ShowImage
Hands off @MetronomeOff
@SystemMessage You can also give a limit to an already running metronome.
Start now @MetronomeOn(60)
Keep on going
Don't stop
Faster @MetronomeOn(120)
Keep going
@MetronomeLimit(20) Ok, 20 more strokes till you are done... @Wait(12)
You've made it.
Do you have a webcam ready?
[yes] Ok, let's check this @Goto(webcam)
[no] Well, then you should consider to get one I guess @Goto(endofdemo)
@DifferentAnswer Yes or no #PetName?
(webcam)
Make sure I have a good sight on you @WebcamVideo
Tell me when you are done adjusting the cam
[done] Ok.
@DifferentAnswer tell me when you are done!
@NullResponse @WebcamClose
Good.
Go down to your knees. @Wait(10)
You should be on your knees now. Keep holding that position untill I tell you otherwise! @CamSnapFolder[taisnaptest\camshots\kneeling] @Wait(10)
@SystemMessage I would recommend a wait command for 10 seconds to be sure the snapshot is taken
That secred crush of yours ...
what if she would see you like this, mhhh?! @ShowImage[taisnaptest\camshots\kneeling\*.jpg]
Ok, stand up and fetch me your favorite toy.
Tell me when you have it
[have] Ok.
@DifferentAnswer tell me when you have it!
Now show it into the cam and hold stil till I tell you otherwise. @CamSnapFile[taisnaptest\camshots\favtoy\toy01.jpg] @Wait(10)
Mhhh, I guess we can make good use of that. @ShowImage[taisnaptest\camshots\favtoy\toy01.jpg]
Ok, thats enough. @Goto(endofdemo)
(endofdemo)
........ End of demo-script ..........
@End