Advertisement
Filiq_

Untitled

Dec 13th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.48 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. noflash
  50. }
  51.  
  52. new cvar[cvars], rounds = 0;
  53. new max_players;
  54. new bool:g_bJump[33] = false, g_JumpNum[33] = 0;
  55. new g_iPlayerPos[33], g_iPlayerCol[33];
  56.  
  57. // NU SCHIMBA
  58. new const Float:g_flCoords[][] =
  59. {
  60. {0.50, 0.40},
  61. {0.56, 0.44},
  62. {0.60, 0.50},
  63. {0.56, 0.56},
  64. {0.50, 0.60},
  65. {0.44, 0.56},
  66. {0.40, 0.50},
  67. {0.44, 0.44}
  68. }
  69.  
  70. // NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea
  71. new const g_iColors[][] =
  72. {
  73. {0, 127, 255}, // blue
  74. {255, 127, 0}, // orange
  75. {127, 0, 255}, // purple
  76. {255, 0, 0}, // red
  77. {255, 100, 150}, // pink
  78. {0, 255, 0} // green
  79. }
  80.  
  81. public plugin_init()
  82. {
  83. new path[64];
  84. get_localinfo("amxx_configsdir", path, charsmax(path));
  85. formatex(path, charsmax(path), "%s/vip_maps.ini", path);
  86.  
  87. new file = fopen(path, "r+");
  88.  
  89. if(!file_exists(path))
  90. {
  91. write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
  92. write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
  93. }
  94.  
  95. new mapname[32];
  96. get_mapname(mapname, charsmax(mapname));
  97.  
  98. new text[121], maptext[32], bool:remove_vip = false;
  99. while(!feof(file))
  100. {
  101. fgets(file, text, charsmax(text));
  102. trim(text);
  103.  
  104. if(text[0] == ';' || !strlen(text))
  105. {
  106. continue;
  107. }
  108.  
  109. parse(text, maptext, charsmax(maptext));
  110.  
  111. if(equal(maptext, mapname))
  112. {
  113. log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
  114. remove_vip = true;
  115. break;
  116. }
  117.  
  118. }
  119. fclose(file);
  120.  
  121. if(!remove_vip)
  122. {
  123. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
  124.  
  125. register_event("DeathMsg", "event_DeathMsg", "a");
  126. register_event("Damage", "event_Damage", "b", "2>0", "3=0");
  127. register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
  128. register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in")
  129.  
  130. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);
  131.  
  132. register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
  133. register_message(get_user_msgid("ScreenFade"), "msg_ScreenFade");
  134.  
  135. register_clcmd("say /vips", "CmdVipsOnline");
  136. register_clcmd("say_team /vips", "CmdVipsOnline");
  137. register_clcmd("say vips", "CmdVipsOnline");
  138. register_clcmd("say_team vips", "CmdVipsOnline");
  139.  
  140. register_clcmd("say vreauvip", "CmdPrintAttributes");
  141. register_clcmd("say_team vreauvip", "CmdPrintAttributes");
  142. register_clcmd("say /vreauvip", "CmdPrintAttributes");
  143. register_clcmd("say_team /vreauvip", "CmdPrintAttributes");
  144.  
  145. cvar[hp_spawn] = register_cvar("vip_hp_spawn", "100"); // 0 = dezactivat
  146. cvar[ap_spawn] = register_cvar("vip_ap_spawn", "100"); // 0 = dezactivat
  147. cvar[money_spawn] = register_cvar("vip_money_spawn", "1400"); // 0 = dezactivat
  148. cvar[show_vip_tab] = register_cvar("vip_show_tab", "1"); // 0 = dezactivat
  149. cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "1"); // 0 = dezactivat
  150. 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
  151. cvar[hp_kill] = register_cvar("vip_hp_kill", "5"); // 0 = dezactivat
  152. cvar[hp_hs] = register_cvar("vip_hp_hs", "10"); // 0 = dezactivat
  153. cvar[ap_kill] = register_cvar("vip_ap_kill", "5"); // 0 = dezactivat
  154. cvar[ap_hs] = register_cvar("vip_ap_hs", "10"); // 0 = dezactivat
  155. cvar[hp_max] = register_cvar("vip_hp_max", "100"); // 0 = viata infinita
  156. cvar[money_kill] = register_cvar("vip_money_kill", "150"); // 0 = dezactivat
  157. cvar[money_hs] = register_cvar("vip_money_hs", "300"); // 0 = dezactivat
  158. cvar[noflash] = register_cvar("vip_noflash", "1"); // 0 = dezactivat
  159.  
  160. max_players = get_maxplayers();
  161. }
  162. else
  163. {
  164. register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
  165. pause("ade");
  166. }
  167.  
  168. register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
  169. set_cvar_string("vip_", PLUGIN_VERSION);
  170. }
  171.  
  172. public client_putinserver(id)
  173. {
  174. g_JumpNum[id] = 0;
  175. g_bJump[id] = false;
  176. }
  177.  
  178. public CmdVipsOnline(id)
  179. {
  180. if(!is_user_connected(id))
  181. return PLUGIN_CONTINUE;
  182.  
  183. new adminnames[33][32], message[256], i, count, len;
  184. len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
  185. for(i = 1 ; i <= max_players; i++)
  186. {
  187. if(is_user_connected(i) && is_user_vip(i))
  188. get_user_name(i, adminnames[count++], charsmax(adminnames[]));
  189. }
  190.  
  191. if(count > 0)
  192. {
  193. for(i = 0; i < count; i++)
  194. {
  195. len += format(message[len], 255 -len, "!4%s!1%s ", adminnames[i], i < (count -1) ? " | " : "");
  196. }
  197. ColorChat(id, message);
  198. }
  199. else
  200. {
  201. len += format(message[len], 255 -len, "!4No one !")
  202. ColorChat(id, message);
  203. }
  204.  
  205. return PLUGIN_CONTINUE;
  206. }
  207.  
  208. public CmdPrintAttributes(id)
  209. {
  210. if(!is_user_connected(id)) return;
  211. show_motd(id, "vip.txt", "Beneficii VIP");
  212. }
  213.  
  214. public client_PreThink(id)
  215. {
  216. new cache = get_pcvar_num(cvar[multi_jump]);
  217. if(is_user_alive(id) && !is_user_vip(id))
  218. return PLUGIN_CONTINUE;
  219.  
  220. new nbut = get_user_button(id);
  221. new obut = get_user_oldbutton(id);
  222.  
  223. if(cache != 0)
  224. {
  225. if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
  226. {
  227. if(g_JumpNum[id] < cache)
  228. {
  229. g_bJump[id] = true;
  230. g_JumpNum[id]++;
  231. return PLUGIN_CONTINUE;
  232. }
  233. }
  234.  
  235. if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
  236. {
  237. g_JumpNum[id] = 0;
  238. return PLUGIN_CONTINUE;
  239. }
  240. }
  241. return PLUGIN_CONTINUE;
  242. }
  243.  
  244. public client_PostThink(id)
  245. {
  246. new jump_num = get_pcvar_num(cvar[multi_jump]);
  247. if(!jump_num)
  248. return PLUGIN_CONTINUE;
  249.  
  250. if(is_user_alive(id) && !is_user_vip(id))
  251. return PLUGIN_CONTINUE;
  252.  
  253. if(g_bJump[id])
  254. {
  255. new Float:fVelocity[3];
  256. entity_get_vector(id, EV_VEC_velocity, fVelocity);
  257. fVelocity[2] = random_float(265.0, 285.0);
  258. entity_set_vector(id, EV_VEC_velocity, fVelocity);
  259.  
  260. g_bJump[id] = false;
  261. return PLUGIN_CONTINUE;
  262. }
  263.  
  264. return PLUGIN_CONTINUE;
  265. }
  266.  
  267. public event_DeathMsg()
  268. {
  269. new killer = read_data(1), hs = read_data(3);
  270. if(is_user_alive(killer) && is_user_vip(killer))
  271. {
  272. if(killer == read_data(2)) return PLUGIN_HANDLED;
  273.  
  274. if(hs && !user_has_weapon(killer, CSW_HEGRENADE)) give_item(killer, "weapon_hegrenade");
  275.  
  276. new cache = hs ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]);
  277. if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max])));
  278.  
  279. cache = hs ? get_pcvar_num(cvar[ap_hs]) : get_pcvar_num(cvar[ap_kill]);
  280. if(cache != 0) set_user_armor(killer, min(get_user_armor(killer) + cache, get_pcvar_num(cvar[hp_max])));
  281.  
  282. cache = hs ? get_pcvar_num(cvar[money_hs]) : get_pcvar_num(cvar[money_kill]);
  283. if(cache != 0) cs_set_user_money(killer, min(cs_get_user_money(killer) + cache, 16000));
  284. }
  285.  
  286. return PLUGIN_CONTINUE;
  287. }
  288.  
  289. public event_Damage(victim)
  290. {
  291. if(!get_pcvar_num(cvar[show_bullet_dmg]))
  292. return PLUGIN_CONTINUE;
  293.  
  294. new id = get_user_attacker(victim);
  295. if(is_user_valid(id))
  296. {
  297. if(is_user_alive(id) && !is_user_vip(id))
  298. return PLUGIN_HANDLED;
  299.  
  300. if(read_data(4) || read_data(5) || read_data(6))
  301. {
  302. new iPos = ++g_iPlayerPos[id];
  303. if(iPos == sizeof(g_flCoords))
  304. iPos = g_iPlayerPos[id] = 0;
  305.  
  306. new iCol = ++g_iPlayerCol[id];
  307. if(iCol == sizeof(g_iColors))
  308. iCol = g_iPlayerCol[id] = 0;
  309.  
  310. 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);
  311. show_hudmessage(id, "%d", read_data(2));
  312. }
  313. }
  314.  
  315. return PLUGIN_CONTINUE;
  316. }
  317.  
  318. public event_NewRound()
  319. {
  320. rounds++;
  321. }
  322.  
  323. public event_textmsg()
  324. {
  325. rounds = 0;
  326. }
  327.  
  328. public fw_PlayerSpawnPost(id)
  329. {
  330. if(is_user_vip(id) && is_user_alive(id))
  331. {
  332. set_task(0.25, "give_items", id + 212);
  333. return HAM_IGNORED;
  334. }
  335.  
  336. return HAM_IGNORED;
  337. }
  338.  
  339. public give_items(taskid)
  340. {
  341. new id = taskid - 212;
  342. if(!is_user_alive(id))
  343. return;
  344.  
  345. new cache = get_pcvar_num(cvar[hp_spawn])
  346. if(cache != 0) set_user_health(id, cache);
  347.  
  348. cache = get_pcvar_num(cvar[ap_spawn]);
  349. if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM);
  350.  
  351. cache = get_pcvar_num(cvar[money_spawn]);
  352. if(cache != 0) cs_set_user_money(id, min(cs_get_user_money(id) + cache, 16000));
  353.  
  354. if(rounds >= 3) ShowVipMenu(id);
  355. }
  356.  
  357. public msg_ScoreAttrib(msgid, dest, id)
  358. {
  359. if(!get_pcvar_num(cvar[show_vip_tab]))
  360. return PLUGIN_CONTINUE;
  361.  
  362. new id = get_msg_arg_int(1);
  363. if(is_user_connected(id) && is_user_vip(id))
  364. set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
  365.  
  366. return PLUGIN_CONTINUE;
  367. }
  368.  
  369. public msg_ScreenFade(msgid, dest, id)
  370. {
  371. if(!get_pcvar_num(cvar[noflash]))
  372. return PLUGIN_HANDLED;
  373.  
  374. if(is_user_connected(id) && is_user_vip(id))
  375. {
  376. static data[4];
  377. data[0] = get_msg_arg_int(4);
  378. data[1] = get_msg_arg_int(5);
  379. data[2] = get_msg_arg_int(6);
  380. data[3] = get_msg_arg_int(7);
  381.  
  382. if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
  383. return PLUGIN_HANDLED;
  384. }
  385.  
  386. return PLUGIN_CONTINUE;
  387. }
  388.  
  389. public ShowVipMenu(id)
  390. {
  391. if(!is_user_connected(id))
  392. return PLUGIN_HANDLED;
  393.  
  394. if(!is_user_vip(id))
  395. {
  396. ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
  397. ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
  398. return PLUGIN_HANDLED;
  399. }
  400.  
  401. give_item(id, "weapon_hegrenade");
  402. give_item(id, "weapon_flashbang");
  403. give_item(id, "weapon_flashbang");
  404. drop_weapons(id, 2);
  405. give_item(id, "weapon_deagle");
  406. cs_set_user_bpammo(id, CSW_DEAGLE, 35);
  407.  
  408. new menu = menu_create("\rMeniu VIP", "VipMenuHandler");
  409. menu_additem(menu, "M4A1 + Echipament", "1");
  410. menu_additem(menu, "AK-47 + Echipament", "2");
  411. menu_additem(menu, "AWP + Echipament", "3");
  412.  
  413. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  414. menu_display(id, menu, 0);
  415.  
  416. return PLUGIN_CONTINUE;
  417. }
  418.  
  419. public VipMenuHandler(id, menu, item)
  420. {
  421. if(!is_user_connected(id) || item == MENU_EXIT)
  422. {
  423. menu_destroy(menu);
  424. return PLUGIN_HANDLED;
  425. }
  426.  
  427. switch(item)
  428. {
  429. case 0:
  430. {
  431. drop_weapons(id, 1);
  432. give_item(id, "weapon_m4a1");
  433. cs_set_user_bpammo(id, CSW_M4A1, 120);
  434.  
  435. ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !32 FB!1).", TAG);
  436. }
  437.  
  438. case 1:
  439. {
  440. drop_weapons(id, 1);
  441. give_item(id, "weapon_ak47");
  442. cs_set_user_bpammo(id, CSW_AK47, 120);
  443.  
  444. ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !32 FB!1).", TAG);
  445. }
  446.  
  447. case 2:
  448. {
  449. drop_weapons(id, 1);
  450. give_item(id, "weapon_awp");
  451. cs_set_user_bpammo(id, CSW_AWP, 30);
  452.  
  453. ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !32 FB!1).", TAG);
  454. }
  455. }
  456.  
  457. menu_destroy(menu);
  458. return PLUGIN_HANDLED;
  459. }
  460.  
  461. 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);
  462. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);
  463.  
  464. // Drop primary/secondary weapons
  465. stock drop_weapons(id, dropwhat)
  466. {
  467. // Get user weapons
  468. static weapons[32], num, i, weaponid, wname[32];
  469. num = 0; // reset passed weapons count (bugfix)
  470. get_user_weapons(id, weapons, num);
  471.  
  472. // Loop through them and drop primaries or secondaries
  473. for (i = 0; i < num; i++)
  474. {
  475. // Prevent re-indexing the array
  476. weaponid = weapons[i];
  477.  
  478. if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
  479. {
  480. // Get weapon entity
  481. get_weaponname(weaponid, wname, charsmax(wname));
  482. engclient_cmd(id, "drop", wname);
  483. }
  484. }
  485. }
  486.  
  487. stock ColorChat(id, String[], any:...)
  488. {
  489. static szMesage[192];
  490. vformat(szMesage, charsmax(szMesage), String, 3);
  491.  
  492. replace_all(szMesage, charsmax(szMesage), "!1", "^1");
  493. replace_all(szMesage, charsmax(szMesage), "!3", "^3");
  494. replace_all(szMesage, charsmax(szMesage), "!4", "^4");
  495.  
  496. static g_msg_SayText = 0;
  497. if(!g_msg_SayText)
  498. g_msg_SayText = get_user_msgid("SayText");
  499.  
  500. new Players[32], iNum = 1, i;
  501.  
  502. if(id) Players[0] = id;
  503. else get_players(Players, iNum, "ch");
  504.  
  505. for(--iNum; iNum >= 0; iNum--)
  506. {
  507. i = Players[iNum];
  508.  
  509. message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i);
  510. write_byte(i);
  511. write_string(szMesage);
  512. message_end();
  513. }
  514. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement