26.09.2010, 23:01
Updated to version 2.1 (Can a mod update the title please and thank you) while trying to achieve something I wanted in LSA since starting it, I realized that my method of returning the result from MRandFloatRange could not be used as a true Float value in Pawn. While it worked as it was for random object rotations plugging the variables into MapAndreas however did not work. Thanks to Kye (MapAndreas) I was able to see how to actually pass the value properly. You must now declare your Float variable and use that as the third return parameter.
Some of you may wonder why all the fuss for random float ranges? Well here is some pseudo code....
In case you didn't catch those comments, when using this plugin and MapAndreas you could have a random coordinate picked in Los Santos and have a money pickup spawned on that coordinates ground level, (MapAndreas limitations apply) tuck that in a loop under OnGameModeInit and you can have 50 random drops....hell you could make yourself a scavenger gamemode if you wanted too....every round pickups in new locations....
[EDIT] An advantage over this method than previous ones is you would have to declare an array of preset locations, which takes time to pick and takes up more memory. Sure they could also just be in the middle of the street which isn't always practical but still it shows its uses....
Speed Test Results:
This is comparing Pawns default random, this plugins MRandom and also MRandFloatRange. MRandFloatRange is slightly slower by about 50ns per call. MRandom is still slightly faster than Pawn (and more random!!)
DOWNLOAD: http://forum.sa-mp.com/showthread.ph...037#post462037
Some of you may wonder why all the fuss for random float ranges? Well here is some pseudo code....
pawn Код:
new
Float:x,
Float:y,
Float:z;
MRandFloatRange(408.7256, 2849.402, x); // min and max X coord's
MRandFloatRange(-1167.788, -1891.816, y); // min and max Y coord's Creates an area around Los Santos
MapAndreas_FindZ_For2DCoord(x, y, z); // finds the ground level for the previous X and Y coord.
somevar = CreatePickup(1212, 2, x, y, z, -1); //Creates a money packet pickup somewhere in Los Santos
[EDIT] An advantage over this method than previous ones is you would have to declare an array of preset locations, which takes time to pick and takes up more memory. Sure they could also just be in the middle of the street which isn't always practical but still it shows its uses....
Speed Test Results:
This is comparing Pawns default random, this plugins MRandom and also MRandFloatRange. MRandFloatRange is slightly slower by about 50ns per call. MRandom is still slightly faster than Pawn (and more random!!)
Код:
[17:40:03] random -> Average time per call : 144 ns -> Total execution time : 72 ms -> Calls per second : 6944444 calls [17:40:03] random -> Average time per call : 120 ns -> Total execution time : 60 ms -> Calls per second : 8333333 calls [17:40:04] MRandom -> Average time per call : 120 ns -> Total execution time : 60 ms -> Calls per second : 8333333 calls [17:40:04] MRandom -> Average time per call : 116 ns -> Total execution time : 58 ms -> Calls per second : 8620689 calls [17:40:04] MRandFloatRange -> Average time per call : 170 ns -> Total execution time : 85 ms -> Calls per second : 5882353 calls [17:40:04] MRandFloatRange -> Average time per call : 162 ns -> Total execution time : 81 ms -> Calls per second : 6172839 calls [17:40:04] random -> Average time per call : 116 ns -> Total execution time : 58 ms -> Calls per second : 8620689 calls [17:40:04] random -> Average time per call : 118 ns -> Total execution time : 59 ms -> Calls per second : 8474576 calls [17:40:04] MRandom -> Average time per call : 112 ns -> Total execution time : 56 ms -> Calls per second : 8928571 calls [17:40:04] MRandom -> Average time per call : 114 ns -> Total execution time : 57 ms -> Calls per second : 8771930 calls [17:40:04] MRandFloatRange -> Average time per call : 170 ns -> Total execution time : 85 ms -> Calls per second : 5882353 calls [17:40:04] MRandFloatRange -> Average time per call : 162 ns -> Total execution time : 81 ms -> Calls per second : 6172839 calls