|
|
 |
 |
 |
 |
|
 |
 |
|
 |
 |
|
 |
|
Quests::Q&A This is the quest support section |
 |
|
 |

03-06-2010, 05:50 AM
|
Dragon
|
|
Join Date: Dec 2008
Location: Tennessee
Posts: 656
|
|
Timer based aggro
I have been looking at this script for two hours and I can not figure out why it will not work. Could someone please help me?
The script gets to quest::emote("lets loose a blood curdling howl(calling for help)"); and starts looping that emote but I have no idea why it is doing that.
Code:
sub EVENT_AGGRO {
quest::emote("starts chasing after you");
quest::settimer("countdown",8);
}
sub EVENT_TIMER {
quest::emote("lets loose a blood curdling howl(calling for help)");
my $ravenous1_mob = $entity_list->GetMobByNpcTypeID(700664);
my $ravenous2_mob = $entity_list->GetMobByNpcTypeID(700665);
my $ravenous3_mob = $entity_list->GetMobByNpcTypeID(700666);
my $ravenous4_mob = $entity_list->GetMobByNpcTypeID(700667);
my $ravenous5_mob = $entity_list->GetMobByNpcTypeID(700668);
my $ravenous6_mob = $entity_list->GetMobByNpcTypeID(700669);
my $ravenous7_mob = $entity_list->GetMobByNpcTypeID(700670);
my $ravenous8_mob = $entity_list->GetMobByNpcTypeID(700671);
my $ravenous9_mob = $entity_list->GetMobByNpcTypeID(700672);
my $ravenous10_mob = $entity_list->GetMobByNpcTypeID(700673);
my $ravenous11_mob = $entity_list->GetMobByNpcTypeID(700674);
my $ravenous12_mob = $entity_list->GetMobByNpcTypeID(700675);
my $ravenous13_mob = $entity_list->GetMobByNpcTypeID(700676);
my $ravenous14_mob = $entity_list->GetMobByNpcTypeID(700677);
my $ravenous15_mob = $entity_list->GetMobByNpcTypeID(700678);
my $ravenous16_mob = $entity_list->GetMobByNpcTypeID(700679);
my $ravenous17_mob = $entity_list->GetMobByNpcTypeID(700680);
my $ravenous18_mob = $entity_list->GetMobByNpcTypeID(700681);
my $ravenous19_mob = $entity_list->GetMobByNpcTypeID(700682);
my $ravenous20_mob = $entity_list->GetMobByNpcTypeID(700683);
if ($ravenous1_mob) {
my $ravenous1_mobnpc = $ravenous1_mob->CastToNPC();
$ravenous1_mobnpc->AddToHateList($client, 1);
}
if ($ravenous2_mob) {
my $ravenous2_mobnpc = $ravenous2_mob->CastToNPC();
$ravenous2_mobnpc->AddToHateList($client, 1);
}
if ($ravenous3_mob) {
my $ravenous3_mobnpc = $ravenous3_mob->CastToNPC();
$ravenous3_mobnpc->AddToHateList($client, 1);
}
if ($ravenous4_mob) {
my $ravenous4_mobnpc = $ravenous4_mob->CastToNPC();
$ravenous4_mobnpc->AddToHateList($client, 1);
}
if ($ravenous5_mob) {
my $ravenous5_mobnpc = $ravenous5_mob->CastToNPC();
$ravenous5_mobnpc->AddToHateList($client, 1);
}
if ($ravenous6_mob) {
my $ravenous6_mobnpc = $ravenous6_mob->CastToNPC();
$ravenous6_mobnpc->AddToHateList($client, 1);
}
if ($ravenous7_mob) {
my $ravenous7_mobnpc = $ravenous7_mob->CastToNPC();
$ravenous7_mobnpc->AddToHateList($client, 1);
}
if ($ravenous8_mob) {
my $ravenous8_mobnpc = $ravenous8_mob->CastToNPC();
$ravenous8_mobnpc->AddToHateList($client, 1);
}
if ($ravenous9_mob) {
my $ravenous9_mobnpc = $ravenous9_mob->CastToNPC();
$ravenous9_mobnpc->AddToHateList($client, 1);
}
if ($ravenous10_mob) {
my $ravenous10_mobnpc = $ravenous10_mob->CastToNPC();
$ravenous10_mobnpc->AddToHateList($client, 1);
}
if ($ravenous11_mob) {
my $ravenous11_mobnpc = $ravenous11_mob->CastToNPC();
$ravenous11_mobnpc->AddToHateList($client, 1);
}
if ($ravenous12_mob) {
my $ravenous12_mobnpc = $ravenous12_mob->CastToNPC();
$ravenous12_mobnpc->AddToHateList($client, 1);
}
if ($ravenous13_mob) {
my $ravenous13_mobnpc = $ravenous13_mob->CastToNPC();
$ravenous13_mobnpc->AddToHateList($client, 1);
}
if ($ravenous14_mob) {
my $ravenous14_mobnpc = $ravenous14_mob->CastToNPC();
$ravenous14_mobnpc->AddToHateList($client, 1);
}
if ($ravenous15_mob) {
my $ravenous15_mobnpc = $ravenous15_mob->CastToNPC();
$ravenous15_mobnpc->AddToHateList($client, 1);
}
if ($ravenous16_mob) {
my $ravenous16_mobnpc = $ravenous16_mob->CastToNPC();
$ravenous16_mobnpc->AddToHateList($client, 1);
}
if ($ravenous17_mob) {
my $ravenous17_mobnpc = $ravenous17_mob->CastToNPC();
$ravenous17_mobnpc->AddToHateList($client, 1);
}
if ($ravenous18_mob) {
my $ravenous18_mobnpc = $ravenous18_mob->CastToNPC();
$ravenous18_mobnpc->AddToHateList($client, 1);
}
if ($ravenous19_mob) {
my $ravenous19_mobnpc = $ravenous19_mob->CastToNPC();
$ravenous19_mobnpc->AddToHateList($client, 1);
}
if ($ravenous20_mob) {
my $ravenous20_mobnpc = $ravenous20_mob->CastToNPC();
$ravenous20_mobnpc->AddToHateList($client, 1);
}
quest::stoptimer("countdown");
}
|
 |
|
 |
 |
|
 |

03-06-2010, 06:59 AM
|
Developer
|
|
Join Date: Feb 2004
Location: UK
Posts: 1,540
|
|
$client isn't exported to EVENT_TIMER.
I'm not the quest expert, but this works for me. What you can do is make a note of the name of the player who aggroed the mob in EVENT_AGGRO, then in EVENT_TIMER, lookup the Client object using the name you stored, i.e. this works:
Code:
sub EVENT_AGGRO {
quest::emote("starts chasing after you");
quest::settimer("countdown",8);
$AggroOn = $name;
}
sub EVENT_TIMER {
quest::stoptimer("countdown");
quest::emote("lets loose a blood curdling howl(calling for help)");
# Check if the person who aggroed us is still here
#
$client = $entity_list->GetClientByName($AggroOn);
if(!$client)
{
return;
}
my $ravenous1_mob = $entity_list->GetMobByNpcTypeID(700664);
my $ravenous2_mob = $entity_list->GetMobByNpcTypeID(700665);
my $ravenous3_mob = $entity_list->GetMobByNpcTypeID(700666);
my $ravenous4_mob = $entity_list->GetMobByNpcTypeID(700667);
my $ravenous5_mob = $entity_list->GetMobByNpcTypeID(700668);
my $ravenous6_mob = $entity_list->GetMobByNpcTypeID(700669);
my $ravenous7_mob = $entity_list->GetMobByNpcTypeID(700670);
my $ravenous8_mob = $entity_list->GetMobByNpcTypeID(700671);
my $ravenous9_mob = $entity_list->GetMobByNpcTypeID(700672);
my $ravenous10_mob = $entity_list->GetMobByNpcTypeID(700673);
my $ravenous11_mob = $entity_list->GetMobByNpcTypeID(700674);
my $ravenous12_mob = $entity_list->GetMobByNpcTypeID(700675);
my $ravenous13_mob = $entity_list->GetMobByNpcTypeID(700676);
my $ravenous14_mob = $entity_list->GetMobByNpcTypeID(700677);
my $ravenous15_mob = $entity_list->GetMobByNpcTypeID(700678);
my $ravenous16_mob = $entity_list->GetMobByNpcTypeID(700679);
my $ravenous17_mob = $entity_list->GetMobByNpcTypeID(700680);
my $ravenous18_mob = $entity_list->GetMobByNpcTypeID(700681);
my $ravenous19_mob = $entity_list->GetMobByNpcTypeID(700682);
my $ravenous20_mob = $entity_list->GetMobByNpcTypeID(700683);
if ($ravenous1_mob) {
my $ravenous1_mobnpc = $ravenous1_mob->CastToNPC();
$ravenous1_mob->AddToHateList($client, 1);
}
if ($ravenous2_mob) {
my $ravenous2_mobnpc = $ravenous2_mob->CastToNPC();
$ravenous2_mobnpc->AddToHateList($client, 1);
}
if ($ravenous3_mob) {
my $ravenous3_mobnpc = $ravenous3_mob->CastToNPC();
$ravenous3_mobnpc->AddToHateList($client, 1);
}
if ($ravenous4_mob) {
my $ravenous4_mobnpc = $ravenous4_mob->CastToNPC();
$ravenous4_mobnpc->AddToHateList($client, 1);
}
if ($ravenous5_mob) {
my $ravenous5_mobnpc = $ravenous5_mob->CastToNPC();
$ravenous5_mobnpc->AddToHateList($client, 1);
}
if ($ravenous6_mob) {
my $ravenous6_mobnpc = $ravenous6_mob->CastToNPC();
$ravenous6_mobnpc->AddToHateList($client, 1);
}
if ($ravenous7_mob) {
my $ravenous7_mobnpc = $ravenous7_mob->CastToNPC();
$ravenous7_mobnpc->AddToHateList($client, 1);
}
if ($ravenous8_mob) {
my $ravenous8_mobnpc = $ravenous8_mob->CastToNPC();
$ravenous8_mobnpc->AddToHateList($client, 1);
}
if ($ravenous9_mob) {
my $ravenous9_mobnpc = $ravenous9_mob->CastToNPC();
$ravenous9_mobnpc->AddToHateList($client, 1);
}
if ($ravenous10_mob) {
my $ravenous10_mobnpc = $ravenous10_mob->CastToNPC();
$ravenous10_mobnpc->AddToHateList($client, 1);
}
if ($ravenous11_mob) {
my $ravenous11_mobnpc = $ravenous11_mob->CastToNPC();
$ravenous11_mobnpc->AddToHateList($client, 1);
}
if ($ravenous12_mob) {
my $ravenous12_mobnpc = $ravenous12_mob->CastToNPC();
$ravenous12_mobnpc->AddToHateList($client, 1);
}
if ($ravenous13_mob) {
my $ravenous13_mobnpc = $ravenous13_mob->CastToNPC();
$ravenous13_mobnpc->AddToHateList($client, 1);
}
if ($ravenous14_mob) {
my $ravenous14_mobnpc = $ravenous14_mob->CastToNPC();
$ravenous14_mobnpc->AddToHateList($client, 1);
}
if ($ravenous15_mob) {
my $ravenous15_mobnpc = $ravenous15_mob->CastToNPC();
$ravenous15_mobnpc->AddToHateList($client, 1);
}
if ($ravenous16_mob) {
my $ravenous16_mobnpc = $ravenous16_mob->CastToNPC();
$ravenous16_mobnpc->AddToHateList($client, 1);
}
if ($ravenous17_mob) {
my $ravenous17_mobnpc = $ravenous17_mob->CastToNPC();
$ravenous17_mobnpc->AddToHateList($client, 1);
}
if ($ravenous18_mob) {
my $ravenous18_mobnpc = $ravenous18_mob->CastToNPC();
$ravenous18_mobnpc->AddToHateList($client, 1);
}
if ($ravenous19_mob) {
my $ravenous19_mobnpc = $ravenous19_mob->CastToNPC();
$ravenous19_mobnpc->AddToHateList($client, 1);
}
if ($ravenous20_mob) {
my $ravenous20_mobnpc = $ravenous20_mob->CastToNPC();
$ravenous20_mobnpc->AddToHateList($client, 1);
}
}
I'm sure one of the resident quest experts will chime in if there is a better way to do it.
|
 |
|
 |

03-06-2010, 09:37 AM
|
Hill Giant
|
|
Join Date: Feb 2008
Posts: 116
|
|
Only way I can see for anything improvement wise is make a foreach loop to shrink that down to much less lines of code. Other than that looks fine.
|

03-06-2010, 04:34 PM
|
Dragon
|
|
Join Date: Dec 2008
Location: Tennessee
Posts: 656
|
|
Derision, that worked perfectly. Thanks!
|

03-07-2010, 05:57 AM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Although, it isn't really required if you are only using 1 timer for a script like this, it is normally common to put all of that stuff inside an IF statement to check that the timer matches the timer name you set. So, you would do something like this:
Code:
sub EVENT_TIMER {
if($timer eq "countdown") {
#Put your timer stuff inside here...
}
}
That way, you can have multiple timers with different names within the same script. Otherwise, if you try to use other timers, it will be running everything from your other timers every time as well. For the script you have now, you don't really need it, but it is good practice to use it.
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 03:38 PM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |