Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

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

Reply
 
Thread Tools Display Modes
  #1  
Old 03-06-2010, 05:50 AM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 656
Default 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");
}
Reply With Quote
  #2  
Old 03-06-2010, 06:59 AM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Default

$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.
Reply With Quote
  #3  
Old 03-06-2010, 09:37 AM
nenelan
Hill Giant
 
Join Date: Feb 2008
Posts: 116
Default

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.
Reply With Quote
  #4  
Old 03-06-2010, 04:34 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 656
Default

Derision, that worked perfectly. Thanks!
Reply With Quote
  #5  
Old 03-07-2010, 05:57 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

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.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 03:38 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3