Advanced tricks in Nyx editor.

All about the past, current and future webteases and the art of webteasing in general.
---
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Advanced tricks in Nyx editor.

Post by Nezhul »

If you don’t know, here’s the editor:
http://www.milovana.com/nyx/

Also, visit another topic: http://www.milovana.com/forum/viewtopic ... 5&start=15
But I warn you - there are a few errors in function syntax there - those functions won't work.

In this topic I’ll talk about some coding tricks that may make your tease much more complicated and interesting. I don’t think there’ll be much info for programmers, I think you’ll see this opportunities yourself. For programmers a quick tip: you can create a lot if you see pages (set and unset ones) as binary data. I mean a set page is 1, or "TRUE", and unset page is 0 or "FALSE". range command provides a very good ability to acess the pages based on the logic of set and unset pages.

But for the rest of you – we shall start.
The thing is, that nyx lacks some functionality now – the author just don’t have time to update it as I see it. That’s he’s right and time, but we want to make interesting teases, right? We have to make pretty complicated pieces of code to do very basic things, but that’s how life is. And I doubt everyone who wants to do something cool just can see how to do it with the features provided.

First of all, I’ll describe some functions that we will work with. The better you understand them, the easyer it will be for you to understand the rest. The ideal result of this topic is that you won’t just copy my code and tweak it a little, but that you’ll be able to make something yourself, because you just understand the features and how they work.

Basic page in nyx
The nyx tease is basically all about script. It consist's of pages, which are the blocks of your tease. I won't describe it too much, though, that's the basic look of a page:

Code: Select all

<page_name>#page(<parameter_1>,<parameter_2>,<parameter_3>);
All parameters are divided by ",". After the last one this sign should not be placed. The parameters are everything that the page will hold - all the text, pictures, buttons, timers, functions... When you create the page it will automatically add 2 parameters: for text and for pictures.

Code: Select all

page1#page('',                              //this is for text (it should be placed between '' signs, text formatting allowed)pic("*.jpg")                //this is for picture);
here is the first trick for you:
note that picture name is *.jpg? Well, obviously all our pictures in jpg format, so no explaining on this part. * symbol is basically means, that ANYTHING can be placed instead it. If we leave it like this pic("*.jpg") then on this page will be shown a random picture from ALL of the pictures we uploaded.
But there's more to it. Say, we want to show random picture, but we don't want to show girls pussy yet. We want to show a picture from a certain set (where she's still dressed). How do we do it? Easy! First of all, rename your pictures, so all pictures you desire to choose from will have similar mask (and this mask won't be shown anywhere else. For example:
dressed01.jpg
dressed02.jpg
dressed03.jpg
dressed04.jpg
dressed05.jpg
Now for picture operand use this: pic("dressed*.jpg")
That's it! The point is that we tell our script: the picture name MUST start with "dressed" word. But then we place * sign, telling it that the rest part of a name may be random. If you have a file named "dressed3742385dksgkselk_dkhgf342.jpg" - it will also have a chance to pop up.
Other variants:
pic("*dressed.jpg") //must end with dressed
pic("*dressed*.jpg") //must contain dressed in the middle
pic("Ann*dressed*.jpg") //must start with "Ann" and contain "dressed" in the middle.
And anything else you want. This way we may make a tease more random, but at the same time we won't show the sexiest pictures in the very start.

set() and unset()
this funcrions will be used by us a lot in combination with range(). The basic idea is, that set() marks target page(es) as if we already viewed them, even if we didn't. The unset() does the opposite - it marks the pages we already viewed as if we didn't.
What's the point, you ask? The trick is in range() command - it can choose only pages we didn't visit. Normally, it can't choose one and the same page 2 times. But with set() and unset() we can do it. We can view a page several times, or we can exclude certain variants from our randomizer. Say, if you failed the task, we exclude 1 orgasm variant from the list.
The syntax is the same for both of them. Note, that this functions have their own parameters - page names. They are placed inside the breakets, and divided by ",". They can have as many parameters as you want, so 1 set() function can set several pages at a time.
set(1#)
unset(2#)
set(1#, 2#, 3#)
unset(1#, 2#, 3#)
All constraints apply only to range() function. Direct link will work anyway.
Note, that all constraints must be laib BEFORE the page may be shown, that meens BEFORE range() command runs. It's a good idea to make a special page in the very beginning of the tease with no text or picture, delay 0 sec, and all constraints for the whole tease in it.
BUG: Set() and Unset() stack, so if you set the page 2 times, and then unset it 1 time - it still will be set. So is the other way around. Therefore, you should refrain from using those whenever possible, and stick to must() and mustnot(). The tease that can set and unset a single page multiple times will NOT work properly, so try not to count on that. I'v made a couple of those before I realized it, and they are unfixable now (though they still pretty much work, but can freeze from time to time due to the target page remaining set when it shouldn't. Don't make this mistake, and the best of luck to you!

must() and mustnot()
This are very usefull functions too. They are needed for exactly the same thing as set() and unset(), but depending on the situation, you'll choose which is better. This functions work with range() command.
The idea of must() is that a certain page MUST be set (or already viewed) in order for another page to be shown. mustnot() works the opposite way.
This functions must have at least 2 operands. First operand is the page we set constraints on. The following operands are the pages that must be set before our page can be viewed.
must(2#,1#) //page 1 must be set in order for page 2 to be chosen
must(3#,2#,1#) // pages 1 and 2 must be set in order for page 3 to be chosen.
All constraints apply only to range() function. Direct link will work anyway.

Function Placement
This functions may be used inside a page as it's operands (in that case only if we visit this page they will be executed) or in the very beginning of a script right before the start# page.

Code: Select all

 unset(1#); // note that as this functions are outside any page ";" sign MUST be placed after themset(2#); start#page('',pic("*.jpg"),set(1#)               //this function is an operand of a page, and there's no more operands after it = no ","); page1#page('',unset(2#),          //There are another operand after the function - you must place ","pic("*.jpg")); page2#page('',pic("*.jpg"));
Note, that this is a seemless piece of code, just to demonstrate how this functions can be placed. The same rules goes for must() and mustnot().
The functions must be executed BEFORE the pages you wish to influence can be shown. That means that you should place them BEFORE range(). And you should keep a track on them.
Now, the bad news. First of all, you'll have to place them manually in a script view. Second, you'll have to place them when your tease is fully done - all texts, buttons, timers and pictureas are done.
If any changes made in Visual mode it'll remove everything before "start#" page.
So you must write in a notepad all relations you'v made and double-check everything before publishing a tease.
ALSO pages that contain this functions will not be shown in visual mode, giving you the error "Page could not be parsed" - but note, that they will still work ok in preview and in actual final tease.

A secret page
That's a page that will be processed, all functions it contains will be processed, this page will be set as if it's viewed, but it will never actually be shown.
Doing it is simple - create a page with no text and no picture (or you may write some notes just for yourself). Than make a delay with 0 (zero) seconds in it that will link whereever you need. Voila. The page will actually be there, but it will change before your PC will draw it on your screen.
Why it's needed? Different things. For example you have a page with different custom buttons - but you want to link them to some range. What will you do? range doesn't work with custum buttons for some reason. You can link each of them to some invisible page, that will actually link to your range. Or for example to get rid of this "page could not be parsed" thing. You can use all your constraints on some invisible page, and all normal pages will still be visible in visual editor and you can change them as much as you want.

goto() - A secret page #2
Another way to make a page that WILL be processed but will NOT be displayed, is by using goto(page#) function. This is a simple redirect function that, after processing the page, will open a new page, that we want.

range()
This is our randomizer. The thing we will be working a lot with in this topic. That's a great feature to make your teases less linear, and as you will see soon, you can make pretty cool stuff using it.
First of all, range() function is used instead a page name in all buttons and timers. That's the place to use it.
You will need a set of number pages. Yes, the page name should be numbers only, placed in sequence. It may be from 1 to 10, or from 345 to 375 - doesnt matter. What's important is that the name of a page is numeric, and that you have some sequence without empty spaces. You can't make it like 1 2 3 4 7 8 9 - because 4 and 5 are missing. Though using functions above you may make it so certain pages (even in the middle of sequence) can't be picked by randomizer.
the basic syntax:
range(1,5,'page') - this will pick a random page from pages 1 2 3 4 5.
Let's see how it's used. We'll describe it on basic "Continue" button, but as i said it can be placed in all buttons and timers.
The basic continue button looks like this: go(page1#)
now instead of page name, we use range: go(range(1,5,'page'))
Note, that there's no "#" sign. And actually that's one problem with range command. It won't be deleted if you edit something in visual mode, as other functions. But it'll be slightly ruined. The editor will place "#" after it, making our line look like this: go(range(1,5,'page')#)
This way it won't work. If you don't view the page containing range() in visual - all will be ok. It will ruin it only if you view a page. So you can just remember it and avoid viewing it. If it's ruined, simply go to script view and delete "#"

range() placement and a trick over it.
Normally range() can be used with delays, goto() function and "Continue" button and that's it. But if you want to get to the random page from a custom button? Unfortunately direct and obvious way won't work. There's a trick how you may do that. If you want your custom button to link to a random page - create another page (a secret page), and make your button link to it. On that service page use either delay with 0 seconds leading to your random pages, or goto() function leading there.
How it will work: When you press your custom button it leads you to your service page, then instantly to the one from your range. The change is so quick that user will not notice it.
Last edited by Nezhul on Wed Jul 11, 2012 2:15 pm, edited 10 times in total.
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

Now, let's get to the meat of the topic. Scripts.
And we'll start from the very basics.

1) Basic choice that has effect some time later.
Let's say, we ask the player in the beginning of a tease: "Can you cum with me, or are you forbidden?" And much later on, depending on what choice he made - we let him cum, or ask him to lock himself in again.
That's what I'm going to demonstrate. It's really easy. Surprising, but very few people ask that question in a tease, and I think the tease will be MUCH popular with that thing. Think of it, here, on Milovana, there are people into long-term denian, and ones that want to be teased but cum anyway. Or at least have a chance of orgasm. Personally I don't like teases with no chance at all. And I doubt a person on Denial will like "Cum for me!" page. You limit people to one pattern. But if you have a simple choice, the tease becomes good for all.
By the way, with the same script you can make all sorts of things. Say, if an extra tak is failed - orgasm chance will decrease. Or if a task in the start is failed, then in the end it will be more cruel.
Now, to the script.

Code: Select all

start#page(
'can you cum today with me?',
pic("*.jpg"),
yn(page1#, page2#)   //this is a function for yes/no buttons
);

page1#page(
'Very good! You'll have a chance to cum! But you'll have to suffer for it!',
pic("*.jpg"),
go(page3#)             //In any case we go to page3# to proceed with our tease.
);

page2#page(
'You don't deserve it anyway! All you deserve is teasing and frustration!',
set(1#),                   //we'v marked orgasm variant as set, and now it won't be chosen
pic("*.jpg"),
go(page3#)              //In any case we go to page3# to proceed with our tease.
);

page3#page(
'Get hard for me!',
pic("*.jpg")
);

/////////////////////////////////////////////////////////////////////////////////
////////   BASIC SCRIPT FOR THE TEASE        //////////////////////////////
/////////////////////////////////////////////////////////////////////////////////

page49#page(
'We are almost done with you. Now, I want you to edge one last time, and then, click on the button',
pic("*.jpg"),
buttons(range(1,2,'page'), "Edging!")          //Here's the function for custom buttons. 
                                                              //We have only 1 though
);

1#page(                                                   //This page will NOT be selected if page2# was visited
'Cum for me, baby!!!',                                
pic("*.jpg")
);

2#page(                            //This page can always be selected. 
'Hands off! DENIED!!!',         //It's the only option if page2# was visited
pic("*.jpg")                        //however it can be picked by random even if you choose you can cum.
);                                     //So orgasm chance is 50% at most. If we wanted it 100%, we should set this page on page1# (when we choose yes to orgasm)
Now the variant with must():

Code: Select all

must(1#,page1#);                                 //Page1# must be set (visited) in order to choose 1#
                                                           //mustnot(page2#,1#) will work the same for THIS script

start#page(
'can you cum today with me?',
pic("*.jpg"),
yn(page1#, page2#)   //this is a function for yes/no buttons
);

page1#page(
'Very good! You'll have a chance to cum! But you'll have to suffer for it!',
pic("*.jpg"),
go(page3#)             //In any case we go to page3# to proceed with our tease.
);

page2#page(
'You don't deserve it anyway! All you deserve is teasing and frustration!',
pic("*.jpg"),              //we don't need anything special here this time
go(page3#)              //In any case we go to page3# to proceed with our tease.
);

page3#page(
'Get hard for me!',
pic("*.jpg")
);

/////////////////////////////////////////////////////////////////////////////////
////////   BASIC SCRIPT FOR THE TEASE        //////////////////////////////
/////////////////////////////////////////////////////////////////////////////////

page49#page(
'We are almost done with you. Now, I want you to edge one last time, and then, click on the button',
pic("*.jpg"),
buttons(range(1,2,'page'), "Edging!")          //Here's the function for custom buttons. 
                                                              //We have only 1 though
);

1#page(                       //This page will NOT be selected if page1# was NOT visited
'Cum for me, baby!!!',                                
pic("*.jpg")
);

2#page(                            //This page can always be selected. 
'Hands off! DENIED!!!',         //It's the only option if page1# was NOT visited
pic("*.jpg")                        //however it can be picked by random even if you choose you can cum.
);                                     //So orgasm chance is 50% at most. If we wanted it 100%, we should set this page on page1# (when we choose yes to orgasm) or use mustnot(2#,page1#) function in the beginning

2) Counting the number of tasks finished
Say, you want to make a tease of 10 tasks. And you want the fate of a stroker to depend on how much tasks he/she'll complete. No matter what tasks - you are interested only in number.
Say, if less then 5 tasks completed, then there's no chance to cum at all. if 5 tasks are done, then you will allow ruined orgasm. And if all 10 are done, you will allow full orgasm. And please note - I'm not talking about "first 5 tasks" - but 5 in total. That means if a user compleates tasks 1-2-4-6-7 - he have a ruined. The result will be based on a performance.
Now, how do we do it? At first, it may look like it can't be done at all. It'll be complicated, i warn you.
First of all, let's create 10 pages from 1 to 10. It will be the first pages of our tasks, but we will need them in numeric.
Now, we create pages 11-20 (another 10). This will be our counters. We will need them to go in order, so with must() we will build a sequence from them. So each page goes only after another.
At last, we create 21-23 pages for our orgasm variants.
This how it all will work. In the beginning of a tease we are directed to page 1#, and so, we do the first task. If we fail it, we just go to page 2# to do the other one. But if we succeed, then we are directed to the counter pages with range command. We have build a sequence for this pages, so page 15 will be shown ONLY after pages 11-14 are visited, meaning 4 tasks are done. On page 15 we will unset ruined orgasm variant and set no-cum variant. The same with the rest counter pages. Now, that we counted our task, we need to proceed. But how do we know wich tasks we already completed? We don't. So we just use another range() to select a new task between the ones we haven't visited yet. If you want them to run in sequence too, you should know how to do it by the time we finish this tutorial. At last, when the last task is done, we "choose" the fate depending on performance.
Let's see the script now.

Code: Select all

must(15#,11#,12#,13#,14#);     //page 15# will be choosed only after 11-14 pages are viewed.
must(16#,15#);           //page 16 will be avaliable only after page 15
must(17#,15#);           //page 17 will be avaliable only after page 15
must(18#,15#);           //page 18 will be avaliable only after page 15
must(19#,15#);           //page 19 will be avaliable only after page 15
must(20#,16#,17#,18#,19#);     //page 20# will be choosed only after 16-19 pages are viewed.
must(10#,1#,2#,3#,4#,5#,6#,7#,8#,9#); //page 10# (choosing orgasm) will be shown only after all tasks are viewed.

start#page(
'The first task starts here somwhere.',
pic("*.jpg"),
go(Task1part1)
);

////////////////////////////////////////////
////////TASK 1 ///////////////////////////
///////////////////////////////////////////

Task1FAIL#page(
'You fail!',
pic("*.jpg"),
go(range(1,10,'page')           //Don't be confused, for on page 1# is actually the SECOND task, and on page 10 is choosing orgasm.
);

Task1SUCCESS#page(
'Good!',
pic("*.jpg"),
go(range(11,20,'page')       //we go to our counter
);

1#page(
'TASK 2 START',
pic("*.jpg"),
go(Task2Part1#)
);

2#page(
'TASK 3 START',
pic("*.jpg"),
go(Task3Part1#)
);

3#page(
'TASK 4 START',
pic("*.jpg"),
go(Task4Part1#)
);

4#page(
'TASK 5 START',
pic("*.jpg"),
go(Task5Part1#)
);

5#page(
'TASK 6 START',
pic("*.jpg"),
go(Task6Part1#)
);

6#page(
'TASK 7 START',
pic("*.jpg"),
go(Task7Part1#)
);

7#page(
'TASK 8 START',
pic("*.jpg"),
go(Task8Part1#)
);

8#page(
'TASK 9 START',
pic("*.jpg"),
go(Task9Part1#)
);

9#page(
'TASK 10 START',
pic("*.jpg"),
go(Task10Part1#)
);

10#page(
'Now I will descide your orgasm!',
pic("*.jpg"),
go(range(21,23,'page'))
);

///////////////////////////////////////////////////////////////////////////
/////// HERE WE PLACE THE REST PAGES FOR OUR TASKS //////////
////////// EACH TASK ENDS WITH FAIL AND SUCESS PAGES//////////
//////////////// SIMILAR TO THE TASK 1 EXAMPLE ////////////////////
///////////////////////////////////////////////////////////////////////////

11#page(
'COUNTER PAGE 1',
pic("*.jpg"),
go(range(1,10,'page'))
);

12#page(
'COUNTER PAGE 2',
pic("*.jpg"),
go(range(1,10,'page'))
);

13#page(
'COUNTER PAGE 3',
pic("*.jpg"),
go(range(1,10,'page'))
);

14#page(
'COUNTER PAGE 4',
pic("*.jpg"),
go(range(1,10,'page'))
);

15#page(
'COUNTER PAGE 5',
set(21#),                       //here we set NO ORGASM variant so it cant be choosed
unset(22#),                    //and unset RUINED variant
pic("*.jpg"),
go(range(1,10,'page'))
);

16#page(
'COUNTER PAGE 6',
pic("*.jpg"),
go(range(1,10,'page'))
);

17#page(
'COUNTER PAGE 7',
pic("*.jpg"),
go(range(1,10,'page'))
);

18#page(
'COUNTER PAGE 8',
pic("*.jpg"),
go(range(1,10,'page'))
);

19#page(
'COUNTER PAGE 9',
pic("*.jpg"),
go(range(1,10,'page'))
);

20#page(
'COUNTER PAGE 10',
set(22#),                  // Now we set ruined orgasm variant
unset(23#),              //and unset full orgasm one
pic("*.jpg"),
go(range(1,10,'page'))
);

//now for our fate pages

21#page(              //will be the only choice untill page 15 is viewed (5 tasks done)
'DENIED!',
pic("*.jpg")
);

22#page(             // will be the only variant from the moment page 15 was viewed and untill page 20 is
'Ruin that orgasm for me! You don't deserve any better!',
pic("*.jpg")
);

23#page(              // Will be the only variant since page 20 is viewed (all tasks are done
'',
pic("*.jpg")
);
That's about it. Ask me if you didn't get it, for the trick is "tricky" =)
Last edited by Nezhul on Fri Oct 15, 2010 10:12 am, edited 5 times in total.
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

If you have any questions how to do this or that - ask here.

It's not overpost, just want to have 1 more post at the top of this topic, so I can edit it and fill it later.
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

Just discovered the site 2 days ago, decided to contribute my own flashtease. Was easy enough to use, would love to see a password input feature for part 2.
So there's no "normal" way to do the password in nyx, but there's always a way around it.
First of all, we'll need several pages that might be names pass1#, pass2# pass3# etc, depending on how you want them. There would be as many of this pages, as the number of signs (length) of your code.
Also let's create pages Wpass2#, Wpass3, etc... That'd go for WrongPass - the pages we will see if we make the wrong choice. Note, that there won't be Wpass1#, because first page is always the right one.

Now, on each of those pages we'll need the number of buttons with possible pass letters. Normally, you won't be able to place more than 10-12 buttons, because they'll go past the screen border, and the user won't be able to press them. Now I'll explain a few ways over it. You may skip this, if you want - after all, 10 buttons is enough.
That's how our normal attempt would look like. Note that buttons are on the right on the screen, and the thing is, they start from the middle of the page downwards. So there's a lot of free space there.

Code: Select all

start#page(
'<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">lala</FONT></P></TEXTFORMAT>',
pic("*.jpg"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10")
);
The thing is, that Nyx places the 3rd parameter of the page in a special place, which is in the middle of the right side. Let's trick it, let's place a blant operand (just a comma) on the 3rd place, so our buttons would go 4th. Tadaa~~~! Now our buttons column starts from the top, so we have place for a few more buttons.

Code: Select all

start#page(
'<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">lala</FONT></P></TEXTFORMAT>',
pic("*.jpg"),
,
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10")
);
Now, the most cruel method - we'd get rid of the picture, and we'll place our buttons in it's place. Also note, that you may push the text a little bit down, if you place some blank lines before it, as I did.

Code: Select all

start#page(
'<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">lala</FONT></P></TEXTFORMAT>',
horiz(
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),
buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10")
)
);
That way you may actually fit in not just numbers, but all letters in both upper and lower cases, if you need. One buttons() function - is one column of buttons, each of them may lead to a different page, and have a different caption. We use horiz() to place those columns horizontally, and place a few columns that way.
This method will cause "page could not be parced" in visual editor - the page can be edited only in script view, but will work perfectly in the actual tease and preview mode.

Another variant of the same thing, but we place a small picture to the right of the frame

Code: Select all

