Advertisement
Guest User

Sweeper Job

a guest
Mar 30th, 2015
2,219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.67 KB | None | 0 0
  1. #define     FILTERSCRIPT
  2. #include    <a_samp>
  3.  
  4. #define     PRESSED(%0)         (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  5. #define     MONEY_PER_METER     (1.7)   // will get multiplied by distance player cleaned
  6. #define     UPDATE_TIME         (500)   // in milliseconds
  7.  
  8. new
  9.     bool: SweeperJob[MAX_PLAYERS] = {false, ...},
  10.     SweeperUpdate[MAX_PLAYERS] = {0, ...},
  11.     SweeperDistance[MAX_PLAYERS] = {0, ...},
  12.     Float: SweeperLastPos[MAX_PLAYERS][3],
  13.     PlayerText: SweeperText[MAX_PLAYERS];
  14.  
  15. stock ResetSweeperInfo(playerid, bool: removeTD = false)
  16. {
  17.     SweeperJob[playerid] = false;
  18.     SweeperUpdate[playerid] = 0;
  19.     SweeperDistance[playerid] = 0;
  20.     if(removeTD) PlayerTextDrawDestroy(playerid, SweeperText[playerid]);
  21.     return 1;
  22. }
  23.  
  24. public OnFilterScriptExit()
  25. {
  26.     for(new i; i < GetMaxPlayers(); ++i)
  27.     {
  28.         if(!IsPlayerConnected(i)) continue;
  29.         if(SweeperJob[i]) ResetSweeperInfo(i, true);
  30.     }
  31.    
  32.     return 1;
  33. }
  34.  
  35. public OnPlayerDisconnect(playerid, reason)
  36. {
  37.     ResetSweeperInfo(playerid);
  38.     return 1;
  39. }
  40.  
  41. public OnPlayerUpdate(playerid)
  42. {
  43.     if(SweeperJob[playerid] && GetVehicleModel(GetPlayerVehicleID(playerid)) == 574 && SweeperUpdate[playerid] < tickcount())
  44.     {
  45.         SweeperUpdate[playerid] = tickcount()+UPDATE_TIME;
  46.         SweeperDistance[playerid] += floatround(GetPlayerDistanceFromPoint(playerid, SweeperLastPos[playerid][0], SweeperLastPos[playerid][1], SweeperLastPos[playerid][2]));
  47.         GetPlayerPos(playerid, SweeperLastPos[playerid][0], SweeperLastPos[playerid][1], SweeperLastPos[playerid][2]);
  48.        
  49.         new string[64];
  50.         format(string, sizeof(string), "~b~~h~Sweeper Job~n~~n~~w~Cleaned: ~y~%d Meters", SweeperDistance[playerid]);
  51.         PlayerTextDrawSetString(playerid, SweeperText[playerid], string);
  52.     }
  53.    
  54.     return 1;
  55. }
  56.  
  57. public OnPlayerStateChange(playerid, newstate, oldstate)
  58. {
  59.     if(newstate == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 574 && !SweeperJob[playerid]) GameTextForPlayer(playerid, "~n~~n~~w~Press ~y~~k~~TOGGLE_SUBMISSIONS~ ~w~to start~n~~b~~h~~h~Sweeper Job", 3000, 3);
  60.     if(oldstate == PLAYER_STATE_DRIVER && SweeperJob[playerid])
  61.     {
  62.         new money = floatround(SweeperDistance[playerid] * MONEY_PER_METER), string[80];
  63.         format(string, sizeof(string), "~n~~n~~w~Distance Cleaned: ~b~~h~~h~%d Meters~n~~w~Earned ~g~~h~~h~$%d", SweeperDistance[playerid], money);
  64.         GameTextForPlayer(playerid, string, 3000, 3);
  65.         GivePlayerMoney(playerid, money);
  66.         ResetSweeperInfo(playerid, true);
  67.     }
  68.    
  69.     return 1;
  70. }
  71.  
  72. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  73. {
  74.     if(PRESSED(KEY_SUBMISSION) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 574 && !SweeperJob[playerid])
  75.     {
  76.         SweeperText[playerid] = CreatePlayerTextDraw(playerid, 40.000000, 305.000000, "~b~~h~Sweeper Job~n~~n~~w~Cleaned: ~y~0 Meters");
  77.         PlayerTextDrawBackgroundColor(playerid, SweeperText[playerid], 255);
  78.         PlayerTextDrawFont(playerid, SweeperText[playerid], 1);
  79.         PlayerTextDrawLetterSize(playerid, SweeperText[playerid], 0.240000, 1.100000);
  80.         PlayerTextDrawColor(playerid, SweeperText[playerid], -1);
  81.         PlayerTextDrawSetOutline(playerid, SweeperText[playerid], 1);
  82.         PlayerTextDrawSetProportional(playerid, SweeperText[playerid], 1);
  83.         PlayerTextDrawSetSelectable(playerid, SweeperText[playerid], 0);
  84.         PlayerTextDrawShow(playerid, SweeperText[playerid]);
  85.        
  86.         SweeperDistance[playerid] = 0;
  87.         GetPlayerPos(playerid, SweeperLastPos[playerid][0], SweeperLastPos[playerid][1], SweeperLastPos[playerid][2]);
  88.         SweeperJob[playerid] = true;
  89.         SendClientMessage(playerid, -1, "Drive around and clean the streets!");
  90.         SendClientMessage(playerid, -1, "You will get your money when you leave your Sweeper.");
  91.     }
  92.    
  93.     return 1;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement