Advertisement
Guest User

Untitled

a guest
Aug 24th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.92 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <colorchat>
  5. #include <fakemeta>
  6. #include <fakemeta_util>
  7. #include <hamsandwich>
  8. #include <engine>
  9.  
  10. new const gszPrefix[] = "[VIP]^x01"
  11. new const VIP_FLAG[] = "t" //Flaga Vipa
  12. new const SVIP_FLAG[] = "n" //Flaga SVipa
  13. //new const STRAZNIK_FLAG[] = "r" //Flaga SVipa
  14.  
  15. new const g_Prefix[] = "Vip Chat"
  16.  
  17. new static PrecacheModels[][] = {
  18. "models/vip_zwykly_ultra/p_baseball.mdl",
  19. "models/vip_zwykly_ultra/v_baseball.mdl",
  20. "models/super_vip_ultra/p_lom.mdl",
  21. "models/super_vip_ultra/v_lom.mdl"
  22. }
  23. new const MDL_P_PALKA[] = "models/vip_zwykly_ultra/p_baseball.mdl";
  24. new const MDL_V_PALKA[] = "models/vip_zwykly_ultra/v_baseball.mdl";
  25. new const MDL_P_LOM[] = "models/super_vip_ultra/p_lom.mdl";
  26. new const MDL_V_LOM[] = "models/super_vip_ultra/v_lom.mdl";
  27.  
  28. new Podskok_VIP[33], Podskok_SVIP[33], UserSpam[33], MamFlageVipa[33], MamFlageSvipa[33]
  29. new GetMaxPlayers, PodskokiGr, SPodskokiGr, g_Hudmsg
  30.  
  31. public plugin_precache()
  32. {
  33. static MDL;
  34.  
  35. for(MDL=0; MDL<sizeof PrecacheModels; MDL++) engfunc(EngFunc_PrecacheModel, PrecacheModels[MDL]);
  36. }
  37.  
  38. public plugin_init(){
  39. register_plugin("VIP & SuperVIP", "a", "Author")
  40.  
  41. register_logevent("Nowa_Runda", 2, "1=Round_Start")
  42. register_forward(FM_CmdStart, "StartRealCMD")
  43. register_event("CurWeapon", "event_modele", "be", "1=1")
  44. RegisterHam(Ham_TakeDamage, "player", "player_damage")
  45.  
  46. register_clcmd("say /vgcsfghip", "mShowvip")
  47. register_clcmd("say /sfhjfsgjsthvip", "mShowsvip")
  48. register_clcmd("say /vips", "pokaz_vip_menu")
  49. register_clcmd("say /vipy", "pokaz_vip_menu")
  50.  
  51. register_clcmd("say_team", "VipChat");
  52.  
  53. PodskokiGr = register_cvar("vip_max_podskokow", "1")
  54. SPodskokiGr = register_cvar("svip_max_podskokow", "2")
  55.  
  56. register_message(get_user_msgid("ScoreAttrib"), "Message_ScoreAttrib")
  57.  
  58. GetMaxPlayers = get_maxplayers()
  59.  
  60. register_message(get_user_msgid("SayText"),"handleSayText")
  61. g_Hudmsg=CreateHudSyncObj()
  62. register_event("Damage", "damage", "b", "2!0", "3=0", "4!0");
  63.  
  64. return 0
  65. }
  66.  
  67. public plugin_end() remove_task(616)
  68.  
  69. public client_putinserver(id) {
  70. UserSpam[id] = 0
  71. }
  72. public client_connect(id) {
  73. new Name[33]; get_user_name(id, Name, 32)
  74. UserSpam[id] = 0
  75.  
  76. if(has_flag(id, VIP_FLAG)) {
  77. set_hudmessage(255, 0, 0, 0.01, 0.4, 0, 5.0)
  78. show_hudmessage(0, "Wchodzi VIP: %s", Name)
  79. return HAM_HANDLED
  80. }
  81. else if(has_flag(id, SVIP_FLAG)) {
  82. set_hudmessage(0, 255, 0, 0.01, 0.4, 0, 5.0)
  83. show_hudmessage(0, "Wchodzi SVIP: %s", Name)
  84. }
  85. return HAM_HANDLED
  86. }
  87. public client_disconnect(id) {
  88. new Name[33]; get_user_name(id, Name, 32)
  89. if(has_flag(id, VIP_FLAG)) {
  90. set_hudmessage(255, 0, 0, 0.01, 0.4, 0, 5.0)
  91. show_hudmessage(0, "Wychodzi VIP: %s", Name)
  92. return HAM_HANDLED
  93. }
  94. else if(has_flag(id, SVIP_FLAG)) {
  95. set_hudmessage(0, 255, 0, 0.01, 0.4, 0, 5.0)
  96. show_hudmessage(0, "Wychodzi SVIP: %s", Name)
  97. }
  98. return HAM_HANDLED
  99. }
  100.  
  101. public Nowa_Runda() {
  102. for(new id = 1; id <= GetMaxPlayers; id++) {
  103. if(is_user_admin(id) && is_user_connected(id) && is_user_alive(id)) {
  104. new nick[32]; get_user_name(id, nick, 31)
  105.  
  106. if(has_flag(id, VIP_FLAG))
  107. {
  108. fm_set_user_health(id, get_user_health(id) + 50)
  109. fm_set_user_armor(id, 100)
  110. fm_set_nofootsteps(id, 1)
  111. ColorChat(id, GREEN, "%s^x03 %s^x01 Dostales(as) darmowy ekwipunek dla^x03 VIP^x01'a!", gszPrefix, nick)
  112. }
  113. else if(has_flag(id, SVIP_FLAG))
  114. {
  115. fm_set_user_health(id, get_user_health(id) + 100)
  116. fm_set_user_armor(id, 100)
  117. fm_set_nofootsteps(id, 1)
  118. ColorChat(id, GREEN, "%s^x03 %s^x01 Dostales(as) darmowy ekwipunek dla^x03 SVIP^x01'a!", gszPrefix, nick)
  119. }
  120.  
  121.  
  122. }
  123. }
  124. return HAM_HANDLED
  125. }
  126. public event_modele(id)
  127. {
  128. switch(get_user_weapon(id))
  129. {
  130. case CSW_KNIFE:
  131. {
  132. switch(get_user_team(id))
  133. {
  134. case 1:
  135. {
  136. if(has_flag(id, VIP_FLAG))
  137. {
  138. entity_set_string(id, EV_SZ_viewmodel, MDL_V_PALKA);
  139. entity_set_string(id, EV_SZ_weaponmodel, MDL_P_PALKA);
  140. return HAM_HANDLED;
  141. }
  142. else if (has_flag(id, SVIP_FLAG))
  143. {
  144. entity_set_string(id, EV_SZ_viewmodel, MDL_V_LOM);
  145. entity_set_string(id, EV_SZ_weaponmodel, MDL_P_LOM);
  146. return HAM_HANDLED;
  147. }
  148.  
  149. }
  150. }
  151. }
  152. }
  153. return HAM_HANDLED;
  154. }
  155. public player_damage(this, idinflictor, idattacker, Float:damage, damagebits)
  156. {
  157. if(!is_user_connected(this) || !is_user_connected(idinflictor)) return HAM_IGNORED;
  158.  
  159. if(idattacker != 0 && has_flag(idattacker, VIP_FLAG) && is_user_alive(idattacker) && get_user_team(idattacker) != get_user_team(this))
  160. {
  161. if(get_user_weapon(idattacker) == CSW_KNIFE)
  162. {
  163. SetHamParamFloat(4, damage*1.6);
  164. return HAM_HANDLED;
  165. }
  166. }
  167. else if(idattacker != 0 && has_flag(idattacker, SVIP_FLAG) && is_user_alive(idattacker) && get_user_team(idattacker) != get_user_team(this))
  168. {
  169. if(get_user_weapon(idattacker) == CSW_KNIFE)
  170. {
  171. SetHamParamFloat(4, damage*2.4);
  172. return HAM_HANDLED;
  173. }
  174. }
  175. return HAM_IGNORED;
  176. }
  177. public StartRealCMD(id, uc_handle) {
  178. if(is_user_alive(id) && is_user_connected(id) && is_user_admin(id)) {
  179. new button = get_uc(uc_handle, UC_Buttons)
  180. new oldbutton = get_user_oldbutton(id)
  181. new flags = get_entity_flags(id)
  182.  
  183. if(has_flag(id, VIP_FLAG))
  184. {
  185. if(((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && Podskok_VIP[id] > 0)) {
  186. Podskok_VIP[id]--
  187.  
  188. new Float:velocity[3]
  189. entity_get_vector(id,EV_VEC_velocity, velocity)
  190. velocity[2] = random_float(265.0, 285.0)
  191. entity_set_vector(id,EV_VEC_velocity, velocity)
  192. }
  193. else if(flags & FL_ONGROUND) Podskok_VIP[id] = get_pcvar_num(PodskokiGr)
  194. }
  195. if(has_flag(id, SVIP_FLAG))
  196. {
  197. if(((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && Podskok_SVIP[id] > 0)) {
  198. Podskok_SVIP[id]--
  199.  
  200. new Float:velocity[3]
  201. entity_get_vector(id,EV_VEC_velocity, velocity)
  202. velocity[2] = random_float(265.0, 285.0)
  203. entity_set_vector(id,EV_VEC_velocity, velocity)
  204. }
  205. else if(flags & FL_ONGROUND) Podskok_SVIP[id] = get_pcvar_num(SPodskokiGr)
  206. }
  207. }
  208. else return FMRES_IGNORED
  209.  
  210. return 0
  211. }
  212.  
  213. public mShowvip(id)
  214. {
  215. if(!is_user_connected(id)) return PLUGIN_HANDLED;
  216.  
  217. if(is_user_connected(id))
  218. {
  219. new menu_vipinfo = menu_create("\rCo otrzymuje VIP?", "menu_vip");
  220.  
  221. menu_setprop(menu_vipinfo, MPROP_TITLE, "Co otrzymuje VIP?^n- Losowo od 40 do 60hp + kamizelke na start!^n- Dodatkowy Skok^n- Baseball (50% wiecej zadawanych obrazen)^n- Darmowe granaty^n- Bonusy w Ruletce^n- I Wiele wiecej!");
  222.  
  223. menu_additem(menu_vipinfo, "Zobacz pelny opis VIP");
  224. menu_additem(menu_vipinfo, "Jak kupic VIP? - Poradnik");
  225. menu_additem(menu_vipinfo, "Lista VIP Online");
  226. menu_setprop(menu_vipinfo, MPROP_BACKNAME, "Poprzednia strona");
  227. menu_setprop(menu_vipinfo, MPROP_NEXTNAME, "Nastepna strona");
  228. menu_setprop(menu_vipinfo, MPROP_EXITNAME, "Wyjdz");
  229. menu_setprop(menu_vipinfo, MPROP_EXIT, MEXIT_ALL);
  230. menu_display(id, menu_vipinfo);
  231.  
  232. return PLUGIN_HANDLED;
  233. }
  234. return PLUGIN_HANDLED;
  235. }
  236.  
  237. public menu_vip(id, menu, item)
  238. {
  239. if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
  240.  
  241. if(item != MENU_EXIT && item != MENU_BACK && item != MENU_MORE)
  242. {
  243. switch(item)
  244. {
  245. case 0: show_motd(id, "vip.txt", "Informacje o Vipie")
  246. case 1: show_motd(id, "jakvip.txt", "Jak Kupic VIPa?")
  247. case 2: pokaz_vip_menu(id)
  248. case 9: return PLUGIN_HANDLED;
  249. }
  250. }
  251. return PLUGIN_HANDLED;
  252. }
  253.  
  254. public mShowsvip(id)
  255. {
  256. if(!is_user_connected(id)) return PLUGIN_HANDLED;
  257.  
  258. if(is_user_connected(id))
  259. {
  260. new menu_server = menu_create("\rCo otrzymuje SuperVIP?", "menu_svip");
  261.  
  262. menu_setprop(menu_server, MPROP_TITLE, "Co otrzymuje SuperVIP?^n- Losowo od 190 do 210hp + Kamizelke na start!^n-Trzy skoki^n- Lom (3x wiecej zadawanych obrazen)^n- Granaty^n- Bonusy w Ruletce^n- I Wiele wiecej!");
  263.  
  264. menu_additem(menu_server, "Zobacz pelny opis SuperVIP");
  265. menu_additem(menu_server, "Jak kupic SuperVIP? - Poradnik");
  266. menu_additem(menu_server, "Lista VIP Online");
  267. menu_setprop(menu_server, MPROP_BACKNAME, "Poprzednia strona");
  268. menu_setprop(menu_server, MPROP_NEXTNAME, "Nastepna strona");
  269. menu_setprop(menu_server, MPROP_EXITNAME, "Wyjdz");
  270. menu_setprop(menu_server, MPROP_EXIT, MEXIT_ALL);
  271. menu_display(id, menu_server);
  272.  
  273. return PLUGIN_HANDLED;
  274. }
  275. return PLUGIN_HANDLED;
  276. }
  277.  
  278. public menu_svip(id, menu, item)
  279. {
  280. if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
  281.  
  282. if(item != MENU_EXIT && item != MENU_BACK && item != MENU_MORE)
  283. {
  284. switch(item)
  285. {
  286. case 0: show_motd(id, "svip.txt", "Informacje o SVipie")
  287. case 1: show_motd(id, "jakvip.txt", "Jak Kupic VIPa?")
  288. case 2: pokaz_vip_menu(id)
  289. case 9: return PLUGIN_HANDLED;
  290. }
  291. }
  292. return PLUGIN_HANDLED;
  293. }
  294.  
  295. public pokaz_vip_menu(id) {
  296. new key[128], info[8], Name[33]
  297. new OnlMenu = menu_create("\yLista VIP Online", "SelectVIPOnline")
  298.  
  299. for(new i = 1; i <= GetMaxPlayers; i++) {
  300. if(is_user_connected(i) && is_user_admin(i) && !is_user_bot(i) && !is_user_hltv(i)) {
  301. MamFlageVipa[i] = 0
  302. MamFlageSvipa[i] = 0
  303.  
  304. if(has_flag(i, VIP_FLAG)) {
  305. MamFlageSvipa[i] = 6
  306. MamFlageVipa[i] = 9
  307. }
  308. else if(has_flag(i, SVIP_FLAG)) {
  309. MamFlageSvipa[i] = 5
  310. MamFlageVipa[i] = 8
  311. }
  312. if(MamFlageSvipa[i] == 6 && MamFlageVipa[i] == 9 ) {
  313. get_user_name(i, Name, 32)
  314. formatex(info, 7, "%d", i)
  315. formatex(key, 127, "\r%s \d[\yVIP\d]", Name)
  316. menu_additem(OnlMenu, key, info)
  317. }
  318. else if(MamFlageSvipa[i] == 5 && MamFlageVipa[i] == 8 ) {
  319. get_user_name(i, Name, 32)
  320. formatex(info, 7, "%d", i)
  321. formatex(key, 127, "\r%s \d[\ySuperVIP\d]", Name)
  322. menu_additem(OnlMenu, key, info)
  323. }
  324. }
  325. }
  326. menu_setprop(OnlMenu, MPROP_NUMBER_COLOR, "\w")
  327. menu_setprop(OnlMenu, MPROP_BACKNAME, "\yPoprzednia strona")
  328. menu_setprop(OnlMenu, MPROP_NEXTNAME, "\yNastepna strona")
  329. menu_setprop(OnlMenu, MPROP_EXITNAME, "\rWyjscie")
  330. menu_setprop(OnlMenu, MPROP_EXIT, MEXIT_ALL)
  331. menu_display(id, OnlMenu, 0)
  332. return 1
  333. }
  334.  
  335. public SelectVIPOnline(id, OnlMenu, item) {
  336. new konto, info[8], name[63], callback
  337. menu_item_getinfo(OnlMenu, item, konto, info, 7, name, 63, callback)
  338. new GetID = str_to_num(info)
  339.  
  340. if(item == MENU_EXIT) {
  341. ColorChat(id, GREEN, "%s Menu^x04 VIP Online^x01 zamkniete.", gszPrefix)
  342. menu_destroy(OnlMenu)
  343. return HAM_HANDLED
  344. }
  345. else if((item == MENU_MORE) || (item == MENU_BACK)) return 0
  346. else {
  347. new SteamID[35]; get_user_authid(GetID, SteamID, 34)
  348. new Name[33]; get_user_name(GetID, Name, 32)
  349.  
  350. if(is_user_connected(GetID)) {
  351. ColorChat(id, GREEN, "%s Nick:^x03 %s^x01 Steam:^x03 %s^x01 IP:^x03 (Ukryte)^x01 Zyje:^x03 %s", gszPrefix, Name, (has_user_steam(GetID) ? SteamID : "Brak"), (is_user_alive(GetID) ? "Tak" : "Nie"))
  352. AntySpam(id)
  353. pokaz_vip_menu(id)
  354. } else {
  355. ColorChat(id, GREEN, "%s Gracz o nicku:^x03 %s^x01 wyszedl z serwera!", gszPrefix, Name)
  356. pokaz_vip_menu(id)
  357. }
  358. }
  359. return HAM_HANDLED
  360. }
  361.  
  362. public AntySpam(id) {
  363. UserSpam[id]++
  364. set_task(1.0, "KickOff", id+320)
  365.  
  366. if(UserSpam[id] > 4) {
  367. new nick[32]; get_user_name(id, nick, 31)
  368. server_cmd("kick %s **** Przestan spamowac! ****", nick)
  369. for(new i=1; i<=10; i++) console_print(id, "**** Przestan spamowac! ****")
  370. }
  371. return 0
  372. }
  373.  
  374. public Message_ScoreAttrib() {
  375. if(is_user_admin(get_msg_arg_int(1))) set_msg_arg_int(2, ARG_BYTE, is_user_alive(get_msg_arg_int(1)) ? (1<<2) : (1<<0))
  376. }
  377.  
  378. public handleSayText(msgId,msgDest,msgEnt){
  379. new id = get_msg_arg_int(1);
  380.  
  381. if(is_user_connected(id) && has_flag(id, VIP_FLAG)){
  382. new szTmp[256],szTmp2[256];
  383. get_msg_arg_string(2,szTmp, charsmax(szTmp))
  384.  
  385. new szPrefix[64] = "^x04[VIP]";
  386.  
  387. if(!equal(szTmp,"#Cstrike_Chat_All")){
  388. add(szTmp2,charsmax(szTmp2),szPrefix);
  389. add(szTmp2,charsmax(szTmp2)," ");
  390. add(szTmp2,charsmax(szTmp2),szTmp);
  391. }
  392. else{
  393. add(szTmp2,charsmax(szTmp2),szPrefix);
  394. add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
  395. }
  396. set_msg_arg_string(2,szTmp2);
  397. }
  398. else if(is_user_connected(id) && has_flag(id, SVIP_FLAG)){
  399. new szTmp[256],szTmp2[256];
  400. get_msg_arg_string(2,szTmp, charsmax(szTmp))
  401.  
  402. new szPrefix[64] = "^x04[SuperVIP]";
  403.  
  404. if(!equal(szTmp,"#Cstrike_Chat_All")){
  405. add(szTmp2,charsmax(szTmp2),szPrefix);
  406. add(szTmp2,charsmax(szTmp2)," ");
  407. add(szTmp2,charsmax(szTmp2),szTmp);
  408. }
  409. else{
  410. add(szTmp2,charsmax(szTmp2),szPrefix);
  411. add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
  412. }
  413. set_msg_arg_string(2,szTmp2);
  414. }
  415. return PLUGIN_CONTINUE;
  416. }
  417.  
  418. public VipChat(id){
  419. if(has_flag(id, "ts")){
  420. new g_Msg[256],
  421. g_Text[256];
  422.  
  423. read_args(g_Msg,charsmax(g_Msg));
  424. remove_quotes(g_Msg);
  425.  
  426. if(g_Msg[0] == '*' && g_Msg[1]){
  427. new g_Name[64];
  428. get_user_name(id,g_Name,charsmax(g_Name));
  429.  
  430. formatex(g_Text,charsmax(g_Text),"^x01(%s) ^x03%s : ^x04%s",g_Prefix, g_Name, g_Msg[1]);
  431.  
  432. for(new i=1;i<33;i++){
  433. if(is_user_connected(i) && has_flag(i, "ts"))
  434. ColorChat(i, GREEN, "%s", g_Text);
  435. }
  436. return PLUGIN_HANDLED_MAIN;
  437. }
  438. }
  439. return PLUGIN_CONTINUE;
  440. }
  441.  
  442. // Bullet Damage
  443. public damage(id){
  444. new attacker=get_user_attacker(id);
  445. new damage=read_data(2);
  446.  
  447. if(has_flag(id, "ts")){
  448. set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1);
  449. ShowSyncHudMsg(id, g_Hudmsg, "%i^n", damage);
  450. }
  451. if(is_user_connected(attacker) && has_flag(attacker, "ts")){
  452. set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
  453. ShowSyncHudMsg(attacker, g_Hudmsg, "%i^n", damage);
  454. }
  455. }
  456.  
  457. public client_PreThinkVip(id){
  458. entity_set_float(id, EV_FL_fuser2, 0.0);
  459.  
  460. if(entity_get_int(id, EV_INT_button) & 2){
  461. new flags = entity_get_int(id, EV_INT_flags);
  462.  
  463. if(flags & FL_WATERJUMP || entity_get_int(id, EV_INT_waterlevel) >= 2 || !(flags & FL_ONGROUND)){
  464. return PLUGIN_CONTINUE;
  465. }
  466. new Float:velocity[3];
  467. entity_get_vector(id, EV_VEC_velocity, velocity);
  468.  
  469. velocity[2] += 250.0;
  470. entity_set_vector(id, EV_VEC_velocity, velocity);
  471.  
  472. entity_set_int(id, EV_INT_gaitsequence, 6);
  473. }
  474. return PLUGIN_CONTINUE;
  475. }
  476.  
  477. public KickOff(id) {
  478. id -= 320
  479.  
  480. UserSpam[id] = 0
  481. if(task_exists(id+320)) remove_task(id+320)
  482.  
  483. return HAM_HANDLED
  484. }
  485.  
  486. stock bool:has_user_steam(id) {
  487. new AuthID[32]; get_user_authid(id, AuthID, 31)
  488. return containi(AuthID, ":") != -1 ? true : false
  489. }
  490.  
  491. stock fm_get_nofootsteps(index) return pev(index, pev_flTimeStepSound) == 999 ? true : false
  492. stock fm_set_nofootsteps(index, nofootsteps = 0) set_pev(index, pev_flTimeStepSound, nofootsteps ? 999 : 400)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement