18/07/2023 00:19
(Esta mensagem foi modificada pela última vez a: 18/07/2023 00:21 por White_Blue.)
(17/07/2023 23:13)LOS_SANTOS Escreveu: galera vcs que sao bem mais entendido no assunto para eu detectar se um player esta proximo de um outro player qualquer se usa o proxdetector ne? esse detector de aproximacao ele e uma funcao nativa do samp ou pra ele funcionar eu preciso baixar alguma include para essa funcao funcionar ? essa e minha duvida porq criei esse comando mais como ainda nao estou em casa nao testei nem compilei pra saber se tinha algum erro
CMD:reparar(playerid, const params[])
{
//new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, amarelo, ">>Use: /reparar[id]<<");
//if(playerid == id) return SendClientMessage(playerid, vermelho, "* Você não pode reparar seu propio carro!");
if(ProxDetectorS(8.0, playerid, playerid)return SendClientMessage(playerid,vermelho,"esse jogador nao esta proximo de voce.");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,amarelo,"esse jogador nao esta conectado.");
new Float:health;
new veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
RepairVehicle(GetPlayerVehicleID(playerid));
if(health > 500) return SendClientMessage(playerid, vermelho, ">>este veiculo nao precisa de reparo ainda!<<");
SetVehicleHealth(veh, 1000);
return 1;
}
Teste a função abaixo, não testei mas creio que irá funcionar.
Código PHP:
Float:GetDistanceBetweenPlayers(playerid, playerid2, Float:radius) {
new Float:pos[3], distance;
GetPlayerPos(playerid2, pos[0], pos[1], pos[2]);
distance = GetPlayerDistanceFromPoint(playerid, pos[0], pos[1], pos[2]);
if(distance <= radius) return 1;
return 0;
}
Seu código reformulado com a função:
Código PHP:
CMD:reparar(playerid, const params[])
{
new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, amarelo, ">>Use: /reparar[id]<<");
if(!GetDistanceBetweenPlayers(playerid, id, 8.0)) return SendClientMessage(playerid,vermelho,"esse jogador nao esta proximo de voce.");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,amarelo,"esse jogador nao esta conectado.");
new Float:health;
new veh = GetPlayerVehicleID(id);
GetVehicleHealth(veh, health);
RepairVehicle(GetPlayerVehicleID(id));
if(health > 500) return SendClientMessage(playerid, vermelho, ">>este veiculo nao precisa de reparo ainda!<<");
SetVehicleHealth(veh, 1000);
return 1;
}
stock Float:GetDistanceBetweenPlayers(playerid, playerid2, Float:radius) {
new Float:pos[3], distance;
GetPlayerPos(playerid2, pos[0], pos[1], pos[2]);
distance = GetPlayerDistanceFromPoint(playerid, pos[0], pos[1], pos[2]);
if(distance <= radius) return 1;
return 0;
}
Vale lembrar que você estava verificando se o jogador estava próximo dele mesmo, não do outro jogador e estava consertando o veículo do playerid(O veículo da própria pessoa que executa o comando) não do ID digitado.
Não estou disponível para realizar serviços relacionados ao SA-MP e não costumo responder a mensagens privadas, a menos que estejam relacionadas à moderação do fórum.