Youice

Y_VLASER V1.0.3

Jul 25th, 2014
507
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 KB | None | 0 0
  1. // -YOUICE 2014
  2.  
  3. //Y_Vehicle Lasers
  4.  
  5. #include <a_samp>
  6.  
  7. //Laser Property
  8. #define LASER_SPEED 100.4
  9. #define DRAWDISTANCE 250.0
  10. #define EXPLOSION_RADIUS 10.0
  11.  
  12. //Buttons
  13. #define PRESSED(%0) \
  14. (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  15.  
  16.  
  17. new Lasers[] =
  18. {
  19. //normal lasers
  20. 18647,
  21. 18648,
  22. 18649,
  23. 18650,
  24.  
  25. //xmas
  26. 19059,
  27. 19060,
  28. 19061,
  29. 19062,
  30. 19063,
  31.  
  32. //pompom
  33. 19090,
  34. 19091,
  35. 19092
  36.  
  37. };
  38. new LaserMod[MAX_PLAYERS];
  39. new CanFireAgain[MAX_PLAYERS];
  40. new LaserObject[MAX_PLAYERS];
  41. new IsAllowedToFire[MAX_PLAYERS];
  42. new LocalTimer[MAX_PLAYERS][5];
  43. new MustWait[MAX_PLAYERS];
  44. new LaserAmmo[MAX_PLAYERS];
  45. new Count[MAX_PLAYERS];
  46. new InMode[MAX_PLAYERS];
  47. new PlayerText:Textdraw[3];
  48.  
  49. public OnFilterScriptInit()
  50. {
  51. print("\n----------------------------------");
  52. print(" [FS]Y_Vehicle Lasers is now loaded...");
  53. print("----------------------------------\n");
  54.  
  55. return 1;
  56. }
  57.  
  58. public OnFilterScriptExit()
  59. {
  60. for(new i; i<MAX_PLAYERS; i++)
  61. {
  62. HideTDs(i);
  63. }
  64. return 1;
  65. }
  66.  
  67. main(){}
  68.  
  69. public OnPlayerConnect(playerid)
  70. {
  71. Textdraw[0] = CreatePlayerTextDraw(playerid, 436.000000, 37.000000, "BOX");
  72. PlayerTextDrawBackgroundColor(playerid,Textdraw[0], 255);
  73. PlayerTextDrawFont(playerid,Textdraw[0], 1);
  74. PlayerTextDrawLetterSize(playerid,Textdraw[0], 0.450000, 3.199999);
  75. PlayerTextDrawColor(playerid,Textdraw[0], 0);
  76. PlayerTextDrawSetOutline(playerid,Textdraw[0], 0);
  77. PlayerTextDrawSetProportional(playerid,Textdraw[0], 1);
  78. PlayerTextDrawSetShadow(playerid,Textdraw[0], 0);
  79. PlayerTextDrawUseBox(playerid,Textdraw[0], 1);
  80. PlayerTextDrawBoxColor(playerid,Textdraw[0], 68);
  81. PlayerTextDrawTextSize(playerid,Textdraw[0], 487.000000, 90.000000);
  82.  
  83. Textdraw[1] = CreatePlayerTextDraw(playerid,446.000000, 61.000000, "%d-0");
  84. PlayerTextDrawBackgroundColor(playerid,Textdraw[1], 255);
  85. PlayerTextDrawFont(playerid,Textdraw[1], 1);
  86. PlayerTextDrawLetterSize(playerid,Textdraw[1], 0.250000, 1.100000);
  87. PlayerTextDrawColor(playerid,Textdraw[1], 16777215);
  88. PlayerTextDrawSetOutline(playerid,Textdraw[1], 1);
  89. PlayerTextDrawSetProportional(playerid,Textdraw[1], 1);
  90.  
  91. Textdraw[2] = CreatePlayerTextDraw(playerid,441.000000, 38.000000, "Laser");
  92. PlayerTextDrawBackgroundColor(playerid,Textdraw[2], -16776961);
  93. PlayerTextDrawFont(playerid,Textdraw[2], 2);
  94. PlayerTextDrawLetterSize(playerid,Textdraw[2], 0.300000, 2.300000);
  95. PlayerTextDrawColor(playerid,Textdraw[2], -1);
  96. PlayerTextDrawSetOutline(playerid,Textdraw[2], 1);
  97. PlayerTextDrawSetProportional(playerid,Textdraw[2], 1);
  98. return 1;
  99. }
  100.  
  101. public OnPlayerDeath(playerid, killerid, reason)
  102. {
  103. if(IsLasered(playerid) == 1) {
  104. HideTDs(playerid);
  105. }
  106. return 1;
  107. }
  108.  
  109. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  110. {
  111. if(IsLasered(playerid) == 1) {
  112. ShowTDs(playerid);
  113. }
  114. return 1;
  115. }
  116.  
  117. public OnPlayerExitVehicle(playerid, vehicleid)
  118. {
  119. if(IsLasered(playerid) == 1) {
  120. HideTDs(playerid);
  121. }
  122. return 1;
  123. }
  124.  
  125. public OnPlayerCommandText(playerid, cmdtext[])
  126. {
  127. if (strcmp("/addlaser", cmdtext, true, 10) == 0)
  128. {
  129. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  130. {
  131. if(InMode[playerid] == 1) return SendClientMessage(playerid, -1, "{FFFA00}/removelaser {FAFAFA}, To remove lasers!");
  132. HideTDs(playerid);
  133. ShowTDs(playerid);
  134. IsAllowedToFire[playerid] = 1;
  135. CanFireAgain[playerid] = 1;
  136. LaserMod[playerid] = 0;
  137. LaserAmmo[playerid] = 15;
  138. UpdateAmmo(playerid);
  139. InMode[playerid] = 1;
  140. GameTextForPlayer(playerid, "~g~Lasers Are Loaded.", 2000, 1);
  141. }
  142. else {
  143. SendClientMessage(playerid, -1, "You must be driving.");
  144. }
  145. return 1;
  146. }
  147. else if (strcmp("/removelaser", cmdtext, true, 10) == 0)
  148. {
  149. if(InMode[playerid] == 0) return SendClientMessage(playerid, -1, "{FFFA00}/addlaser {FAFAFA}, To add lasers!");
  150. HideTDs(playerid);
  151. IsAllowedToFire[playerid] = 0;
  152. CanFireAgain[playerid] = 0;
  153. InMode[playerid] = 0;
  154. GameTextForPlayer(playerid, "~r~Lasers Are Unloaded.", 2000, 1);
  155. return 1;
  156. }
  157. else if (strcmp("/lasermods", cmdtext, true, 10) == 0)
  158. {
  159. if (IsPlayerInAnyVehicle(playerid) && IsAllowedToFire[playerid] == 1)
  160. {
  161. if(MustWait[playerid] == 1) return GameTextForPlayer(playerid, "~r~Wait before switching modes", 3000, 1);
  162. ShowPlayerDialog(playerid, 1998, DIALOG_STYLE_LIST, "Laser Modes", "Normal\nBlast Fire\nSuicide Bomb","Select","Cancel");
  163. }
  164. return 1;
  165. }
  166. return 1;
  167. }
  168.  
  169. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  170. {
  171. if (PRESSED(KEY_FIRE))
  172. {
  173. if (IsPlayerInAnyVehicle(playerid) && IsAllowedToFire[playerid] == 1)
  174. {
  175. if(CanFireAgain[playerid] == 1 && LaserAmmo[playerid] >= 1)
  176. {
  177. FireLaser(playerid);
  178. CanFireAgain[playerid] = 0;
  179. LaserAmmo[playerid]--;
  180. UpdateAmmo(playerid);
  181. }
  182. }
  183. }
  184. return 1;
  185. }
  186.  
  187. forward public FireLaser(playerid);
  188. public FireLaser(playerid)
  189. {
  190. new
  191. RandLaser = random(sizeof(Lasers));
  192. new
  193. Float:pX,
  194. Float:pY,
  195. Float:pZ,
  196. Float:vA,
  197. Float:distance = 65.0,
  198. vid = GetPlayerVehicleID(playerid)
  199. ;
  200. new Float:Velocity[3];
  201.  
  202. GetVehicleVelocity(vid, Velocity[0], Velocity[1], Velocity[2]);
  203.  
  204. GetVehiclePos(vid, pX, pY, pZ);
  205. GetVehicleZAngle(vid, vA);
  206.  
  207. LaserObject[playerid] = CreateObject(Lasers[RandLaser], pX, pY, pZ, vA, 0, 0, DRAWDISTANCE);
  208. for(new target; target<MAX_PLAYERS; target++)
  209. {
  210. if(target == playerid)
  211. continue;
  212. if(IsPlayerInRangeOfPoint(target,65.0, pX, pY, pZ))
  213. {
  214. new
  215. Float:tmpX, Float:tmpY, Float:tmpZ;
  216. GetPlayerPos(target, tmpX, tmpY, tmpZ);
  217.  
  218. distance = GetPlayerDistanceFromPoint(target, pX, pY, pZ);
  219.  
  220. }
  221. }
  222. MoveObject(LaserObject[playerid], pX + (distance * floatsin(-vA, degrees)), pY + (distance * floatcos(-vA, degrees)), pZ, LASER_SPEED);
  223. return 1;
  224. }
  225.  
  226. public OnObjectMoved(objectid)
  227. {
  228. for(new i;i<MAX_PLAYERS;i++)
  229. {
  230. if(objectid == LaserObject[i])
  231. {
  232. CreateExplosionEx(i);
  233. }
  234. }
  235. return 1;
  236. }
  237.  
  238. forward public CreateExplosionEx(playerid);
  239. public CreateExplosionEx(playerid)
  240. {
  241. new Float:x, Float:y, Float:z;
  242. GetObjectPos(LaserObject[playerid], x, y, z);
  243. DestroyObject(LaserObject[playerid]);
  244. if(LaserMod[playerid] == 0)
  245. {
  246. CreateExplosion(x, y, z, 0, EXPLOSION_RADIUS);
  247. }
  248. else if(LaserMod[playerid] == 1)
  249. {
  250. CreateExplosion(x, y, z, 2, EXPLOSION_RADIUS);
  251. }
  252. else if(LaserMod[playerid] == 2)
  253. {
  254. CreateExplosion(x, y, z, 7, 50);
  255. }
  256. switch(LaserMod[playerid])
  257. {
  258. case 0,1:
  259. {
  260. LocalTimer[playerid][3] = SetTimerEx("CanShootAgain", 100, false, "i", playerid);
  261. }
  262. case 2:
  263. {
  264. LocalTimer[playerid][4] = SetTimerEx("CanShootAgain", 6000, false, "i", playerid);
  265. }
  266. }
  267. return 1;
  268. }
  269.  
  270. forward public CanShootAgain(playerid);
  271. public CanShootAgain(playerid)
  272. {
  273. CanFireAgain[playerid] = 1;
  274. return 1;
  275. }
  276.  
  277. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  278. {
  279. if(dialogid == 1998)
  280. {
  281. if(response)
  282. {
  283. switch(listitem)
  284. {
  285. case 0: { LaserMod[playerid] = 0; LocalTimer[playerid][1] = SetTimerEx("StopRest",5000,false, "i",playerid); MustWait[playerid] =1; }
  286. case 1: { LaserMod[playerid] = 1; LocalTimer[playerid][1] = SetTimerEx("StopRest",5000,false, "i",playerid); MustWait[playerid] =1; }
  287. case 2: { LaserMod[playerid] = 2; LocalTimer[playerid][1] = SetTimerEx("StopRest",5000,false, "i",playerid); MustWait[playerid] =1; }
  288. }
  289. UpdateAmmo(playerid);
  290. }
  291. }
  292. return 1;
  293. }
  294.  
  295. forward public StopRest(playerid);
  296. public StopRest(playerid)
  297. {
  298. MustWait[playerid] = 0;
  299. KillTimer(LocalTimer[playerid][1]);
  300. return 1;
  301. }
  302.  
  303. forward public UpdateAmmo(playerid);
  304. public UpdateAmmo(playerid)
  305. {
  306. new tdstring[32];
  307. format(tdstring, sizeof(tdstring), "%d-0", LaserAmmo);
  308. PlayerTextDrawSetString(playerid,Textdraw[1], tdstring);
  309. PlayerTextDrawShow(playerid, Textdraw[1]);
  310. if(LaserAmmo[playerid] == 0)
  311. {
  312. KillTimer(LocalTimer[playerid][3]);
  313. KillTimer(LocalTimer[playerid][4]);
  314. LocalTimer[playerid][2] = SetTimerEx("StartGameTexts", 1000, true, "i", playerid);
  315. Count[playerid] = 0;
  316. CanFireAgain[playerid] = 0;
  317. }
  318. return 1;
  319. }
  320.  
  321. forward public StartGameTexts(playerid);
  322. public StartGameTexts(playerid)
  323. {
  324. Count[playerid]++;
  325. GameTextForPlayer(playerid, "~r~Loading Lasers...", 500, 1);
  326. if(Count[playerid] >= 7)
  327. {
  328. Count[playerid] = 6;
  329. }
  330. if(Count[playerid] == 6)
  331. {
  332. switch(LaserMod[playerid])
  333. {
  334. case 0: LaserAmmo[playerid] = 15;
  335. case 1: LaserAmmo[playerid] = 10;
  336. case 2: LaserAmmo[playerid] = 1;
  337. }
  338. KillTimer(LocalTimer[playerid][2]);
  339. CanFireAgain[playerid] = 1;
  340. GameTextForPlayer(playerid, "~g~Lasers Are Loaded.", 2000, 1);
  341. new tdstring[32];
  342. format(tdstring, sizeof(tdstring), "%d-0", LaserAmmo);
  343. PlayerTextDrawSetString(playerid,Textdraw[1], tdstring);
  344. PlayerTextDrawShow(playerid, Textdraw[1]);
  345. Count[playerid] = 0;
  346. }
  347. return 1;
  348. }
  349.  
  350. stock ShowTDs(playerid)
  351. {
  352. for(new i; i<sizeof(Textdraw); i++)
  353. {
  354. PlayerTextDrawShow(playerid, Textdraw[i]);
  355. }
  356. }
  357.  
  358. stock HideTDs(playerid)
  359. {
  360. for(new i; i<sizeof(Textdraw); i++)
  361. {
  362. PlayerTextDrawHide(playerid, Textdraw[i]);
  363. }
  364. }
  365.  
  366. stock IsLasered(playerid)
  367. return InMode[playerid];
Advertisement
Add Comment
Please, Sign In to add comment