23/01/2024 18:29
(Esta mensagem foi modificada pela última vez a: 23/01/2024 18:49 por White_Blue.)
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.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;
}
forward MapIconSet(playerid, Float:x, Float:y, Float:z, type, color, style);
forward MapIconRemove(playerid);
public MapIconSet(playerid, Float:x, Float:y, Float:z, type, color, style)
{
MapIconSet(radarid[playerid], InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], MAPICON_LOCAL, 18880, COLOR_LIGHTRED);
return 1;
}
public MapIconRemove(playerid)
{
MapIconSet(radarid[playerid], InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], MAPICON_LOCAL, 18880, COLOR_LIGHTRED);
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();
MapIconSet(radarid[playerid], InfoRadar[radarid[playerid]][lPosXX], InfoRadar[radarid[playerid]][lPosYY], InfoRadar[radarid[playerid]][lPosZZ], MAPICON_LOCAL, 18880, COLOR_LIGHTRED);
}
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 (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;
MapIconRemove(radarid[playerid]);
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 (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);
MapIconSet(playerid, PosXX, PosYY, PosZZ, MAPICON_LOCAL, 18880, COLOR_LIGHTRED);
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");
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 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_IntSet(strpasta, "MapIcon", radarid[rad]);
dini_IntSet(strpasta, "MapIconColor", COLOR_LIGHTRED);
MapIconSet(radarid[rad], InfoRadar[rad][lPosXX], InfoRadar[rad][lPosYY], InfoRadar[rad][lPosZZ], MAPICON_LOCAL, COLOR_LIGHTRED);
}
}
return 1;
}
////////////////////////////////////////////////////////////////////////////////
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);
}
}
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;
}