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-11-2011, 02:34 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default Can anyone see an error here?

Nevermind im not a moron. Slightly new problem. My mob spawns the npcs right the first time, then the second time he spawns them, but he keeps spawning them like every 30 secords afterwards and im not sure why.

The timer triggers after 3 minutes the first time but like i said above its like its triggering every 10-30 seconds then afterwards. I dont see anything that would make it do that, when I set the timer again i set it to 120


Code:
#azog mon

sub EVENT_HP {
	
	if($hpevent <= 98)
	{
		if ((defined($entity_list->GetNPCByNPCTypeID(999430)))) 
		{
			$npc->NPCSpecialAttacks(DIMUCNfAB, 0);
			quest::settimer("SpawnAcolytes", 120);
			quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
		}
	}
}

sub EVENT_SPAWN {
	quest::setnexthpevent(98);
}

sub EVENT_TIMER {

if ($timer == "SpawnAcolytes")
	{
		quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
		quest::settimer("SpawnAcolytes", 120);
	}
	
if ($timer == "Rampage")
	{
		plugin::AERampageEffect(100);
		quest::settimer("Rampage", 10);
	}
}

sub EVENT_SAY {				

		if($text=~/Hail/i) {
		quest::shout("Test");
		}	
		
}
Reply With Quote
  #2  
Old 05-11-2011, 03:20 PM
Shamanistik08
Sarnak
 
Join Date: Apr 2011
Posts: 47
Default

I think it comes from the if($hpevent <= 9

it might launch over and over as long as the HP are under 98, not pretty used with these variables, but I don't use this like that.
Reply With Quote
  #3  
Old 05-11-2011, 04:06 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

Quote:
Originally Posted by Shamanistik08 View Post
I think it comes from the if($hpevent <= 9

it might launch over and over as long as the HP are under 98, not pretty used with these variables, but I don't use this like that.
ahh yes, thank u, i had a similar problem like that before XD
Reply With Quote
  #4  
Old 05-11-2011, 04:15 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

ok thats not it. Its also triggering the rampage timer even though nothing sets it. Also i noticed, i removed the rampage timer now it seems like the other timer isnt triggering

Code:
#azog mon

sub EVENT_HP {

	if($hpevent == 98)
	{
		if ((defined($entity_list->GetNPCByNPCTypeID(999430)))) 
		{
			$npc->NPCSpecialAttacks(DIMUCNfAB, 0);
			quest::settimer("SpawnAcolytes", 120);
			quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
		}
	}
}

sub EVENT_SPAWN {
	quest::setnexthpevent(98);
}

sub EVENT_TIMER {

if ($timer == "SpawnAcolytes")
	{
		quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
		quest::settimer("SpawnAcolytes", 120);
	}
	
if ($timer == "Rampage")
	{
		plugin::AERampageEffect(100);
		quest::settimer("Rampage", 10);
	}
}

sub EVENT_SAY {				

		if($text=~/Hail/i) {
		quest::shout("Test");
		}	
		
}
Reply With Quote
  #5  
Old 05-11-2011, 08:42 PM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,498
Default

You should try putting your npc special attacks in double quotes as it is a string. Also in your timers, use eq instead of == for strings. Also an FYI: timers continue endlessly unless you stop them, so no need to restart timers like what you have.
Reply With Quote
  #6  
Old 05-11-2011, 10:37 PM
Shamanistik08
Sarnak
 
Join Date: Apr 2011
Posts: 47
Default

Code:
#azog mon

sub EVENT_HP {

	if($hpevent == 98)
	{
			$npc->NPCSpecialAttacks(DIMUCNfAB, 0);
			quest::settimer("SpawnAcolytes", 120);
			quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
			plugin::AERampageEffect(100);
			quest::settimer("Rampage", 10);
	}
}

sub EVENT_SPAWN {
	quest::setnexthpevent(98);
}

sub EVENT_TIMER {

if ($timer == "SpawnAcolytes")
	{
		quest::stoptimer("SpawnAcolytes");
		quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
		quest::settimer("SpawnAcolytes", 120);
	}
	
if ($timer == "Rampage")
	{
		quest::stoptimer("Rampage");
		plugin::AERampageEffect(100);
		quest::settimer("Rampage", 10);
	}
}

sub EVENT_SAY {				

		if($text=~/Hail/i) {
		quest::shout("Test");
		}	
		
}
I didn't test it, but I think the errors might come from that. Also probably possible to do it more simple. but I think it should works.
Also I am not sure why don't put the special attacks directly on mob.
Reply With Quote
  #7  
Old 05-11-2011, 10:41 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

Quote:
Originally Posted by Shamanistik08 View Post
Code:
#azog mon

sub EVENT_HP {

	if($hpevent == 98)
	{
			$npc->NPCSpecialAttacks(DIMUCNfAB, 0);
			quest::settimer("SpawnAcolytes", 120);
			quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
			quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
			plugin::AERampageEffect(100);
			quest::settimer("Rampage", 10);
	}
}

sub EVENT_SPAWN {
	quest::setnexthpevent(98);
}

sub EVENT_TIMER {

if ($timer == "SpawnAcolytes")
	{
		quest::stoptimer("SpawnAcolytes");
		quest::spawn2(999454, 0, 0, $x + 10, $y + 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x - 10, $y - 10, $z, 0);
		quest::spawn2(999454, 0, 0, $x + 10, $y - 10, $z, 0);
		quest::settimer("SpawnAcolytes", 120);
	}
	
if ($timer == "Rampage")
	{
		quest::stoptimer("Rampage");
		plugin::AERampageEffect(100);
		quest::settimer("Rampage", 10);
	}
}

sub EVENT_SAY {				

		if($text=~/Hail/i) {
		quest::shout("Test");
		}	
		
}
I didn't test it, but I think the errors might come from that. Also probably possible to do it more simple. but I think it should works.
Also I am not sure why don't put the special attacks directly on mob.
Because im making the mob immune after it has aggro, killing the acolytes will cause damage to it instead of normal fighting, until it hits 25% hp, then you will be able to kill it normally and no acolytes will spawn
Reply With Quote
  #8  
Old 05-11-2011, 10:59 PM
Shamanistik08
Sarnak
 
Join Date: Apr 2011
Posts: 47
Default

But then he regen? would it alter the hp event 98?? I don't know.

Anyway, you tested it like that?
Reply With Quote
  #9  
Old 05-11-2011, 11:30 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

yeah they arent spawning at all now after the initial spawn
Reply With Quote
  #10  
Old 05-13-2011, 11:03 AM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

I got it working by the way, i found a missing bracket

Code:
#azog mon

sub EVENT_HP {

	if($hpevent == 98)
	{
			$npc->NPCSpecialAttacks(DIMUCNfAB, 0);
			quest::settimer("SpawnAcolytes", 120);
			quest::spawn2(2700252, 0, 0, $x + 10, $y + 10, $z, 0);
			quest::spawn2(2700252, 0, 0, $x - 10, $y - 10, $z, 0);
			quest::spawn2(2700252, 0, 0, $x + 10, $y - 10, $z, 0);
			quest::setnexthpevent(25);
	}
	
	if($hpevent == 25)
	{
			$npc->NPCSpecialAttacks(DIMUCNf, 0);
			quest::stoptimer("SpawnAcolytes");

			
	}
}

sub EVENT_SPAWN {
	quest::setnexthpevent(98);
}

sub EVENT_TIMER {

if ($timer == "SpawnAcolytes")
	{
		quest::spawn2(2700252, 0, 0, $x + 10, $y + 10, $z, 0);
		quest::spawn2(2700252, 0, 0, $x - 10, $y - 10, $z, 0);
		quest::spawn2(2700252, 0, 0, $x + 10, $y - 10, $z, 0);
		quest::settimer("SpawnAcolytes", 120);
	}	
}

sub EVENT_SIGNAL {
	quest::shout("Signal Sent");
	$npc->SetHP(-100000); #damage azog mon by 5%
}
Reply With Quote
  #11  
Old 05-13-2011, 11:28 AM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,072
Default

Just FYI, it is a good idea to use 'eq' as an operator to compare strings.

When you export the $timer object in this case you are using a string to identify your timer names, not an ID. So you would be looking at something similar to:

Code:
if ($timer eq "SpawnAcolytes")
Instead of:

Code:
if ($timer == "SpawnAcolytes")
'==' is for integer comparison, IE: 1,2,3,4,5 etc.

And as Joligario was trying to say, you want to quote your strings as a best practice:

Code:
$npc->NPCSpecialAttacks(DIMUCNfAB, 0);
Should be:

Code:
$npc->NPCSpecialAttacks("DIMUCNfAB", 0);
Otherwise it looks like you are persistently figuring it out.

Hopefully that helps.
~Akka
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 01:44 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3