Portal SAMP
[Ajuda] radar velocidade - 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] radar velocidade (/showthread.php?tid=4451)



radar velocidade - LOS_SANTOS - 23/01/2024

queria adicionar o mapicon R ao criar o radar  e que ficasse salvo quando carregar os radares so isso nao tenho experiencia suficiente de fazer isso nao quero que modifique o codigo simplesmente so adicionar o mapicon R ao criar o rAadar que fique salvo na posicao criada , desculpem nao sei colocar em pasterbin sou leigo ainda em pc 


Código PHP:
#define PastaRadares "Radares/Radar%d.ini"

static lString[256],
       
radarid[MAX_PLAYERS],
       
vel,
       
Text3D:TRadar[MAX_RADAR],
       
ObjetoRadar[2][MAX_RADAR],
       
CriandoRadar,
       
Float:PosXX,
       
Float:PosYY,
       
Float:PosZZ,
       
Float:Angulo;
enum radar
{
    
Float:lPosXX,
    
Float:lPosYY,
    
Float:lPosZZ,
    
Float:lAngulo,
    
lVelocidade,
};
enum pInfo
{
    
PPassouRadar
}
new 
InfoRadar[MAX_RADAR][radar];
new 
Text:Flash;
new 
gstring[256];
new 
Bit1:
aradar <MAX_PLAYERS>;
new 
PlayerInfo[MAX_PLAYERS][pInfo];

public 
OnFilterScriptInit()
{
    
Flash TextDrawCreate(635.000000432.000000"__");
    
TextDrawBackgroundColor(Flash255);
    
TextDrawFont(Flash1);
    
TextDrawLetterSize(Flash0.500000, -45.900001);
    
TextDrawColor(Flash, -256);
    
TextDrawSetOutline(Flash0);
    
TextDrawSetProportional(Flash1);
    
TextDrawSetShadow(Flash1);
    
TextDrawUseBox(Flash1);
    
TextDrawBoxColor(Flash, -86);
    
TextDrawTextSize(Flash6.00000035.000000);
    
CarregarRadares();
    return 
1;
}
public 
OnFilterScriptExit()
{
    
SalvarRadares();
    return 
1;
}
forward MapIconSet(playeridFloat:xFloat:yFloat:ztypecolorstyle);
forward MapIconRemove(playerid);
public 
MapIconSet(playeridFloat:xFloat:yFloat:ztypecolorstyle)
{
    
MapIconSet(radarid[playerid], InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], MAPICON_LOCAL18880COLOR_LIGHTRED);
    return 
1;
}

public 
MapIconRemove(playerid)
{
    
MapIconSet(radarid[playerid], InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], MAPICON_LOCAL18880COLOR_LIGHTRED);
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if (
dialogid == 3030)
    {
        if (
response)
        {
            static 
strradar[100];
            
GetPlayerPos(playeridPosXXPosYYPosZZ);
            
GetPlayerFacingAngle(playeridAngulo);
            
IdRadarLivre(playerid);
            
InfoRadar[radarid[playerid]][lPosXX] = PosXX;
            
InfoRadar[radarid[playerid]][lPosYY] = PosYY;
            
InfoRadar[radarid[playerid]][lPosZZ] = PosZZ 1.5;
            
InfoRadar[radarid[playerid]][lAngulo] = Angulo;
            
InfoRadar[radarid[playerid]][lVelocidade] = vel;
           
ObjetoRadar[0][radarid[playerid]] = CreateObject(18880InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], 0.00.0InfoRadar[radarid[playerid]][lAngulo]);
           
ObjetoRadar[1][radarid[playerid]] = CreateObject(18880InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], 0.00.0InfoRadar[radarid[playerid]][lAngulo] + 180.0);
            
format(strradarsizeof(strradar), "{FF0000}Radar\nLimite de velocidade: %d KM/H"InfoRadar[radarid[playerid]][lVelocidade]);
            
TRadar[radarid[playerid]] = Text3D:Create3DTextLabel(strradar, -1InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ] + 150.00);
            
format(lStringsizeof(lString), "Radar ID: %d criado."radarid[playerid]);
            
SendClientMessage(playerid0x0000F6AAlString);
            
SetPlayerPos(playeridPosXX 1PosYY 1PosZZ 1);
            
CriandoRadar 0;
            
SalvarRadares();
            
MapIconSet(radarid[playerid], InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], MAPICON_LOCAL18880COLOR_LIGHTRED);
        }
        else
        {
            
CriandoRadar 0;
            
SendClientMessage(playerid0xFFFFFFFF"Voc  fechou o dialog de criar radar!");
        }
    }
    return 
1;
}
public 
OnPlayerUpdate(playerid)
{
    
CheckRadar(playerid);
    return 
1;
}
CMD:deletarradar(playeridparams[])
{
    new 
idstrpasta[200];
    if (
sscanf(params"d"id)) return SendClientMessage(playerid0xFF0000FF"Digite: /deletarradar [ID do Radar]");
    
format(strpastasizeof(strpasta), PastaRadaresid);
    if (
dini_Exists(strpasta))
    {
        
dini_Remove(strpasta);
        
format(lStringsizeof(lString), "Voc  deletou o radar de ID: %d."id);
        
SendClientMessage(playerid0x0000F6AAlString);
        
DestroyObject(ObjetoRadar[0][id]);
        
DestroyObject(ObjetoRadar[1][id]);
        
Delete3DTextLabel(TRadar[id]);
        
InfoRadar[id][lPosXX] = 0;
        
InfoRadar[id][lPosYY] = 0;
        
InfoRadar[id][lPosZZ] = 0;
        
InfoRadar[id][lAngulo] = 0;
        
InfoRadar[id][lVelocidade] = 999;
        
MapIconRemove(radarid[playerid]);
        return 
1;
    }
    else
    {
        
format(lStringsizeof(lString), "O radar de ID: %d n o existe."id);
        
SendClientMessage(playerid0xFF0000FFlString);
    }
    return 
1;
}
CMD:criarradar(playeridparams[])
{
    new 
velocidade;
    if (
CriandoRadar == 1) return SendClientMessage(playerid0xF60000AA"| ERRO |J  tem algu m criando um radar, aguarde por favor!");
    if (
sscanf(params"d"velocidade)) return SendClientMessage(playerid0xF60000AA"Digite: /criarradar [velocidade]");
    
vel velocidade;
    
GetPlayerPos(playeridPosXXPosYYPosZZ);
    
GetPlayerFacingAngle(playeridAngulo);
    
TogglePlayerControllable(playeridtrue);
    
SetPlayerPos(playeridPosXXPosYYPosZZ);
    
MapIconSet(playeridPosXXPosYYPosZZMAPICON_LOCAL18880COLOR_LIGHTRED);
    
format(lStringsizeof(lString), "{FFFFFF}Voc  deseja mesmo criar um radar neste local?\n\n");
    
format(lStringsizeof(lString), "%s{00B6F6}Posi  o X: {FFFFFF}%0.4f\n{00B6F6}Posi  o Y: {FFFFFF} %0.4f\n{00B6F6}Posi  o Z: {FFFFFF} %0.4f\n{00B6F6} ngulo: {FFFFFF}%0.4f\n{00B6F6}Velocidade: {FFFFFF}%d"lStringPosXXPosYYPosZZAngulovelocidade);
    
CriandoRadar 1;
    
ShowPlayerDialog(playerid3030DIALOG_STYLE_MSGBOX"Criador de radar"lString"Criar""Cancelar");
    return 
1;
}

forward RezetarRadar(playerid);
public 
RezetarRadar(playerid)
{
    
PlayerInfo[playerid][PPassouRadar] = 0;
}
forward Flex(playerid);
public 
Flex(playerid)
{
    if (
IsPlayerConnected(playerid))
    {
        
TextDrawHideForPlayer(playeridFlash);
    }
}


////////////////////////////////////////////////////////////////////////////////
forward SalvarRadares();
public 
SalvarRadares()
{
    new 
strpasta[200];

    for (new 
rad 0rad MAX_RADARrad++)
    {
        
format(strpastasizeof(strpasta), PastaRadaresrad);
        if (
dini_Exists(strpasta))
        {
            
dini_IntSet(strpasta"Velocidade"InfoRadar[rad][lVelocidade]);
            
dini_FloatSet(strpasta"PosXX"InfoRadar[rad][lPosXX]);
            
dini_FloatSet(strpasta"PosYY"InfoRadar[rad][lPosYY]);
            
dini_FloatSet(strpasta"PosZZ"InfoRadar[rad][lPosZZ]);
            
dini_FloatSet(strpasta"Angulo"InfoRadar[rad][lAngulo]);
            
dini_IntSet(strpasta"MapIcon"radarid[rad]);
            
dini_IntSet(strpasta"MapIconColor"COLOR_LIGHTRED);
            
MapIconSet(radarid[rad], InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], MAPICON_LOCALCOLOR_LIGHTRED);
        }
    }
    return 
1;
}

////////////////////////////////////////////////////////////////////////////////
forward CarregarRadares();
public 
CarregarRadares()
{
    new 
strradar[100],
        
strpasta[200];

    for (new 
rad 0rad MAX_RADARrad++)
    {
        
format(strpastasizeof(strpasta), PastaRadaresrad);
        if (
dini_Exists(strpasta))
        {
            
InfoRadar[rad][lVelocidade] = dini_Int(strpasta"Velocidade");
            
InfoRadar[rad][lPosXX] = dini_Float(strpasta"PosXX");
            
InfoRadar[rad][lPosYY] = dini_Float(strpasta"PosYY");
            
InfoRadar[rad][lPosZZ] = dini_Float(strpasta"PosZZ");
            
InfoRadar[rad][lAngulo] = dini_Float(strpasta"Angulo");
            
ObjetoRadar[0][rad] = CreateObject(18880InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 0.00.0InfoRadar[rad][lAngulo]);
            
ObjetoRadar[1][rad] = CreateObject(18880InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 0.00.0InfoRadar[rad][lAngulo] + 180.0);
            
format(strradarsizeof(strradar), "{FF0000}Radar\nLimite de velocidade: %d KM/H"InfoRadar[rad][lVelocidade]);
            
TRadar[rad] = Text3D:Create3DTextLabel(strradar, -1InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ] + 150.00);
        }
    }
    return 
1;
}

forward CheckRadar(playerid);
public 
CheckRadar(playerid)
{
     new 
Float:Speed;
    
GetVehicleVelocity(GetPlayerVehicleID(playerid), PosXXPosYYPosZZ);
    
Speed floatmul(floatsqroot(floatadd(floatadd(floatpower(PosXX2), floatpower(PosYY2)),   floatpower(PosZZ2))), 100.0);
    new 
velocid;
    new 
vid GetPlayerVehicleID(playerid);
    new 
modelo GetVehicleModel(vid);
    if (
GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !(modelo == 509 || modelo == 510 || modelo == 481 || modelo == 519 || modelo == 487  || modelo == 520 || modelo == 497))
    {
        
velocid floatround(Speedfloatround_floor);
        for (new 
rad 0rad MAX_RADARrad++)
        {
            if (
IsPlayerInRangeOfPoint(playerid10InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ]))
            {
                if (
velocid InfoRadar[rad][lVelocidade])
                {
                    if (
Bit1_Get(aradarplayerid) == 0)
                    {
                        if (
PlayerInfo[playerid][PPassouRadar] == 0)
                        {
                            
SendClientMessage(playeridVerde"------------------------------------------------------------ Radar ---------------------------------------------------------------------");
                            
TextDrawShowForPlayer(playeridFlash);
                            
PlayerPlaySound(playerid11320.00.00.0);
                            
format(gstring128" {FF0000}| RADAR | Velocidade Registrada: %iKm/h"velocid);
                            
SendClientMessage(playeridAmarelogstring);
                            
GivePlayerMoney(playerid, -500);
                            
format(gstring128" {FFFFFF}| INFO | Voc  foi pego(a) no radar por estar acima do limite permitido{FF0000} (%d KM/h)"InfoRadar[rad][lVelocidade]);
                            
SendClientMessage(playeridVermelhogstring);
                            
SendClientMessage(playeridBranco" | INFO | Portanto,voc  foi multado em{00FF00} R$500.");
                            
PlayerInfo[playerid][PPassouRadar] = 1;
                            
SetTimerEx("RezetarRadar"1000false"i"playerid);
                            
SetTimerEx("Flex"1000false"i"playerid);
                            
SendClientMessage(playeridVerde"------------------------------------------------------------ Radar ---------------------------------------------------------------------");
                            
Bit1_Set(aradarplayerid1);
                        }
                    }
                    else
                    {
                        
Bit1_Set(aradarplayerid0);
                    }
                }
                else
                {
                    if (
Bit1_Get(aradarplayerid) == 0)
                    {
                        if (
PlayerInfo[playerid][PPassouRadar] == 0)
                        {
                            
format(gstring256" {FF0000} | RADAR | Velocidade Registrada: %iKm/h"velocid);
                            
PlayerInfo[playerid][PPassouRadar] = 1;
                            
SetTimerEx("RezetarRadar"1000false"i"playerid);
                            
SendClientMessage(playeridAmareloClarogstring);
                            
Bit1_Set(aradarplayerid1);
                        }
                    }
                    else
                    {
                        
Bit1_Set(aradarplayerid0);
                    }
                }
            }
        }
    }
    return 
1;
}
stock IdRadarLivre(playerid)
{
    static 
rstring[74];
    for (new 
iMAX_RADARi++)
    {
        
format(rstringsizeof rstringPastaRadaresi);
        if (!
dini_Exists(rstring))
        {
            
radarid[playerid] = i;
            
dini_Create(rstring);
            return 
1;
        }
    }
    return 
0;




RE: radar velocidade - strelo - 24/01/2024

Adicionar o MapIcon ao Criar o Radar: Modificar a função CMD:criarradar para adicionar um mapicon na posição onde o radar é criado.
Salvar a Posição do MapIcon: Modificar a função SalvarRadares para salvar a posição do mapicon no arquivo INI.
Carregar o MapIcon: Modificar a função CarregarRadares para carregar e criar o mapicon quando o servidor é iniciado.

Agora, vamos começar a implementar essas mudanças passo a passo. Primeiro, vamos adicionar o MapIcon na função CMD:criarradar.

Passo 1: Adicionar MapIcon ao Criar o Radar

Vamos adicionar um mapicon do tipo "R" quando um radar é criado. A função CMD:criarradar é responsável por criar um novo radar. Vamos adicionar uma chamada para a função MapIconSet depois de criar o radar para adicionar o ícone.

No final da função CMD:criarradar, após a linha ShowPlayerDialog(...), adicione o seguinte código:
Código PHP:
// Adicionar MapIcon 'R'
SetPlayerMapIcon(playeridradarid[playerid], PosXXPosYYPosZZMAPICON_LETTERCOLOR_RED); 

Passo 2: Salvar a Posição do MapIcon 

Agora, precisamos salvar a posição do mapicon no arquivo INI. Modifique a função SalvarRadares para incluir a posição do mapicon. Na função SalvarRadares, após a linha dini_FloatSet(strpasta, "Angulo", InfoRadar[rad][lAngulo]);, adicione o seguinte código:

Código PHP:
// Salvar posição do MapIcon
dini_FloatSet(strpasta"MapIconX"PosXX);
dini_FloatSet(strpasta"MapIconY"PosYY);
dini_FloatSet(strpasta"MapIconZ"PosZZ); 


Passo 3: Carregar o MapIcon 

Por último, precisamos carregar e criar o mapicon quando o servidor é iniciado. Modifique a função CarregarRadares para fazer isso. Na função CarregarRadares, após a linha InfoRadar[rad][lAngulo] = dini_Float(strpasta, "Angulo");, adicione o seguinte código:

Código PHP:
// Carregar e criar o MapIcon
new Float:iconXFloat:iconYFloat:iconZ;
iconX dini_Float(strpasta"MapIconX");
iconY dini_Float(strpasta"MapIconY");
iconZ dini_Float(strpasta"MapIconZ");
SetPlayerMapIcon(radiconXiconYiconZMAPICON_LETTERCOLOR_RED); 



RE: radar velocidade - LOS_SANTOS - 24/01/2024

(24/01/2024 05:26)strelo Escreveu: Adicionar o MapIcon ao Criar o Radar: Modificar a função CMD:criarradar para adicionar um mapicon na posição onde o radar é criado.
Salvar a Posição do MapIcon: Modificar a função SalvarRadares para salvar a posição do mapicon no arquivo INI.
Carregar o MapIcon: Modificar a função CarregarRadares para carregar e criar o mapicon quando o servidor é iniciado.

Agora, vamos começar a implementar essas mudanças passo a passo. Primeiro, vamos adicionar o MapIcon na função CMD:criarradar.

Passo 1: Adicionar MapIcon ao Criar o Radar

Vamos adicionar um mapicon do tipo "R" quando um radar é criado. A função CMD:criarradar é responsável por criar um novo radar. Vamos adicionar uma chamada para a função MapIconSet depois de criar o radar para adicionar o ícone.

No final da função CMD:criarradar, após a linha ShowPlayerDialog(...), adicione o seguinte código:
Código PHP:
// Adicionar MapIcon 'R'
SetPlayerMapIcon(playeridradarid[playerid], PosXXPosYYPosZZMAPICON_LETTERCOLOR_RED); 

Passo 2: Salvar a Posição do MapIcon 

Agora, precisamos salvar a posição do mapicon no arquivo INI. Modifique a função SalvarRadares para incluir a posição do mapicon. Na função SalvarRadares, após a linha dini_FloatSet(strpasta, "Angulo", InfoRadar[rad][lAngulo]);, adicione o seguinte código:

Código PHP:
// Salvar posição do MapIcon
dini_FloatSet(strpasta"MapIconX"PosXX);
dini_FloatSet(strpasta"MapIconY"PosYY);
dini_FloatSet(strpasta"MapIconZ"PosZZ); 


Passo 3: Carregar o MapIcon 

Por último, precisamos carregar e criar o mapicon quando o servidor é iniciado. Modifique a função CarregarRadares para fazer isso. Na função CarregarRadares, após a linha InfoRadar[rad][lAngulo] = dini_Float(strpasta, "Angulo");, adicione o seguinte código:

Código PHP:
// Carregar e criar o MapIcon
new Float:iconXFloat:iconYFloat:iconZ;
iconX dini_Float(strpasta"MapIconX");
iconY dini_Float(strpasta"MapIconY");
iconZ dini_Float(strpasta"MapIconZ");
SetPlayerMapIcon(radiconXiconYiconZMAPICON_LETTERCOLOR_RED); 
  fiz exatamente o q foi falado mas da 1 erro 
C:\Users\andre\OneDrive\Área de Trabalho\kkkkkk\filterscripts\rr.pwn(177) : warning 213: tag mismatch
C:\Users\andre\OneDrive\Área de Trabalho\kkkkkk\filterscripts\rr.pwn(177) : warning 202: number of arguments does not match definition
C:\Users\andre\OneDrive\Área de Trabalho\kkkkkk\filterscripts\rr.pwn(220) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.


o codigo esta aq me ajudem 

#include <a_samp>
#include zcmd
#include sscanf
#include <dini>
#include <rBits>


#define MAX_RADAR  100
#define Amarelo                                                                0xF6F600AA
#define COLOR_LIGHTRED         0xFF6347AA
#define Mostarda                                                                0xF6C700AA
#define AmareloClaro                                                            0xF6F67AAA
#define Vermelho                                                                0xF60000AA
#define Bordo                                                                  0xBC0034AA
#define Laranja                                                                0xF6A100AA
#define Azul                                                                    0x0000F6AA
#define AzulClaro                                                              0x00B6F6AA
#define Verde                                                                  0x00A600AA
#define VerdeFlorecente                                                        0x00F600AA
#define VerdeClaro                                                              0x00B57DAA
#define Branco                                                                  0xF6F6F6AA
#define Roza                                                                    0xF650A6AA
#define RozaClaro                                                              0xF698A6AA
#define Roxo                                                                    0x9E23F6AA
#define RoxoClaro                                                              0xF698A6AA
#define Cinza                                                                  0x545352AA
#define Cinzaazulado 0xA7C0C0AA

#define PastaRadares        "Radares/Radar%d.ini"

static
lString[256],
radarid[MAX_PLAYERS],
vel,
Text3D:TRadar[MAX_RADAR],
ObjetoRadar[2][MAX_RADAR],
CriandoRadar,
FloatTongueosXX,
FloatTongueosYY,
FloatTongueosZZ,
Float:Angulo;
enum radar {
Float:lPosXX,
Float:lPosYY,
Float:lPosZZ,
Float:lAngulo,
lVelocidade,
};

enum pInfo{
PPassouRadar
}
new InfoRadar[MAX_RADAR][radar];

new Text:Flash;

new gstring[256];

new Bit1: aradar <MAX_PLAYERS>;

new PlayerInfo[MAX_PLAYERS][pInfo];


public OnFilterScriptInit()
{
    Flash = TextDrawCreate(635.000000, 432.000000, "__");
TextDrawBackgroundColor(Flash, 255);
  TextDrawFont(Flash, 1);
  TextDrawLetterSize(Flash, 0.500000, -45.900001);
TextDrawColor(Flash, -256);
TextDrawSetOutline(Flash, 0);
  TextDrawSetProportional(Flash, 1);
  TextDrawSetShadow(Flash, 1);
  TextDrawUseBox(Flash, 1);
    TextDrawBoxColor(Flash, -86);
    TextDrawTextSize(Flash, 6.000000, 35.000000);
    CarregarRadares();
return 1;
}

public OnFilterScriptExit()
{
SalvarRadares();
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 3030)
{
if(response)
{
static
strradar[100];
GetPlayerPos(playerid, PosXX,PosYY,PosZZ);
GetPlayerFacingAngle(playerid, Angulo);
IdRadarLivre(playerid);
InfoRadar[radarid[playerid]][lPosXX] = PosXX;
InfoRadar[radarid[playerid]][lPosYY] = PosYY;
InfoRadar[radarid[playerid]][lPosZZ] = PosZZ-1.5;
InfoRadar[radarid[playerid]][lAngulo] = Angulo;
InfoRadar[radarid[playerid]][lVelocidade] = vel;
    ObjetoRadar[0][radarid[playerid]] = CreateObject(18880, InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], 0.0, 0.0, InfoRadar[radarid[playerid]][lAngulo]);
    ObjetoRadar[1][radarid[playerid]] = CreateObject(18880, InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], 0.0, 0.0, InfoRadar[radarid[playerid]][lAngulo] + 180.0);
format(strradar, sizeof(strradar),"{FF0000}Radar\nLimite de velocidade: %d KM/H",InfoRadar[radarid[playerid]][lVelocidade]);
TRadar[radarid[playerid]] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ]+1, 50.0, 0);
format(lString, sizeof(lString),"Radar ID: %d criado.",radarid[playerid]);
SendClientMessage(playerid, 0x0000F6AA, lString);
SetPlayerPos(playerid, PosXX+1,PosYY+1,PosZZ+1);
CriandoRadar = 0;
SalvarRadares();

}
else
{
CriandoRadar = 0;
    SendClientMessage(playerid, 0xFFFFFFFF,"Você fechou o dialog de criar radar!");
}
}
return 1;
}

public OnPlayerUpdate(playerid)
{
CheckRadar(playerid);
return 1;
}

CMD:deletarradar(playerid, params[])
{
new id, strpasta[200];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF,"Você não é um administrador!");
if(sscanf(params, "d", id)) return SendClientMessage(playerid, 0xFF0000FF, "Digite: /deletarradar [ID do Radar]");
format(strpasta, sizeof(strpasta), PastaRadares, id);
if(dini_Exists(strpasta))
{
    dini_Remove(strpasta);
format(lString, sizeof(lString), "Você deletou o radar de ID: %d.", id);
    SendClientMessage(playerid, 0x0000F6AA,lString);
    DestroyObject(ObjetoRadar[0][id]);
    DestroyObject(ObjetoRadar[1][id]);
    Delete3DTextLabel(TRadar[id]);
InfoRadar[id][lPosXX] = 0;
InfoRadar[id][lPosYY] = 0;
InfoRadar[id][lPosZZ] = 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:criarradar(playerid, params[])
{
    new velocidade;
    if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xF60000AA, "| ERRO | Você não tem permissão!");
    if (CriandoRadar == 1) return SendClientMessage(playerid, 0xF60000AA, "| ERRO | Já tem alguém criando um radar, aguarde por favor!");
    if (sscanf(params, "d", velocidade)) return SendClientMessage(playerid, 0xF60000AA, "Digite: /criarradar [velocidade]");

    vel = velocidade;
    GetPlayerPos(playerid, PosXX, PosYY, PosZZ);
    GetPlayerFacingAngle(playerid, Angulo);
    TogglePlayerControllable(playerid, true);
    SetPlayerPos(playerid, PosXX, PosYY, PosZZ);

    format(lString, sizeof(lString), "{FFFFFF}Você deseja mesmo criar um radar neste local?\n\n");
    format(lString, sizeof(lString), "%s{00B6F6}Posição X: {FFFFFF}%0.4f\n{00B6F6}Posição Y: {FFFFFF} %0.4f\n{00B6F6}Posição Z: {FFFFFF} %0.4f\n{00B6F6}Ângulo: {FFFFFF}%0.4f\n{00B6F6}Velocidade: {FFFFFF}%d", lString, PosXX, PosYY, PosZZ, Angulo, velocidade);

    CriandoRadar = 1;
    ShowPlayerDialog(playerid, 3030, DIALOG_STYLE_MSGBOX, "Criador de radar", lString, "Criar", "Cancelar");
    SetPlayerMapIcon(playerid, 34, radarid[playerid], PosXX, PosYY, PosZZ, 52, 0, MAPICON_LOCAL);
    return 1;
}

forward RezetarRadar(playerid);
public RezetarRadar(playerid)
{
PlayerInfo[playerid][PPassouRadar] = 0;
}
forward Flex(playerid);
public Flex(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        TextDrawHideForPlayer (playerid, Flash);
    }
}

forward CarregarRadares();
public CarregarRadares()
{
new
strradar[100],
strpasta[200];

for(new rad=0;rad<MAX_RADAR; rad++)
{
format(strpasta,sizeof(strpasta),PastaRadares,rad);
    if(dini_Exists(strpasta))
    {
InfoRadar[rad][lVelocidade] = dini_Int(strpasta,"Velocidade");
InfoRadar[rad][lPosXX] = dini_Float(strpasta,"PosXX");
InfoRadar[rad][lPosYY] = dini_Float(strpasta,"PosYY");
InfoRadar[rad][lPosZZ] = dini_Float(strpasta,"PosZZ");
InfoRadar[rad][lAngulo] = dini_Float(strpasta,"Angulo");
    ObjetoRadar[0][rad] = CreateObject(18880, InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 0.0, 0.0, InfoRadar[rad][lAngulo]);
    ObjetoRadar[1][rad] = CreateObject(18880, InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 0.0, 0.0, InfoRadar[rad][lAngulo] + 180.0);
format(strradar, sizeof(strradar),"{FF0000}Radar\nLimite de velocidade: %d KM/H",InfoRadar[rad][lVelocidade]);
TRadar[rad] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ]+1, 50.0, 0);
new Float:iconX, Float:iconY, Float:iconZ;
iconX = dini_Float(strpasta, "MapIconX");
iconY = dini_Float(strpasta, "MapIconY");
iconZ = dini_Float(strpasta, "MapIconZ");
SetPlayerMapIcon(playerid, 34 ,rad, iconX, iconY, iconZ, 52, 0, MAPICON_LOCAL);
}
}
return 1;
}

