The Comprehensive Dialogue Guide

Slingerbult

Content Creator
Joined
Sep 15, 2012
Location
Sweden
Phew, nope not confused anymore thanks :) Could we use this with other variables than me or you? For example will *[var][line1]* trigger line1 even if var isn't defined in initial settings? I really like the idea of stacking triggers with only the last triggering if it is defined.
 

Pim_gd

Club Regular
Joined
Jan 25, 2013
For example will *[var][line1]* trigger line1 even if var isn't defined in initial settings?
I do not recommend such a practice.
Such coding with anything else than the standard variables might lead to ... spaghetti scripting - it can be hard to see where a line is going already in complex dialogues...

I tested it with BreastExpansionV2_4
all:"CLEAR"
intro:"Hi![intro1]*breastsize[intro1Named]*"
intro1:"bluh"
intro1Named:"ok"

And you get bluh.

Then I tested it without any mods.
all:"CLEAR"
intro:"Hi![intro1]*hmm[intro1Named]*"
intro1:"bluh" {"set":{"hmm":"hi"}}
intro1Named:"ok"

Hi!
bluh

Hi!
bluh

So nope, it doesn't work with variables that are not defined by SDT themselves (only with FINISHES, YOU, ME, YOUR, MY).
But finishes is always defined, I believe.
 

AaRL

Swell Supporter
Joined
Feb 17, 2011
Location
Ashe's Ass / Tifa's Tits / Rikku's Rim
Pim_gd said:
[Aug 26 08:29:14] Pim_gd:I present to you: "How to check if a name is set, no variables"
[Aug 26 08:30:21] Pim_gd:intro:"Hi![intro1]*[YOU][intro1Named]*" intro1Named:"Hey, I know you, you're *YOU*!" intro1:"Huh? Who are you?"
[Aug 26 08:31:01] Pim_gd:Only flaw: Names can't have spaces in them.
[Aug 26 08:31:13] Pim_gd:Or they'll get printed on screen.

Full Dialogue:
dialogue_name:"Nametriggers"
all:"CLEAR"
intro:"Alright, let's get started![intro1]*[ME][intro1Named]*"
intro1Named:"Wow, that's a huge cock you've got there! How would you like* ME* to suck it?[toIntro2]"
intro1:"Wow, that's a huge cock you've got there! How would you like me to suck it?[toIntro2]"
toIntro2:"[intro2]*[YOU][intro2Named]*"
intro2Named:"Come on,* YOU,* ram it in already!"
intro2:"Shall I lick it, or do you want me to put it in completely straight away?"
So if name the character, you get one dialogue. If you dont name the character, you get another dialogue... no? Also, have you have ever considered writing your own dialogue? Surely, you've checked many dialogues by now.

(Not sure if PM went through, page getting 502ed) Also, I dont have my old uncorrected dialogues. I suggest you go through the dialogue pages, i think page 7 is the last page. and just take some older ones and go from there to check them. Various styles and levels of "penmanship" through out
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Location
Sweden
Ok, I'll just use triggers of the type [line*var*] then, and have var increase whenever the plot progresses.
 

Pim_gd

Club Regular
Joined
Jan 25, 2013
AaRL said:
So if name the character, you get one dialogue. If you dont name the character, you get another dialogue... no?
In this case, you get a different line depending on whether you did or didn't name a character. This can be used to circumvent problems in sentences that you simply can't rephrase (or don't want to rephrase).

AaRL said:
Also, have you have ever considered writing your own dialogue? Surely, you've checked many dialogues by now.
I have something in the works, but I think it will take quite some time before that is finished. Also because DialogueChecker is more important (and easier) for me. The hardest part for me is that my standard of quality is a tad high... so I have trouble satisfying my own requirements. Also I never wrote smut before.
 

Bazinga

Potential Patron
Joined
Jun 13, 2013
Hi,

First, a big bravo for this dialogue guide.
I have developed a strong interest in dialogue-writing, but my standards are pretty high in term of complexity so I'm always exploring options ;)

So my question is: is it possible to add the value of two variables? (For example, increasing a counter not by a +1 or +2, but +*a value defined in the initial settings/ that can evolve during the dialogue?)
So far I've tested this:

initial_settings:{"test1":1,"test2":2,"test3":3,"test4":4,"test5":5}

general:"Check variable. test1 is *test1*. test2 is *test2*. test3 is *test3*. test4 is *test4*. test5 is *test5*."

general:"Additionning test3 to test2"{"style":"Thought","set":{"test2":"test2+test3"}}
general:"Meth 2 Additionning test3 to test2"{"style":"Thought","set":{"test2":"*test2*+*test3*"}}
general:"Meth 3 Additionning test3 to test2"{"style":"Thought","set":{"test2":"+*test3*"}}
general:"Meth 4 Additionning test3 to test2"{"style":"Thought","set":{"test2":"+test3"}}

(so trying to increase test2 by a pre-defined amount) but I always get something like "test2 is *test2*+*test3*" instead of "test is 5".
So, is there a workaround?
 

Pim_gd

Club Regular
Joined
Jan 25, 2013
No, there is no known workaround (I can think of a few but they all have serious flaws and you don't want to do that, trust me).

However, I have an idea. I'll try something, then I'll get back to you.
EDIT:
I've made my first loader mod - VariableArithmetic. You'll have to use the loader, but that'll allow you to do things like adding variable values together into a new variable. Incrementing variables will probably get implemented in a later version, when I figure out how to misuse triggers for that sort of thing. Maybe those functions will give you a workaround already.
 

f93

Swell Supporter
Joined
Jul 8, 2013
If you want a line of dialogue to only ever play once, you could have a variable in the condition. You check for false, and set to true, so after the first time it plays it can never fill the condition (and so never plays again). At least, that's my trick for those one-time intro bits I do.
So it would look a little like this:

Code:
all:"CLEAR"
dialogue_name:"example"
initial_settings:{"varName":"false","otherVar":"false"}
CUSTOM:
intro:"THIS ONLY PLAYS ONCE"{"check":{"varName":"false","set":{"varName":"true"}}
intro:"THIS PLAYS ANY AMOUNT OF TIMES"
intro:"AND SO DOES THIS"
You could also use one of the built-in variables like *FINISHES* to have multiple lines that each play on a specific restart, which is detailed in one of the first few posts of this thread.
 

The Hermit

Potential Patron
Joined
Jun 2, 2013
Location
England
f93 said:
If you want a line of dialogue to only ever play once, you could have a variable in the condition. You check for false, and set to true, so after the first time it plays it can never fill the condition (and so never plays again). At least, that's my trick for those one-time intro bits I do.
So it would look a little like this:

Code:
all:"CLEAR"
dialogue_name:"example"
initial_settings:{"varName":"false","otherVar":"false"}
CUSTOM:
intro:"THIS ONLY PLAYS ONCE"{"check":{"varName":"false","set":{"varName":"true"}}
intro:"THIS PLAYS ANY AMOUNT OF TIMES"
intro:"AND SO DOES THIS"
You could also use one of the built-in variables like *FINISHES* to have multiple lines that each play on a specific restart, which is detailed in one of the first few posts of this thread.
A better method without using Checks (too many slow SDT down):
Code:
dialogue_name:"one hit line"
initial_settings:{"played":"false"}
all:"CLEAR"
intro:"[intro*played*]"
introfalse:"This line has to play first, and by setting PLAYED to TRUE when it does ensures it never plays again."{"set":{"played":"true"}}
introtrue:"ANY of the INTROTRUE lines can play randonmly only after the INTROFALSE line has played once."
introtrue:"INTROTRUE lines only play after the INTROFALSE line has played, but randomly so this could be the first line played after INTROFALSE"
 

Bluey5

Avid Affiliate
Joined
Aug 22, 2013
Location
United States
Well my problem is not with into's. I made a dialogue for me personally, and every-time I do a First Throat, only one of the lines play, despite me having made over ten of those. It's really frustrating. I was thinking of getting rid of it so it would have the chance to play others, but then again it might be because of her giving a hand-job at the same time. I don't think resistance, first deep-throat, and first throat lines work well with giving an hand-job.
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Location
Sweden
The triggering of first throat and resistance lines is hard to predict (some report seeing only first throat lines and others see more resistance lines). I just substitute them both for the same lines. First_dt is one time only, and it can be hard to trigger this in auto mode or with a hand in the way - she really needs to go balls deep for it to trigger, and only once for the whole dia. The best way to not see a line more than one is to have that line increase the value of a variable, and only play it if the value of this variable is a certain number. That way you can make completely linear dialogue with randomness thrown in where you like, for variety. See my SSSS part 4 for an example or my One Dialogue.
 

pornphile

Potential Patron
Joined
Nov 16, 2011
Is there anyway to make general lines less spammy? As is, When you idle, the next line plays 3 secs after the last line.
 

karlpaws

Potential Patron
Joined
Aug 12, 2013
Bluey5 said:
Well my problem is not with into's. I made a dialogue for me personally, and every-time I do a First Throat, only one of the lines play, despite me having made over ten of those. It's really frustrating. I was thinking of getting rid of it so it would have the chance to play others, but then again it might be because of her giving a hand-job at the same time. I don't think resistance, first deep-throat, and first throat lines work well with giving an hand-job.
I've found Resist to be tricky to trigger as well... it seems you have to have the initial resistance value pretty high on her settings, and go kinda gentle. Using the resistance and first_throat triggers to call a block of your custom lines is probably the best way to do it. Any random system will be random, and some lines will play more than others. If you want to make sure all of your lines play, just number them all and call them in order, incrementing the variable, and then use "set":{"var":"1"} on the last line to start over. You can have 2-3 lines for each number if you wish to have an illusion of randomness. Depending on how many times the lines are played, you could cycle through a set 4-5 times, and have each pair or trio have a chance to play. I kinda wish there was a checklist function, but it would probably be just as slowing as Check is.

First DT though I find pretty easy. You cannot trigger it while doing a hand job, because she cannot get deep enough, you just trigger it after the resistance is gone. It seems that each hand job stroke, resistance trigger, or throat trigger drops the resistance value (not sure about licking). You can work her down just with a hand job, cum on her face, and move her hands onto a leg position, and you'll find you can trigger pulled_off and general lines before the DT. Whenever you do fully throat, it'll trigger the DT, even if the general lines have played a time or two. This can lead to confusion if you have lines that indicate she has gone all the way, and then the DT line plays.
 

f93

Swell Supporter
Joined
Jul 8, 2013
pornphile said:
Is there anyway to make general lines less spammy? As is, When you idle, the next line plays 3 secs after the last line.
The Б symbol is a delay with no new text being displayed. You can use it to artifically create gaps in the timing of dialogue. Try putting a few of those at the end of a line of dialogue to stall a bit before the next one. You will need to use several to have any real effect, though. It also means you have to save it with Unicode encoding, which isn't the default for Notepad.



Edit: On a completely unrelated note, and because I don't want to douple-post, this part is a message to future-me, when I inevitably make the same mistake and scour this thread for solutions. Future93, let me tell you now that you should never, ever have a style attached to a finish line, or it won't load at all. Just have a blank (Her) line that redirects to a Thought or Him line if you have to do it - it'll look a bit clunky, but it'll actually display on-screen. Finish lines are inserted into other lines, not actually called seperately, even though it doesn't look like this is happening.
Oh, and don't use the word "finish" for anything in the body of the dialogue, as it'll try to find a corresponding line from the finishes. That was a bitch and a half to figure out.
 

Bluey5

Avid Affiliate
Joined
Aug 22, 2013
Location
United States
The tutorial on variables doesn't help me so...can someone help me???

When I try to use variables... like: {"next":"intro1","check":{"variable":0}} and {"style":"Him","set":{"variable":"+1"}}, it tells me to add initial settings. Do I add {"variable1":0,"variable2":"false"}, or something else? It's really confusing me, and it's causing MAJOR errors on the DA checker...
 

Pim_gd

Club Regular
Joined
Jan 25, 2013
Note to self: adjust undeclared variable message to show an example of initial_settings line.

The syntax is
initial_settings:{
+for each variable "<variableName>":<defaultValue> (if string, "<defaultValue>")
+comma separated
}

So that means
for one string (text) variable:
initial_settings:{"textVariable":"Hello"}

for one numerical variable:
initial_settings:{"numericalVariable":0}

for one boolean variable:
initial_settings:{"booleanVariable":"false"}

for a dialogue with multiple variables:
initial_settings:{"textVariable":"Hello","numericalVariable":0,"booleanVariable":"false"}

For more info, see:
http://www.w3resource.com/JSON/structures.php
And keep in mind that SDT only uses structures and nothing else - plus, we compress it to 1 line. So their example of
Code:
{
"firstName": "Bidhan",
"lastName": "Chatterjee",
"age": 40,
"email":"[email protected]"
}
is in SDT
Code:
{"firstName":"Bidhan","lastName":"Chatterjee","age":40,"email":"[email protected]"}
But naturally, we have to set initial_settings so for SDT it's actually
Code:
initial_settings:{"firstName":"Bidhan","lastName":"Chatterjee","age":40,"email":"[email protected]"}
Did that help?
 
Top Bottom