Guest User

Untitled

a guest
Oct 16th, 2011
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 52.13 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fun>
  4. #include <cstrike>
  5. #include <fakemeta>
  6. #include <engine>
  7. #include <hamsandwich>
  8. #include <nvault>
  9.  
  10.  
  11. #define PLUGIN "Call of Duty: MW Mod"
  12. #define VERSION "1.0"
  13. #define AUTHOR "QTM_Peyote,johnC,GranTorino"
  14.  
  15. #define STANDARD_FAST 250.0
  16.  
  17. #define TASK_SHOW_INFORMATION 672
  18. #define TASK_RAISE 704
  19. #define TASK_TRAINING_SANITARY 736
  20. #define TASK_SHOW_ADVERTISEMENT 768
  21. #define TASK_SET_FAST 832
  22.  
  23. //#define BOT 1
  24.  
  25. new SyncHudObj;
  26. new SyncHudObj2;
  27. new SyncHudObj3;
  28. new g_msg_screenfade;
  29.  
  30. new sprite_white;
  31. new sprite_blast;
  32.  
  33. new g_vault;
  34.  
  35. new podkladajacy;
  36. new disarming;
  37.  
  38. new experience_for_murder;
  39. new experience_for_bomb;
  40.  
  41. new Clothing_CT[4][]={"sas","gsg9","urban","gign"};
  42. new Clothing_Terro[4][]={"arctic","leet","guerilla","terror"};
  43.  
  44. 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};
  45. new const maxClip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
  46. 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 };
  47.  
  48. new information_item_player[33][2];
  49. new const names_objects[][] =
  50. {
  51. "None",
  52. "Assault Boots", //1
  53. "Double Vest", //2
  54. "Reinforced Vest", //3
  55. "Veteran Knife", //4
  56. "Surprise Enemy", //5
  57. "Ninja Cloak", //6
  58. "Morphine", //7
  59. "Commando Knife", //8
  60. "Spy Glasses",
  61. "Mystery Grenade",
  62. "Ninja Feet", //11
  63. "Secret Military", //12
  64. "AWP Sniper",//13
  65. "Adrenaline",//14
  66. "Mystery Rambo",//15
  67. "Training Sanitary",//16
  68. "NASA Vest",//17
  69. "Trained Veteran",//18
  70. "First Aid Kit",//19
  71. "Recoil Eliminator",//20
  72. "Titanium Cartridges",//21
  73. "Colonel Cartridges",//22
  74. "Recoil Limiter",//23
  75. "SWAT Shield",//24
  76. "Trained Recruit",//25
  77. "Relective Armour",//26
  78. "Captain's Notes",//27
  79. "Jet Module"
  80.  
  81. };
  82.  
  83. new const descriptions_objects[][] = {"Kill someone to get an item",
  84. "Run silently",
  85. "Reduces damage taken",
  86. "Reduces damage taken",
  87. "Knife hit are stronger",
  88. "When you hit someone from behind, injuries are 2x stronger",
  89. "Makes you partly invisible",
  90. "1/3 chance to respawn when killed",
  91. "Instant kill with a knife",
  92. "You got 1/3 chance to instant kill with HE. You look like enemy",
  93. "Instant kill people with HE grenades",
  94. "You can do a double jump in the air",
  95. "Your injuries are reduced by 1/3. You have a 1/3 chance of blinding an enemy",
  96. "Instant kill with AWP",
  97. "For every frag, you'll get +50 HP",
  98. "For every frag, you'll get full clip and +20 HP",
  99. "Recieve 10hp every 3 seconds",
  100. "+500 Armour",
  101. "You get 100 HP every round,run slower",
  102. "Press E to gain HP",
  103. "No recoil",
  104. "+15 Damage",
  105. "+25 Damage",
  106. "Your recoil is lower",
  107. "No items work against you.",
  108. "You'll get +50 HP every round and you're running slower",
  109. "1/3 chance to reflex your damage",
  110. "You are resistant to three shots in each round",
  111. "Press CTRL and SPACE to use the module, the module loads every 4 seconds"
  112. };
  113.  
  114. new g_szAuthID[33][34];
  115. new class_player[33];
  116. new level_player[33] = 1;
  117. new experience_player[33];
  118.  
  119. new nowa_class_player[33];
  120.  
  121. new const experience_level[] =
  122. {
  123. 0,35,140,315,560,875,1260,1715,2240,2835,3500,4235,5040,5915,6860,7875,8960,10115,11340,12635,14000,15435,16940,18515,20160,21875,23660,25515,27440,29435,31500,33635,35840,38115,40460,42875,45360,47915,50540,53235,56000,58835,61740,64715,67760,70875,
  124. 74060,77315,80640,84035,87500,91035,94640,98315,102060,105875,109760,113715,117740,121835,126000,130235,134540,138915,143360,147875,152460,157115,161840,166635,171500,176435,181440,186515,191660,196875,202160,207515,212940,218435,224000,229635,235340,241115,246960,252875,258860,
  125. 264915,271040,277235,283500,289835,296240,302715,309260,315875,322560,329315,336140,343035,350000,357035,364140
  126. };
  127.  
  128. new punkty_player[33];
  129. new zdrowie_player[33];
  130. new inteligencja_player[33];
  131. new wytrzymalosc_player[33];
  132. new Float:redukcja_obrazen_player[33];
  133. new kondycja_player[33];
  134. new maksymalne_zdrowie_player[33];
  135. new Float:fast_player[33];
  136.  
  137. new bool:gracz_resetuje[33];
  138.  
  139. enum { NONE = 0, Sniper, Commando, Sharpshooter, Protector, Medic, FireSupport, Sapper, Demolitions, Rusher, Rambo };
  140. new const zdrowie_klasy[] = { 0, 120, 130, 110, 250, 150, 100, 100, 130, 100, 130};
  141. new const Float:fast_klasy[] = {0.0, 1.2, 1.35, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0, 1.45 , 1.15};
  142. new const pancerz_klasy[] = { 0, 100, 100, 100, 200, 100, 0, 100, 100, 0, 150};
  143. new const names_klas[][] = {"None",
  144. "Sniper",
  145. "Commando",
  146. "Sharpshooter",
  147. "Protector",
  148. "Medic",
  149. "Fire Support",
  150. "Sapper",
  151. "Demolitions",
  152. "Rusher",
  153. "Rambo"
  154. };
  155.  
  156. new const descriptions_klas[][] = {"None",
  157. "Recieves AWP, Deagle & Scout, 120hp. 1/3 chance of instant knife kill. 110 Speed, 100 Amour.",
  158. "Recieves Deagle, 130hp. Instand knife kills (right click only), 135 Speed, 100 Armour",
  159. "Recieves AK47, M4A1 & 110hp. 80 Speed, 100 Armour",
  160. "Recieves M249, 250hp & All grenades, Immune to mines, 200 Armour",
  161. "Recieves UMP45, 150hp. First Aid Kit, 100 Armour",
  162. "Recieves MP5, 100 hp, Two rockets, Extra hit points per hit",
  163. "Recieves P90, 100hp, Gets 3 mines, 100 Armour",
  164. "Recieves AUG, 130 hp, All grenades, Gets dynamite which does spreaded damage, 100 Armour",
  165. "Recieves M3, 100 hp, 145 Speed",
  166. "Recieves Famas, 130 hp, 120 Speed, 20 HP per kill, Double jump, 100 Armour"
  167. };
  168.  
  169. new ilosc_apteczek_player[33];
  170. new ilosc_rakiet_player[33];
  171. new Float:poprzednia_rakieta_player[33];
  172. new ilosc_min_player[33];
  173. new ilosc_dynamitow_player[33];
  174. new ilosc_skokow_player[33];
  175.  
  176. new bool:freezetime = true;
  177.  
  178. public plugin_init()
  179. {
  180. register_plugin(PLUGIN, VERSION, AUTHOR);
  181.  
  182. g_vault = nvault_open("CodMod");
  183.  
  184. register_think("FirstAidKit","FirstAidKitThink");
  185.  
  186. RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
  187. RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
  188.  
  189.  
  190. register_forward(FM_CmdStart, "CmdStart");
  191. register_forward(FM_EmitSound, "EmitSound");
  192.  
  193. register_logevent("PoczatekRundy", 2, "1=Round_Start");
  194. register_logevent("BombaPodlozona", 3, "2=Planted_The_Bomb");
  195.  
  196. register_event("SendAudio", "BombaRozbrojona", "a", "2&%!MRAD_BOMBDEF");
  197. register_event("BarTime", "RozbrajaBomb", "be", "1=10", "1=5");
  198. register_event("DeathMsg", "Death", "ade");
  199. register_event("Damage", "Damage", "b", "2!=0");
  200. register_event("CurWeapon","CurWeapon","be", "1=1");
  201. register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
  202.  
  203. register_touch("Rocket", "*" , "DotykRakiety");
  204. register_touch("Mine", "player", "DotykMiny");
  205.  
  206. register_cvar("cod_killxp", "50");
  207. register_cvar("cod_bombxp", "100");
  208.  
  209. register_clcmd("say /class", "WybierzKlase");
  210. register_clcmd("say /classinfo", "DescriptionKlasy");
  211. register_clcmd("say /item", "DescriptionItem");
  212. register_clcmd("say /drop", "WyrzucPrzedmiot");
  213. register_clcmd("say /reset", "KomendaResetujPunkty");
  214. register_clcmd("say /help", "userhelp", 0, " - Help Motd ");
  215. register_clcmd("say /save","ZapiszDane")
  216. register_clcmd("fullupdate", "CommandBlock");
  217. register_clcmd("cl_autobuy", "CommandBlock");
  218. register_clcmd("cl_rebuy", "CommandBlock");
  219. register_clcmd("cl_setautobuy","CommandBlock");
  220. register_clcmd("rebuy", "CommandBlock");
  221. register_clcmd("autobuy", "CommandBlock");
  222. register_clcmd("glock", "CommandBlock");
  223. register_clcmd("usp", "CommandBlock");
  224. register_clcmd("p228", "CommandBlock");
  225. register_clcmd("deagle", "CommandBlock");
  226. register_clcmd("elites", "CommandBlock");
  227. register_clcmd("fn57", "CommandBlock");
  228. register_clcmd("m3", "CommandBlock");
  229. register_clcmd("autoshotgun", "CommandBlock");
  230. register_clcmd("mac10", "CommandBlock");
  231. register_clcmd("tmp", "CommandBlock");
  232. register_clcmd("mp5", "CommandBlock");
  233. register_clcmd("ump45", "CommandBlock");
  234. register_clcmd("p90", "CommandBlock");
  235. register_clcmd("galil", "CommandBlock");
  236. register_clcmd("ak47", "CommandBlock");
  237. register_clcmd("scout", "CommandBlock");
  238. register_clcmd("sg552", "CommandBlock");
  239. register_clcmd("awp", "CommandBlock");
  240. register_clcmd("g3sg1", "CommandBlock");
  241. register_clcmd("famas", "CommandBlock");
  242. register_clcmd("m4a1", "CommandBlock");
  243. register_clcmd("bullpup", "CommandBlock");
  244. register_clcmd("sg550", "CommandBlock");
  245. register_clcmd("m249", "CommandBlock");
  246. register_clcmd("shield", "CommandBlock");
  247. register_clcmd("hegren", "CommandBlock");
  248. register_clcmd("sgren", "CommandBlock");
  249. register_clcmd("flash", "CommandBlock");
  250. register_concmd("cod_setlvl", "cmd_setlvl", ADMIN_KICK, "<name> <level>");
  251.  
  252. g_msg_screenfade = get_user_msgid("ScreenFade");
  253. SyncHudObj = CreateHudSyncObj();
  254. SyncHudObj2 = CreateHudSyncObj();
  255. SyncHudObj3 = CreateHudSyncObj();
  256. experience_for_murder = get_cvar_num("cod_killxp");
  257. experience_for_bomb = get_cvar_num("cod_bombxp");
  258.  
  259. set_task(60.0, "Pomoc");
  260. }
  261.  
  262. public plugin_cfg()
  263. {
  264. server_cmd("sv_maxspeed 1600");
  265. }
  266.  
  267. public plugin_precache()
  268. {
  269. sprite_white = precache_model("sprites/white.spr") ;
  270. sprite_blast = precache_model("sprites/dexplo.spr");
  271.  
  272. precache_sound("MW/select.wav");
  273. precache_sound("MW/start.wav");
  274. precache_sound("MW/start2.wav");
  275. precache_sound("MW/levelup.wav");
  276.  
  277. precache_model("models/w_medkit.mdl");
  278. precache_model("models/rpgrocket.mdl");
  279. precache_model("models/mine.mdl");
  280. }
  281.  
  282. public CmdStart(id, uc_handle)
  283. {
  284. if(!is_user_alive(id))
  285. return FMRES_IGNORED;
  286.  
  287. new button = get_uc(uc_handle, UC_Buttons);
  288. new oldbutton = get_user_oldbutton(id);
  289. new flags = get_entity_flags(id);
  290.  
  291. if(information_item_player[id][0] == 11 || class_player[id] == Rambo)
  292. {
  293. if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && ilosc_skokow_player[id] > 0)
  294. {
  295. ilosc_skokow_player[id]--;
  296. new Float:velocity[3];
  297. entity_get_vector(id,EV_VEC_velocity,velocity);
  298. velocity[2] = random_float(265.0,285.0);
  299. entity_set_vector(id,EV_VEC_velocity,velocity);
  300. }
  301. else if(flags & FL_ONGROUND)
  302. {
  303. ilosc_skokow_player[id] = 0;
  304. if(information_item_player[id][0] == 11)
  305. ilosc_skokow_player[id]++;
  306. if(class_player[id] == Rambo)
  307. ilosc_skokow_player[id]++;
  308. }
  309. }
  310.  
  311. if(button & IN_ATTACK)
  312. {
  313. new Float:punchangle[3];
  314.  
  315. if(information_item_player[id][0] == 20)
  316. entity_set_vector(id, EV_VEC_punchangle, punchangle);
  317. if(information_item_player[id][0] == 23)
  318. {
  319. entity_get_vector(id, EV_VEC_punchangle, punchangle);
  320. for(new i=0; i<3;i++)
  321. punchangle[i]*=0.9;
  322. entity_set_vector(id, EV_VEC_punchangle, punchangle);
  323. }
  324. }
  325.  
  326. if(information_item_player[id][0] == 28 && button & IN_JUMP && button & IN_DUCK && flags & FL_ONGROUND && get_gametime() > information_item_player[id][1]+4.0)
  327. {
  328. information_item_player[id][1] = floatround(get_gametime());
  329. new Float:velocity[3];
  330. VelocityByAim(id, 700, velocity);
  331. velocity[2] = random_float(265.0,285.0);
  332. entity_set_vector(id, EV_VEC_velocity, velocity);
  333. }
  334.  
  335.  
  336. return FMRES_IGNORED;
  337. }
  338.  
  339. public Odrodzenie(id)
  340. {
  341. if(!is_user_alive(id) || !is_user_connected(id))
  342. return PLUGIN_CONTINUE;
  343.  
  344. if(nowa_class_player[id])
  345. {
  346. class_player[id] = nowa_class_player[id];
  347. nowa_class_player[id] = 0;
  348. strip_user_weapons(id);
  349. give_item(id, "weapon_knife");
  350. switch(get_user_team(id))
  351. {
  352. case 1: give_item(id, "weapon_glock18");
  353. case 2: give_item(id, "weapon_usp");
  354. }
  355. WczytajDane(id, class_player[id]);
  356. }
  357.  
  358. if(!class_player[id])
  359. {
  360. WybierzKlase(id);
  361. return PLUGIN_CONTINUE;
  362. }
  363.  
  364. switch(class_player[id])
  365. {
  366. case Sniper:
  367. {
  368. give_item(id, "weapon_awp");
  369. give_item(id, "weapon_scout");
  370. give_item(id, "weapon_deagle");
  371. }
  372. case Commando:
  373. {
  374. give_item(id, "weapon_deagle");
  375. }
  376. case Sharpshooter:
  377. {
  378. give_item(id, "weapon_m4a1");
  379. give_item(id, "weapon_ak47");
  380. }
  381. case Protector:
  382. {
  383. give_item(id, "weapon_m249");
  384. give_item(id, "weapon_hegrenade");
  385. give_item(id, "weapon_flashbang");
  386. give_item(id, "weapon_smokegrenade");
  387. }
  388. case Medic:
  389. {
  390. give_item(id, "weapon_ump45");
  391. ilosc_apteczek_player[id] = 2;
  392. }
  393. case FireSupport:
  394. {
  395. give_item(id, "weapon_mp5navy");
  396. ilosc_rakiet_player[id] = 2;
  397. }
  398. case Sapper:
  399. {
  400. give_item(id, "weapon_p90");
  401. ilosc_min_player[id] = 3;
  402. }
  403. case Demolitions:
  404. {
  405. give_item(id, "weapon_aug");
  406. give_item(id, "weapon_hegrenade");
  407. give_item(id, "weapon_flashbang");
  408. give_item(id, "weapon_smokegrenade");
  409. ilosc_dynamitow_player[id] = 1;
  410. }
  411. case Rusher:
  412. {
  413. give_item(id, "weapon_m3");
  414. }
  415. case Rambo:
  416. {
  417. give_item(id, "weapon_famas");
  418. }
  419. }
  420.  
  421. if(gracz_resetuje[id])
  422. {
  423. ResetujPunkty(id);
  424. gracz_resetuje[id] = false;
  425. }
  426.  
  427. if(punkty_player[id]>0)
  428. PrzydzielPunkty(id);
  429.  
  430. if(information_item_player[id][0] == 10 || information_item_player[id][0] == 9)
  431. give_item(id, "weapon_hegrenade");
  432.  
  433. if(information_item_player[id][0] == 9)
  434. ZmienUbranie(id, 0);
  435.  
  436. if(information_item_player[id][0] == 1)
  437. set_user_footsteps(id, 1);
  438. else
  439. set_user_footsteps(id, 0);
  440.  
  441. if(information_item_player[id][0] == 13)
  442. give_item(id, "weapon_awp");
  443.  
  444. if(information_item_player[id][0] == 19)
  445. information_item_player[id][1] = 1;
  446.  
  447. if(information_item_player[id][0] == 27)
  448. information_item_player[id][1] = 3;
  449.  
  450. new weapons[32];
  451. new weaponsnum;
  452. get_user_weapons(id, weapons, weaponsnum);
  453. for(new i=0; i<weaponsnum; i++)
  454. if(is_user_alive(id))
  455. if(maxAmmo[weapons[i]] > 0)
  456. cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
  457.  
  458. redukcja_obrazen_player[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(wytrzymalosc_player[id])))/100);
  459. maksymalne_zdrowie_player[id] = zdrowie_klasy[class_player[id]]+zdrowie_player[id]*2;
  460. fast_player[id] = STANDARD_FAST*fast_klasy[class_player[id]]+floatround(kondycja_player[id]*1.3);
  461.  
  462. if(information_item_player[id][0] == 18)
  463. {
  464. maksymalne_zdrowie_player[id] += 100;
  465. fast_player[id] -= 0.4;
  466. }
  467.  
  468. if(information_item_player[id][0] == 25)
  469. {
  470. maksymalne_zdrowie_player[id] += 50;
  471. fast_player[id] -= 0.3;
  472. }
  473.  
  474. set_user_armor(id, pancerz_klasy[class_player[id]]);
  475. set_user_health(id, maksymalne_zdrowie_player[id]);
  476. if(information_item_player[id][0] == 17)
  477. set_user_armor(id, 500);
  478.  
  479. return PLUGIN_CONTINUE;
  480. }
  481.  
  482. public PoczatekRundy()
  483. {
  484. freezetime = false;
  485. for(new id=0;id<=32;id++)
  486. {
  487. if(!is_user_alive(id))
  488. continue;
  489.  
  490. set_task(0.1, "SetFast", id+TASK_SET_FAST);
  491.  
  492. switch(get_user_team(id))
  493. {
  494. case 1: client_cmd(id, "spk MW/start");
  495. case 2: client_cmd(id, "spk MW/start2");
  496. }
  497. }
  498. }
  499.  
  500. public NowaRunda()
  501. {
  502. freezetime = true;
  503. new iEnt = find_ent_by_class(-1, "Mine");
  504. while(iEnt > 0)
  505. {
  506. remove_entity(iEnt);
  507. iEnt = find_ent_by_class(iEnt, "Mine");
  508. }
  509. }
  510.  
  511. public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
  512. {
  513. if(!is_user_alive(this) || !is_user_connected(this) || information_item_player[this][0] == 24 || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker) || !class_player[idattacker])
  514. return HAM_IGNORED;
  515.  
  516. new health = get_user_health(this);
  517. new weapon = get_user_weapon(idattacker);
  518.  
  519. if(health < 2)
  520. return HAM_IGNORED;
  521.  
  522. if(information_item_player[this][0] == 27 && information_item_player[this][1]>0)
  523. {
  524. information_item_player[this][1]--;
  525. return HAM_SUPERCEDE;
  526. }
  527.  
  528. if(wytrzymalosc_player[this]>0)
  529. damage -= redukcja_obrazen_player[this]*damage;
  530.  
  531. if(information_item_player[this][0] == 2 || information_item_player[this][0] == 3)
  532. damage-=(float(information_item_player[this][1])<damage)? float(information_item_player[this][1]): damage;
  533.  
  534. if(information_item_player[idattacker][0] == 5 && !UTIL_In_FOV(this, idattacker) && UTIL_In_FOV(idattacker, this))
  535. damage*=2.0;
  536.  
  537. if(information_item_player[idattacker][0] == 10)
  538. damage+=information_item_player[idattacker][1];
  539.  
  540. if(information_item_player[this][0] == 12)
  541. damage-=(5.0<damage)? 5.0: damage;
  542.  
  543. if(weapon == CSW_AWP && information_item_player[idattacker][0] == 13)
  544. damage=float(health);
  545.  
  546. if(information_item_player[idattacker][0] == 21)
  547. damage+=15;
  548.  
  549. if(information_item_player[idattacker][0] == 22)
  550. damage+=25;
  551.  
  552. if(idinflictor != idattacker && entity_get_int(idinflictor, EV_INT_movetype) != 5)
  553. {
  554. if((information_item_player[idattacker][0] == 9 && random_num(1, information_item_player[idattacker][1]) == 1) || information_item_player[idattacker][0] == 10)
  555. damage = float(health);
  556. }
  557.  
  558. if(weapon == CSW_KNIFE)
  559. {
  560. if(information_item_player[this][0] == 4)
  561. damage=damage*1.4+inteligencja_player[idattacker];
  562. if(information_item_player[idattacker][0] == 8 || (class_player[idattacker] == Sniper && random(2) == 2) || class_player[idattacker] == Commando && !(get_user_button(idattacker) & IN_ATTACK))
  563. damage = float(health);
  564. }
  565.  
  566. if(information_item_player[this][0] == 26 && random_num(1, information_item_player[this][1]) == 1)
  567. {
  568. SetHamParamEntity(3, this);
  569. SetHamParamEntity(1, idattacker);
  570. }
  571.  
  572.  
  573. SetHamParamFloat(4, damage);
  574. return HAM_IGNORED;
  575. }
  576.  
  577. public Damage(id)
  578. {
  579. new attacker = get_user_attacker(id);
  580. new damage = read_data(2);
  581. if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !class_player[attacker])
  582. return PLUGIN_CONTINUE;
  583.  
  584. if(information_item_player[attacker][0] == 12 && random_num(1, information_item_player[id][1]) == 1)
  585. Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
  586.  
  587. if(get_user_team(id) != get_user_team(attacker))
  588. {
  589. while(damage>20)
  590. {
  591. damage-=20;
  592. experience_player[attacker]++;
  593. }
  594. }
  595. SprawdzLevel(attacker);
  596. return PLUGIN_CONTINUE;
  597. }
  598.  
  599. public Death()
  600. {
  601. new id = read_data(2);
  602. new attacker = read_data(1);
  603.  
  604. if(!is_user_alive(attacker) || !is_user_connected(attacker))
  605. return PLUGIN_CONTINUE;
  606.  
  607. new weapon = get_user_weapon(attacker);
  608. new zdrowie = get_user_health(attacker);
  609.  
  610. if(get_user_team(id) != get_user_team(attacker) && class_player[attacker])
  611. {
  612. new nowe_experience = 0;
  613.  
  614. nowe_experience += experience_for_murder;
  615.  
  616. if(class_player[id] == Rambo && class_player[attacker] != Rambo)
  617. nowe_experience += experience_for_murder*2;
  618.  
  619. if(level_player[id] > level_player[attacker])
  620. nowe_experience += level_player[id] - level_player[attacker];
  621.  
  622. if(class_player[attacker] == Rambo || information_item_player[attacker][0] == 15 && maxClip[weapon] != -1)
  623. {
  624.  
  625. new nowe_zdrowie = (zdrowie+20<maksymalne_zdrowie_player[attacker])? zdrowie+20: maksymalne_zdrowie_player[attacker];
  626. set_user_clip(attacker, maxClip[weapon]);
  627. set_user_health(attacker, nowe_zdrowie);
  628. }
  629. #if defined BOT
  630. if(is_user_bot2(attacker) && random(9) == 0)
  631. WyrzucPrzedmiot(id);
  632. #endif
  633. if(!information_item_player[attacker][0])
  634. DajPrzedmiot(attacker, random_num(1, sizeof names_objects-1));
  635.  
  636. if(information_item_player[attacker][0] == 14)
  637. {
  638. new nowe_zdrowie = (zdrowie+50<maksymalne_zdrowie_player[attacker])? zdrowie+50: maksymalne_zdrowie_player[attacker];
  639. set_user_health(attacker, nowe_zdrowie);
  640. }
  641.  
  642. set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
  643. ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_experience);
  644.  
  645. experience_player[attacker] += nowe_experience;
  646. }
  647.  
  648. SprawdzLevel(attacker);
  649.  
  650. if(information_item_player[id][0] == 7 && random_num(1, information_item_player[id][1]) == 1)
  651. set_task(0.1, "Raise", id+TASK_RAISE);
  652.  
  653. return PLUGIN_CONTINUE;
  654. }
  655.  
  656. public client_connect(id)
  657. {
  658. //resetuje umiejetnosci
  659. class_player[id] = 0;
  660. level_player[id] = 0;
  661. experience_player[id] = 0;
  662. punkty_player[id] = 0;
  663. zdrowie_player[id] = 0;
  664. inteligencja_player[id] = 0;
  665. wytrzymalosc_player[id] = 0;
  666. kondycja_player[id] = 0;
  667. maksymalne_zdrowie_player[id] = 0;
  668. fast_player[id] = 0.0;
  669.  
  670. get_user_authid(id, g_szAuthID[id], charsmax(g_szAuthID[] ));
  671.  
  672. remove_task(id+TASK_SHOW_INFORMATION);
  673. remove_task(id+TASK_SHOW_ADVERTISEMENT);
  674. remove_task(id+TASK_SET_FAST);
  675. remove_task(id+TASK_RAISE);
  676. remove_task(id+TASK_TRAINING_SANITARY);
  677.  
  678. set_task(10.0, "ShowAdvertisement", id+TASK_SHOW_ADVERTISEMENT);
  679. set_task(3.0, "ShowInformation", id+TASK_SHOW_INFORMATION);
  680.  
  681. //resetuje przedmioty
  682. UsunPrzedmiot(id);
  683. }
  684.  
  685. public client_disconnect(id)
  686. {
  687. remove_task(id+TASK_SHOW_INFORMATION);
  688. remove_task(id+TASK_SHOW_ADVERTISEMENT);
  689. remove_task(id+TASK_SET_FAST);
  690. remove_task(id+TASK_RAISE);
  691. remove_task(id+TASK_TRAINING_SANITARY);
  692.  
  693. ZapiszDane(id);
  694. UsunPrzedmiot(id);
  695. }
  696.  
  697. public RozbrajaBomb(id)
  698. if(class_player[id])
  699. disarming = id;
  700.  
  701. public BombaPodlozona()
  702. {
  703. new Players[32], playerCount, id;
  704. get_players(Players, playerCount, "aeh", "TERRORIST");
  705.  
  706. if(get_playersnum() > 1)
  707. {
  708. experience_player[podkladajacy] += experience_for_bomb;
  709. for (new i=0; i<playerCount; i++)
  710. {
  711. id = Players[i];
  712. if(!class_player[id])
  713. continue;
  714.  
  715. if(id != podkladajacy)
  716. {
  717. experience_player[id] += experience_for_murder;
  718. client_print(id, print_chat, "[COD:MW] Recieved **%i** EXP for bomb planting.", experience_for_murder);
  719. }
  720. else
  721. {
  722. client_print(id, print_chat, "[COD:MW] Recieved **%i** EXP for bomb planting.", experience_for_bomb);
  723. }
  724. SprawdzLevel(id);
  725. }
  726. }
  727. }
  728.  
  729. public BombaRozbrojona()
  730. {
  731. new Players[32], playerCount, id;
  732. get_players(Players, playerCount, "aeh", "CT");
  733.  
  734. experience_player[disarming] += experience_for_bomb;
  735. for (new i=0; i<playerCount; i++)
  736. {
  737. id = Players[i];
  738. if(!class_player[id])
  739. continue;
  740. if(id != disarming)
  741. {
  742. experience_player[id]+= experience_for_murder;
  743. client_print(id, print_chat, "[COD:MW] Recieved **%i** EXP for defusing the bomb.", experience_for_murder);
  744. }
  745. else
  746. client_print(id, print_chat, "[COD:MW] Recieved **%i** EXP for defusing the bomb.",experience_for_bomb);
  747. SprawdzLevel(id);
  748. }
  749. }
  750.  
  751. public DescriptionKlasy(id)
  752. {
  753. new menu = menu_create("Select Class:", "DescriptionKlasy_Handle");
  754. for(new i=1; i<sizeof names_klas; i++)
  755. menu_additem(menu, names_klas[i]);
  756. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  757. menu_setprop(menu, MPROP_BACKNAME, "Previous Page");
  758. menu_setprop(menu, MPROP_NEXTNAME, "Next Page");
  759. menu_display(id, menu);
  760.  
  761. client_cmd(id, "spk MW/select");
  762. }
  763.  
  764. public DescriptionKlasy_Handle(id, menu, item)
  765. {
  766. client_cmd(id, "spk MW/select");
  767.  
  768. if(item == MENU_EXIT)
  769. {
  770. menu_destroy(menu);
  771. return PLUGIN_CONTINUE;
  772. }
  773. client_print(id, print_chat, "[COD:MW] %s: %s", names_klas[item+1], descriptions_klas[item+1]);
  774. menu_display(id, menu);
  775.  
  776. return PLUGIN_CONTINUE;
  777. }
  778.  
  779. public WybierzKlase(id)
  780. {
  781. new menu = menu_create("Select Class:", "WybierzKlase_Handle");
  782. new class[50];
  783. for(new i=1; i<sizeof names_klas; i++)
  784. {
  785. WczytajDane(id, i);
  786. format(class, 49, "%s \yLevel: %i", names_klas[i], level_player[id]);
  787. menu_additem(menu, class);
  788. }
  789.  
  790. WczytajDane(id, class_player[id]);
  791.  
  792. menu_setprop(menu, MPROP_EXITNAME, "Exit");
  793. menu_setprop(menu, MPROP_BACKNAME, "Previous Page");
  794. menu_setprop(menu, MPROP_NEXTNAME, "Next Page");
  795. menu_display(id, menu);
  796.  
  797. client_cmd(id, "spk MW/select");
  798. #if defined BOT
  799. if(is_user_bot2(id))
  800. WybierzKlase_Handle(id, menu, random(sizeof names_klas-1));
  801. #endif
  802. }
  803.  
  804. public WybierzKlase_Handle(id, menu, item)
  805. {
  806. client_cmd(id, "spk MW/select");
  807.  
  808. if(item == MENU_EXIT)
  809. {
  810. menu_destroy(menu);
  811. return PLUGIN_CONTINUE;
  812. }
  813.  
  814. item++;
  815.  
  816. if(item == class_player[id])
  817. return PLUGIN_CONTINUE;
  818.  
  819. if(class_player[id])
  820. {
  821. nowa_class_player[id] = item;
  822. client_print(id, print_chat, "[COD:MW] Class will change next round.");
  823. }
  824. else
  825. {
  826. class_player[id] = item;
  827. WczytajDane(id, class_player[id]);
  828. Odrodzenie(id);
  829. }
  830. return PLUGIN_CONTINUE;
  831. }
  832.  
  833. public PrzydzielPunkty(id)
  834. {
  835. new inteligencja[65];
  836. new zdrowie[60];
  837. new wytrzymalosc[60];
  838. new kondycja[60];
  839. new tytul[25];
  840. format(inteligencja, 64, "Intelligence: \r%i \y(Increases Items Damage)", inteligencja_player[id]);
  841. format(zdrowie, 59, "Life: \r%i \y(Increases Health)", zdrowie_player[id]);
  842. format(wytrzymalosc, 59, "Strength: \r%i \y(Reduces Damage on you)", wytrzymalosc_player[id]);
  843. format(kondycja, 59, "Condition: \r%i \y(Increases Speed)", kondycja_player[id]);
  844. format(tytul, 24, "Assign Points(%i):", punkty_player[id]);
  845. new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
  846. menu_additem(menu, inteligencja);
  847. menu_additem(menu, zdrowie);
  848. menu_additem(menu, wytrzymalosc);
  849. menu_additem(menu, kondycja);
  850. menu_display(id, menu);
  851. #if defined BOT
  852. if(is_user_bot2(id))
  853. PrzydzielPunkty_Handler(id, menu, random(4));
  854. #endif
  855. }
  856.  
  857. public PrzydzielPunkty_Handler(id, menu, item)
  858. {
  859. client_cmd(id, "spk MW/select");
  860.  
  861. if(item == MENU_EXIT)
  862. {
  863. menu_destroy(menu);
  864. return PLUGIN_CONTINUE;
  865. }
  866.  
  867. switch(item)
  868. {
  869. case 0:
  870. {
  871. if(inteligencja_player[id]<100)
  872. inteligencja_player[id]++;
  873. else
  874. client_print(id, print_chat, "[COD:MW] Maximum Intelligence Level");
  875.  
  876. }
  877. case 1:
  878. {
  879. if(zdrowie_player[id]<100)
  880. zdrowie_player[id]++;
  881. else
  882. client_print(id, print_chat, "[COD:MW] Maximum Strength Level");
  883. }
  884. case 2:
  885. {
  886. if(wytrzymalosc_player[id]<100)
  887. wytrzymalosc_player[id]++;
  888. else
  889. client_print(id, print_chat, "[COD:MW] Maximum Dexterity Level");
  890.  
  891. }
  892. case 3:
  893. {
  894. if(kondycja_player[id]<100)
  895. kondycja_player[id]++;
  896. else
  897. client_print(id, print_chat, "[COD:MW] Maximum Agility Level");
  898. }
  899. }
  900.  
  901. punkty_player[id]--;
  902.  
  903. if(punkty_player[id]>0)
  904. PrzydzielPunkty(id);
  905.  
  906. return PLUGIN_CONTINUE;
  907. }
  908.  
  909. public ResetujPunkty(id)
  910. {
  911. punkty_player[id] = level_player[id]*2-2;
  912. inteligencja_player[id] = 0;
  913. zdrowie_player[id] = 0;
  914. kondycja_player[id] = 0;
  915. wytrzymalosc_player[id] = 0;
  916. }
  917.  
  918. public KomendaResetujPunkty(id)
  919. {
  920. client_print(id, print_chat, "[COD:MW] Skills will be reset next round.");
  921. client_cmd(id, "spk MW/select");
  922. gracz_resetuje[id] = true;
  923. }
  924.  
  925. public TrainingSanitary(id)
  926. {
  927. id -= TASK_TRAINING_SANITARY;
  928. if(information_item_player[id][0] != 16)
  929. return PLUGIN_CONTINUE;
  930. set_task(3.0, "TrainingSanitary", id+TASK_TRAINING_SANITARY);
  931. if(!is_user_alive(id))
  932. return PLUGIN_CONTINUE;
  933. new health = get_user_health(id);
  934. new new_health = (health+10<maksymalne_zdrowie_player[id])?health+10:maksymalne_zdrowie_player[id];
  935. set_user_health(id, new_health);
  936. return PLUGIN_CONTINUE;
  937. }
  938.  
  939. public StworzApteczke(id)
  940. {
  941. if (!ilosc_apteczek_player[id])
  942. {
  943. client_print(id, print_center, "You only get 2 kits per round!");
  944. return PLUGIN_CONTINUE;
  945. }
  946.  
  947. if(inteligencja_player[id] < 1)
  948. client_print(id, print_center, "To strengthen the First Aid Kit, upgrade Intelligence!");
  949.  
  950. ilosc_apteczek_player[id]--;
  951.  
  952. new Float:origin[3];
  953. entity_get_vector(id, EV_VEC_origin, origin);
  954.  
  955. new ent = create_entity("info_target");
  956. entity_set_string(ent, EV_SZ_classname, "FirstAidKit");
  957. entity_set_edict(ent, EV_ENT_owner, id);
  958. entity_set_int(ent, EV_INT_solid, SOLID_NOT);
  959. entity_set_vector(ent, EV_VEC_origin, origin);
  960. entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1);
  961.  
  962.  
  963. entity_set_model(ent, "models/w_medkit.mdl");
  964. set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) ;
  965. drop_to_floor(ent);
  966.  
  967. entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
  968.  
  969. return PLUGIN_CONTINUE;
  970. }
  971.  
  972. public FirstAirKitThink(ent)
  973. {
  974. new id = entity_get_edict(ent, EV_ENT_owner);
  975. new totem_dist = 300;
  976. new totem_heal = 5+floatround(inteligencja_player[id]*0.5);
  977. if (entity_get_edict(ent, EV_ENT_euser2) == 1)
  978. {
  979. new Float:forigin[3], origin[3];
  980. entity_get_vector(ent, EV_VEC_origin, forigin);
  981. FVecIVec(forigin,origin);
  982.  
  983. new entlist[33];
  984. new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist, 32,forigin);
  985.  
  986. for (new i=0; i < numfound; i++)
  987. {
  988. new pid = entlist[i];
  989.  
  990. if (get_user_team(pid) != get_user_team(id))
  991. continue;
  992.  
  993. new zdrowie = get_user_health(pid);
  994. new nowe_zdrowie = (zdrowie+totem_heal<maksymalne_zdrowie_player[pid])?zdrowie+totem_heal:maksymalne_zdrowie_player[pid];
  995. if (is_user_alive(pid)) set_user_health(pid, nowe_zdrowie);
  996. }
  997.  
  998. entity_set_edict(ent, EV_ENT_euser2, 0);
  999. entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5);
  1000.  
  1001. return PLUGIN_CONTINUE;
  1002. }
  1003.  
  1004. if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id))
  1005. {
  1006. remove_entity(ent);
  1007. return PLUGIN_CONTINUE;
  1008. }
  1009.  
  1010. if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time())
  1011. set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) ;
  1012.  
  1013. new Float:forigin[3], origin[3];
  1014. entity_get_vector(ent, EV_VEC_origin, forigin);
  1015. FVecIVec(forigin,origin);
  1016.  
  1017. //Find people near and give them health
  1018. message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
  1019. write_byte( TE_BEAMCYLINDER );
  1020. write_coord( origin[0] );
  1021. write_coord( origin[1] );
  1022. write_coord( origin[2] );
  1023. write_coord( origin[0] );
  1024. write_coord( origin[1] + totem_dist );
  1025. write_coord( origin[2] + totem_dist );
  1026. write_short( sprite_white );
  1027. write_byte( 0 ); // startframe
  1028. write_byte( 0 ); // framerate
  1029. write_byte( 10 ); // life
  1030. write_byte( 10 ); // width
  1031. write_byte( 255 ); // noise
  1032. write_byte( 255 ); // r, g, b
  1033. write_byte( 100 );// r, g, b
  1034. write_byte( 100 ); // r, g, b
  1035. write_byte( 128 ); // brightness
  1036. write_byte( 5 ); // speed
  1037. message_end();
  1038.  
  1039. entity_set_edict(ent, EV_ENT_euser2 ,1);
  1040. entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5);
  1041.  
  1042.  
  1043. return PLUGIN_CONTINUE;
  1044.  
  1045. }
  1046.  
  1047. public StworzRakiete(id)
  1048. {
  1049. if (!ilosc_rakiet_player[id])
  1050. {
  1051. client_print(id, print_center, "You have used all your rockets!");
  1052. return PLUGIN_CONTINUE;
  1053. }
  1054.  
  1055. if(poprzednia_rakieta_player[id] + 2.0 > get_gametime())
  1056. {
  1057. client_print(id, print_center, "You can use the rocket every 2 seconds!");
  1058. return PLUGIN_CONTINUE;
  1059. }
  1060.  
  1061. if (is_user_alive(id))
  1062. {
  1063. if(inteligencja_player[id] < 1)
  1064. client_print(id, print_center, "To strengthen the Rockets, upgrade Intelligence!");
  1065.  
  1066. poprzednia_rakieta_player[id] = get_gametime();
  1067. ilosc_rakiet_player[id]--;
  1068.  
  1069. new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
  1070.  
  1071. entity_get_vector(id, EV_VEC_v_angle, vAngle);
  1072. entity_get_vector(id, EV_VEC_origin , Origin);
  1073.  
  1074. new Ent = create_entity("info_target");
  1075.  
  1076. entity_set_string(Ent, EV_SZ_classname, "Rocket");
  1077. entity_set_model(Ent, "models/rpgrocket.mdl");
  1078.  
  1079. vAngle[0] *= -1.0;
  1080.  
  1081. entity_set_origin(Ent, Origin);
  1082. entity_set_vector(Ent, EV_VEC_angles, vAngle);
  1083.  
  1084. entity_set_int(Ent, EV_INT_effects, 2);
  1085. entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
  1086. entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
  1087. entity_set_edict(Ent, EV_ENT_owner, id);
  1088.  
  1089. VelocityByAim(id, 1000 , Velocity);
  1090. entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
  1091. }
  1092. return PLUGIN_CONTINUE;
  1093. }
  1094.  
  1095. public PolozDynamit(id)
  1096. {
  1097. if(!ilosc_dynamitow_player[id])
  1098. {
  1099. client_print(id, print_center, "You have already used your dynamite!");
  1100. return PLUGIN_CONTINUE;
  1101. }
  1102.  
  1103. if(inteligencja_player[id] < 1)
  1104. client_print(id, print_center, "To strengthen your dynamite, upgrade your intelligence!");
  1105.  
  1106. ilosc_dynamitow_player[id]--;
  1107. new Float:fOrigin[3], iOrigin[3];
  1108. entity_get_vector( id, EV_VEC_origin, fOrigin);
  1109. iOrigin[0] = floatround(fOrigin[0]);
  1110. iOrigin[1] = floatround(fOrigin[1]);
  1111. iOrigin[2] = floatround(fOrigin[2]);
  1112.  
  1113. message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
  1114. write_byte(TE_EXPLOSION);
  1115. write_coord(iOrigin[0]);
  1116. write_coord(iOrigin[1]);
  1117. write_coord(iOrigin[2]);
  1118. write_short(sprite_blast);
  1119. write_byte(32);
  1120. write_byte(20);
  1121. write_byte(0);
  1122. message_end();
  1123.  
  1124. message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
  1125. write_byte( TE_BEAMCYLINDER );
  1126. write_coord( iOrigin[0] );
  1127. write_coord( iOrigin[1] );
  1128. write_coord( iOrigin[2] );
  1129. write_coord( iOrigin[0] );
  1130. write_coord( iOrigin[1] + 300 );
  1131. write_coord( iOrigin[2] + 300 );
  1132. write_short( sprite_white );
  1133. write_byte( 0 ); // startframe
  1134. write_byte( 0 ); // framerate
  1135. write_byte( 10 ); // life
  1136. write_byte( 10 ); // width
  1137. write_byte( 255 ); // noise
  1138. write_byte( 255 ); // r, g, b
  1139. write_byte( 100 );// r, g, b
  1140. write_byte( 100 ); // r, g, b
  1141. write_byte( 128 ); // brightness
  1142. write_byte( 8 ); // speed
  1143. message_end();
  1144.  
  1145. new entlist[33];
  1146. new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);
  1147.  
  1148. for (new i=0; i < numfound; i++)
  1149. {
  1150. new pid = entlist[i];
  1151.  
  1152. if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid) || information_item_player[pid][0] == 24)
  1153. continue;
  1154. ExecuteHam(Ham_TakeDamage, pid, 0, id, 90.0+float(inteligencja_player[id]) , 1);
  1155. }
  1156. return PLUGIN_CONTINUE;
  1157. }
  1158.  
  1159. public PostawMine(id)
  1160. {
  1161. if (!ilosc_min_player[id])
  1162. {
  1163. client_print(id, print_center, "You have used all your mines!");
  1164. return PLUGIN_CONTINUE;
  1165. }
  1166.  
  1167. if(inteligencja_player[id] < 1)
  1168. client_print(id, print_center, "To strengthen your mines, upgrade your intelligence!");
  1169.  
  1170. ilosc_min_player[id]--;
  1171.  
  1172. new Float:origin[3];
  1173. entity_get_vector(id, EV_VEC_origin, origin);
  1174.  
  1175. new ent = create_entity("info_target");
  1176. entity_set_string(ent ,EV_SZ_classname, "Mine");
  1177. entity_set_edict(ent ,EV_ENT_owner, id);
  1178. entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
  1179. entity_set_origin(ent, origin);
  1180. entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
  1181.  
  1182. entity_set_model(ent, "models/mine.mdl");
  1183. entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
  1184.  
  1185. drop_to_floor(ent);
  1186.  
  1187. entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) ;
  1188.  
  1189. set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,20) ;
  1190.  
  1191.  
  1192. return PLUGIN_CONTINUE;
  1193. }
  1194.  
  1195. public DotykMiny(ent, id)
  1196. {
  1197. new attacker = entity_get_edict(ent, EV_ENT_owner);
  1198. if (get_user_team(attacker) != get_user_team(id))
  1199. {
  1200. new Float:fOrigin[3], iOrigin[3];
  1201. entity_get_vector( ent, EV_VEC_origin, fOrigin);
  1202. iOrigin[0] = floatround(fOrigin[0]);
  1203. iOrigin[1] = floatround(fOrigin[1]);
  1204. iOrigin[2] = floatround(fOrigin[2]);
  1205.  
  1206. message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
  1207. write_byte(TE_EXPLOSION);
  1208. write_coord(iOrigin[0]);
  1209. write_coord(iOrigin[1]);
  1210. write_coord(iOrigin[2]);
  1211. write_short(sprite_blast);
  1212. write_byte(32); // scale
  1213. write_byte(20); // framerate
  1214. write_byte(0);// flags
  1215. message_end();
  1216. new entlist[33];
  1217. new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);
  1218.  
  1219. for (new i=0; i < numfound; i++)
  1220. {
  1221. new pid = entlist[i];
  1222.  
  1223. if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || information_item_player[pid][0] == 24 || class_player[id] == Protector)
  1224. continue;
  1225.  
  1226. ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencja_player[attacker]) , 1);
  1227. }
  1228. remove_entity(ent);
  1229. }
  1230. }
  1231.  
  1232. public DotykRakiety(ent)
  1233. {
  1234. if ( !is_valid_ent(ent))
  1235. return;
  1236.  
  1237. new attacker = entity_get_edict(ent, EV_ENT_owner);
  1238.  
  1239. new Float:fOrigin[3], iOrigin[3];
  1240. entity_get_vector( ent, EV_VEC_origin, fOrigin);
  1241. iOrigin[0] = floatround(fOrigin[0]);
  1242. iOrigin[1] = floatround(fOrigin[1]);
  1243. iOrigin[2] = floatround(fOrigin[2]);
  1244.  
  1245. message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
  1246. write_byte(TE_EXPLOSION);
  1247. write_coord(iOrigin[0]);
  1248. write_coord(iOrigin[1]);
  1249. write_coord(iOrigin[2]);
  1250. write_short(sprite_blast);
  1251. write_byte(32); // scale
  1252. write_byte(20); // framerate
  1253. write_byte(0);// flags
  1254. message_end();
  1255.  
  1256. new entlist[33];
  1257. new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);
  1258.  
  1259. for (new i=0; i < numfound; i++)
  1260. {
  1261. new pid = entlist[i];
  1262.  
  1263. if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || information_item_player[pid][0] == 24)
  1264. continue;
  1265. ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 55.0+float(inteligencja_player[attacker]) , 1);
  1266. }
  1267. remove_entity(ent);
  1268. }
  1269.  
  1270. public CurWeapon(id)
  1271. {
  1272. if(freezetime || !class_player[id])
  1273. return PLUGIN_CONTINUE;
  1274.  
  1275. new weapon = read_data(2);
  1276.  
  1277. SetFast(id);
  1278.  
  1279. if(weapon == CSW_C4)
  1280. podkladajacy = id;
  1281. return PLUGIN_CONTINUE;
  1282. }
  1283.  
  1284. public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
  1285. {
  1286. if(equal(szSound, "common/wpn_denyselect.wav"))
  1287. {
  1288. UzyjItem(id);
  1289. return FMRES_SUPERCEDE;
  1290. }
  1291.  
  1292. return FMRES_IGNORED;
  1293. }
  1294.  
  1295. public UzyjItem(id)
  1296. {
  1297. if(information_item_player[id][0] == 19 && information_item_player[id][1]>0)
  1298. {
  1299. set_user_health(id, maksymalne_zdrowie_player[id]);
  1300. information_item_player[id][1]--;
  1301. }
  1302.  
  1303. if(ilosc_apteczek_player[id]>0)
  1304. StworzApteczke(id);
  1305. if(ilosc_rakiet_player[id]>0)
  1306. StworzRakiete(id);
  1307. if(ilosc_min_player[id]>0)
  1308. PostawMine(id);
  1309. if(ilosc_dynamitow_player[id]>0)
  1310. PolozDynamit(id);
  1311.  
  1312. return PLUGIN_HANDLED;
  1313. }
  1314.  
  1315. public ZapiszDane(id)
  1316. {
  1317. new vaultkey[64],vaultdata[256];
  1318. format(vaultkey,63,"%s-%i-cod", g_szAuthID[id], class_player[id]);
  1319. format(vaultdata,255,"%i#%i#%i#%i#%i#%i", experience_player[id], level_player[id], inteligencja_player[id], zdrowie_player[id], wytrzymalosc_player[id], kondycja_player[id]);
  1320. nvault_set(g_vault,vaultkey,vaultdata);
  1321. }
  1322.  
  1323. public WczytajDane(id, class)
  1324. {
  1325. new vaultkey[64],vaultdata[256];
  1326. format(vaultkey,63,"%s-%i-cod", g_szAuthID[id], class);
  1327. format(vaultdata,255,"%i#%i#%i#%i#%i#%i", experience_player[id], level_player[id], inteligencja_player[id], zdrowie_player[id], wytrzymalosc_player[id], kondycja_player[id]);
  1328. nvault_get(g_vault,vaultkey,vaultdata,255);
  1329.  
  1330. replace_all(vaultdata, 255, "#", " ");
  1331.  
  1332. new experienceplayer[32], levelplayer[32], inteligencjaplayer[32], silaplayer[32], zrecznoscplayer[32], zwinnoscplayer[32];
  1333.  
  1334. parse(vaultdata, experienceplayer, 31, levelplayer, 31, inteligencjaplayer, 31, silaplayer, 31, zrecznoscplayer, 31, zwinnoscplayer, 31);
  1335.  
  1336. experience_player[id] = str_to_num(experienceplayer);
  1337. level_player[id] = str_to_num(levelplayer)>0?str_to_num(levelplayer):1;
  1338. inteligencja_player[id] = str_to_num(inteligencjaplayer);
  1339. zdrowie_player[id] = str_to_num(silaplayer);
  1340. wytrzymalosc_player[id] = str_to_num(zrecznoscplayer);
  1341. kondycja_player[id] = str_to_num(zwinnoscplayer);
  1342. punkty_player[id] = (level_player[id]-1)*2-inteligencja_player[id]-zdrowie_player[id]-wytrzymalosc_player[id]-kondycja_player[id];
  1343. }
  1344.  
  1345. public WyrzucPrzedmiot(id)
  1346. {
  1347. if(information_item_player[id][0])
  1348. {
  1349. client_print(id, print_chat, "[COD:MW] Dropped %s.", names_objects[information_item_player[id][0]]);
  1350. UsunPrzedmiot(id);
  1351. }
  1352. else
  1353. client_print(id, print_chat, "[COD:MW] You have no item to drop.", names_objects[information_item_player[id][0]]);
  1354. }
  1355.  
  1356. public UsunPrzedmiot(id)
  1357. {
  1358. information_item_player[id][0] = 0;
  1359. information_item_player[id][1] = 0;
  1360. if(is_user_alive(id))
  1361. set_user_footsteps(id, 0);
  1362. set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255);
  1363. ZmienUbranie(id, 1);
  1364. }
  1365.  
  1366. public DajPrzedmiot(id, przedmiot)
  1367. {
  1368. UsunPrzedmiot(id);
  1369. information_item_player[id][0] = przedmiot;
  1370. client_print(id, print_chat, "[COD:MW] Recieved a %s.", names_objects[information_item_player[id][0]]);
  1371.  
  1372. switch(przedmiot)
  1373. {
  1374. case 1:
  1375. {
  1376. set_user_footsteps(id, 1);
  1377. }
  1378. case 2:
  1379. {
  1380. information_item_player[id][1] = random_num(3,6);
  1381. }
  1382. case 3:
  1383. {
  1384. information_item_player[id][1] = random_num(6, 11);
  1385. }
  1386. case 5:
  1387. {
  1388. information_item_player[id][1] = random_num(6, 9);
  1389. }
  1390. case 6:
  1391. {
  1392. information_item_player[id][1] = random_num(100, 150);
  1393. set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 40);
  1394. }
  1395. case 7:
  1396. {
  1397. information_item_player[id][1] = random_num(2, 4);
  1398. }
  1399. case 8:
  1400. {
  1401. if(class_player[id] == Commando)
  1402. DajPrzedmiot(id, random_num(1, sizeof names_objects-1));
  1403. }
  1404. case 9:
  1405. {
  1406. information_item_player[id][1] = random_num(1, 3);
  1407. ZmienUbranie(id, 0);
  1408. give_item(id, "weapon_hegrenade");
  1409. }
  1410. case 10:
  1411. {
  1412. information_item_player[id][1] = random_num(4, 98);
  1413. give_item(id, "weapon_hegrenade");
  1414. }
  1415. case 12:
  1416. {
  1417. information_item_player[id][1] = random_num(1, 99);
  1418. }
  1419. case 13:
  1420. {
  1421. give_item(id, "weapon_awp");
  1422. }
  1423. case 15:
  1424. {
  1425. if(class_player[id] == Rambo)
  1426. DajPrzedmiot(id, random_num(1, sizeof names_objects-1));
  1427. }
  1428. case 16:
  1429. {
  1430. set_task(5.0, "TrainingSanitary", id+TASK_TRAINING_SANITARY);
  1431. }
  1432. case 19:
  1433. {
  1434. information_item_player[id][1] = 1;
  1435. }
  1436. case 26:
  1437. {
  1438. information_item_player[id][1] = random_num(3, 6);
  1439. }
  1440. case 27:
  1441. {
  1442. information_item_player[id][1] = 3;
  1443. }
  1444. }
  1445. }
  1446.  
  1447. public DescriptionItem(id)
  1448. {
  1449. new description_item[128];
  1450. new losowa_wartosc[3];
  1451. num_to_str(information_item_player[id][1], losowa_wartosc, 2);
  1452. format(description_item, 127, descriptions_objects[information_item_player[id][0]]);
  1453. replace_all(description_item, 127, "LW", losowa_wartosc);
  1454.  
  1455. client_print(id, print_chat, "Item: %s.", names_objects[information_item_player[id][0]]);
  1456. client_print(id, print_chat, "Description: %s.", description_item);
  1457. }
  1458.  
  1459. public Raise(id)
  1460. {
  1461. id-=TASK_RAISE;
  1462. ExecuteHamB(Ham_CS_RoundRespawn, id);
  1463. }
  1464.  
  1465. public SprawdzLevel(id)
  1466. {
  1467. if(level_player[id] < 201)
  1468. {
  1469. while(experience_player[id] >= experience_level[level_player[id]])
  1470. {
  1471. level_player[id]++;
  1472. set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
  1473. ShowSyncHudMsg(id, SyncHudObj3, "Congratulations you have gained a level!");
  1474. client_cmd(id, "spk MW/levelup");
  1475. }
  1476.  
  1477. punkty_player[id] = (level_player[id]-1)*2-inteligencja_player[id]-zdrowie_player[id]-wytrzymalosc_player[id]-kondycja_player[id];
  1478. }
  1479. ZapiszDane(id);
  1480. }
  1481.  
  1482. public ShowInformation(id)
  1483. {
  1484. id -= TASK_SHOW_INFORMATION;
  1485.  
  1486. set_task(0.1, "ShowInformation", id+TASK_SHOW_INFORMATION);
  1487.  
  1488. if(!is_user_alive(id))
  1489. {
  1490. new target = entity_get_int(id, EV_INT_iuser2);
  1491.  
  1492. if(target == 0)
  1493. return PLUGIN_CONTINUE;
  1494.  
  1495. set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
  1496. ShowSyncHudMsg(id, SyncHudObj, "Class : %s^nExp : %i / %i^nLevel : %i^nItem : %s", names_klas[class_player[target]], experience_player[target], experience_level[level_player[target]], level_player[target], names_objects[information_item_player[target][0]]);
  1497.  
  1498. return PLUGIN_CONTINUE;
  1499. }
  1500. set_hudmessage(255, 0, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
  1501. ShowSyncHudMsg(id, SyncHudObj, "[Class : %s]^n[Exp : %i / %i]^n[Level : %i]^n[Item : %s]", names_klas[class_player[id]], experience_player[id], experience_level[level_player[id]], level_player[id], names_objects[information_item_player[id][0]]);
  1502. return PLUGIN_CONTINUE;
  1503. }
  1504.  
  1505. public ShowAdvertisement(id)
  1506. {
  1507. id-=TASK_SHOW_ADVERTISEMENT;
  1508. client_print(id, print_chat, "[COD:MW] Welcome to the Call of Duty Mod.");
  1509. }
  1510.  
  1511. public SetFast(id)
  1512. {
  1513. id -= id>32? TASK_SET_FAST: 0;
  1514.  
  1515. if(class_player[id])
  1516. set_user_maxspeed(id, fast_player[id]);
  1517. }
  1518.  
  1519. public ZmienUbranie(id,reset)
  1520. {
  1521. if (id<1 || id>32 || !is_user_connected(id))
  1522. return PLUGIN_CONTINUE;
  1523.  
  1524. if (reset)
  1525. cs_reset_user_model(id);
  1526. else
  1527. {
  1528. new num = random_num(0,3);
  1529. switch(get_user_team(id))
  1530. {
  1531. case 1: cs_set_user_model(id, Clothing_CT[num]);
  1532. case 2:cs_set_user_model(id, Clothing_Terro[num]);
  1533. }
  1534. }
  1535.  
  1536. return PLUGIN_CONTINUE;
  1537. }
  1538.  
  1539. public Pomoc()
  1540. {
  1541. switch(random(3))
  1542. {
  1543. case 0: client_print(0, print_chat, "[COD:MW] Type /help for help menu");
  1544. case 1: client_print(0, print_chat, "[COD:MW] Type /binds for bind menu");
  1545. case 2: client_print(0, print_chat, "[COD:MW] Excessive spawn killing will result in punishment");
  1546. }
  1547. set_task(60.0, "Pomoc");
  1548. }
  1549.  
  1550. public cmd_setlvl(id, level, cid)
  1551. {
  1552. if(!cmd_access(id,level,cid,3))
  1553. return PLUGIN_HANDLED;
  1554. new arg1[33];
  1555. new arg2[6];
  1556. read_argv(1, arg1, 32);
  1557. read_argv(2, arg2, 5);
  1558. new player = cmd_target(id, arg1);
  1559. new value = str_to_num(arg2)-1;
  1560.  
  1561. experience_player[player] = experience_level[value];
  1562. level_player[player] = 0;
  1563. SprawdzLevel(player);
  1564. return PLUGIN_HANDLED;
  1565. }
  1566.  
  1567. public CommandBlock()
  1568. return PLUGIN_HANDLED;
  1569.  
  1570. stock bool:UTIL_In_FOV(id,target)
  1571. {
  1572. if (Find_Angle(id,target,9999.9) > 0.0)
  1573. return true;
  1574.  
  1575. return false;
  1576. }
  1577. #if defined BOT
  1578. public is_user_bot2(id)
  1579. {
  1580. new ping, loss
  1581. get_user_ping(id, ping, loss)
  1582. if(ping > 0 && loss > 0)
  1583. return false
  1584. return true
  1585. }
  1586. #endif
  1587.  
  1588. stock Float:Find_Angle(Core,Target,Float:dist)
  1589. {
  1590. new Float:vec2LOS[2];
  1591. new Float:flDot;
  1592. new Float:CoreOrigin[3];
  1593. new Float:TargetOrigin[3];
  1594. new Float:CoreAngles[3];
  1595.  
  1596. pev(Core,pev_origin,CoreOrigin);
  1597. pev(Target,pev_origin,TargetOrigin);
  1598.  
  1599. if (get_distance_f(CoreOrigin,TargetOrigin) > dist)
  1600. return 0.0;
  1601.  
  1602. pev(Core,pev_angles, CoreAngles);
  1603.  
  1604. for ( new i = 0; i < 2; i++ )
  1605. vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i];
  1606.  
  1607. new Float:veclength = Vec2DLength(vec2LOS);
  1608.  
  1609. //Normalize V2LOS
  1610. if (veclength <= 0.0)
  1611. {
  1612. vec2LOS[0] = 0.0;
  1613. vec2LOS[1] = 0.0;
  1614. }
  1615. else
  1616. {
  1617. new Float:flLen = 1.0 / veclength;
  1618. vec2LOS[0] = vec2LOS[0]*flLen;
  1619. vec2LOS[1] = vec2LOS[1]*flLen;
  1620. }
  1621.  
  1622. //Do a makevector to make v_forward right
  1623. engfunc(EngFunc_MakeVectors,CoreAngles);
  1624.  
  1625. new Float:v_forward[3];
  1626. new Float:v_forward2D[2];
  1627. get_global_vector(GL_v_forward, v_forward);
  1628.  
  1629. v_forward2D[0] = v_forward[0];
  1630. v_forward2D[1] = v_forward[1];
  1631.  
  1632. flDot = vec2LOS[0]*v_forward2D[0]+vec2LOS[1]*v_forward2D[1];
  1633.  
  1634. if ( flDot > 0.5 )
  1635. {
  1636. return flDot;
  1637. }
  1638.  
  1639. return 0.0;
  1640. }
  1641.  
  1642. stock Float:Vec2DLength( Float:Vec[2] )
  1643. {
  1644. return floatsqroot(Vec[0]*Vec[0] + Vec[1]*Vec[1] );
  1645. }
  1646.  
  1647. stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
  1648. {
  1649. message_begin( MSG_ONE, g_msg_screenfade,{0,0,0},id );
  1650. write_short( duration ); // Duration of fadeout
  1651. write_short( holdtime ); // Hold time of color
  1652. write_short( fadetype ); // Fade type
  1653. write_byte ( red ); // Red
  1654. write_byte ( green ); // Green
  1655. write_byte ( blue ); // Blue
  1656. write_byte ( alpha ); // Alpha
  1657. message_end();
  1658. }
  1659.  
  1660. stock set_user_clip(id, ammo)
  1661. {
  1662. new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);
  1663. get_weaponname(weapon, weaponname, 31);
  1664. while ((weaponid = find_ent_by_class(weaponid, weaponname)) != 0)
  1665. if(entity_get_edict(weaponid, EV_ENT_owner) == id)
  1666. {
  1667. set_pdata_int(weaponid, 51, ammo, 4);
  1668. return weaponid;
  1669. }
  1670. return 0;
  1671. }
  1672. public userhelp(id)
  1673. {
  1674. //create info/help.txt in your mod folder and put your info there as you add in motd
  1675. show_motd(id, "help.txt", "Help Motd")
  1676. }
  1677. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  1678. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
  1679. */
  1680.  
Advertisement
Add Comment
Please, Sign In to add comment