22/09/2023 11:32
(11/01/2023 12:20)xbruno1000x Escreveu:E como ficaria esse código se fosse pra pegar o máximo de jogadores em volta do player? (um exemplo pra ficar mais facil de entender) /darvidaperto e retorna dando vida a todos os players que estão envolta.(11/01/2023 09:29)MisteriumBr Escreveu: Opa, como ficaria o codigo acima com a função GetDistanceBetweenPlayers?
Função GetDistanceBetweenPlayers:
Código:forward Float:GetDistanceBetweenPlayers(p1,p2);
public Float:GetDistanceBetweenPlayers(p1,p2)
{
new Float:Pos1[3], Float:Pos2[3];
if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
return -1.00;
GetPlayerPos(p1, Pos1[0], Pos1[1], Pos1[2]),
GetPlayerPos(p2, Pos2[0], Pos2[1], Pos2[2]);
return floatsqroot(floatpower(floatabs(floatsub(Pos2[0],Pos1[0])),2)+floatpower(floatabs(floatsub(Pos2[1],Pos1[1])),2)+floatpower(floatabs(floatsub(Pos2[2],Pos1[2])),2));
}
Comando:
Código:CMD:teste(playerid, params[])
{
new Float:PosCP[3], str[40];
GetPlayerPos(playerid, PosCP[0], PosCP[1], PosCP[2]);
for(new i; i < MAX_PLAYERS; i++)
{
if(GetDistanceBetweenPlayers(playerid, i) <= 10)
{
format(str, sizeof(str),"Você está próximo do jogador %s, você deu 1000 reais à ele.", nome(i));
SCM(playerid, -1, str);
GivePlayerMoney(i, 1000);
}
}
return 1;
}
Vale ressaltar que para dar o dinheiro apenas para 1 jogador, terá que usar o break para parar o looping.