Here are EOS tutorials

All about the past, current and future webteases and the art of webteasing in general.
---
Post Reply
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Here are EOS tutorials

Post by undeniable_denial »

Hello everyone,

here you can find my beginner tutorials for EOS. Eventually some more advanced stuff will be added.

I'm looking forward to your suggestions and advice.



Table of contents
  1. First steps
    1. The UI of EOS
    2. Importing teases from others
    3. What are pages?
    4. What are actions?
  2. Interactivity
    1. Buttons
    2. Choices and multiple paths
    3. Random Goto (Page patterns)
    4. Time's up!! (Combining buttons and timers)
  3. Metronome
    1. The basic math behind bpm
    2. Starting a metronome
    3. Stopping a metronome
    4. Creating your own beat track
  4. Dynamic content
    1. Introduction to variables
    2. Fetish selection (Booleans and If-actions)
    3. Points and Rewards (Numbers and Comparisons)
    4. Password prompts (Strings and Prompt-actions)
  5. More coming soon...
  1. Some other stuff I wrote:
Last edited by undeniable_denial on Sun Apr 05, 2020 2:59 pm, edited 11 times in total.
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Re: Here are EOS tutorials

Post by undeniable_denial »

*

I. First steps



1. The UI of EOS

The EOS editor can be accessed here:
https://milovana.com/eos/editor/

This is what it looks like on the left after you've created your first tease. I've added a bit of description so you get an idea where to find everything:

EOS menu combined.jpg
EOS menu combined.jpg (91.52 KiB) Viewed 54640 times

"Teases" and "Help" always do exactly the same, while the options inbetween apply to the tease you're currently having open.




2. Importing teases from others

In the "Code" section you can backup your tease as a file and also restore it from a backup file. The process is pretty self explanatory, however what isn't immediately obvious is that this feature allows Milovana users to share their code with each other. You can create a blank tease and import another person's backup.
Other people and I sometimes attach these backups to our tutorials, so you can try it right away.

When you restore a backup you will be faced with this dialog:

uploadOverwrite.jpg
uploadOverwrite.jpg (31.35 KiB) Viewed 54640 times

Note that the import will indeed overwrite your current tease, so be sure you've created a new tease if you don't want to lose anything. It's generally good to leave all the boxes ticked.




3. What are pages?

In EOS, teases consist of pages. (At least one: The mandatory "start"-page, but usually more). Transitioning between pages is the main method how a tease progresses. In the editor, pages are sorted by name in natural order, with the exception of the start-page which will always appear on top.
When playing, pages don't have to appear in the order they are sorted. They can jump back and forth, and even make loops. This is why pages don't automatically turn to the next one. It is up to you to connect them (with Goto-actions). More on that later.

A page change has the following effects:
  • The chat history gets cleared. The space below the picture will be blank until new text is shown.
  • Any running timers are canceled.
  • Unless declared otherwise, any audio files that are still playing will stop when the page changes.

For your own sake, you should use pages to structure your tease well. That way you can still find everything even if you haven't looked at it in a while.


How you structure your tease is completely up to you, but here are some ideas:

