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 05-16-2011, 11:32 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

Quote:
Originally Posted by trevius View Post
Try something like this, where 999424 is the NPCID of your main boss, which I assume is named Laibach. This script would be placed on each of your add NPCs. This assumes that they are attacked as well, to trigger this event, otherwise you can just signal them from your main boss to trigger this same bit of code instead.

Code:
sub EVENT_ATTACK {

	# Get Laibach if he is up
	my $laibach = $entity_list->GetMobByNpcTypeID(999424);
	# Make sure you got him before using $laibach as a pointer
	if($laibach)
	{
		# Get a random entry on Laibach's hate list
		my $HateTarget = $laibach->GetHateRandom();
		# Get the ID of that hate entry for use with CastSpell
		my $HateTargetID = $HateTarget->GetID();
		# Cast a spell on the random hate target (Courage in this example)
		$npc->CastSpell(11, $HateTargetID);
	}
}
oh, so i can put that on my other mobs not liabach and it will work the same?

the other mobs are immune to melee, only damaged by spells
Reply With Quote
  #2  
Old 05-16-2011, 11:47 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Personally, I like to run everything from 1 NPC so there is less scripts involved, but sometimes that can get a little tricky and it is probably best for you to start off as simple as possible until you are comfortable moving to more complex stuff.

To run it all from the boss, would take a bit more information. But, a simple example would be like this:

Code:
sub EVENT_ATTACK {

	# Get each of the NPC casters:
	my $AddNPC1 = $entity_list->GetMobByNpcTypeID(999425);
	my $AddNPC2 = $entity_list->GetMobByNpcTypeID(999426);
	my $AddNPC3 = $entity_list->GetMobByNpcTypeID(999427);
	my $AddNPC4 = $entity_list->GetMobByNpcTypeID(999428);
	
	# Get a random entry on Laibach's hate list
	my $HateTarget = $npc->GetHateRandom();
	# Get the ID of that hate entry for use with CastSpell
	my $HateTargetID = $HateTarget->GetID();
	
	# Make sure you got him before using $laibach as a pointer
	if($AddNPC1)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC1->CastSpell(11, $HateTargetID);
	}
	if($AddNPC2)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC2->CastSpell(11, $HateTargetID);
	}
	if($AddNPC3)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC3->CastSpell(11, $HateTargetID);
	}
	if($AddNPC4)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC4->CastSpell(11, $HateTargetID);
	}

}
That will be run from your boss and you will need to edit the NPC ID for each of the adds that you have, assuming they each have their own unique NPC Type IDs. This version will make it so that each of your adds all concentrate on the same random hate target instead of each of them choosing a separate random hate target. You can get separate random hate targets for each one if you want easy enough though.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #3  
Old 05-16-2011, 11:50 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

Quote:
Originally Posted by trevius View Post
Personally, I like to run everything from 1 NPC so there is less scripts involved, but sometimes that can get a little tricky and it is probably best for you to start off as simple as possible until you are comfortable moving to more complex stuff.

To run it all from the boss, would take a bit more information. But, a simple example would be like this:

Code:
sub EVENT_ATTACK {

	# Get each of the NPC casters:
	my $AddNPC1 = $entity_list->GetMobByNpcTypeID(999425);
	my $AddNPC2 = $entity_list->GetMobByNpcTypeID(999426);
	my $AddNPC3 = $entity_list->GetMobByNpcTypeID(999427);
	my $AddNPC4 = $entity_list->GetMobByNpcTypeID(999428);
	
	# Get a random entry on Laibach's hate list
	my $HateTarget = $npc->GetHateRandom();
	# Get the ID of that hate entry for use with CastSpell
	my $HateTargetID = $HateTarget->GetID();
	
	# Make sure you got him before using $laibach as a pointer
	if($AddNPC1)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC1->CastSpell(11, $HateTargetID);
	}
	if($AddNPC2)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC2->CastSpell(11, $HateTargetID);
	}
	if($AddNPC3)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC3->CastSpell(11, $HateTargetID);
	}
	if($AddNPC4)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC4->CastSpell(11, $HateTargetID);
	}

}
That will be run from your boss and you will need to edit the NPC ID for each of the adds that you have, assuming they each have their own unique NPC Type IDs. This version will make it so that each of your adds all concentrate on the same random hate target instead of each of them choosing a separate random hate target. You can get separate random hate targets for each one if you want easy enough though.
Ok cool, I can understand that, im sure with a bit of reading i can get em to get random hate targets. (thats what im lookin for)

thanks trev

oh what if they have the same Id? its based off of one mob i made multiple spawns of, just use the one Id then?

Also does that update each time he is attacked or only the first attack?

If its just once, ill have to figure a way to maybe work a timer in, so it selects new random targets every so often
Reply With Quote
  #4  
Old 05-17-2011, 01:37 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

If they are all the same ID, then you will need to do an NPC List search to find each NPC that matches that ID. Then, you can perform whatever within that same part of the loop.

If you need it to happen multiple times, then the best way is to do it on a timer, as EVENT_ATTACK is not for each round.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #5  
Old 05-19-2011, 04:08 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

still having some problems everything triggers but they dont cast the spell.

Is it because im getting them by an entitylist?

They are getting my guys ID, i checked that in the one shout (not in this script the one in my editor)

so only thing i can think of is
my $AddNPC1 = $entity_list->GetMobByNpcTypeID(2700253);

since its an entitylist and there is no $entity_list->CastSpell function, or am i reading it wrong?

$AddNPC1->CastSpell(21480, $HateTargetID);

Code:
sub EVENT_SAY {	

		if($text=~/Hail/i) {
		$client->Message(315, "Script Working");
		}	
}


sub EVENT_SPAWN {
	
}


sub EVENT_HP {

}

sub EVENT_AGGRO {

	quest::settimer("Random_Hate", 25); #set timer to get random hate mob
	quest::shout("Timer Set");
}

sub EVENT_TIMER {

if ($timer eq "Random_Hate" ) {

	quest::shout("Timer Triggered");
	
	my $range = 120; #maximum number
	my $minimum = 60; #minimum number

	my $random_number = int(rand($range)) + $minimum; #generate a number between $minimum and $range
	
	quest::settimer("Random_Hate", $random_number); #set timer to a random number between 60 and 120

	# Get each of the NPC casters:
	my $AddNPC1 = $entity_list->GetMobByNpcTypeID(2700253);
	my $AddNPC2 = $entity_list->GetMobByNpcTypeID(2700259);
	my $AddNPC3 = $entity_list->GetMobByNpcTypeID(2700260);
	my $AddNPC4 = $entity_list->GetMobByNpcTypeID(2700266);
	
	# Get a random entry on Laibach's hate list
	my $HateTarget = $npc->GetHateRandom();
	# Get the ID of that hate entry for use with CastSpell
	my $HateTargetID = $HateTarget->GetID();
	
	# Make sure you got him before using $laibach as a pointer
	if($AddNPC1)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC1->CastSpell(21480, $HateTargetID);
		quest::shout("You cannot defeat our mother!!!");
	}
	if($AddNPC2)
	{
		# Cast a spell on the random hate target (Courage in this example)
		$AddNPC2->CastSpell(21480, $HateTargetID);
		quest::shout("You cannot defeat our mother!!!");
	}
	if($AddNPC3)
	{
		 #Cast a spell on the random hate target (Courage in this example)
		$AddNPC3->CastSpell(21480, $HateTargetID);
		quest::shout("You cannot defeat our mother!!!");
	}
	if($AddNPC4)
	{
		 #Cast a spell on the random hate target (Courage in this example)
		$AddNPC3->CastSpell(21480, $HateTargetID);
		quest::shout("You cannot defeat our mother!!!");
	
	}
	
}

}
Reply With Quote
Reply

Thread Tools
Display Modes

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 02:21 AM.


 

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 - 2026, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3