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(playerid, killerid, reason)
{
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(playerid, x, y, z);
if(x >= 44.60 && y >= -2892.90 && x <= 2997.00 && y <= -768.00) return 1;
else return 0;
}
static stock IsPlayerInLasVenturas(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 869.40 && y >= 596.30 && x <= 2997.00 && y <= 2993.80) return 1;
else return 0;
}
static stock IsPlayerInSanFierro(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= -2954.502 && y >= -3012.892 && x <= -957.5858 && y <= 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(playerid, killerid, reason)
{
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(playerid, x, y, z);
if(x >= 44.60 && y >= -2892.90 && x <= 2997.00 && y <= -768.00) return 1;
else return 0;
}
static stock IsPlayerInLasVenturas(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 869.40 && y >= 596.30 && x <= 2997.00 && y <= 2993.80) return 1;
else return 0;
}
static stock IsPlayerInSanFierro(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= -2954.502 && y >= -3012.892 && x <= -957.5858 && y <= 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