14/02/2023 12:23
Boa tarde/noite/dia
To fazendo um sistema de radares editaveis e criaveis in-game, essa parte de criar, carregar e editar esta tudo ok. Porém o sistema em sí da funcionabilidade do radar nao está como deveria.
eu tive como base sistema de radares de outros servidores, pois nao sabia como ia criar, entao vo deixar a public e as stocks aq pra q possam me ajudar a identificar o erro.
PROBLEMA: se aumentar o raio do pedagio eu tomo varias multas até sair do raio, se eu diminuir o raio eu passo um pouco mais afastado (tipo na outra mao da rua) e o radar nao pega.
Se eu ficar parado ou passar devagar no pedagio ele vai floodando a mensagem de velocidade registrada enquanto eu estiver no raio.
eu queria saber oq eu faço pra fazer com q o radar faça só uma leitura por cada passada por ele, e isso ja resolveria tambem o bug de floodar caso fique parado nele
Obs: a public é chamada no timer atualizador do velocimetro, nao achei outro lugar q eu pudesse colocar
To fazendo um sistema de radares editaveis e criaveis in-game, essa parte de criar, carregar e editar esta tudo ok. Porém o sistema em sí da funcionabilidade do radar nao está como deveria.
eu tive como base sistema de radares de outros servidores, pois nao sabia como ia criar, entao vo deixar a public e as stocks aq pra q possam me ajudar a identificar o erro.
PROBLEMA: se aumentar o raio do pedagio eu tomo varias multas até sair do raio, se eu diminuir o raio eu passo um pouco mais afastado (tipo na outra mao da rua) e o radar nao pega.
Se eu ficar parado ou passar devagar no pedagio ele vai floodando a mensagem de velocidade registrada enquanto eu estiver no raio.
eu queria saber oq eu faço pra fazer com q o radar faça só uma leitura por cada passada por ele, e isso ja resolveria tambem o bug de floodar caso fique parado nele
Obs: a public é chamada no timer atualizador do velocimetro, nao achei outro lugar q eu pudesse colocar
Citar:forward OnPlayerRadar(playerid);
public OnPlayerRadar(playerid)
{
new id = GetPlayerVehicleID(playerid); //bike rural bike BMX bike Mountain
if(IsPlayerInAnyVehicle(playerid) && PLAYER_STATE_DRIVER && GetVehicleModel(id) != 481 && GetVehicleModel(id) != 509 && GetVehicleModel(id) != 510)
{
new texto[256];
for(new i; i < MAX_RADAR; i++)
{
if(IsPlayerInCircle(playerid, Radar[i][RadarX], Radar[i][RadarY], 10))
{
if(GetPlayerSpeed(playerid) > Radar[i][rLimite])
{
if(OnRadar[playerid] == 0)
{
TextDrawShowForPlayer(playerid, DrawFlash);
PlayerPlaySound(playerid,1132, 0.0, 0.0, 0.0);
SetTimerEx("flash", 1000, false, "i", playerid);
format(texto, sizeof(texto),"| RADAR | Velocidade registrada: %i Km/h", GetPlayerSpeed(playerid));
SendClientMessage(playerid, verde, texto);
format(texto, sizeof(texto), "| RADAR | Você foi multado por excesso de velocidade no radar (%dKm/h)", Radar[i][rLimite]);
SendClientMessage(playerid, modavancado, texto);
Player[playerid][Multas] ++;
format(texto, sizeof(texto),"| INFO | Você já está acumulando %d multas!", Player[playerid][Multas]);
SendClientMessage(playerid, azul2, texto);
if(Player[playerid][Multas] >= 5 && Player[playerid][HabA] == 1)
{
Player[playerid][HabT] = 0;
Player[playerid][Crimes] += 10;
SetPlayerWantedLevel(playerid, 6);
SendClientMessage(playerid,modavancado,"| INFO | Você perdeu sua habilitação e rebeu 10 pontos de crimes por acumular 6 multas!");
}
if(Player[playerid][HabA] == 0)
{
Player[playerid][Crimes] += 10;
SetPlayerWantedLevel(playerid, 6);
SendClientMessage(playerid,modavancado,"| INFO | Você recebeu 10 pontos de crime por estar sem habilitação");
}
OnRadar[playerid] = 1;
}
}
else
{
if(OnRadar[playerid] == 0)
{
GameTextForPlayer(playerid, "~r~RADAR", 3000, 3);
format(texto, 256,"| RADAR | Velocidade registrada: %iKm/h", GetPlayerSpeed(playerid));
SendClientMessage(playerid, verde, texto);
OnRadar[playerid] = 1;
}
}
}
else OnRadar[playerid] = 0;
}
}
}
IsPlayerInCircle(playerid,Float:x,Float:y,radius)
{
if(GetPlayerDistanceToPoint2(playerid,Float:x,Float:y) < radius)
{
return 1;
}
return 0;
}
GetPlayerDistanceToPoint2(playerid,Float:x,Float:y)
{
new Float:x1,Float:y1,Float:z1; GetPlayerPos(playerid,x1,y1,z1);
new Float:tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+
floatpower(floatabs(floatsub(y,y1)),2));
return floatround(tmpdis);
}