28/10/2022 20:16
Uma função que deveria ser nativa, e todos deveriam usar para seus sistemas. Algo que adianta muito em nossas vidas.
Basicamente as funções acimas pegam a posição da frente e das costas de um jogador de acordo com a distância definida.
O moto de uso é bem simples.
GetXYFrontPlayer - Pega a posição frontal.
GetXYBehindPlayer - Pega a posição de trás.
Código:
stock GetXYFrontPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
if(GetPlayerVehicleID(playerid))
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}
stock GetXYBehindPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
if(GetPlayerVehicleID(playerid))
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
x -= (distance * floatsin(-a, degrees));
y -= (distance * floatcos(-a, degrees));
}
O moto de uso é bem simples.
Código:
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z); //Pego a posição padrão do jogador.
GetXYFrontPlayer(playerid, x, y, 1); //Aqui as posições X e Y sofrem mudanças.
SetPlayerCheckpoint(playerid, x, y, z, 1); //Aqui eu seto a posição modificada.
GetXYFrontPlayer - Pega a posição frontal.
GetXYBehindPlayer - Pega a posição de trás.