Log in

View Full Version : Quest Help: Random Mob Spawning ect..


Astal
11-29-2010, 04:07 AM
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

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


sub EVENT_DEATH {

$range = 10;
$random_number = int(rand($range));

if($random_number == 0){
quest::spawn(999481,0,0,2822,730,378);
}

}

joligario
11-29-2010, 06:29 AM
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.

nenelan
11-29-2010, 10:06 AM
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.


$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.

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. :)

Astal
11-29-2010, 02:41 PM
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.


$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.

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