[Ajuda] Hospital mais prуximo
#1

Primeiramente boa noite =)
Estou precisando de ajuda em um sistema de hospital (Quando o player morrer spawna no hospital mais prуximo), eu jб tenho uma noзгo de como fazer mais preciso de ajuda na questгo da localidade da morte do player e ir para o hospital mais prуximo, no caso vai ter um hospital em cada cidade.
Pensei em usar GetPlayerDistanceFromPoint mais nгo sei bem como fazer, alguйm poderia dar um exemplo/base ou uma dica de funзгo melhor ?
Desde jб obrigado.
Reply
#2

E o que vocк nгo entendeu? Й exatamente isso. Crie um ponto fixo em cada hospital e faзa o GetPlayerDistanceFromPoint. O menor valor significa que o hospital й o mais perto.
Reply
#3

Quote:
Originally Posted by Kamper
Посмотреть сообщение
E o que vocк nгo entendeu? Й exatamente isso. Crie um ponto fixo em cada hospital e faзa o GetPlayerDistanceFromPoint. O menor valor significa que o hospital й o mais perto.
Sim. mais como exatamente eu faria para calcular o menor valor e spawnar o jogador la ?
Reply
#4

Й bem fбcil!

Primeiramente vocк precisa de uma array para servir como banco de dados dos hospitais. Nesse exemplo botei de forma fictнcia as coordenadas da entrada do hospital seguidas das coordenadas da бrea de spawn no hospital e logo apуs o interior do hospital.

Код:
#define MAX_HOSPITALS 3
enum e_hospital
{
	Float:x,
	Float:y,
	Float:z,
	Float:x2,
	Float:y2,
	Float:z3,
	interior
};

new hospitals[MAX_HOSPITALS][e_hospital] =
{
	{1.0, 2.0, 3.0, 21.0, 22.0, 23.0, 1},		
	{9.0, 8.0, 7.0, 31.0, 32.0, 33.0, 2},		
	{10.0, 11.0, 12.0, 1.0, 2.0, 3.0, 3}		
};
Logo apуs quando o jogador morrer vocк faz um looping nessa array e monta uma lуgica para armazenar sempre em uma variбvel a distвncia menor e o нndice do nosso array de dados que corresponde a distвncia menor:

Код:
new index;
new Float:distance;
new Float:tmpDistance;
for(new i=0; i < MAX_HOSPITALS; i++)
{
	tmpDistance = GetPlayerDistanceFromPoint(playerid, hospitals[i][x], hospitals[i][y], hospitals[i][z]);
	if (!distance || tmpDistance < distance)
	{
		distance = tmpDistance;
		index = i;
	}
}
E no final a variбvel index terб o нndice do hospital de menor distвncia. E assim vocк poderia usar o cуdigo abaixo para teleportar o jogador:

Код:
SetPlayerPos(playerid, hospitals[index][x2], hospitals[index][y2], hospitals[index][z2]);
SetPlayerInteior(playerid, hospitals[index][interior]);
OBS.: O cуdigo possui dados fictнcios para mostrar a lуgica.

Mais fбcil que isso sу eu abrindo seu GM e fazendo pra voce
Reply
#5

Quote:
Originally Posted by Kamper
Посмотреть сообщение
Й bem fбcil!

Primeiramente vocк precisa de uma array para servir como banco de dados dos hospitais. Nesse exemplo botei de forma fictнcia as coordenadas da entrada do hospital seguidas das coordenadas da бrea de spawn no hospital e logo apуs o interior do hospital.

Код:
#define MAX_HOSPITALS 3
enum e_hospital
{
	Float:x,
	Float:y,
	Float:z,
	Float:x2,
	Float:y2,
	Float:z3,
	interior
};

new hospitals[MAX_HOSPITALS][e_hospital] =
{
	{1.0, 2.0, 3.0, 21.0, 22.0, 23.0, 1},		
	{9.0, 8.0, 7.0, 31.0, 32.0, 33.0, 2},		
	{10.0, 11.0, 12.0, 1.0, 2.0, 3.0, 3}		
};
Logo apуs quando o jogador morrer vocк faz um looping nessa array e monta uma lуgica para armazenar sempre em uma variбvel a distвncia menor e o нndice do nosso array de dados que corresponde a distвncia menor:

Код:
new index;
new Float:distance;
new Float:tmpDistance;
for(new i=0; i < MAX_HOSPITALS; i++)
{
	tmpDistance = GetPlayerDistanceFromPoint(playerid, hospitals[i][x], hospitals[i][y], hospitals[i][z]);
	if (!distance || tmpDistance < distance)
	{
		distance = tmpDistance;
		index = i;
	}
}
E no final a variбvel index terб o нndice do hospital de menor distвncia. E assim vocк poderia usar o cуdigo abaixo para teleportar o jogador:

Код:
SetPlayerPos(playerid, hospitals[index][x2], hospitals[index][y2], hospitals[index][z2]);
SetPlayerInteior(playerid, hospitals[index][interior]);
OBS.: O cуdigo possui dados fictнcios para mostrar a lуgica.

Mais fбcil que isso sу eu abrindo seu GM e fazendo pra voce
Intendi
Muito obrigado mesmo pela ajuda, vocк explica muito bem.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)