MegastoRM

ks

Dec 30th, 2012
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.69 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <hamsandwich>
  4. #include <engine>
  5. #include <fakemeta>
  6. #include <colorchat>
  7. #include <fun>
  8. #include <xs>
  9.  
  10. #define PLUGIN "KillStreak"
  11. #define VERSION "1.3.4"
  12. #define AUTHOR "cypis"
  13.  
  14. #define MAX_DIST 8192.0
  15. #define MAX 32
  16.  
  17. new const maxAmmo[31]={0,52,0,90,1,32,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,32,90,120,90,2,35,90,90,0,100};
  18.  
  19. new sprite_blast, cache_trail;
  20.  
  21. new licznik_zabic[MAX+1], bool:radar[2], bool:nalot[MAX+1], bool:predator[MAX+1], bool:nuke[MAX+1], bool:emp[MAX+1], bool:cuav[MAX+1], bool:uav[MAX+1], bool:pack[MAX+1], bool:sentrys[MAX+1];
  22. new user_controll[MAX+1], emp_traje, bool:nuke_player[MAX+1];
  23. new PobraneOrigin[3], ZmienKilla[2];
  24.  
  25. public plugin_init()
  26. {
  27. register_plugin(PLUGIN, VERSION, AUTHOR)
  28.  
  29. register_think("sentry","SentryThink");
  30.  
  31. register_touch("predator", "*", "touchedpredator");
  32. register_touch("bomb", "*", "touchedrocket");
  33.  
  34. register_forward(FM_ClientKill, "cmdKill");
  35.  
  36. RegisterHam(Ham_TakeDamage, "func_breakable", "TakeDamage");
  37. RegisterHam(Ham_Killed, "player", "SmiercGracza", 1);
  38.  
  39. register_event("CurWeapon","CurWeapon","be", "1=1");
  40. register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
  41. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
  42.  
  43. register_cvar("ks_hpsentry", "2500");
  44. register_cvar("ks_sentry_remove", "1");
  45.  
  46. register_clcmd("say /ks", "uzyj_nagrody");
  47. register_clcmd("say /killstreak", "uzyj_nagrody");
  48. set_task(2.0,"radar_scan",_,_,_,"b");
  49. }
  50.  
  51. public plugin_precache()
  52. {
  53. sprite_blast = precache_model("sprites/dexplo.spr");
  54. cache_trail = precache_model("sprites/smoke.spr");
  55.  
  56. precache_model("models/p_hegrenade.mdl");
  57. precache_model("models/cod_carepackage.mdl");
  58. precache_model("models/cod_plane.mdl");
  59. precache_model("models/cod_predator.mdl");
  60. precache_model("models/sentrygun_mw2.mdl");
  61.  
  62. precache_sound("mw/nuke_friend.wav");
  63. precache_sound("mw/nuke_enemy.wav");
  64. precache_sound("mw/nuke_give.wav");
  65.  
  66. precache_sound("mw/jet_fly1.wav");
  67. //precache_sound("mw/jet_fly2.wav");
  68.  
  69. precache_sound("mw/emp_effect.wav");
  70. precache_sound("mw/emp_friend.wav");
  71. precache_sound("mw/emp_enemy.wav");
  72. precache_sound("mw/emp_give.wav");
  73.  
  74. precache_sound("mw/counter_friend.wav");
  75. precache_sound("mw/counter_enemy.wav");
  76. precache_sound("mw/counter_give.wav");
  77.  
  78. precache_sound("mw/air_friend.wav");
  79. precache_sound("mw/air_enemy.wav");
  80. precache_sound("mw/air_give.wav");
  81.  
  82. precache_sound("mw/predator_friend.wav");
  83. precache_sound("mw/predator_enemy.wav");
  84. precache_sound("mw/predator_give.wav");
  85.  
  86. precache_sound("mw/uav_friend.wav");
  87. precache_sound("mw/uav_enemy.wav");
  88. precache_sound("mw/uav_give.wav");
  89.  
  90. precache_sound("mw/carepackage_friend.wav");
  91. precache_sound("mw/carepackage_enemy.wav");
  92. precache_sound("mw/carepackage_give.wav");
  93.  
  94. precache_sound("mw/firemw.wav");
  95. precache_sound("mw/plant.wav");
  96. precache_sound("mw/sentrygun_starts.wav");
  97. precache_sound("mw/sentrygun_stops.wav");
  98. precache_sound("mw/sentrygun_gone.wav");
  99. precache_sound("mw/sentrygun_friend.wav");
  100. precache_sound("mw/sentrygun_enemy.wav");
  101. precache_sound("mw/sentrygun_give.wav");
  102.  
  103. precache_model("models/computergibs.mdl");
  104. /*precache_sound("mw/emergairdrop_friend.wav");
  105. precache_sound("mw/emergairdrop_enemy.wav");
  106. precache_sound("mw/emergairdrop_give.wav");*/
  107. }
  108.  
  109. public uzyj_nagrody(id)
  110. {
  111. new menu = menu_create("KillStreak:", "Nagrody_Handler");
  112.  
  113. if(!uav[ id ])
  114. menu_additem(menu, "\dUAV");
  115. else
  116. menu_additem(menu, "\rUAV");
  117.  
  118. if(!pack[ id ])
  119. menu_additem(menu, "\dCare package");
  120. else
  121. menu_additem(menu, "\rCare Package");
  122.  
  123. if(!cuav[ id ])
  124. menu_additem(menu, "\dCounter-UAV");
  125. else
  126. menu_additem(menu, "\rCounter-UAV");
  127.  
  128. if(!sentrys[ id ])
  129. menu_additem(menu, "\dSentry Gun");
  130. else
  131. menu_additem(menu, "\rSentry Gun");
  132.  
  133. if(!predator[ id ])
  134. menu_additem(menu, "\dPredator Missle");
  135. else
  136. menu_additem(menu, "\rPredator Missle");
  137.  
  138. if(!nalot[ id ])
  139. menu_additem(menu, "\dAirstrike");
  140. else
  141. menu_additem(menu, "\rAirstrike");
  142.  
  143. if(!emp[ id ])
  144. menu_additem(menu, "\dEMP");
  145. else
  146. menu_additem(menu, "\rEMP");
  147.  
  148. if(!nuke[ id ])
  149. menu_additem(menu, "\dNuke");
  150. else
  151. menu_additem(menu, "\rNuke");
  152. menu_setprop(menu, MPROP_NUMBER_COLOR,"\y")
  153. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  154. menu_display(id, menu)
  155. }
  156.  
  157. public Nagrody_Handler(id, menu, item)
  158. {
  159. if(!is_user_alive(id))
  160. return PLUGIN_HANDLED;
  161.  
  162. if(item == MENU_EXIT)
  163. {
  164. menu_destroy(menu);
  165. return PLUGIN_HANDLED;
  166. }
  167.  
  168. switch(item)
  169. {
  170. case 0:{
  171. if((!emp_traje || (emp_traje && get_user_team(id) == get_user_team(emp_traje))) && uav[ id ])
  172. CreateUVA(id);
  173. }
  174. case 1:{
  175. if((!emp_traje || (emp_traje && get_user_team(id) == get_user_team(emp_traje))) && pack[ id ])
  176. CreatePack(id);
  177. }
  178. case 2:{
  179. if((!emp_traje || (emp_traje && get_user_team(id) == get_user_team(emp_traje))) && cuav[ id ])
  180. CreateCUVA(id);
  181. }
  182. case 3:{
  183. if((!emp_traje || (emp_traje && get_user_team(id) == get_user_team(emp_traje))) && sentrys[ id ])
  184. CreateSentry(id);
  185. }
  186. case 4:{
  187. if((!emp_traje || (emp_traje && get_user_team(id) == get_user_team(emp_traje))) && predator[ id ])
  188. CreatePredator(id);
  189. }
  190. case 5:{
  191. if((!emp_traje || (emp_traje && get_user_team(id) == get_user_team(emp_traje))) && nalot[ id ])
  192. CreateNalot(id);
  193. }
  194. case 6:{
  195. if(!emp_traje && emp[ id ])
  196. CreateEmp(id);
  197. }
  198. case 7: CreateNuke(id);
  199. }
  200. return PLUGIN_HANDLED;
  201. }
  202.  
  203. public NowaRunda()
  204. {
  205. new num, players[32];
  206. get_players(players, num, "gh");
  207. for(new i = 0; i < num; i++)
  208. {
  209. if(task_exists(players[i]+997))
  210. remove_task(players[i]+997);
  211. }
  212.  
  213. remove_entity_name("predator")
  214. remove_entity_name("bomb")
  215.  
  216. if(get_cvar_num("ks_sentry_remove"))
  217. remove_entity_name("sentry")
  218. }
  219.  
  220. public client_putinserver(id){
  221. licznik_zabic[id] = 0;
  222. user_controll[id] = 0;
  223. nalot[id] = false;
  224. predator[id] = false;
  225. nuke[id] = false;
  226. cuav[id] = false;
  227. uav[id] = false;
  228. emp[id] = false;
  229. pack[id] = false;
  230. sentrys[id] = false;
  231. }
  232.  
  233. public client_disconnect(id)
  234. {
  235. new ent = -1
  236. while((ent = find_ent_by_class(ent, "sentry")))
  237. {
  238. if(entity_get_int(ent, EV_INT_iuser2) == id)
  239. remove_entity(ent);
  240. }
  241. return PLUGIN_CONTINUE;
  242. }
  243.  
  244. public SmiercGracza(id, attacker)
  245. {
  246. if(!is_user_alive(attacker) || !is_user_connected(attacker))
  247. return HAM_IGNORED;
  248.  
  249. new nick[64];
  250. get_user_name(attacker, nick, 63);
  251.  
  252. if(get_user_team(attacker) != get_user_team(id) && !nuke_player[attacker])
  253. {
  254. licznik_zabic[attacker]++;
  255. switch(licznik_zabic[attacker])
  256. {
  257. case 3:
  258. {
  259. uav[attacker] = true;
  260. PrikaziKsNagradu(attacker, "UAV^nSay /ks da ga iskoristis", "uav");
  261. print_info2(nick, "Uav", 3)
  262. }
  263. case 4:
  264. {
  265. switch(random_num(0,1))
  266. {
  267. case 0:
  268. {
  269. cuav[attacker] = true;
  270. PrikaziKsNagradu(attacker, "Counter-Uav^nSay /ks da ga iskoristis", "counter");
  271. print_info2(nick, "Counter-Uav", 4)
  272. }
  273. case 1:
  274. {
  275. pack[attacker] = true;
  276. PrikaziKsNagradu(attacker, "Care Package^nSay /ks da ga iskoristis", "carepackage");
  277. print_info2(nick, "Care Package", 4)
  278. }
  279. }
  280. }
  281. case 5:
  282. {
  283. switch(random_num(0,1))
  284. {
  285. case 0:
  286. {
  287. predator[attacker] = true;
  288. PrikaziKsNagradu(attacker, "Predator Missible^nSay /ks da ga iskoristis", "predator");
  289. print_info2(nick, "Predator", 5)
  290. }
  291. case 1:
  292. {
  293. sentrys[attacker] = true;
  294. PrikaziKsNagradu(attacker, "Sentry Gun^nSay /ks da ga iskoristis", "sentrygun");
  295. print_info2(nick, "Sentry Gun", 5)
  296. }
  297. }
  298. }
  299. case 6:
  300. {
  301. nalot[attacker] = true;
  302. PrikaziKsNagradu(attacker, "Airstreak^nSay /ks da ga iskoristis", "air");
  303. print_info2(nick, "Airstrike", 6)
  304. }
  305. case 15:
  306. {
  307. emp[attacker] = true;
  308. PrikaziKsNagradu(attacker, "EMP^nSay /ks da ga iskoristis", "emp");
  309. print_info2(nick, "EMP", 15)
  310. }
  311. case 25:
  312. {
  313. nuke[attacker] = true;
  314. PrikaziKsNagradu(attacker, "Nuke^nSay /ks da ga iskoristis", "nuke");
  315. print_info2(nick, "Nuke", 25)
  316. }
  317. }
  318. }
  319. licznik_zabic[id] = 0;
  320. user_controll[id] = 0;
  321.  
  322. new ent = find_drop_pack(id, "pack")
  323. if(is_valid_ent(ent))
  324. {
  325. if(task_exists(2571+ent))
  326. {
  327. remove_task(2571+ent);
  328. bartime(id, 0);
  329. }
  330. }
  331. return HAM_IGNORED;
  332. }
  333.  
  334. public PrikaziKsNagradu(id, szNaziv[], nagrada[])
  335. {
  336. set_hudmessage(0, 125, 125, -1.0, 0.75, 0, 6.0, 7.0);
  337. ShowSyncHudMsg(id, CreateHudSyncObj(), szNaziv);
  338. client_cmd(id, "spk sound/mw/%s_give.wav", nagrada);
  339. }
  340.  
  341. //uav
  342. public CreateUVA(id)
  343. {
  344. static CzasUav[2];
  345. new team = get_user_team(id) == 1? 0: 1;
  346. uav[id] = false;
  347. radar[team] = true;
  348.  
  349. new num, players[32];
  350. get_players(players, num, "gh")
  351. for(new a = 0; a < num; a++)
  352. {
  353. new i = players[a]
  354. if(get_user_team(id) != get_user_team(i))
  355. client_cmd(i, "spk sound/mw/uav_enemy.wav")
  356. else
  357. client_cmd(i, "spk sound/mw/uav_friend.wav")
  358. }
  359. print_info(id, "UAV", 3);
  360. radar_scan()
  361.  
  362. if(task_exists(7354+team))
  363. {
  364. new times = (CzasUav[team]-get_systime())+60
  365. change_task(7354+team, float(times));
  366. CzasUav[team] = CzasUav[team]+times;
  367. }
  368. else
  369. {
  370. new data[1];
  371. data[0] = team;
  372. set_task(60.0, "deluav", 7354+team, data, 1);
  373. CzasUav[team] = get_systime()+60;
  374. }
  375. }
  376.  
  377. public deluav(data[1])
  378. {
  379. radar[data[0]] = false;
  380. }
  381.  
  382. public radar_scan()
  383. {
  384. new num, players[32];
  385. get_players(players, num, "gh")
  386. for(new i=0; i<num; i++)
  387. {
  388. new id = players[i];
  389. if(!is_user_alive(id) || !radar[get_user_team(id) == 1? 0: 1])
  390. continue;
  391.  
  392. if(!emp_traje)
  393. radar_continue(id)
  394. else if(get_user_team(id) == get_user_team(emp_traje))
  395. radar_continue(id)
  396. }
  397. }
  398.  
  399. radar_continue(id)
  400. {
  401. new num, players[32], PlayerCoords[3]
  402. get_players(players, num, "gh")
  403. for(new a=0; a<num; a++)
  404. {
  405. new i = players[a]
  406. if(!is_user_alive(i) || get_user_team(i) == get_user_team(id))
  407. continue;
  408.  
  409. get_user_origin(i, PlayerCoords)
  410.  
  411. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostagePos"), {0,0,0}, id)
  412. write_byte(id)
  413. write_byte(i)
  414. write_coord(PlayerCoords[0])
  415. write_coord(PlayerCoords[1])
  416. write_coord(PlayerCoords[2])
  417. message_end()
  418.  
  419. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostageK"), {0,0,0}, id)
  420. write_byte(i)
  421. message_end()
  422. }
  423. }
  424.  
  425. //airpack
  426. public CreatePack(id)
  427. {
  428. new num, players[32];
  429. get_players(players, num, "gh");
  430. for(new a = 0; a < num; a++)
  431. {
  432. new i = players[a];
  433. if(get_user_team(id) != get_user_team(i))
  434. client_cmd(i, "spk sound/mw/carepackage_enemy.wav");
  435. else
  436. client_cmd(i, "spk sound/mw/carepackage_friend.wav");
  437. }
  438. print_info(id, "Care Package", 4);
  439. CreatePlane(id)
  440. pack[id] = false
  441. set_task(1.0, "CarePack", id+742)
  442. }
  443.  
  444. public CarePack(taskid)
  445. {
  446. new id = (taskid - 742)
  447.  
  448. PobraneOrigin[2] += 150;
  449. new Float:LocVecs[3];
  450. IVecFVec(PobraneOrigin, LocVecs);
  451. create_ent(id, "pack", "models/cod_carepackage.mdl", 1, 6, LocVecs);
  452. }
  453.  
  454. public pickup_pack(info[2])
  455. {
  456. new id = info[0];
  457. new ent = info[1];
  458.  
  459. if(!is_user_connected(id) || !is_user_alive(id))
  460. return;
  461.  
  462. new weapons[32], weaponsnum;
  463. get_user_weapons(id, weapons, weaponsnum);
  464. for(new i=0; i<weaponsnum; i++)
  465. if(maxAmmo[weapons[i]] > 0)
  466. cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
  467.  
  468. give_item(id, "weapon_hegrenade");
  469. give_item(id, "weapon_flashbang");
  470. give_item(id, "weapon_flashbang");
  471. give_item(id, "weapon_smokegrenade");
  472.  
  473. switch(random(5))
  474. {
  475. case 0:
  476. {
  477. uav[id] = true;
  478. client_cmd(id, "spk sound/mw/uav_give.wav");
  479. }
  480. case 1:
  481. {
  482. cuav[id] = true;
  483. client_cmd(id, "spk sound/mw/counter_give.wav");
  484. }
  485. case 2:
  486. {
  487. predator[id] = true;
  488. client_cmd(id, "spk sound/mw/predator_give.wav");
  489. }
  490. case 3:
  491. {
  492. nalot[id] = true;
  493. client_cmd(id, "spk sound/mw/air_give.wav");
  494. }
  495. case 4:
  496. {
  497. sentrys[id] = true;
  498. client_cmd(id, "spk sound/mw/sentrygun_give.wav");
  499. }
  500. case 5:
  501. {
  502. emp[id] = true;
  503. client_cmd(id, "spk sound/mw/emp_give.wav");
  504. }
  505. }
  506. remove_entity(ent);
  507. }
  508.  
  509. public client_PreThink(id)
  510. {
  511. if(!is_user_alive(id))
  512. return PLUGIN_CONTINUE;
  513. if(user_controll[id])
  514. {
  515. new ent2 = user_controll[id];
  516. if(is_valid_ent(ent2))
  517. {
  518. new Float:Velocity[3], Float:Angle[3];
  519. velocity_by_aim(id, 500, Velocity);
  520. entity_get_vector(id, EV_VEC_v_angle, Angle);
  521.  
  522. entity_set_vector(ent2, EV_VEC_velocity, Velocity);
  523. entity_set_vector(ent2, EV_VEC_angles, Angle);
  524. }
  525. else
  526. attach_view(id, id);
  527. }
  528. static ent_id[MAX+1];
  529. new ent = find_drop_pack(id, "pack");
  530. if(is_valid_ent(ent))
  531. {
  532. if(!task_exists(2571+ent))
  533. {
  534. ent_id[id] = ent;
  535. bartime(id, 3)
  536.  
  537. new info[2];
  538. info[0] = id;
  539. info[1] = ent;
  540. set_task(3.0, "pickup_pack", 2571+ent, info, 2);
  541. }
  542. }
  543. else
  544. {
  545. if(task_exists(2571+ent_id[id]))
  546. {
  547. remove_task(2571+ent_id[id]);
  548. bartime(id, 0);
  549. ent_id[id] = 0;
  550. }
  551. }
  552. return PLUGIN_CONTINUE;
  553. }
  554.  
  555. //counter-uva
  556. public CreateCUVA(id)
  557. {
  558. cuav[id] = false;
  559. new num, players[32];
  560. get_players(players, num, "gh");
  561. for(new a = 0; a < num; a++)
  562. {
  563. new i = players[a];
  564. if(get_user_team(id) != get_user_team(i))
  565. client_cmd(i, "spk sound/mw/counter_enemy.wav");
  566. else
  567. client_cmd(i, "spk sound/mw/counter_friend.wav");
  568. }
  569. radar[get_user_team(id) == 1? 1: 0] = false;
  570. print_info(id, "Counter-UAV", 4);
  571. }
  572.  
  573. //emp
  574. public CreateEmp(id)
  575. {
  576. client_cmd(0, "spk sound/mw/emp_effect.wav");
  577. emp[id] = false;
  578. new num, players[32];
  579. get_players(players, num, "gh")
  580. for(new a = 0; a < num; a++)
  581. {
  582. new i = players[a];
  583. if(get_user_team(id) != get_user_team(i))
  584. {
  585. if(is_user_alive(i))
  586. {
  587. Display_Fade(i,1<<12,1<<12,1<<16,255, 255,0,166);
  588. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HideWeapon"), _, i);
  589. write_byte((1<<0)|(1<<3)|(1<<5));
  590. message_end();
  591. }
  592. client_cmd(i, "spk sound/mw/emp_enemy.wav");
  593. }
  594. else
  595. client_cmd(i, "spk sound/mw/emp_friend.wav");
  596. }
  597. print_info(id, "EMP", 15);
  598. emp_traje = id;
  599. set_task(90.0,"del_emp");
  600. }
  601.  
  602. public del_emp()
  603. {
  604. new num, players[32];
  605. get_players(players, num, "gh");
  606. for(new a = 0; a < num; a++)
  607. {
  608. new i = players[a];
  609. if(get_user_team(emp_traje) != get_user_team(i))
  610. {
  611. if(is_user_alive(i))
  612. {
  613. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HideWeapon"), _, i);
  614. write_byte(0);
  615. message_end();
  616. }
  617. }
  618. }
  619. emp_traje = 0;
  620. }
  621.  
  622. public CurWeapon(id)
  623. {
  624. if(get_user_team(id) != get_user_team(emp_traje) && emp_traje)
  625. {
  626. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HideWeapon"), _, id);
  627. write_byte(0x29); //(1<<0)|(1<<3)|(1<<5)
  628. message_end();
  629. }
  630. }
  631.  
  632. //nuke
  633. public CreateNuke(id)
  634. {
  635. new num, players[32];
  636. get_players(players, num, "gh");
  637. for(new a = 0; a < num; a++)
  638. {
  639. new i = players[a];
  640. if(is_user_alive(i))
  641. Display_Fade(i,(10<<12),(10<<12),(1<<16),255, 42, 42,171);
  642.  
  643. if(get_user_team(id) != get_user_team(i))
  644. client_cmd(i, "spk sound/mw/nuke_enemy.wav");
  645. else
  646. client_cmd(i, "spk sound/mw/nuke_friend.wav");
  647. }
  648. print_info(id, "Nuke", 25);
  649. set_task(10.0,"shakehud");
  650. set_task(13.5,"del_nuke", id);
  651. nuke[id] = false;
  652. }
  653.  
  654. public shakehud()
  655. {
  656. new num, players[32];
  657. get_players(players, num, "gh");
  658. for(new a = 0; a < num; a++)
  659. {
  660. new i = players[a];
  661. if(is_user_alive(i))
  662. {
  663. Display_Fade(i,(3<<12),(3<<12),(1<<16),255, 85, 42,215);
  664. message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, i);
  665. write_short(255<<12);
  666. write_short(4<<12);
  667. write_short(255<<12);
  668. message_end();
  669. }
  670. }
  671. }
  672.  
  673. public del_nuke(id)
  674. {
  675. new num, players[32];
  676. get_players(players, num, "gh");
  677. for(new a = 0; a < num; a++)
  678. {
  679. new i = players[a];
  680. if(is_user_alive(i))
  681. {
  682. if(get_user_team(id) != get_user_team(i))
  683. {
  684. cs_set_user_armor(i, 0, CS_ARMOR_NONE);
  685. UTIL_Kill(id, i, float(get_user_health(i)), DMG_BULLET)
  686. }
  687. else
  688. user_silentkill(i);
  689. }
  690. }
  691. nuke_player[id] = false;
  692. licznik_zabic[id] = 0;
  693. }
  694.  
  695. //nalot
  696. public CreateNalot(id)
  697. {
  698. new num, players[32];
  699. get_players(players, num, "gh");
  700. for(new a = 0; a < num; a++)
  701. {
  702. new i = players[a];
  703. if(get_user_team(id) != get_user_team(i))
  704. client_cmd(i, "spk sound/mw/air_enemy.wav");
  705. else
  706. client_cmd(i, "spk sound/mw/air_friend.wav");
  707. }
  708. print_info(id, "Airstrike", 6);
  709. set_task(1.0, "CreateBombs", id+997, _, _, "a", 3);
  710. CreatePlane(id);
  711. nalot[id] = false;
  712. }
  713.  
  714. public CreateBombs(taskid)
  715. {
  716. new id = (taskid-997);
  717.  
  718. new radlocation[3];
  719. PobraneOrigin[0] += random_num(-300,300);
  720. PobraneOrigin[1] += random_num(-300,300);
  721. PobraneOrigin[2] += 50;
  722.  
  723. for(new i=0; i<15; i++)
  724. {
  725. radlocation[0] = PobraneOrigin[0]+1*random_num(-150,150);
  726. radlocation[1] = PobraneOrigin[1]+1*random_num(-150,150);
  727. radlocation[2] = PobraneOrigin[2];
  728.  
  729. new Float:LocVec[3];
  730. IVecFVec(radlocation, LocVec);
  731. create_ent(id, "bomb", "models/p_hegrenade.mdl", 2, 10, LocVec);
  732. }
  733. }
  734.  
  735. public CreatePlane(id)
  736. {
  737. new Float:Origin[3], Float:Angle[3], Float:Velocity[3], ent;
  738.  
  739. get_user_origin(id, PobraneOrigin, 3);
  740.  
  741. velocity_by_aim(id, 1000, Velocity);
  742. entity_get_vector(id, EV_VEC_origin, Origin);
  743. entity_get_vector(id, EV_VEC_v_angle, Angle);
  744.  
  745. Angle[0] = Velocity[2] = 0.0;
  746. Origin[2] += 200.0;
  747.  
  748. create_ent(id, "samolot", "models/cod_plane.mdl", 2, 8, Origin, ent);
  749.  
  750. entity_set_vector(ent, EV_VEC_velocity, Velocity);
  751. entity_set_vector(ent, EV_VEC_angles, Angle);
  752.  
  753. emit_sound(ent, CHAN_ITEM, "mw/jet_fly1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
  754. set_task(4.5, "del_plane", ent+5731);
  755. }
  756.  
  757. public del_plane(taskid)
  758. remove_entity(taskid-5731);
  759.  
  760. public touchedrocket(ent, id)
  761. {
  762. if(!is_valid_ent(ent))
  763. return PLUGIN_CONTINUE;
  764.  
  765. bombs_explode(ent, 100.0, 150.0);
  766. return PLUGIN_CONTINUE;
  767. }
  768.  
  769. //predator
  770. public CreatePredator(id)
  771. {
  772. new num, players[32];
  773. get_players(players, num, "gh");
  774. for(new a = 0; a < num; a++)
  775. {
  776. new i = players[a];
  777. if(get_user_team(id) != get_user_team(i))
  778. client_cmd(i, "spk sound/mw/predator_enemy.wav");
  779. else
  780. client_cmd(i, "spk sound/mw/predator_friend.wav");
  781. }
  782. print_info(id, "Predator Missle", 5);
  783.  
  784. new Float:Origin[3], Float:Angle[3], Float:Velocity[3], ent;
  785.  
  786. velocity_by_aim(id, 700, Velocity);
  787. entity_get_vector(id, EV_VEC_origin, Origin);
  788. entity_get_vector(id, EV_VEC_v_angle, Angle);
  789.  
  790. Angle[0] *= -1.0;
  791.  
  792. create_ent(id, "predator", "models/cod_predator.mdl", 2, 5, Origin, ent);
  793.  
  794. entity_set_vector(ent, EV_VEC_velocity, Velocity);
  795. entity_set_vector(ent, EV_VEC_angles, Angle);
  796.  
  797. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  798. write_byte(TE_BEAMFOLLOW);
  799. write_short(ent);
  800. write_short(cache_trail);
  801. write_byte(10);
  802. write_byte(5);
  803. write_byte(205);
  804. write_byte(237);
  805. write_byte(163);
  806. write_byte(200);
  807. message_end();
  808.  
  809. predator[id] = false;
  810.  
  811. attach_view(id, ent);
  812. user_controll[id] = ent;
  813. }
  814.  
  815. public touchedpredator(ent, id)
  816. {
  817. if(!is_valid_ent(ent))
  818. return PLUGIN_CONTINUE;
  819.  
  820. new owner = entity_get_edict(ent, EV_ENT_owner);
  821. bombs_explode(ent, 220.0, 400.0);
  822. attach_view(owner, owner);
  823. user_controll[owner] = 0;
  824. return PLUGIN_CONTINUE;
  825. }
  826.  
  827. //sentry gun
  828. public CreateSentry(id)
  829. {
  830. if(!(entity_get_int(id, EV_INT_flags) & FL_ONGROUND))
  831. return;
  832.  
  833. new entlist[3];
  834. if(find_sphere_class(id, "func_bomb_target", 650.0, entlist, 2))
  835. {
  836. client_print(id, print_chat, "[KillStrike] Jestes zbyt blisko BS'A.");
  837. return;
  838. }
  839. if(find_sphere_class(id, "func_buyzone", 650.0, entlist, 2))
  840. {
  841. client_print(id, print_chat, "[KillStrike] Jestes zbyt blisko Respa.");
  842. return;
  843. }
  844. new num, players[32], Float:Origin[3];
  845. get_players(players, num, "gh");
  846. for(new a = 0; a < num; a++)
  847. {
  848. new i = players[a];
  849. if(get_user_team(id) != get_user_team(i))
  850. client_cmd(i, "spk sound/mw/sentrygun_enemy.wav");
  851. else
  852. client_cmd(i, "spk sound/mw/sentrygun_friend.wav");
  853. }
  854. print_info(id, "Sentry Gun", 5);
  855.  
  856. entity_get_vector(id, EV_VEC_origin, Origin);
  857. Origin[2] += 45.0;
  858.  
  859. new health[12], ent = create_entity("func_breakable");
  860. get_cvar_string("ks_hpsentry",health, charsmax(health));
  861.  
  862. DispatchKeyValue(ent, "health", health);
  863. DispatchKeyValue(ent, "material", "6");
  864.  
  865. entity_set_string(ent, EV_SZ_classname, "sentry");
  866. entity_set_model(ent, "models/sentrygun_mw2.mdl");
  867.  
  868. entity_set_float(ent, EV_FL_takedamage, DAMAGE_YES);
  869.  
  870. entity_set_size(ent, Float:{-16.0, -16.0, 0.0}, Float:{16.0, 16.0, 48.0});
  871.  
  872. entity_set_origin(ent, Origin);
  873. entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX);
  874. entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
  875. entity_set_int(ent, EV_INT_iuser2, id);
  876. entity_set_vector(ent, EV_VEC_angles, Float:{0.0, 0.0, 0.0});
  877. entity_set_byte(ent, EV_BYTE_controller2, 127);
  878.  
  879. entity_set_float(ent, EV_FL_nextthink, get_gametime()+1.0);
  880.  
  881. sentrys[id] = false;
  882. emit_sound(ent, CHAN_ITEM, "mw/plant.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
  883. }
  884.  
  885. public SentryThink(ent)
  886. {
  887. if(!is_valid_ent(ent))
  888. return PLUGIN_CONTINUE;
  889.  
  890. new Float:SentryOrigin[3], Float:closestOrigin[3];
  891. entity_get_vector(ent, EV_VEC_origin, SentryOrigin);
  892.  
  893. new id = entity_get_int(ent, EV_INT_iuser2);
  894. new target = entity_get_edict(ent, EV_ENT_euser1);
  895. new firemods = entity_get_int(ent, EV_INT_iuser1);
  896.  
  897. if(firemods)
  898. {
  899. if(/*ExecuteHam(Ham_FVisible, target, ent)*/fm_is_ent_visible(target, ent) && is_user_alive(target))
  900. {
  901. if(UTIL_In_FOV(target,ent))
  902. {
  903. goto fireoff;
  904. }
  905.  
  906. new Float:TargetOrigin[3];
  907. entity_get_vector(target, EV_VEC_origin, TargetOrigin);
  908.  
  909. emit_sound(ent, CHAN_AUTO, "mw/firemw.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
  910. sentry_turntotarget(ent, SentryOrigin, TargetOrigin);
  911.  
  912. new Float:hitRatio = random_float(0.0, 1.0) - 0.2;
  913. if(hitRatio <= 0.0)
  914. {
  915. UTIL_Kill(id, target, random_float(5.0, 35.0), DMG_BULLET, 1);
  916.  
  917. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  918. write_byte(TE_TRACER);
  919. write_coord(floatround(SentryOrigin[0]));
  920. write_coord(floatround(SentryOrigin[1]));
  921. write_coord(floatround(SentryOrigin[2]));
  922. write_coord(floatround(TargetOrigin[0]));
  923. write_coord(floatround(TargetOrigin[1]));
  924. write_coord(floatround(TargetOrigin[2]));
  925. message_end();
  926. }
  927. entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
  928. return PLUGIN_CONTINUE;
  929. }
  930. else
  931. {
  932. fireoff:
  933. firemods = 0;
  934. entity_set_int(ent, EV_INT_iuser1, 0);
  935. entity_set_edict(ent, EV_ENT_euser1, 0);
  936. emit_sound(ent, CHAN_AUTO, "mw/sentrygun_stops.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
  937.  
  938. entity_set_float(ent, EV_FL_nextthink, get_gametime()+1.0);
  939. return PLUGIN_CONTINUE;
  940. }
  941. }
  942.  
  943. new closestTarget = getClosestPlayer(ent)
  944. if(closestTarget)
  945. {
  946. emit_sound(ent, CHAN_AUTO, "mw/sentrygun_starts.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
  947. entity_get_vector(closestTarget, EV_VEC_origin, closestOrigin);
  948. sentry_turntotarget(ent, SentryOrigin, closestOrigin);
  949.  
  950. entity_set_int(ent, EV_INT_iuser1, 1);
  951. entity_set_edict(ent, EV_ENT_euser1, closestTarget);
  952.  
  953. entity_set_float(ent, EV_FL_nextthink, get_gametime()+1.0);
  954. return PLUGIN_CONTINUE;
  955. }
  956.  
  957. if(!firemods)
  958. {
  959. new controler1 = entity_get_byte(ent, EV_BYTE_controller1)+1;
  960. if(controler1 > 255)
  961. controler1 = 0;
  962. entity_set_byte(ent, EV_BYTE_controller1, controler1);
  963.  
  964. new controler2 = entity_get_byte(ent, EV_BYTE_controller2);
  965. if(controler2 > 127 || controler2 < 127)
  966. entity_set_byte(ent, EV_BYTE_controller2, 127);
  967.  
  968. entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.05);
  969. }
  970. return PLUGIN_CONTINUE
  971. }
  972.  
  973. public sentry_turntotarget(ent, Float:sentryOrigin[3], Float:closestOrigin[3])
  974. {
  975. new newTrip, Float:newAngle = floatatan(((closestOrigin[1]-sentryOrigin[1])/(closestOrigin[0]-sentryOrigin[0])), radian) * 57.2957795;
  976.  
  977. if(closestOrigin[0] < sentryOrigin[0])
  978. newAngle += 180.0;
  979. if(newAngle < 0.0)
  980. newAngle += 360.0;
  981.  
  982. sentryOrigin[2] += 35.0
  983. if(closestOrigin[2] > sentryOrigin[2])
  984. newTrip = 0;
  985. if(closestOrigin[2] < sentryOrigin[2])
  986. newTrip = 255;
  987. if(closestOrigin[2] == sentryOrigin[2])
  988. newTrip = 127;
  989.  
  990. entity_set_byte(ent, EV_BYTE_controller1,floatround(newAngle*0.70833));
  991. entity_set_byte(ent, EV_BYTE_controller2, newTrip);
  992. entity_set_byte(ent, EV_BYTE_controller3, entity_get_byte(ent, EV_BYTE_controller3)+20>255? 0: entity_get_byte(ent, EV_BYTE_controller3)+20);
  993. }
  994.  
  995. public TakeDamage(ent, idinflictor, attacker, Float:damage, damagebits)
  996. {
  997. if(!is_user_alive(attacker))
  998. return HAM_IGNORED;
  999.  
  1000. new classname[32];
  1001. entity_get_string(ent, EV_SZ_classname, classname, 31);
  1002.  
  1003. if(equal(classname, "sentry"))
  1004. {
  1005. new id = entity_get_int(ent, EV_INT_iuser2);
  1006. if(get_user_team(attacker) == get_user_team(id))
  1007. return HAM_SUPERCEDE;
  1008.  
  1009. if(damage >= entity_get_float(ent, EV_FL_health))
  1010. {
  1011. new Float:Origin[3];
  1012. entity_get_vector(ent, EV_VEC_origin, Origin);
  1013. new entlist[33];
  1014. new numfound = find_sphere_class(ent, "player", 190.0, entlist, 32);
  1015.  
  1016. for(new i=0; i < numfound; i++)
  1017. {
  1018. new pid = entlist[i];
  1019.  
  1020. if(!is_user_alive(pid) || get_user_team(id) == get_user_team(pid))
  1021. continue;
  1022. UTIL_Kill(id, pid, 70.0, (1<<24));
  1023. }
  1024. client_cmd(id, "spk sound/mw/sentrygun_gone.wav");
  1025. //Sprite_Blast(Origin);
  1026. //remove_entity(ent); //jak to dam to cresh serwer bo odrazu usuwa sentry guna :O
  1027. set_task(1.0, "del_sentry", ent); //jak tego nie dam to sentry jest jako byt i strzela
  1028. }
  1029. }
  1030. return HAM_IGNORED;
  1031. }
  1032.  
  1033. public del_sentry(ent)
  1034. remove_entity(ent);
  1035.  
  1036. //wybuch
  1037. bombs_explode(ent, Float:zadaje, Float:promien)
  1038. {
  1039. if(!is_valid_ent(ent))
  1040. return;
  1041.  
  1042. new attacker = entity_get_edict(ent, EV_ENT_owner);
  1043.  
  1044. new Float:entOrigin[3], Float:fDamage, Float:Origin[3];
  1045. entity_get_vector(ent, EV_VEC_origin, entOrigin);
  1046. entOrigin[2] += 1.0;
  1047.  
  1048. new entlist[33];
  1049. new numfound = find_sphere_class(ent, "player", promien, entlist, 32);
  1050. for(new i=0; i < numfound; i++)
  1051. {
  1052. new victim = entlist[i];
  1053. if(!is_user_alive(victim) || get_user_team(attacker) == get_user_team(victim))
  1054. continue;
  1055.  
  1056. entity_get_vector(victim, EV_VEC_origin, Origin);
  1057. fDamage = zadaje - floatmul(zadaje, floatdiv(get_distance_f(Origin, entOrigin), promien));
  1058. fDamage *= estimate_take_hurt(entOrigin, victim, 0);
  1059. if(fDamage>0.0)
  1060. UTIL_Kill(attacker, victim, fDamage, DMG_BULLET);
  1061. }
  1062. Sprite_Blast(entOrigin);
  1063. remove_entity(ent);
  1064. }
  1065.  
  1066. public cmdKill()
  1067. return FMRES_SUPERCEDE;
  1068.  
  1069. public message_DeathMsg()
  1070. {
  1071. new killer = get_msg_arg_int(1);
  1072. if(ZmienKilla[0] & (1<<killer))
  1073. {
  1074. set_msg_arg_string(4, "grenade");
  1075. return PLUGIN_CONTINUE;
  1076. }
  1077. if(ZmienKilla[1] & (1<<killer))
  1078. {
  1079. set_msg_arg_string(4, "m249");
  1080. return PLUGIN_CONTINUE;
  1081. }
  1082. return PLUGIN_CONTINUE;
  1083. }
  1084.  
  1085. stock create_ent(id, szName[], szModel[], iSolid, iMovetype, Float:fOrigin[3], &ent=-1)
  1086. {
  1087. new ent1 = create_entity("info_target");
  1088. entity_set_string(ent1, EV_SZ_classname, szName);
  1089. entity_set_model(ent1, szModel);
  1090. entity_set_int(ent1, EV_INT_solid, iSolid);
  1091. entity_set_int(ent1, EV_INT_movetype, iMovetype);
  1092. entity_set_edict(ent1, EV_ENT_owner, id);
  1093. entity_set_origin(ent1, fOrigin);
  1094.  
  1095. if(ent != -1)
  1096. ent = ent1;
  1097. }
  1098.  
  1099. stock Sprite_Blast(Float:iOrigin[3])
  1100. {
  1101. message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  1102. write_byte(TE_EXPLOSION);
  1103. write_coord(floatround(iOrigin[0]));
  1104. write_coord(floatround(iOrigin[1]));
  1105. write_coord(floatround(iOrigin[2]));
  1106. write_short(sprite_blast);
  1107. write_byte(32);
  1108. write_byte(20);
  1109. write_byte(0);
  1110. message_end();
  1111. }
  1112.  
  1113. stock Float:estimate_take_hurt(Float:fPoint[3], ent, ignored)
  1114. {
  1115. new Float:fFraction, Float:fOrigin[3], tr;
  1116. entity_get_vector(ent, EV_VEC_origin, fOrigin);
  1117. engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, ignored, tr);
  1118. get_tr2(tr, TR_flFraction, fFraction);
  1119. if(fFraction == 1.0 || get_tr2(tr, TR_pHit) == ent)
  1120. return 1.0;
  1121. return 0.6;
  1122. }
  1123.  
  1124. stock bartime(id, number)
  1125. {
  1126. message_begin(MSG_ONE, get_user_msgid("BarTime"), _, id);
  1127. write_short(number);
  1128. message_end();
  1129. }
  1130.  
  1131. stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
  1132. {
  1133. message_begin(MSG_ONE, get_user_msgid("ScreenFade"),{0,0,0},id);
  1134. write_short(duration);
  1135. write_short(holdtime);
  1136. write_short(fadetype);
  1137. write_byte(red);
  1138. write_byte(green);
  1139. write_byte(blue);
  1140. write_byte(alpha);
  1141. message_end();
  1142. }
  1143.  
  1144. stock find_drop_pack(id, const class[])
  1145. {
  1146. new Float:origin[3], classname[32], ent;
  1147. entity_get_vector(id, EV_VEC_origin, origin);
  1148.  
  1149. while((ent = find_ent_in_sphere(ent, origin, 75.0)) != 0)
  1150. {
  1151. entity_get_string(ent, EV_SZ_classname, classname, 31);
  1152. if(equali(classname, class))
  1153. return ent;
  1154. }
  1155. return 0;
  1156. }
  1157.  
  1158. stock print_info(id, const nagrada[], killstreak)
  1159. {
  1160. new nick[64];
  1161. get_user_name(id, nick, 63);
  1162. set_hudmessage(0, 64, 64, -1.0, 0.25, 0, 6.0, 7.0);
  1163. show_hudmessage(id, "%s je iskoristio %s za Killstreak x%d",nick, nagrada, killstreak);
  1164. /*client_cmd(id, "spk sound/mw/%s_give.wav", nagrada);
  1165. client_print(0, print_chat, "%s je dobio %s za Killstreak x%d", nick, nagrada, killstreak);*/
  1166. }
  1167.  
  1168. stock print_info2(const szNick[], const nagrada[], killstreak)
  1169. {
  1170. ColorChat(0, TEAM_COLOR, "^4%s ^1je dobio^4 %s^1 za ^4Killstreak x%d",szNick, nagrada, killstreak)
  1171. /*client_cmd(id, "spk sound/mw/%s_give.wav", nagrada);
  1172. client_print(0, print_chat, "%s je dobio %s za Killstreak x%d", nick, nagrada, killstreak);*/
  1173. }
  1174.  
  1175. stock UTIL_Kill(atakujacy, obrywajacy, Float:damage, damagebits, ile=0)
  1176. {
  1177. ZmienKilla[ile] |= (1<<atakujacy);
  1178. ExecuteHam(Ham_TakeDamage, obrywajacy, atakujacy, atakujacy, damage, damagebits);
  1179. ZmienKilla[ile] &= ~(1<<atakujacy);
  1180. }
  1181.  
  1182. stock getClosestPlayer(ent)
  1183. {
  1184. new iClosestPlayer = 0, Float:flClosestDist = MAX_DIST, Float:flDistanse, Float:fOrigin[2][3];
  1185. new num, players[32];
  1186. get_players(players, num, "gh")
  1187. for(new a = 0; a < num; a++)
  1188. {
  1189. new i = players[a];
  1190. if(!is_user_connected(i) || !is_user_alive(i) || /*!ExecuteHam(Ham_FVisible, i, ent)*/!fm_is_ent_visible(i, ent) || get_user_team(i) == get_user_team(entity_get_int(ent, EV_INT_iuser2)))
  1191. continue;
  1192.  
  1193. if(UTIL_In_FOV(i, ent))
  1194. continue;
  1195.  
  1196. entity_get_vector(i, EV_VEC_origin, fOrigin[0]);
  1197. entity_get_vector(ent, EV_VEC_origin, fOrigin[1]);
  1198.  
  1199. flDistanse = get_distance_f(fOrigin[0], fOrigin[1]);
  1200.  
  1201. if(flDistanse <= flClosestDist)
  1202. {
  1203. iClosestPlayer = i;
  1204. flClosestDist = flDistanse;
  1205. }
  1206. }
  1207. return iClosestPlayer;
  1208. }
  1209.  
  1210. stock bool:UTIL_In_FOV(id,ent)
  1211. {
  1212. if((get_pdata_int(id, 510) & (1<<16)) && (Find_Angle(id, ent) > 0.0))
  1213. return true;
  1214. return false;
  1215. }
  1216.  
  1217. stock Float:Find_Angle(id, target)
  1218. {
  1219. new Float:Origin[3], Float:TargetOrigin[3];
  1220. pev(id,pev_origin, Origin);
  1221. pev(target,pev_origin,TargetOrigin);
  1222.  
  1223. new Float:Angles[3], Float:vec2LOS[3];
  1224. pev(id,pev_angles, Angles);
  1225.  
  1226. xs_vec_sub(TargetOrigin, Origin, vec2LOS);
  1227. vec2LOS[2] = 0.0;
  1228.  
  1229. new Float:veclength = vector_length(vec2LOS);
  1230. if (veclength <= 0.0)
  1231. vec2LOS[0] = vec2LOS[1] = 0.0;
  1232. else
  1233. {
  1234. new Float:flLen = 1.0 / veclength;
  1235. vec2LOS[0] = vec2LOS[0]*flLen;
  1236. vec2LOS[1] = vec2LOS[1]*flLen;
  1237. }
  1238. engfunc(EngFunc_MakeVectors, Angles);
  1239.  
  1240. new Float:v_forward[3];
  1241. get_global_vector(GL_v_forward, v_forward);
  1242.  
  1243. new Float:flDot = vec2LOS[0]*v_forward[0]+vec2LOS[1]*v_forward[1];
  1244. if(flDot > 0.5)
  1245. return flDot;
  1246.  
  1247. return 0.0;
  1248. }
  1249.  
  1250. stock bool:fm_is_ent_visible(index, entity, ignoremonsters = 0) {
  1251. new Float:start[3], Float:dest[3];
  1252. pev(index, pev_origin, start);
  1253. pev(index, pev_view_ofs, dest);
  1254. xs_vec_add(start, dest, start);
  1255.  
  1256. pev(entity, pev_origin, dest);
  1257. engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0);
  1258.  
  1259. new Float:fraction;
  1260. get_tr2(0, TR_flFraction, fraction);
  1261. if (fraction == 1.0 || get_tr2(0, TR_pHit) == entity)
  1262. return true;
  1263.  
  1264. return false;
  1265. }
Advertisement
Add Comment
Please, Sign In to add comment