start#page(
'<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSans" SIZE="18" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">lala</FONT></P></TEXTFORMAT>',
horiz(buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10"),buttons(start#, "Button1", start#, "Button2", start#, "Button3", start#, "Button4", start#, "Button5", start#, "Button6", start#, "Button7", start#, "Button8", start#, "Button9", start#, "Button10")),
,
pic(*.jpg)
);
If you don't place an extra coma, the picture will be in the bottom, if you do - in the top.

Ok, now, enough with the button alignment. Anyway, you have chosen the way you want it to be, and you created a few pages with those buttons. I advise you this pages have the same picture, if they do, so the user won't get he did something right or wrong. As an alternative, they may have a group of picture (I discussed it in the beginning of the topic).
Now here's what you want: You descide on your password. Now on pass1# page the button referring to the 1st sign of your pass leads to pass2# page. All of the rest (wrong) buttons, lead on Wpass2# page.
On pass2#, the right button leads to pass3#, and all wrong - to Wpass3#.
On Wpass2#, ALL buttons leads to Wpass3#, because we already screwed up.
And so on.
Obviously on the last pass page, the right button leads to the tease itself, and the wrong will lead to the end of the tease, or punishment, or whatever...
You may want the text to be the same on each page, or different. The only thing I should advise, is that on WpassX# page the text is the same as on passX#, so the user will not know if he screwed till the very end.
Note: in my examples all buttons lead to the start# page, but it's just allignment examples, so don't look at it. :wave:

Now I should make it clear - those passes are easyly crackable, bue to the way nyx works. So you won't make advanced user to obey them. But it's noob-safe, and also some users will not cheat, even if they know how, especially if they like your teases.
The other thing I want you to consider, that you can bring some info from your last tease with that pass system. Noone said that there could be only one right pass, yes? Say we have 1 password for those with good performance, and the other for guys who did not so well. There will just be 2 paths you may go through that password.
Example:
Say you have 2 passwords: Noob and Boob ^___^. Or whatever, that don't have to be similar.
On the first page, pass1#, letter N leads to pass11# page, and letter B leads to pass21# page. And so on. The trick is that pages pass1x# are for the 1st path, and pass2x# are for the second.
Obviously, you don't need 2 sets of Wpass pages - it doesn't matter on wich path we screwed.
As you go through one of the passes, you visit some pages, that you wouldn't visin on the other path, right? That's the idea. Read "Basic choice that has effect some time later." paragraph, to use it to your needs.

That's about it. Hope all is explained good enough, but if there's ANY trouble - ask me here. :innocent:
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
ponderhk
Explorer
Explorer
Posts: 55
Joined: Fri Nov 12, 2010 2:35 am

Re: Advanced tricks in Nyx editor.

Post by ponderhk »

hi Nezhul,

a big thank you for this post. I've dabbled in a couple of flash teases for practice, but this has brightened my day considerably.

I personally have written around 400 teases for PCM2 and had until now being depressed with the offerings of web based fuctionality.

I look forward to delivering a few of my ideas now with a platform that can support the imaginion!


BTW - did I read somewhere that someone might have a pcm -> flash convertor?
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

Haven't heard about that, tho I imagine that'd be a whole lot of work to do to write that properly. Still possible tho.
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

Here's a new trick i came up with. The idea is to make a nice-looking menu for your tease. I managed something like this:
Image

Now I'v noticed many times, that because of a limit for a button captions (14 characters), some people start writing something like: "Your choices: A - blablabla; B - Alalala; C - Atata." And then make 3 buttons called A, B and C. That works, but that's not so pretty. You can use this method for it too, just adjust it a bit. But the main reason - is making a nice pretty menu.
WARNING! The resulting code will be not pretty at all, moreover the page will not be viewed in visual editor. But you'v probably used to the fact that if you want to make something cool in nyx you'll gotta go through the ass of it :-P
Well, let's get to it now.
First of all you may notice that we have a picture as a background. That's nice, only I'd suggest you picking a darker pictures, or using some different font colour. White font on light pictures looks bad. Anyway, how to do it? Here comes in handy mult() function of nyx. All it does is placing all of it's contents in one spot. Leave the text field blank. Well you MAY write something there if you really want to, but I didn't. Only never delete this text line - or the page will not load at all.

Code: Select all

start#page('',mult(pic("6a0d9fd8aa341d423dc942d761e797dd.jpg"),));
Now we see a picture on a blank black screen. Let's add some buttons and text to it. As you can see I basically have a column of buttons and a column of text captions standing next to each other. I highlighted the major words. As you may know, to place 2 elements next to each other (in a horizontal line) we use horiz() function. Our elements will be columns of buttons and text, and to align elements in a column (vertically), you use vert() function. Let's do that now.

Code: Select all

start#page('',[color=#FF0000]mult([/color]pic("6a0d9fd8aa341d423dc942d761e797dd.jpg"),[color=#0000FF]horiz([/color][color=#00BF00]vert([/color]buttons(start#, "Day 1"),buttons(start#, "Day 2"),buttons(start#, "Day 3"),[color=#00BF00]),[/color][/color][color=#FF8000]vert([/color]text(<B><P ALIGN="LEFT">- Stamina Training</P></B>),text(<B><P ALIGN="LEFT">- Obedience</P></B>),text(<B><P ALIGN="LEFT">- Humiliation</P></B>),[color=#FF8000])[/color]   //vert end[color=#0000FF])[/color]   //horiz end[color=#FF0000])[/color]   //mult end);  //page end
I hope you know that everything that goes after double slash (//) in that line is a COMMENT. That's my comment for you so you can track where's what in this madness of brackets. Also I used colors to help you.

Now you may click preview and enjoy the ugly-looking something that's not even close to my screenshot. What's wrong?
The point is, that horiz() and vert() functions divide the avaliable space into equal zones, based on the number of elements. i.e. if you have only two columns, each will occupy a half of the screen, but if you have 10 columns, each will occupy 1/10th of the screen. So now, to bring everything closer to each other we will be adding columns to the right AND to the left of our text and button columns to bring them closer and position them in the center.

Code: Select all

start#page('',mult(pic("6a0d9fd8aa341d423dc942d761e797dd.jpg"),horiz(vert(),vert(),vert(),vert(),vert(),vert(buttons(start#, "Day 1"),buttons(start#, "Day 2"),buttons(start#, "Day 3"),),vert(text(<B><P ALIGN="LEFT">- Stamina Training</P></B>),text(<B><P ALIGN="LEFT">- Obedience</P></B>),text(<B><P ALIGN="LEFT">- Humiliation</P></B>),),vert(),vert(),vert(),vert(),vert(),vert()));
You see? two real columns surrounded by blank "fake" columns just to eat up space.
Now we'll do the same with lines. We will add a few lines INSIDE A COLUMN with buttons, to bring them closer. We will add a few before our buttons so they'll be more to the centre, and a few after them, just to eat up space thus bringing them closer together.

Code: Select all

start#page('',mult(pic("6a0d9fd8aa341d423dc942d761e797dd.jpg"),horiz(vert(),vert(),vert(),vert(),vert(),vert(horiz(),horiz(),horiz(),horiz(),buttons(start#, "Day 1"),buttons(start#, "Day 2"),buttons(start#, "Day 3"),horiz(),horiz(),horiz(),horiz(),horiz(),horiz(),horiz(),),vert(horiz(),horiz(),horiz(),horiz(),text(<B><P ALIGN="LEFT">- Stamina Training</P></B>),text(<B><P ALIGN="LEFT">- Obedience</P></B>),text(<B><P ALIGN="LEFT">- Humiliation</P></B>),horiz(),horiz(),horiz(),horiz(),horiz(),horiz(),horiz(),horiz()),vert(),vert(),vert(),vert(),vert(),vert()));
Here's what I had in the end of it. That's the result after some tuning you will need to align texts and buttons better. In one column you will need to add more lines, in the other - less. That's because of the way nyx is made, that a button is stuck to the top of the space it's in, and the text is always in the middle of it's space. So play a bit with adding and deleting rows to bring the texts apart a bit and so on.

In a script that looks nasty. On a real page - quite cool, IMO. :wave:
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

Fake Timer
Really a simple idea, maybe someone will find it amusing. The timer will show one time, but the page will change sooner. Might be used to trick a player, or to simulate a situation when a girl changed her mind. Like "rest for a minute" - and a timer for a minte. But after ten seconds the other page commanding to edge because she changed her mind.
Anyway, simply make 2 timers, one normal (that would be fake), one hidden, with less tiem on it.
mult(
delay(1min, page2#),
delay(10sec, page2#,style:hidden))
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
User avatar
cumhardy
Experimentor
Experimentor
Posts: 1145
Joined: Wed May 28, 2008 10:54 pm
Gender: Male
I am a: None of the above
Location: UK

Re: Advanced tricks in Nyx editor.

Post by cumhardy »

Do you recon theres any way to make a page jump to another page mid-timer but the timer stays counting down from the same time? dont know if that makes sense :-/
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

weeeel..... Make a page with a fake timer of 3 minutes, make it change after a minute, and the other page will have a timer of two minutes. Only like that. The only problem that the timer circle on a new page will be full again.
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
conundrum22
Curious Newbie
Curious Newbie
Posts: 1
Joined: Tue Oct 05, 2010 6:42 pm
Gender: Male
Sexual Orientation: Straight
I am a: Submissive
Location: Denver, CO

Re: Advanced tricks in Nyx editor.

Post by conundrum22 »

This has been extremely informative. Thank you. I've been inspired to try my hand at a tease because of this info. In the example of the fake timer
Do you recon theres any way to make a page jump to another page mid-timer but the timer stays counting down from the same time? dont know if that makes sense
, would it be possible to do a hidden timer (the '?') on the second page with the balance of the time? You have no idea how much time passed on the first page because it was a fake (the one minute in your example), the second page would just go into the blank '?' (2 minutes in your example). :banana: :banana:
The only problem with a zombie apocalypse is pretending I'm not excited!!
User avatar
Nezhul
Experimentor
Experimentor
Posts: 2373
Joined: Fri Apr 30, 2010 6:22 am
Sexual Orientation: Straight

Re: Advanced tricks in Nyx editor.

Post by Nezhul »

of course you can do anything you want on a second page. That's a different page to start with.
Check out my new site, and read SexTV story there!
Also I have the DARK section that features feature Erotic Horror.
I also launched a SubscribeStar recently! Please come check it out!
Updated whenever I feel like it. :wave: :love:
Image
climactic
Explorer
Explorer
Posts: 22
Joined: Fri Nov 25, 2011 9:13 pm

Re: Advanced tricks in Nyx editor.

Post by climactic »

Is there any way at all to change the font style in nyx to anything other than the two selections it offers?

May seem like a silly question, but I'm a perfectionist, and I find the default font too plain, but the alternative choice too fancy and a bit of a chore to read.
climactic
Explorer
Explorer
Posts: 22
Joined: Fri Nov 25, 2011 9:13 pm

Re: Advanced tricks in Nyx editor.

Post by climactic »

Can someone please tell me why I cannot get the range command to work in the following code:

(there is a simple go command on page 7 with a three page range, but I've tried over and over to make it work, and all I get is a blank screen after I click "continue" on page 7. I even tried publishing just to make sure it wasn't only a problem with the preview mode, and it didn't work there either)

Code: Select all

 start#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Disenchanted with your typical routine of sexual misconduct, </FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">you&apos;ve made your way downtown today in search of a new , </FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">and hopefully more satisfying experience...</FONT></P></TEXTFORMAT>',pic("tower.jpg"),buttons(page2#, "<font face="FontSerif" size="16" color="#000000">Continue</font>")); page2#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">As fortune would have it,</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">you recently stumbled across a classified advertisement</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">for an exclusive club called The Tease Factory,</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">who claim to have mastered a unique form of sexual stimulation...</FONT></P></TEXTFORMAT>',pic("tower.jpg"),buttons(page3#, "<font face="FontSerif" size="16" color="#000000">Continue</font>")); page3#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Having had your interest aroused,</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">you contacted the club, and after going through a fairly in depth screening process,</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">you were given an appointment and an address on the fourteenth floor of this building...</FONT></P></TEXTFORMAT>',pic("tower.jpg"),buttons(page4#, "<font face="FontSerif" size="16" color="#000000">GoInside</font>")); page4#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Your excitement continues to build as you enter the finely decorated lobby.</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">At the moment, there doesn&apos;t seem to be anyone around.</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Toward the back of the room there is an elevator. </FONT></P></TEXTFORMAT>',pic("lobby.jpg"),buttons(page5#, "<font face="FontSerif" size="16" color="#000000">Go To Elevator</font>")); page5#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">You signal for an elevator going up, and within moments the doors open.</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">The elevator is empty.</FONT></P></TEXTFORMAT>',pic("elevator.jpg"),buttons(page6#, "<font face="FontSerif" size="16" color="#000000">Step Inside</font>")); page6#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">What floor would you like to visit?</FONT></P></TEXTFORMAT>',pic("panel.jpg"),buttons(page7#,"<font face="FontSerif" size="16" color="#000000">One</font>")); page7#page(go(range(8,10,'page'))); page8#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Page 8</FONT></P>',pic("*.jpg"),); page9#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Page 9</FONT></P>',pic("*.jpg")); page10#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Page 10</FONT></P>',pic("*.jpg")); 
User avatar
supermokkori
Explorer At Heart
Explorer At Heart
Posts: 486
Joined: Tue Jul 05, 2011 11:11 am
Gender: Male
Sexual Orientation: Straight
Location: USA

Re: Advanced tricks in Nyx editor.

Post by supermokkori »

climactic wrote:Can someone please tell me why I cannot get the range command to work in the following code:

(there is a simple go command on page 7 with a three page range, but I've tried over and over to make it work, and all I get is a blank screen after I click "continue" on page 7. I even tried publishing just to make sure it wasn't only a problem with the preview mode, and it didn't work there either)
Hey climactic,

You'll need to rename pages 8, 9 and 10 by taking away the "page" in front of the number... see below:

Code: Select all

 8#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Page 8</FONT></P>',pic("*.jpg"),); 9#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Page 9</FONT></P>',pic("*.jpg")); 10#page('<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="FontSerif" SIZE="22" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">Page 10</FONT></P>',pic("*.jpg")); 
At least, in my limited Flashtease coding (first one yesterday! :-D ) that's how I've gotten it to work.
Post Reply