SA-MP Forums Archive
[Pedido] Morrer e ir para o hospital mais prуximo. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Morrer e ir para o hospital mais prуximo. (/showthread.php?tid=632118)



Morrer e ir para o hospital mais prуximo. - PetrickSchobaPS - 09.04.2017

Pessoal tenho um sistema de hospital em meu servidor, porйm devido modificaзхes preciso colocar pra quando o jogador morrer ele ir para o hospital mais prуximo e eu sei que deve-se usar a funзгo GetPlayerDistanceFromPoint, porйm nem sei como fazer por causa do meu sistema de hospital.

Estas variбveis irб informar em qual hospital o jogador irб apуs morrer.
pawn Код:
Cidade_Que_Morreu[playerid] = 1; // Los Santos
    Cidade_Que_Morreu[playerid] = 2; // San Fierro
    Cidade_Que_Morreu[playerid] = 3; // Las Venturas
Abaixo estгo a posiзгo das entradas do hospital.
pawn Код:
1172.0776, -1323.3926, 15.4031 // Los Santos
1610.9330, 1824.2340, -92.7844 // San Fierro
1607.4191, 1815.4803, 10.8203 // Las Venturas
Quem poder me ajudar ou fazer este cуdigo, ficaria bem grato


Re: Morrer e ir para o hospital mais prуximo. - IlanZ - 09.04.2017

Nгo tenho ideia se vai funcionar, ou nгo.

PHP код:
new Cidade_Que_Morreu[MAX_PLAYERS];

public 
OnPlayerDeath(playeridkilleridreason)
{
    if(
IsPlayerInLosSantos(playerid))
    {    
        
Cidade_Que_Morreu[playerid] = 1// Los Santos
    
}
    if(
IsPlayerInSanFierro(playerid))
    {
        
Cidade_Que_Morreu[playerid] = 2// SanFierro
    
}
    if(
IsPlayerInLasVenturas(playerid))
    {
        
Cidade_Que_Morreu[playerid] = 3// Las Venturas
    
}
    return 
1;
}

static 
stock IsPlayerInLosSantos(playerid)
{
    new 
Float:x,Float:y,Float:z;
    
GetPlayerPos(playeridxyz);
    if(
>= 44.60 && >= -2892.90 && <= 2997.00 && <= -768.00) return 1;
    else return 
0;
}

static 
stock IsPlayerInLasVenturas(playerid)
{
    new 
Float:x,Float:y,Float:z;
    
GetPlayerPos(playeridxyz);
    if(
>= 869.40 && >= 596.30 && <= 2997.00 && <= 2993.80) return 1;
    else return 
0;
}

static 
stock IsPlayerInSanFierro(playerid)
{
    new 
Float:x,Float:y,Float:z;
    
GetPlayerPos(playeridxyz);
    if(
>= -2954.502 && >=  -3012.892 && <= -957.5858 && <= 1436.379) return 1;
    else return 
0;




Re: Morrer e ir para o hospital mais prуximo. - PetrickSchobaPS - 09.04.2017

Quote:
Originally Posted by IlanZ
Посмотреть сообщение
Nгo tenho ideia se vai funcionar, ou nгo.

PHP код:
new Cidade_Que_Morreu[MAX_PLAYERS];
public 
OnPlayerDeath(playeridkilleridreason)
{
    if(
IsPlayerInLosSantos(playerid))
    {    
        
Cidade_Que_Morreu[playerid] = 1// Los Santos
    
}
    if(
IsPlayerInSanFierro(playerid))
    {
        
Cidade_Que_Morreu[playerid] = 2// SanFierro
    
}
    if(
IsPlayerInLasVenturas(playerid))
    {
        
Cidade_Que_Morreu[playerid] = 3// Las Venturas
    
}
    return 
1;
}
static 
stock IsPlayerInLosSantos(playerid)
{
    new 
Float:x,Float:y,Float:z;
    
GetPlayerPos(playeridxyz);
    if(
>= 44.60 && >= -2892.90 && <= 2997.00 && <= -768.00) return 1;
    else return 
0;
}
static 
stock IsPlayerInLasVenturas(playerid)
{
    new 
Float:x,Float:y,Float:z;
    
GetPlayerPos(playeridxyz);
    if(
>= 869.40 && >= 596.30 && <= 2997.00 && <= 2993.80) return 1;
    else return 
0;
}
static 
stock IsPlayerInSanFierro(playerid)
{
    new 
Float:x,Float:y,Float:z;
    
GetPlayerPos(playeridxyz);
    if(
>= -2954.502 && >=  -3012.892 && <= -957.5858 && <= 1436.379) return 1;
    else return 
0;

Obrigado, mas isso eu jб tenho. Й que em Los Santos possui um hospital e o posto mйdico, no caso o jogador que morre-se em los santos iria pra coordenada que estivesse mais perto dele, isso nгo vai ajudar.


Re: Morrer e ir para o hospital mais prуximo. - IlanZ - 09.04.2017

Separa Los Santos em duas GZ de acordo com o lado do hospital


Re: Morrer e ir para o hospital mais prуximo. - PetrickSchobaPS - 09.04.2017

Quote:
Originally Posted by IlanZ
Посмотреть сообщение
Separa Los Santos em duas GZ de acordo com o lado do hospital
Isso seria uma boa ideia, mas em a proximidade seria bem mais fбcil para as outras cidades como Tierra roubada, imagine tem que ficar separando isso iria dar um trabalho ruim sabendo que no caso de aproximidade facilita muito e nгo vou colocar apenas esses 3 pontos de hospitais, nas cidades pequenas tambйm.


Re: Morrer e ir para o hospital mais prуximo. - renatog - 09.04.2017

O que vocк quer й que o jogador vб para o hospital mais prуximo da cidade que ele estб?
Se sim:
1. Salve todas as coordenadas dos hospitais em uma array separando por cidades;
2. Quando ele morrer obtenha qual cidade ele morreu e faзa um loop pelas coordenadas desta cidade;
3. Veja qual destas posiзхes estб mais perto com a sua funзгo GetPlayerDistanceFromPoint e manda ele pro mais prуximo;

Se vocк quiser que ele vб apenas para o mais prуximo, sem filtro de cidade:
1. Salve todas as coordenadas dos hospitais numa array;
2. Quando ele morrer dк o loop nas coordenadas e veja qual estб mais prуxima com aquela funзгo;

Depois disso й sу fazer ele ir pro hospital daquela coordenada.


Re: Morrer e ir para o hospital mais prуximo. - HoodScript - 09.04.2017

Quote:
Originally Posted by PetrickSchobaPS
Посмотреть сообщение
Pessoal tenho um sistema de hospital em meu servidor, porйm devido modificaзхes preciso colocar pra quando o jogador morrer ele ir para o hospital mais prуximo e eu sei que deve-se usar a funзгo GetPlayerDistanceFromPoint, porйm nem sei como fazer por causa do meu sistema de hospital.

Estas variбveis irб informar em qual hospital o jogador irб apуs morrer.
pawn Код:
Cidade_Que_Morreu[playerid] = 1; // Los Santos
    Cidade_Que_Morreu[playerid] = 2; // San Fierro
    Cidade_Que_Morreu[playerid] = 3; // Las Venturas
Abaixo estгo a posiзгo das entradas do hospital.
pawn Код:
1172.0776, -1323.3926, 15.4031 // Los Santos
1610.9330, 1824.2340, -92.7844 // San Fierro
1607.4191, 1815.4803, 10.8203 // Las Venturas
Quem poder me ajudar ou fazer este cуdigo, ficaria bem grato
Код:
forward GetClosestHospital(playerid);
public GetClosestHospital(playerid)
{
	if(!IsPlayerConnected(playerid))
	{
		return -1;
	}
	new prevhosp;
	new Float:prevdist = 100000.000;
	for(new hospid = 0; hospid < 3; hospid++)
	{
		new Float:dist;
		if(hospid == 0)
		{
			dist = GetPlayerDistanceToPoint(playerid, 1172.0776, -1323.3926, 0.0);
		}
		else if(hospid == 1)
		{
			dist = GetPlayerDistanceToPoint(playerid, 1610.9330, 1824.2340, 0.0);
		}
		else if(hospid == 2)
		{
			dist = GetPlayerDistanceToPoint(playerid, 1607.4191, 1815.4803, 0.0);
		}
		if((dist < prevdist))
		{
			prevdist = dist;
			prevhosp = hospid;
		}
	}
	return prevhosp;
}

coloque isto no onplayerdeath:


	if(GetClosestHospital(playerid) == 0)
	{
		SetSpawnInfo(playerid, 1, SKIN AQUI, 1172.0776, -1323.3926, 15.4031, 0.0, 0, 0, 0, 0, 0, 0);
	}
	else if(GetClosestHospital(playerid) == 1)
	{
		SetSpawnInfo(playerid, 1 , SKIN AQUI, 1610.9330, 1824.2340, -92.7844, 0.0, 0, 0, 0, 0, 0, 0);
	}
	else  if(GetClosestHospital(playerid) == 2)
	{
		SetSpawnInfo(playerid, 1, SKIN AQUI, 1607.4191, 1815.4803, 10.8203, 0.0, 0, 0, 0, 0, 0, 0);
	}



Re: Morrer e ir para o hospital mais prуximo. - renatog - 09.04.2017

Po, explica ao cara como faz, nгo da cуdigo zoado nгo.


Re: Morrer e ir para o hospital mais prуximo. - RodrigoMSR - 09.04.2017

Код:
stock HospProx(playerid)
{
	new Float:Hosp[3][3] = {
	{1172.0776, -1323.3926, 15.4031}, // Los Santos
	{1610.9330, 1824.2340, -92.7844}, // San Fierro
	{1607.4191, 1815.4803, 10.8203} // Las Venturas
	};
	
	new Float:dist, Float:ldist = 99999999.0, hosp = 1;
	for(new i = 0; i < sizeof(Hosp); i++)
	{
	    dist = GetPlayerDistanceFromPoint(playerid, Hosp[i][0], Hosp[i][1], Hosp[i][2]);
	    if(dist < ldist)
	    {
			ldist = dist;
			hosp = i+1;
	    }
	}
	return hosp;
}
Код:
Cidade_Que_Morreu[playerid] = HospProx(playerid);



Re: Morrer e ir para o hospital mais prуximo. - PetrickSchobaPS - 09.04.2017

Agradeзo a ajuda de todos. O cуdigo do rodrigo й o que eu queria. valeu galera