Advertisement
Guest User

Untitled

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