Advertisement
Filiq_

pluginvip1

Dec 13th, 2018
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.09 KB | None | 0 0
  1. /*
  2. CREDITE:
  3. ConnorMcLeod - pentru bullet damage
  4. twistedeuphoria - pentru multi jump
  5. cheap_suit - cateva bucati de cod extrase din biohazard
  6. */
  7.  
  8.  
  9. #include <amxmodx>
  10. #include <hamsandwich>
  11. #include <engine>
  12. #include <cstrike>
  13. #include <fun>
  14. #include <fakemeta>
  15.  
  16. // --------------------------------------------
  17. // ------------- DE EDITAT ---------------
  18. // --------------------------------------------
  19. new const TAG[] = "[SERVERUL_TAU]"; // TAGUL IN CHAT CARE APARE
  20. new const CONTACT[] = "O ADRESA DE CONTACT";
  21.  
  22. #define is_user_vip(%1) (get_user_flags(%1) & read_flags("bit"))
  23. // --------------------------------------------
  24. // ------------- DE EDITAT ---------------
  25. // --------------------------------------------
  26.  
  27. #define PLUGIN_NAME "VIP System"
  28. #define PLUGIN_NAME_PAUSED "VIP System [OPRIT]"
  29. #define PLUGIN_VERSION "1.0"
  30. #define PLUGIN_AUTHOR "YONTU"
  31.  
  32. #define is_user_valid(%1) (1 <= %1 <= max_players)
  33.  
  34. enum cvars
  35. {
  36. hp_spawn = 0,
  37. ap_spawn,
  38. money_spawn,
  39. hp_kill,
  40. hp_hs,
  41. ap_kill,
  42. ap_hs,
  43. hp_max,
  44. money_kill,
  45. money_hs,
  46. show_vip_tab,
  47. show_bullet_dmg,
  48. multi_jump,
  49. parachute,
  50. noflash
  51. }
  52.  
  53. new cvar[cvars], rounds = 0;
  54. new max_players;
  55. new bool:g_bJump[33] = false, g_JumpNum[33] = 0;
  56. new g_iPlayerPos[33], g_iPlayerCol[33];
  57.  
  58. // NU SCHIMBA
  59. new const Float:g_flCoords[][] =
  60. {
  61. {0.50, 0.40},
  62. {0.56, 0.44},
  63. {0.60, 0.50},
  64. {0.56, 0.56},
  65. {0.50, 0.60},
  66. {0.44, 0.56},
  67. {0.40, 0.50},
  68. {0.44, 0.44}
  69. }
  70.  
  71. // NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea
  72. new const g_iColors[][] =
  73. {
  74. {0, 127, 255}, // blue
  75. {255, 127, 0}, // orange
  76. {127, 0, 255}, // purple
  77. {255, 0, 0}, // red
  78. {255, 100, 150}, // pink
  79. {0, 255, 0} // green
  80. }
  81.  
  82. public plugin_init()
  83. {
  84. new path[64];
  85. get_localinfo("amxx_configsdir", path, charsmax(path));
  86. formatex(path, charsmax(path), "%s/vip_maps.ini", path);
  87.  
  88. new file = fopen(path, "r+");
  89.  
  90. if(!file_exists(path))
  91. {
  92. write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
  93. write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
  94. }
  95.  
  96. new mapname[32];
  97. get_mapname(mapname, charsmax(mapname));
  98.  
  99. new text[121], maptext[32], bool:remove_vip = false;
  100. while(!feof(file))
  101. {
  102. fgets(file, text, charsmax(text));
  103. trim(text);
  104.  
  105. if(text[0] == ';' || !strlen(text))
  106. {
  107. continue;
  108. }
  109.  
  110. parse(text, maptext, charsmax(maptext));
  111.  
  112. if(equal(maptext, mapname))
  113. {
  114. log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
  115. remove_vip = true;
  116. break;
  117. }
  118.  
  119. }
  120. fclose(file);
  121.  
  122. if(!remove_vip)
  123. {
  124. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
  125.  
  126. register_event("DeathMsg", "event_DeathMsg", "a");
  127. register_event("Damage", "event_Damage", "b", "2>0", "3=0");
  128. register_event("CurWeapon", "event_CurWeapon", "be", "1=1");
  129. register_event("WeapPickup", "event_WeapPickup", "b");
  130. register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
  131. register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in")
  132.  
  133. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);
  134. RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon");
  135.  
  136. register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
  137. register_message(get_user_msgid("ScreenFade"), "msg_ScreenFade");
  138.  
  139. register_clcmd("say /vips", "CmdVipsOnline");
  140. register_clcmd("say_team /vips", "CmdVipsOnline");
  141. register_clcmd("say vips", "CmdVipsOnline");
  142. register_clcmd("say_team vips", "CmdVipsOnline");
  143.  
  144. register_clcmd("say vreauvip", "CmdPrintAttributes");
  145. register_clcmd("say_team vreauvip", "CmdPrintAttributes");
  146. register_clcmd("say /vreauvip", "CmdPrintAttributes");
  147. register_clcmd("say_team /vreauvip", "CmdPrintAttributes");
  148.  
  149. register_clcmd("say /rd", "CmdResetDeaths");
  150. register_clcmd("say_team /rd", "CmdResetDeaths");
  151. register_clcmd("say rd", "CmdResetDeaths");
  152. register_clcmd("say_team rd", "CmdResetDeaths");
  153.  
  154. register_clcmd("awp", "blockawp");
  155.  
  156. cvar[hp_spawn] = register_cvar("vip_hp_spawn", "100"); // 0 = dezactivat
  157. cvar[ap_spawn] = register_cvar("vip_ap_spawn", "100"); // 0 = dezactivat
  158. cvar[money_spawn] = register_cvar("vip_money_spawn", "1400"); // 0 = dezactivat
  159. cvar[show_vip_tab] = register_cvar("vip_show_tab", "1"); // 0 = dezactivat
  160. cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "1"); // 0 = dezactivat
  161. cvar[multi_jump] = register_cvar("vip_multijump", "1"); // 0 = dezactivat. Daca valoarea cvar-ului este 1, vei sari de 2 ori. Orice valoare pui, va fi +1 jump
  162. cvar[hp_kill] = register_cvar("vip_hp_kill", "5"); // 0 = dezactivat
  163. cvar[hp_hs] = register_cvar("vip_hp_hs", "10"); // 0 = dezactivat
  164. cvar[ap_kill] = register_cvar("vip_ap_kill", "5"); // 0 = dezactivat
  165. cvar[ap_hs] = register_cvar("vip_ap_hs", "10"); // 0 = dezactivat
  166. cvar[hp_max] = register_cvar("vip_hp_max", "100"); // 0 = viata infinita
  167. cvar[money_kill] = register_cvar("vip_money_kill", "150"); // 0 = dezactivat
  168. cvar[money_hs] = register_cvar("vip_money_hs", "300"); // 0 = dezactivat
  169. cvar[parachute] = register_cvar("vip_parachute", "1"); // 0 = dezactivat
  170. cvar[noflash] = register_cvar("vip_noflash", "1"); // 0 = dezactivat
  171.  
  172. max_players = get_maxplayers();
  173. }
  174. else
  175. {
  176. register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
  177. pause("ade");
  178. }
  179.  
  180. register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
  181. set_cvar_string("vip_", PLUGIN_VERSION);
  182. }
  183.  
  184. public client_putinserver(id)
  185. {
  186. g_JumpNum[id] = 0;
  187. g_bJump[id] = false;
  188. }
  189.  
  190. public CmdVipsOnline(id)
  191. {
  192. if(!is_user_connected(id))
  193. return PLUGIN_CONTINUE;
  194.  
  195. new adminnames[33][32], message[256], i, count, len;
  196. len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
  197. for(i = 1 ; i <= max_players; i++)
  198. {
  199. if(is_user_connected(i) && is_user_vip(i))
  200. get_user_name(i, adminnames[count++], charsmax(adminnames[]));
  201. }
  202.  
  203. if(count > 0)
  204. {
  205. for(i = 0; i < count; i++)
  206. {
  207. len += format(message[len], 255 -len, "!4%s!1%s ", adminnames[i], i < (count -1) ? " | " : "");
  208. }
  209. ColorChat(id, message);
  210. }
  211. else
  212. {
  213. len += format(message[len], 255 -len, "!4No one !")
  214. ColorChat(id, message);
  215. }
  216.  
  217. return PLUGIN_CONTINUE;
  218. }
  219.  
  220. public CmdPrintAttributes(id)
  221. {
  222. if(!is_user_connected(id)) return;
  223. show_motd(id, "vip.txt", "Beneficii VIP");
  224. }
  225.  
  226. public CmdResetDeaths(id)
  227. {
  228. if(!is_user_vip(id))
  229. {
  230. ColorChat(id, "!4%s!1 Doar membri!3 VIP!1 isi pot reseta decesele.", TAG);
  231. return;
  232. }
  233. cs_set_user_deaths(id, 0);
  234. cs_set_user_deaths(id, 0);
  235. ColorChat(id, "!4%s!1 Ti-ai resetat cu succes toate decesele.", TAG);
  236. }
  237.  
  238. public blockawp(id)
  239. {
  240. if(is_user_alive(id) && !is_user_vip(id))
  241. {
  242. ColorChat(id, "!4%s!3 AWP-ul!1 este doar pentru membri VIP.", TAG);
  243. return PLUGIN_HANDLED;
  244. }
  245. return PLUGIN_CONTINUE;
  246. }
  247.  
  248. public client_PreThink(id)
  249. {
  250. new cache = get_pcvar_num(cvar[multi_jump]);
  251. if(is_user_alive(id) && !is_user_vip(id))
  252. return PLUGIN_CONTINUE;
  253.  
  254. new nbut = get_user_button(id);
  255. new obut = get_user_oldbutton(id);
  256.  
  257. if(cache != 0)
  258. {
  259. if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
  260. {
  261. if(g_JumpNum[id] < cache)
  262. {
  263. g_bJump[id] = true;
  264. g_JumpNum[id]++;
  265. return PLUGIN_CONTINUE;
  266. }
  267. }
  268.  
  269. if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
  270. {
  271. g_JumpNum[id] = 0;
  272. return PLUGIN_CONTINUE;
  273. }
  274. }
  275.  
  276. if(get_pcvar_num(cvar[parachute]))
  277. {
  278. new Float:fallspeed = 100.0 * -1.0;
  279. if(nbut & IN_USE)
  280. {
  281. new Float:velocity[3];
  282. entity_get_vector(id, EV_VEC_velocity, velocity);
  283. if(velocity[2] < 0.0)
  284. {
  285. entity_set_int(id, EV_INT_sequence, 3);
  286. entity_set_int(id, EV_INT_gaitsequence, 1);
  287. entity_set_float(id, EV_FL_frame, 1.0);
  288. entity_set_float(id, EV_FL_framerate, 1.0);
  289.  
  290. velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed;
  291. entity_set_vector(id, EV_VEC_velocity, velocity);
  292. }
  293. }
  294. }
  295. return PLUGIN_CONTINUE;
  296. }
  297.  
  298. public client_PostThink(id)
  299. {
  300. new jump_num = get_pcvar_num(cvar[multi_jump]);
  301. if(!jump_num)
  302. return PLUGIN_CONTINUE;
  303.  
  304. if(is_user_alive(id) && !is_user_vip(id))
  305. return PLUGIN_CONTINUE;
  306.  
  307. if(g_bJump[id])
  308. {
  309. new Float:fVelocity[3];
  310. entity_get_vector(id, EV_VEC_velocity, fVelocity);
  311. fVelocity[2] = random_float(265.0, 285.0);
  312. entity_set_vector(id, EV_VEC_velocity, fVelocity);
  313.  
  314. g_bJump[id] = false;
  315. return PLUGIN_CONTINUE;
  316. }
  317.  
  318. return PLUGIN_CONTINUE;
  319. }
  320.  
  321. public event_DeathMsg()
  322. {
  323. new killer = read_data(1), hs = read_data(3);
  324. if(is_user_alive(killer) && is_user_vip(killer))
  325. {
  326. if(killer == read_data(2)) return PLUGIN_HANDLED;
  327.  
  328. if(hs && !user_has_weapon(killer, CSW_HEGRENADE)) give_item(killer, "weapon_hegrenade");
  329.  
  330. new cache = hs ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]);
  331. if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max])));
  332.  
  333. cache = hs ? get_pcvar_num(cvar[ap_hs]) : get_pcvar_num(cvar[ap_kill]);
  334. if(cache != 0) set_user_armor(killer, min(get_user_armor(killer) + cache, get_pcvar_num(cvar[hp_max])));
  335.  
  336. cache = hs ? get_pcvar_num(cvar[money_hs]) : get_pcvar_num(cvar[money_kill]);
  337. if(cache != 0) cs_set_user_money(killer, min(cs_get_user_money(killer) + cache, 16000));
  338. }
  339.  
  340. return PLUGIN_CONTINUE;
  341. }
  342.  
  343. public event_Damage(victim)
  344. {
  345. if(!get_pcvar_num(cvar[show_bullet_dmg]))
  346. return PLUGIN_CONTINUE;
  347.  
  348. new id = get_user_attacker(victim);
  349. if(is_user_valid(id))
  350. {
  351. if(is_user_alive(id) && !is_user_vip(id))
  352. return PLUGIN_HANDLED;
  353.  
  354. if(read_data(4) || read_data(5) || read_data(6))
  355. {
  356. new iPos = ++g_iPlayerPos[id];
  357. if(iPos == sizeof(g_flCoords))
  358. iPos = g_iPlayerPos[id] = 0;
  359.  
  360. new iCol = ++g_iPlayerCol[id];
  361. if(iCol == sizeof(g_iColors))
  362. iCol = g_iPlayerCol[id] = 0;
  363.  
  364. set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1);
  365. show_hudmessage(id, "%d", read_data(2));
  366. }
  367. }
  368.  
  369. return PLUGIN_CONTINUE;
  370. }
  371.  
  372. public event_CurWeapon(id)
  373. {
  374. if(!is_user_alive(id))
  375. return PLUGIN_HANDLED;
  376.  
  377. if(!is_user_vip(id) && (pev(id, pev_weapons) & (1 << CSW_AWP)))
  378. engclient_cmd(id, "drop", "weapon_awp");
  379.  
  380. return PLUGIN_CONTINUE;
  381. }
  382.  
  383. public event_WeapPickup(id)
  384. {
  385. if(!is_user_connected(id))
  386. return PLUGIN_CONTINUE;
  387.  
  388. if(is_user_vip(id))
  389. return PLUGIN_CONTINUE;
  390.  
  391. if(pev(id, pev_weapons) & (1 << CSW_AWP))
  392. {
  393. engclient_cmd(id, "drop", "weapon_awp");
  394. ColorChat(id, "!4%s!3 AWP-ul!1 este doar pentru membri VIP.", TAG);
  395. return PLUGIN_HANDLED;
  396. }
  397. return PLUGIN_CONTINUE;
  398. }
  399.  
  400. public event_NewRound()
  401. {
  402. rounds++;
  403. }
  404.  
  405. public event_textmsg()
  406. {
  407. rounds = 0;
  408. }
  409.  
  410. public fw_PlayerSpawnPost(id)
  411. {
  412. if(is_user_vip(id) && is_user_alive(id))
  413. {
  414. set_task(0.25, "give_items", id + 212);
  415. return HAM_IGNORED;
  416. }
  417.  
  418. return HAM_IGNORED;
  419. }
  420.  
  421. public give_items(taskid)
  422. {
  423. new id = taskid - 212;
  424. if(!is_user_alive(id))
  425. return;
  426.  
  427. new cache = get_pcvar_num(cvar[hp_spawn])
  428. if(cache != 0) set_user_health(id, cache);
  429.  
  430. cache = get_pcvar_num(cvar[ap_spawn]);
  431. if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM);
  432.  
  433. cache = get_pcvar_num(cvar[money_spawn]);
  434. if(cache != 0) cs_set_user_money(id, min(cs_get_user_money(id) + cache, 16000));
  435.  
  436. set_user_rendering(id, kRenderFxGlowShell, 0, 130, 0, kRenderNormal, 0);
  437.  
  438. if(rounds >= 3) ShowVipMenu(id);
  439. }
  440.  
  441. public fw_TouchWeapon(ent, id)
  442. {
  443. if(is_user_alive(id) && !is_user_vip(id))
  444. {
  445. static model[128];
  446. pev(ent, pev_model, model, charsmax(model));
  447.  
  448. if(equal(model, "models/w_awp.mdl"))
  449. return HAM_SUPERCEDE;
  450. }
  451.  
  452. return HAM_IGNORED;
  453. }
  454.  
  455. public msg_ScoreAttrib(msgid, dest, id)
  456. {
  457. if(!get_pcvar_num(cvar[show_vip_tab]))
  458. return PLUGIN_CONTINUE;
  459.  
  460. new id = get_msg_arg_int(1);
  461. if(is_user_connected(id) && is_user_vip(id))
  462. set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
  463.  
  464. return PLUGIN_CONTINUE;
  465. }
  466.  
  467. public msg_ScreenFade(msgid, dest, id)
  468. {
  469. if(!get_pcvar_num(cvar[noflash]))
  470. return PLUGIN_HANDLED;
  471.  
  472. if(is_user_connected(id) && is_user_vip(id))
  473. {
  474. static data[4];
  475. data[0] = get_msg_arg_int(4);
  476. data[1] = get_msg_arg_int(5);
  477. data[2] = get_msg_arg_int(6);
  478. data[3] = get_msg_arg_int(7);
  479.  
  480. if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
  481. return PLUGIN_HANDLED;
  482. }
  483.  
  484. return PLUGIN_CONTINUE;
  485. }
  486.  
  487. public ShowVipMenu(id)
  488. {
  489. if(!is_user_connected(id))
  490. return PLUGIN_HANDLED;
  491.  
  492. if(!is_user_vip(id))
  493. {
  494. ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
  495. ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
  496. return PLUGIN_HANDLED;
  497. }
  498.  
  499. give_item(id, "weapon_hegrenade");
  500. give_item(id, "weapon_flashbang");
  501. give_item(id, "weapon_flashbang");
  502. drop_weapons(id, 2);
  503. give_item(id, "weapon_deagle");
  504. cs_set_user_bpammo(id, CSW_DEAGLE, 35);
  505.  
  506. new menu = menu_create("\rMeniu VIP", "VipMenuHandler");
  507. menu_additem(menu, "M4A1 + Echipament", "1");
  508. menu_additem(menu, "AK-47 + Echipament", "2");
  509. menu_additem(menu, "AWP + Echipament", "3");
  510.  
  511. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  512. menu_display(id, menu, 0);
  513.  
  514. return PLUGIN_CONTINUE;
  515. }
  516.  
  517. public VipMenuHandler(id, menu, item)
  518. {
  519. if(!is_user_connected(id) || item == MENU_EXIT)
  520. {
  521. menu_destroy(menu);
  522. return PLUGIN_HANDLED;
  523. }
  524.  
  525. new data[6], namei[64], access, CallBack;
  526. menu_item_getinfo(menu, item, access, data, charsmax(data), namei, charsmax(namei), CallBack);
  527. new key = str_to_num(data);
  528.  
  529. switch(key)
  530. {
  531. case 1:
  532. {
  533. drop_weapons(id, 1);
  534. give_item(id, "weapon_m4a1");
  535. cs_set_user_bpammo(id, CSW_M4A1, 120);
  536.  
  537. ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !32 FB!1).", TAG);
  538. }
  539.  
  540. case 2:
  541. {
  542. drop_weapons(id, 1);
  543. give_item(id, "weapon_ak47");
  544. cs_set_user_bpammo(id, CSW_AK47, 120);
  545.  
  546. ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !32 FB!1).", TAG);
  547. }
  548.  
  549. case 3:
  550. {
  551. drop_weapons(id, 1);
  552. give_item(id, "weapon_awp");
  553. cs_set_user_bpammo(id, CSW_AWP, 30);
  554.  
  555. ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !32 FB!1).", TAG);
  556. }
  557. }
  558.  
  559. menu_destroy(menu);
  560. return PLUGIN_HANDLED;
  561. }
  562.  
  563. const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
  564. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);
  565.  
  566. // Drop primary/secondary weapons
  567. stock drop_weapons(id, dropwhat)
  568. {
  569. // Get user weapons
  570. static weapons[32], num, i, weaponid, wname[32];
  571. num = 0; // reset passed weapons count (bugfix)
  572. get_user_weapons(id, weapons, num);
  573.  
  574. // Loop through them and drop primaries or secondaries
  575. for (i = 0; i < num; i++)
  576. {
  577. // Prevent re-indexing the array
  578. weaponid = weapons[i];
  579.  
  580. if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
  581. {
  582. // Get weapon entity
  583. get_weaponname(weaponid, wname, charsmax(wname));
  584. engclient_cmd(id, "drop", wname);
  585. }
  586. }
  587. }
  588.  
  589. stock ColorChat(id, String[], any:...)
  590. {
  591. static szMesage[192];
  592. vformat(szMesage, charsmax(szMesage), String, 3);
  593.  
  594. replace_all(szMesage, charsmax(szMesage), "!1", "^1");
  595. replace_all(szMesage, charsmax(szMesage), "!3", "^3");
  596. replace_all(szMesage, charsmax(szMesage), "!4", "^4");
  597.  
  598. static g_msg_SayText = 0;
  599. if(!g_msg_SayText)
  600. g_msg_SayText = get_user_msgid("SayText");
  601.  
  602. new Players[32], iNum = 1, i;
  603.  
  604. if(id) Players[0] = id;
  605. else get_players(Players, iNum, "ch");
  606.  
  607. for(--iNum; iNum >= 0; iNum--)
  608. {
  609. i = Players[iNum];
  610.  
  611. message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i);
  612. write_byte(i);
  613. write_string(szMesage);
  614. message_end();
  615. }
  616. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement