View Full Version : Popup Quest response
Rocker8956
10-31-2008, 12:05 PM
Not a big deal but...
I am working on the TutorialB tasks/quests to match live. Well I ran into a little issue. During the tutorial a few windows popup while talking to a NPC. I can get the popups working but I cannot figure out a way to make the NPC wait to respond until the OK button is clicked. Any thoughts?
Derision
10-31-2008, 01:02 PM
I need to alter the popup code so you can pass an ID number, then add a new sub EVENT_POPUPCLOSED, which passes back the ID number of the popup. If I get time, I'll look into it this weekend, otherwise it will be sometime next week. I also need to enhance it so that you can select whether the popup has just an OK button, or YES/NO buttons.
Derision
10-31-2008, 05:19 PM
Try Rev167. I extended quest::popup, so there are three variants:
quest::popup(<Window Title>, <Window Text>)
quest::popup(<Window Title>, <Window Text>, <PopupID>)
quest::popup(<Window Title>, <Window Text>, <PopupID>, <Buttons>)
Where Buttons = 0 means just display an OK button, or Buttons = 1 means display Yes/No buttons.
If PopupID > 0, clicking on OK or Yes will call sub EVENT_POPUPRESPONSE:
sub EVENT_POPUPRESPONSE {
quest::say("Popup response");
if($popupid eq "10") {
quest::say("You clicked OK/Yes to popup with id 10");
}
}
sub EVENT_SAY {
if ($text=~ /Hail/i){
quest::popup("Test Popup", "Test popup with ID 10", 10);
}
}
If you lose focus on the NPC, e.g. by hitting Escape while the popup is up, EVENT_POPUPRESPONSE won't be called. Not sure if it is like this on live. The ID of the NPC that produced the popup could be stored, if this is deemed to be an issue.
Edit: There is a new Opcode, so copy the patch*conf files from the utils directory.
You don't even need a npc to call a popup, most of them if you were doing them for live like quests would be used in player quests not npc quests actually. So I'm not sure if that's a practical implementation.
Rocker8956
11-01-2008, 12:08 PM
Derision,
Thank you
I will try this out tonight after I get off work.
KLS,
For the most part I think you are right that it will normally be used in the player.pl. However, there are a few quests on live that use the NPC namely this one http://everquest.allakhazam.com/db/quest.html?quest=3494 (basic training)
About mid way through the quest the toon is instructed to hail Prathun. Prathun has a bunch of popup windows that come in sequence. He does not progress to the next statement or popup window until OK is clicked on the last one.
Yeah, and? I'm quite aware of the newbie quests, fact is there are a lot of popups that don't work that way. I'll probably add a player quest event for it tonight to be coupled with the npc quest so people can choose which they'd like.
Rocker8956
11-01-2008, 05:10 PM
Sorry if I came across rude in my last post. I was not trying to be offensive was just pointing out a few NPCs could use the popups the way Derision implemented it. However, I agree it will mainly be used in the player.pl. Thank you for taking your time to add the option to use it in both.
KingMort
01-31-2010, 03:08 AM
Trying to get this stuff to work with Sub Event Enter.. And can not..
Here is what i have based off what you posted but it simply will not work...
What am I doing wrong??
sub EVENT_SPAWN {
my $x = $npc->GetX();
my $y = $npc->GetY();
my $range = 12;
quest::set_proximity($x - $range, $x + $range, $y - $range, $y + $range);
}
sub EVENT_POPUPRESPONSE {
quest::say("Popup response");
if($popupid eq "10") {
quest::movepc(176,1900.0,-474.8,24.75);
}
}
sub EVENT_ENTER {
quest::popup("Test Popup", "Test popup with ID 10", 10);
}
}
trevius
01-31-2010, 04:22 AM
sub EVENT_ENTER {
quest::popup("Test Popup", "Test popup with ID 10", 10);
}
}
Extra closing bracket marked in red.
KingMort
01-31-2010, 03:19 PM
Pop up works fine, it's just not porting me after I hit OK...
Derision
01-31-2010, 03:46 PM
It doesn't work because when you click OK to the popup, you have no NPC targeted, and so the EVENT_POPUPRESPONSE doesn't get called.
This was what KLS was getting at further back in the thread, about this being better handled in the player.pl.
I could alter the behaviour, but it would break any existing scripts using this event, or maybe even have both the npc and player.pl receive the event ... let me test it.
Derision
01-31-2010, 04:12 PM
OK, using Rev1202 code, do it like this. In your NPC quest:
sub EVENT_SPAWN
{
my $x = $npc->GetX();
my $y = $npc->GetY();
my $range = 12;
quest::set_proximity($x - $range, $x + $range, $y - $range, $y + $range);
}
sub EVENT_ENTER {
quest::popup("Test Popup", "Test popup with ID 10", 10);
}
And in player.pl, add
sub EVENT_POPUPRESPONSE
{
if($popupid eq "10")
{
quest::movepc(176,1900.0,-474.8,24.75);
}
}
KingMort
02-02-2010, 03:08 PM
Still not working ... *boggle*
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.