forward SalvarRadares();
public SalvarRadares()
{
new
strpasta[200];

for(new rad=0;rad<MAX_RADAR; rad++)
{
format(strpasta,sizeof(strpasta),PastaRadares,rad);
    if(dini_Exists(strpasta))
    {
dini_IntSet(strpasta,"Velocidade",InfoRadar[rad][lVelocidade]);
dini_FloatSet(strpasta,"PosXX",InfoRadar[rad][lPosXX]);
dini_FloatSet(strpasta,"PosYY",InfoRadar[rad][lPosYY]);
dini_FloatSet(strpasta,"PosZZ",InfoRadar[rad][lPosZZ]);
dini_FloatSet(strpasta,"Angulo",InfoRadar[rad][lAngulo]);
dini_FloatSet(strpasta, "MapIconX", PosXX);
dini_FloatSet(strpasta, "MapIconY", PosYY);
dini_FloatSet(strpasta, "MapIconZ", PosZZ);
}
}
return 1;
}

forward CheckRadar(playerid);
public CheckRadar(playerid)
{
    new Float:Speed;
GetVehicleVelocity(GetPlayerVehicleID(playerid), PosXX, PosYY, PosZZ);
Speed = floatmul(floatsqroot(floatadd(floatadd(floatpower(PosXX, 2), floatpower(PosYY, 2)),  floatpower(PosZZ, 2))), 100.0);
new velocid;
new vid = GetPlayerVehicleID(playerid);
new modelo = GetVehicleModel(vid);
  if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !(modelo == 509 || modelo == 510 || modelo == 481 || modelo == 519 || modelo == 487  || modelo == 520 || modelo == 497))
{
velocid = floatround(Speed, floatround_floor);
for(new rad = 0; rad < MAX_RADAR; rad++)
{
if(IsPlayerInRangeOfPoint(playerid, 10 ,InfoRadar[rad][lPosXX],InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ]))
    {
if(velocid > InfoRadar[rad][lVelocidade])
{
    if(Bit1_Get(aradar,playerid) == 0)
{
    if(PlayerInfo[playerid][PPassouRadar] == 0)
    {
      SendClientMessage(playerid,Verde,"------------------------------------------------------------ Radar ---------------------------------------------------------------------");
TextDrawShowForPlayer(playerid, Flash);
PlayerPlaySound(playerid,1132,0.0,0.0,0.0);
format(gstring, 128," {FF0000}| RADAR | Velocidade Registrada: %iKm/h",velocid);
SendClientMessage(playerid,Amarelo,gstring);
GivePlayerMoney(playerid, -500);
format(gstring, 128," {FFFFFF}| INFO | Você foi pego(a) no radar por estar acima do limite permitido{FF0000} (%d KM/h)",InfoRadar[rad][lVelocidade]);
SendClientMessage(playerid,Vermelho,gstring);
    SendClientMessage(playerid,Branco," | INFO | Portanto,você foi multado em{00FF00} R$500.");
    PlayerInfo[playerid][PPassouRadar] = 1;
SetTimerEx("RezetarRadar", 1000, false, "i", playerid);
SetTimerEx("Flex", 1000, false, "i", playerid);
SendClientMessage(playerid,Verde,"------------------------------------------------------------ Radar ---------------------------------------------------------------------");
Bit1_Set(aradar,playerid,1);
}
}
else
{
    Bit1_Set(aradar,playerid, 0);
}
}
                    else
{
if(Bit1_Get(aradar,playerid) == 0)
{
    if(PlayerInfo[playerid][PPassouRadar] == 0)
{
format(gstring, 256," {FF0000} | RADAR | Velocidade Registrada: %iKm/h",velocid);
PlayerInfo[playerid][PPassouRadar] = 1;
SetTimerEx("RezetarRadar", 1000, false, "i", playerid);
SendClientMessage(playerid,AmareloClaro,gstring);
Bit1_Set(aradar,playerid,1);
      }
}
else
{
Bit1_Set(aradar,playerid, 0);
}
}
}
}
}
return 1;
}

