Advertisement
Guest User

Untitled

a guest
May 30th, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.37 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 "Furien Clasic"
  10. #define VERSION "2.0"
  11. #define AUTHOR "DaNNe."
  12.  
  13. #define FURIEN_GRAVITY 0.375
  14. #define FURIEN_SPEED 750.0
  15. #define TEAM_FURIEN 1
  16. #define TEAM_ANTIFURIEN 2
  17.  
  18.  
  19. #if cellbits == 32
  20. #define OFFSET_BZ 235
  21. #else
  22. #define OFFSET_BZ 268
  23. #endif
  24.  
  25. //Settings
  26. new bool:MakeVisible[33], Float:Wallorigin[33][3]
  27.  
  28. //Parachute
  29. #define PARACHUTE_CLASS "Parachute"
  30. new ParaENT[33];
  31.  
  32. new Menu;
  33. new cvar_gamedescription, furienspawnhp, antifurienspawnhp, removebuyzone, cvar_autojoin_class, cvar_autojoin_team, cvar_aim_info,
  34. MSGID_SayText, MSGID_StatusIcon, MSGID_TextMsg, MSGID_SendAudio, MSGID_ShowMenu, MSGID_VGUIMenu, MSGID_Health;
  35.  
  36. public plugin_cfg() {
  37. server_cmd("amx_cvar mp_playerid 2")
  38. server_cmd("amx_cvar sv_maxspeed 900")
  39. server_cmd("amx_cvar sv_restart 5")
  40. }
  41.  
  42.  
  43. //===========================================================================================//
  44. //===============================[Weapons Settings]=========================================//
  45. //=========================================================================================//
  46. new bool:HavePrimaryWeapon[33], bool:HaveSecondaryWeapon[33], PrimaryWeapon[33], SecondaryWeapon[33];
  47.  
  48. //---|| Primary
  49. #define M4A1_KEY 100
  50. #define AK47_KEY 101
  51. #define M3_KEY 102
  52. #define AUG_KEY 103
  53. #define FAMAS_KEY 104
  54. #define MP5_KEY 105
  55. #define XM1014_KEY 106
  56.  
  57. //---|| Secondary
  58. #define USP_KEY 107
  59. #define DEAGLE_KEY 108
  60. #define ELITE_KEY 109
  61. #define FIVESEVEN_KEY 110
  62.  
  63. public plugin_init() {
  64. register_plugin(PLUGIN, VERSION, AUTHOR)
  65.  
  66. cvar_gamedescription = register_cvar("furien_gamename", "KROND 2017")
  67. antifurienspawnhp = register_cvar("antifurien_spawnhp", "100")
  68. furienspawnhp = register_cvar("furien_spawnhp", "100")
  69. cvar_autojoin_team = register_cvar("furien_team", "5")
  70. cvar_autojoin_class = register_cvar("furien_class", "5")
  71. cvar_aim_info = register_cvar("furien_enable_aiminfo", "1")
  72.  
  73. MSGID_SayText = get_user_msgid("SayText")
  74. MSGID_StatusIcon = get_user_msgid("StatusIcon")
  75. MSGID_TextMsg = get_user_msgid("TextMsg")
  76. MSGID_SendAudio = get_user_msgid("SendAudio")
  77. MSGID_ShowMenu = get_user_msgid("ShowMenu")
  78. MSGID_VGUIMenu = get_user_msgid("VGUIMenu")
  79.  
  80. register_clcmd("jointeam", "CMD_BlockJoinTeam")
  81. register_clcmd("jointeam 1", "CMD_BlockJoinTeam")
  82. register_clcmd("jointeam 2", "CMD_BlockJoinTeam")
  83. register_clcmd("jointeam 3", "CMD_BlockJoinTeam")
  84. register_clcmd("chooseteam", "CMD_BlockChooseTeam")
  85. register_clcmd("say /beneficii", "CmdShowMotd")
  86. register_clcmd("say /rs", "CmdResetScore")
  87. register_clcmd("say_team /rs", "CmdResetScore")
  88. register_clcmd("say /resetscore", "CmdResetScore")
  89. register_clcmd("say_team /resetscore", "CmdResetScore")
  90.  
  91. RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1)
  92. RegisterHam(Ham_Touch, "weaponbox", "HAM_Touch_Weapon")
  93. RegisterHam(Ham_Touch, "armoury_entity", "HAM_Touch_Weapon")
  94. RegisterHam(Ham_Touch, "weapon_shield", "HAM_Touch_Weapon")
  95.  
  96. register_forward(FM_PlayerPreThink, "Player_PreThink");
  97. register_forward(FM_AddToFullPack, "FWD_AddToFullPack", 1);
  98. register_forward(FM_PlayerPreThink, "FWD_ParachutePreThink");
  99. register_forward(FM_GetGameDescription, "FWD_GameDescription")
  100.  
  101. register_event("CurWeapon", "EVENT_CurWeapon", "be", "1=1")
  102. register_event("SendAudio", "EVENT_SwitchTeam", "a", "1=0", "2=%!MRAD_ctwin");
  103. register_event("TextMsg", "EVENT_FireINTheHole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
  104. register_event("TextMsg", "EVENT_FireINTheHole", "b", "3&#Game_radio", "5&#Fire_in_the_hole")
  105.  
  106. register_message(MSGID_StatusIcon, "MSG_StatusIcon");
  107. register_message(MSGID_TextMsg, "MSG_TextMessage");
  108. register_message(MSGID_ShowMenu, "MSG_ShowMenu");
  109. register_message(MSGID_VGUIMenu, "MSG_VGUIMenu");
  110. register_message(MSGID_SendAudio, "MSG_SendAudio");
  111. register_message(MSGID_Health, "MSG_Health")
  112. }
  113.  
  114.  
  115. public plugin_precache() {
  116. removebuyzone = register_cvar("furien_removebuyzone", "1")
  117.  
  118. if(get_pcvar_num(removebuyzone)) {
  119.  
  120. remove_entity_name("info_map_parameters");
  121. remove_entity_name("func_buyzone");
  122.  
  123. new Entity = create_entity("info_map_parameters");
  124.  
  125. DispatchKeyValue(Entity, "buying", "3");
  126. DispatchSpawn(Entity);
  127. }
  128. }
  129.  
  130. public client_connect(id) {
  131. client_cmd(id, "cl_forwardspeed 999.0")
  132. client_cmd(id, "cl_sidespeed 999.0")
  133. client_cmd(id, "cl_backspeed 999.0")
  134. }
  135.  
  136. public client_putinserver(id) {
  137. client_cmd(id, "cl_forwardspeed 999.0")
  138. client_cmd(id, "cl_sidespeed 999.0")
  139. client_cmd(id, "cl_backspeed 999.0")
  140. PrimaryWeapon[id] = 0
  141. SecondaryWeapon[id] = 0
  142. }
  143.  
  144. public Ham_Spawn_Post(id) {
  145. if(is_user_connected(id) && is_user_alive(id)) {
  146. strip_user_weapons(id)
  147. HavePrimaryWeapon[id] = false
  148. HaveSecondaryWeapon[id] = false
  149. switch(get_user_team(id)) {
  150. case TEAM_FURIEN: {
  151. fm_give_item(id, "weapon_hegrenade")
  152. fm_give_item(id, "weapon_knife")
  153. set_user_footsteps(id, 1)
  154. fm_set_user_health(id, get_pcvar_num(furienspawnhp))
  155. }
  156. case TEAM_ANTIFURIEN: {
  157. fm_give_item(id, "weapon_knife")
  158. set_user_footsteps(id, 0)
  159. fm_set_user_health(id, get_pcvar_num(antifurienspawnhp))
  160. Equipment(id)
  161. }
  162. }
  163. }
  164. }
  165.  
  166. public EVENT_FireINTheHole()
  167. return PLUGIN_HANDLED
  168.  
  169. public HAM_Touch_Weapon(ent, id) {
  170. if(is_user_alive(id) && get_user_team(id) == TEAM_FURIEN && !(get_pdata_cbase(ent, 39, 4) > 0))
  171. return HAM_SUPERCEDE
  172.  
  173. return HAM_IGNORED
  174. }
  175.  
  176. ///////////////////////////////////////////////////////////////////////////////////////////////
  177.  
  178. public CmdResetScore(id) {
  179. if(get_user_frags(id) == 0 && get_user_deaths(id) == 0)
  180. ColorChat(id, "!gScorul tau este deja!t 0-0!g !")
  181. else {
  182. for(new i = 0; i < 2; i++) {
  183. cs_set_user_deaths(id, 0);
  184. set_user_frags(id, 0);
  185. }
  186. ColorChat(id, "!gTi-ai resetat scorul cu succes !")
  187. }
  188. }
  189.  
  190. //=========================================================================//
  191. //=======================[Weapons Settings]===============================//
  192. //=======================================================================//
  193.  
  194. public Equipment(id) {
  195. if(is_user_alive(id) && get_user_team(id) == 2) {
  196. Menu = menu_create("\rWeapons Menu", "EquipmentCmd");
  197. menu_additem(Menu, "\wNew Weapons", "1", 0);
  198. if(PrimaryWeapon[id] && SecondaryWeapon[id])
  199. menu_additem(Menu, "\wPrevious Setup", "2", 0);
  200. else
  201. menu_additem(Menu, "\dPrevious Setup", "2", 0);
  202. menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
  203. menu_display(id, Menu, 0);
  204. }
  205. }
  206.  
  207. public EquipmentCmd(id, menu, item) {
  208. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  209. menu_destroy(menu);
  210. return PLUGIN_HANDLED;
  211. }
  212. new Data[6], Name[64];
  213. new Access, CallBack;
  214. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  215. new Key = str_to_num(Data);
  216. switch(Key) {
  217. case 1: {
  218. if(!HavePrimaryWeapon[id])
  219. Primary(id)
  220. else if(!HaveSecondaryWeapon[id])
  221. Secondary(id)
  222. }
  223. case 2: {
  224. if(PrimaryWeapon[id] && SecondaryWeapon[id])
  225. GiveLastWeapons(id)
  226. else Equipment(id)
  227. }
  228. default: return PLUGIN_HANDLED;
  229. }
  230. menu_destroy(menu);
  231. return PLUGIN_HANDLED;
  232. }
  233.  
  234. public Primary(id) {
  235. if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
  236. Menu = menu_create("\yAnti-Furien Weapons^n\rPrimary:", "CmdWeaponsHandler")
  237.  
  238. menu_additem(Menu, "M4A1", "1", 0)
  239. menu_additem(Menu, "AK47", "2", 0)
  240. menu_additem(Menu, "M3", "3", 0)
  241. menu_additem(Menu, "Aug", "4", 0)
  242. menu_additem(Menu, "Famas", "5", 0)
  243. menu_additem(Menu, "MP5 Navy", "6", 0)
  244. menu_additem(Menu, "XM1014", "7", 0)
  245.  
  246. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  247. menu_display(id, Menu, 0);
  248. }
  249. }
  250.  
  251. public CmdWeaponsHandler(id, menu, item) {
  252. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  253. menu_destroy(menu);
  254. return PLUGIN_HANDLED;
  255. }
  256. new Data[6], Name[64];
  257. new Access, CallBack;
  258. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  259. new Key = str_to_num(Data);
  260. switch(Key) {
  261. case 1: {
  262. fm_give_item(id, "weapon_m4a1")
  263. cs_set_user_bpammo(id, CSW_M4A1, 254)
  264. PrimaryWeapon[id] = M4A1_KEY
  265. HavePrimaryWeapon[id] = true;
  266. Secondary(id)
  267. }
  268. case 2: {
  269. fm_give_item(id, "weapon_ak47")
  270. cs_set_user_bpammo(id, CSW_AK47, 254)
  271. PrimaryWeapon[id] = AK47_KEY
  272. HavePrimaryWeapon[id] = true;
  273. Secondary(id)
  274. }
  275. case 3: {
  276. fm_give_item(id, "weapon_m3")
  277. cs_set_user_bpammo(id, CSW_M3, 254)
  278. PrimaryWeapon[id] = M3_KEY
  279. HavePrimaryWeapon[id] = true;
  280. Secondary(id)
  281. }
  282. case 4: {
  283. fm_give_item(id, "weapon_aug")
  284. cs_set_user_bpammo(id, CSW_AUG, 254)
  285. PrimaryWeapon[id] = AUG_KEY
  286. HavePrimaryWeapon[id] = true;
  287. Secondary(id)
  288. }
  289. case 5: {
  290. fm_give_item(id, "weapon_famas")
  291. cs_set_user_bpammo(id, CSW_FAMAS, 254)
  292. PrimaryWeapon[id] = FAMAS_KEY
  293. HavePrimaryWeapon[id] = true;
  294. Secondary(id)
  295. }
  296. case 6: {
  297. fm_give_item(id, "weapon_mp5navy")
  298. cs_set_user_bpammo(id, CSW_MP5NAVY, 254)
  299. PrimaryWeapon[id] = MP5_KEY
  300. HavePrimaryWeapon[id] = true;
  301. Secondary(id)
  302. }
  303. case 7: {
  304. fm_give_item(id, "weapon_xm1014")
  305. cs_set_user_bpammo(id, CSW_XM1014, 254)
  306. PrimaryWeapon[id] = XM1014_KEY
  307. HavePrimaryWeapon[id] = true;
  308. Secondary(id)
  309. }
  310. }
  311. menu_destroy(menu)
  312. return PLUGIN_HANDLED
  313. }
  314.  
  315. public Secondary(id) {
  316. if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
  317. Menu = menu_create("\yAnti-Furien Weapons^n\rSecondary:", "CmdSecondaryHandler")
  318.  
  319. menu_additem(Menu, "USP", "1", 0)
  320. menu_additem(Menu, "Deagle", "2", 0)
  321. menu_additem(Menu, "Elite", "3", 0)
  322. menu_additem(Menu, "Five Seven", "4", 0)
  323.  
  324. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  325. menu_display(id, Menu, 0);
  326. }
  327. }
  328.  
  329. public CmdSecondaryHandler(id, menu, item) {
  330. if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
  331. menu_destroy(menu);
  332. return PLUGIN_HANDLED;
  333. }
  334. new Data[6], Name[64];
  335. new Access, CallBack;
  336. menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
  337. new Key = str_to_num(Data);
  338. switch(Key) {
  339. case 1: {
  340. fm_give_item(id, "weapon_usp")
  341. cs_set_user_bpammo(id, CSW_USP, 256)
  342. SecondaryWeapon[id] = USP_KEY
  343. HaveSecondaryWeapon[id] = true;
  344. }
  345. case 2: {
  346. fm_give_item(id, "weapon_deagle")
  347. cs_set_user_bpammo(id, CSW_DEAGLE, 256)
  348. SecondaryWeapon[id] = DEAGLE_KEY
  349. HaveSecondaryWeapon[id] = true;
  350. }
  351. case 3: {
  352. fm_give_item(id, "weapon_elite")
  353. cs_set_user_bpammo(id, CSW_ELITE, 256)
  354. SecondaryWeapon[id] = ELITE_KEY
  355. HaveSecondaryWeapon[id] = true;
  356. }
  357. case 4: {
  358. fm_give_item(id, "weapon_fiveseven")
  359. cs_set_user_bpammo(id, CSW_FIVESEVEN, 256)
  360. SecondaryWeapon[id] = FIVESEVEN_KEY
  361. HaveSecondaryWeapon[id] = true;
  362. }
  363. }
  364. menu_destroy(menu)
  365. return PLUGIN_HANDLED
  366. }
  367.  
  368. public GiveLastWeapons(id) {
  369. if(!HavePrimaryWeapon[id]) {
  370. switch(PrimaryWeapon[id]) {
  371. case M4A1_KEY: {
  372. fm_give_item(id, "weapon_m4a1")
  373. cs_set_user_bpammo(id, CSW_M4A1, 256)
  374. HavePrimaryWeapon[id] = true;
  375. }
  376. case AK47_KEY: {
  377. fm_give_item(id, "weapon_ak47")
  378. cs_set_user_bpammo(id, CSW_AK47, 256)
  379. HavePrimaryWeapon[id] = true;
  380. }
  381. case M3_KEY: {
  382. fm_give_item(id, "weapon_m3")
  383. cs_set_user_bpammo(id, CSW_M3, 256)
  384. HavePrimaryWeapon[id] = true;
  385. }
  386. case AUG_KEY: {
  387. fm_give_item(id, "weapon_aug")
  388. cs_set_user_bpammo(id, CSW_AUG, 256)
  389. HavePrimaryWeapon[id] = true;
  390. }
  391. case FAMAS_KEY: {
  392. fm_give_item(id, "weapon_famas")
  393. cs_set_user_bpammo(id, CSW_FAMAS, 256)
  394. HavePrimaryWeapon[id] = true;
  395. }
  396. case MP5_KEY: {
  397. fm_give_item(id, "weapon_mp5navy")
  398. cs_set_user_bpammo(id, CSW_MP5NAVY, 256)
  399. HavePrimaryWeapon[id] = true;
  400. }
  401. case XM1014_KEY: {
  402. fm_give_item(id, "weapon_xm1014")
  403. cs_set_user_bpammo(id, CSW_XM1014, 256)
  404. HavePrimaryWeapon[id] = true;
  405. }
  406. }
  407. }
  408. if(!HaveSecondaryWeapon[id]) {
  409. switch(SecondaryWeapon[id]) {
  410. case USP_KEY: {
  411. fm_give_item(id, "weapon_usp")
  412. cs_set_user_bpammo(id, CSW_USP, 256)
  413. HaveSecondaryWeapon[id] = true;
  414. }
  415. case DEAGLE_KEY: {
  416. fm_give_item(id, "weapon_deagle")
  417. cs_set_user_bpammo(id, CSW_DEAGLE, 256)
  418. HaveSecondaryWeapon[id] = true;
  419. }
  420. case ELITE_KEY: {
  421. fm_give_item(id, "weapon_elite")
  422. cs_set_user_bpammo(id, CSW_ELITE, 256)
  423. HaveSecondaryWeapon[id] = true;
  424. }
  425. case FIVESEVEN_KEY: {
  426. fm_give_item(id, "weapon_fiveseven")
  427. cs_set_user_bpammo(id, CSW_FIVESEVEN, 256)
  428. HaveSecondaryWeapon[id] = true;
  429. }
  430. }
  431. }
  432. }
  433. public CMD_BlockJoinTeam(id) {
  434. console_print(id, "*** Nu ai voie sa foloseti JoinTeam ! ***")
  435. return 1;
  436. }
  437.  
  438. public CMD_BlockChooseTeam(id) {
  439. console_print(id, "*** Nu ai voie sa foloseti ChooseTeam ! ***")
  440. return 1;
  441. }
  442.  
  443. public CmdShowMotd(id)
  444. show_motd(id, "addons/amxmodx/configs/beneficii.html")
  445.  
  446. /////////////////////////////////////////////////////////////////////////
  447.  
  448. public EVENT_CurWeapon(id) {
  449. if(is_user_connected(id)) {
  450.  
  451. new PlayerHealth;
  452. PlayerHealth = get_user_health(id)
  453. if(PlayerHealth >= 300)
  454. fm_set_user_health(id, 300);
  455. }
  456. }
  457.  
  458. public MSG_StatusIcon(msg_id, msg_dest, id) {
  459. static Attrib
  460. Attrib = get_msg_arg_int(2)
  461.  
  462. if(Attrib == (1<<1))
  463. set_msg_arg_int(2, ARG_BYTE, 0)
  464.  
  465. new Icon[8];
  466. get_msg_arg_string(2, Icon, 7);
  467. if(get_pcvar_num(removebuyzone)) {
  468. static const BuyZone[] = "buyzone";
  469.  
  470. if(equal(Icon, BuyZone)) {
  471. set_pdata_int(id, OFFSET_BZ, get_pdata_int(id, OFFSET_BZ, 5) & ~(1 << 0), 5);
  472.  
  473. return PLUGIN_HANDLED;
  474. }
  475. }
  476. return PLUGIN_CONTINUE;
  477. }
  478.  
  479. public MSG_TextMessage() {
  480. static TextMsg[22];
  481. get_msg_arg_string(2, TextMsg, charsmax(TextMsg))
  482. if(equal(TextMsg, "#Terrorists_Win")) {
  483. client_print(0, print_center, "The Furiens have won this round!")
  484. return PLUGIN_HANDLED;
  485. }
  486. else if(equal(TextMsg, "#CTs_Win")) {
  487. client_print(0, print_center, "The Anti-Furiens have won this round!")
  488. return PLUGIN_HANDLED;
  489. }
  490. else if(equal(TextMsg, "#Bomb_Defused")) {
  491. client_print(0, print_center, "The Anti-Furiens have won this round!")
  492. return PLUGIN_HANDLED;
  493. }
  494. else if(equal(TextMsg, "#Target_Bombed")) {
  495. client_print(0, print_center, "The Furiens have won this round!")
  496. return PLUGIN_HANDLED;
  497. }
  498. else if(equal(TextMsg, "#Target_Saved")) {
  499. client_print(0, print_center, "The Anti-Furiens have won this round!")
  500. return PLUGIN_HANDLED;
  501. }
  502. else if(equal(TextMsg, "#Fire_in_the_hole"))
  503. return PLUGIN_HANDLED
  504. else if(equal(TextMsg, "#C4_Plant_At_Bomb_Spot")) {
  505. return PLUGIN_HANDLED
  506. }
  507. return PLUGIN_CONTINUE;
  508. }
  509.  
  510. public MSG_ShowMenu(msgid, dest, id) {
  511. if(!Should_AutoJoin(id))
  512. return PLUGIN_CONTINUE
  513.  
  514. static team_select[] = "#Team_Select"
  515. static menu_text_code[sizeof team_select]
  516. get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
  517. if(!equal(menu_text_code, team_select))
  518. return PLUGIN_CONTINUE
  519.  
  520. JoinTeam_Task(id, msgid)
  521.  
  522. return PLUGIN_HANDLED
  523. }
  524.  
  525. public MSG_VGUIMenu(msgid, dest, id) {
  526. if(get_msg_arg_int(1) != 2 || !Should_AutoJoin(id))
  527. return PLUGIN_CONTINUE
  528.  
  529. JoinTeam_Task(id, msgid)
  530.  
  531. return PLUGIN_HANDLED
  532. }
  533.  
  534. public MSG_SendAudio() {
  535. static Sound[17]
  536. get_msg_arg_string(2, Sound, sizeof Sound - 1)
  537.  
  538. if(equal(Sound, "terwin") || equal(Sound, "ctwin") || equal(Sound, "rounddraw") || equal(Sound, "bombpl") || equal(Sound, "bombdef"))
  539. return PLUGIN_HANDLED;
  540.  
  541. return PLUGIN_CONTINUE;
  542. }
  543.  
  544. public MSG_Health(msgid, dest, id) {
  545. static Health;
  546. Health = get_msg_arg_int(1)
  547. if(Health > 255)
  548. set_msg_arg_int(1, ARG_BYTE, 255);
  549. else if(Health == 256)
  550. set_msg_arg_int(1, ARG_BYTE, get_user_health(id) + 10)
  551. }
  552. bool:Should_AutoJoin(id) {
  553. return(get_pcvar_num(cvar_autojoin_team) && !get_user_team(id) && !task_exists(id))
  554. }
  555.  
  556. JoinTeam_Task(id, menu_msgid) {
  557. static param_menu_msgid[2]
  558. param_menu_msgid[0] = menu_msgid
  559.  
  560. set_task(0.1, "Force_JoinTeam", id, param_menu_msgid, sizeof param_menu_msgid)
  561. }
  562.  
  563. public Force_JoinTeam(menu_msgid[], id) {
  564. if(get_user_team(id))
  565. return
  566.  
  567. static team[2], class[2]
  568. get_pcvar_string(cvar_autojoin_team, team, sizeof team - 1)
  569. get_pcvar_string(cvar_autojoin_class, class, sizeof class - 1)
  570. Force_Team_Join(id, menu_msgid[0], team, class)
  571. }
  572.  
  573. stock Force_Team_Join(id, menu_msgid, team[] = "5", class[] = "0") {
  574. static jointeam[] = "jointeam"
  575. if(class[0] == '0') {
  576. engclient_cmd(id, jointeam, team)
  577. return
  578. }
  579.  
  580. static msg_block, joinclass[] = "joinclass"
  581. msg_block = get_msg_block(menu_msgid)
  582. set_msg_block(menu_msgid, BLOCK_SET)
  583. engclient_cmd(id, jointeam, team)
  584. engclient_cmd(id, joinclass, class)
  585. set_msg_block(menu_msgid, msg_block)
  586. }
  587.  
  588. public EVENT_SwitchTeam() {
  589. new Players[32], PlayersNum, id;
  590. get_players(Players, PlayersNum)
  591. if(PlayersNum) {
  592. for(new i; i < PlayersNum; i++) {
  593. id = Players[i]
  594. BeginDelay(id)
  595. }
  596. }
  597. }
  598.  
  599. public BeginDelay(id) {
  600. if(is_user_connected(id)) {
  601. switch(id) {
  602. case 1..7: set_task(0.1, "BeginTeamSwap", id)
  603. case 8..15: set_task(0.2, "BeginTeamSwap", id)
  604. case 16..23: set_task(0.3, "BeginTeamSwap", id)
  605. case 24..32: set_task(0.4, "BeginTeamSwap", id)
  606. }
  607. }
  608. }
  609.  
  610. public BeginTeamSwap(id) {
  611. if(is_user_connected(id)) {
  612. switch(get_user_team(id)) {
  613. case TEAM_FURIEN: cs_set_user_team(id, CS_TEAM_CT)
  614. case TEAM_ANTIFURIEN: cs_set_user_team(id, CS_TEAM_T)
  615. }
  616. }
  617. }
  618.  
  619. ///////////////////////////////////////////////////////////////////////////////////////////////
  620.  
  621. public Player_PreThink(id) {
  622. if(is_user_connected(id)) {
  623. if(get_user_team(id) == TEAM_FURIEN) {
  624. if(pev(id, pev_gravity) > FURIEN_GRAVITY && pev(id, pev_gravity) > 0.1)
  625. set_pev(id, pev_gravity, FURIEN_GRAVITY)
  626.  
  627. if(pev(id, pev_maxspeed) < FURIEN_SPEED && pev(id, pev_maxspeed) > 1.0) {
  628. set_pev(id, pev_maxspeed, FURIEN_SPEED)
  629. set_user_footsteps(id, 1)
  630. }
  631. }
  632. if(get_pcvar_num(cvar_aim_info)) {
  633. new Target, Body;
  634. get_user_aiming(id, Target, Body);
  635. if(is_user_alive(id) && is_user_connected(Target) && is_user_alive(Target)) {
  636. new TargetTeam, PlayerTeam, TargetName[32], Message[128], TargetHealth, TargetArmor, RED, GREEN, BLUE;
  637. TargetTeam = get_user_team(Target)
  638. PlayerTeam = get_user_team(id)
  639. get_user_name(Target, TargetName, 31)
  640. TargetHealth = get_user_health(Target)
  641. TargetArmor = get_user_armor(Target)
  642. if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_ANTIFURIEN) {
  643. formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
  644. RED = 20
  645. GREEN = 200
  646. BLUE = 50
  647. }
  648. else if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_FURIEN) {
  649. formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
  650. RED = 200
  651. GREEN = 20
  652. BLUE = 20
  653. }
  654. else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_ANTIFURIEN) {
  655. formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
  656. RED = 200
  657. GREEN = 20
  658. BLUE = 20
  659. }
  660. else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_FURIEN)
  661. return
  662. set_hudmessage(RED, GREEN, BLUE, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1);
  663. show_hudmessage(id, "%s", Message)
  664. }
  665. }
  666. }
  667. }
  668.  
  669. public FWD_AddToFullPack(es, e, ent, host, host_flags, player, p_set) {
  670. if(is_user_connected(ent) && is_user_connected(host) && is_user_alive(ent)) {
  671. if(is_user_alive(host) && get_user_team(ent) == 1 && get_user_team(host) == 1
  672. || !is_user_alive(host) && get_user_team(ent) == 1 && pev(host, pev_iuser2) == ent
  673. || get_user_team(ent) == 1 && pev(ent, pev_maxspeed) <= 1.0) {
  674. set_es(es, ES_RenderFx, kRenderFxNone);
  675. set_es(es, ES_RenderMode, kRenderTransTexture);
  676. set_es(es, ES_RenderAmt, 255);
  677. }
  678. else if(get_user_team(ent) == 1) {
  679. set_es(es, ES_RenderFx, kRenderFxNone);
  680. set_es(es, ES_RenderMode, kRenderTransTexture);
  681. static Float:Origin[3]
  682. pev(ent, pev_origin, Origin)
  683.  
  684. 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])
  685. set_es(es, ES_RenderAmt, 0);
  686. else
  687. set_es(es, ES_RenderAmt, 255);
  688. }
  689. }
  690. }
  691.  
  692. public FWD_ParachutePreThink(id) {
  693. if(is_user_alive(id)) {
  694. new Float:FallSpeed = -50.0;
  695. new Float:Frame;
  696.  
  697. new Button = pev(id, pev_button);
  698. new OldButton = pev(id, pev_oldbuttons);
  699. new Flags = pev(id, pev_flags);
  700.  
  701. if(ParaENT[id] > 0 &&(Flags & FL_ONGROUND)) {
  702.  
  703. if(pev(ParaENT[id],pev_sequence) != 2) {
  704. set_pev(ParaENT[id], pev_sequence, 2);
  705. set_pev(ParaENT[id], pev_gaitsequence, 1);
  706. set_pev(ParaENT[id], pev_frame, 0.0);
  707. set_pev(ParaENT[id], pev_fuser1, 0.0);
  708. set_pev(ParaENT[id], pev_animtime, 0.0);
  709. return;
  710. }
  711.  
  712. pev(ParaENT[id],pev_fuser1, Frame);
  713. Frame += 2.0;
  714. set_pev(ParaENT[id],pev_fuser1,Frame);
  715. set_pev(ParaENT[id],pev_frame,Frame);
  716.  
  717. if(Frame > 254.0) {
  718. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  719. ParaENT[id] = 0;
  720. }
  721. else {
  722. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  723. ParaENT[id] = 0;
  724. }
  725. return;
  726. }
  727.  
  728. if(Button & IN_USE) {
  729. new Float:Velocity[3];
  730. pev(id, pev_velocity, Velocity);
  731.  
  732. if(Velocity[2] < 0.0) {
  733. if(ParaENT[id] <= 0) {
  734. ParaENT[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
  735.  
  736. if(ParaENT[id] > 0) {
  737. set_pev(ParaENT[id],pev_classname, PARACHUTE_CLASS);
  738. set_pev(ParaENT[id], pev_aiment, id);
  739. set_pev(ParaENT[id], pev_owner, id);
  740. set_pev(ParaENT[id], pev_movetype, MOVETYPE_FLY);
  741. set_pev(ParaENT[id], pev_sequence, 0);
  742. set_pev(ParaENT[id], pev_gaitsequence, 1);
  743. set_pev(ParaENT[id], pev_frame, 0.0);
  744. set_pev(ParaENT[id], pev_fuser1, 0.0);
  745. }
  746. }
  747. if(ParaENT[id] > 0) {
  748. set_pev(id, pev_sequence, 3);
  749. set_pev(id, pev_gaitsequence, 1);
  750. set_pev(id, pev_frame, 1.0);
  751. set_pev(id, pev_framerate, 1.0);
  752.  
  753. Velocity[2] = (Velocity[2] + 40.0 < FallSpeed) ? Velocity[2] + 40.0 : FallSpeed;
  754. set_pev(id, pev_velocity, Velocity);
  755.  
  756. if(pev(ParaENT[id],pev_sequence) == 0) {
  757. pev(ParaENT[id],pev_fuser1, Frame);
  758. Frame += 1.0;
  759. set_pev(ParaENT[id],pev_fuser1,Frame);
  760. set_pev(ParaENT[id],pev_frame,Frame);
  761.  
  762. if(Frame > 100.0) {
  763. set_pev(ParaENT[id], pev_animtime, 0.0);
  764. set_pev(ParaENT[id], pev_framerate, 0.4);
  765. set_pev(ParaENT[id], pev_sequence, 1);
  766. set_pev(ParaENT[id], pev_gaitsequence, 1);
  767. set_pev(ParaENT[id], pev_frame, 0.0);
  768. set_pev(ParaENT[id], pev_fuser1, 0.0);
  769. }
  770. }
  771. }
  772. }
  773.  
  774. else if(ParaENT[id] > 0) {
  775. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  776. ParaENT[id] = 0;
  777. }
  778. }
  779.  
  780. else if((OldButton & IN_USE) && ParaENT[id] > 0) {
  781. engfunc(EngFunc_RemoveEntity, ParaENT[id]);
  782. ParaENT[id] = 0;
  783. }
  784. }
  785. }
  786.  
  787. public FWD_GameDescription() {
  788. static GameName[32]
  789. get_pcvar_string(cvar_gamedescription, GameName, 31)
  790.  
  791. forward_return(FMV_STRING, GameName)
  792.  
  793. return FMRES_SUPERCEDE
  794. }
  795.  
  796. stock ColorChat(const id, const input[], any:...) {
  797. new count = 1, players[32];
  798. static msg[191];
  799. vformat(msg, 190, input, 3);
  800.  
  801. replace_all(msg, 190, "!g", "^4");
  802. replace_all(msg, 190, "!t", "^3");
  803.  
  804. if(id) players[0] = id;
  805. else get_players(players, count, "ch"); {
  806. for(new i = 0; i < count; i++) {
  807. if(is_user_connected(players[i])) {
  808. message_begin(MSG_ONE_UNRELIABLE, MSGID_SayText, _, players[i]);
  809. write_byte(players[i]);
  810. write_string(msg);
  811. message_end();
  812. }
  813. }
  814. }
  815. }
  816. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  817. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
  818. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement