Advertisement
Hardware

Sistema de Posto

Feb 1st, 2012
4,023
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 14.69 KB | None | 0 0
  1. /*
  2.                          ~~~~~~~~~~~~~~~~ • Sistema de Posto •  ~~~~~~~~~~~~~~~~
  3.  
  4.  
  5.                                         » Autor: Deus;
  6.                                         » Programador: Bryan (Hardware);
  7.                                         » Ideia: Wendell Rocha.
  8.  
  9.  
  10.                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  11.  
  12.  
  13. */
  14. #include <a_samp>
  15. #include <zcmd>
  16. #include <cpstream>
  17.  
  18. #define PrecoGNV            1.70
  19. #define PrecoGasC           2.45
  20. #define PrecoGasA           2.50
  21. #define PrecoDiesel         2.10
  22. #define PrecoEtanol         2.00
  23.  
  24. #define DialogCombustivel   7
  25. #define DialogGNV           8
  26. #define DialogGasC          9
  27. #define DialogGasA          10
  28. #define DialogDiesel        11
  29. #define DialogEtanol        12
  30.  
  31. #define ExtratoCombustivel  13
  32.  
  33. enum TiposC
  34. {
  35.     GNV,
  36.     GasolinaC,
  37.     GasolinaA,
  38.     Diesel,
  39.     Etanol
  40. };
  41. new TCombustivel[MAX_VEHICLES][TiposC];
  42.  
  43. forward PlayerNoPosto();
  44.  
  45. new bool:CilindroGNV[MAX_PLAYERS];
  46. new CheckCilindro;
  47.  
  48.  
  49. public OnFilterScriptInit()
  50. {
  51.     print("\n\n~~~~~~~~~~ Sistema Combustível carregado! ~~~~~~~~~~");
  52.     print("» Programador: Bryan (Hardware)");
  53.     print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  54.     SetTimer("PlayerNoPosto",1000,true);
  55.  
  56.     CheckCilindro = CPS_AddCheckpoint(1352.2036,-1758.7800,13.5078,2.0,80);
  57.     return 1;
  58. }
  59.  
  60. public OnFilterScriptExit()
  61. {
  62.     print("~~~~~~~~~~ Sistema Combustível descarregado ~~~~~~~~~~");
  63.     return 1;
  64. }
  65.  
  66.  
  67. public OnPlayerEnterCheckpoint(playerid)
  68. {
  69.     if(CPS_IsPlayerInCheckpoint(playerid,CheckCilindro))
  70.     {
  71.         SendClientMessage(playerid,-1,"| INFO | Digite /comprarcilindro");
  72.         SendClientMessage(playerid,-1,"| INFO | Valor: R$ 750,00.");
  73.     }
  74.     return 1;
  75. }
  76.  
  77. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  78. {
  79.     new vehicleid = GetPlayerVehicleID(playerid);
  80.     new Valor,Float:Gastou,sGas[100];
  81.     if(dialogid == DialogCombustivel)
  82.     {
  83.         if(response)
  84.         {
  85.             if(listitem == 0)
  86.             {
  87.                 if(!CilindroGNV[playerid]) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Para abastecer GNV, precisar ter o Cilindro antes!");
  88.                 if((Aeronaves(vehicleid) || Motocicletas(vehicleid))) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Este veículo não pode ser abastecido de GNV!");
  89.                 ShowPlayerDialog(playerid,DialogGNV,DIALOG_STYLE_INPUT,"- Gás Natural Veicular (GNV)","{FF8080}Obs:O GNV é medido por cm³. Então, 1000 cm³ = 1 Litro.\n{FFFFFF}Digite a quantidade que deseja de GNV:","Confirmar","Sair");
  90.             }
  91.             if(listitem == 1)
  92.             {
  93.                 ShowPlayerDialog(playerid,DialogGasC,DIALOG_STYLE_INPUT,"- Gasolina Comum","{FFFFFF}Digite a quantidade de Gasolina Comum:","Confirmar","Sair");
  94.             }
  95.             if(listitem == 2)
  96.             {
  97.                 ShowPlayerDialog(playerid,DialogGasA,DIALOG_STYLE_INPUT,"- Gasolina Aditivada","{FFFFFF}Digite a quantidade Gasolina Aditivada:","Confirmar","Sair");
  98.             }
  99.             if(listitem == 3)
  100.             {
  101.                 if(VeiculoDiesel(vehicleid))
  102.                 {
  103.                     ShowPlayerDialog(playerid,DialogDiesel,DIALOG_STYLE_INPUT,"- Diesel","{FFFFFF}Digite a quantidade de Diesel:","Confirmar","Sair");
  104.                 }
  105.                 else
  106.                 {
  107.                     SendClientMessage(playerid,0xFF0000AA,"| ERRO | O combustível Diesel é somente para caminhões, ônibus e vans.");
  108.                 }
  109.             }
  110.             if(listitem == 4)
  111.             {
  112.                 if(Aeronaves(vehicleid)) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Este veículo não pode ser abastecido de Etanol!");
  113.                 ShowPlayerDialog(playerid,DialogEtanol,DIALOG_STYLE_INPUT,"- Etanol","{FFFFFF}Digite a quantidade de Etanol:","Confirmar","Sair");
  114.             }
  115.         }
  116.     }
  117.     if(dialogid == DialogGNV)
  118.     {
  119.         Valor = strval(inputtext);
  120.         if(Valor > 80) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer GNV é de 80cm³/80Litros");
  121.         else if(TCombustivel[vehicleid][GNV] + Valor > 80 ) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o cilindro cheio!");
  122.         if(Valor < 0) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não pode abastecer um valor negativo!");
  123.         Gastou = Valor * PrecoGNV;
  124.         if(GetPlayerMoney(playerid) < Gastou) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não tem dinheiro suficiente!");
  125.         format(sGas,sizeof sGas,"{FFFFFF}Você tinha {8080FF}%d{FFFFFF} e abasteceu {8080FF}%d. {FFFFFF}Valor pago: {8080FF}R$ %d", TCombustivel[vehicleid][GNV],Valor,floatround(Gastou,floatround_round));
  126.         ShowPlayerDialog(playerid,ExtratoCombustivel,DIALOG_STYLE_MSGBOX,"Extrato do combustível",sGas,"Fechar","");
  127.         TCombustivel[vehicleid][GNV] += Valor;
  128.         GivePlayerMoney(playerid, floatround(Gastou,floatround_round));
  129.         return 1;
  130.     }
  131.     if(dialogid == DialogGasC)
  132.     {
  133.         Valor = strval(inputtext);
  134.         if(Motocicletas(vehicleid))
  135.         {
  136.             if(Valor > 50) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer uma Motocicleta é 50Litros!");
  137.             if(TCombustivel[vehicleid][GasolinaC] + Valor > 50) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  138.         }
  139.         else if(Aeronaves(vehicleid))
  140.         {
  141.             if(Valor > 350) SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer uma Aeronave é 350 Litros!");
  142.             if(TCombustivel[vehicleid][GasolinaC] + Valor > 350) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  143.         }
  144.         else
  145.         {
  146.             if(Valor > 100) SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer um Automóvel é 100 Litros!");
  147.             if(TCombustivel[vehicleid][GasolinaC] + Valor > 100) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  148.         }
  149.         if(Valor < 0) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não pode abastecer um valor negativo!");
  150.         Gastou = Valor * PrecoGasC;
  151.         if(GetPlayerMoney(playerid) < Gastou) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não tem dinheiro suficiente!");
  152.         format(sGas,sizeof sGas,"{FFFFFF}Você tinha {8080FF}%d{FFFFFF} e abasteceu {8080FF}%d. {FFFFFF}Valor pago: {8080FF}R$ %d", TCombustivel[vehicleid][GasolinaC],Valor,floatround(Gastou,floatround_round));
  153.         ShowPlayerDialog(playerid,ExtratoCombustivel,DIALOG_STYLE_MSGBOX,"Extrato do combustível",sGas,"Fechar","");
  154.         TCombustivel[vehicleid][GasolinaC] += Valor;
  155.         GivePlayerMoney(playerid, floatround(Gastou,floatround_round));
  156.         return 1;
  157.     }
  158.     if(dialogid == DialogGasA)
  159.     {
  160.         Valor = strval(inputtext);
  161.         if(Motocicletas(vehicleid))
  162.         {
  163.             if(Valor > 50) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer uma Motocicleta é 50Litros!");
  164.             if(TCombustivel[vehicleid][GasolinaA] + Valor > 50) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  165.         }
  166.         else if(Aeronaves(vehicleid))
  167.         {
  168.             if(Valor > 350) SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer uma Aeronave é 350 Litros!");
  169.             if(TCombustivel[vehicleid][GasolinaA] + Valor > 350) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  170.         }
  171.         else
  172.         {
  173.             if(Valor > 100) SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer um Automóvel é 100 Litros!");
  174.             if(TCombustivel[vehicleid][GasolinaA] + Valor > 100) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  175.         }
  176.         if(Valor < 0) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não pode abastecer um valor negativo!");
  177.         Gastou = Valor * PrecoGasA;
  178.         if(GetPlayerMoney(playerid) < Gastou) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não tem dinheiro suficiente!");
  179.         format(sGas,sizeof sGas,"{FFFFFF}Você tinha {8080FF}%d{FFFFFF} e abasteceu {8080FF}%d. {FFFFFF}Valor pago: {8080FF}R$ %d", TCombustivel[vehicleid][GasolinaA],Valor,floatround(Gastou,floatround_round));
  180.         ShowPlayerDialog(playerid,ExtratoCombustivel,DIALOG_STYLE_MSGBOX,"Extrato do combustível",sGas,"Fechar","");
  181.         TCombustivel[vehicleid][GasolinaA] += Valor;
  182.         GivePlayerMoney(playerid, floatround(Gastou,floatround_round));
  183.         return 1;
  184.     }
  185.     if(dialogid == DialogDiesel)
  186.     {
  187.         Valor = strval(inputtext);
  188.         if(Valor > 150) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer um caminhão, ônibus e afins é 150 Litros!");
  189.         if(TCombustivel[vehicleid][Diesel] + Valor > 150) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  190.         if(Valor < 0) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não pode abastecer um valor negativo!");
  191.         Gastou = Valor * PrecoDiesel;
  192.         if(GetPlayerMoney(playerid) < Gastou) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não tem dinheiro suficiente!");
  193.         format(sGas,sizeof sGas,"{FFFFFF}Você tinha {8080FF}%d{FFFFFF} e abasteceu {8080FF}%d. {FFFFFF}Valor pago: {8080FF}R$ %d", TCombustivel[vehicleid][Diesel],Valor,floatround(Gastou,floatround_round));
  194.         ShowPlayerDialog(playerid,ExtratoCombustivel,DIALOG_STYLE_MSGBOX,"Extrato do combustível",sGas,"Fechar","");
  195.         TCombustivel[vehicleid][Diesel] += Valor;
  196.         GivePlayerMoney(playerid, floatround(Gastou,floatround_round));
  197.         return 1;
  198.     }
  199.     if(dialogid == DialogEtanol)
  200.     {
  201.         Valor = strval(inputtext);
  202.         if(Motocicletas(vehicleid))
  203.         {
  204.             if(Valor > 50) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer uma Motocicleta é 50Litros!");
  205.             if(TCombustivel[vehicleid][Etanol] + Valor > 50) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  206.         }
  207.         else
  208.         {
  209.             if(Valor > 100) return  SendClientMessage(playerid,0xFF0000AA,"| ERRO | Valor máximo para abastecer um Automóvel é 100 Litros!");
  210.             if(TCombustivel[vehicleid][Etanol] + Valor > 100) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Desculpe, mas você já está com o tanque cheio!");
  211.         }
  212.         if(Valor < 0) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não pode abastecer um valor negativo!");
  213.         Gastou = Valor * PrecoEtanol;
  214.         if(GetPlayerMoney(playerid) < Gastou) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não tem dinheiro suficiente!");
  215.         format(sGas,sizeof sGas,"{FFFFFF}Você tinha {8080FF}%d{FFFFFF} e abasteceu {8080FF}%d. {FFFFFF}Valor pago: {8080FF}R$ %d", TCombustivel[vehicleid][Etanol],Valor,floatround(Gastou,floatround_round));
  216.         ShowPlayerDialog(playerid,ExtratoCombustivel,DIALOG_STYLE_MSGBOX,"Extrato do combustível",sGas,"Fechar","");
  217.         TCombustivel[vehicleid][Etanol] += Valor;
  218.         GivePlayerMoney(playerid, floatround(Gastou,floatround_round));
  219.         return 1;
  220.     }
  221.     return 1;
  222. }
  223. CMD:abastecer(playerid,params[])
  224. {
  225.     new vehicleid = GetPlayerVehicleID(playerid);
  226.     if(IsPlayerInRangeOfPoint(playerid,15.0,1936.8785,-1769.0784,13.3828))
  227.     {
  228.         if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não está em um veículo!");
  229.         if(Bicicleta(vehicleid)) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Não pode abastecer uma bicicleta!");
  230.         ShowPlayerDialog(playerid,DialogCombustivel,DIALOG_STYLE_LIST,"Tipos de Combustíveis","- Gás Natural Veicular (GNV)\n- Gasolina Comum\n- Gasolina Aditivada\n- Diesel\n- Etanol","Escolher","Sair");
  231.     }
  232.     else
  233.     {
  234.         SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não está em um Posto de Combustível!");
  235.     }
  236.     return 1;
  237. }
  238. CMD:tabelapreco(playerid,params[])
  239. {
  240.     SendClientMessage(playerid,0xFFFFFFAA,"~~~~~~~{FF8040} Tabela de preços {FFFFFF}~~~~~~~");
  241.     SendClientMessage(playerid,0xFFFFFFAA,"• Gás Natural Veicular(GNV):{808080} R$ 1,70");
  242.     SendClientMessage(playerid,0xFFFFFFAA,"• Gasolina Comum:{808080} R$ 2,45");
  243.     SendClientMessage(playerid,0xFFFFFFAA,"• Gasolina Aditivada:{808080} R$ 2,50");
  244.     SendClientMessage(playerid,0xFFFFFFAA,"• Diesel:{808080} R$ 2,10");
  245.     SendClientMessage(playerid,0xFFFFFFAA,"• Etanol:{808080} R$ 2,00");
  246.     SendClientMessage(playerid,0xFFFFFFAA,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  247.     return 1;
  248. }
  249. CMD:comprarcilindro(playerid,params[])
  250. {
  251.     if(!CPS_IsPlayerInCheckpoint(playerid,CheckCilindro)) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não está no Checkpoint!");
  252.     if(GetPlayerMoney(playerid) < 750) return SendClientMessage(playerid,0xFF0000AA,"| ERRO | Você não tem dinheiro suficiente!");
  253.     CilindroGNV[playerid] = true;
  254.     SendClientMessage(playerid,0x008040AA,"| INFO | Parabéns, você adquiriu um cilindro de 'Gás Natural Veicular' (GNV)!");
  255.     GivePlayerMoney(playerid,-750);
  256.     return 1;
  257. }
  258. stock Motocicletas(vehicleid)
  259. {
  260.     switch(GetVehicleModel(vehicleid))
  261.     {
  262.         case 461,462,463,468,471,521,522,523,581,586: return 1;
  263.     }
  264.     return 0;
  265. }
  266. stock Aeronaves(vehicleid)
  267. {
  268.     switch(GetVehicleModel(vehicleid))
  269.     {
  270.         case 593,592,577,563,553,548,520,519,513, 512,511,497,488,487,476,469,460,447,425,417:return 1;
  271.     }
  272.     return 0;
  273. }
  274. stock Bicicleta(vehicleid)
  275. {
  276.     switch(GetVehicleModel(vehicleid))
  277.     {
  278.         case 481,509,510:return 1;
  279.     }
  280.     return 0;
  281. }
  282. stock VeiculoDiesel(vehicleid)
  283. {
  284.     switch(GetVehicleModel(vehicleid))
  285.     {
  286.         case 403,406,407,408,414,416,423,427,428,433,437,444,455,456,498,499,508,514,515,524,525,544,552,556,557,573,578,681,609: return 1;
  287.     }
  288.     return 0;
  289. }
  290. public PlayerNoPosto()
  291. {
  292.     for(new x = 0; x < MAX_PLAYERS; x++)
  293.     {
  294.         if(!IsPlayerConnected(x)) continue;
  295.         {
  296.             if(IsPlayerInRangeOfPoint(x,20.0,1936.8785,-1769.0784,13.3828))
  297.             {
  298.                 GameTextForPlayer(x,"[~r~P~w~osto de ~r~G~w~asolina ~n~ Use ~g~/abastecer",1000,3);
  299.             }
  300.         }
  301.     }
  302.     return 1;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement