EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Quest timers (https://www.eqemulator.org/forums/showthread.php?t=24804)

Andrew80k 04-03-2008 11:08 PM

Quest timers
 
I'm looking for a good example of a quest that has an NPC shout something periodically. Can someone suggest one to look at?

Thanks.

AndMetal 04-04-2008 12:26 AM

This is a pretty basic example:

Code:

sub EVENT_SPAWN {
        quest::settimer("repeat", 60); // First trigger after 60 seconds
}

sub EVENT_TIMER {
        if ($timer eq "repeat") {
                quest::stoptimer("repeat");
                quest::shout("I fart in your general direction! Your mother was a hamster and your father smelt of elderberries!");
                quest::settimer("repeat", 60); // Keep repeating every 60 seconds
        }
}

Zone Reset Quest on a Timer can be useful as a general reference, but the idea is to clear the timer & restart it. You could also use quest::ChooseRandom to make the repeated text a little more random (90 seconds vs 60, etc):

Code:

quest::settimer("repeat", quest::ChooseRandom(60, 60, 90));
That would give a little better odds for it to take 60 seconds, but sometimes take 90 seconds.

Another cool thing is that you can change quest::shout to quest::shout2, and it will shout across ALL zones.

Hope this does what you're looking for.

trevius 04-04-2008 05:58 AM

You can find examples of this and many other quest examples in GeorgeS' quest tool from his website.

http://66.159.225.58/eqemu/eq.html

So_1337 04-04-2008 09:43 AM

Just a quick note... If you don't stop the timer when it triggers, you don't have to reset it. So the code for that can be even shorter:

Code:

sub EVENT_SPAWN {
        quest::settimer("repeat", 60); // First trigger after 60 seconds, and every 60 seconds after
}

sub EVENT_TIMER {
        if ($timer eq "repeat") {
                quest::shout("I fart in your general direction! Your mother was a hamster and your father smelt of elderberries!");
        }
}


Andrew80k 04-04-2008 09:58 AM

Quote:

Originally Posted by So_1337 (Post 145945)
Just a quick note... If you don't stop the timer when it triggers, you don't have to reset it. So the code for that can be even shorter:

Code:

sub EVENT_SPAWN {
        quest::settimer("repeat", 60); // First trigger after 60 seconds, and every 60 seconds after
}

sub EVENT_TIMER {
        if ($timer eq "repeat") {
                quest::shout("I fart in your general direction! Your mother was a hamster and your father smelt of elderberries!");
        }
}


Awesome this will help me finish up Corun in Surefall.


All times are GMT -4. The time now is 10:06 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.