Z-Dialog is a dynamic conversation system allowing the module designer to create conversations programatically. Dynamic conversations such as billboards, riddle scripts, inventory selection, teleport location selection, etc. are all easily controlled with a single script each.
Each conversation has at least one "dialog handler" that manages the conversation. This greatly reduces the number of scripts required for your typical highly dynamic conversation.
Posted by Acrodania at 2006-02-22 10:56:30 Voted 10.00 on 02/22/06
Very nice! Powerful, easy and helps counter a part of building that is a serious bloat in your scripts and annoying to maintain....
Posted by friendlyfire at 2006-01-17 08:10:14 Voted 10.00 on 01/17/06
Absolutely amazing!
Posted by FunkySwerve at 2005-10-28 21:14:47 Voted 10.00
Ok. I'm writing up a system that will enable PCs to level to 60 (kind of). Given that there are around a thousand different feats, give or take, I NEED a dynamic convo system. And seeing as pspeed wants us to bug him to document, and wants examples to work with for documentation, here's a mother of one. The convo would break down like this:
Intro message: they have already met certain reqs if this appears when a placeable is used. It tells them they have points to spend on skills. It then intializes several ints and strings, and adds an intro string of Letoscript to a local string on the character.
-List of available skills. Also has a "No more skills available at this level" message and a "I don't want any more skills" message.
conditional: They will each only appear if a wrapper conditional GetIsSkillAvailable returns TRUE. It will loop through ints representing the various skills and determining if the character is able to take them based on his (over-40 class, or 'control class'), and based on his current points in that skill, AND any he has just selected to take now (tracked by local int). It is meant to replicate exactly the availability of skills in the standard levelup system.
actions taken: The script will append a string of Letoscript to a local string on the character, telling it to add the skill point in THAT skill. It will add either 1 or 2 points to a local int called "PointsUsed", depending on whether the skill is cross-class.
What happens next:
If the character still has points remaining (compare two local ints), he will get the intromessage again with skill options. If not, he gets the next convo option:
-List of available feats. This is the baddy. It'll list all the feats the character can take, presumably by looping through the rows in the 2da running comparisons. It will only appear if the character is on a feat-getting level (another conditional). Again there will be options for no feats available and no thank you.
conditional - more on this below. I need to figure out a non-nightmarish way of running potentially several thousand 2dalookups unless a better option is out there. All the feats that the character can take will be listed, probably around 50 or so. I'll be adding a few custom ones as well, based on seperate conditionals checking control class (eg Legendary Spell Penetration for casters, Legendary Toughness for meleers, etc).
actions taken More ints set. Add to the Leto string based on what feat they select.
MORE on the feats: Certain feats I'd like to have subconversations with all the respective feats of that type listed examples include the weapon feats like focus and imp crit, and skill focuses, spell focuses, etc. If they selected one of these feats a seperate convo option would open before the stat window, allowing them to pick the particular feat they want.
-List of available stats This will only appear if the character is on a stat-getting level (another conditional). They will sometimes overlap with feat levels, sometimes not. These are the most straightforward, as they get all 6 as an option, no conditionals, and only one pick. When they pick several ints are set, and the Leto string gets added to.
What heppens next:
The final message appears telling them what stat, skills (ouch), and feat they selected, and asking if this is correct. If it is, the final chunk of LetoScript is applied and they are booted for edits. If not, all the ints reset and the first (skill) message displays again. They will also have an option saying "Let me do this later" that aborts the convo and dumps the ints.
More on GetIsFeatAvailable:
I'm hoping that someone has cooked up a custom function similar to this already, but I can't find one. Any suggestions as to doing this simply while allowing a full range of feat picks are welcome. I'm tenmtatively planning to use extensive 2da lookups to determinine availability, but do not relish the propect of scripting it, not the potential lag involved on checking availability of nearly 1000 feats.
Any input or advice is welcome. I'm still fishing about for the best way to do GetIsSkillAvailable as well - thinking maybe a struct for each class. These non-Z-Dialogue related concerns are why I'm posting this here as well as on the Z-Dialogue page on the vault.
Thanks in advance for your input!
Funky
Posted by Baalster at 2005-10-15 23:51:32 Voted 10.00 on 10/13/05
Stunningly simple yet powerful system.
Kudos for extreme cleverness.
Question: Is there a way to nest dialogs ?
ie Run StartDlg within the handler of an existing dialog?
Posted by Baalster at 2005-10-13 23:16:09 Voted 10.00 on 10/13/05
Stunningly simple yet powerful system.
Kudos for extreme cleverness.
Question: Is there a way to nest dialogs ?
ie Run StartDlg within the handler of an existing dialog?
Posted by Baalster at 2005-10-13 16:32:43 Voted 10.00 on 10/13/05
Stunningly simple yet powerful system.
Kudos for extreme cleverness.
Question: Is there a way to nest dialogs ?
ie Run StartDlg within the handler of an existing dialog?
Posted by Baalster at 2005-10-13 16:19:51 Voted 10.00 on 10/13/05
Stunningly simple yet powerful system.
Kudos for extreme cleverness.
Question: Is there a way to nest dialogs ?
ie Run StartDlg within the handler of an existing dialog?
Posted by Sunjammer at 2005-08-25 14:57:54 Voted 10.00 on 08/25/05
If a picture is worth 1000 words then Z-DCS is worth 1000 scripts. Don't worry I'll give you some real feedback once I get time to disect your system, but we both know this is gold star stuff. _________________________ Sunjammer
Code Monkey
Posted by Ne0nx3r0 ( 66.245.xxx.xxx ) at 2005-08-24 11:59:43
Whatever you do.. dont hit f5 after you post a comment.. lol
Posted by Ne0nx3r0 ( 66.245.xxx.xxx ) at 2005-08-24 11:59:05
I'm tinkering arond with the teleport example you have in the example mod, and I was wondering.. Where would you put checks, IE - see if a user has a token to see/use a portal?
Posted by Ne0nx3r0 ( 66.245.xxx.xxx ) at 2005-08-24 11:58:01
I'm tinkering arond with the teleport example you have in the example mod, and I was wondering.. Where would you put checks, IE - see if a user has a token to see/use a portal?
Posted by Ne0nx3r0 ( 66.245.xxx.xxx ) at 2005-08-24 11:54:22
I'm tinkering arond with the teleport example you have in the example mod, and I was wondering.. Where would you put checks, IE - see if a user has a token to see/use a portal?
Posted by Ne0nx3r0 ( 66.245.xxx.xxx ) at 2005-08-24 11:46:33
I'm tinkering arond with the teleport example you have in the example mod, and I was wondering.. Where would you put checks, IE - see if a user has a token to see/use a portal?