Guest User

Untitled

a guest
Jul 27th, 2010
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.08 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  4. #define RED 0xFF0000FF
  5. #define LIME 0x00FF00FF
  6. forward CheckStatus();
  7. forward Fueldecrease();
  8. forward IsAtFuelStation(playerid);
  9. forward ReFill(playerid);
  10. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  11.  
  12. //Booleans
  13. new bool:TextDrawsShown[MAX_PLAYERS];
  14. new bool:VHSCreated[MAX_PLAYERS];
  15. new CarFuel[MAX_VEHICLES] = 0;
  16. //Timer
  17. new CheckStatusTimer;
  18. new FuelDecrease;
  19. new ReFuelTimer;
  20.  
  21. //4all
  22. new Text:Black0;
  23. new Text:Black1;
  24. new Text:Black2;
  25. new Text:Black3;
  26. new Text:LightBlack;
  27. //4player
  28. new Text:VHS[MAX_PLAYERS];
  29. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  30.  
  31. public OnFilterScriptInit()
  32. {
  33. CheckStatusTimer = SetTimer("CheckStatus", 900, 1);
  34. FuelDecrease = SetTimer("Fueldecrease", 5000, 1);
  35. for(new v = 0; v < MAX_VEHICLES; v++)
  36. {
  37. new randfuel = minrand(25,100);
  38. CarFuel[v] = randfuel; // This sets the fuel
  39. }
  40. }
  41.  
  42. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  43.  
  44. public OnFilterScriptExit()
  45. {
  46. KillTimer(CheckStatusTimer);
  47. KillTimer(FuelDecrease);
  48. TextDrawDestroy(Text:Black0);
  49. TextDrawDestroy(Text:Black1);
  50. TextDrawDestroy(Text:Black2);
  51. TextDrawDestroy(Text:Black3);
  52. TextDrawDestroy(Text:LightBlack);
  53. for(new i=0; i<MAX_PLAYERS; i++)
  54. {
  55. TextDrawDestroy(Text:VHS[i]);
  56. }
  57. }
  58.  
  59. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  60.  
  61. public OnVehicleSpawn(vehicleid)
  62. {
  63. CarFuel[vehicleid] = minrand(25,100);
  64. return 1;
  65. }
  66.  
  67. public OnPlayerConnect(playerid)
  68. {
  69. TextDrawsShown[playerid] = false;
  70. VHSCreated[playerid] = false;
  71. }
  72. stock minrand(min, max) //By Alex "Y_Less" Cole
  73. {
  74. return random(max-min)+min;
  75. }
  76. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  77. CMD:refuel(playerid,params[])
  78. {
  79. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  80. {
  81. if(IsAtFuelStation(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  82. {
  83. new vehicle = GetPlayerVehicleID(playerid);
  84. if(CarFuel[vehicle] >= 100)
  85. {
  86. SendClientMessage(playerid,RED,".::Error:Your Gas Tank Is Already Full");
  87. }
  88. else
  89. {
  90. SendClientMessage(playerid,LIME,"Your Gas Is Being ReFueled Right Now! Please Wait");
  91. ReFuelTimer = SetTimerEx("ReFill", 800, true, "i", playerid);
  92. }
  93. }
  94. else
  95. {
  96. SendClientMessage(playerid,RED,".::Error: You Must Be At A Gas Station To Refuel Your Vehicle");
  97. }
  98. }
  99. else
  100. {
  101. SendClientMessage(playerid,RED,".::Error: You must Be In A Vehicle To Refuel It Idiot");
  102. }
  103. return true;
  104. }
  105.  
  106. public ReFill(playerid)
  107. {
  108. new Float:x, Float:y, Float:z;
  109. new vehicle = GetPlayerVehicleID(playerid);
  110. if(GetPlayerPos(playerid, x, y, z) != IsAtFuelStation(playerid) || CarFuel[vehicle] >= 100)
  111. {
  112. StopRefueling(playerid);
  113. }
  114. else
  115. {
  116. CarFuel[vehicle] ++;
  117. }
  118. return true;
  119. }
  120.  
  121. stock StopRefueling(playerid)
  122. {
  123. GivePlayerMoney(playerid, -300);
  124. SendClientMessage(playerid, LIME,".::FUEL:Your Gas Tank Has Been Filled Up For $300");
  125. KillTimer(ReFuelTimer);
  126. return true;
  127. }
  128.  
  129. public Fueldecrease()
  130. {
  131. for(new i=0; i<MAX_PLAYERS; i++)
  132. {
  133. if(IsPlayerConnected(i))
  134. {
  135. if(IsPlayerInAnyVehicle(i))
  136. {
  137. new vehicle = GetPlayerVehicleID(i);
  138. new Float:speed;
  139. speed = GetPlayerSpeed(i);
  140. if(CarFuel[vehicle] >= 1 && CarFuel[vehicle] <= 100)
  141. {
  142. if(speed >= 1 && speed <= 70)
  143. {
  144. CarFuel[vehicle] -= 1;
  145. }
  146. if(speed >= 71 && speed <= 130)
  147. {
  148. CarFuel[vehicle] -= 1.5;
  149. }
  150. if(speed >= 131 && speed <= 170)
  151. {
  152. CarFuel[vehicle] -= 1.8;
  153. }
  154. if(speed >= 171)
  155. {
  156. CarFuel[vehicle] -= 2.0;
  157. }
  158. }
  159. }
  160. }
  161. }
  162. return 1;
  163. }
  164.  
  165.  
  166. public CheckStatus()
  167. {
  168. for(new i=0; i<MAX_PLAYERS; i++)
  169. {
  170. if(IsPlayerConnected(i))
  171. {
  172. if(IsPlayerInAnyVehicle(i))
  173. {
  174.  
  175. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  176.  
  177. if(TextDrawsShown[i] == false)
  178. {
  179. TextDrawsShown[i] = true;
  180. }
  181.  
  182. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  183. new vehicle = GetPlayerVehicleID(i);
  184. new String[128];
  185. new Float:X, Float:Y, Float:Z, Float:Speed;
  186. GetVehicleVelocity(GetPlayerVehicleID(i), X, Y, Z);
  187. Speed = floatmul(floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))), 200.0); //100.0
  188. if(CarFuel[vehicle] >= 1 && CarFuel[vehicle] <= 100)
  189. {
  190. format(String,sizeof(String),"~r~Fuel~g~:~p~%d ~r~MPH~g~:~p~%i",CarFuel[vehicle], floatround(floatdiv(Speed, 1.609344), floatround_floor), floatround(Speed, floatround_floor));
  191. }
  192. if(CarFuel[vehicle] == 0)
  193. {
  194. CarFuel[vehicle] = 0;
  195. CarFuel[vehicle] --;
  196. RemovePlayerFromVehicle(i);
  197. GameTextForPlayer(i,"~r~No Fuel In Vehicle",4000,3);
  198. }
  199. if(CarFuel[vehicle] == 25)
  200. {
  201. GameTextForPlayer(i,"~r~Warning Low Fuel",4000,3);
  202. }
  203. if(CarFuel[vehicle] == 20)
  204. {
  205. GameTextForPlayer(i,"~r~Warning Low Fuel",4000,3);
  206. }
  207. if(CarFuel[vehicle] == 15)
  208. {
  209. GameTextForPlayer(i,"~r~Warning Low Fuel",4000,3);
  210. }
  211. if(CarFuel[vehicle] == 10)
  212. {
  213. GameTextForPlayer(i,"~r~Warning Low Fuel",4000,3);
  214. }
  215. if(CarFuel[vehicle] == 5)
  216. {
  217. GameTextForPlayer(i,"~r~Warning Low Fuel",4000,3);
  218. }
  219. if(VHSCreated[i] == true)
  220. {
  221. TextDrawDestroy(VHS[i]);
  222. }
  223.  
  224. VHS[i] = TextDrawCreate(285.000000, 431.000000, String);
  225. TextDrawAlignment(VHS[i], 2);
  226. TextDrawBackgroundColor(VHS[i], 255);
  227. TextDrawFont(VHS[i], 2);
  228. TextDrawLetterSize(VHS[i], 0.360000, 1.000000);
  229. TextDrawColor(VHS[i], -1);
  230. TextDrawSetOutline(VHS[i], 1);
  231. TextDrawSetProportional(VHS[i], 1);
  232. TextDrawShowForPlayer(i, VHS[i]);
  233.  
  234. VHSCreated[i] = true;
  235.  
  236. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  237.  
  238. }
  239. else
  240. {
  241. if(TextDrawsShown[i] == true)
  242. {
  243. TextDrawHideForPlayer(i, Text:Black0);
  244. TextDrawHideForPlayer(i, Text:Black1);
  245. TextDrawHideForPlayer(i, Text:Black2);
  246. TextDrawHideForPlayer(i, Text:Black3);
  247. TextDrawHideForPlayer(i, Text:LightBlack);
  248. TextDrawsShown[i] = false;
  249. }
  250. TextDrawHideForPlayer(i, Text:VHS[i]);
  251. }
  252. }
  253. }
  254. }
  255.  
  256. stock GetPlayerSpeed(playerid)
  257. { //returns speed in kmph (for mph use 125)
  258. new Float:xx,Float:yy,Float:zz,Float:pSpeed;
  259. if(IsPlayerInAnyVehicle(playerid))GetVehicleVelocity(GetPlayerVehicleID(playerid),xx,yy,zz);
  260. else GetPlayerVelocity(playerid,xx,yy,zz);
  261. pSpeed = floatmul(floatsqroot(floatpower(xx,2)+floatpower(yy,2)+floatpower(zz,2)),200);
  262. return floatround(pSpeed);
  263. }
  264.  
  265. public IsAtFuelStation(playerid)
  266. {
  267. if(PlayerToPoint(10,playerid,1595.5406, 2198.0520, 10.3863) || PlayerToPoint(10,playerid,2202.0649, 2472.6697, 10.5677) ||
  268. PlayerToPoint(10,playerid,2115.1929, 919.9908, 10.5266) || PlayerToPoint(10,playerid,2640.7209, 1105.9565, 10.5274) ||
  269. PlayerToPoint(10,playerid,608.5971, 1699.6238, 6.9922) || PlayerToPoint(10,playerid,618.4878, 1684.5792, 6.9922) ||
  270. PlayerToPoint(10,playerid,2146.3467, 2748.2893, 10.5245) || PlayerToPoint(10,playerid,-1679.4595, 412.5129, 6.9973) ||
  271. PlayerToPoint(10,playerid,-1327.5607, 2677.4316, 49.8093) || PlayerToPoint(10,playerid,-1470.0050, 1863.2375, 32.3521) ||
  272. PlayerToPoint(10,playerid,-2409.2200, 976.2798, 45.2969) || PlayerToPoint(10,playerid,-2244.1396, -2560.5833, 31.9219) ||
  273. PlayerToPoint(10,playerid,-1606.0544, -2714.3083, 48.5335) || PlayerToPoint(10,playerid,1937.4293, -1773.1865, 13.3828) ||
  274. PlayerToPoint(10,playerid,-91.3854, -1169.9175, 2.4213) || PlayerToPoint(10,playerid,1383.4221, 462.5385, 20.1506) ||
  275. PlayerToPoint(10,playerid,660.4590, -565.0394, 16.3359) || PlayerToPoint(10,playerid,1381.7206, 459.1907, 20.3452) ||
  276. PlayerToPoint(10,playerid,-1605.7156, -2714.4573, 48.5335))
  277. { return true; }
  278. return false;
  279. }
  280.  
  281. stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  282. {
  283. new Float:oldposx, Float:oldposy, Float:oldposz;
  284. new Float:tempposx, Float:tempposy, Float:tempposz;
  285. GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  286. tempposx = (oldposx -x);
  287. tempposy = (oldposy -y);
  288. tempposz = (oldposz -z);
  289. if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  290. {
  291. return 1;
  292. }
  293. return 0;
  294. }
  295.  
  296. //EOF/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment