Advertisement
Guest User

Fuel System by reddromero - Ansial

a guest
May 9th, 2014
601
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.03 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #undef MAX_PLAYERS
  4. #define MAX_PLAYERS 500
  5.  
  6. new Text:speedo1[MAX_PLAYERS];
  7. new Text:speedo2[MAX_PLAYERS];
  8. new Text:speedo3[MAX_PLAYERS];
  9. new Text:speedo4[MAX_PLAYERS];
  10.  
  11. new CarFuel[MAX_VEHICLES];
  12. new Float:PlayerPos[3][MAX_PLAYERS];
  13. new PlayerTotalDistance[MAX_PLAYERS];
  14.  
  15. new GotFuelMessage[MAX_PLAYERS];
  16.  
  17. #define DEF_GAS (100) //Default gas level for the vehicles in the server when the filterscript is loaded. (DEFAULT: 100)
  18. #define DISTANCE (250) //Distance in which FUEL_INCREMENT will be removed from the fuel (DEFAULT: 250)
  19. #define FUEL_INCREMENT (1) //The value that will be removed from the fuel when DISTANCE is met. (DEFAULT: 1)
  20. #define TEXT_DRAW_FONT (2) //Font for the text draw. It's recomended that you not change this. (DEFAULT: 2)
  21. #define TEXT_DRAW_X_FACTOR (0.4) // Font size X factor (DEFAULT: 0.4) (RECOMENDED NOT TO CHANGE)
  22. #define TEXT_DRAW_Y_FACTOR (0.8) // Font size Y factor (DEFAULT: 0.8) (RECOMENDED NOT TO CHANGE)
  23. #define EXIT_VEHICLE_ON_NO_GAS (true) // If the player should exit the vehicle when the fuel is 0, set this true.
  24. #define WARNING (20) // Number at which to send a warning to the player. (DEFAULT: 20)
  25. #define WARNING_LIMIT (10000) // Time to wait before sending another message about low fuel. (DEFAULT: 10000)
  26.  
  27. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  28.  
  29. new CarName[][] =
  30. {
  31. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
  32. "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
  33. "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
  34. "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
  35. "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
  36. "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
  37. "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
  38. "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
  39. "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
  40. "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
  41. "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
  42. "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
  43. "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
  44. "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
  45. "Blista Compact", "Police Maverick", "Boxvillde", "Benson", "Mesa", "RC Goblin",
  46. "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
  47. "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
  48. "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
  49. "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
  50. "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
  51. "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
  52. "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
  53. "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
  54. "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
  55. "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
  56. "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
  57. "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
  58. "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
  59. "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
  60. "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
  61. "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
  62. "Tiller", "Utility Trailer"
  63. };
  64.  
  65. public OnFilterScriptInit()
  66. {
  67. for (new i = 0; i <MAX_VEHICLES; i++) {
  68.  
  69. CarFuel[i] = DEF_GAS;
  70. }
  71. for (new i = 0; i < MAX_PLAYERS; i++) {
  72. GotFuelMessage[i] = -1;
  73. }
  74.  
  75.  
  76. return 1;
  77. }
  78.  
  79. public OnFilterScriptExit()
  80. {
  81. for ( new i = 0; i < MAX_PLAYERS; i++) {
  82.  
  83. TextDrawHideForPlayer(i, speedo1[i]);
  84. TextDrawHideForPlayer(i, speedo2[i]);
  85. TextDrawHideForPlayer(i, speedo3[i]);
  86. TextDrawHideForPlayer(i, speedo4[i]);
  87. TextDrawDestroy(speedo1[i]);
  88. TextDrawDestroy(speedo2[i]);
  89. TextDrawDestroy(speedo3[i]);
  90. TextDrawDestroy(speedo4[i]);
  91. }
  92.  
  93. return 1;
  94. }
  95.  
  96. stock Float:GetPlayerSpeed(playerid, bool:Z = true)
  97. {
  98. new Float:SpeedX, Float:SpeedY, Float:SpeedZ;
  99. new Float:Speed;
  100. if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), SpeedX, SpeedY, SpeedZ);
  101. else GetPlayerVelocity(playerid, SpeedX, SpeedY, SpeedZ);
  102. if(Z) Speed = floatsqroot(floatadd(floatpower(SpeedX, 2.0), floatadd(floatpower(SpeedY, 2.0), floatpower(SpeedZ, 2.0))));
  103. else Speed = floatsqroot(floatadd(floatpower(SpeedX, 2.0), floatpower(SpeedY, 2.0)));
  104. Speed = floatround(Speed * 100 * 1.61);
  105. return Speed;
  106. }
  107.  
  108. stock DamageColor(Float: h) {
  109. new str[5];
  110. if (h <= 30)
  111. format(str, sizeof(str), "r");
  112. else if (h < 60)
  113. format(str, sizeof(str), "y");
  114. else
  115. format(str, sizeof(str), "g");
  116. return str;
  117. }
  118.  
  119. stock FuelColor(vid) {
  120. new str[5];
  121. if (CarFuel[vid] <= 20)
  122. format(str, sizeof(str), "r");
  123. else if (CarFuel[vid] < 40)
  124. format(str, sizeof(str), "y");
  125. else
  126. format(str, sizeof(str), "g");
  127. return str;
  128. }
  129.  
  130. stock GetDistance( Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2 )
  131. {
  132. return floatround( floatsqroot( ( ( x1 - x2 ) * ( x1 - x2 ) ) + ( ( y1 - y2 ) * ( y1 - y2 ) ) + ( ( z1 - z2 ) * ( z1 - z2 ) ) ) ) ;
  133. }
  134.  
  135. public OnPlayerUpdate(playerid) {
  136. if (IsPlayerInAnyVehicle(playerid)) {
  137. new Float:vh, Float:s;
  138. new vid = GetPlayerVehicleID(playerid);
  139. new h, string[80];
  140. GetVehicleHealth(vid, vh);
  141. h = floatround(vh) / 10;
  142. format(string, sizeof(string), "Health: ~%s~%d \%", DamageColor(h), h);
  143. TextDrawSetString(speedo2[playerid], string);
  144.  
  145. s = GetPlayerSpeed(playerid);
  146. new ss = floatround(s);
  147. format(string, sizeof(string), "Speed: ~g~%d km/h", ss);
  148. TextDrawSetString(speedo3[playerid], string);
  149.  
  150.  
  151. new Float:x, Float:y, Float:z;
  152. GetPlayerPos(playerid, x, y, z);
  153. format(string, sizeof(string), "Gas: ~%s~%d \%", FuelColor(vid), CarFuel[vid]);
  154. TextDrawSetString(speedo4[playerid], string);
  155. new distance = GetDistance(x, y, z, PlayerPos[0][playerid], PlayerPos[1][playerid], PlayerPos[2][playerid]);
  156. PlayerPos[0][playerid] = x;
  157. PlayerPos[1][playerid] = y;
  158. PlayerPos[2][playerid] = z;
  159.  
  160. PlayerTotalDistance[playerid] += distance;
  161. if (PlayerTotalDistance[playerid] > DISTANCE) {
  162. CarFuel[vid] -= FUEL_INCREMENT;
  163. PlayerTotalDistance[playerid] = 0;
  164. }
  165. }
  166.  
  167. return 1;
  168. }
  169.  
  170. public OnPlayerStateChange(playerid, newstate, oldstate) {
  171. if ( (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) && oldstate == PLAYER_STATE_ONFOOT ) {
  172.  
  173. new str[50];
  174. new vid = GetPlayerVehicleID(playerid);
  175. format(str, sizeof(str), "Vehicle: ~g~%s", CarName[GetVehicleModel(vid)-400]);
  176. speedo1[playerid] = TextDrawCreate(470.0, 390.0, " ");
  177. TextDrawSetString(speedo1[playerid], str);
  178. TextDrawSetShadow(speedo1[playerid], false);
  179. TextDrawSetOutline(speedo1[playerid], 1);
  180. TextDrawLetterSize(speedo1[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
  181. TextDrawSetProportional(speedo1[playerid], 1);
  182. TextDrawFont(speedo1[playerid], TEXT_DRAW_FONT);
  183. TextDrawShowForPlayer(playerid, speedo1[playerid]);
  184.  
  185. new Float:vh;
  186. GetVehicleHealth(vid, vh);
  187. new h = floatround(vh) / 10;
  188. format(str, sizeof(str), "Health: ~g~%d \%", h);
  189. speedo2[playerid] = TextDrawCreate(470.0, 400.0, " ");
  190. TextDrawSetString(speedo2[playerid], str);
  191. TextDrawSetShadow(speedo2[playerid], false);
  192. TextDrawSetOutline(speedo2[playerid], 1);
  193. TextDrawLetterSize(speedo2[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
  194. TextDrawSetProportional(speedo2[playerid], 1);
  195. TextDrawFont(speedo2[playerid], TEXT_DRAW_FONT);
  196. TextDrawShowForPlayer(playerid, speedo2[playerid]);
  197.  
  198.  
  199. new Float:s = GetPlayerSpeed(playerid);
  200. new ss = floatround(s);
  201. format(str, sizeof(str), "Speed: ~%s~%d km/h", DamageColor(h), ss);
  202. speedo3[playerid] = TextDrawCreate(470.0, 410.0, " ");
  203. TextDrawSetString(speedo3[playerid], str);
  204. TextDrawSetShadow(speedo3[playerid], false);
  205. TextDrawSetOutline(speedo3[playerid], 1);
  206. TextDrawLetterSize(speedo3[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
  207. TextDrawSetProportional(speedo3[playerid], 1);
  208. TextDrawFont(speedo3[playerid], TEXT_DRAW_FONT);
  209. TextDrawShowForPlayer(playerid, speedo3[playerid]);
  210.  
  211. format(str, sizeof(str), "Gas: ~%s~%d \%", FuelColor(vid), CarFuel[vid]);
  212. speedo4[playerid] = TextDrawCreate(470.0, 420.0, " ");
  213. TextDrawSetString(speedo4[playerid], str);
  214. TextDrawSetShadow(speedo4[playerid], false);
  215. TextDrawSetOutline(speedo4[playerid], 1);
  216. TextDrawLetterSize(speedo4[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
  217. TextDrawSetProportional(speedo4[playerid], 1);
  218. TextDrawFont(speedo4[playerid], TEXT_DRAW_FONT);
  219. TextDrawShowForPlayer(playerid, speedo4[playerid]);
  220.  
  221. new Float:x, Float:y, Float:z;
  222. GetPlayerPos(playerid, x, y, z);
  223. PlayerPos[0][playerid] = x;
  224. PlayerPos[1][playerid] = y;
  225. PlayerPos[2][playerid] = z;
  226. }
  227. if (newstate == PLAYER_STATE_ONFOOT && ( oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_ONFOOT ) ) {
  228. TextDrawHideForPlayer(playerid, speedo1[playerid]);
  229. TextDrawHideForPlayer(playerid, speedo2[playerid]);
  230. TextDrawHideForPlayer(playerid, speedo3[playerid]);
  231. TextDrawHideForPlayer(playerid, speedo4[playerid]);
  232. }
  233. return 1;
  234. }
  235.  
  236. public OnPlayerConnect(playerid) {
  237. GotFuelMessage[playerid] = -1;
  238. return 1;
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement