Advertisement
GhostOwneD157

[FS] Sistema de Posto

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