EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Can anyone see an error here? (https://www.eqemulator.org/forums/showthread.php?t=33515)

Astal 05-11-2011 02:34 PM

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");
                }       
               
}


Shamanistik08 05-11-2011 03:20 PM

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

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.

Astal 05-11-2011 04:06 PM

Quote:

Originally Posted by Shamanistik08 (Post 199729)
I think it comes from the if($hpevent <= 98)

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

Astal 05-11-2011 04:15 PM

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");
                }       
               
}


joligario 05-11-2011 08:42 PM

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.

Shamanistik08 05-11-2011 10:37 PM

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.

Astal 05-11-2011 10:41 PM

Quote:

Originally Posted by Shamanistik08 (Post 199752)
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

Shamanistik08 05-11-2011 10:59 PM

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

Anyway, you tested it like that?

Astal 05-11-2011 11:30 PM

yeah they arent spawning at all now after the initial spawn

Astal 05-13-2011 11:03 AM

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%
}


Akkadius 05-13-2011 11:28 AM

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


All times are GMT -4. The time now is 07:11 PM.

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