24/01/2024 11:01
(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.fiz exatamente o q foi falado mas da 1 erro
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(playerid, radarid[playerid], PosXX, PosYY, PosZZ, MAPICON_LETTER, COLOR_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:iconX, Float:iconY, Float:iconZ;
iconX = dini_Float(strpasta, "MapIconX");
iconY = dini_Float(strpasta, "MapIconY");
iconZ = dini_Float(strpasta, "MapIconZ");
SetPlayerMapIcon(rad, iconX, iconY, iconZ, MAPICON_LETTER, COLOR_RED);
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,
FloatosXX,
FloatosYY,
FloatosZZ,
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;
}