Pim_gd's Advanced Dialogue Guide (v1.01 - updated 10 December 2013)

Antimatter42

Content Creator
Joined
Sep 2, 2017
Likes
61
Location
Address Unknown
Quick question regarding line attributes and values: with the line attribute "held" and the values "true" and "false", does this mean that a line with the attribute "held" will only be triggered when he is holding her, and if the value is set to "true?."

My basic question is what is the difference between lines with these details, For example:
linetype:"This is a line."{"held":"true"}
linetype:"This is a line."{"held":"false"}
 

Rudgar

Content Creator
Joined
Nov 18, 2016
Likes
153
Location
Germany
afaik
My basic question is what is the difference between lines with these details, For example:
linetype:"This is a line."{"held":"true"}
This line can be played ONLY while he is holding her head.
linetype:"This is a line."{"held":"false"}
This line can be played ONLY while he is NOT holding her head.

HTH

Respectfully, Rudgar
 

HAMburgler

Potential Patron
Joined
Dec 2, 2017
Likes
2
Hi everyone,

I'm not sure if this is still the correct thread in which to ask for dialogue advice, but it seems like a really good guide so maybe people will notice a comment on it!

I've been experimenting with getting the girl to transition between, and react to, oral and anal sex. I've been able to use the animtools script to transition from oral to anal, and in producing dialogue as a result of using the anal position, but I have some questions about the nitty gritty:

1. Is there a way to distinguish between her reacting to using the position currently, and her reacting to having used the position previously? ie. "Oh yeah fuck my ass" vs. "You want me to suck it after it's been in my ass?"

2. I've seen some mentions of just making buttons to transition between positions. Would anybody be willing to write me a little bit of script to an "oral" button and an "anal" button?

3. Is it possible to have her produce a dialogue line with a count of the transitions back and forth? "you already fucked me ass-to-mouth 3 times!"
(3b)Or responding to a transition and referring to a past trigger? "you want to fuck me in the ass again? you just came on my face!"

Many thanks for any advice! Sorry for any mistakes!
 
Joined
Apr 17, 2017
Likes
38
Hi everyone,

I'm not sure if this is still the correct thread in which to ask for dialogue advice, but it seems like a really good guide so maybe people will notice a comment on it!

I've been experimenting with getting the girl to transition between, and react to, oral and anal sex. I've been able to use the animtools script to transition from oral to anal, and in producing dialogue as a result of using the anal position, but I have some questions about the nitty gritty:

1. Is there a way to distinguish between her reacting to using the position currently, and her reacting to having used the position previously? ie. "Oh yeah fuck my ass" vs. "You want me to suck it after it's been in my ass?"

2. I've seen some mentions of just making buttons to transition between positions. Would anybody be willing to write me a little bit of script to an "oral" button and an "anal" button?

3. Is it possible to have her produce a dialogue line with a count of the transitions back and forth? "you already fucked me ass-to-mouth 3 times!"
(3b)Or responding to a transition and referring to a past trigger? "you want to fuck me in the ass again? you just came on my face!"

Many thanks for any advice! Sorry for any mistakes!
Hi,
1. Yes, with custom variables, just declare one in your initial settings, have it be 0 if it hasn't been in her ass and 1 if it has than rewrite your vanilla linetypes with triggers that check for that varriable
Eg: general:[general*yourCustomVar == 1*]
2. You should read the guide to animtools, it comes with the download.. Animtools has a trigger [ANIMTOOLS_<yourPositionName>].
So you basiaclly set up buttons to call that trigger
3. Same thing as nr. 1. Use a custom variable and check for it in the transition trigger
 
Joined
Sep 12, 2018
Likes
74
Hi H HAMburgler .

All these things are possible and I'll give you and idea of how I would do it. More experienced coders might have more elegant solutions.

Is there a way to distinguish between her reacting to using the position currently, and her reacting to having used the position previously?
I don't understand what you mean by the first part since any time you're using a position you're using the position, right? As for reacting to having used the position previously - yes.

I would do it something like this.

Code:
ChangeToOralLineType:"[ChangeToOralLineType*currentposition*]"
Let's say that we've decided that all anal positions are 3 for the purpose of the *currentposition* variable. That means that whenever we switch to anal we also have to set currentposition to 3. Below I'm gonna assume that oral positions are 1.

Code:
ChangeToOralLinetype3:"Like it when I take it ass to mouth? [ANIMTOOLS_ORAL]" {"set":{"currentposition":1,"AssToMouthCount":"+1"}}
Code:
ChangeToOralLinetype3:"You just fucked me A2M *AssToMouthCount* times  [ANIMTOOLS_ORAL]" {"check":{"AssToMouthCount":">1"},"set":{"currentposition":1,"AssToMouthCount":"+1"}}
And then you have a battery of ChangeToOralLinetype2 for pussy to mouth etc.

EDIT: Oh, and then, since you probably don't want her referencing this EVERY time you can have lines like
ChangeToOralLinetype3:"[ChangeToOralGeneric]" so that some of the time we go to to ChangeToOralLinetype3 we play a generic oral line. I use that a lot in a dialogue which will be released soon where every linetype goes to a Chapter specific linetype, but then that linetype often routes to a generic line.
 
Last edited:
Joined
Dec 2, 2017
Likes
2
Wow, thank you so much for the feedback, guys!

SkyHeart, thanks for the tip about the animtools guide that came with the download; I can now successfully write dialogue lines for her to react to anal specifically! I am, however, still a little confused about this:
Yes, with custom variables, just declare one in your initial settings, have it be 0 if it hasn't been in her ass and 1 if it has than rewrite your vanilla linetypes with triggers that check for that varriable
Eg: general:[general*yourCustomVar == 1*]
So, say I make my variable "DoneAnal", a piece of dialogue might look like... this?

general:"I don't care if it was in my ass, I wanna suck it!" [general*DoneAnal == 1*]
general:"I'm happy to keep sucking your dick, but don't you want my ass?" [general*DoneAnal == 0*]

But how do I declare the "DoneAnal" variable in the initial settings?

DigitalSmut, thank you so much! I think I understand how your lines of code work, but I unfortunately can't get them to work in game. Is there something I need to do to adapt your scripts to my game? Like maybe define ChangeToOralLineType? (Is the 3 always supposed to be there?)

Once again thank you both so much, definitely significant improvements to my experience already :D
 
Joined
Sep 12, 2018
Likes
74
Hi,

I'll start with the question about my code.
No the 3 isn't always there. The 3 is the current value of the *currentposition* variable in my example. This variable is how we keep track of what kind of position we are currently in. Instead of 3 I'll rename them to less confusing "Anal" "Oral" "Vaginal"

You declare a variable in a dialogue with a line that looks like this:

initial_settings:{"currentposition":"Vaginal"}

for example. Just look at any dialogue you can find that's more than vanilla linetypes and you'll see. Let's say the dialogue begins in a vaginal position. Every time we switch to another position we also make sure to change the value of the *currentposition* variable to Anal, Vaginal or Oral depending on what's appropriate.

So now we want to switch to an oral position, let's say we're using a button - button1 - to do it. Now we make this line.

button1:"[ChangeToOral*currentposition*]"

Now the game will insert the value of *currentposition*, so if the value is "Anal" the line will effectively be.

button1:"[ChangeToOralAnal]"

The you create lines named ChangeToOralAnal with appropriate text for a switch from Anal to Oral. The trick is that the button will point to different custom linetypes depending on the value of *currentposition*.

On all of those different lines (ChangeToOralOral, ChangeToOralAnal, ChangeToOralVaginal) you include the actual position change, but different comments by her.

So, say I make my variable "DoneAnal", a piece of dialogue might look like... this?

general:"I don't care if it was in my ass, I wanna suck it!" [general*DoneAnal == 1*]
general:"I'm happy to keep sucking your dick, but don't you want my ass?" [general*DoneAnal == 0*]
[triggers] go inside the quotation marks. That aside, with those lines she'd just say the general line and then go to general1 or general0 depending on the value of *DoneAnal*. You want something like this:

general:"[general*currentposition*]"
generalVaginal:"She talks about vaginal sex"
generalAnal:"She talks about anal"
generalOral:"[generalOral*DoneAnal*]"
generalOral0:"I'm happy to keep sucking your dick, but don't you want my ass?"
generalOral1:"I don't care if it was in my ass, I wanna suck it!"

general first goes to the appropriate line - generalAnal, generalOral or generalVaginal - depending on current position. Then if we're on oral THAT line points to generalOral1 or generalOral0 depending on whether you did the dirty or not. Same trick as before - a line redirects to different lines depending on the value of variables you create.
 
Last edited:
Joined
Apr 17, 2017
Likes
38
H HAMburgler
Ok so, here's some basics

1. triggers go inside the quotes. I forgot to put the quotes in my previous post, sorry.

2.
initial_settings:{"currentposition":"Vaginal"}
This is how you declare any custom variables. A more generalized writing of this line would be:
initial_settings:{"varName":<numerical values WITHOUT quotes OR string INSIDE quotes>}
This line should be at the top of your dialogue. Variables can take both numbers and strings as values.

3. When you put variable inside the ** characters Dialogue Actions will return the variable's value.
As such, let say you have a variable: "customVar" and it's value in 1, if you do something like:
linetype:"*customVar*" // when this line is run the dialogue box in the game will show "1"

As such, if you do something like
linetype:"[next_*customVar*]" // this trigger can lead to multiple lines depending on customVar's value.
if it's 1, the line will trigger the "next_1" linetype, if it's 2, the line will trigger the "next_2" linetype and so on.

4. If you make a custom linetype it will never play unless you trigger it directly.

5. A quick tutorial for buttons:
  • You open them with triggers: [BUTTON<any number from 1 to 10>_ON]
  • You name them using da.button.<any number from 1 to 10>.name
    • Either with a trigger SETVARBYNAEM: [SETVARBYNAEM_da.button.<any number from 1 to 10>.name_<any name you want>]
    • Or with a "{"set":{}}" instruction placed after the line line where you open the buttons.
      • EG: linetype:"[BUTTON1_ON]" {"set":{"da.button1.name":"randomName"}}

Now, back to the point. Lets re-answer you initial questions with a bit more detail.

1. Animtools has a custom variable called "atv_position". which takes values from 1 to 4 (1 - oral, 2 - vaginal, 3 - anal, 4 - other)
Use that for the lines where you want her to react to the current position. // general:"[general*atv_position*]"
Than make a custom variable, something called like "last_atv_position" and before every line you intend to change the position on just copy the value of "atv_position" into your variable with a [SETVARBYNAEM] trigger. As such you will always know what type of position was before and you can have another "general" linetype that looks like this // general:"[general*last_atv_position*]" (If you have more than one linetype with the same name they will all have equal chances to fire when the linetype is called).

3. Create a variable called something like "analCount", and initialise it with 0 and every time you change the position to anal, use a "{"set":{}}" instruction to increase it's value by 1 // lineWhereYouChangePosition:"[ANIMTOOLS_positionName]" {"set":{"analCount":"+1"}}
Or an another way to write the same line would be: lineWhereYouChangePosition:"[ANIMTOOLS_positionName][SETVAR_analCount_+=1]"

PS: you can use whatever methods you like for setting variables, I just showed you both so you can choose, just try to stick to one style for the entire dialogue, it'll make your life a lot easier when debuging. :wink::wink:

Also, if you haven't yet try to go through the "variables" and "triggers" files from the documentation file that comes with the DA download.
It has a lot of useful stuff. I think it's called "For dialogue writers"
 
Joined
Sep 12, 2018
Likes
74
Animtools has a custom variable called "atv_position"
I would just add here that if you download positions others have made they will often be mislabeled, which is why I prefer to keep track of it myself with a custom variable. Skyheart's way means less coding, but you do have to doublecheck all positions you use.
 

HAMburgler

Potential Patron
Joined
Dec 2, 2017
Likes
2
I think some of this might be a bit beyond my ability to immediately process... lol
I'm afraid I can't seem to get buttons working at all, and I can't seem to start in an anal position. I think I'm missing some intrinsic understanding of the system language, possibly because I've never ever coded anything ever (the things we do for porn lol)

Create a variable called something like "analCount"
Is this a step in and of itself? Is there a line of code specifically for creating the variable?

every time you change the position to anal, use a "{"set":{}}" instruction to increase it's value by 1 // lineWhereYouChangePosition:"[ANIMTOOLS_positionName]" {"set":{"analCount":"+1"}}
I assume this change has to be done through the dialogue? Or can I just change positions with the loader and have it recognize that it is now using the position that activates the custom variable "analcount" (or whatever it may be called)

5. A quick tutorial for buttons:
  • You open them with triggers: [BUTTON<any number from 1 to 10>_ON]
  • You name them using da.button.<any number from 1 to 10>.name
    • Either with a trigger SETVARBYNAEM: [SETVARBYNAEM_da.button.<any number from 1 to 10>.name_<any name you want>]
    • Or with a "{"set":{}}" instruction placed after the line line where you open the buttons.
      • EG: linetype:"[BUTTON1_ON]" {"set":{"da.button1.name":"randomName"}}
So... I just copied and pasted this into my dialogue, and... maybe that's not right? lol please excuse my bumbling ignorance, and thank you for your patience thus far!

