Advertisement
Achraf_Hindir

Untitled

Jul 2nd, 2014
1,195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.45 KB | None | 0 0
  1. // This is a comment
  2. // uncomment the line below if you want to write a filterscript
  3. //#define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #include <zcmd>
  7. #include <sscanf2>
  8. #include <streamer>
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15. #define COLOR_RED 0xFF0000FF
  16. #define COLOR_WHITE 0xFFFFFFFF
  17.  
  18.  
  19.  
  20. main()
  21. {
  22. print("\n----------------------------------");
  23. print(" By Achraf Hindir");
  24. print("----------------------------------\n");
  25. }
  26.  
  27.  
  28. #define MAX_SPIKESTRIPS 200
  29. enum sInfo
  30. {
  31. sCreated,
  32. Float:sX,
  33. Float:sY,
  34. Float:sZ,
  35. sObject,
  36. };
  37. new SpikeInfo[MAX_SPIKESTRIPS][sInfo];
  38.  
  39.  
  40. public OnGameModeInit()
  41. {
  42. // Don't use these lines if it's a filterscript
  43. SetGameModeText("Blank Script");
  44. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  45. return 1;
  46. }
  47.  
  48. public OnGameModeExit()
  49. {
  50. return 1;
  51. }
  52.  
  53. public OnPlayerRequestClass(playerid, classid)
  54. {
  55. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  56. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  57. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  58. return 1;
  59. }
  60.  
  61. public OnPlayerConnect(playerid)
  62. {
  63. return 1;
  64. }
  65.  
  66. public OnPlayerDisconnect(playerid, reason)
  67. {
  68. return 1;
  69. }
  70.  
  71. public OnPlayerSpawn(playerid)
  72. {
  73. return 1;
  74. }
  75.  
  76. public OnPlayerDeath(playerid, killerid, reason)
  77. {
  78. return 1;
  79. }
  80.  
  81. public OnVehicleSpawn(vehicleid)
  82. {
  83. return 1;
  84. }
  85.  
  86. public OnVehicleDeath(vehicleid, killerid)
  87. {
  88. return 1;
  89. }
  90.  
  91. public OnPlayerText(playerid, text[])
  92. {
  93. return 1;
  94. }
  95.  
  96.  
  97.  
  98.  
  99. CMD:veh(playerid, params[])
  100. {
  101. new id, Float:pos[4], col[2];
  102. if(sscanf(params, "iii", id, col[0], col[1])) return SendClientMessage(playerid, -1, "USAGE: /veh [vehicleid/destroy] [color1] [color2]");
  103. if(id < 400 || id > 611) return SendClientMessage(playerid, -1, "Vehicles are between 400 and 611.");
  104. GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  105. GetPlayerFacingAngle(playerid, pos[3]);
  106.  
  107. CreateVehicle(id, pos[0], pos[1], pos[2], pos[3], col[0], col[1], 12000);
  108.  
  109. return 1;
  110. }
  111.  
  112. CMD:dropspike(playerid, params[])
  113. {
  114. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "You are not driving a vehicle.");
  115. new Float:X, Float:Y, Float:Z, Float:A, Float:Ang;
  116.  
  117. GetPlayerPos(playerid, X, Y, Z);
  118.  
  119. GetPlayerFacingAngle(playerid, A);
  120.  
  121. new currentveh;
  122.  
  123. currentveh = GetPlayerVehicleID(playerid);
  124.  
  125. new Float:vehx, Float:vehy, Float:vehz, Float:angle, Float:x2, Float:y2;
  126.  
  127. GetVehiclePos(currentveh, vehx, vehy, vehz);
  128.  
  129. GetVehicleDistanceFromPoint(currentveh, vehx, vehy, vehz);
  130.  
  131. GetVehicleZAngle(currentveh, angle);
  132. GetVehicleZAngle(currentveh, Ang);
  133.  
  134. GetXYBehindPoint(vehx, vehy, x2, y2, angle, 5);
  135.  
  136. new obj = Createspike(x2,y2,vehz,Ang);
  137.  
  138. SetTimerEx("destroyThisObject", 480000, 0, "i", obj);
  139.  
  140. SendClientMessage(playerid, COLOR_WHITE, "NOTE : You have drop spike!");
  141.  
  142.  
  143. return 1;
  144. }
  145.  
  146. CMD:removespike(playerid, params[])
  147. {
  148. DeleteClosestspike(playerid);
  149. return 1;
  150. }
  151.  
  152.  
  153. CMD:removespikes(playerid, params[])
  154. {
  155. DeleteAllspike();
  156. return 1;
  157. }
  158.  
  159. stock GetXYBehindPoint (Float:x,Float:y,&Float:x2,&Float:y2,Float:angle,Float:distance)
  160. {
  161. x2 = x - (distance * floatsin(-angle,degrees));
  162. y2 = y - (distance * floatcos(-angle,degrees));
  163. return 1;
  164. }
  165.  
  166. encode_tires(tires1, tires2, tires3, tires4) {
  167.  
  168. return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
  169.  
  170. }
  171.  
  172. stock Createspike(Float:x,Float:y,Float:z,Float:Angle)
  173. {
  174. for(new i = 0; i < sizeof(SpikeInfo); i++)
  175. {
  176. if(SpikeInfo[i][sCreated] == 0)
  177. {
  178. SpikeInfo[i][sCreated]=1;
  179. SpikeInfo[i][sX]=x;
  180. SpikeInfo[i][sY]=y;
  181. SpikeInfo[i][sZ]=z-0.7;
  182. SpikeInfo[i][sObject] = CreateDynamicObject(2899, x, y, z-0.88, 0, 0, Angle-90);
  183. return 1;
  184. }
  185. }
  186. return 0;
  187. }
  188.  
  189.  
  190. stock DeleteAllspike()
  191. {
  192. for(new i = 0; i < sizeof(SpikeInfo); i++)
  193. {
  194. if(SpikeInfo[i][sCreated] == 1)
  195. {
  196. SpikeInfo[i][sCreated]=0;
  197. SpikeInfo[i][sX]=0.0;
  198. SpikeInfo[i][sY]=0.0;
  199. SpikeInfo[i][sZ]=0.0;
  200. DestroyDynamicObject(SpikeInfo[i][sObject]);
  201. }
  202. }
  203. return 1;
  204. }
  205.  
  206. stock DeleteClosestspike(playerid)
  207. {
  208. new done;
  209. for(new i = 0; i < sizeof(SpikeInfo); i++)
  210. {
  211. if(IsPlayerInRangeOfPoint(playerid, 2.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
  212. {
  213. if(SpikeInfo[i][sCreated] == 1)
  214. {
  215. SpikeInfo[i][sCreated]=0;
  216. SpikeInfo[i][sX]=0.0;
  217. SpikeInfo[i][sY]=0.0;
  218. SpikeInfo[i][sZ]=0.0;
  219. DestroyDynamicObject(SpikeInfo[i][sObject]);
  220. done = 1;
  221. }
  222. }
  223. }
  224. if(!done) SendClientMessage(playerid, -1, "You are not near a spike strip.");
  225. return 1;
  226. }
  227.  
  228.  
  229. forward destroyThisObject(objid);
  230. public destroyThisObject(objid) {
  231. DestroyObject(objid);
  232. }
  233.  
  234. public OnPlayerUpdate(playerid)
  235. {
  236. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  237. {
  238. for(new i = 0; i < sizeof(SpikeInfo); i++)
  239. {
  240. if(IsPlayerInRangeOfPoint(playerid, 3.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
  241. {
  242. if(SpikeInfo[i][sCreated] == 1)
  243. {
  244. new panels, doors, lights, tires;
  245. new carid = GetPlayerVehicleID(playerid);
  246. GetVehicleDamageStatus(carid, panels, doors, lights, tires);
  247. tires = encode_tires(1, 1, 1, 1);
  248. UpdateVehicleDamageStatus(carid, panels, doors, lights, tires);
  249. }
  250. }
  251. }
  252. }
  253. return 1;
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement