Noskyar

Velocimetro

Mar 13th, 2018
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1. //==============================================================================
  2. #include < a_samp >
  3. #include < Pawn.CMD >
  4. #include < a_zones >
  5. //==============================================================================
  6.  
  7. #define Combustivel_Max (100)
  8.  
  9. new
  10. TimerComb,
  11. Timer_Veloo,
  12. Velooc[MAX_PLAYERS],
  13. SemComb[MAX_PLAYERS],
  14. Abastecendo[MAX_PLAYERS],
  15. Gas[MAX_VEHICLES],
  16. PlayerText:Velocimetro[4]
  17. ;
  18.  
  19. new Float:Postos[][] =
  20. {
  21. {1004.0070,-939.3102,42.1797},
  22. {1944.3260,-1772.9254,13.3906},
  23. {1400.6882,-1680.5344,42.4339},
  24. {1496.5316,-1544.0677,23.5481},
  25. {2737.3364,-1774.2123,43.7973},
  26. {-90.5515,-1169.4578,2.4079},
  27. {-1609.7958,-2718.2048,48.5391},
  28. {-2029.4968,156.4366,28.9498},
  29. {-2408.7590,976.0934,45.4175},
  30. {1380.4712,462.7467,20.1107},
  31. {1385.0475,460.5417,20.1068},
  32. {1383.5532,457.1286,19.9561},
  33. {1379.1952,459.1295,19.9587},
  34. {-2243.9629,-2560.6477,31.8841},
  35. {-1676.6323,414.0262,6.9484},
  36. {2202.2349,2474.3494,10.5258},
  37. {614.9333,1689.7418,6.6968},
  38. {-1328.8250,2677.2173,49.7665},
  39. {70.3882,1218.6783,18.5165},
  40. {677.1299,-2866.3892,13.0944},
  41. {-1327.7218,2678.8723,50.0625}
  42. };
  43.  
  44. public OnFilterScriptInit()
  45. {
  46. for(new c=0;c<MAX_VEHICLES;c++){Gas[c] = Combustivel_Max;}
  47. TimerComb = SetTimer("CheckGas", 20000, 1);
  48. return 1;
  49. }
  50.  
  51. public OnFilterScriptExit()
  52. {
  53. KillTimer(TimerComb);
  54. return 1;
  55. }
  56.  
  57. public OnPlayerStateChange(playerid, newstate, oldstate)
  58. {
  59. if(newstate == PLAYER_STATE_DRIVER)
  60. {
  61. Timer_Veloo = SetTimerEx("Atualizar_Velocimetro", 300, 1, "i", playerid);
  62. }
  63. else if(oldstate == PLAYER_STATE_DRIVER)
  64. {
  65. if(Velooc[playerid] == 1)
  66. {
  67. for(new i = 0; i < sizeof(Velocimetro); ++i) { PlayerTextDrawHide(playerid, Velocimetro[i]);}
  68. Velooc[playerid] = 0;
  69. KillTimer(Timer_Veloo);
  70. }
  71. return 1;
  72. }
  73. return 1;
  74. }
  75.  
  76. public OnPlayerDisconnect(playerid, reason)
  77. {
  78. if(Velooc[playerid] == 1)
  79. {
  80. for(new i = 0; i < sizeof(Velocimetro); ++i) { PlayerTextDrawHide(playerid, Velocimetro[i]);}
  81. for(new i = 0; i < sizeof(Velocimetro); ++i) { PlayerTextDrawDestroy(playerid, Velocimetro[i]);}
  82. Velooc[playerid] = 0;
  83. KillTimer(Timer_Veloo);
  84. }
  85. return 1;
  86. }
  87.  
  88. public OnPlayerConnect(playerid)
  89. {
  90. Velooc[playerid] = 0;
  91. SemComb[playerid] = 0;
  92. Abastecendo[playerid] = 0;
  93. Criar_TD_Velocimetro(playerid);
  94. return 1;
  95. }
  96.  
  97. Criar_TD_Velocimetro(playerid)
  98. {
  99. Velocimetro[0] = CreatePlayerTextDraw(playerid, 641.555541, 433.571105, "usebox");
  100. PlayerTextDrawLetterSize(playerid, Velocimetro[0], 0.000000, 1.397902);
  101. PlayerTextDrawTextSize(playerid, Velocimetro[0], -2.000000, 0.000000);
  102. PlayerTextDrawAlignment(playerid, Velocimetro[0], 1);
  103. PlayerTextDrawColor(playerid, Velocimetro[0], 0);
  104. PlayerTextDrawUseBox(playerid, Velocimetro[0], 1);
  105. PlayerTextDrawBoxColor(playerid, Velocimetro[0], 102);
  106. PlayerTextDrawSetShadow(playerid, Velocimetro[0], 0);
  107. PlayerTextDrawSetOutline(playerid, Velocimetro[0], 0);
  108. PlayerTextDrawFont(playerid, Velocimetro[0], 0);
  109.  
  110. Velocimetro[1] = CreatePlayerTextDraw(playerid, 3.111108, 431.573333, " ");//Localizacao
  111. PlayerTextDrawLetterSize(playerid, Velocimetro[1], 0.312222, 1.739378);
  112. PlayerTextDrawAlignment(playerid, Velocimetro[1], 1);
  113. PlayerTextDrawColor(playerid, Velocimetro[1], 0xFF4D00FF);
  114. PlayerTextDrawSetShadow(playerid, Velocimetro[1], 0);
  115. PlayerTextDrawSetOutline(playerid, Velocimetro[1], 1);
  116. PlayerTextDrawBackgroundColor(playerid, Velocimetro[1], 51);
  117. PlayerTextDrawFont(playerid, Velocimetro[1], 1);
  118. PlayerTextDrawSetProportional(playerid, Velocimetro[1], 1);
  119.  
  120. Velocimetro[2] = CreatePlayerTextDraw(playerid,296.888824, 432.568878, " ");//KM/H
  121. PlayerTextDrawLetterSize(playerid, Velocimetro[2], 0.314888, 1.659733);
  122. PlayerTextDrawAlignment(playerid, Velocimetro[2], 1);
  123. PlayerTextDrawColor(playerid, Velocimetro[2], 0x0080FFFF);
  124. PlayerTextDrawSetShadow(playerid, Velocimetro[2], 0);
  125. PlayerTextDrawSetOutline(playerid, Velocimetro[2], 1);
  126. PlayerTextDrawBackgroundColor(playerid, Velocimetro[2], 51);
  127. PlayerTextDrawFont(playerid, Velocimetro[2], 1);
  128. PlayerTextDrawSetProportional(playerid, Velocimetro[2], 1);
  129.  
  130. Velocimetro[3] = CreatePlayerTextDraw(playerid,526.667053, 432.568908, " ");//Combustivel
  131. PlayerTextDrawLetterSize(playerid, Velocimetro[3], 0.372666, 1.560178);
  132. PlayerTextDrawAlignment(playerid, Velocimetro[3], 1);
  133. PlayerTextDrawColor(playerid, Velocimetro[3], 0x8000FFFF);
  134. PlayerTextDrawSetShadow(playerid, Velocimetro[3], 0);
  135. PlayerTextDrawSetOutline(playerid, Velocimetro[3], 1);
  136. PlayerTextDrawBackgroundColor(playerid, Velocimetro[3], 51);
  137. PlayerTextDrawFont(playerid, Velocimetro[3], 1);
  138. PlayerTextDrawSetProportional(playerid, Velocimetro[3], 1);
  139. }
  140.  
  141. ReturnPlayerZone(playerid)
  142. {
  143. new location[MAX_ZONE_NAME];
  144. GetPlayer2DZone(playerid, location, MAX_ZONE_NAME);
  145. return location;
  146. }
  147.  
  148. NoPosto(playerid)
  149. {
  150. for(new i = 0; i < sizeof (Postos); ++ i)
  151. {
  152. if(IsPlayerInRangeOfPoint(playerid, 7.0, Postos[i][0], Postos[i][1], Postos[i][2]))
  153. return 1;
  154. }
  155. return 0;
  156. }
  157.  
  158. GetPlayerSpeed(playerid)
  159. {
  160. new Float:ST[4];
  161. if(IsPlayerInAnyVehicle(playerid))
  162. GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
  163. else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
  164. ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
  165. return floatround(ST[3]);
  166. }
  167.  
  168. forward Atualizar_Velocimetro(playerid);
  169. public Atualizar_Velocimetro(playerid)
  170. {
  171. if(Velooc[playerid] == 0)
  172. {
  173. for(new i = 0; i < sizeof(Velocimetro); ++i) { PlayerTextDrawShow(playerid, Velocimetro[i]);}
  174. Velooc[playerid] = 1;
  175. }
  176. new vehicleid = GetPlayerVehicleID(playerid);
  177. new str1[256],str2[256],str3[256];
  178.  
  179. format(str1, sizeof(str1), "Localizacao: ~w~%s", ReturnPlayerZone(playerid));
  180. PlayerTextDrawSetString(playerid, Velocimetro[1], str1);
  181.  
  182. format(str2, sizeof(str2), "KM/H: ~w~%i", GetPlayerSpeed(playerid));
  183. PlayerTextDrawSetString(playerid, Velocimetro[2], str2);
  184.  
  185. format(str3, sizeof(str3), "Combustivel: ~w~%d", Gas[vehicleid]);
  186. PlayerTextDrawSetString(playerid, Velocimetro[3], str3);
  187. }
  188.  
  189. forward Abastecimento();
  190. public Abastecimento()
  191. {
  192. for(new i=0; i<MAX_PLAYERS; i++)
  193. {
  194. if(IsPlayerConnected(i))
  195. {
  196. new VID,Abbs,string[256];
  197. VID = GetPlayerVehicleID(i);
  198. Abbs = Combustivel_Max - Gas[VID];
  199. Abbs = Abbs * 4;
  200. if(Abastecendo[i] == 1)
  201. {
  202. if(GetPlayerMoney(i) >= Abbs+4)
  203. {
  204. Gas[VID] = 100;
  205. format(string,sizeof(string)," Você reabasteceu seu veículo, por: R$%d.",Abbs);
  206. SendClientMessage(i,-1,string);
  207. TogglePlayerControllable(i, 1);
  208. GivePlayerMoney(i, - Abbs);
  209. Abastecendo[i] = 0;
  210. }
  211. else
  212. {
  213. TogglePlayerControllable(i, 1);
  214. format(string,sizeof(string)," Voce nao tem dinheiro suficiente para encher o tanque, custo: $%d.",Abbs);
  215. SendClientMessage(i,-1,string);
  216. }
  217. }
  218. }
  219. }
  220. }
  221.  
  222. forward CheckGas();
  223. public CheckGas()
  224. {
  225. for(new i=0;i<MAX_PLAYERS;i++)
  226. {
  227. if(IsPlayerConnected(i))
  228. {
  229. if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  230. {
  231. new vehicle = GetPlayerVehicleID(i);
  232. new VehicleModel = GetVehicleModel(vehicle);
  233. if(VehicleModel == 509 || VehicleModel == 481 || VehicleModel == 510)
  234. {
  235. return 1;
  236. }
  237. if(Gas[vehicle] >= 1)
  238. {
  239. if(Gas[vehicle] <= 10){}
  240. Gas[vehicle]--;
  241. }
  242. else
  243. {
  244. SemComb[i] = 1;
  245. TogglePlayerControllable(i, 0);
  246. SendClientMessage(i,-1,"Sem combustivel Use /sair Para sair do veiculo");
  247. SendClientMessage(i,-1, "O motor do veículo apagou por falta de combustível");
  248. }
  249. }
  250. }
  251. }
  252. return 1;
  253. }
  254.  
  255. CMD:abastecer(playerid)
  256. {
  257. new vid = GetPlayerVehicleID(playerid);
  258. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Você não está em um veículo!");
  259. if(Gas[vid] >= 100) return SendClientMessage(playerid,-1,"Tanque já está cheio.");
  260. if(NoPosto(playerid))
  261. {
  262. GameTextForPlayer(playerid,"Abastecendo...",5000,3);
  263. SetTimerEx("Abastecimento",5000,0, "i", playerid);
  264. TogglePlayerControllable(playerid, 0);
  265. Abastecendo[playerid] = 1;
  266. }
  267. else
  268. {
  269. SendClientMessage(playerid,-1,"Você não está em um posto");
  270. }
  271. return 1;
  272. }
  273.  
  274. CMD:sair(playerid)
  275. {
  276. TogglePlayerControllable(playerid, 1);
  277. RemovePlayerFromVehicle(playerid);
  278. return 1;
  279. }
Add Comment
Please, Sign In to add comment