EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   variables not reseting? (https://www.eqemulator.org/forums/showthread.php?t=26378)

spider661 09-30-2008 01:37 AM

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

joligario 09-30-2008 02:29 AM

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


spider661 09-30-2008 02:38 AM

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.

joligario 09-30-2008 03:22 AM

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


spider661 09-30-2008 04:05 AM

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.


All times are GMT -4. The time now is 09:03 AM.

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