Youice

Y_VLASER V1.3.4

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