AndY56

Untitled

Jan 16th, 2019 (edited)
779
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.04 KB | None | 0 0
  1. #if defined _performance_included
  2. #endinput
  3. #endif
  4. #define _performance_included
  5.  
  6. static pCheckPaused[MAX_PLAYERS];
  7. static pGetVehicleID[MAX_PLAYERS];
  8. static pUpdateTimer200ms[MAX_PLAYERS];
  9. static pKeySendType[MAX_PLAYERS char];
  10. static vEngineMode[MAX_VEHICLES char];
  11. static vEngineState[MAX_VEHICLES char];
  12. static vEngineDefault = 1;
  13.  
  14. #define pressed(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  15. #define holding(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  16.  
  17. static gMaxSpeed[212] =
  18. {
  19. 157, 147, 186, 110, 133, 164, 110, 148, 100, 158, 129, 221, 168, 110,
  20. 105, 192, 154, 270, 115, 149, 145, 154, 140, 99, 135, 270, 173, 165,
  21. 157, 201, 190, 130, 94, 110, 167, 0, 149, 158, 142, 168, 136, 145, 139,
  22. 126, 110, 164, 270, 270, 111, 0, 0, 193, 270, 60, 135, 157, 106, 95, 157,
  23. 136, 270, 160, 111, 142, 145, 145, 147, 140, 144, 270, 157, 110, 190, 190,
  24. 149, 173, 270, 186, 117, 140, 184, 73, 156, 122, 190, 99, 64, 270, 270, 139,
  25. 157, 149, 140, 270, 214, 176, 162, 270, 108, 123, 140, 145, 216, 216, 173,
  26. 140, 179, 166, 108, 79, 101, 270, 270, 270, 120, 142, 157, 157, 164, 270,
  27. 270, 160, 176, 151, 130, 160, 158, 149, 176, 149, 60, 70, 110, 167,
  28. 168, 158, 173, 0, 0, 270, 149, 203, 164, 151, 150, 147, 149, 142, 270,
  29. 153, 145, 157, 121, 270, 144, 158, 113, 113, 156, 178, 169, 154, 178,
  30. 270, 145, 165, 160, 173, 146, 0, 0, 93, 60, 110, 60, 158, 158, 270, 130,
  31. 158, 153, 151, 136, 85, 0, 153, 142, 165, 108, 162, 0, 0, 270, 270, 130,
  32. 190, 175, 175, 175, 158, 151, 110, 169, 171, 148, 152, 0, 0, 0, 108, 0, 0
  33. };
  34.  
  35. public OnPlayerConnect(playerid)
  36. {
  37. pKeySendType{playerid} = 0;
  38. pGetVehicleID[playerid] = 0;
  39. #if defined pt_OnPlayerConnect
  40. return pt_OnPlayerConnect(playerid);
  41. #else
  42. return 1;
  43. #endif
  44. }
  45. #if defined _ALS_OnPlayerConnect
  46. #undef OnPlayerConnect
  47. #else
  48. #define _ALS_OnPlayerConnect
  49. #endif
  50. #if defined pt_OnPlayerConnect
  51. forward pt_OnPlayerConnect(playerid);
  52. #endif
  53. #define OnPlayerConnect pt_OnPlayerConnect
  54.  
  55. public OnPlayerDisconnect(playerid, reason)
  56. {
  57. if(pUpdateTimer200ms[playerid])
  58. {
  59. KillTimer(pUpdateTimer200ms[playerid]);
  60. pUpdateTimer200ms[playerid] = 0;
  61. }
  62. #if defined pt_OnPlayerDisconnect
  63. return pt_OnPlayerDisconnect(playerid, reason);
  64. #else
  65. return 1;
  66. #endif
  67. }
  68. #if defined _ALS_OnPlayerDisconnect
  69. #undef OnPlayerDisconnect
  70. #else
  71. #define _ALS_OnPlayerDisconnect
  72. #endif
  73. #if defined pt_OnPlayerDisconnect
  74. forward pt_OnPlayerDisconnect(playerid, reason);
  75. #endif
  76. #define OnPlayerDisconnect pt_OnPlayerDisconnect
  77.  
  78. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  79. {
  80. if(pressed(KEY_SPRINT)) pKeySendType{playerid} = 1;
  81. else if(pressed(KEY_JUMP)) pKeySendType{playerid} = 2;
  82. else if(holding(KEY_SPRINT) || holding(KEY_JUMP)) pKeySendType{playerid} = 0;
  83. #if defined pt_OnPlayerKeyStateChange
  84. return pt_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  85. #else
  86. return 1;
  87. #endif
  88. }
  89. #if defined _ALS_OnPlayerKeyStateChange
  90. #undef OnPlayerKeyStateChange
  91. #else
  92. #define _ALS_OnPlayerKeyStateChange
  93. #endif
  94. #if defined pt_OnPlayerKeyStateChange
  95. forward pt_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  96. #endif
  97. #define OnPlayerKeyStateChange pt_OnPlayerKeyStateChange
  98.  
  99. public OnPlayerUpdate(playerid)
  100. {
  101. pCheckPaused[playerid] = 0;
  102. #if defined pt_OnPlayerUpdate
  103. return pt_OnPlayerUpdate(playerid);
  104. #else
  105. return 1;
  106. #endif
  107. }
  108. #if defined _ALS_OnPlayerUpdate
  109. #undef OnPlayerUpdate
  110. #else
  111. #define _ALS_OnPlayerUpdate
  112. #endif
  113. #if defined pt_OnPlayerUpdate
  114. forward pt_OnPlayerUpdate(playerid);
  115. #endif
  116. #define OnPlayerUpdate pt_OnPlayerUpdate
  117.  
  118. public OnPlayerStateChange(playerid, newstate, oldstate)
  119. {
  120. if(newstate == PLAYER_STATE_DRIVER)
  121. {
  122. new vehid = pGetVehicleID[playerid] = GetPlayerVehicleID(playerid);
  123. if(vehid && vEngineMode{vehid})
  124. {
  125. if(pUpdateTimer200ms[playerid]) KillTimer(pUpdateTimer200ms[playerid]);
  126. pUpdateTimer200ms[playerid] = SetTimerEx("pt_UpdateTimer200ms", 200, 1, "i", playerid);
  127. }
  128. }
  129. else
  130. {
  131. if(pUpdateTimer200ms[playerid])
  132. {
  133. KillTimer(pUpdateTimer200ms[playerid]);
  134. pUpdateTimer200ms[playerid] = 0;
  135. }
  136. }
  137. #if defined pt_OnPlayerStateChange
  138. return pt_OnPlayerStateChange(playerid, newstate, oldstate);
  139. #else
  140. return 1;
  141. #endif
  142. }
  143. #if defined _ALS_OnPlayerStateChange
  144. #undef OnPlayerStateChange
  145. #else
  146. #define _ALS_OnPlayerStateChange
  147. #endif
  148. #if defined pt_OnPlayerStateChange
  149. forward pt_OnPlayerStateChange(playerid, newstate, oldstate);
  150. #endif
  151. #define OnPlayerStateChange pt_OnPlayerStateChange
  152.  
  153. forward pt_UpdateTimer200ms(playerid);
  154. public pt_UpdateTimer200ms(playerid) if(++pCheckPaused[playerid] < 3 && pGetVehicleID[playerid])
  155. {
  156. new vehid = pGetVehicleID[playerid];
  157. if(vEngineState{vehid} && vEngineMode{vehid} && pKeySendType{playerid})
  158. {
  159. new Float:rot_x, Float:rot_y, Float:rot_z, model = GetVehicleModel(vehid);
  160. GetVehRot(vehid, rot_x, rot_y, rot_z);
  161. if(model && (-40.0 < rot_x < 40.0) && (-40.0 < rot_y < 40.0) && !GetVehGoesBack(vehid))
  162. {
  163. new Float:speed, spmax = gMaxSpeed[model - 400];
  164. GetVehSpeed(vehid, speed);
  165. if(pKeySendType{playerid} == 1) { if(2 < speed < (spmax + floatround(20 * vEngineMode{vehid}))) SetVehSpeed(vehid, speed + float(vEngineMode{vehid} * 2)); }
  166. else { if(speed > 20) SetVehSpeed(vehid, speed - float(vEngineMode{vehid} * 4)); }
  167. }
  168. }
  169. }
  170.  
  171. static stock GetVehGoesBack(vehid)
  172. {
  173. new Float:pos_x, Float:pos_y, Float:pos_z, Float:pos_a, Float:vel_x, Float:vel_y, Float:vel_z, Float:npos_x, Float:npos_y;
  174. GetVehiclePos(vehid, pos_x, pos_y, pos_z);
  175. GetVehicleZAngle(vehid, pos_a);
  176. GetVehicleVelocity(vehid, vel_x, vel_y, vel_z);
  177. npos_x = pos_x - (-10.0 * floatsin(pos_a, degrees));
  178. npos_y = pos_y - (10.0 * floatcos(pos_a, degrees));
  179. pos_x += vel_x;
  180. pos_y += vel_y;
  181. if(VectorSize((pos_x - npos_x), (pos_y - npos_y), 0.0) < 10.0) return 1;
  182. return 0;
  183. }
  184.  
  185. static stock GetVehRot(vehid, &Float:rx, &Float:ry, &Float:rz)
  186. {
  187. new Float:qw, Float:qx, Float:qy, Float:qz;
  188. GetVehicleRotationQuat(vehid, qw, qx, qy, qz);
  189. rx = asin(2.0 * qy * qz - 2.0 * qx * qw);
  190. ry = -atan2(qx * qz + qy * qw, 0.5 - qx * qx - qy * qy);
  191. rz = -atan2(qx * qy + qz * qw, 0.5 - qx * qx - qz * qz);
  192. }
  193.  
  194. static stock GetVehSpeed(vehid, &Float:speed)
  195. {
  196. new Float:vel_x, Float:vel_y, Float:vel_z;
  197. GetVehicleVelocity(vehid, vel_x, vel_y, vel_z);
  198. speed = (VectorSize(vel_x, vel_y, vel_z) * 170.0);
  199. }
  200.  
  201. static stock SetVehSpeed(vehid, Float:speed)
  202. {
  203. new Float:vel_x, Float:vel_y, Float:vel_z, Float:diff;
  204. GetVehicleVelocity(vehid, vel_x, vel_y, vel_z);
  205. diff = speed / (VectorSize(vel_x, vel_y, vel_z) * 170.0);
  206. if(diff != 0.0) SetVehicleVelocity(vehid, (vel_x * diff), (vel_y * diff), vel_z);
  207. }
  208.  
  209. stock GetVehicleEngineState(vehid)
  210. {
  211. return vEngineMode{vehid};
  212. }
  213.  
  214. stock SetVehicleEngineState(vehid, estate)
  215. {
  216. if(!(0 <= estate <= 5) || !GetVehicleModel(vehid)) return 0;
  217. vEngineMode{vehid} = estate;
  218. if(!estate)
  219. {
  220. foreach(Player, playerid) if(IsPlayerInVehicle(playerid, vehid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  221. {
  222. if(pUpdateTimer200ms[playerid])
  223. {
  224. KillTimer(pUpdateTimer200ms[playerid]);
  225. pUpdateTimer200ms[playerid] = 0;
  226. }
  227. }
  228. }
  229. else
  230. {
  231. foreach(Player, playerid) if(IsPlayerInVehicle(playerid, vehid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  232. {
  233. if(pUpdateTimer200ms[playerid]) KillTimer(pUpdateTimer200ms[playerid]);
  234. pUpdateTimer200ms[playerid] = SetTimerEx("pt_UpdateTimer200ms", 200, 1, "i", playerid);
  235. }
  236. }
  237. return 1;
  238. }
  239.  
  240. stock pt_ManualVehicleEngineLights()
  241. {
  242. vEngineDefault = 0;
  243. return ManualVehicleEngineAndLights();
  244. }
  245. #if defined _ALS_ManualVehicleEngineLights
  246. #undef ManualVehicleEngineLights
  247. #else
  248. #define _ALS_ManualVehicleEngineLights
  249. #endif
  250. #define ManualVehicleEngineAndLights pt_ManualVehicleEngineLights
  251.  
  252. stock pt_SetVehicleParamsEx(vehid, engine, lights, alarm, doors, bonnet, boot, objective)
  253. {
  254. vEngineState{vehid} = engine;
  255. return SetVehicleParamsEx(vehid, engine, lights, alarm, doors, bonnet, boot, objective);
  256. }
  257. #if defined _ALS_SetVehicleParamsEx
  258. #undef SetVehicleParamsEx
  259. #else
  260. #define _ALS_SetVehicleParamsEx
  261. #endif
  262. #define SetVehicleParamsEx pt_SetVehicleParamsEx
  263.  
  264. stock pt_CreateVehicle(model, Float:pos_x, Float:pos_y, Float:pos_z, Float:pos_r, col1, col2, respawn, siren = 0)
  265. {
  266. new vehid = CreateVehicle(model, pos_x, pos_y, pos_z, pos_r, col1, col2, respawn, siren);
  267. if(vehid != INVALID_VEHICLE_ID)
  268. {
  269. vEngineState{vehid} = vEngineDefault;
  270. vEngineMode{vehid} = 0;
  271. }
  272. return vehid;
  273. }
  274. #if defined _ALS_CreateVehicle
  275. #undef CreateVehicle
  276. #else
  277. #define _ALS_CreateVehicle
  278. #endif
  279. #define CreateVehicle pt_CreateVehicle
  280.  
  281. stock pt_AddStaticVehicle(model, Float:pos_x, Float:pos_y, Float:pos_z, Float:pos_r, col1, col2)
  282. {
  283. new vehid = AddStaticVehicle(model, pos_x, pos_y, pos_z, pos_r, col1, col2);
  284. if(vehid != INVALID_VEHICLE_ID)
  285. {
  286. vEngineState{vehid} = vEngineDefault;
  287. vEngineMode{vehid} = 0;
  288. }
  289. return vehid;
  290. }
  291. #if defined _ALS_AddStaticVehicle
  292. #undef AddStaticVehicle
  293. #else
  294. #define _ALS_AddStaticVehicle
  295. #endif
  296. #define AddStaticVehicle pt_AddStaticVehicle
  297.  
  298. stock pt_AddStaticVehicleEx(model, Float:pos_x, Float:pos_y, Float:pos_z, Float:pos_r, col1, col2, respawn, siren = 0)
  299. {
  300. new vehid = AddStaticVehicleEx(model, pos_x, pos_y, pos_z, pos_r, col1, col2, respawn, siren);
  301. if(vehid != INVALID_VEHICLE_ID)
  302. {
  303. vEngineState{vehid} = vEngineDefault;
  304. vEngineMode{vehid} = 0;
  305. }
  306. return vehid;
  307. }
  308. #if defined _ALS_AddStaticVehicleEx
  309. #undef AddStaticVehicleEx
  310. #else
  311. #define _ALS_AddStaticVehicleEx
  312. #endif
  313. #define AddStaticVehicleEx pt_AddStaticVehicleEx
  314.  
  315. stock pt_DestroyVehicle(vehid)
  316. {
  317. vEngineState{vehid} = vEngineDefault;
  318. vEngineMode{vehid} = 0;
  319. return DestroyVehicle(vehid);
  320. }
  321. #if defined _ALS_DestroyVehicle
  322. #undef DestroyVehicle
  323. #else
  324. #define _ALS_DestroyVehicle
  325. #endif
  326. #define DestroyVehicle pt_DestroyVehicle
Add Comment
Please, Sign In to add comment