PDA

View Full Version : Can anyone see an error here?


Astal
05-11-2011, 02:34 PM
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



#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
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


#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
#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
#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

#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:

if ($timer eq "SpawnAcolytes")

Instead of:

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:

$npc->NPCSpecialAttacks(DIMUCNfAB, 0);

Should be:

$npc->NPCSpecialAttacks("DIMUCNfAB", 0);

Otherwise it looks like you are persistently figuring it out.

Hopefully that helps.
~Akka