Would it be too much to ask for a couple of real-life code examples? The only dialogue I have is the Wee Willie Slave Bazaar (which does make use of an "Anal" button, but I couldn't find the code for that button anywhere in the dialogue .txt)

If you can think of any good examples of the following, or even maybe a good example dialogue I could download, 'twould be much appreciated.
1. An example of a button... being activated? created? Someone using a button in a dialogue lol.
2. An example of initial_settings being used to start in a different position, or maybe just a dialogue that uses this (do they all? I unno! lol) so that I can see a little bit of how this is used and how it interacts with other lines.

I don't mean to be greedy; I really REALLY appreciate you guys' help so far, and it really has had a tremendous impact on the way I play the game and the enjoyment I get from it. I'm going to post some of my results in the next few days; I've been tinkering for a bit and I think I've made some things that others might be interested in.

I'm sorry for the gargantuan posts, and once again, thank you!
 
Joined
Apr 17, 2017
Likes
38
I think some of this might be a bit beyond my ability to immediately process... lol
I'm afraid I can't seem to get buttons working at all, and I can't seem to start in an anal position. I think I'm missing some intrinsic understanding of the system language, possibly because I've never ever coded anything ever (the things we do for porn lol)


Is this a step in and of itself? Is there a line of code specifically for creating the variable?


I assume this change has to be done through the dialogue? Or can I just change positions with the loader and have it recognize that it is now using the position that activates the custom variable "analcount" (or whatever it may be called)


So... I just copied and pasted this into my dialogue, and... maybe that's not right? lol please excuse my bumbling ignorance, and thank you for your patience thus far!

Would it be too much to ask for a couple of real-life code examples? The only dialogue I have is the Wee Willie Slave Bazaar (which does make use of an "Anal" button, but I couldn't find the code for that button anywhere in the dialogue .txt)

If you can think of any good examples of the following, or even maybe a good example dialogue I could download, 'twould be much appreciated.
1. An example of a button... being activated? created? Someone using a button in a dialogue lol.
2. An example of initial_settings being used to start in a different position, or maybe just a dialogue that uses this (do they all? I unno! lol) so that I can see a little bit of how this is used and how it interacts with other lines.

I don't mean to be greedy; I really REALLY appreciate you guys' help so far, and it really has had a tremendous impact on the way I play the game and the enjoyment I get from it. I'm going to post some of my results in the next few days; I've been tinkering for a bit and I think I've made some things that others might be interested in.

I'm sorry for the gargantuan posts, and once again, thank you!
It's very late for me right now. Sorry.. if you can give me the file where you attempted this I will take a look through it tomorrow when I have some free time.
 
Joined
Sep 12, 2018
Likes
74
H HAMburgler I certainly don't mind helping and neither does Skyheart by the looks of it. That's kind of the karmic wheel in motion. I've certainly requested and gotten lots of help in the past month or so. But I think a good first step is to read this guide thoroughly until you understand it. Then read the guide in the OP so you're familiar and comfortable with what a trigger, linetype, variable etc are. That way we can help with the parts you get stuck on rather than doing repetition of things people have written good guides for.

I did put together the simplest imaginable dialogue with buttons just so you see how they are set up.
And one tiny little proof of concept.
 

Attachments

Last edited:

HAMburgler

Potential Patron
Joined
Dec 2, 2017
Likes
2
It's very late for me right now. Sorry.. if you can give me the file where you attempted this I will take a look through it tomorrow when I have some free time.
Too kind! Don't worry, and thank you :)

Thank you!

I did put together the simplest imaginable dialogue with buttons just so you see how they are set up.
Thank you so much! I have some studying to do lol
 

HAMburgler

Potential Patron
Joined
Dec 2, 2017
Likes
2
Hi all, HAMburgler back to burgle all your hams... ha... ha... ah... I have another problem :(

I know I need to go finish reading the guide, but is there some known bug that causes dialogues to stop running? I've been able to make lines that transition back and forth, and lines that comment specifically on the current position (finally no more "use my throat like a pussy!" lines during anal lol), but periodically the dialogue just... stops. The game runs just fine, there's just no speech.

That's my last post for today, I promise!
 

HAMburgler

Potential Patron
Joined
Dec 2, 2017
Likes
2
So... Maybe I'm just dumb; maybe I missed some key detail at the beginning or something, but I don't understand how to get these blastafraganagin buttons working! I feel like I'm missing a way to startup the dialogues; I just load them from the mod tab while in-game. Is there another way?

I'm sorry to take so much of your time and energy; I swear I'm learning things! lol
 
Top Bottom