Advertisement
Darth_Vader

Sistema de Carteira de motorista e Radar

Feb 2nd, 2018
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 26.54 KB | None | 0 0
  1. // Sistema de carteira de motorista e radar feito por Darth_Vader, mantenha os créditos porfavor //
  2. #include <a_samp>
  3. #include <zcmd>
  4. #include <sscanf>
  5. #include <DOF2>
  6. #include <streamer>
  7. #include <foreach>
  8. // Pastas //
  9. #define PastaPontos "Carteiras/%s.ini"
  10. #define PastaRadar  "Radares/Radar%d.ini"
  11. // Valores da compra da carteira, caso queira mudar o valor de compra é só trocar os valores a seguir por o valor que desejar //
  12. #define VALOR_DINHEIRO      5000
  13. #define VALOR_SCORE         20
  14. // ID do Dialog da compra da carteira(recomendavél que troque para um id que não esteja sendo utilizado para não dar conflito) //
  15. #define DIALOG_COMPRARCARTEIRA 1
  16. // Quantidade máxima de radares que podem ser criados //
  17. #define MAX_RADAR   100
  18. // Variáveis //
  19. // Velocimetro //
  20. new Text:Velocimetro[2];
  21. // Radar //
  22. enum InfoRadar
  23. {
  24.     Float:PozX,
  25.     Float:PozY,
  26.     Float:PozZ,
  27.     Float:PozA,
  28.     Velomax,
  29.     Tolerancia,
  30.     Icone,
  31.     Text3D:TextoRadar,
  32.     Radar1,
  33.     Radar2,
  34.     Player,
  35.     IdRadar
  36. };
  37. new DataRadar[MAX_RADAR][InfoRadar];
  38. // Sistema de carteira //
  39. enum Variaveis
  40. {
  41.     bool:Registrado,
  42.     bool:PegouCarteira,
  43.     bool:Carteira,
  44.     Pontos
  45. }
  46. new AData[MAX_PLAYERS][Variaveis];
  47. new Text:TextCarteira[10],
  48.     bool:Mostrando;
  49. // Globais //
  50. new Float:Pos[4],
  51.     String[500];
  52.  
  53. public OnGameModeInit()
  54. {
  55.     // Mantenha os créditos porfavor //
  56.     print("\n\n   Sistema de carteira de motorista e radar feito por Darth_Vader\n\n");
  57.     // TextDraw: Velocimetro //
  58.     Velocimetro[0] = TextDrawCreate(396.000000, 338.000000, "i");
  59.     TextDrawFont(Velocimetro[0], 2);
  60.     TextDrawLetterSize(Velocimetro[0], 25.430051, 4.000000);
  61.     TextDrawTextSize(Velocimetro[0], 485.000000, 0.000000);
  62.     TextDrawColor(Velocimetro[0], 80);
  63.     TextDrawSetOutline(Velocimetro[0], 0);
  64.     TextDrawSetProportional(Velocimetro[0], 1);
  65.     TextDrawSetShadow(Velocimetro[0], 1);
  66.     TextDrawBackgroundColor(Velocimetro[0], 0);
  67.     //
  68.     Velocimetro[1] = TextDrawCreate(494.000000, 346.000000, "   ");
  69.     TextDrawAlignment(Velocimetro[1], 1);
  70.     TextDrawFont(Velocimetro[1], 2);
  71.     TextDrawLetterSize(Velocimetro[1], 0.420000, 2.399999);
  72.     TextDrawColor(Velocimetro[1], -156);
  73.     TextDrawSetProportional(Velocimetro[1], 1);
  74.     TextDrawSetShadow(Velocimetro[1], 1);
  75.     TextDrawBackgroundColor(Velocimetro[1], 0);
  76.     TextDrawSetOutline(Velocimetro[1], 0);
  77.     // TextDraw: Carteira de motorista //
  78.     TextCarteira[0] = TextDrawCreate(525.000000, 95.000000, "_");
  79.     TextDrawUseBox(TextCarteira[0], 1);
  80.     TextDrawLetterSize(TextCarteira[0], 1.300000, 26.000000);
  81.     TextDrawTextSize(TextCarteira[0], 120.000000, 10.000000);
  82.     TextDrawBoxColor(TextCarteira[0], 100);
  83.     //
  84.     TextCarteira[1] = TextDrawCreate(525.000000, 95.000000, "_");
  85.     TextDrawUseBox(TextCarteira[1], 1);
  86.     TextDrawLetterSize(TextCarteira[1], 1.300000, 3.000000);
  87.     TextDrawTextSize(TextCarteira[1],120.000000, 10.000000);
  88.     TextDrawBoxColor(TextCarteira[1], 100);
  89.     //
  90.     TextCarteira[2] = TextDrawCreate(186.000000, 94.000000, "CARTEIRA DE MOTORISTA");
  91.     TextDrawFont(TextCarteira[2], 2);
  92.     TextDrawLetterSize(TextCarteira[2], 0.500000, 3.000000);
  93.     //
  94.     TextCarteira[3] = TextDrawCreate(122.000000, 122.000000, "_");
  95.     TextDrawFont(TextCarteira[3], TEXT_DRAW_FONT_MODEL_PREVIEW);
  96.     TextDrawLetterSize(TextCarteira[3], 1.100000, 1.100000);
  97.     TextDrawTextSize(TextCarteira[3], 158.000000, 208.000000);
  98.     TextDrawBackgroundColor(TextCarteira[3], -256);
  99.     TextDrawSetOutline(TextCarteira[3], 0);
  100.     //
  101.     TextCarteira[4] = TextDrawCreate(500.000000, 150.000000, "_" );
  102.     TextDrawUseBox(TextCarteira[4], 1);
  103.     TextDrawLetterSize(TextCarteira[4], 0.500000, 2.000000);
  104.     TextDrawTextSize(TextCarteira[4], 300.000000, 7.000000);
  105.     TextDrawBoxColor(TextCarteira[4], 255);
  106.     //
  107.     TextCarteira[5] = TextDrawCreate(500.000000, 209.500000, "_");
  108.     TextDrawUseBox(TextCarteira[5], 1);
  109.     TextDrawLetterSize(TextCarteira[5], 0.500000, 2.000000);
  110.     TextDrawTextSize(TextCarteira[5], 300.000000, 7.000000);
  111.     TextDrawBoxColor(TextCarteira[5], 255);
  112.     //
  113.     TextCarteira[6] = TextDrawCreate(500.000000, 274.000000, "_");
  114.     TextDrawUseBox(TextCarteira[6], 1);
  115.     TextDrawLetterSize(TextCarteira[6], 0.500000, 2.000000);
  116.     TextDrawTextSize(TextCarteira[6], 300.000000, 7.000000);
  117.     TextDrawBoxColor(TextCarteira[6], 255);
  118.     //
  119.     TextCarteira[7] = TextDrawCreate(306.000000, 148.000000, "NAME");
  120.     TextDrawFont(TextCarteira[7], 2);
  121.     TextDrawLetterSize(TextCarteira[7], 0.500000, 2.199999);
  122.     TextDrawColor(TextCarteira[7], -156);
  123.     TextDrawSetProportional(TextCarteira[7], 1);
  124.     TextDrawSetShadow(TextCarteira[7], 1);
  125.     TextDrawBackgroundColor(TextCarteira[7], 0);
  126.     TextDrawSetOutline(TextCarteira[7], 0);
  127.     //
  128.     TextCarteira[8] = TextDrawCreate(306.000000, 207.500000, "POINTS");
  129.     TextDrawFont(TextCarteira[8], 2);
  130.     TextDrawLetterSize(TextCarteira[8], 0.500000, 2.199999);
  131.     TextDrawColor(TextCarteira[8], -156);
  132.     TextDrawSetProportional(TextCarteira[8], 1);
  133.     TextDrawSetShadow(TextCarteira[8], 1);
  134.     TextDrawBackgroundColor(TextCarteira[8], 0);
  135.     TextDrawSetOutline(TextCarteira[8], 0);
  136.     //
  137.     TextCarteira[9] = TextDrawCreate(306.000000, 272.000000, "STATUS");
  138.     TextDrawFont(TextCarteira[9], 2);
  139.     TextDrawLetterSize(TextCarteira[9], 0.500000, 2.199999);
  140.     TextDrawColor(TextCarteira[9], -156);
  141.     TextDrawSetProportional(TextCarteira[9], 1);
  142.     TextDrawSetShadow(TextCarteira[9], 1);
  143.     TextDrawBackgroundColor(TextCarteira[9], 0);
  144.     TextDrawSetOutline(TextCarteira[9], 0);
  145.     // Timer //
  146.     SetTimer("Update", 1, 1);
  147.     // Carregar os Radares //
  148.     CarregarRadares();
  149.     return 1;
  150. }
  151. public OnFilterScriptExit()
  152. {
  153.     // Salva os Radares //
  154.     SalvarRadares();
  155.     //
  156.     DOF2_Exit();
  157.     return 1;
  158. }
  159. public OnPlayerConnect(playerid)
  160. {
  161.     SendClientMessage(playerid, -1, "Esse servidor possui um sistema de carteira de motorista feito por Darth_Vader");
  162.     // Quando o player se conectar, erifica se já existe o arquivo do player //
  163.     AData[playerid][Registrado] = DOF2_GetBool(Getar(playerid), "Registrado");
  164.     // Caso não exista o arquivo, ele já o cria //
  165.     if(AData[playerid][Registrado] == false)
  166.     {
  167.         AData[playerid][Registrado] = true;
  168.         AData[playerid][PegouCarteira] = false;
  169.         AData[playerid][Carteira] = false;
  170.         DOF2_CreateFile(Getar(playerid));
  171.         DOF2_SaveFile();
  172.         SalvarCarteira(playerid);
  173.     }
  174.     // Caso já exista, apenas carregara a situação da carteira //
  175.     else
  176.     {
  177.         CarregarCarteira(playerid);
  178.     }
  179.     return 1;
  180. }
  181. public OnPlayerDisconnect(playerid)
  182. {
  183.     // Assim que o player desconectar do servidor, será salvara o estado da carteira //
  184.     SalvarCarteira(playerid);
  185.     return 1;
  186. }
  187. public OnPlayerEnterVehicle(playerid, vehicleid)
  188. {
  189.     // Verifica se o player tem carteira, e caso tenha qual a situação //
  190.     if(AData[playerid][Carteira] == false)
  191.     {
  192.         // Caso o player ainda não tem carteira, ele será obrigado a pegar sua carteira para pegar um carro ///
  193.         if(AData[playerid][PegouCarteira] == false)
  194.         {
  195.             GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  196.             SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  197.             SendClientMessage(playerid, -1, "{FF0000}(Radar)Você ainda não tem a sua carteira, digite {FFFFFF}/pegarcarteira {FF0000}para pegar sua carteira!");
  198.         }
  199.         // Caso o player tenha perdido a sua carteira, ele estará impossibilitado de dirigir, a não ser que compre sua carteira novamente //
  200.         else if(AData[playerid][PegouCarteira] == true || AData[playerid][Pontos] <= 22)
  201.         {
  202.             GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  203.             SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  204.             SendClientMessage(playerid, -1, "{FF0000}(Radar)Você perdeu sua carteira, para usar um veiculo novamente digite {FFFFFF}/comprarcarteira {FF0000}e compre-a novamente!");
  205.         }
  206.     }
  207.     return 1;
  208. }
  209. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  210. {
  211.     // Funções do dialog da compra da carteira
  212.     if(dialogid == DIALOG_COMPRARCARTEIRA)
  213.     {
  214.         if(response)
  215.         {
  216.             // Verifica se o player tem o valor suficiente para comprar a carteira //
  217.             if(GetPlayerMoney(playerid) >= VALOR_DINHEIRO && GetPlayerScore(playerid) >= VALOR_SCORE)
  218.             {
  219.                 // Caso o player tenha o valor suficiente será setado a sua carteira e a quantidade de pontos iniciais que é 0, e será descontado a o valor em dinheiro e score //
  220.                 SendClientMessage(playerid, -1, "{6495ED}(Radar)Você adquiriu sua {FFFFFF}carteira {6495ED}novamente, agora você poderar dirigir qualquer veiculo, {FFFFFF}mais cuidado da próxima vez{6495ED}!");
  221.                 GivePlayerMoney(playerid, -VALOR_DINHEIRO);
  222.                 SetPlayerScore(playerid, GetPlayerScore(playerid) - VALOR_SCORE);
  223.                 AData[playerid][Carteira] = true, AData[playerid][Pontos] = 0;
  224.                 SalvarCarteira(playerid);
  225.             }
  226.             // Caso não tenha o valor suficiente, ele não poderá comprar a carteira //
  227.             else
  228.             {
  229.                 SendClientMessage(playerid, -1, "{FF0000}(Radar)Você não possui {FFFFFF}dinheiro/score {FF0000}suficiente para comprar sua carteira!");
  230.             }
  231.         }
  232.     }
  233.     return 1;
  234. }
  235. forward Update(playerid);
  236. public Update(playerid)
  237. {
  238.     // Funcão responsável por getar a velocidade em que o player está //
  239.     new Float:Speed[4], vehicleid = GetPlayerVehicleID(playerid);
  240.     GetVehicleVelocity(vehicleid, Speed[0], Speed[1], Speed[2]);
  241.     Speed[3] = floatsqroot(((Speed[0] * Speed[0]) + (Speed[1] * Speed[1])) + (Speed[2] * Speed[2])) * 162.179;
  242.     new Velocidade = floatround(Speed[3], floatround_round);
  243.     // Caso o player estejá em um veiculo será mostrado o velocimetro e caso passe próximo a um radar será verificado sua velocidade //
  244.     if(IsPlayerInAnyVehicle(playerid))
  245.     {
  246.         format(String, sizeof(String), "%i KM/H", Velocidade);
  247.         TextDrawSetString(Velocimetro[1], String);
  248.         TextDrawShowForPlayer(playerid, Velocimetro[0]);
  249.         TextDrawShowForPlayer(playerid, Velocimetro[1]);
  250.         // Caso o player esteja com a quantidade máxima de pontos ou esteja sem a carteira, automatica seu carro irá parar e ele será expulso do veiculo //
  251.         if(AData[playerid][Pontos] == 22 || AData[playerid][Carteira] == false)
  252.         {
  253.             SetVehicleSpeed (vehicleid , 0, 1);
  254.             RemovePlayerFromVehicle(playerid);
  255.         }
  256.         for(new RadID = 0; RadID < MAX_RADAR; RadID++)
  257.         {
  258.             // Caso o player esteja próximo a zona que possui um radar e ele esteja acima da velocidade permitida e tolerada, ele será avisado pelo velocimetro, pois a cor da velocidade começará a ficar vermelha //
  259.             if(IsPlayerInRangeOfPoint(playerid, 100.0, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ]) && Velocidade > DataRadar[RadID][Velomax] + DataRadar[RadID][Tolerancia])
  260.             {
  261.                 format(String, sizeof(String), "~r~%i ~w~KM/H", Velocidade);
  262.                 TextDrawSetString(Velocimetro[1], String);
  263.                 TextDrawShowForPlayer(playerid, Velocimetro[0]);
  264.                 TextDrawShowForPlayer(playerid, Velocimetro[1]);
  265.             }
  266.             if(IsPlayerInRangeOfPoint(playerid, 25.0, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ]))
  267.             {
  268.                 // Verifica se a velocidade do player é maior do que a velocidade permitada //
  269.                 if(Velocidade > DataRadar[RadID][Velomax] + DataRadar[RadID][Tolerancia])
  270.                 {
  271.                     // Veridica se o tempo de espera do radar já acabou //
  272.                     if(gettime() > DataRadar[RadID][Player])
  273.                     {
  274.                         // Caso o player já tenha passado pelo radar, caso ele venha novamente a passar pelo radar ele terá 10 segundos de espera para que não sejá multado novamente //
  275.                         DataRadar[RadID][Player] = (gettime() + 5);
  276.                         // Caso o player tenha passado acima da velocidade ele será multado e receberá uma estrela de procurado //
  277.                         format(String, sizeof(String),"{FF0000}(Radar) Você passou a {FFFFFF}%d KM/H {FF0000}em um radar com limite de {FFFFFF}%d KM/H{FF0000} e tolerãncia de {FFFFFF}%d KM{FF0000}.", Velocidade, DataRadar[RadID][Velomax], DataRadar[RadID][Tolerancia]);
  278.                         SendClientMessage(playerid, -1, String);
  279.                         SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1);
  280.                         // Caso o player tenha passado acima da velocidade e ele tenha menos de 21 pontos na carteira ele receberá apenas 1 ponto na carteira //
  281.                         if(AData[playerid][Pontos] < 21)
  282.                         {
  283.                             AData[playerid][Pontos]++;
  284.                         }
  285.                         // Caso o player tenha passado acima da velocidade e ele tenha 21 pontos na carteira ele receberá mais 1 ponto na carteira, assim totalizando 22 pontos fazendo com que o player perca sua carteira //
  286.                         else if(AData[playerid][Pontos] == 21)
  287.                         {
  288.                             AData[playerid][Pontos]++, AData[playerid][Carteira] = false;
  289.                             SendClientMessage(playerid, -1, "{FF0000}(Radar)Você perdeu sua carteira, para usar qualquer veiculo novamente digite {FFFFFF}/comprarcarteira {FF0000}e compre-a novamnete!");
  290.                         }
  291.                     }
  292.                 }
  293.             }
  294.         }
  295.     }
  296.     // Caso o player não estejá em um veiculo o velocimetro irá sumir //
  297.     else
  298.     {
  299.         TextDrawHideForPlayer(playerid, Velocimetro[0]);
  300.         TextDrawHideForPlayer(playerid, Velocimetro[1]);
  301.     }
  302.     return 1;
  303. }
  304. // Comandos do radar //
  305. // Comando para criar o radar, ele irar getar as coordernadas em que o player está, e ira criar os radares no local //
  306. CMD:criarradar(playerid, params[])
  307. {
  308.     new Velo, Tol, RadID;
  309.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Você não tem permissão para usar esse comando!");
  310.     if(sscanf(params,"di", Velo, Tol)) return SendClientMessage(playerid, -1, "{FF0000}Digite: {FFFFFF}/criarradar [velocidade] [tolerancia]{FF0000}.");
  311.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  312.     GetPlayerFacingAngle(playerid, Pos[3]);
  313.     IdLivre();
  314.     DataRadar[RadID][PozX] = Pos[0], DataRadar[RadID][PozY] = Pos[1], DataRadar[RadID][PozZ] = Pos[2]-1.5, DataRadar[RadID][PozA] = Pos[3], DataRadar[RadID][Velomax] = Velo, DataRadar[RadID][Tolerancia] = Tol;
  315.     DataRadar[RadID][Icone] = CreateDynamicMapIcon(DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ], 34, 0, 0, 0, -1, 150.0);
  316.     DataRadar[RadID][Radar1] = CreateDynamicObject(18880, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ], 0.0, 0.0, DataRadar[RadID][PozA]);
  317.     DataRadar[RadID][Radar2] = CreateDynamicObject(18880, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ], 0.0, 0.0, DataRadar[RadID][PozA] + 180.0);
  318.     format(String, sizeof(String),"{FF0000}LIMITE DE VELOCIDADE: {FFFFFF}%d KM/H\n{FF0000}TOLERÂNCIA: {FFFFFF}%d KM\n{FF0000}ID RADAR: {FFFFFF}%d",DataRadar[RadID][Velomax], DataRadar[RadID][Tolerancia], RadID);
  319.     DataRadar[RadID][TextoRadar] = CreateDynamic3DTextLabel(String, -1, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ]+6, 100.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, 0, -1, 100.0);
  320.     format(String, sizeof(String),"{FF0033}Radar ID: {FFFFFF}%d {FF0033}criado.",RadID);
  321.     SendClientMessage(playerid, -1, String);
  322.     SetPlayerPos(playerid, Pos[0]+1, Pos[1]+1, Pos[2]+1);
  323.     SalvarRadares();
  324.     return 1;
  325. }
  326. // Comando para deletar os radares que foram criados //
  327. CMD:deletarradar(playerid, params[])
  328. {
  329.     new RadID;
  330.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Você não tem permissão para usar esse comando!");
  331.     if(sscanf(params, "d", RadID)) return SendClientMessage(playerid, -1, "{FF0000}Digite: {FFFFFF}/deletarradar [Id do radar]{FF0000}.");
  332.     format(String, sizeof(String), PastaRadar, RadID);
  333.     if(DOF2_FileExists(String))
  334.     {
  335.         DOF2_RemoveFile(String);
  336.         format(String, sizeof(String), "{FF0033}Você deletou o radar de ID: {FFFFFF}%d{FF0033}.", RadID);
  337.         SendClientMessage(playerid, -1 ,String);
  338.         DestroyDynamicObject(DataRadar[RadID][Radar1]), DestroyDynamicObject(DataRadar[RadID][Radar2]), DestroyDynamic3DTextLabel(DataRadar[RadID][TextoRadar]);
  339.         DataRadar[RadID][PozX] = 0, DataRadar[RadID][PozY] = 0, DataRadar[RadID][PozZ] = 0, DataRadar[RadID][PozA] = 0, DataRadar[RadID][Velomax] = 0, DataRadar[RadID][Tolerancia] = 0, DataRadar[RadID][Icone] = 0;
  340.         return 1;
  341.     }
  342.     else
  343.     {
  344.         format(String, sizeof(String), "{FF0033}O radar de ID: {FFFFFF}%d {FF0033}não existe.", RadID);
  345.         SendClientMessage(playerid, -1, String);
  346.     }
  347.     return 1;
  348. }
  349. // Comandos da carteira de habilitação //
  350. // Comando para mudar a quantidade de pontos do outro player //
  351. CMD:darpontos(playerid, params[])
  352. {
  353.     new IDJogador, Quantidade;
  354.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Você não tem permissão para usar esse comando!");
  355.     if(sscanf(params, "dd", IDJogador, Quantidade)) return SendClientMessage(playerid, -1, "{FF0000}Use {FFFFFF}/darpontos [ID] [Pontos]{FF0000}.");
  356.     if(Quantidade < 0 || Quantidade > 23) return SendClientMessage(playerid, -1, "[ERRO]A quantida de pontos tem quer ser no máximo 23!");
  357.     AData[IDJogador][Pontos] = AData[IDJogador][Pontos] + Quantidade;
  358.     format(String, sizeof(String), "{6495ED}Você deu {FFFFFF}%d pontos {6495ED}para {FFFFFF}%s{6495ED}.", Quantidade, Nome(IDJogador));
  359.     SendClientMessage(playerid, -1, String);
  360.     format(String, sizeof(String), "{6495ED}Você recebeu {FFFFFF}%d pontos {6495ED}de {FFFFFF}%s {6495ED}e agora está com {FFFFFF}%d {6495ED}pontos!", Quantidade, Nome(playerid), AData[IDJogador][Pontos]);
  361.     SendClientMessage(IDJogador, -1, String);
  362.     if(AData[IDJogador][Pontos] < 22) AData[IDJogador][Carteira] = true;
  363.     else AData[IDJogador][Carteira] = false;
  364.     return 1;
  365. }
  366. // Comando para setar a quantidade de pontos do outro player //
  367. CMD:setarpontos(playerid, params[])
  368. {
  369.     new IDJogador, Quantidade;
  370.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Você não tem permissão para usar esse comando!");
  371.     if(sscanf(params, "dd", IDJogador, Quantidade)) return SendClientMessage(playerid, -1, "{FF0000}Use {FFFFFF}/setarpontos [ID] [Pontos]{FF0000}.");
  372.     if(Quantidade < 0 || Quantidade > 22) return SendClientMessage(playerid, -1, "[ERRO]A quantidade de pontos tem quer ser no minimo 1 e máximo 22!");
  373.     AData[IDJogador][Pontos] = Quantidade;
  374.     format(String, sizeof(String), "{6495ED}Você setou os pontos de {FFFFFF}%s {6495ED}para {FFFFFF}%d{6495ED}.", Nome(IDJogador), Quantidade);
  375.     SendClientMessage(playerid, -1, String);
  376.     format(String, sizeof(String), "{6495ED}O Administrador {FFFFFF}%s {6495ED}setou seus pontos para {FFFFFF}%d {6495ED}!", Nome(playerid), Quantidade);
  377.     SendClientMessage(IDJogador, -1, String);
  378.     if(Quantidade < 22) AData[IDJogador][Carteira] = true;
  379.     else AData[IDJogador][Carteira] = false;
  380.     return 1;
  381. }
  382. // Comando para que caso o player não possua a carteira e nunca tenha pego ela consiga pegar a carteira de graça pela primeira vez //
  383. CMD:pegarcarteira(playerid)
  384. {
  385.     if(AData[playerid][PegouCarteira] == false)
  386.     {
  387.         AData[playerid][PegouCarteira] = true, AData[playerid][Carteira] = true, AData[playerid][Pontos] = 0;
  388.         SendClientMessage(playerid, -1, "{6495ED}Você pegou sua carteira pela {FFFFFF}primeira vez{6495ED}, agora você pode usar qualquer veiculo.");
  389.         SendClientMessage(playerid, -1, "{6495ED}Lembre-se: a cada {FFFFFF}22 pontos {6495ED}você perderá sua carteira, então cuidado ao passar nos radares em alta velocidade.");
  390.         SendClientMessage(playerid, -1, "{6495ED}Sempre que quiser ver com quantos pontos você está digite {FFFFFF}/minhacarteira{6495ED}.");
  391.         SalvarCarteira(playerid);
  392.     }
  393.     else
  394.     {
  395.         SendClientMessage(playerid, -1, "{6495ED}Você já pegou sua carteira!");
  396.     }
  397.     return 1;
  398. }
  399. // Comando para que caso o player tenha perdido carteira, o player terá que comprar a carteira novamente //
  400. CMD:comprarcarteira(playerid)
  401. {
  402.     if(AData[playerid][PegouCarteira] == true)
  403.     {
  404.         if(AData[playerid][Pontos] < 22 && AData[playerid][Carteira] == true)
  405.         {
  406.             SendClientMessage(playerid, -1, "{6495ED}(Radar)Você ainda não perdeu sua carteira!");
  407.         }
  408.         else
  409.         {
  410.             format(String, sizeof(String), "{9ACEEB}Deseja comprar sua carteira novamente?\n\n\n{9ACEEB}Custo: {44944A}R$ {FFFFFF}%i {9ACEEB}e {FFFFFF}%i Scores{9ACEEB}.", VALOR_DINHEIRO, VALOR_SCORE);
  411.             ShowPlayerDialog(playerid, DIALOG_COMPRARCARTEIRA, DIALOG_STYLE_MSGBOX, "{FF0000}#{6495ED}Comprar carteira", String, "Comprar", "Fechar");
  412.         }
  413.     }
  414.     else
  415.     {
  416.         SendClientMessage(playerid, -1, "{6495ED}Você ainda não pegou sua carteira, digite {FFFFFF}/pegarcarteira {6495ED}e pegue sua carteira!");
  417.     }
  418.     return 1;
  419. }
  420. // Comando para o player o estado que está sua carteira //
  421. CMD:minhacarteira(playerid)
  422. {
  423.     if(AData[playerid][PegouCarteira] == true)
  424.     {
  425.         if(Mostrando == false)
  426.         {
  427.             Mostrando = true;
  428.             SendClientMessage(playerid, -1, "{6495ED}Você está vendo sua carteira, para fechar digite {FFFFFF}/minhacarteira {6495ED}novamente!");
  429.             TextDrawSetPreviewModel(TextCarteira[3], GetPlayerSkin(playerid));
  430.             format(String, sizeof(String), "%s", Nome(playerid));
  431.             TextDrawSetString(TextCarteira[7], String);
  432.             format(String, sizeof(String), "PONTOS: %d", AData[playerid][Pontos]);
  433.             TextDrawSetString(TextCarteira[8], String);
  434.             if(AData[playerid][Pontos] <= 6)
  435.             {
  436.                 format(String, sizeof(String), "STATUS: ~g~PERFEITO");
  437.                 TextDrawSetString(TextCarteira[9], String);
  438.             }
  439.             else if(AData[playerid][Pontos] <= 12)
  440.             {
  441.                 format(String, sizeof(String), "STATUS: ~y~REGULAR");
  442.                 TextDrawSetString(TextCarteira[9], String);
  443.             }
  444.             else if(AData[playerid][Pontos] <= 18)
  445.             {
  446.                 format(String, sizeof(String), "STATUS: ~b~RISCO");
  447.                 TextDrawSetString(TextCarteira[9], String);
  448.             }
  449.             else if(AData[playerid][Pontos] <= 21)
  450.             {
  451.                 format(String, sizeof(String), "STATUS: ~r~PERIGO");
  452.                 TextDrawSetString(TextCarteira[9], String);
  453.             }
  454.             else if(AData[playerid][Pontos] == 22)
  455.             {
  456.                 format(String, sizeof(String), "STATUS: ~w~PERDEU");
  457.                 TextDrawSetString(TextCarteira[9], String);
  458.             }
  459.             TextDrawShowForPlayer(playerid, TextCarteira[7]);
  460.             TextDrawShowForPlayer(playerid, TextCarteira[8]);
  461.             TextDrawShowForPlayer(playerid, TextCarteira[9]);
  462.             TextDrawShowForPlayer(playerid, TextCarteira[0]);
  463.             TextDrawShowForPlayer(playerid, TextCarteira[1]);
  464.             TextDrawShowForPlayer(playerid, TextCarteira[2]);
  465.             TextDrawShowForPlayer(playerid, TextCarteira[3]);
  466.             TextDrawShowForPlayer(playerid, TextCarteira[4]);
  467.             TextDrawShowForPlayer(playerid, TextCarteira[5]);
  468.             TextDrawShowForPlayer(playerid, TextCarteira[6]);
  469.         }
  470.         else
  471.         {
  472.             Mostrando = false;
  473.             TextDrawHideForPlayer(playerid, TextCarteira[0]);
  474.             TextDrawHideForPlayer(playerid, TextCarteira[1]);
  475.             TextDrawHideForPlayer(playerid, TextCarteira[2]);
  476.             TextDrawHideForPlayer(playerid, TextCarteira[3]);
  477.             TextDrawHideForPlayer(playerid, TextCarteira[4]);
  478.             TextDrawHideForPlayer(playerid, TextCarteira[5]);
  479.             TextDrawHideForPlayer(playerid, TextCarteira[6]);
  480.             TextDrawHideForPlayer(playerid, TextCarteira[7]);
  481.             TextDrawHideForPlayer(playerid, TextCarteira[8]);
  482.             TextDrawHideForPlayer(playerid, TextCarteira[9]);
  483.         }
  484.     }
  485.     else
  486.     {
  487.         SendClientMessage(playerid, -1, "{6495ED}Você ainda não possui sua carteira, digite {FFFFFF}/pegarcarteira {6495ED}e obtenha a sua!");
  488.     }
  489.     return 1;
  490. }
  491. // Carrega todos os radares assim que o filterscript for carregado //
  492. stock CarregarRadares()
  493. {
  494.     for(new RadID=0;RadID<MAX_RADAR; RadID++)
  495.     {
  496.         format(String, sizeof(String), PastaRadar, RadID);
  497.         if(DOF2_FileExists(String))
  498.         {
  499.             DataRadar[RadID][Velomax] = DOF2_GetInt(String,"Velocidade"), DataRadar[RadID][Tolerancia] = DOF2_GetInt(String,"Tolerancia"), DataRadar[RadID][PozX] = DOF2_GetFloat(String,"PosX"), DataRadar[RadID][PozY] = DOF2_GetFloat(String,"PosY"), DataRadar[RadID][PozZ] = DOF2_GetFloat(String,"PosZ"), DataRadar[RadID][PozA] = DOF2_GetFloat(String,"Angulo");
  500.             DataRadar[RadID][Icone] = CreateDynamicMapIcon(DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ], 34, 0, 0, 0, -1, 150.0);
  501.             DataRadar[RadID][Radar1] = CreateDynamicObject(18880, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ], 0.0, 0.0, DataRadar[RadID][PozA]);
  502.             DataRadar[RadID][Radar2] = CreateDynamicObject(18880, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ], 0.0, 0.0, DataRadar[RadID][PozA] + 180.0);
  503.             format(String, sizeof(String),"{FF0000}LIMITE DE VELOCIDADE: {FFFFFF}%d KM/H\n{FF0000}TOLERÂNCIA: {FFFFFF}%d KM\n{FF0000}ID RADAR: {FFFFFF}%d",DataRadar[RadID][Velomax], DataRadar[RadID][Tolerancia], RadID);
  504.             DataRadar[RadID][TextoRadar] = CreateDynamic3DTextLabel(String, -1, DataRadar[RadID][PozX], DataRadar[RadID][PozY], DataRadar[RadID][PozZ]+6, 100.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, 0, -1, 100.0);
  505.         }
  506.     }
  507.     return 1;
  508. }
  509. // Salva todos os radares assim que o filterscript for finalizado //
  510. stock SalvarRadares()
  511. {
  512.     for(new RadID=0;RadID<MAX_RADAR; RadID++)
  513.     {
  514.         format(String, sizeof(String), PastaRadar, RadID);
  515.         if(DOF2_FileExists(String))
  516.         {
  517.             DOF2_SetInt(String,"Velocidade",DataRadar[RadID][Velomax]);
  518.             DOF2_SetInt(String,"Tolerancia",DataRadar[RadID][Tolerancia]);
  519.             DOF2_SetFloat(String,"PosX",DataRadar[RadID][PozX]);
  520.             DOF2_SetFloat(String,"PosY",DataRadar[RadID][PozY]);
  521.             DOF2_SetFloat(String,"PosZ",DataRadar[RadID][PozZ]);
  522.             DOF2_SetFloat(String,"Angulo",DataRadar[RadID][PozA]);
  523.         }
  524.     }
  525.     return 1;
  526. }
  527. // Procura ids para que nenhum radar tenha o id igual ao de outro radar //
  528. stock IdLivre()
  529. {
  530.     for(new i; i< MAX_RADAR; i++)
  531.     {
  532.         format(String, sizeof String, PastaRadar, i);
  533.         if(!DOF2_FileExists(String))
  534.         {
  535.             DataRadar[i][IdRadar] = i;
  536.             DOF2_CreateFile(String);
  537.             return 1;
  538.         }
  539.     }
  540.     return 0;
  541. }
  542. // Salva a carteira do player assim que ele desconecta //
  543. stock SalvarCarteira(playerid)
  544. {
  545.     DOF2_SetBool(Getar(playerid), "Registrado", AData[playerid][Registrado]);
  546.     DOF2_SetBool(Getar(playerid), "PegouCarteira", AData[playerid][PegouCarteira]);
  547.     DOF2_SetBool(Getar(playerid), "Carteira", AData[playerid][Carteira]);
  548.     DOF2_SetInt(Getar(playerid), "Pontos", AData[playerid][Pontos]);
  549.     DOF2_SaveFile();
  550.     return 1;
  551. }
  552. // Carrega a carteira do player assim que ele se conecta //
  553. stock CarregarCarteira(playerid)
  554. {
  555.     AData[playerid][PegouCarteira] = DOF2_GetBool(Getar(playerid), "PegouCarteira");
  556.     AData[playerid][Carteira] = DOF2_GetBool(Getar(playerid), "Carteira");
  557.     AData[playerid][Pontos] = DOF2_GetInt(Getar(playerid), "Pontos");
  558.     return 1;
  559. }
  560. // Acessa os arquivos da carteira de cada player //
  561. stock Getar(playerid)
  562. {
  563.     new Arq[40];
  564.     format(Arq, sizeof(Arq), PastaPontos, Nome(playerid));
  565.     return Arq;
  566. }
  567. // Geta o nome do player sempre que for nescessário //
  568. stock Nome(playerid)
  569. {
  570.     new name[24];
  571.     GetPlayerName(playerid, name, sizeof(name));
  572.     return name;
  573. }
  574. // Função para setar a velocidade do player sempre que for nescessário //
  575. stock SetVehicleSpeed(vehicleid, Float:speed, mode = 1)
  576. {
  577.     GetVehicleZAngle(vehicleid, Pos[3]) ;
  578.     speed = ((!mode)?(floatdiv(speed, 105.0)):(floatdiv(speed, 170.0)));
  579.     return SetVehicleVelocity(vehicleid, speed * floatsin(-Pos[3], degrees), speed * floatcos(-Pos[3], degrees), 0.0) ;
  580. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement