Advertisement
iFenomenal

BAZA FURIEN PADRINO

Mar 21st, 2020
534
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 29.78 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <fakemeta_util>
  6. #include <hamsandwich>
  7. #include <fun>
  8.  
  9. #define PLUGIN "Baza furien "
  10. #define VERSION "2.1"
  11. #define AUTHOR "ma-ta"
  12.  
  13. #define DMG_HEGRENADE (1<<24)
  14.  
  15. #define FURIEN_GRAVITY 0.4
  16. #define FURIEN_SPEED 850.0
  17. #define TEAM_FURIEN 1
  18. #define TEAM_ANTIFURIEN 2
  19.  
  20. #define TASKID_CANPLANT 10001
  21. #define TASKID_C4COUNTDOWN 453
  22.  
  23. #if cellbits == 32
  24. #define OFFSET_BZ 235
  25. #else
  26. #define OFFSET_BZ 268
  27. #endif
  28.  
  29. //Shop
  30. new SuperKnifeModel_V[] = "models/v_padrino.mdl"
  31. new bool: HaveSuperKnife[33]
  32.  
  33. //Settings
  34. new bool:MakeVisible[33], Float:Wallorigin[33][3]
  35.  
  36. //Parachute
  37. #define PARACHUTE_CLASS "Parachute"
  38. new ParaENT[33];
  39.  
  40. new Menu;
  41. new cvar_gamedescription, furienspawnhp, antifurienspawnhp, removebuyzone, superknife_damage_multiplier, cvar_autojoin_class, cvar_autojoin_team, cvar_aim_info,
  42. MSGID_SayText, MSGID_StatusIcon, MSGID_TextMsg, MSGID_SendAudio, MSGID_ShowMenu, MSGID_VGUIMenu, MSGID_Health,
  43. bool:CanPlant, C4_CountDownDelay;
  44.  
  45.  
  46. public plugin_cfg() {
  47. server_cmd("amx_cvar mp_playerid 2")
  48. server_cmd("amx_cvar sv_maxspeed 999")
  49. server_cmd("amx_cvar sv_restart 5")
  50. }
  51.  
  52.  
  53. //===========================================================================================//
  54. //===============================[Weapons Settings]=========================================//
  55. //=========================================================================================//
  56. new bool:HavePrimaryWeapon[33], bool:HaveSecondaryWeapon[33], PrimaryWeapon[33], SecondaryWeapon[33];
  57.  
  58. //---|| Primary
  59. #define M4A1_KEY 100
  60. #define AK47_KEY 101
  61. #define MP5_KEY 102
  62. #define XM1014_KEY 103
  63.  
  64. //---|| Secondary
  65. #define USP_KEY 107
  66. #define DEAGLE_KEY 108
  67. #define ELITE_KEY 109
  68.  
  69. public plugin_init() {
  70. register_plugin(PLUGIN, VERSION, AUTHOR)
  71.  
  72. cvar_gamedescription = register_cvar("furien_gamename", "Furien Classic")
  73. antifurienspawnhp = register_cvar("antifurien_spawnhp", "100")
  74. furienspawnhp = register_cvar("furien_spawnhp", "100")
  75. superknife_damage_multiplier = register_cvar("superknife_damage_multiplier", "2.0")
  76. cvar_autojoin_team = register_cvar("furien_team", "5")
  77. cvar_autojoin_class = register_cvar("furien_class", "5")
  78. cvar_aim_info = register_cvar("furien_enable_aiminfo", "1")
  79. MSGID_SayText = get_user_msgid("SayText")
  80. MSGID_StatusIcon = get_user_msgid("StatusIcon")
  81. MSGID_TextMsg = get_user_msgid("TextMsg")
  82. MSGID_SendAudio = get_user_msgid("SendAudio")
  83. MSGID_ShowMenu = get_user_msgid("ShowMenu")
  84. MSGID_VGUIMenu = get_user_msgid("VGUIMenu")
  85. register_clcmd("say shop", "CmdShopMenu")
  86. register_clcmd("shop", "CmdShopMenu")
  87. register_clcmd("say /shop", "CmdShopMenu")
  88. register_clcmd("say_team shop", "CmdShopMenu")
  89. register_clcmd("say_team /shop", "CmdShopMenu")
  90. //register_clcmd("say weapons", "CmdWeaponsMenu")
  91. //register_clcmd("say /weapons", "CmdWeaponsMenu")
  92. register_clcmd("jointeam", "CMD_BlockJoinTeam")
  93. register_clcmd("jointeam 1", "CMD_BlockJoinTeam")
  94. register_clcmd("jointeam 2", "CMD_BlockJoinTeam")
  95. register_clcmd("jointeam 3", "CMD_BlockJoinTeam")
  96. register_clcmd("chooseteam", "CMD_BlockChooseTeam")
  97. register_clcmd("say /rs", "CmdResetScore")
  98. register_clcmd("say_team /rs", "CmdResetScore")
  99. register_clcmd("say /resetscore", "CmdResetScore")
  100. register_clcmd("say_team /resetscore", "CmdResetScore")
  101.  
  102. RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1)
  103. RegisterHam(Ham_Touch, "weaponbox", "HAM_Touch_Weapon")
  104. RegisterHam(Ham_Touch, "armoury_entity", "HAM_Touch_Weapon")
  105. RegisterHam(Ham_Touch, "weapon_shield", "HAM_Touch_Weapon")
  106. RegisterHam(Ham_TakeDamage, "player", "SuperKnife_TakeDamage")
  107. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_c4", "C4_PrimaryAttack");
  108.  
  109. register_forward(FM_PlayerPreThink, "Player_PreThink");
  110. register_forward(FM_AddToFullPack, "FWD_AddToFullPack", 1);
  111. register_forward(FM_PlayerPreThink, "FWD_ParachutePreThink");
  112. register_forward(FM_GetGameDescription, "FWD_GameDescription")
  113.  
  114. register_event("CurWeapon", "EVENT_CurWeapon", "be", "1=1")
  115. register_event("DeathMsg", "EVENT_Death", "a");
  116. register_event("SendAudio", "EVENT_SwitchTeam", "a", "1=0", "2=%!MRAD_ctwin");
  117. register_event("HLTV", "EVENT_NewRound", "a", "1=0", "2=0");
  118. register_event("TextMsg", "EVENT_FireINTheHole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
  119. register_event("TextMsg", "EVENT_FireINTheHole", "b", "3&#Game_radio", "5&#Fire_in_the_hole")
  120.  
  121.  
  122. register_message(MSGID_StatusIcon, "MSG_StatusIcon");
  123. register_message(MSGID_TextMsg, "MSG_TextMessage");
  124. register_message(MSGID_ShowMenu, "MSG_ShowMenu");
  125. register_message(MSGID_VGUIMenu, "MSG_VGUIMenu");
  126. register_message(MSGID_SendAudio, "MSG_SendAudio");
  127. register_message(MSGID_Health, "MSG_Health")
  128. }
  129.  
  130.  
  131. public plugin_precache() {
  132. removebuyzone = register_cvar("furien_removebuyzone", "1")
  133.  
  134. if(get_pcvar_num(removebuyzone)) {
  135.  
  136. remove_entity_name("info_map_parameters");
  137. remove_entity_name("func_buyzone");
  138.  
  139. new Entity = create_entity("info_map_parameters");
  140.  
  141. DispatchKeyValue(Entity, "buying", "3");
  142. DispatchSpawn(Entity);
  143. }
  144. precache_model(SuperKnifeModel_V)
  145. }
  146.  
  147. public client_connect(id) {
  148. client_cmd(id, "cl_forwardspeed 999.0")
  149. client_cmd(id, "cl_sidespeed 999.0")
  150. client_cmd(id, "cl_backspeed 999.0")
  151. }
  152.  
  153. public client_putinserver(id) {
  154. client_cmd(id, "cl_forwardspeed 999.0")
  155. client_cmd(id, "cl_sidespeed 999.0")
  156. client_cmd(id, "cl_backspeed 999.0")
  157. PrimaryWeapon[id] = 0
  158. SecondaryWeapon[id] = 0
  159. }
  160.  
  161.  
  162. public Ham_Spawn_Post(id) {
  163. if(is_user_connected(id) && is_user_alive(id)) {
  164. strip_user_weapons(id)
  165. HavePrimaryWeapon[id] = false
  166. HaveSecondaryWeapon[id] = false
  167. switch(get_user_team(id)) {
  168. case TEAM_FURIEN: {
  169. fm_give_item(id, "weapon_hegrenade")
  170. fm_give_item(id, "weapon_knife")
  171. set_user_footsteps(id, 1)
  172. fm_set_user_health(id, get_pcvar_num(furienspawnhp))
  173. }
  174. case TEAM_ANTIFURIEN: {
  175. fm_give_item(id, "weapon_hegrenade")
  176. fm_give_item(id, "weapon_knife")
  177. set_user_footsteps(id, 0)
  178. fm_set_user_health(id, get_pcvar_num(antifurienspawnhp))
  179. HaveSuperKnife[id] = false;
  180. Equipment(id)
  181. }
  182. }
  183. }
  184. }
  185.  
  186. public EVENT_NewRound() {
  187. CanPlant = false;
  188. new Float:FloatTime = get_cvar_num("mp_freezetime") + (get_cvar_num("mp_roundtime") * 60) - 60.0
  189. set_task(FloatTime, "TASK_CanPlant", TASKID_CANPLANT)
  190. remove_task(TASKID_C4COUNTDOWN)
  191. }
  192.  
  193. public EVENT_FireINTheHole()
  194. return PLUGIN_HANDLED
  195.  
  196. public HAM_Touch_Weapon(ent, id) {
  197. if(is_user_alive(id) && get_user_team(id) == TEAM_FURIEN && !(get_pdata_cbase(ent, 39, 4) > 0))
  198. return HAM_SUPERCEDE
  199.  
  200. return HAM_IGNORED
  201. }
  202.  
  203. public SuperKnife_TakeDamage(Victim, Inflictor, Attacker, Float:Damage, DamageType) {
  204. if(is_user_connected(Attacker) && is_user_alive(Attacker) && is_user_connected(Victim)) {
  205. if(get_user_weapon(Attacker) == CSW_KNIFE) {
  206. if(HaveSuperKnife[Attacker])
  207. SetHamParamFloat(4, Damage * get_pcvar_float(superknife_damage_multiplier))
  208. }
  209. }
  210. return HAM_IGNORED
  211. }
  212.  
  213. ///////////////////////////////////////////////////////////////////////////////////////////////
  214.  
  215. public C4_PrimaryAttack(Ent) {
  216. if(!CanPlant)
  217. return HAM_SUPERCEDE
  218.  
  219. return HAM_IGNORED
  220. }
  221.  
  222. public CmdResetScore(id) {
  223. if(get_user_frags(id) == 0 && get_user_deaths(id) == 0)
  224. ColorChat(id, "!gScorul tau este deja!t 0-0!g !")
  225. else {
  226. for(new i = 0; i < 2; i++) {
  227. cs_set_user_deaths(id, 0);
  228. set_user_frags(id, 0);
  229. }
  230. ColorChat(id, "!gTi-ai resetat scorul cu succes !")
  231. }
  232. }
  233.  
  234. public CmdShopMenu(id) {
  235. if(!is_user_alive(id))
  236. return PLUGIN_HANDLED
  237. switch(get_user_team(id)) {
  238. case TEAM_FURIEN: CmdFurienShop(id)
  239. case TEAM_ANTIFURIEN: CmdAntiFurienShop(id)
  240. }
  241. return PLUGIN_HANDLED
  242. }
  243.  
  244. public CmdFurienShop(id) {
  245. if(is_user_alive(id) && get_user_team(id) == TEAM_FURIEN) {
  246. Menu = menu_create("Furien Shop", "CmdFurienHandler")
  247.  
  248. new SuperKnife[256];
  249. formatex(SuperKnife, sizeof(SuperKnife)-1, "Super knife - 10000$")
  250. menu_additem(Menu, SuperKnife, "1", 0)
  251.  
  252. new Health[256];
  253. formatex(Health, sizeof(Health)-1, "50 HP - 3000$")
  254. menu_additem(Menu, Health, "2", 0)
  255.  
  256. new Armor[256];
  257. formatex(Armor, sizeof(Armor)-1, "50 AP + Helmet - 500$")
  258. menu_additem(Menu, Armor, "3", 0)
  259.  
  260. new Grenade[256];
  261. formatex(Grenade, sizeof(Grenade)-1, "He grenade - 4000$")
  262. menu_additem(Menu, Grenade, "4", 0)
  263.  
  264. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  265. menu_display(id, Menu, 0);
  266. }
  267. }
  268.  
  269. public CmdAntiFurienShop(id) {
  270. if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
  271. Menu = menu_create("Anti-Furien Shop", "CmdAntiFurienHandler")
  272.  
  273. new Defuse[256];
  274. formatex(Defuse, sizeof(Defuse)-1, "Defuse kit - 500$")
  275. menu_additem(Menu, Defuse, "1", 0)
  276.  
  277. new Health[256];
  278. formatex(Health, sizeof(Health)-1, "50 HP - 3000$")
  279. menu_additem(Menu, Health, "2", 0)
  280.  
  281. new Armor[256];
  282. formatex(Armor, sizeof(Armor)-1, "50 AP + Helmet - 500$")
  283. menu_additem(Menu, Armor, "3", 0)
  284.  
  285. new Grenade[256];
  286. formatex(Grenade, sizeof(Grenade)-1, "He grenade - 4000$")
  287. menu_additem(Menu, Grenade, "4", 0)
  288.  
  289. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  290. menu_display(id, Menu, 0);
  291. }
  292. }
  293.  
  294. public CmdFurienHandler(id, menu, item) {
  295. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 1) {
  296. menu_destroy(menu);
  297. return PLUGIN_HANDLED;
  298. }
  299. new Data[6], Name[64];
  300. new Access, CallBack;
  301. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  302. new Key = str_to_num(Data);
  303. switch(Key) {
  304. case 1: {
  305. if(HaveSuperKnife[id])
  306. client_print(id, print_center, "You already have SuperKnife!")
  307. else {
  308. new Money = cs_get_user_money(id) - 10000
  309. if(Money < 0)
  310. client_print(id, print_center, "You have insufficient founds!")
  311. else {
  312. HaveSuperKnife[id] = true;
  313. EVENT_CurWeapon(id)
  314. cs_set_user_money(id, Money)
  315. }
  316. }
  317. }
  318. case 2: {
  319. if(get_user_health(id) >= 250)
  320. client_print(id, print_center, "Ai deja 250Hp Praduitorule!")
  321. else {
  322. new Money = cs_get_user_money(id) - 3000
  323. if(Money < 0)
  324. client_print(id, print_center, "Nu ai banii necesari.!")
  325. else {
  326. if(get_user_health(id) + 50 > 250)
  327. fm_set_user_health(id, 250)
  328. else
  329. fm_set_user_health(id, get_user_health(id) + 50)
  330. cs_set_user_money(id, Money)
  331. }
  332. }
  333. }
  334. case 3: {
  335. if(get_user_armor(id) >= 250)
  336. client_print(id, print_center, "Ai deja 250Hp Praduitorule!")
  337. else {
  338. new Money = cs_get_user_money(id) - 500
  339. if(Money < 0)
  340. client_print(id, print_center, "Nu ai banii necesari!")
  341. else {
  342. if(get_user_armor(id) + 50 > 250)
  343. fm_set_user_armor(id, 250)
  344. else
  345. fm_set_user_armor(id, get_user_armor(id) + 50)
  346. cs_set_user_money(id, Money)
  347. }
  348. }
  349. }
  350. case 4: {
  351. if(user_has_weapon(id, CSW_HEGRENADE))
  352. client_print(id, print_center, "Aveti deja HeGrenade.!")
  353. else {
  354. new Money = cs_get_user_money(id) - 4000
  355. if(Money < 0)
  356. client_print(id, print_center, "Nu ai banii necesari!")
  357. else {
  358. fm_give_item(id, "weapon_hegrenade")
  359. cs_set_user_money(id, Money)
  360. }
  361. }
  362. }
  363. }
  364. menu_destroy(menu)
  365. return PLUGIN_HANDLED
  366. }
  367.  
  368. public CmdAntiFurienHandler(id, menu, item) {
  369. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  370. menu_destroy(menu);
  371. return PLUGIN_HANDLED;
  372. }
  373. new Data[6], Name[64];
  374. new Access, CallBack;
  375. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  376. new Key = str_to_num(Data);
  377. switch(Key) {
  378. case 1: {
  379. if(cs_get_user_defuse(id))
  380. client_print(id, print_center, "Ai deja DefuseKit!")
  381. else {
  382. new Money = cs_get_user_money(id) - 500
  383. if(Money < 0)
  384. client_print(id, print_center, "Nu ai banii necesari!")
  385. else {
  386. cs_set_user_defuse(id, 1)
  387. cs_set_user_money(id, Money)
  388. }
  389. }
  390. }
  391. case 2: {
  392. if(get_user_health(id) >= 250)
  393. client_print(id, print_center, "Ai deja 250HP Praduitorule!")
  394. else {
  395. new Money = cs_get_user_money(id) - 3000
  396. if(Money < 0)
  397. client_print(id, print_center, "Nu ai banii necesari!")
  398. else {
  399. if(get_user_health(id) + 50 > 250)
  400. fm_set_user_health(id, 250)
  401. else
  402. fm_set_user_health(id, get_user_health(id) + 50)
  403. cs_set_user_money(id, Money)
  404. }
  405. }
  406. }
  407. case 3: {
  408. if(get_user_armor(id) >= 250)
  409. client_print(id, print_center, "Ai deja 250AP Praduitorule!")
  410. else {
  411. new Money = cs_get_user_money(id) - 500
  412. if(Money < 0)
  413. client_print(id, print_center, "Nu ai banii necesari!")
  414. else {
  415. if(get_user_armor(id) + 50 > 250)
  416. fm_set_user_armor(id, 250)
  417. else
  418. fm_set_user_armor(id, get_user_armor(id) + 50)
  419. cs_set_user_money(id, Money)
  420. }
  421. }
  422. }
  423. case 4: {
  424. if(user_has_weapon(id, CSW_HEGRENADE))
  425. client_print(id, print_center, "You already have HE GRENADE!")
  426. else {
  427. new Money = cs_get_user_money(id) - 4000
  428. if(Money < 0)
  429. client_print(id, print_center, "Nu ai banii necesari!")
  430. else {
  431. fm_give_item(id, "weapon_hegrenade")
  432. cs_set_user_money(id, Money)
  433. }
  434. }
  435. }
  436. }
  437. menu_destroy(menu)
  438. return PLUGIN_HANDLED
  439. }
  440.  
  441. //=========================================================================//
  442. //=======================[Weapons Settings]===============================//
  443. //=======================================================================//
  444.  
  445. public Equipment(id) {
  446. if(is_user_alive(id) && get_user_team(id) == 2) {
  447. Menu = menu_create("[FURIEN] Weapons Menu", "EquipmentCmd");
  448. menu_additem(Menu, "New Weapons", "1", 0);
  449. if(PrimaryWeapon[id] && SecondaryWeapon[id])
  450. menu_additem(Menu, "Previous Setup", "2", 0);
  451. else
  452. menu_additem(Menu, "Previous Setup", "2", 0);
  453. menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
  454. menu_display(id, Menu, 0);
  455. }
  456. }
  457.  
  458. public EquipmentCmd(id, menu, item) {
  459. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  460. menu_destroy(menu);
  461. return PLUGIN_HANDLED;
  462. }
  463. new Data[6], Name[64];
  464. new Access, CallBack;
  465. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  466. new Key = str_to_num(Data);
  467. switch(Key) {
  468. case 1: {
  469. if(!HavePrimaryWeapon[id])
  470. Primary(id)
  471. else if(!HaveSecondaryWeapon[id])
  472. Secondary(id)
  473. }
  474. case 2: {
  475. if(PrimaryWeapon[id] && SecondaryWeapon[id])
  476. GiveLastWeapons(id)
  477. else Equipment(id)
  478. }
  479. default: return PLUGIN_HANDLED;
  480. }
  481. menu_destroy(menu);
  482. return PLUGIN_HANDLED;
  483. }
  484.  
  485. public Primary(id) {
  486. if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
  487. Menu = menu_create("Anti-Furien Weapons^nPrimary:", "CmdWeaponsHandler")
  488.  
  489. menu_additem(Menu, "M4A1", "1", 0)
  490. menu_additem(Menu, "AK47", "2", 0)
  491. menu_additem(Menu, "MP5 Navy", "3", 0)
  492. menu_additem(Menu, "XM1014", "4", 0)
  493.  
  494. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  495. menu_display(id, Menu, 0);
  496. }
  497. }
  498.  
  499. public CmdWeaponsHandler(id, menu, item) {
  500. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  501. menu_destroy(menu);
  502. return PLUGIN_HANDLED;
  503. }
  504. new Data[6], Name[64];
  505. new Access, CallBack;
  506. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  507. new Key = str_to_num(Data);
  508. switch(Key) {
  509. case 1: {
  510. fm_give_item(id, "weapon_m4a1")
  511. cs_set_user_bpammo(id, CSW_M4A1, 254)
  512. PrimaryWeapon[id] = M4A1_KEY
  513. HavePrimaryWeapon[id] = true;
  514. Secondary(id)
  515. }
  516. case 2: {
  517. fm_give_item(id, "weapon_ak47")
  518. cs_set_user_bpammo(id, CSW_AK47, 254)
  519. PrimaryWeapon[id] = AK47_KEY
  520. HavePrimaryWeapon[id] = true;
  521. Secondary(id)
  522. }
  523. case 3: {
  524. fm_give_item(id, "weapon_mp5navy")
  525. cs_set_user_bpammo(id, CSW_MP5NAVY, 254)
  526. PrimaryWeapon[id] = MP5_KEY
  527. HavePrimaryWeapon[id] = true;
  528. Secondary(id)
  529. }
  530. case 4: {
  531. fm_give_item(id, "weapon_xm1014")
  532. cs_set_user_bpammo(id, CSW_XM1014, 254)
  533. PrimaryWeapon[id] = XM1014_KEY
  534. HavePrimaryWeapon[id] = true;
  535. Secondary(id)
  536. }
  537. }
  538. menu_destroy(menu)
  539. return PLUGIN_HANDLED
  540. }
  541.  
  542. public Secondary(id) {
  543. if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
  544. Menu = menu_create("Anti-Furien Weapons^nSecondary:", "CmdSecondaryHandler")
  545.  
  546. menu_additem(Menu, "USP", "1", 0)
  547. menu_additem(Menu, "Deagle", "2", 0)
  548. menu_additem(Menu, "Elite", "3", 0)
  549.  
  550. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  551. menu_display(id, Menu, 0);
  552. }
  553. }
  554.  
  555. public CmdSecondaryHandler(id, menu, item) {
  556. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  557. menu_destroy(menu);
  558. return PLUGIN_HANDLED;
  559. }
  560. new Data[6], Name[64];
  561. new Access, CallBack;
  562. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  563. new Key = str_to_num(Data);
  564. switch(Key) {
  565. case 1: {
  566. fm_give_item(id, "weapon_usp")
  567. cs_set_user_bpammo(id, CSW_USP, 256)
  568. SecondaryWeapon[id] = USP_KEY
  569. HaveSecondaryWeapon[id] = true;
  570. }
  571. case 2: {
  572. fm_give_item(id, "weapon_deagle")
  573. cs_set_user_bpammo(id, CSW_DEAGLE, 256)
  574. SecondaryWeapon[id] = DEAGLE_KEY
  575. HaveSecondaryWeapon[id] = true;
  576. }
  577. case 3: {
  578. fm_give_item(id, "weapon_elite")
  579. cs_set_user_bpammo(id, CSW_ELITE, 256)
  580. SecondaryWeapon[id] = ELITE_KEY
  581. HaveSecondaryWeapon[id] = true;
  582. }
  583. }
  584. menu_destroy(menu)
  585. return PLUGIN_HANDLED
  586. }
  587.  
  588. public GiveLastWeapons(id) {
  589. if(!HavePrimaryWeapon[id]) {
  590. switch(PrimaryWeapon[id]) {
  591. case M4A1_KEY: {
  592. fm_give_item(id, "weapon_m4a1")
  593. cs_set_user_bpammo(id, CSW_M4A1, 256)
  594. HavePrimaryWeapon[id] = true;
  595. }
  596. case AK47_KEY: {
  597. fm_give_item(id, "weapon_ak47")
  598. cs_set_user_bpammo(id, CSW_AK47, 256)
  599. HavePrimaryWeapon[id] = true;
  600. }
  601. case MP5_KEY: {
  602. fm_give_item(id, "weapon_mp5navy")
  603. cs_set_user_bpammo(id, CSW_MP5NAVY, 256)
  604. HavePrimaryWeapon[id] = true;
  605. }
  606. case XM1014_KEY: {
  607. fm_give_item(id, "weapon_xm1014")
  608. cs_set_user_bpammo(id, CSW_XM1014, 256)
  609. HavePrimaryWeapon[id] = true;
  610. }
  611. }
  612. }
  613. if(!HaveSecondaryWeapon[id]) {
  614. switch(SecondaryWeapon[id]) {
  615. case USP_KEY: {
  616. fm_give_item(id, "weapon_usp")
  617. cs_set_user_bpammo(id, CSW_USP, 256)
  618. HaveSecondaryWeapon[id] = true;
  619. }
  620. case DEAGLE_KEY: {
  621. fm_give_item(id, "weapon_deagle")
  622. cs_set_user_bpammo(id, CSW_DEAGLE, 256)
  623. HaveSecondaryWeapon[id] = true;
  624. }
  625. case ELITE_KEY: {
  626. fm_give_item(id, "weapon_elite")
  627. cs_set_user_bpammo(id, CSW_ELITE, 256)
  628. HaveSecondaryWeapon[id] = true;
  629. }
  630. }
  631. }
  632. }
  633. public CMD_BlockJoinTeam(id) {
  634. console_print(id, "*** Nu ai voie sa foloseti JoinTeam ! ***")
  635. return 1;
  636. }
  637.  
  638. public CMD_BlockChooseTeam(id) {
  639. console_print(id, "*** Nu ai voie sa foloseti ChooseTeam ! ***")
  640. return 1;
  641. }
  642.  
  643.  
  644.  
  645. /////////////////////////////////////////////////////////////////////////
  646.  
  647. public EVENT_CurWeapon(id) {
  648. if(is_user_connected(id)) {
  649. if(get_user_weapon(id) == CSW_KNIFE) {
  650. if(HaveSuperKnife[id])
  651. set_pev(id, pev_viewmodel2, SuperKnifeModel_V)
  652. }
  653. new PlayerHealth;
  654. PlayerHealth = get_user_health(id)
  655. if(PlayerHealth == 256)
  656. fm_set_user_health(id, 255)
  657. }
  658.  
  659. }
  660.  
  661. public EVENT_Death() {
  662. static Attacker, Victim;
  663. Attacker = read_data(1)
  664. Victim = read_data(2)
  665. HaveSuperKnife[Victim] = false;
  666. if(Victim == Attacker)
  667. return 1;
  668. }
  669.  
  670. public MSG_StatusIcon(msg_id, msg_dest, id) {
  671. static Attrib
  672. Attrib = get_msg_arg_int(2)
  673.  
  674. if(Attrib == (1<<1))
  675. set_msg_arg_int(2, ARG_BYTE, 0)
  676.  
  677. new Icon[8];
  678. get_msg_arg_string(2, Icon, 7);
  679. if(get_pcvar_num(removebuyzone)) {
  680. static const BuyZone[] = "buyzone";
  681.  
  682. if(equal(Icon, BuyZone)) {
  683. set_pdata_int(id, OFFSET_BZ, get_pdata_int(id, OFFSET_BZ, 5) & ~(1 << 0), 5);
  684.  
  685. return PLUGIN_HANDLED;
  686. }
  687. }
  688. return PLUGIN_CONTINUE;
  689. }
  690.  
  691. public MSG_TextMessage() {
  692. static TextMsg[22];
  693. get_msg_arg_string(2, TextMsg, charsmax(TextMsg))
  694. if(equal(TextMsg, "#Terrorists_Win")) {
  695. client_print(0, print_center, "The Furiens have won this round!")
  696. return PLUGIN_HANDLED;
  697. }
  698. else if(equal(TextMsg, "#CTs_Win")) {
  699. client_print(0, print_center, "The Anti-Furiens have won this round!")
  700. return PLUGIN_HANDLED;
  701. }
  702. else if(equal(TextMsg, "#Bomb_Defused")) {
  703. client_print(0, print_center, "The Anti-Furiens have won this round!")
  704. return PLUGIN_HANDLED;
  705. }
  706. else if(equal(TextMsg, "#Target_Bombed")) {
  707. client_print(0, print_center, "The Furiens have won this round!")
  708. return PLUGIN_HANDLED;
  709. }
  710. else if(equal(TextMsg, "#Target_Saved")) {
  711. client_print(0, print_center, "The Anti-Furiens have won this round!")
  712. return PLUGIN_HANDLED;
  713. }
  714. else if(equal(TextMsg, "#Fire_in_the_hole"))
  715. return PLUGIN_HANDLED
  716. else if(equal(TextMsg, "#C4_Plant_At_Bomb_Spot")) {
  717. if(!CanPlant)
  718. return PLUGIN_HANDLED
  719. }
  720. return PLUGIN_CONTINUE;
  721. }
  722.  
  723. public MSG_ShowMenu(msgid, dest, id) {
  724. if(!Should_AutoJoin(id))
  725. return PLUGIN_CONTINUE
  726.  
  727. static team_select[] = "#Team_Select"
  728. static menu_text_code[sizeof team_select]
  729. get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
  730. if(!equal(menu_text_code, team_select))
  731. return PLUGIN_CONTINUE
  732.  
  733. JoinTeam_Task(id, msgid)
  734.  
  735. return PLUGIN_HANDLED
  736. }
  737.  
  738. public MSG_VGUIMenu(msgid, dest, id) {
  739. if(get_msg_arg_int(1) != 2 || !Should_AutoJoin(id))
  740. return PLUGIN_CONTINUE
  741.  
  742. JoinTeam_Task(id, msgid)
  743.  
  744. return PLUGIN_HANDLED
  745. }
  746.  
  747. public MSG_SendAudio() {
  748. static Sound[17]
  749. get_msg_arg_string(2, Sound, sizeof Sound - 1)
  750.  
  751. if(equal(Sound, "terwin") || equal(Sound, "ctwin") || equal(Sound, "rounddraw") || equal(Sound, "bombpl") || equal(Sound, "bombdef"))
  752. return PLUGIN_HANDLED;
  753.  
  754. return PLUGIN_CONTINUE;
  755. }
  756.  
  757. public MSG_Health(msgid, dest, id) {
  758. static Health;
  759. Health = get_msg_arg_int(1)
  760. if(Health > 255)
  761. set_msg_arg_int(1, ARG_BYTE, 255);
  762. else if(Health == 256)
  763. set_msg_arg_int(1, ARG_BYTE, get_user_health(id) + 10)
  764. }
  765.  
  766.  
  767.  
  768. bool:Should_AutoJoin(id) {
  769. return(get_pcvar_num(cvar_autojoin_team) && !get_user_team(id) && !task_exists(id))
  770. }
  771.  
  772. JoinTeam_Task(id, menu_msgid) {
  773. static param_menu_msgid[2]
  774. param_menu_msgid[0] = menu_msgid
  775.  
  776. set_task(0.1, "Force_JoinTeam", id, param_menu_msgid, sizeof param_menu_msgid)
  777. }
  778.  
  779. public Force_JoinTeam(menu_msgid[], id) {
  780. if(get_user_team(id))
  781. return
  782.  
  783. static team[2], class[2]
  784. get_pcvar_string(cvar_autojoin_team, team, sizeof team - 1)
  785. get_pcvar_string(cvar_autojoin_class, class, sizeof class - 1)
  786. Force_Team_Join(id, menu_msgid[0], team, class)
  787. }
  788.  
  789. stock Force_Team_Join(id, menu_msgid, team[] = "5", class[] = "0") {
  790. static jointeam[] = "jointeam"
  791. if(class[0] == '0') {
  792. engclient_cmd(id, jointeam, team)
  793. return
  794. }
  795.  
  796. static msg_block, joinclass[] = "joinclass"
  797. msg_block = get_msg_block(menu_msgid)
  798. set_msg_block(menu_msgid, BLOCK_SET)
  799. engclient_cmd(id, jointeam, team)
  800. engclient_cmd(id, joinclass, class)
  801. set_msg_block(menu_msgid, msg_block)
  802. }
  803.  
  804. public bomb_planted(planter) {
  805. C4_CountDownDelay = get_cvar_num("mp_c4timer") - 1
  806. TASK_C4_CountDown();
  807. set_hudmessage(random(255), random(255), random(255), -1.0, -1.0, 1, 3.1, 3.0)
  808. show_hudmessage(0, "Furienii au plantat bomba!")
  809. }
  810.  
  811. public EVENT_SwitchTeam() {
  812. new Players[32], PlayersNum, id;
  813. get_players(Players, PlayersNum)
  814. if(PlayersNum) {
  815. for(new i; i < PlayersNum; i++) {
  816. id = Players[i]
  817. BeginDelay(id)
  818. }
  819. }
  820. }
  821.  
  822. public BeginDelay(id) {
  823. if(is_user_connected(id)) {
  824. switch(id) {
  825. case 1..7: set_task(0.1, "BeginTeamSwap", id)
  826. case 8..15: set_task(0.2, "BeginTeamSwap", id)
  827. case 16..23: set_task(0.3, "BeginTeamSwap", id)
  828. case 24..32: set_task(0.4, "BeginTeamSwap", id)
  829. }
  830. }
  831. }
  832.  
  833. public BeginTeamSwap(id) {
  834. if(is_user_connected(id)) {
  835. switch(get_user_team(id)) {
  836. case TEAM_FURIEN: cs_set_user_team(id, CS_TEAM_CT)
  837. case TEAM_ANTIFURIEN: cs_set_user_team(id, CS_TEAM_T)
  838. }
  839. }
  840. }
  841.  
  842. ///////////////////////////////////////////////////////////////////////////////////////////////
  843.  
  844. public Player_PreThink(id) {
  845. if(is_user_connected(id)) {
  846. if(get_user_team(id) == TEAM_FURIEN) {
  847. if(pev(id, pev_gravity) > FURIEN_GRAVITY && pev(id, pev_gravity) > 0.1)
  848. set_pev(id, pev_gravity, FURIEN_GRAVITY)
  849.  
  850. if(pev(id, pev_maxspeed) < FURIEN_SPEED && pev(id, pev_maxspeed) > 1.0) {
  851. set_pev(id, pev_maxspeed, FURIEN_SPEED)
  852. set_user_footsteps(id, 1)
  853. }
  854. }
  855. if(get_pcvar_num(cvar_aim_info)) {
  856. new Target, Body;
  857. get_user_aiming(id, Target, Body);
  858. if(is_user_alive(id) && is_user_connected(Target) && is_user_alive(Target)) {
  859. new TargetTeam, PlayerTeam, TargetName[32], Message[128], TargetHealth, TargetArmor, RED, GREEN, BLUE;
  860. TargetTeam = get_user_team(Target)
  861. PlayerTeam = get_user_team(id)
  862. get_user_name(Target, TargetName, 31)
  863. TargetHealth = get_user_health(Target)
  864. TargetArmor = get_user_armor(Target)
  865. if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_ANTIFURIEN) {
  866. formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
  867. RED = 20
  868. GREEN = 200
  869. BLUE = 50
  870. }
  871. else if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_FURIEN) {
  872. formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
  873. RED = 200
  874. GREEN = 20
  875. BLUE = 20
  876. }
  877. else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_ANTIFURIEN) {
  878. formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
  879. RED = 200
  880. GREEN = 20
  881. BLUE = 20
  882. }
  883. else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_FURIEN)
  884. return
  885. set_hudmessage(RED, GREEN, BLUE, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1);
  886. show_hudmessage(id, "%s", Message)
  887. }
  888. }
  889. }
  890. }
  891.  
  892. public FWD_AddToFullPack(es, e, ent, host, host_flags, player, p_set) {
  893. if(is_user_connected(ent) && is_user_connected(host) && is_user_alive(ent)) {
  894. if(is_user_alive(host) && get_user_team(ent) == 1 && get_user_team(host) == 1
  895. || !is_user_alive(host) && get_user_team(ent) == 1 && pev(host, pev_iuser2) == ent
  896. || get_user_team(ent) == 1 && pev(ent, pev_maxspeed) <= 1.0) {
  897. set_es(es, ES_RenderFx, kRenderFxNone);
  898. set_es(es, ES_RenderMode, kRenderTransTexture);
  899. set_es(es, ES_RenderAmt, 255);
  900. }
  901. else if(get_user_team(ent) == 1) {
  902. set_es(es, ES_RenderFx, kRenderFxNone);
  903. set_es(es, ES_RenderMode, kRenderTransTexture);
  904. static Float:Origin[3]
  905. pev(ent, pev_origin, Origin)
  906.  
  907. if(get_user_weapon(ent) == CSW_KNIFE && !MakeVisible[ent] && fm_get_speed(ent) <= 5 || get_user_weapon(ent) == CSW_KNIFE && !MakeVisible[ent] && Origin[0] == Wallorigin[ent][0] && Origin[1] == Wallorigin[ent][1] && Origin[2] == Wallorigin[ent][2])
  908. set_es(es, ES_RenderAmt, 0);
  909. else
  910. set_es(es, ES_RenderAmt, 255);
  911. }
  912. }
  913. }
  914.  
  915. public FWD_ParachutePreThink(id) {
  916. if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
  917. new Float:FallSpeed = -30.0;
  918. new Float:Frame;
  919.  
  920. new Button = pev(id, pev_button);
  921. new OldButton = pev(id, pev_oldbuttons);
  922. new Flags = pev(id, pev_flags);
  923.  
  924. if(ParaENT[id] > 0 &&(Flags & FL_ONGROUND)) {
  925.  
  926. if(pev(ParaENT[id],pev_sequence) != 2) {
  927. set_pev(ParaENT[id], pev_sequence, 2);
  928. set_pev(ParaENT[id], pev_gaitsequence, 1);
  929. set_pev(ParaENT[id], pev_frame, 0.0);
  930. set_pev(ParaENT[id], pev_fuser1, 0.0);
  931. set_pev(ParaENT[id], pev_animtime, 0.0);
  932. return;
  933. }
  934.  
  935. pev(ParaENT[id],pev_fuser1, Frame);
  936. Frame += 2.0;
  937. set_pev(ParaENT[id],pev_fuser1,Frame);
  938. set_pev(ParaENT[id],pev_frame,Frame);
  939.  
  940. if(Frame > 254.0) {
  941. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  942. ParaENT[id] = 0;
  943. }
  944. else {
  945. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  946. ParaENT[id] = 0;
  947. }
  948. return;
  949. }
  950.  
  951. if(Button & IN_USE) {
  952. new Float:Velocity[3];
  953. pev(id, pev_velocity, Velocity);
  954.  
  955. if(Velocity[2] < 0.0) {
  956. if(ParaENT[id] <= 0) {
  957. ParaENT[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
  958.  
  959. if(ParaENT[id] > 0) {
  960. set_pev(ParaENT[id],pev_classname, PARACHUTE_CLASS);
  961. set_pev(ParaENT[id], pev_aiment, id);
  962. set_pev(ParaENT[id], pev_owner, id);
  963. set_pev(ParaENT[id], pev_movetype, MOVETYPE_FLY);
  964. set_pev(ParaENT[id], pev_sequence, 0);
  965. set_pev(ParaENT[id], pev_gaitsequence, 1);
  966. set_pev(ParaENT[id], pev_frame, 0.0);
  967. set_pev(ParaENT[id], pev_fuser1, 0.0);
  968. }
  969. }
  970. if(ParaENT[id] > 0) {
  971. set_pev(id, pev_sequence, 3);
  972. set_pev(id, pev_gaitsequence, 1);
  973. set_pev(id, pev_frame, 1.0);
  974. set_pev(id, pev_framerate, 1.0);
  975.  
  976. Velocity[2] = (Velocity[2] + 40.0 < FallSpeed) ? Velocity[2] + 40.0 : FallSpeed;
  977. set_pev(id, pev_velocity, Velocity);
  978.  
  979. if(pev(ParaENT[id],pev_sequence) == 0) {
  980. pev(ParaENT[id],pev_fuser1, Frame);
  981. Frame += 1.0;
  982. set_pev(ParaENT[id],pev_fuser1,Frame);
  983. set_pev(ParaENT[id],pev_frame,Frame);
  984.  
  985. if(Frame > 100.0) {
  986. set_pev(ParaENT[id], pev_animtime, 0.0);
  987. set_pev(ParaENT[id], pev_framerate, 0.4);
  988. set_pev(ParaENT[id], pev_sequence, 1);
  989. set_pev(ParaENT[id], pev_gaitsequence, 1);
  990. set_pev(ParaENT[id], pev_frame, 0.0);
  991. set_pev(ParaENT[id], pev_fuser1, 0.0);
  992. }
  993. }
  994. }
  995. }
  996.  
  997. else if(ParaENT[id] > 0) {
  998. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  999. ParaENT[id] = 0;
  1000. }
  1001. }
  1002.  
  1003. else if((OldButton & IN_USE) && ParaENT[id] > 0) {
  1004. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  1005. ParaENT[id] = 0;
  1006. }
  1007. }
  1008. }
  1009.  
  1010. public FWD_GameDescription() {
  1011. static GameName[32]
  1012. get_pcvar_string(cvar_gamedescription, GameName, 31)
  1013.  
  1014. forward_return(FMV_STRING, GameName)
  1015.  
  1016. return FMRES_SUPERCEDE
  1017. }
  1018.  
  1019. public TASK_CanPlant() {
  1020. CanPlant = true;
  1021. set_hudmessage(random(255), random(255), random(255), -1.0, -1.0, 1, 3.1, 3.0)
  1022. show_hudmessage(0, "Add to fav: 89.40.104.37:27015!")
  1023. }
  1024.  
  1025. public TASK_C4_CountDown() {
  1026. new Red, Green, Blue
  1027. if(C4_CountDownDelay > 10)
  1028. Red = 0, Green = 255, Blue = 0;
  1029. else if(C4_CountDownDelay > 5)
  1030. Red = 255, Green = 200, Blue = 0;
  1031. else if(C4_CountDownDelay <= 5)
  1032. Red = 255, Green = 0, Blue = 0;
  1033.  
  1034. if(C4_CountDownDelay) {
  1035. new Message[256];
  1036. formatex(Message,sizeof(Message)-1,"----------^n| C4: %d |^n----------", C4_CountDownDelay);
  1037.  
  1038. set_hudmessage(Red, Green, Blue, -1.0, 0.78, 0, 6.0, 1.0)
  1039. show_hudmessage(0, "%s", Message)
  1040. set_task(1.0, "TASK_C4_CountDown", TASKID_C4COUNTDOWN);
  1041. C4_CountDownDelay--;
  1042. }
  1043. else if(!C4_CountDownDelay)
  1044. C4_CountDownDelay = 0;
  1045. }
  1046.  
  1047. stock ColorChat(const id, const input[], any:...) {
  1048. new count = 1, players[32];
  1049. static msg[191];
  1050. vformat(msg, 190, input, 3);
  1051.  
  1052. replace_all(msg, 190, "!g", "^4");
  1053. replace_all(msg, 190, "!y", "^1");
  1054. replace_all(msg, 190, "!t", "^3");
  1055.  
  1056. if(id) players[0] = id;
  1057. else get_players(players, count, "ch"); {
  1058. for(new i = 0; i < count; i++) {
  1059. if(is_user_connected(players[i])) {
  1060. message_begin(MSG_ONE_UNRELIABLE, MSGID_SayText, _, players[i]);
  1061. write_byte(players[i]);
  1062. write_string(msg);
  1063. message_end();
  1064. }
  1065. }
  1066. }
  1067. }
  1068. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  1069. *{ rtf1 ansi deff0{ fonttbl{ f0 fnil Tahoma;}}n viewkind4 uc1 pard lang1048 f0 fs16 n par }
  1070. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement