Portal SAMP
[Ajuda] corrija meu codigo por favor - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] corrija meu codigo por favor (/showthread.php?tid=4506)



corrija meu codigo por favor - LOS_SANTOS - 07/02/2024

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;
}



RE: corrija meu codigo por favor - Fack_Insane - 07/02/2024

Bom amigo esse código enorme é difícil de te ajudar mais eu acho que seu problema é que a função "CheckRadar" não está sendo chamada coloque um "SetTimerEx("CheckRadar", 200, true, "d", playerid);" que irá resolver seu problema.


RE: corrija meu codigo por favor - White_Blue - 08/02/2024

Atente-se ao título, prefira títulos auto-descritivos e evite postar o código inteiro a menos que seja estritamente necessário. Se esse for o caso, use o Pastebin ou o GitHub para postar grandes trechos de código. Poste apenas a área onde ocorre o problema para o qual você precisa de ajuda. Tente fornecer mais informações e realizar mais debugs por si mesmo, pois isso facilitará ajudá-lo.


RE: corrija meu codigo por favor - LOS_SANTOS - 08/02/2024

(08/02/2024 02:11)White_Blue Escreveu: Atente-se ao título, prefira títulos auto-descritivos e evite postar o código inteiro a menos que seja estritamente necessário. Se esse for o caso, use o Pastebin ou o GitHub para postar grandes trechos de código. Poste apenas a área onde ocorre o problema para o qual você precisa de ajuda. Tente fornecer mais informações e realizar mais debugs por si mesmo, pois isso facilitará ajudá-lo.

ok desculpem postei o codigo enteiro porq nao sabia ao certo onde se encontrava o erro mas ja resolvi era muito simples era so colocar uma public chamada onplayerupdate e tudo funcionou o problma agora e quando eu salvo o radar criado alguns fica sallvo outros fica tudo em zero nao sei se falta alguma include que resolva isso mas obg pela ajuda e desculpem o mal jeito