Guest User

tires_damage

a guest
Mar 30th, 2012
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.17 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////////
  2. //                      Script name: Tires Damage                             //
  3. //                      Author: Snoowker                                      //
  4. //                      Date of creation: 31-03-2012 01:54                    //
  5. //                      Skype: snoowker                                       //
  6. ////////////////////////////////////////////////////////////////////////////////
  7.  
  8. #include <a_samp>
  9.  
  10. #define PRESSED(%0) \
  11.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  12.    
  13. //------------------------------------------------------------------------------
  14. // Congiguration (RECOMMENDED!)
  15. #define MIN_SLOW_TIME       20
  16. #define MAX_SLOW_TIME       40
  17. #define MAX_SLOW_SPEED      7
  18. #define SLOW_KEY_ID         40
  19. #define NEED_TIRES_STATE    5
  20. #define TIMER_DURATION      1
  21. //------------------------------------------------------------------------------
  22.  
  23. new
  24.     td_BustTime[MAX_PLAYERS],
  25.     td_TimerID;
  26.  
  27. public OnFilterScriptInit() {
  28.     for(new td_i = 0, td_m = GetMaxPlayers(); td_i < td_m; td_i ++) {
  29.         td_BustTime[td_i] = 0;
  30.         DeletePVar(td_i, "td_vehicleid");
  31.     }
  32.     td_TimerID = SetTimer("td_CheckTires", TIMER_DURATION * 1000, true);
  33.     print("Tires Damage script by Snoowker successfully loaded!");
  34.     return 1;
  35. }
  36.  
  37. public OnFilterScriptExit() {
  38.     for(new td_i = 0, td_m = GetMaxPlayers(); td_i < td_m; td_i ++) {
  39.         td_BustTime[td_i] = 0;
  40.         DeletePVar(td_i, "td_vehicleid");
  41.     }
  42.     KillTimer(td_TimerID);
  43.     print("Tires Damage script by Snoowker successfully unloaded!");
  44.     return 1;
  45. }
  46.  
  47. forward td_CheckTires();
  48. public td_CheckTires() {
  49.     new
  50.         td_Keys,
  51.         td_ud,
  52.         td_lr,
  53.         td_vehicleid,
  54.         td_panels,
  55.         td_doors,
  56.         td_lights,
  57.         td_tires,
  58.         td_NeedTimeToDamage;
  59.     for(new td_i = 0, td_m = GetMaxPlayers(); td_i < td_m; td_i ++) {
  60.         if(!IsPlayerConnected(td_i) || GetPlayerState(td_i) != PLAYER_STATE_DRIVER || td_BustTime[td_i] == 0) continue;
  61.         td_vehicleid = GetPlayerVehicleID(td_i);
  62.         if(td_vehicleid != GetPVarInt(td_i, "td_vehicleid")) {
  63.             td_BustTime[td_i] = 0;
  64.             DeletePVar(td_i, "td_vehicleid");
  65.             continue;
  66.         }
  67.         GetPlayerKeys(td_i, td_Keys, td_ud, td_lr);
  68.         if(!(td_Keys & SLOW_KEY_ID || td_Keys == SLOW_KEY_ID)) {
  69.             td_BustTime[td_i] = 0;
  70.             DeletePVar(td_i, "td_vehicleid");
  71.             continue;
  72.         }
  73.         td_BustTime[td_i] += TIMER_DURATION;
  74.         if(td_GetVehicleSpeed(td_vehicleid) >= MAX_SLOW_SPEED) continue;
  75.         td_NeedTimeToDamage = MIN_SLOW_TIME + random(MAX_SLOW_TIME - MIN_SLOW_TIME + 1);
  76.         if(td_BustTime[td_i] >= td_NeedTimeToDamage) {
  77.             GetVehicleDamageStatus(td_vehicleid, td_panels, td_doors, td_lights, td_tires);
  78.             UpdateVehicleDamageStatus(td_vehicleid, td_panels, td_doors, td_lights, NEED_TIRES_STATE);
  79.             td_BustTime[td_i] = 0;
  80.             DeletePVar(td_i, "td_vehicleid");
  81.             continue;
  82.         }
  83.     }
  84.     return 1;
  85. }
  86.  
  87. public OnPlayerConnect(playerid) {
  88.     td_BustTime[playerid] = 0;
  89.     return 1;
  90. }
  91.  
  92. public OnPlayerDisconnect(playerid, reason) {
  93.     td_BustTime[playerid] = 0;
  94.     return 1;
  95. }
  96.  
  97. public OnPlayerStateChange(playerid, newstate, oldstate) {
  98.     if(oldstate == PLAYER_STATE_DRIVER) {
  99.         td_BustTime[playerid] = 0;
  100.         DeletePVar(playerid, "td_vehicleid");
  101.     }
  102.     return 1;
  103. }
  104.  
  105. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
  106.     if(PRESSED(SLOW_KEY_ID) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !td_BustTime[playerid] && IsVehicleRD(GetPlayerVehicleID(playerid))) {
  107.         new
  108.             td_vehicleid = GetPlayerVehicleID(playerid),
  109.             td_panels,
  110.             td_doors,
  111.             td_lights,
  112.             td_tires;
  113.         GetVehicleDamageStatus(td_vehicleid, td_panels, td_doors, td_lights, td_tires);
  114.         if(td_tires != NEED_TIRES_STATE) {
  115.             td_BustTime[playerid] = 1;
  116.             SetPVarInt(playerid, "td_vehicleid", td_vehicleid);
  117.         }
  118.     }
  119.     return 1;
  120. }
  121.  
  122. td_GetVehicleSpeed(td_carid) {
  123.     new
  124.         Float: td_Velocity[3];
  125.     GetVehicleVelocity(td_carid, td_Velocity[0], td_Velocity[1], td_Velocity[2]);
  126.     return floatround(floatsqroot(td_Velocity[0] * td_Velocity[0] + td_Velocity[1] * td_Velocity[1] + td_Velocity[2] * td_Velocity[2]) * 100);
  127. }
  128.  
  129. IsVehicleRD(td_vehicleid) {
  130.     new
  131.         td_model = GetVehicleModel(td_vehicleid);
  132.     switch(td_model) {
  133.         case
  134.             400, 402, 403, 405, 406, 407, 408, 409, 411, 412, 413, 414, 415, 416,
  135.             418, 419, 421, 422, 423, 424, 426, 427, 428, 429, 431, 433, 434, 437,
  136.             438, 439, 442, 443, 444, 448, 451, 455, 456, 457, 458, 459, 461, 462,
  137.             463, 466, 467, 468, 470, 471, 475, 477, 478, 480, 482, 483, 485, 486,
  138.             489, 490, 491, 492, 494, 495, 498, 499, 500, 502, 503, 504, 505, 506,
  139.             507, 508, 514, 515, 517, 518, 521..529, 531, 533..536, 541..547, 549,
  140.             551, 552, 554..558, 560..562, 566..568, 571..576, 578..583, 585..588,
  141.             596..605, 609: return 1;
  142.         default:
  143.             return 0;
  144.     }
  145.     return 0;
  146. }
  147.  
  148. ////////////////////////////////////////////////////////////////////////////////
  149. //                      Script name: Tires Damage                             //
  150. //                      Author: Snoowker                                      //
  151. //                      Date of creation: 31-03-2012                          //
  152. //                      Skype: snoowker                                       //
  153. ////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment