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 09-30-2008, 01:37 AM
spider661
Discordant
 
Join Date: Oct 2005
Location: michigain
Posts: 260
Default variables not reseting?

im making a quest and its not the only one i have had this happen in and it eventually breaks all my quest that use them.

if i use a $var then it does not reset without a reload quest.

example.

Code:
my $Random = quest::ChooseRandom(Warrior,Cleric,Paladin,Ranger,Shadowknight,Druid,Monk,Bard,Rogue,Shaman,Necromancer,Wizard,Magician,Enchanter,Beastlord,Berserker);

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

sub EVENT_HP 
{ 	
if($hpevent == 99)
{ 
quest::shout("Only The powers of a $Random can defeat me!");
}
}
this quest should say every time it gets to 99% that whatever class can kill him.. but i hit it it says wiz then i repop it it still says wiz and will continue to say wiz until i reload quest then it will redo the random and say something else.

is there something i can put in here to clear the variables like a #reloadquest
Reply With Quote
  #2  
Old 09-30-2008, 02:29 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,497
Default

That's because it only executes that location once.

You can move your random into the HP event, or somewhere that it will be executed more than once. Another option is to set a timer and have your random execute again.

For example:
Code:
my $Random;

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

sub EVENT_HP 
{ 	
if($hpevent == 99)
{ 
$Random = quest::ChooseRandom(Warrior,Cleric,Paladin,Ranger,Shadowknight,Druid,Monk,Bard,Rogue,Shaman,Necromancer,Wizard,Magician,Enchanter,Beastlord,Berserker);

quest::shout("Only The powers of a $Random can defeat me!");
}
}
Reply With Quote
  #3  
Old 09-30-2008, 02:38 AM
spider661
Discordant
 
Join Date: Oct 2005
Location: michigain
Posts: 260
Default

ok this is the quest i got now

Code:
my $Random;

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

sub EVENT_HP 
{ 	
if($hpevent == 99)
{ 
$Random = quest::ChooseRandom(Warrior,Cleric,Paladin,Ranger,Shadowknight,Druid,Monk,Bard,Rogue,Shaman,Necromancer,Wizard,Magician,Enchanter,Beastlord,Berserker);

quest::shout("Only The powers of a $Random can defeat me!");
}
}

sub EVENT_ATTACK
{
if($class eq $Random)
{
quest::say("You are the right one to kill me");
}
else
{
quest::say("You can not kill me you are a $class and you need to be a $Random");
}
}
this is all with no #reloadquest

first time it shouts only the powers of a rouge can defeat me. then it says You can not kill me you are a warrior and you need to be a BLANK

repop hit again it shout only the powers of a wiz can defeat me and then it says You can not kill me you are a warrior and you need to be a rouge
and so on

what its doing is first time its blank then every time after it its what it said the previous time its not clearing it right.
Reply With Quote
  #4  
Old 09-30-2008, 03:22 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,497
Default

Correct. I was only giving you an example of what to do with it. It will not choose the random until he is actually at 99% health. EVENT_ATTACK executes before he gets to 99%.

Maybe if I know a little more how you want it to work, I can give you better code. Looking from what you have, try this:

Code:
my $Random;

sub EVENT_SPAWN {
  quest::setnexthpevent(99);
  $Random = quest::ChooseRandom(Warrior,Cleric,Paladin,Ranger,Shadowknight,Druid,Monk,Bard,Rogue,Shaman,Necromancer,Wizard,Magician,Enchanter,Beastlord,Berserker);
}

sub EVENT_HP {	
  if($hpevent == 99) {
    quest::shout("Only The powers of a $Random can defeat me!");
  }
}

sub EVENT_ATTACK {
  if($class eq $Random) {
    quest::say("You are the right one to kill me");
  }
  else {
    quest::say("You can not kill me you are a $class and you need to be a $Random");
  }
}
Reply With Quote
  #5  
Old 09-30-2008, 04:05 AM
spider661
Discordant
 
Join Date: Oct 2005
Location: michigain
Posts: 260
Default

ok i think i get it by calling it in the spawn im calling it before anything else calls is so then it knows what to do with it from that point on until he is repoped then it reads it again because if the spawn.
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 03:27 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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3