Guest User

FS HomeHots Criador de Radar

a guest
Sep 1st, 2014
1,250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.89 KB | None | 0 0
  1. #include <a_samp>
  2. #include zcmd
  3. #include sscanf
  4. #include dof2
  5. #define MAX_RADAR   100
  6.  
  7. #define PastaRadares        "Radares/Radar%d.ini"
  8.  
  9. static
  10.     lString[256],
  11.     radarid[MAX_PLAYERS],
  12.     vel,
  13.     Text3D:TRadar[MAX_RADAR],
  14.     Variavel[MAX_PLAYERS],
  15.     ObjetoRadar[2][MAX_RADAR],
  16.     CriandoRadar,
  17.     Float:PosX,
  18.     Float:PosY,
  19.     Float:PosZ,
  20.     Float:Angulo;
  21. enum radar {
  22.     Float:lPosX,
  23.     Float:lPosY,
  24.     Float:lPosZ,
  25.     Float:lAngulo,
  26.     lVelocidade,
  27. };
  28. new InfoRadar[MAX_RADAR][radar];
  29.  
  30.  
  31. public OnFilterScriptInit()
  32. {
  33.     CarregarRadares();
  34.     return 1;
  35. }
  36.  
  37. public OnFilterScriptExit()
  38. {
  39.     SalvarRadares();
  40.     DOF2_Exit();
  41.     return 1;
  42. }
  43.  
  44. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  45. {
  46.     if(dialogid == 3030)
  47.     {
  48.         if(response)
  49.         {
  50.             static
  51.                 strradar[100];
  52.             GetPlayerPos(playerid, PosX,PosY,PosZ);
  53.             GetPlayerFacingAngle(playerid, Angulo);
  54.             IdRadarLivre(playerid);
  55.             InfoRadar[radarid[playerid]][lPosX] = PosX;
  56.             InfoRadar[radarid[playerid]][lPosY] = PosY;
  57.             InfoRadar[radarid[playerid]][lPosZ] = PosZ-1.5;
  58.             InfoRadar[radarid[playerid]][lAngulo] = Angulo;
  59.             InfoRadar[radarid[playerid]][lVelocidade] = vel;
  60.             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]);
  61.             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);
  62.             format(strradar, sizeof(strradar),"{FF0000}Radar\nLimite de velocidade: %d KM/H",InfoRadar[radarid[playerid]][lVelocidade]);
  63.             TRadar[radarid[playerid]] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ]+1, 50.0, 0);
  64.             format(lString, sizeof(lString),"Radar ID: %d criado.",radarid[playerid]);
  65.             SendClientMessage(playerid, 0x004C00FF, lString);
  66.             SetPlayerPos(playerid, PosX+1,PosY+1,PosZ+1);
  67.             CriandoRadar = 0;
  68.             SalvarRadares();
  69.         }
  70.         else
  71.         {
  72.             CriandoRadar = 0;
  73.             SendClientMessage(playerid, 0xFFFFFFFF,"Você fechou o dialog de criar radar!");
  74.         }
  75.     }
  76.     return 1;
  77. }
  78.  
  79. public OnPlayerUpdate(playerid)
  80. {
  81.     CheckRadar(playerid);
  82.     return 1;
  83. }
  84.  
  85. CMD:v(playerid)
  86. {
  87.     new Float:x,Float:y,Float:z;
  88.     GetPlayerPos(playerid, x,y,z);
  89.     CreateVehicle(522,x,y,z,0,-1,-1,-1);
  90.     return 1;
  91. }
  92.  
  93. CMD:comandos(playerid)
  94. {
  95.     SendClientMessage(playerid, -1,"/criarradar | /deletarradar - Comandos apenas para admin rcon!");
  96.     SendClientMessage(playerid, -1, "Sistema de criar radar por Living(Living_22) qualquer erro entre em contato com o mesmo!");
  97.     return true;
  98. }
  99.  
  100. CMD:deletarradar(playerid, params[])
  101. {
  102.     new id, strpasta[200];
  103.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xB40000FF,"Você não é um administrador!");
  104.     if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "Digite: /deletarradar [Id do radar]");
  105.     format(strpasta, sizeof(strpasta), PastaRadares, id);
  106.     if(DOF2_FileExists(strpasta))
  107.     {
  108.         DOF2_RemoveFile(strpasta);
  109.         format(lString, sizeof(lString), "Você deletou o radar de ID: %d.", id);
  110.         SendClientMessage(playerid, 0xFF0000FF,lString);
  111.         DestroyObject(ObjetoRadar[0][id]);
  112.         DestroyObject(ObjetoRadar[1][id]);
  113.         Delete3DTextLabel(TRadar[id]);
  114.         InfoRadar[id][lPosX] = 0;
  115.         InfoRadar[id][lPosY] = 0;
  116.         InfoRadar[id][lPosZ] = 0;
  117.         InfoRadar[id][lAngulo] = 0;
  118.         InfoRadar[id][lVelocidade] = 999;
  119.         return 1;
  120.     }
  121.     else
  122.     {
  123.         format(lString, sizeof(lString), "O radar de ID: %d não existe.", id);
  124.         SendClientMessage(playerid, 0xFF0000FF, lString);
  125.     }
  126.     return 1;
  127. }
  128.  
  129. CMD:criarradar(playerid, params[])
  130. {
  131.     new velocidade;
  132.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xB40000FF,"Você não é um administrador!");
  133.     if(CriandoRadar == 1) return SendClientMessage(playerid,0xB40000FF, "Já tem alguém criando um radar, aguarde por favor!");
  134.     if(sscanf(params,"d",velocidade)) return SendClientMessage(playerid, 0x999C9BFF,"Digite: /criarradar [velocidade]");
  135.     vel = velocidade;
  136.     GetPlayerPos(playerid, PosX,PosY,PosZ);
  137.     GetPlayerFacingAngle(playerid, Angulo);
  138.     TogglePlayerControllable(playerid, true);
  139.     SetPlayerPos(playerid, PosX,PosY,PosZ);
  140.     format(lString, sizeof(lString),"{FFFFFF}Você deseja mesmo criar um radar neste local?\n\n");
  141.     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}Angulo: {FFFFFF}%0.4f\n{00B4FF}Velocidade: {FFFFFF}%d",lString,PosX,PosY,PosZ,Angulo,velocidade);
  142.     CriandoRadar = 1;
  143.     ShowPlayerDialog(playerid, 3030, DIALOG_STYLE_MSGBOX, "Criador de radar",lString, "Criar","Cancelar");
  144.     return 1;
  145. }
  146.  
  147. forward CarregarRadares();
  148. public CarregarRadares()
  149. {
  150.     new
  151.         strradar[100],
  152.         strpasta[200];
  153.  
  154.     for(new rad=0;rad<MAX_RADAR; rad++)
  155.     {
  156.         format(strpasta,sizeof(strpasta),PastaRadares,rad);
  157.         if(DOF2_FileExists(strpasta))
  158.         {
  159.             InfoRadar[rad][lVelocidade] = DOF2_GetInt(strpasta,"Velocidade");
  160.             InfoRadar[rad][lPosX] = DOF2_GetFloat(strpasta,"PosX");
  161.             InfoRadar[rad][lPosY] = DOF2_GetFloat(strpasta,"PosY");
  162.             InfoRadar[rad][lPosZ] = DOF2_GetFloat(strpasta,"PosZ");
  163.             InfoRadar[rad][lAngulo] = DOF2_GetFloat(strpasta,"Angulo");
  164.             ObjetoRadar[0][rad] = CreateObject(18880, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ], 0.0, 0.0, InfoRadar[rad][lAngulo]);
  165.             ObjetoRadar[1][rad] = CreateObject(18880, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ], 0.0, 0.0, InfoRadar[rad][lAngulo] + 180.0);
  166.             format(strradar, sizeof(strradar),"{FF0000}Radar\nLimite de velocidade: %d KM/H",InfoRadar[rad][lVelocidade]);
  167.             TRadar[rad] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ]+1, 50.0, 0);
  168.         }
  169.     }
  170.     return 1;
  171. }
  172.  
  173. forward SalvarRadares();
  174. public SalvarRadares()
  175. {
  176.     new
  177.         strpasta[200];
  178.  
  179.     for(new rad=0;rad<MAX_RADAR; rad++)
  180.     {
  181.         format(strpasta,sizeof(strpasta),PastaRadares,rad);
  182.         if(DOF2_FileExists(strpasta))
  183.         {
  184.             DOF2_SetInt(strpasta,"Velocidade",InfoRadar[rad][lVelocidade]);
  185.             DOF2_SetFloat(strpasta,"PosX",InfoRadar[rad][lPosX]);
  186.             DOF2_SetFloat(strpasta,"PosY",InfoRadar[rad][lPosY]);
  187.             DOF2_SetFloat(strpasta,"PosZ",InfoRadar[rad][lPosZ]);
  188.             DOF2_SetFloat(strpasta,"Angulo",InfoRadar[rad][lAngulo]);
  189.         }
  190.     }
  191.     return 1;
  192. }
  193.  
  194. forward CheckRadar(playerid);
  195. public CheckRadar(playerid)
  196. {
  197.     new
  198.         Float:PlayerSpeedDistance,
  199.         VelocidadeDoPlayer[MAX_PLAYERS];
  200.  
  201.     GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
  202.     PlayerSpeedDistance = floatmul(floatsqroot(floatadd(floatadd(floatpower(PosX, 2), floatpower(PosY, 2)),  floatpower(PosZ, 2))), 170.0);
  203.     new spe = floatround(PlayerSpeedDistance * 1);
  204.     VelocidadeDoPlayer[playerid] = spe;
  205.     for(new rad = 0; rad < MAX_RADAR; rad++)
  206.     {
  207.         if(IsPlayerInRangeOfPoint(playerid, 8.0, InfoRadar[rad][lPosX],InfoRadar[rad][lPosY],InfoRadar[rad][lPosZ]))
  208.         {
  209.             if(VelocidadeDoPlayer[playerid] > InfoRadar[rad][lVelocidade])
  210.             {
  211.                 if(gettime() > Variavel[playerid])
  212.                 {
  213.                     Variavel[playerid] = (gettime() + 1);
  214.                     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]);
  215.                     SendClientMessage(playerid, 0xFD0600FF,lString);
  216.                     SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1);
  217.                 }
  218.             }
  219.         }
  220.     }
  221.     return 1;
  222. }
  223.  
  224. stock IdRadarLivre(playerid)
  225. {
  226.     static
  227.         rstring[74];
  228.     for(new i; i< MAX_RADAR; i++)
  229.     {
  230.         format(rstring, sizeof rstring, PastaRadares, i);
  231.         if(!DOF2_FileExists(rstring))
  232.         {
  233.             radarid[playerid] = i;
  234.             DOF2_CreateFile(rstring);
  235.             return 1;
  236.         }
  237.     }
  238.     return 0;
  239. }
Add Comment
Please, Sign In to add comment