spell se me ha adelantado, pero aсadirй una pequeсa explicaciуn. El principio aplicado es el mismo que el de la soluciуn anterior ya que es el mбs rбpido.
Teniendo en cuenta que el mapa del GTA San Andreas es bбsicamente un cuadrado y las coordenadas en el eje X/Y van del -3000 hasta 3000, deducimos que de una esquina a otra habrб una distancia de 6000. La distancia mбxima que podrнa haber estarнa en la diagonal de dicho cuadrado (aproximadamente 8485,28 metros), se calcula aplicando el Teorema de Pitбgoras.
Redondeamos la distancia mбxima a 8600 y aplicamos bбsicamente lo que
spell puso mбs arriba.
PHP код:
stock GetNearestBusiness(playerid, tipo) {
new ID_cercana = -1,
Float:Pos = 0.0,
Float:maxPos = 8600.0;
for (new i = 0; i < MAX_NEGOCIOS; i++)
{
if (Negocio[i][nTipo] == tipo)
{
Pos = GetPlayerDistanceFromPoint(playerid, Negocio[i][nExteriorX], Negocio[i][nExteriorY], Negocio[i][nExteriorZ]);
if (Pos <= maxPos) {
maxPos = Pos;
ID_cercana = i;
}
}
}
return ID_cercana;
}
Se hace un bucle a travйs de todos los negocios que tienen
nTipo = tipo, se saca la distancia desde el jugador hasta tal negocio y se compara a la distancia mбxima posible. Si la distancia obtenida (Pos) es menor a la mбxima distancia, tomarб el lugar de "mбxima distancia" (maxPos). Luego, cualquier distancia que sea menor que la mбxima distancia, serб el negocio mбs cercano (ID_cercana).
EDIT: visto el cуdigo, solo es posible que devuelva un valor. Como mucho serнa posible que dos o mбs negocios se encuentren a la misma distancia. Ya he modificado el cуdigo.