Pim_gd's Mods - DialogueActions v4.08 (15 Jan 2017) (2 Viewers)

aztlan

Casual Client
Joined
Sep 14, 2013
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

Often when I try to load an Animtools position via DA, it will fail to do so. Sometimes the entire line will play except the trigger invoking the new position - but setting changes and dialogue from the line will work correctly. On other occasions it will work correctly,, this combined with it passing PIM GD' dialog check leads me to believe the dialog is functioning correctly but that just not being executed consistently and correctly. (I assume it is due to there being too many demands placed on the engine, as success or failure seems somewhat random (but perhaps less likely in long lines with many triggers and setting)).

Any suggestions about how to over come this issue?

Do other people with long dialogues using Animtools (such as Wee Willies Slave Bazaar and Fleack's a Dynamic Girlfriend) also face this issue?

I though about having a "backup" line that will reaply the position or maybe a "debug" button that will reapply an Animtools position, but wonder if that will work.
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

Yes, I also have this problem. One solution (if you happen to switch hole when switching pos, which is often the case) is to use the position variable as a "receipt" when writing the dialogue. For example, a dia line changes from oral to vag and does some other stuff. So it sets a variable keyed to, say, general lines and pull off and restart (some master variable) so that, if the position is still oral, it will retry the position change whenever the next line is triggered. But if the position is not oral, it will ignore this. Hope that helps.
 

aztlan

Casual Client
Joined
Sep 14, 2013
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

Good idea. I'll have to think about how to stick that in....

EDIT - Hmmm.... This could work sometimes, but many of the challenges involve the same "position" for Animtools. IIRC, Anitools has 5 positions:Oral, Anal, Vaginal, Tit, Other...

Often my issue will be, for exampe, one oral position failing to load when loaded while another is playing. It would be handy if Animtools had another code that could be made unique to each animation: maybe a 5 digit code or something. Then I could use it to check whether I had exactly the right animation loaded up using the technique you describe...
 

aztlan

Casual Client
Joined
Sep 14, 2013
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

The button names on DA 3.06 don't seem to be able to take variables and display the variable's value...

For example, using: "da.button8.name":"*ME*" will cause the button name to say:*ME*, not Her name.

I have a variety of buttons I would like to display a variable value rather than *xxx*.

Is there a way around this? If not could it be added as a feature for a future update?
 

WeeWillie

Content Creator
Joined
Nov 8, 2013
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

aztlan said:
The button names on DA 3.06 don't seem to be able to take variables and display the variable's value...

For example, using: "da.button8.name":"*ME*" will cause the button name to say:*ME*, not Her name.

I have a variety of buttons I would like to display a variable value rather than *xxx*.

Is there a way around this? If not could it be added as a feature for a future update?

You can set a button to the contents of a variable using varname, such as
"da.button8.varname":"myTitle"

If somewhere you had "set":{"myTitle":"Nancy"}, or in a line had "[SETVAR_myTitle_Nancy]", then did "da.button9.varname":"myTitle", you would get a button of "Nancy".

For your example though, you are using SDT's variable replacement. You need to use inline replacement to access the ME variable.
This should work:
setButtonLine1:"[SETVAR_buttonName_*ME*][setButtonLine2]" {"style":"thought"}
setButtonLine2:"Actually set the button name" {"style":"thought", "set":{"da.button8.varname":"buttonName"}}

I think you might also be able to do this "[SETVAR_da.button8.name_*ME*]", but you'd have to try that out.
 

aztlan

Casual Client
Joined
Sep 14, 2013
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

Hmm... that hurt my head... I'll need to ponder it a bit... :-\

Thanks!
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

May 31, 2015
Introducing v4.00 of DialogueActions!
- Migrated project to BitBucket/Git!
- added [APPENDVAR_localVar1_value] - appends value to localVar1. [SETVAR_localVar1_1][APPENDVAR_localVar1_hello] will set localVar1's value to "1hello".
- added [APPENDVARBYNAME_localVar1_localVar2] - appends the value of localVar2 to localVar1. Basic string concatenation.
- added [APPENDVARBYNAEM_localVar1_localVar2] - alias for APPENDVARBYNAME to prevent issues with *ME* inserts.
- removed cleaning at low FPS.
- Added "registervariableWrite" to API. This allows you to make on-screen dialogue variable monitors - it's a onVariableWrite listener.
Link in OP. Alternatively, get the latest version from the downloads page of the BitBucket repo.

Hurray, I finally got off my lazy ass and moved DA to source control!

That means it's stored in a format that should remain accessible for the next 10 years, at least. More importantly, it means both I and WeeWillie and others (haha who am I kidding come on guys join in on the fun you can do it) can work on this without interfering with each other. And if all goes to hell, you can just fork my repo and work from there.
Mostly I want to facilitate WeeWillie expanding DA - commits make it easier to see what changes were required to implement a single feature (meaning you can easily find the code related to said feature if there's a commit about it). Besides that, being able to push a button and have his changes working on my machine should reduce the barriers for making changes, because he no longer has to worry about documenting every single thing he does.

I decided to name it v4.00 since the versioning system changed - not every commit/change warrants a new public stable build, and where I'd previously keep my changes local (where they never see the light of day if I get bored), I'm now able to push changes straight online into a test version that anyone can use. And if it fails, just use the latest stable version. Awesome.
 

aztlan

Casual Client
Joined
Sep 14, 2013
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

Thanks!

I am looking forward to some of the new features WW has been working on.

If one wanted to keep spit cleaning at low FPS - any suggestions about how to do that? Are there any mods (or settings in existing mods) that do so?
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

One of the approaches would be to take a look at the commit that removed the cleaning and take a look at the lightweight mod compiler...

LoaderMod.as (from lightweight mod compiler)
Code:
package flash
{
    public dynamic class Main extends flash.display.MovieClip
    {
	public function initl(l){
		//CODE HERE!
		l.unloadMod();
	}
    }
}

commit code:

Code:
//in initl
cMC.addEventListener(Event.ENTER_FRAME, everyFrame);


//somewhere in the file
	// Function called every frame.
		// Added by WeeWillie 4/11/14
		var frameCountDown:int = 120; // Let the system settle down at startup before testing
		var clearedSpit:Boolean = false; // true if the spit was just cleared.
		
		private function everyFrame(e) {
			//main.updateStatusCol("Count" + frameCountDown, "#00FF00");
			frameCountDown--;
			if (frameCountDown <= 0) {
				// If frame rate is below 12, clean up spit strands in an attempt to get the frame rate back up.
				if (main.avgFPS <= 10) {
					// FPS is bad.  
					// If spit strands were tried last time, and that didn't do it, try clearing cum too.
					if (clearedSpit) {
						g.strandControl.clearCumStrands();
						main.updateStatusCol("Low FPS: Cleaning Cum!", "#FF0000");
					} else {
						main.updateStatusCol("Low FPS: Cleaning Spit!", "#FF0000");
					}
					
					// Clear the spit strands in any case.
					g.strandControl.clearSpitStrands();
					frameCountDown = 30; // check back in a few more frames.
					clearedSpit = true;
				} else {
					// FPS good. Check next frame.
					frameCountDown = 1;
					clearedSpit = false;
				}
			}
		}
//in doUnload	
  // Deregister the every frame event.
			cMC.removeEventListener(Event.ENTER_FRAME, everyFrame);

And kinda mash em together:

Code:
package flash
{
    public dynamic class Main extends flash.display.MovieClip
    {
        private var cMC:MovieClip = new MovieClip();//I cheated here, I forgot to clean this one up so this variable wasn't visible in the linked commit

	public function initl(l){
		//CODE HERE!
cMC.addEventListener(Event.ENTER_FRAME, everyFrame);
		l.unloadMod();
	}

// Function called every frame.
		// Added by WeeWillie 4/11/14
		var frameCountDown:int = 120; // Let the system settle down at startup before testing
		var clearedSpit:Boolean = false; // true if the spit was just cleared.
		
		private function everyFrame(e) {
			//main.updateStatusCol("Count" + frameCountDown, "#00FF00");
			frameCountDown--;
			if (frameCountDown <= 0) {
				// If frame rate is below 12, clean up spit strands in an attempt to get the frame rate back up.
				if (main.avgFPS <= 10) {
					// FPS is bad.  
					// If spit strands were tried last time, and that didn't do it, try clearing cum too.
					if (clearedSpit) {
						g.strandControl.clearCumStrands();
						main.updateStatusCol("Low FPS: Cleaning Cum!", "#FF0000");
					} else {
						main.updateStatusCol("Low FPS: Cleaning Spit!", "#FF0000");
					}
					
					// Clear the spit strands in any case.
					g.strandControl.clearSpitStrands();
					frameCountDown = 30; // check back in a few more frames.
					clearedSpit = true;
				} else {
					// FPS good. Check next frame.
					frameCountDown = 1;
					clearedSpit = false;
				}
			}
		}
public function doUnload():void {
			cMC.removeEventListener(Event.ENTER_FRAME, everyFrame);
		}

    }
}

and compile!

It will then start complaining about main and g being undefined.

So you check my code...

and you see this at the top of initl:

Code:
			main = l; //loader object
			g = l.g; //game object

so you put that in there.

Code:
package flash
{
    public dynamic class Main extends flash.display.MovieClip
    {
		private var main:*;
		private var g:*;
        private var cMC:MovieClip = new MovieClip();//I cheated here, I forgot to clean this one up so this variable wasn't visible in the linked commit

	public function initl(l){
		//CODE HERE!
main = l; //loader object
			g = l.g; //game object
cMC.addEventListener(Event.ENTER_FRAME, everyFrame);
		l.unloadMod();
	}

// Function called every frame.
		// Added by WeeWillie 4/11/14
		var frameCountDown:int = 120; // Let the system settle down at startup before testing
		var clearedSpit:Boolean = false; // true if the spit was just cleared.
		
		private function everyFrame(e) {
			//main.updateStatusCol("Count" + frameCountDown, "#00FF00");
			frameCountDown--;
			if (frameCountDown <= 0) {
				// If frame rate is below 12, clean up spit strands in an attempt to get the frame rate back up.
				if (main.avgFPS <= 10) {
					// FPS is bad.  
					// If spit strands were tried last time, and that didn't do it, try clearing cum too.
					if (clearedSpit) {
						g.strandControl.clearCumStrands();
						main.updateStatusCol("Low FPS: Cleaning Cum!", "#FF0000");
					} else {
						main.updateStatusCol("Low FPS: Cleaning Spit!", "#FF0000");
					}
					
					// Clear the spit strands in any case.
					g.strandControl.clearSpitStrands();
					frameCountDown = 30; // check back in a few more frames.
					clearedSpit = true;
				} else {
					// FPS good. Check next frame.
					frameCountDown = 1;
					clearedSpit = false;
				}
			}
		}
public function doUnload():void {
			cMC.removeEventListener(Event.ENTER_FRAME, everyFrame);
		}

    }
}

and now it will work.
 

aztlan

Casual Client
Joined
Sep 14, 2013
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

Well, um, thanks. Too bad I can't understand 80% of it... Obviously I need to study more and learn how to use a compiler!
 

Spinner

Potential Patron
Joined
Apr 28, 2015
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

Hi Pim_gd,

Thank you for the addition of APPENDVAR and APPENDVARBYNAEM.
And yes… "implemented" (rather than "fixed") is more appropriate. I was actually struggling with "BUG" or "HELP" or "REQUEST" when I made my post… ???

I have a question regarding the newly implemented APPENDVAR (versus "upgrading" SETVAR)...

To explain, first some background:
In an effort to understand dialog coding, I ran a series of tests how (and when) variable setting worked and when it didn't.
Regarding SETVAR and SETVARBYNAEM, I discovered the following all work...
The obvious:
SETVAR_targetVar_literalText
SETVARBYNAEM_targetVar_sourceVar
SETVARBYNAEM_targetVar_sourceVar *sourceVarQualifier*

The less obvious:
SETVAR_targetVar_*sourceVar* Equivalent to SETVARBYNAEM but doesn't support spaces or sourceVarQualifier
SETVAR_targetVar_*targetVar*literalText Equivalent to the new APPENDVAR but doesn't support spaces.
SETVAR_targetVar_*targetVar**scourceVar* Equivalent to the new APPENDVARBYNAEM but doesn't support spaces or sourceVarQualifier.
SETVAR_targetVar_literalText*targetVar* No equivalent. Supports prepending with fixed text but doesn't support spaces.
SETVAR_targetVar_*scourceVar**targetVar* No equivalent. Supports prepending with variable text but doesn't support spaces.


Given the above, it is clear to me why you implemented APPENDVARBYNAEM but not why you implemented APPENDVAR.
Wouldn't adding support for spaces within variables to SETVAR have done the same job… and been more flexible (i.e. supporting prepending as well as appending)?

This is obviously not meant to question your wisdom… rather posed to prompt thought and/or in case I have missed something fairly basic. :)
 

Macnagum

Avid Affiliate
Joined
Jan 17, 2015
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

Thank you for this new version which further improves writing dialogue. APPENDVAR is a great bug tracker and I'm sure you can use it to write advanced dialogues. It's all good !
 

Fleack

Avid Affiliate
Joined
Nov 20, 2014
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

Hey Pim, did you ever figure out how to get custom sounds into the mix (non-looped mp3s)?
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Re: Pim_gd's Mods - DialogueActions v4.00 (31 May 2015)

Just wanted to ask about save variables: Where do they end up? Is a .txt file created in some folder to keep track of them, or is it "hidden" somewhere inside the loader so a regular user can't manually edit the savevars?
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
August 7, 2015
Introducing v4.01 of DialogueActions!
- Fixed a bug where switching dialogues would cause global variables to be automatically imported into the next dialogue, and values to be overwritten by initial_settings values.
- Added api functions:
-- registerVariableWriteListener allows you to recieve value updates from dialogue variables
-- registerVariableWriteHandler allows you to intercept variable writes, exposing your own functions as dialogue variables
-- getVariableValue allows you to retrieve a variable value as seen in variable insertions
-- setVariableValue allows you to set a variable value as seen in the set line-attribute
-- See Documentation/For Modders/Api.txt for more info
- Added [PLAY_SFX_<filename>]. Plays a mp3 file from the last loaded character folder. Only 1 sound and 1 bgm can play at the same time for now.
- Added [STOP_SFX]. Stops the sound started by PLAY_SFX, if it hasn't ended yet.
- Fixed a bug in [STOP_BGM] where it would just crash DA.
- Added da.finishes - read only variable to retrieve cum counter.
Link in OP. Alternatively, get the latest version from the downloads page of the BitBucket repo.

Yay, sounds! Only one at a time though, and only mp3 seems to work...
And there's a delay where it loads the sound into memory first...
But hey, sounds!

API functionality is also useful to have, but it's been a while since I programmed it... I think ModGuy needed it for something...?
 

Fleack

Avid Affiliate
Joined
Nov 20, 2014
Would it be possible to use variables inside other variables for reading/writing?

Examples:

{"check":{"variable1*variable2*":">0"}}

{"set":{"variable1*variable2*":"+1"}}
 

VincentL

Vivacious Visitor
Joined
Apr 24, 2014
Yo, it seems I'm late to the party as usual and I missed a whole bunch of cool stuff that DA has.

Question regarding the trigger for her masturbation: I can't find anywhere (neither in the DA documentation nor going several pages back in this thread) how does it work exactly in terms of her orgasming, i.e. I've noticed that does actually happen, but it seems there's a value for her pleasure that can be checked/set? How long does it take on average for her to cum? Of course I'm thinking mainly in terms of adding glorious expressive dialogue lines when she orgasms as well as all sorts of "almost there" ones.

Also, I know 7 months is the best reaction time ever, but if anyone feels like it, totally seconded this request:
Re: Pim_gd's Mods - DialogueActions v3.06 (26 January 2015)

Another question/suggestion:

Is it possible to read "body" variables with DA (or some other method)? If so, how? If not could it be listed as a feature to consider for future updates...

For example, I would like to be able to use body size or breast size as a variable so I would play one line if she was skinny/flat and another if she was fat/endowed.

Thinking down the road of other options, maybe play one line for a girl with blue eyes and another for brown eyes (if there is even a reasonable way to reduce the color hex code to a reasonable number of colors to trigger different lines). Even more ambitious might he same perhaps for his body (one lines for small penis's and another for large ones...) or even where a given clothing spot currently = "none" or has some other value or even varying (depending on the type of clothing worn in the spot (but this latter might quickly get out of hand)....

P.S. If not currently possible and I had to prioritize, I would put a higher priority on the post above in being able to choose the priority and timing for different triggers than this one's being able to read body codes via DA...
 

ShaLee

Potential Patron
Joined
Nov 11, 2011
Hello, a question about the new update.. So I've been trying for a little while to make the Play_SFX work, however I just can't seem to get it running. It doesn't play any outside source at all, and it doesn't look like it's making any attempt to either. I was just wondering if you could put a bit of detail and clarify to me how to really.. work the SFX files.

For example: [PLAY_SFX_<filename>] how exactly do you type in the filename? I mean.. do you just put the mp3 in the same directory and type it a certain way or what? I'm not sure at all how to approach this, so maybe someone could give a clear step-by-step example of how to do this? Thanks

EDIT: Nevermind, Fixed it. Kept doing [PLAY_SFX_/Folder/filename.mp3] instead of [PLAY_SFX_Folder/filename.mp3]. The difference one / can make is insane lol D:
 
Last edited:

cwking420

Potential Patron
Joined
Sep 17, 2012
Was wondering if it would be possible to make [LOAD_CHARCODE] compatible with SBY's penisrangeV5.swf in future updates?
 

Users who are viewing this thread

Top


Are you 18 or older?

This website requires you to be 18 years of age or older. Please verify your age to view the content, or click Exit to leave.