Advertisement
EditPawn

[Inc] eDistance System [EN]

Jan 2nd, 2013
1,072
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.02 KB | None | 0 0
  1. ///////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //                 |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  4. //                 |*|      eDistance System     |*|
  5. //                 |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  6. //
  7. //               =====================================
  8. //                           INTRODUCTION
  9. //               =====================================
  10. //
  11. //               This allows you to check include
  12. //               as a vehicle traveled in meters,
  13. //               Kilometers or Miles.
  14. //
  15. //               =====================================
  16. //                             NATIVES
  17. //               =====================================
  18. //
  19. //               native GetMeters(vehicleid);
  20. //               native GetKilometers(vehicleid);
  21. //               native GetMiles(vehicleid);
  22. //                       native ResetMetersTraveled(vehicleid);
  23. //
  24. //               =====================================
  25. //                      EXAMPLES (METHOD OF USE)
  26. //               =====================================
  27. //
  28. //                    *-- | METERS TRAVELED | --*
  29. //               format(string, sizeof(string), "This vehicle traveled %d Meters Traveled.", GetMeters(GetPlayerVehicleID(playerid)));
  30. //               SendClientMessage(playerid, -1, string);
  31. //
  32. //                    *-- | KILOMETERS TRAVELED | --*
  33. //               format(string, sizeof(string), "This vehicle traveled %s Kilometers Traveled.", GetKilometers(GetPlayerVehicleID(playerid)));
  34. //               SendClientMessage(playerid, -1, string);
  35. //
  36. //                    *-- | MILES TRAVELED | --*
  37. //               format(string, sizeof(string), "This vehicle traveled %s Miles Traveled.", GetMiles(GetPlayerVehicleID(playerid)));
  38. //               SendClientMessage(playerid, -1, string);
  39. //
  40. //               =====================================
  41. //                              CREDITS
  42. //               =====================================
  43. //
  44. //                  * Include Built by EditPawn *
  45. //       * BlueX Paulor and for helping me with some functions *
  46. //        * Lordz tutorial by calling Functions and Callbacks *
  47. //
  48. //               =====================================
  49. //                  BUGS, SUGGESTIONS AND QUESTIONS
  50. //               =====================================
  51. //
  52. //                   Visit: http://forum.sa-mp.com
  53. //
  54. //
  55. ///////////////////////////////////////////////////////////////////////////////////
  56.  
  57. /* ----- INCLUDE ----- */
  58. #include    a_samp
  59.  
  60. /* ----- VARS ----- */
  61. new E@_R[MAX_VEHICLES] = 0,
  62.     Float:v@_P[3],
  63.     E@_Timer[MAX_PLAYERS],
  64.     E@_S[12];
  65.  
  66. /* ----- DEFINES ----- */
  67. #define   GetMeters(%0)              E@_R[%0]
  68. #define   GetKilometers(%0)         (E@_R[%0] * 0.001)
  69. #define   GetMiles(%0)              (E@_R[%0] * 0.000621)
  70. #define   ResetMetersTraveled(%0)    E@_R[%0] = 0;
  71.  
  72. /* ----- FORWARDS ----- */
  73. forward E@_OnPlayerDisconnect(playerid, reason);
  74. forward E@_OnPlayerStateChange(playerid, newstate, oldstate);
  75. forward E@_At(playerid);
  76.  
  77. /* ----- CALLBACKS ----- */
  78. public OnPlayerDisconnect(playerid, reason) {
  79.     KillTimer(E@_Timer[playerid]);
  80.     return CallLocalFunction("E@_OnPlayerDisconnect", "id", playerid, reason);
  81. }
  82.  
  83. public OnPlayerExitVehicle(playerid, vehicleid) {
  84.     KillTimer(E@_Timer[playerid]);
  85.     return CallLocalFunction("E@_OnPlayerExitVehicle", "id", playerid, vehicleid);
  86. }
  87.  
  88. public E@_At(playerid) {
  89.     if(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]) <= 100) {
  90.         E@_R[GetPlayerVehicleID(playerid)] += floatround(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]));
  91.     }
  92.     GetVehiclePos(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]);
  93. /*
  94.     OBS: If you want to test, just abilite this part will appear and all forms of distance that the vehicle is running.
  95.  
  96.     new E@_Str[129];
  97.     format(E@_Str, sizeof(E@_Str), "(%d) Meters - (%s) Kilometers - (%s) Miles", GetMeters(GetPlayerVehicleID(playerid)), GetKilometers(GetPlayerVehicleID(playerid)), GetMiles(GetPlayerVehicleID(playerid)));
  98.     SendClientMessage(playerid, -1, E@_Str);
  99. */
  100. }
  101.  
  102. public OnPlayerStateChange(playerid, newstate, oldstate) {
  103.     if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) {
  104.         GetVehiclePos(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]);
  105.         E@_Timer[playerid] = SetTimerEx("E@_At", 1000, true, "i", playerid);
  106.     }
  107.     else if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT) KillTimer(E@_Timer[playerid]);
  108.     return CallLocalFunction("E@_OnPlayerStateChange", "idd", playerid, newstate, oldstate);
  109. }
  110.  
  111. /* ----- HOOKS ----- */
  112. #if defined _ALS_OnPlayerDisconnect
  113.     #undef OnPlayerDisconnect
  114. #else
  115.     #define _ALS_OnPlayerDisconnect
  116. #endif
  117. #define OnPlayerDisconnect E@_OnPlayerDisconnect
  118.  
  119. #if defined _ALS_OnPlayerStateChange
  120.     #undef OnPlayerStateChange
  121. #else
  122.     #define _ALS_OnPlayerStateChange
  123. #endif
  124. #define OnPlayerStateChange E@_OnPlayerStateChange
  125.  
  126. #if defined _ALS_OnPlayerExitVehicle
  127.     #undef OnPlayerExitVehicle
  128. #endif
  129. #define OnPlayerExitVehicle E@_OnPlayerExitVehicle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement