EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Quest Help: Random Mob Spawning ect.. (https://www.eqemulator.org/forums/showthread.php?t=32560)

Astal 11-29-2010 04:07 AM

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


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.

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

Astal 11-29-2010 02:41 PM

Quote:

Originally Posted by nenelan (Post 194603)
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


All times are GMT -4. The time now is 12:07 AM.

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