Matteo987

sQT V1.1

Mar 2nd, 2018
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. #if defined QuickTurn_Included
  2. #endinput
  3. #endif
  4.  
  5. #define QuickTurn_Included
  6.  
  7. #include <a_samp>
  8.  
  9. /*=================================================
  10. * Forwarding Hooks
  11. ===================================================*/
  12. #if defined QuickTurn_OnPlayerUpdate
  13. forward QuickTurn_OnPlayerUpdate(playerid);
  14. #endif
  15.  
  16. #if defined QuickTurn_OnPlayerStateChange
  17. forward QuickTurn_OnPlayerStateChange(playerid, newstate, oldstate);
  18. #endif
  19.  
  20. #if defined OnPlayerQuickTurn
  21. forward OnPlayerQuickTurn(playerid, turntype);
  22. #endif
  23.  
  24. /*=================================================
  25. * Variable For Old Angle
  26. ===================================================*/
  27. static
  28. QuickTurn_OldAngle[MAX_PLAYERS];
  29. /*=================================================
  30. * InnerFunctions
  31. ===================================================*/
  32.  
  33. static QuickTurn_IsVehicleEmpty(playerid, vehicleid)
  34. {
  35. for(new i, j = GetPlayerPoolSize(); i <= j; i++)
  36. {
  37. if(!IsPlayerConnected(i)) continue;
  38. if(i != playerid && GetPlayerVehicleID(i) == vehicleid) return 1;
  39. }
  40. return 0;
  41. }
  42. /*=================================================
  43. * Callbacks
  44. ===================================================*/
  45. public OnPlayerStateChange(playerid, newstate, oldstate)
  46. {
  47. if(newstate == PLAYER_STATE_DRIVER)
  48. {
  49. static Float:z_rot;
  50.  
  51. GetVehicleZAngle(GetPlayerVehicleID(playerid), z_rot);
  52. QuickTurn_OldAngle[playerid] = floatround(z_rot, floatround_round);
  53. }
  54. #if defined QuickTurn_OnPlayerStateChange
  55. return QuickTurn_OnPlayerStateChange(playerid, newstate, oldstate);
  56. #else
  57. return 1;
  58. #endif
  59. }
  60.  
  61. public OnPlayerUpdate(playerid)
  62. {
  63. if(IsPlayerInAnyVehicle(playerid))
  64. {
  65. static Float:z_rot, QT_Veh, z_rot_round;
  66.  
  67. QT_Veh = GetPlayerVehicleID(playerid);
  68. z_rot = GetVehicleZAngle(QT_Veh, z_rot);
  69. z_rot_round = floatround(z_rot, floatround_round);
  70.  
  71. if((QuickTurn_OldAngle[playerid] - z_rot_round) == 90 || (QuickTurn_OldAngle[playerid] - z_rot_round) == -90)
  72. {
  73. switch(GetPlayerState(playerid))
  74. {
  75. case 2:
  76. {
  77. #if defined OnPlayerQuickTurn
  78. OnPlayerQuickTurn(playerid, 1);
  79. #endif
  80. }
  81. case 3:
  82. {
  83. if(QuickTurn_IsVehicleEmpty(playerid, QT_Veh))
  84. {
  85. #if defined OnPlayerQuickTurn
  86. OnPlayerQuickTurn(playerid, 2);
  87. #endif
  88. }
  89. }
  90. }
  91. }
  92. QuickTurn_OldAngle[playerid] = z_rot_round;
  93. }
  94.  
  95. #if defined QuickTurn_OnPlayerUpdate
  96. return QuickTurn_OnPlayerUpdate(playerid);
  97. #else
  98. return 1;
  99. #endif
  100. }
  101.  
  102. /*=================================================
  103. * Hooked Functions
  104. ===================================================*/
  105. #if defined _ALS_OnPlayerStateChange
  106. #undef OnPlayerStateChange
  107. #else
  108. #define _ALSOnPlayerStateChange
  109. #endif
  110.  
  111. #define OnPlayerStateChange QuickTurn_OnPlayerStateChange
  112.  
  113. #if defined _ALS_OnPlayerUpdate
  114. #undef OnPlayerUpdate
  115. #else
  116. #define _ALS_OnPlayerUpdate
  117. #endif
  118.  
  119. #define OnPlayerUpdate QuickTurn_OnPlayerUpdate
Add Comment
Please, Sign In to add comment