You can think of pages as
  • scenes of a novel or stage play
  • rooms in a house or a maze
  • states of a state-machine (if you're coming from a technical background)

Try to give your pages meaningful names and prefix them with a number to make them sort in a logical way,
e.g. "1-introduction1A".




4. What are actions?

Pretty much everything that happens in your tease, including just showing text, is called an "action".

For example, if we stick with the stage play analogy, here is how I envision the first page of Shakespeare's The Tempest translated into EOS actions:

tempestComparison.jpg
tempestComparison.jpg (114.85 KiB) Viewed 54640 times

Actions can be seen as both dialogue and stage directions.



By far the most important actions are "Image", "Say" and "Goto", however there are other essential ones, like "Timer" and "End":


For an Image-action you first need to upload an image. If you have a set of pictures that belong together, I'd recommend creating a gallery. Once you've done that, simply create an Image-action and choose a picture. The dialog may take some getting used to, but you'll figure it out after some clicking.


With Say-actions you get your basic word-processor tools like color, alignment, bold, italic and underline. Don't mind the "Eval-Tag" just yet, but be very mindful of the "Timing"-options.
I really wish "Auto-Play" was the default here and that's what I would recommend to use most of the time. Unfortunately you have to change it in every Say-action.
It seems the default "Auto"-option resolves to the "Pause"-option, which requires your players to click every time. That's just cumbersome, especially when they're busy.
The "Auto-Play" option will wait an amount of time appropriate to the length of the text before continuing to the next action automatically.


Goto-actions require nothing but the name of the page to go to next. There is autocomplete and spell checking. Yay!


Timer-actions are extremely useful, not only when you want a pause. Its advanced feature, the "Asynchronous"-mode, is where it really shines. We will get into that at a later chapter. For now it's great that you can choose to show or hide an indication and whether the remaining time should be shown. You can even set a fixed time with the slider or a range from which it randomly selects. Again, don't mind the Eval-switch just yet, we will get to that.


End-actions are not technically a necessity, however they make for a better user-experience by having a clear indication that the tease has ended. It will also trigger EOS to show the rating-pop-up and ask the user to give the tease a number of stars. You probably want that.


----

That is the end of chapter I in its current state. I hope it helps to get creative minds to experiment with EOS. I'm fairly confident I will continue to write more tutorials. If anything is unclear or you have suggestions for improvement please just post or message me.


*
Last edited by undeniable_denial on Tue Feb 04, 2020 3:26 pm, edited 2 times in total.
User avatar
Morexis
Explorer
Explorer
Posts: 74
Joined: Sat Jun 29, 2019 11:25 pm
Sexual Orientation: Bisexual/Bi-Curious
Contact:

Re: Here are EOS tutorials

Post by Morexis »

You are amazing for doing this! :love:
The tutorial in EOS is good for basics but everything more complex is really difficult to figure out.

Thanks for helping new creators get started! I look forward to the more advanced tutorial! :-D
πŸ•ΉοΈ HAVE FUN PLAYING MY GAMES!

Join our Discord to get in contact with me and other hentai tease creators and players! πŸ€™
And please consider supporting me on Patreon for more content! πŸ’–
Spoiler: show
Image

Creator of the MOST PLAYED tease in 2020 πŸ₯‡
Creator of the fourth most played tease in 2020
Creator of the third most played tease in 2019
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Re: Here are EOS tutorials

Post by undeniable_denial »

*

II. Interactivity



1. Buttons

Buttons are the most common way for users to interact with software, which makes them a great choice if you want your tease to interact with players. Buttons appearing in a tease are indicative of one or more of the following circumstances:
  • The tease is waiting specifically for the player to be ready to continue.
  • The player is supposed to pay closer attention to what is coming next.
  • The player is faced with a choice that might affect how the tease plays out.
  • Clicking the button has some other meaningful effect.

Buttons can be created using a Choice-action. It doesn't offer much until you add at least one "option". Options will be buttons when your tease is played.
Once you add options the settings become relatively bulky. On the top you can sort and select your options/buttons. Below that you can modify the currently selected option. "Label" is how the button will be labeled. Be sure to fill that out.

As you can see, you can choose between two types of behaviours for every option. The default behaviour acts like a Goto-action when the button is clicked. That means your tease can branch out to different pages depending on the player's choice.

In many cases the default behaviour should be just fine, but you may have good reasons why you wouldn't want an immediate page change. The other behaviour "Custom actions" is one of the cases where actions can be nested. For each option you can queue up actions that will only be executed if the respective button is clicked. Afterwards the tease continues to follow whatever comes after the Choice-action.

Couple of things to note here:
  • You can choose to have only one option/button in a Choice-action. While that is a bit ironic, it is great for "Continue"-buttons and the like.
  • You can switch an option to "Custom actions" and just leave it empty. In that case the tease will, right away, continue after the choice.
  • If you have a Goto-action inside an option (or if you keep the default behaviour), then everything after the Goto-action never will get executed, as the tease jumps to the defined page right away.



2. Choices and multiple paths

Choice-actions enable you to pull off all kinds of cool concepts, such as:
  • Dialogue options
  • Letting your story branch out
  • Offering optional parts of your tease as a detour
    (great to allow players to skip fetishes beyond their hard limit, like math)
  • Games like quizzes
  • Settings like gender- or language-selection (though you may want to wait until the advanced chapter on that)
We will discuss in part IV how to remember choices and make them influence the story in a more dynamic way than with this following, easier approach.


Regarding conversational choices, you could, for example, add a custom Say-action to your option to immediately respond to the player's choice (flirty, shy, snarky, lewd, inspirational, etc. options). After that the rest of the dialogue would play out normally again.


When it comes to letting your story branch out, this could be typical things like
  • Choosing a door
  • Choosing a direction in a maze
  • Choosing to accept a character's invitation
  • Randomly selected path (see next chapter)
Whether you let the paths join again or not is up to you. If you want to offer multiple endings, don't forget to put an End-action at all the endings.

Here are common examples of how a story can branch out: (Arrows are Goto-actions. Boxes are one or more pages. Box-names are loose descriptions of the pages' purposes.)
choice.gif
choice.gif (12.15 KiB) Viewed 54388 times




3. Random Goto (Page patterns)

Offering variation is always great, but maybe you don't want to let people choose. Maybe you want to leave it up to chance and there's a nifty trick to do just that without any scripting:

The Goto-action understands the asterisk (That star character: * ) as a wildcard character. That means it fits everything that fits the pattern. Here's an example:

I have a page called "part1-fork" from which I randomly want to go to either "part1-pathA" or "part1-pathB". I can accomplish that with the pattern "part1-path*" which targets all pages that have a name beginning with "part1-path", followed by anything. You can see that EOS recognizes the number of matches.
randomPage.gif
randomPage.gif (8.22 KiB) Viewed 54388 times

This is a great way to add variety to things that occur repeatedly, e.g. intermezzos, punishment-rounds, things like that.




4. Time's up!! (Combining buttons and timers)

As I've hinted in part I, the Timer-action's special feature, the "Asynchronous"-mode, is extremely awesome and here is why:
The "Asynchronous"-setting makes the Timer go on in the background. When the time runs out, the Timer's actions get carried out and the page's original actions get canceled.


We are going to use this to create a little game: The player gets a task, a time limit and a way out by clicking a button, however the timer expiring will lead to a different course of actions than clicking the button.

More specifically, your tease may ask players to:
  • "Do X within a time limit" + a button Β»DoneΒ« - (Timer running out means failing)
  • "Endure Y until the time is up" + a button Β»Have to stopΒ« - (Timer running out means succeeding)

This works, because every time the page changes, all timers are removed including their queued actions. So, the button needs to be followed by a Goto-action in order to cancel the timer.
That way either the button gets deleted by the timer or the timer gets deleted by the button. It's up to whether the player can complete the task or not.

You may of course make the timer secret or hidden. Any dialogue/images/etc. should be added before the timer.


Here you can see a generic example of how it is set up. The first picture shows that a timer allows actions to be added once asynchronous-mode is turned on. On the right you can see the order of actions on the game's page. The bottom-left illustration attemps to clarify the order of execution:
timeUpChoiceCombined.gif
timeUpChoiceCombined.gif (27.57 KiB) Viewed 54388 times


Putting on a bit of pressure and hinting at consequences shows that it matters how the player is doing and is an engaging way to get them to commit to your tease, while succeeding at the given task will also give a greater sense of achievement. [αΆœβ±α΅—α΅ƒα΅—β±α΅’βΏ βΏα΅‰α΅‰α΅ˆα΅‰α΅ˆ]


Please note, that in order for this to work, the following conditions must be met:
  • The timer needs to be started before the Choice-action, because only the timer has the ability to run in background, while the choice always halts progression.
  • The button needs to cause a page-change (Goto-action), to cancel/delete the Timer-action. Otherwise the timer will always trigger.


Bonus tip: It is possible to use more than one timer like this! I'm telling you, timers are incredibly versatile. I will likely revisit them in later chapters.




----
All right, that was part 2. This one should contain stuff that not everyone knew and it will only get better. In the next days the metronome-tutorial should be coming. After that we can finally get to the juicy stuff.
If you notice any errors or can think of improvements or have questions, please let me know below or message me.


*
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Re: Here are EOS tutorials

Post by undeniable_denial »

*

III. Metronome

An important aspect to teasing is playing with levels of arousal and therefore keeping control of the intensity of stimulation. It is no wonder that many webteases instruct to stroke at a certain tempo as that is easily quantifiable.

Classic teases often use multiples of one per second, because most people either have a clock with seconds or have a pretty good feeling what a second is.
With the advent of flash-teases that allowed sound to be played, beat tracks became very popular, as it takes much less mental effort to simply follow a beat than to keep a beat up yourself.


1. The basic math behind bpm

The concept of click tracks and classical metronomes, of course, has its origins in musical training.
There, tempo is traditionally measured in BPM (beats per minute), so that is what you find when using a metronome or creating beat tracks using a computer program.
Obviously, telling someone to stroke at 100 bpm on their own would be a rather difficult task for most people, however following an audible beat at 100 bpm is super easy.

Let's suppose you want to use a beat-track that makes your players go at 2 strokes per second. How much is that in bpm? Well, 120 of course, because in a minute you can do 60 times as many as in a second.
So, strokes_per_second = bpm / 60
and bpm = 60 x strokes_per_second

In the example above, a 100 bpm would be 1 + 2/3 per second or 1.6666... per second. Hard to do manually, but easy with a beat.

As a final example, 1 stroke every 2 seconds in bpm will be:
bpm = 60 x (1/2) = 30

It can also be useful to know that the time interval between beats is calculated by 1/strokes_per_second. For example, 3 strokes per second (or 180 bpm) would mean that 1 stroke lasts 1/3 = 0.333... seconds.




2. Starting a metronome

Currently, the most reliable and hasslefree method to get a metronome is playing an mp3 that contains a beat- or click-track. A minute long should be sufficient, I'd say.
To clarify, for every different speed you wish to have, you need another mp3. The same goes for any special beats, like an "Overdrive" or what not.

I have attached 3 zip-files with a couple of example-mp3s that should get you going:
metronome-slow.zip
(437.26 KiB) Downloaded 871 times
metronome-fast.zip
(838.66 KiB) Downloaded 804 times
metronome-special.zip
(255.72 KiB) Downloaded 765 times

Upload all the mp3s you need in the Files-section to be able to use them.
Important: You need to enable the Audio-module in the Options-section of your tease.

Now you can create Play-actions anywhere on your pages.
If you want to start the metronome together with a dialogue-line, put the Play-action right before the Say-action. Just click "Select Audio File" and choose one of your uploaded files.
You can adjust the volume and if you wish for playback to be repeated you can choose how often or even infinitly.


A few notes on the behaviour of play-actions:
- They start playing when the previous action is completed or right away if the Play-action is the first on the page.
- The audio plays in the background and the next action is carried out right away. (Two or more Play-actions after another would start playing at the same time.) If you wanted your tease to pause until playback has finished, use a Timer-action of appropriate duration after the Play-action.
- If you wish to be able to control the playback with scripting, it is required that you give the Play-action a unique identifier.




3. Stopping a metronome

If you don't want to play the entire length of the beat-track, there are 2 ways to stop it early.

Either use a Goto-action to change the page. (Only works if you didn't flick the switch for it to play across pages.)

If that is inconvenient to you, you can stop it any time with an Eval-action.
Make sure to give your Play-action an identifier, because that same identifier needs to go between the quotation marks in the following code.

Code: Select all

Sound.get("120bpm").stop();
playIdentifierCombined.png
playIdentifierCombined.png (35.85 KiB) Viewed 54243 times

Just place this Eval-action where you want the metronome to stop.




4. Creating your own beat track

There are a million ways to do this. I've decided to make a compromise between flexibility and simplicity by choosing to illustrate the process in the free and awesome Audacity. It's UI is invitingly tidy considering what it can do.
However, if what you have in mind goes beyond Audacity's capabilities, you might want to check out music production software.

Let's start with something easy. Open up Audacity and right away go into the menu Generate > Rhythm track...
To create a 120 bpm (or 2 per second) beat track of just over 1 minute, set it up like in the following picture and click "OK".
Rhythm Track highlighted.png
Rhythm Track highlighted.png (25.32 KiB) Viewed 54243 times
This will give you the sound that a lot of Milovana teases use.

And that's already it! Of course, this one is included in my examples, but if you wanted to create it yourself, simply go to File > Export > Export as MP3
(Default settings work)



Example 1: 2-3-Rhythm

Let's create a rhythm of 2 slower strokes followed by 3 faster strokes.
2-3.png
2-3.png (2.53 KiB) Viewed 54243 times
First we'll create a beat of 2 bars with 4 beats per bar at 180 bpm.
Now we're going to silence the beat with numbers 2,4 and 8 to get our rhythm.
Select the first one like in the image then in the menu go to Remove Special > Silence Audio (or just press Ctrl+L)
silence demo captioned.png
silence demo captioned.png (18.65 KiB) Viewed 54243 times
Finally, we're going to make it a minute long by going to Filters > Repeat... and enter 22.



Example 2: Overdrive

An Overdrive commonly refers to a beat that starts slow, gets really fast and slows down again, usually used as a challenge to hold back ones orgasm.
To create this, we'll create several rhythm tracks after another. First set Beats per bar back to 1. Then create short beats with your desired bpm and number of bars. I've came up with these numbers, which are rather arbitrary:
(bpm x number of bars)
30 x 4
60 x 4
120 x 10
200 x 15
300 x 30
200 x 15
120 x 10
60 x 4
30 x 4

You can also just copy and paste the parts you already have in reverse order, of course.

It should look something like this:
overdrive.png
overdrive.png (33.85 KiB) Viewed 54243 times

Personally I've decided to repeat everything once more to have two Overdrives after another.




----
Took me longer than I though, because I couldn't quite make up my mind how to do the last chapter. On the up side, I've already started with the next one which will finally be about scripting!
Please, let me know about mistakes, suggestions or questions!


*
gfunk
Explorer
Explorer
Posts: 20
Joined: Sat Apr 06, 2013 10:45 am

Re: Here are EOS tutorials

Post by gfunk »

Brilliant thread. thanks so much
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Re: Here are EOS tutorials

Post by undeniable_denial »

*

IV. Dynamic content


This is the first tutorial where we dabble in scripting. EOS uses a subset of Javascript 5 with a spicy topping. In my tutorials I would like to focus on EOS-specific scripting and only give a minimal introduction to Javascript. There are enough great tutorials to be found on the internet if you want to learn more about Javascript itself. I am going to try to keep it simple and not bother with technicalities, if possible.




1. Introduction to variables


A variable is, basically, a piece of the computer's memory that has been given a nice, human-readable nickname. We can tell EOS to store all kinds of data in there, for example a number and do some math with it, simply by referring to it by its name.
It is called variable because it can change (and also because that is what they call it in math).

Variables allow your tease to "remember" anything that happens during the tease, while if-Actions allow your tease to react based on the values stored in variables. They go hand in hand and, together, they allow parts of your tease to appear or change conditionally.

This allows for features such as:
  • Settings like fetish-selection, difficulty, length, gender-selection, language-selection, etc.
  • Choices that affect the story at a later point
  • Rewards based on player performance
  • Complex game logic

In this tutorial we are going to get to know the most important types of data that can be stored in variables and take a look at some examples how they could be used. It is essential to understand that there are different types of data, because weird things can happen when we mix them mindlessly.

Let us start with a very fundamental data type, called Boolean.




2. Fetish selection (Booleans and If-actions)


A boolean can only hold either of two values: True or false. It is named after George Boole, a mathematician who also worked in the field of logic.
In JavaScript code you can use the words πšπš›πšžπšŽ and πšπšŠπš•πšœπšŽ literally. These "Boolean Literals" will be recognized to represent their respective boolean values.

Booleans may seem underwhelming at first glance, but they are incredibly important. For example, they are the only type that if-Actions can understand.
Booleans are generally used to keep track of whether something is enabled, active or completed. This can be:
  • Binary player choices
  • An option in your tease that can be turned on or off
  • Task completion
  • States in a more complicated game logic
  • Any kind of yes-or-no situation

Let us take a closer look at an easy example: Asking the player, whether they wish the tease to include certain fetishes, at the beginning of the tease.
Here is what that could look like in the case of ballbusting:

Somewhere at the beginning you'd give the player a choice of Yes or No. Within each option's action queue you assign either πšπš›πšžπšŽ or πšπšŠπš•πšœπšŽ to a variable called "ballbusting".
boolean_assignment_small.jpg
boolean_assignment_small.jpg (24.28 KiB) Viewed 53574 times


Then you can check if ballbusting is enabled in several situations throughout your tease using an if-action. If-actions offer two action queues:
The one right below "Then" gets executed if and only if the given expression is πšπš›πšžπšŽ. The action queue below "Else" gets executed only if said expression evaluates to πšπšŠπš•πšœπšŽ.
As you can tell, boolean variables slot right into an if-action.
Both of these queues are optional and you can leave either of them empty if you do not want anything to happen. Once the respective queue has been executed EOS continues with the next action after the if-action.
boolean_if-action_small.jpg
boolean_if-action_small.jpg (39.27 KiB) Viewed 53574 times

You can of course put Goto-actions inside if-actions to follow a completely different path if a fetish is enabled.


It's also a good idea to set a default value for ballbusting in the init-script, located on the options tab. This ensures that the variable is always defined, even if you use the preview function to launch your tease somewhere in the middle.
πšπš›πšžπšŽ is a sensible default for ballbusting, because it allows you to preview the optional parts as well.
boolean_init-script_small.jpg
boolean_init-script_small.jpg (41.08 KiB) Viewed 53574 times




3. Points and Rewards (Numbers and Comparisons)


Variables can also hold numbers for you and allow you to do math with it.
Numbers can be useful in all kinds of situations, obviously, but a very common usage in teases is to quantify how well players are performing by awarding them points and not seldomly reward them based on their score.

It is necessary to define the variable which holds points, before we do any math (like "plus 5") with it. This is easily done by assigning an initial value to it. Zero is always a good choice. Like before, put this in the init-script:

Code: Select all

score = 0;

Now, people can earn points by completing certain tasks. Adding to a number variable can be done with a command like this:

Code: Select all

x = x + 5;
It is important to understand that this is not supposed to be an equation. The computer will not try to solve this for x, thankfully.
Unlike in math, the equal sign is to be understood as an assignment-command here, like "make x equal to x plus 5".

Why not ask a quiz question?
If the button corresponding to the right answer is clicked, award 5 points.
number_add-points_small.jpg
number_add-points_small.jpg (34.62 KiB) Viewed 53574 times

The usual operators are available as you know them from calculators or spreadsheets:

Code: Select all

x = 2 * x;		// Doubles x
x = 2 + 3 * 4;		// Results in x being 14
x = (2 + 3) * 4;	// Results in x being 24
x = 1 / 2;		// Results in x being 0.5
Just like with a calculator, there is only limited precision and rounding errors can occur.



If you want to inform players of their current score, you can insert a variable's value in a say action with the button on the far right:
number_say-with-eval_small.jpg
number_say-with-eval_small.jpg (17.26 KiB) Viewed 53574 times



Now that people had a chance to earn points it is time to see if they have earned a reward. If they have accumulated enough points we will grant them an orgasm, for example.
That means, we have to process the number of points in a way that we obtain a boolean value, which we can then feed to an if-action.
This is where comparisons come in.
Comparisons have results. The same way the sum 3 + 4 results in 7, the comparison 3 < 4 results in true. You may guess that, due to their boolean result, comparisons fit nicely into if-actions.
The following chart is meant to cement the concept of comparisons having a boolean result. (I do not doubt your understanding of basic math.)
relational-operators.png
relational-operators.png (6.81 KiB) Viewed 53574 times

Note that the operator for "equal to" is two equal-signs in order to distinguish it from the assignment-operator which is a single equal-sign.

Applying this to the player's score could look something like this:
number_if-comparison_small.jpg
number_if-comparison_small.jpg (39.14 KiB) Viewed 53574 times



Pro-Tip: Checking for a range of numbers
Spoiler: show
If you want to check for a number in the interval between 4 and 6 included use x>=4 && x<=6. If you are looking for a number that is either smaller than 4 or bigger than 6 then use x<4 || x>6 as condition. Here && is a logical AND, which means that both sides have to be true for the entire thing to be true, whereas "||" is a logical OR, which means that at least one side has to be true for the entire thing to be true.

Please note that chaining operators like this: 5>4>3 does not work how you might expect. While it is correct math-wise, it results in πšπšŠπš•πšœπšŽ in Javascript. Explanation:
Spoiler: show
These are the steps how javascript calculates 5>4>3

Code: Select all

5>4>3
(5>4)>3
true>3
1>3
false



4. Password prompts (Strings and Prompt-actions)


You might have guessed by now that, besides numbers and booleans, there is another data type for text. However, this one is traditionally called a "string". (Think: String of characters)
Strings are marked by quotation marks in JavaScript code and, of course, strings can also be compared.

String comparisons can come into play when you use prompt-actions to let the user enter a string. This string gets stored in the variable, the name of which is supplied to the prompt-action.
Handling user input is, however, not a trivial task and one of the next parts of the tutorial will be dedicated to this entirely.
As a sneak peek, let us have a look at asking for a password. It is one of the cases where not much can go wrong:
string_password_combined.png
string_password_combined.png (100.95 KiB) Viewed 53574 times

As you can see, you can have multiple passwords that lead to different pages. If an if-action's condition is not true, then it gets skipped. There is no need to put any actions in the Else-queue. Just let it fall to the next one. If none of the ifs bite, then the user gets to try entering a password again.



Please note that string comparisons are case sensitive, i.e. the expression "Swordfish"=="swordfish" evaluates to false.
To get around that use pwinput.toLowerCase()=="swordfish", which will result in true if it was entered with an uppercase letter.






-----
Sorry for the delay, but not only have the last weeks been crazy, this was also the hardest part to write yet.
I have been constantly restructuring chapters (effectively working on several parts at once) and had to constantly remind myself to keep it simple.
I am however satisfied with how it turned out. I guess it still does not contain what some of you are waiting for, but I want to build this from the ground up and I will eventually get to that.
As always, any kind of feedback is welcome!
User avatar
domtanyaisback
Curious Newbie
Curious Newbie
Posts: 2
Joined: Mon Apr 06, 2020 6:41 am
Gender: Female
Sexual Orientation: Bisexual/Bi-Curious
I am a: Domme (Female)

Re: Here are EOS tutorials

Post by domtanyaisback »

Hi there!

Thanks for creating the tutorial, great work :yes: :love: !

I noticed when I reset the background, then my new messages do not display anymore, am I doing something wrong, or is this a bug, or is it just not intended?
The idea was to present the user a black screen first and based upon the first choice-button either display one pic or the other and then start some messages, but it seems to hang after setting the pic?
I mean, now I'm just moving to 2 different pages after the choice to work around that of course, but it seems to me like it's a little bug so I wanted to ask :innocent:

Oh, and I almost forgot another thing - the "end" action, it displays a message, but it doesn't really stop the page from moving on in the background does it? I can click it away and continue if I want... :whistle: :-D - or does this only apply to my debug mode?
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Re: Here are EOS tutorials

Post by undeniable_denial »

domtanyaisback wrote: ↑Wed Apr 08, 2020 4:49 pm I noticed when I reset the background, then my new messages do not display anymore
I've just tried it and I can see what you mean. It's the infamous scrolling bug. One has to scroll down manually to see the messages.
I believe it is a known bug, but it might be worth mentioning this in the technical support forum, because it seems like a good way to reproduce the bug.

domtanyaisback wrote: ↑Wed Apr 08, 2020 4:49 pm the "end" action, it displays a message, but it doesn't really stop the page from moving on in the background does it?
I wasn't aware of this, but it doesn't seem like a problem to me.
Mochrion
Explorer
Explorer
Posts: 63
Joined: Fri Aug 10, 2012 4:49 am
Gender: Male
Sexual Orientation: Straight
I am a: Switch
Location: Canada

Re: Here are EOS tutorials

Post by Mochrion »

I just completed my first EOS tease - the only reason I even got started was because of your tutorials, so thanks a lot for taking the time to do this!
User avatar
domtanyaisback
Curious Newbie
Curious Newbie
Posts: 2
Joined: Mon Apr 06, 2020 6:41 am
Gender: Female
Sexual Orientation: Bisexual/Bi-Curious
I am a: Domme (Female)

Re: Here are EOS tutorials

Post by domtanyaisback »

undeniable_denial wrote: ↑Thu Apr 09, 2020 3:19 pm It's the infamous scrolling bug. One has to scroll down manually to see the messages.
I believe it is a known bug, but it might be worth mentioning this in the technical support forum, because it seems like a good way to reproduce the bug.
At first I didn't notice that they are still there but that its just not auto scrolling, I didn't know it was a known bug :innocent:
domtanyaisback wrote: ↑Wed Apr 08, 2020 4:49 pm the "end" action, it displays a message, but it doesn't really stop the page from moving on in the background does it?

I wasn't aware of this, but it doesn't seem like a problem to me.
well, it's of course not "a problem", in my opinion it was just not expected, or when I dont want the player to just ignore the (early) ending because he took the wrong path, then I have to redirect to another page instead of the end action, you know what I mean? But all in all both very minor things and I'm happy to have this much more pussybilities ;P
Great work again!
boundupone
Explorer At Heart
Explorer At Heart
Posts: 482
Joined: Sat Jun 01, 2013 8:01 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: Here are EOS tutorials

Post by boundupone »

Hi, thanks for your hard work on the tutorials

Quick question and sorry if already covered, with asynchronous timers can you run one across multiple pages or just within one page? Reason i ask is I am thinking about a future tease where user would set how long they want the tease to last, but I am not sure how to implement this?
Try anything once!
undeniable_denial
Explorer
Explorer
Posts: 96
Joined: Sat Aug 24, 2019 11:42 am
Gender: Male
Location: Germany

Re: Here are EOS tutorials

Post by undeniable_denial »

Mochrion wrote: ↑Thu Apr 09, 2020 11:09 pm I just completed my first EOS tease - the only reason I even got started was because of your tutorials
That's great to hear. I saw and skipped your tease, because it's not my thing, but just now I've clicked into it a little and it seems pretty clever. For those who like it it must be great!


domtanyaisback wrote: ↑Fri Apr 10, 2020 7:01 am then I have to redirect to another page instead of the end action, you know what I mean?
I would recommend having a dedicated page for every ending anyway for the good-bye/fuck-off dialogue. If the End-action is the last action on the page then nothing can continue.


boundupone wrote: ↑Fri Apr 10, 2020 2:36 pm with asynchronous timers can you run one across multiple pages or just within one page? Reason i ask is I am thinking about a future tease where user would set how long they want the tease to last
Timers get deleted when the page changes, asynchronous or not. Notifications can do that, just enable the module in the options. Notifications have a timer mode with an action queue and they are persistent across pages.
That should do it, but another option could be checking with a script how much time elapsed.
boundupone
Explorer At Heart
Explorer At Heart
Posts: 482
Joined: Sat Jun 01, 2013 8:01 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: Here are EOS tutorials

Post by boundupone »

undeniable_denial wrote: ↑Fri Apr 10, 2020 10:05 pm
boundupone wrote: ↑Fri Apr 10, 2020 2:36 pm with asynchronous timers can you run one across multiple pages or just within one page? Reason i ask is I am thinking about a future tease where user would set how long they want the tease to last
Timers get deleted when the page changes, asynchronous or not. Notifications can do that, just enable the module in the options. Notifications have a timer mode with an action queue and they are persistent across pages.
That should do it, but another option could be checking with a script how much time elapsed.
Interesting, thanks, I will look in to this. Cheers
Try anything once!
fapnip
Explorer At Heart
Explorer At Heart
Posts: 430
Joined: Mon Apr 06, 2020 1:54 pm

Re: Here are EOS tutorials

Post by fapnip »

Could someone sticky this thread?
Post Reply

Who is online

Users browsing this forum: No registered users and 38 guests