Intoxicated

FuelFS

Aug 13th, 2011
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.20 KB | None | 0 0
  1. #pragma unused ret_memcpy
  2.  
  3. new
  4.     VehicleFuel[MAX_VEHICLES],
  5.     IsFueling[MAX_PLAYERS]=0,
  6.     Text:DisplayFuel[MAX_PLAYERS],
  7.     RefuelTimer[MAX_PLAYERS];
  8.  
  9. forward VehicleLowerFuel();
  10. forward RefuelingTimer(playerid);
  11.  
  12. #define DROPTIME 4
  13. #define FUELTIME 1
  14.  
  15. #define COLOR_GREEN 0x33AA33AA
  16. #define COLOR_RED 0xFF0000FF
  17.  
  18.  
  19. public OnFilterScriptInit()
  20. {
  21.     print(" Fuel Module loaded. ");
  22.     for(new i=0; i < MAX_VEHICLES; i++)
  23.     {
  24.         VehicleFuel[i] = random(100);
  25.     }
  26.     SetTimer("VehicleLowerFuel",(1000*DROPTIME),true);
  27. }
  28.  
  29. public OnFilterScriptExit()
  30. {
  31.     return 1;
  32. }
  33.  
  34. public OnPlayerSpawn(playerid)
  35. {
  36.     new
  37.         fstring[128];
  38.     format(fstring,sizeof fstring,"~w~Fuel: ~g~%%");
  39.     DisplayFuel[playerid] = TextDrawCreate(320.00, 450.00,fstring); //create the textdraw at position
  40.     TextDrawFont(DisplayFuel[playerid],2); //font type of textdraw
  41.     TextDrawLetterSize(DisplayFuel[playerid],0.699999,1.700000); //size...
  42.     TextDrawSetShadow(DisplayFuel[playerid],3);
  43.     TextDrawAlignment(DisplayFuel[playerid], 2);
  44.     return 1;
  45. }
  46.  
  47. public OnPlayerStateChange(playerid, newstate, oldstate)
  48. {
  49.     if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
  50.     {
  51.         new vid = GetPlayerVehicleID(playerid);
  52.         if(VehicleFuel[vid] > 20)
  53.         {
  54.             new
  55.                 fstring[128];
  56.             format(fstring,sizeof fstring,"~w~Fuel: ~g~%i%%",VehicleFuel[vid]);
  57.             TextDrawSetString(DisplayFuel[playerid],fstring);
  58.             TextDrawShowForPlayer(playerid,DisplayFuel[playerid]);
  59.         }
  60.         else if(VehicleFuel[vid] <= 20)
  61.         {
  62.             new
  63.                 fstring[125];
  64.             format(fstring,sizeof fstring,"~w~Fuel: ~r~%i%%",VehicleFuel[vid]);
  65.  
  66.             TextDrawSetString(DisplayFuel[playerid],fstring);
  67.             TextDrawShowForPlayer(playerid,DisplayFuel[playerid]);
  68.         }
  69.     }
  70.     else
  71.     {
  72.         TextDrawHideForPlayer(playerid,DisplayFuel[playerid]); //hiding if a player isnt driving/or an passenger
  73.     }
  74.     return 1;
  75. }
  76.  
  77. CMD:refuel(playerid, params[])
  78. {
  79.     if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_RED,"You are not in an vehicle!");
  80.     if (IsFueling[playerid]) return SendClientMessage(playerid,COLOR_RED,"You are already refuelling!");
  81.     TogglePlayerControllable(playerid,0);
  82.     SetCameraBehindPlayer(playerid);
  83.     IsFueling[playerid] = 1;
  84.     RefuelTimer[playerid] = SetTimerEx("RefuelingTimer",(FUELTIME*1000),1,"i",playerid); //setting refueltimer
  85.     return 1;
  86. }
  87.  
  88. public VehicleLowerFuel()
  89. {
  90.     for(new i=0; i<MAX_PLAYERS; i++)
  91.     {
  92.         if (IsFueling[i]) continue; //stop when a player is already refuelling
  93.         new vid = GetPlayerVehicleID(i); //getting vehicle ID
  94.         if (GetPlayerVehicleSeat(i) == 0)
  95.         {
  96.             VehicleFuel[vid]--; //lowering fuel value
  97.             if (VehicleFuel[vid]<1) //if fuel is empty
  98.             {
  99.                 VehicleFuel[vid] = 0; //setting fuel to 0 (else the timer will set it to -1 -2 -3 etc before removing player)
  100.                 RemovePlayerFromVehicle(i); //remove player out of vehicle
  101.                 GameTextForPlayer(i,"~r~You are out of ~w~fuel~r~!",5000,4); //show text
  102.                 TextDrawHideForPlayer(i,DisplayFuel[i]);
  103.             }
  104.             if(VehicleFuel[vid] > 20)
  105.             {
  106.                 new
  107.                     fstring[128];
  108.                 format(fstring,sizeof fstring,"~w~Fuel: ~g~%i%%",VehicleFuel[vid]);
  109.                 TextDrawSetString(DisplayFuel[i],fstring);
  110.                 TextDrawShowForPlayer(i,DisplayFuel[i]);
  111.             }
  112.             else if(VehicleFuel[vid] <= 20)
  113.             {
  114.                 new
  115.                     fstring[125];
  116.                 format(fstring,sizeof fstring,"~w~Fuel: ~r~%i%%",VehicleFuel[vid]);
  117.  
  118.                 TextDrawSetString(DisplayFuel[i],fstring);
  119.                 TextDrawShowForPlayer(i,DisplayFuel[i]);
  120.             }
  121.         }
  122.         else
  123.         TextDrawHideForPlayer(i,DisplayFuel[i]);
  124.     }
  125.     return 1;
  126. }
  127.  
  128. public RefuelingTimer(playerid)
  129. {
  130.     new vid = GetPlayerVehicleID(playerid);
  131.     VehicleFuel[vid]++; //restoring fuel to 100
  132.     new
  133.         fstring[128];
  134.     format(fstring,sizeof fstring,"~g~Refueling: ~y~%i%%",VehicleFuel[vid]);
  135.     TextDrawSetString(DisplayFuel[playerid],fstring); //small update on textdraw
  136.     if(VehicleFuel[vid] == 100)
  137.     {
  138.         TogglePlayerControllable(playerid,1); //unfreeze player
  139.         IsFueling[playerid]=0;
  140.         KillTimer(RefuelTimer[playerid]);
  141.         return 1;
  142.     }
  143.     return 1;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment