Assign conversation to actor class?? Heresy, I say!
Since we have the conversation ID, there is absolutely no reason to assign the conversation to actor class...
Re: Strife's Dialog System - UDMF Flavor
Posted: Wed Apr 19, 2017 4:20 am
by Leon_Portier
Thanks for the pointer Dexter!
Adding the conversation id got it to work!
Spoiler:
Re: Strife's Dialog System - UDMF Flavor
Posted: Sun Jul 02, 2017 5:39 am
by ImpieTwo
Okay, I have no idea what I'm doing I guess. I'm doing everything as you instructed, and yesterday it worked without a hitch. Today it refuses to run.
If I put the code in a Decorate lump, it says "expected {, got =" regarding the namespace line, and aborts the map. If I put it in a regular text lump, it doesn't execute any dialogues. What am I doing wrong? Am I supposed to compile this somehow? I thought the whole point was to avoid having to compile anything.
It's driving me CRAZY because it was all working just fine only yesterday, and now it's refusing to even execute, even if I revert to all the stuff I did the day before that actually worked. It outright refuses to run anything one way or the other.
I'm not doing this in UDMF, by the way, but in Heretic In Hexen Format. Like I said, it worked yesterday, and even if i remove everything but what was working yesterday, it still refuses to work.
//initialize - script 80 makes friendly actors talk
namespace "ZDoom";
include "SCRIPT80";
//Teens say crap
conversation
{
actor = "StudentMale";
page //1
{
name = "Boy";
dialog = "RANDOM_STUDENT";
goodbye = "Whatever.";
}
}
conversation
{
actor = "StudentFemale";
page //1
{
name = "Girl";
dialog = "RANDOM_STUDENT";
goodbye = "Whatever.";
}
}
//Professors say crap
conversation
{
actor = "ProfMale";
page //1
{
name = "Teacher";
dialog = "RANDOM_PROF";
goodbye = "Whatever.";
}
}
conversation
{
actor = "ProfFemale";
page //1
{
name = "Teacher";
dialog = "RANDOM_PROF";
goodbye = "Whatever.";
}
}
//Meet Rentri
conversation
{
actor = "Rentri";
page //1
{
name = "Rentri";
dialog = "Relax, Kid. I ain't gonna do nothin'. Not all us Ghoulies like eatin' folks.";
goodbye = "Spook to ya later.";
choice
{
text = "Coulda fooled me. It's the Hallowcaust out there!";
nextpage = 2;
}
}
page //2
{
name = "Rentri";
dialog = "My green brethren are just angry. If YOU had a million noisy teens livin' in yer attic, makin' all kindsa racket, how friendly would YOU be?";
goodbye = "Spook to ya later.";
choice
{
text = "What's that supposed to mean?";
nextpage = 3;
}
}
page //3
{
name = "Rentri";
dialog = "Look, us undead like to mind our own business like anyone else, but you breathers keep gettin' on our nerves! Most of us can take you guys buildin' schools over our graves, but not when you start diggin' us up!";
goodbye = "Spook to ya later.";
choice
{
text = "Wait, the school's built on top of a graveyard?!";
nextpage = 4;
}
choice
{
text = "Who's digging you up?";
nextpage = 5;
}
}
page //4 "Wait, the school's built on top of a graveyard?!"
{
name = "Rentri";
dialog = "Hey, this one's got deductive reasonin'! An ossuary, in fact: a big ol' catacomb fulla the bones o' the dead. Everyone just sorta forgot about us, else they prolly wouldn'ta built the school on top. We been dead so long we can't remember much of our past lives, 'cept Old Man Barlow.";
goodbye = "Spook to ya later.";
choice
{
text = "Who's Old Man Barlow?";
nextpage = 6;
}
}
page //5 "Who's digging you up?"
{
name = "Rentri";
dialog = "Some nutcase professor o' yours. Dr. Femur, I guess. She takes her dumb students on field trips into the catacombs under the school every year, but this time she found us. And she couldn't just be subtle, oh no, not her. She hadda wake Old Man Barlow up.";
goodbye = "Spook to ya later.";
choice
{
text = "Who's Old Man Barlow?";
nextpage = 6;
}
}
page //6 "Who's Barlow?"
{
name = "Rentri";
dialog = "Your history teacher's new best pal. He was a major in the Great War and a fan o' the occult. He's been sleepin' down here ever since he got himself cursed. Imagine his annoyance at being rudely woken up, only to find himself buriend beneath a building fulla dumb teenagers where his house useta be. He's got every deadhead within ten miles rioting like its Dios de los Muertos.";
goodbye = "Spook to ya later.";
choice
{
text = "My prom date was with Dr. Femur's group! Is she still alive?";
nextpage = 7;
}
}
page //7 "Is Sam still alive?"
{
name = "Rentri";
dialog = "Sure, if she ain't been snacked on yet. Lissen, just sit tight and be glad you haven't been zombified like yer classmates.";
goodbye = "Spook to ya later.";
choice
{
text = "What if I got rid of this Barlow guy? You don't seem to like him much, either.";
nextpage = 8;
}
choice
{
text = "If Sam's alive, I gotta get her outta there! Oh, and maybe the others, too.";
nextpage = 9;
}
}
page //8 "What if I got rid of this Barlow guy?"
{
name = "Rentri";
dialog = "You kidding? NOBODY likes vampires, especially other undead. They just move in, take over everything, drive out all the good folks, empower the bad folks. If you could kill him, you'd be doin' everybody a favor, alive OR dead. But if you go down there, you're an idiot.";
goodbye = "Spook to ya later.";
choice
{
text = "Thanks for the advice. Where's the catacomb entrance?";
nextpage = 11;
}
}
page //9 "I gotta get her outta there!"
{
name = "Rentri";
dialog = "You must really like this chick to do something as stupid as fighting a vampire all by yourself.";
goodbye = "Spook to ya later.";
choice
{
text = "Where's the catacomb entrance?";
nextpage = 11;
}
choice
{
text = "Uhh, actually I'm lucky if she gives me the time o' day.";
nextpage = 10;
}
}
page //10 "Uhh, actually I'm lucky if she gives me the time o' day."
{
name = "Rentri";
dialog = "Seriously? Just leave her, ya rube! Save your own neck!";
goodbye = "Spook to ya later.";
nextpage = 11;
}
page //11 "Where's the catacomb entrance?"
{
name = "Rentri";
dialog = "If you're really crazy enough to enter the catacombs, the entrance is in the school basement. You might wanna arm yourself first, geek.";
goodbye = "Spook to ya later.";
}
}
//Meet Mengler, get RejuvUnit
conversation
{
actor = "DrMengler";
page //1
{
name = "Professor Mengler";
dialog = "How did you get past the tesla coils? They're designed to keep monsters -out- of the lab!";
goodbye = "Whatever.";
link = 2;
ifitem
{
item = "RivetGun";
amount = 1;
}
link = 4;
ifitem
{
item = "KeyGreen";
amount = 1;
}
}
page //2
{
name = "Professor Mengler";
dialog = "Ah, a young, expendable student! Aheh. Say, I need to make some repairs. I'll let you borrow my Portable Rejuvinator if you give me your rivet gun!";
goodbye = "Exit, Stage Left!";
choice
{
text = "Okay then!";
giveitem = "PortableRejuvenationUnit";
cost
{
item = "Rivetgun";
amount = 1;
}
}
choice
{
text = "Get bent! If you hadn't noticed, the school's been overrun!";
nextpage = 3;
}
}
page //3
{
name = "Professor Mengler";
dialog = "Good luck with the monsters, then. And the tesla coils for that matter. Aheh.";
goodbye = "Whatever.";
closedialog = true;
}
page //4
{
name = "Professor Mengler";
dialog = "You wanna use the time machine? Aheh. Suits me. I haven't found a guinea pig brave enough to test it yet. Go up the steps and switch it on. Careful not to electrocute yourself. Aheh.";
goodbye = "Whatever.";
choice
{
text = "Uh...sure, lemme use the time machine.";
Generic_Stairs (42, 8, 16, 3, 0);
nextpage = 5;
}
}
page //5
{
name = "Professor Mengler";
dialog = "I expect a detailed 800 page report on every excursion when you get back. Aheh.";
goodbye = "Uh huh, sure.";
closedialog = true;
}
}
//Meet Principal
conversation
{
actor = "Principal";
page //1
{
name = "Principal Holtzmiller";
dialog = "Get outta here, Spike! You'll lead them right to me! I think they're mad that I sealed the basement!";
goodbye = "Whatever.";
choice
{
text = "I need you to open it again.";
nextpage = 2;
}
}
page //2
{
name = "Principal Holtzmiller";
dialog = "Let me get this straight: you want me to re-open the basement with the portal to the land of the dead, then go down into the catacombs to help you rescue a girl who's only going to the prom with you out of pity?";
goodbye = "Whatever.";
choice
{
text = "You're the principal. Isn't it, like, your job to help the students?";
nextpage = 3;
}
choice
{
text = "No, I'm going by myself.";
nextpage = 4;
}
}
page //3
{
name = "Principal Holtzmiller";
dialog = "My job is to shag bored moms and give speeches to problem kids. George A. Romero disasters were not in the job description.";
goodbye = "Thanks for nothing.";
}
page //4
{
name = "Principal Holtzmiller";
dialog = "Thank goodness! You can open the basement from my intercom. Good luck! I'll be rooting for you!";
goodbye = "Thanks, I guess.";
}
}
//Use Intercom
conversation
{
actor = "IntercomGeneral";
page //1
{
name = "Spike";
dialog = "Here's the school intercom system. Now what?";
goodbye = "Leave it alone.";
choice
{
text = "Make an announcement.";
nextpage = 2;
}
choice
{
text = "Open the cafeteria.";
nextpage = 3;
}
}
page //2
{
name = "Loudspeaker";
dialog = "RANDOM_INTERCOM";
goodbye = "Sign off.";
}
page //3
{
name = "Loudspeaker";
dialog = "Attention! Attention! Lunch is now being served!";
goodbye = "Sign off.";
}
}
//Use Principal's Intercom
conversation
{
actor = "IntercomPrincipal";
page //1
{
name = "Spike";
dialog = "Here's the school intercom system. Now what?";
goodbye = "Leave it alone.";
choice
{
text = "Make an announcement.";
nextpage = 2;
}
choice
{
text = "Open the basement.";
nextpage = 3;
}
}
page //2
{
name = "Loudspeaker";
dialog = "RANDOM_INTERCOM";
goodbye = "Sign off.";
}
page //3
{
name = "Spike";
dialog = "I hear the basement doors grinding. No turning back now!";
goodbye = "Sign off.";
}
}
Re: Strife's Dialog System - UDMF Flavor
Posted: Sun Jul 02, 2017 8:49 am
by Zergeant
If you check the main post they're supposed to be stored in DIALOG lumps, either as DIALOGxx, e.g. DIALOG01 for MAP01, or just as DIALOG and then placed between map markers in Slade.
Usually if there's a problem with the conversation scripts the map will still run, but no conversation can be engaged. From what I can see you're specifying a "Generic_Stairs" in a Professor Mengler's dialog block. I'm not sure if it's allowed to do that, I would use the ZDoom wiki to find out what the special id for Generic Stairs is and use the "special" and "args" fields to pass the information. You can see an example in the Q&A section.
Re: Strife's Dialog System - UDMF Flavor
Posted: Sun Jul 02, 2017 7:15 pm
by ImpieTwo
Zergeant wrote:If you check the main post they're supposed to be stored in DIALOG lumps, either as DIALOGxx, e.g. DIALOG01 for MAP01, or just as DIALOG and then placed between map markers in Slade.
Usually if there's a problem with the conversation scripts the map will still run, but no conversation can be engaged. From what I can see you're specifying a "Generic_Stairs" in a Professor Mengler's dialog block. I'm not sure if it's allowed to do that, I would use the ZDoom wiki to find out what the special id for Generic Stairs is and use the "special" and "args" fields to pass the information. You can see an example in the Q&A section.
The lump is called DIALOG01, and it's for dialog on map01. Do I have to convert it to a dialogue lump somehow? I never could figure out how to do that with slade.
I fixed the code for specials just as you described in the q and a section, and still no dice, so it can't be that. I tried moving the dialogue stuff under the map marker itself and that made no difference either.
Re: Strife's Dialog System - UDMF Flavor
Posted: Tue Jul 04, 2017 2:07 pm
by Zergeant
Well after looking at your wad I see a number of problems, most of them shows up when starting GZDoom with the wad.
First off, change 'namespace ZDoom' into 'namespace = "ZDoom"'.
Secondly, you have a row of missing actors defined in Decorate, first error appearing when one actor refers to another actor called "ZombieTeen" not existing. Also a "FireGuy". This doesn't concern the dialogues though.
The third error/errors is in the dialogue because you try to give items that do not exist. Try defining them first even if it's just a test item, before attempting to give.
Fixing those errors should make it work.
Re: Strife's Dialog System - UDMF Flavor
Posted: Tue Jul 04, 2017 4:00 pm
by ImpieTwo
Zergeant wrote:Well after looking at your wad I see a number of problems, most of them shows up when starting GZDoom with the wad.
First off, change 'namespace ZDoom' into 'namespace = "ZDoom"'.
Secondly, you have a row of missing actors defined in Decorate, first error appearing when one actor refers to another actor called "ZombieTeen" not existing. Also a "FireGuy". This doesn't concern the dialogues though.
The third error/errors is in the dialogue because you try to give items that do not exist. Try defining them first even if it's just a test item, before attempting to give.
Fixing those errors should make it work.
Sorry, most of that stuff exists in other wads I haven't assembled into a pk3 yet. I sent you the one with the dialogue code so you could look at it yourself. Probably shoulda just sent you everything, but I only sent the part that seemed relevant. I'll try to send the entire thing slapped together into a pk3 so you can see exactly what it's doing.
Adding the = didn't make a difference: still no dialogue interactions.
Re: Strife's Dialog System - UDMF Flavor
Posted: Fri Jul 07, 2017 3:52 pm
by pwnsevelt
I can walk up to my ShotgunGuy, press USE and initiate conversation. However, when I try to do this with each Revenant, I'm not successful. I've taken a screenshot of my Slade build. Am I missing anything?
I've made sure my MAP01, DIALOG01 and SCRIPT01 match, numbers-wise. I've verified IDs have been placed (via GZDoom Builder) in the Revenant's things.
You don't need an Action Special unless you intend to swap their IDs, in which case you'd only need to utilize the Conversation ID field.
What are you not successful with? Does it start the wrong conversation? Does it not work at all?
Re: Strife's Dialog System - UDMF Flavor
Posted: Sat Jul 08, 2017 7:35 am
by pwnsevelt
Zergeant wrote:You don't need an Action Special unless you intend to swap their IDs, in which case you'd only need to utilize the Conversation ID field.
What are you not successful with? Does it start the wrong conversation? Does it not work at all?
My problem is that I can walk up to the ShotgunGuy in your tutorial wad, press E and start a conversation. However, I cannot initiate one with either Revenant. I was using the Action Special because I supposed thats how Doom would link the conversation blocks to a specific monster. I've since removed the Action Special and returned to specifying "id" in the top of the conversation block.
Your approach is ZSDF, right? I'm making sure I don't have any designs I accidentally incorporated from a USDF tutorial. What else am I missing?
Re: Strife's Dialog System - UDMF Flavor
Posted: Sat Jul 08, 2017 6:01 pm
by Zergeant
Hard to judge without the files, following the tutorial should give you a complete and working dialogue environment. Unless it's a very old version of GZDoom.
Re: Strife's Dialog System - UDMF Flavor
Posted: Sun Jul 09, 2017 7:36 am
by pwnsevelt
Zergeant wrote:Hard to judge without the files, following the tutorial should give you a complete and working dialogue environment. Unless it's a very old version of GZDoom.
I verified this behavior in the latest version of GZDoom. Here's the contents of my DIALOG01 lump. I currently have that saved as a Text lump. Should it be something different?
namespace = "ZDoom";
include = "DIALOG00";
conversation
{
actor = "ShotgunGuy";
page
{
name = "Bored Shotgunner";
dialog = "RANDOM_BOREDGUY";
}
}
conversation
{
actor = Revenant;
page
{
name = "Skeleton Shoppe";
dialog = "What you need?";
choice
{
text = "A rocket launcher";
yesmessage = "Here's your bazooka";
giveitem = "Rocketlauncher";
closedialog = true;
}
choice
}
text = "A Chaingun please";
yesmessage ="Very good, one chaingun";
giveitem = "Chaingun";
closedialog = true;
}
}
}
Re: Strife's Dialog System - UDMF Flavor
Posted: Sun Jul 09, 2017 8:28 am
by Zergeant
The starting bracket for the second choice in the Revenant's dialogue is backwards.
Re: Strife's Dialog System - UDMF Flavor
Posted: Sun Jul 09, 2017 11:27 am
by pwnsevelt
Zergeant wrote:The starting bracket for the second choice in the Revenant's dialogue is backwards.
Thank you for catching. Even after removing the entire two choice blocks, so the only thing left is the one line of dialog, I can't seem to initiate conversation with the Revenant. I'll keep trying things but I'm a bit lost. I don't know why it works for one monster but not the other.