07/02/2024 21:35
(Esta mensagem foi modificada pela última vez a: 07/02/2024 22:50 por xbruno1000x.)
peguei um sistema de radar em uma gm o problema e que quando eu passo pelo radar nada acontece gostaria de saber oq fazer para quando um veiculo passar no radar ficar funcionando pois qualquer veiculo que passa nada acontece aqui esta meu codigo
Código:
#include "a_samp.inc"
#include "DOF2.inc"
#include "sscanf.inc"
#include "streamer.inc"
#include "zcmd.inc"
#define MAX_RADAR 100
new Text:TEXT_RADAR[MAX_PLAYERS];
#define PastaRadares "Radares/Radar%d.ini"
static
lString[256],
radarid[MAX_PLAYERS],
vel,
Text3D:TRadar[MAX_RADAR],
Variavel[MAX_PLAYERS],
ObjetoRadar[2][MAX_RADAR],
CriandoRadar,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:Angulo;
enum radar {
Float:lPosX,
Float:lPosY,
Float:lPosZ,
Float:lAngulo,
lVelocidade,
};
new InfoRadar[MAX_RADAR][radar];
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 3030)
{
if(response)
{
static strradar[100];
GetPlayerPos(playerid, PosX, PosY, PosZ);
GetPlayerFacingAngle(playerid, Angulo);
IdRadarLivre(playerid);
InfoRadar[radarid[playerid]][lPosX] = PosX;
InfoRadar[radarid[playerid]][lPosY] = PosY;
InfoRadar[radarid[playerid]][lPosZ] = PosZ - 1.5;
InfoRadar[radarid[playerid]][lAngulo] = Angulo;
InfoRadar[radarid[playerid]][lVelocidade] = vel;
ObjetoRadar[0][radarid[playerid]] = CreateObject(18880, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ], 0.0, 0.0, InfoRadar[radarid[playerid]][lAngulo]);
ObjetoRadar[1][radarid[playerid]] = CreateObject(18880, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ], 0.0, 0.0, InfoRadar[radarid[playerid]][lAngulo] + 180.0);
format(strradar, sizeof(strradar), "{fa4c4c}RADAR\nLimite de velocidade: {818689}%d KM/H", InfoRadar[radarid[playerid]][lVelocidade]);
TRadar[radarid[playerid]] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ] + 1, 50.0, 0);
format(lString, sizeof(lString), "Radar ID: %d criado.", radarid[playerid]);
SendClientMessage(playerid, 0x004C00FF, lString);
SetPlayerPos(playerid, PosX + 1, PosY + 1, PosZ + 1);
CriandoRadar = 0;
SalvarRadares();
}
else
{
CriandoRadar = 0;
SendClientMessage(playerid, 0xFFFFFFFF, "Você fechou o diálogo de criar radar!");
}
}
return 1;
}
forward CarregarRadares();
forward SalvarRadares();
forward CheckRadar(playerid);
/*public OnPlayerConnect()
{
CarregarRadares();
return 1;
}*/
public OnGameModeInit()
{
CarregarRadares();
TEXT_RADAR[0] = TextDrawCreate(-16.000000, -24.666666, "box");
TextDrawLetterSize(TEXT_RADAR[0], 0.000000, 57.600006);
TextDrawTextSize(TEXT_RADAR[0], 691.000000, 0.000000);
TextDrawAlignment(TEXT_RADAR[0], 1);
TextDrawColor(TEXT_RADAR[0], -1);
TextDrawUseBox(TEXT_RADAR[0], 1);
TextDrawBoxColor(TEXT_RADAR[0], 153);
TextDrawSetShadow(TEXT_RADAR[0], 0);
TextDrawBackgroundColor(TEXT_RADAR[0], 255);
TextDrawFont(TEXT_RADAR[0], 1);
TextDrawSetProportional(TEXT_RADAR[0], 1);
return 1;
}
public OnGameModeExit()
{
DOF2_Exit();
SalvarRadares();
return 1;
}
CMD:deletarradarm(playerid, params[])
{
new id, strpasta[200];
if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "Digite: /deletarradar [Id do radar]");
format(strpasta, sizeof(strpasta), PastaRadares, id);
if(DOF2_FileExists(strpasta))
{
DOF2_RemoveFile(strpasta);
format(lString, sizeof(lString), "Você deletou o radar de ID: %d.", id);
SendClientMessage(playerid, 0xFF0000FF, lString);
DestroyObject(ObjetoRadar[0][id]);
DestroyObject(ObjetoRadar[1][id]);
Delete3DTextLabel(TRadar[id]);
InfoRadar[id][lPosX] = 0;
InfoRadar[id][lPosY] = 0;
InfoRadar[id][lPosZ] = 0;
InfoRadar[id][lAngulo] = 0;
InfoRadar[id][lVelocidade] = 999;
return 1;
}
else
{
format(lString, sizeof(lString), "O radar de ID: %d não existe.", id);
SendClientMessage(playerid, 0xFF0000FF, lString);
}
return 1;
}
CMD:criarradarm(playerid, params[])
{
new velocidade;
if(CriandoRadar == 1) return SendClientMessage(playerid, 0xB40000FF, "Já tem alguém criando um radar, aguarde por favor!");
if(sscanf(params, "d", velocidade)) return SendClientMessage(playerid, 0x999C9BFF, "Digite: /criarradar [velocidade]");
vel = velocidade;
GetPlayerPos(playerid, PosX, PosY, PosZ);
GetPlayerFacingAngle(playerid, Angulo);
TogglePlayerControllable(playerid, true);
SetPlayerPos(playerid, PosX, PosY, PosZ);
format(lString, sizeof(lString), "{FFFFFF}Você deseja mesmo criar um radar neste local?\n\n");
format(lString, sizeof(lString), "%s{00B4FF}Posição X: {FFFFFF}%0.4f\n{00B4FF}Posição Y: {FFFFFF} %0.4f\n{00B4FF}Posição Z: {FFFFFF} %0.4f\n{00B4FF}Ângulo: {FFFFFF}%0.4f\n{00B4FF}Velocidade: {FFFFFF}%d", lString, PosX, PosY, PosZ, Angulo, velocidade);
CriandoRadar = 1;
ShowPlayerDialog(playerid, 3030, DIALOG_STYLE_MSGBOX, "Criador de radar", lString, "Criar", "Cancelar");
return 1;
}
public CarregarRadares()
{
new strradar[100], strpasta[200];
for(new rad = 0; rad < MAX_RADAR; rad++)
{
format(strpasta, sizeof(strpasta), PastaRadares, rad);
if(DOF2_FileExists(strpasta))
{
InfoRadar[rad][lVelocidade] = DOF2_GetInt(strpasta, "Velocidade");
InfoRadar[rad][lPosX] = DOF2_GetFloat(strpasta, "PosX");
InfoRadar[rad][lPosY] = DOF2_GetFloat(strpasta, "PosY");
InfoRadar[rad][lPosZ] = DOF2_GetFloat(strpasta, "PosZ");
InfoRadar[rad][lAngulo] = DOF2_GetFloat(strpasta, "Angulo");
ObjetoRadar[0][rad] = CreateObject(18880, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ], 0.0, 0.0, InfoRadar[rad][lAngulo]);
ObjetoRadar[1][rad] = CreateObject(18880, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ], 0.0, 0.0, InfoRadar[rad][lAngulo] + 180.0);
format(strradar, sizeof(strradar), "{fa4c4c}RADAR\nLimite de velocidade: {818689}%d KM/H", InfoRadar[rad][lVelocidade]);
TRadar[rad] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ] + 1, 50.0, 0);
}
}
return 1;
}
public SalvarRadares()
{
new strpasta[200];
for(new rad = 0; rad < MAX_RADAR; rad++)
{
format(strpasta, sizeof(strpasta), PastaRadares, rad);
if(DOF2_FileExists(strpasta))
{
DOF2_SetInt(strpasta, "Velocidade", InfoRadar[rad][lVelocidade]);
DOF2_SetFloat(strpasta, "PosX", InfoRadar[rad][lPosX]);
DOF2_SetFloat(strpasta, "PosY", InfoRadar[rad][lPosY]);
DOF2_SetFloat(strpasta, "PosZ", InfoRadar[rad][lPosZ]);
DOF2_SetFloat(strpasta, "Angulo", InfoRadar[rad][lAngulo]);
}
}
return 1;
}
public CheckRadar(playerid)
{
new Float:PlayerSpeedDistance, VelocidadeDoPlayer[MAX_PLAYERS];
if(IsPlayerInAnyVehicle(playerid))
{
GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
PlayerSpeedDistance = floatmul(floatsqroot(floatadd(floatadd(floatpower(PosX, 2), floatpower(PosY, 2)), floatpower(PosZ, 2))), 170.0);
new spe = floatround(PlayerSpeedDistance * 1);
VelocidadeDoPlayer[playerid] = spe;
for(new rad = 0; rad < MAX_RADAR; rad++)
{
if(IsPlayerInRangeOfPoint(playerid, 8.0, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ]))
{
if(VelocidadeDoPlayer[playerid] > InfoRadar[rad][lVelocidade])
{
if(gettime() > Variavel[playerid])
{
Variavel[playerid] = (gettime() + 1);
format(lString, sizeof(lString), "(Radar) Você ultrapassou o limite de velocidade, o limite é {FFFFFF}%d KM/H{FD0600} e Você passou a {FFFFFF}%d KM/H!", InfoRadar[rad][lVelocidade], VelocidadeDoPlayer[playerid]);
SendClientMessage(playerid, 0xFD0600FF, lString);
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
acionartextradar(playerid);
}
}
}
}
}
return 1;
}
stock acionartextradar(playerid)
{
TextDrawShowForPlayer(playerid, TEXT_RADAR[playerid]);
SetTimer("tirartextradar", 600, false);
}
stock IdRadarLivre(playerid)
{
static rstring[74];
for(new i; i < MAX_RADAR; i++)
{
format(rstring, sizeof rstring, PastaRadares, i);
if(!DOF2_FileExists(rstring))
{
radarid[playerid] = i;
DOF2_CreateFile(rstring);
return 1;
}
}
return 0;
}