[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" 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' 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 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 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.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, 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; } 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(); Só alterar essa parte e já vai funcionar |