Log in

View Full Version : Spawning/Casting from Inside HP Events


Malignus Wingnut
09-12-2004, 03:50 PM
Hello all. I'm having some errors with a quest file i have. It involves casting and spawning monsters from inside HP Events. Here's the file.


#Kaldra
#zone - Kod`Taz
#quest - Final Event

sub EVENT_SPAWN
{
quest::shout("WHO DARES CHALLENGE ME? I AM THE FINAL ARBITER OF MOLIMO, YOUR QUEST ENDS HERE, MORTALS!");
quest::setnexthpevent(70);
}

sub EVENT_ATTACK
{

quest::spawn(291096,0,0,($x-10),$y,$z);
quest::spawn(291096,0,0,($x+10),$y,$z);
quest::spawn(291096,0,0,($x-20),$y,$z);
quest::spawn(291096,0,0,($x+20),$y,$z);
quest::spawn(291096,0,0,$x,($y+10),$z);
}


sub EVENT_HP
{
if($hpevent == 70)
{
quest::selfcast(3150);
quest::setnexthpevent(30);
}

if($hpevent == 30)
{
quest::spawn(281097,0,0,($x-20),$y,$z);
quest::spawn(281097,0,0,($x+20),$y,$z);
}
}



sub EVENT_DEATH
{

quesT::shout("I underestimated you, Mortals. Very well, though you have bested me, Molimo will not relinquish his throne.");
}



When it hits the part of quest::selfcast and quest::spawn (inside the if statements about $hpevent==x)zone.exe gives me CastToClient errors. Is this an error in my source code of zone.exe or an error in my quest file? Heh...or both?

I do have an Idea though... since both spawn and selfcast work outside of the hp events, is there a Goto like function? To go to a certain label in the quest file, and then return to where it was called after it is done? Using that i could just have it jump to another section of the code upon the if($hpevent==x) statements returning true.

If you have any ideas of what could be wrong, please post.

killspree
09-12-2004, 04:28 PM
Try this:
#Kaldra
#zone - Kod`Taz
#quest - Final Event

sub EVENT_SPAWN {
quest::shout("WHO DARES CHALLENGE ME? I AM THE FINAL ARBITER OF MOLIMO, YOUR QUEST ENDS HERE, MORTALS!");
quest::setnexthpevent(70);
}

sub EVENT_ATTACK {
quest::spawn(291096,0,0,($x-10),$y,$z);
quest::spawn(291096,0,0,($x+10),$y,$z);
quest::spawn(291096,0,0,($x-20),$y,$z);
quest::spawn(291096,0,0,($x+20),$y,$z);
quest::spawn(291096,0,0,$x,($y+10),$z);
}

sub EVENT_HP {
if($hpevent == 70) {
firstevent();
}
if($hpevent == 30) {
secondevent();
}
}

sub EVENT_DEATH {
quesT::shout("I underestimated you, Mortals. Very well, though you have bested me, Molimo will not relinquish his throne.");
}

sub firstevent {
quest::selfcast(3150);
quest::setnexthpevent(30);
}

sub secondevent {
quest::spawn(281097,0,0,($x-20),$y,$z);
quest::spawn(281097,0,0,($x+20),$y,$z);
}

Apologies if I missed an error somewhere that could be causing it, but I'm tired heh.

Malignus Wingnut
09-12-2004, 04:31 PM
Ahah! Exactly the kind of function i wanted. Thanks Killspree.

m0oni9
09-13-2004, 01:32 AM
A while ago I submitted a change that I think might fix this. It doesn't look like it actually got merged in. Would you mind giving it a try? http://www.eqemulator.net/forums/viewtopic.php?t=13906. Where it says to change line 342, the line number is now 351, The other couple line numbers are probably off too, but should be somewhere near. This might also fix some other odd problems you could run into.