28.11.2013, 14:37
Well this is the function that i made by a mistake but is working so...
The modulus function i dont know if is ok :/
This return a random point * Count in a zone perimeter
pawn Код:
stock CreateRandomPosInZonePerimeter(Count, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
new Float:Width = floatabs(MaxX - MinX);
new Float:Height = floatabs(MaxY - MinY);
new Float:Perimeter = (Width * 2) + (Height * 2);
for(new i = 0; i != Count; i++) {
new Float:C[2],Float:dist = modulus(random(9000), Perimeter);
if(dist <= Width) {
C[0] = modulus(random(9000), Width) + MinX;
C[1] = MinY;
} else if(dist <= Width + Height) {
C[0] = MaxX;
C[1] = modulus(random(9000), Height) + MinY;
} else if(dist <= (Width * 2) + Height) {
C[0] = modulus(random(9000), Width) + MinX;
C[1] = MaxY;
} else {
C[0] = MinX;
C[1] = modulus(random(9000), Height) + MinY;
}
//Do something with X = (C[0]) Y = (C[1])
printf("%f : %f",C[0],C[1]);
}
}
pawn Код:
stock Float:modulus(Float:a, Float:b)
{
while(a > b)
a -= b;
return a;
}
This return a random point * Count in a zone perimeter
![](http://s9.postimg.org/cqxqmcyr3/Immagine.png)