stock IdRadarLivre(playerid)
{
static
    rstring[74];
for(new i; i< MAX_RADAR; i++)
{
    format(rstring, sizeof rstring, PastaRadares, i);
        if(!dini_Exists(rstring))
    {
radarid[playerid] = i;
dini_Create(rstring);
return 1;
}
}
return 0;
}


RE: radar velocidade - pushline - 24/01/2024

Invés de tu mandar o código todo não seria melhor mandar as linhas 177 e 220?


RE: radar velocidade - xbruno1000x - 24/01/2024

Tá na mão:
Código:
forward CarregarRadares();
public CarregarRadares()
{
    new strradar[100],
        strpasta[200];

    for (new rad = 0; rad < MAX_RADAR; rad++)
    {
        format(strpasta, sizeof(strpasta), PastaRadares, rad);
        if (dini_Exists(strpasta))
        {
            InfoRadar[rad][lVelocidade] = dini_Int(strpasta, "Velocidade");
            InfoRadar[rad][lPosXX] = dini_Float(strpasta, "PosXX");
            InfoRadar[rad][lPosYY] = dini_Float(strpasta, "PosYY");
            InfoRadar[rad][lPosZZ] = dini_Float(strpasta, "PosZZ");
            InfoRadar[rad][lAngulo] = dini_Float(strpasta, "Angulo");
            ObjetoRadar[0][rad] = CreateObject(18880, InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 0.0, 0.0, InfoRadar[rad][lAngulo]);
            ObjetoRadar[1][rad] = CreateObject(18880, InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 0.0, 0.0, InfoRadar[rad][lAngulo] + 180.0);
            format(strradar, sizeof(strradar), "{FF0000}Radar\nLimite de velocidade: %d KM/H", InfoRadar[rad][lVelocidade]);
            TRadar[rad] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ] + 1, 50.0, 0);
            CreateDynamicMapIcon(InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], 34, 0, -1, -1, -1, 200.0);
        }
    }
    return 1;
}

Só alterar essa parte e já vai funcionar