trevius |
05-12-2009 06:21 PM |
Doing that is actually a bit more complex than it might sound. There are a couple of ways to do it, but here is a way that I recently wrote to handle a similar situation and modified to fit what you are wanting:
npcname.pl file for the npc giving the quest
Code:
sub EVENT_SAY {
if($text=~/hail/i && defined($qglobals{zone_wiz}))
{
quest::say("You have already started this event.");
}
if($text=~/hail/i && !defined($qglobals{zone_wiz}))
{
quest::say("You have about 1.5 minutes before you get booted!");
quest::setglobal("zone_wiz", 1, 5, "M1");
quest::setglobal("zone_wiz_delay", 1, 5, "M2");
}
}
player.pl in the zone shortname directory
Code:
sub EVENT_ZONE {
quest::stoptimer("wizboot");
}
sub EVENT_ENTERZONE {
quest::settimer("wizboot", 5);
}
sub EVENT_TIMER {
if ($timer eq "wizboot")
{
quest::stoptimer("wizboot");
if (!defined($qglobals{zone_wiz}) && defined($qglobals{zone_wiz_delay})) {
quest::delglobal(zone_wiz_delay);
$client->Message(15, "You are returning to PoK now!");
quest::movepc(202, -107,-190,-156);
}
quest::settimer("wizboot", 5);
}
}
That is a quick edit, so I may have missed something, but I think that should work for you. Basically, in the player.pl, there is no easy way to trigger a timer to start, so I have one running that starts when a player zones in. If you expect to have many people in this zone, you might want to set the delay longer so it isn't working too hard on it (I set mine to check ever 60 secs), but if you are only having a couple in the zone, 5 sec checks should be fine.
|