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 11-29-2010, 04:07 AM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default Quest Help: Random Mob Spawning ect..

Im looking for a way spawn a mob every so often when one mob is killed.

Say every time you kill a mob there is a 10% change of it spawning a new different mob.

This is what ive been testing. I just need to set a number, so if it ='s # then spawn a mob, like if the number comes up as 5, then have it spawn. The only problem is it doesnt seem to random. Like certain numbers dont come up much at all for some reason (i assume thats the way the function is).

Does anyone know of a better more "random" way I could do this?

If not, i tested it and I guess it will work good enough. If anyone knows a better way plz lemme know

Code:
sub EVENT_SAY {

#Define number range
  my $range = 10;
  my $random_number = int(rand($range));
	if($text=~/Hail/i) {
		quest::say("Your number is $random_number");
		}
 
 }

This is my complete script atm

Code:
 sub EVENT_DEATH {
 
	$range = 10;
	$random_number = int(rand($range));
  
	if($random_number == 0){
	quest::spawn(999481,0,0,2822,730,378);
	}
 
 }
Reply With Quote
  #2  
Old 11-29-2010, 06:29 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,490
Default

That would do it. FYI: The $x, $y, and $z are passed at run-time if you want to use those for location rather than a fixed location.
Reply With Quote
  #3  
Old 11-29-2010, 10:06 AM
nenelan
Hill Giant
 
Join Date: Feb 2008
Posts: 116
Default

The fun thing with random numbers, is that they aren't going to be completely random. To increase the "randomness" of it, you can simply increase your scope.
I.E. if you want it to spawn on one number from 1-10, it is going to have more variance than having it spawn from 91-100 in 1-100.

Code:
	$random_number = int(rand(100));
	if($random_number >= 91) {
		quest::spawn(999481,0,0,$x,$y,$z);
	}
As Joligario said, you can just fill in $x, $y, $z (and $h if you want it to face the same way the last mob was dying).

Also, if you have a list of monsters you want to spawn, you can use this little trick to pull one out.

Code:
sub EVENT_DEATH {
	@MobList = (999481, 999483, 999488); # make an array of your mob numbers here.
	$MobToSpawn = $MobList [rand @MobList]; # Should pick out one mob through the length of the array
	$random_number = int(rand(100));

	if($random_number >= 91) {
		quest::spawn($MobToSpawn, 0, 0, $x, $y, $h);
	}
 
 }
This should work, have not tested it though.

Last edited by nenelan; 11-29-2010 at 10:07 AM.. Reason: Cleaned up look
Reply With Quote
  #4  
Old 11-29-2010, 02:41 PM
Astal
Hill Giant
 
Join Date: Mar 2010
Posts: 236
Default

Quote:
Originally Posted by nenelan View Post
The fun thing with random numbers, is that they aren't going to be completely random. To increase the "randomness" of it, you can simply increase your scope.
I.E. if you want it to spawn on one number from 1-10, it is going to have more variance than having it spawn from 91-100 in 1-100.

Code:
	$random_number = int(rand(100));
	if($random_number >= 91) {
		quest::spawn(999481,0,0,$x,$y,$z);
	}
As Joligario said, you can just fill in $x, $y, $z (and $h if you want it to face the same way the last mob was dying).

Also, if you have a list of monsters you want to spawn, you can use this little trick to pull one out.

Code:
sub EVENT_DEATH {
	@MobList = (999481, 999483, 999488); # make an array of your mob numbers here.
	$MobToSpawn = $MobList [rand @MobList]; # Should pick out one mob through the length of the array
	$random_number = int(rand(100));

	if($random_number >= 91) {
		quest::spawn($MobToSpawn, 0, 0, $x, $y, $h);
	}
 
 }
This should work, have not tested it though.
yeah i was trying to do that with $npc->GetX() ect.... and it didnt work. Ill try your way soon, thanks guys
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 10:15 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