05.05.2014, 00:57
La siesta fue un poco larga...
Para hacer lo que necesitas, necesitaremos, como dice Parka, un par de operaciones matemбticas bбsicas...
Imagina que tenemos una GangZone en el mapa, esta GangZone tiene de coordenadas:
Primero, necesitamos saber la diferencia de posiciones, esto lo haremos restando MinX al MaxX, osea:
Para la posiciуn random Y, es lo mismo.
Y una pequeсa prueba:
Para hacer lo que necesitas, necesitaremos, como dice Parka, un par de operaciones matemбticas bбsicas...
Imagina que tenemos una GangZone en el mapa, esta GangZone tiene de coordenadas:
- MinX: 100.0
- MinY: 400.0
- MaxX: 200.0
- MaxY: 500.0
Primero, necesitamos saber la diferencia de posiciones, esto lo haremos restando MinX al MaxX, osea:
- MaxX - MinX
- 200.0 - 100.0
Para la posiciуn random Y, es lo mismo.
pawn Код:
/*
Descripciуn
Obtener una posiciуn 2D random entre un area 2D
Parбmetros
Float:pos[2]
array -> 0
Variable donde se guardarб la posiciуn random X
array -> 1
Variable donde se guardarб la posiciуn random Y
Float:xy[4]
array -> 0
MinX del area
array -> 1
MinY del area
array -> 2
MaxX del area
array -> 3
MaxY del area
Retorno
Siempre 1.
*/
stock randomPos2D(Float:pos[2], Float:xy[4])
{
for(new i = 0; i < ((sizeof(xy))/(2)); i++) pos[i] = (random(floatround((Float:xy[i+2]-Float:xy[i])+Float:xy[i])));
return 1;
}
pawn Код:
new Float:fin[2];
randomPos2D(fin, Float:{100.0, 400.0, 200.0, 500.0});
printf("FinX: %f\nFinY: %f", fin[0], fin[1]);