DONKHAN1

Advanced VIP [*UPDATED*] 4.0 Version

Aug 26th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.22 KB | None | 0 0
  1. /*This Plugin Is Originally Created By Dunno But Edited By DON KHAN
  2. *Added VIP Prefix, Gravity, New Style VIP MENU Etc...
  3. *Change Log:
  4. * 3.0: Dunno's Released.
  5. * After 3.0 DON KHAN's Released.
  6. * 3.1: Added Gravity.
  7. * 3.2: Added chat(player, "!g[VIP] You Got He Grenade, Armor, Thighpack.")
  8. * 3.3: Fixed All Bugs.
  9. * 3.4: Added New Style VIP Menu.  
  10. * 3.5: Added VIP Tag.
  11. * 3.6: Fixed All Bugs & Error.
  12. * 3.7: Added VIP On Scoreboard
  13. * 3.8: Optimized Code
  14. * 3.9: Added Glow For VIPs
  15. * 4.0: Added A Specific Glow Of VIP's Team: Blue For CT & Red For T + Optimized Code.
  16. */
  17.  
  18. #define DAMAGE_RECIEVED
  19. #include <amxmodx>
  20. #include <amxmisc>
  21. #include <cstrike>
  22. #include <fun>
  23. #include <hamsandwich>  
  24.  
  25. static const COLOR[] = "!g" //green
  26. static const CONTACT[] = "www.steam.lv/forum"
  27. new maxplayers
  28. new mpd, mkb, mhb
  29. new g_MsgSync
  30. new money_add
  31. new money_hs_add
  32. new money_max
  33. new nKiller
  34. new nKiller_money
  35. new nMoney_add
  36. new nMoney_max
  37. new VIPPrefix
  38. new g_awp_active
  39. new g_menu_active
  40. new CurrentRound
  41. new bool:HasC4[33]
  42. new vips[33]
  43.  
  44. new SzMaxPlayers, SzSayText;
  45.  
  46. new SzGTeam[3][] = {
  47.     "Spectator",
  48.     "Terrorist",
  49.     "Counter-Terrorist"
  50. }
  51.  
  52. #define Keysrod (1<<0)|(1<<1)|(1<<9) // Keys: 1234567890
  53. #if defined DAMAGE_RECIEVED
  54.    new g_MsgSync2
  55. #endif
  56.  
  57. // VIP Glow Access
  58. new const VIP_ACCESS = ADMIN_LEVEL_H
  59.  
  60. // VIP Prefix
  61. #define FLAGADMINVIP ADMIN_LEVEL_H
  62. #define PREFIXADMINVIP ".::V.I.P::."
  63.  
  64. // VIP Scoreboard Access
  65. #define VIP_LEVEL ADMIN_LEVEL_H
  66.  
  67. public plugin_init()
  68. {
  69.     register_plugin("VIP Eng Version", "4.0", "Dunno & DON KHAN")
  70.     mpd = register_cvar("money_per_damage","3")
  71.     mkb = register_cvar("money_kill_bonus","20")
  72.     mhb = register_cvar("money_hs_bonus","50")
  73.     money_add = register_cvar("amx_vip_hp", "250")
  74.     money_hs_add = register_cvar("amx_vip_money_hs", "500")
  75.     money_max = register_cvar("amx_vip_max_money", "20000")
  76.    
  77.     VIPPrefix = register_cvar("show_VIP_admin_prefix", "1")
  78.    
  79.     g_awp_active = register_cvar("awp_active", "0")
  80.     g_menu_active = register_cvar("menu_active", "1")
  81.     register_event("Damage","Damage","b")
  82.     register_event("DeathMsg","death_msg","a")
  83.     register_event("ResetHUD","resethud","be") // For VIP Show In Scoreboard
  84.     register_clcmd("awp","HandleCmd")
  85.     register_clcmd("say /vipinfo","ShowMotd")
  86.     maxplayers = get_maxplayers()
  87.     register_clcmd("say", "handle_say")
  88.     register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
  89.     register_logevent("LogEvent_RoundStart", 2, "1=Round_Start" );
  90.     register_event("TextMsg","Event_RoundRestart","a","2&#Game_w")
  91.     register_event("TextMsg","Event_RoundRestart","a","2&#Game_C");
  92.     register_event("DeathMsg", "hook_death", "a", "1>0")
  93.     register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
  94.     RegisterHam(Ham_Spawn, "player", "PlayerPostSpawn", 1); // For Glow Of VIP's Team.
  95.    
  96.     register_clcmd("say", "hook_say")
  97.     register_clcmd("say_team", "hook_say_team")
  98.    
  99.     SzSayText = get_user_msgid ("SayText")
  100.     SzMaxPlayers = get_maxplayers()
  101.    
  102.     register_message(SzSayText, "MsgDuplicate")
  103.    
  104.     g_MsgSync = CreateHudSyncObj()
  105. #if defined DAMAGE_RECIEVED
  106.    g_MsgSync2 = CreateHudSyncObj()
  107. #endif
  108. }
  109.  
  110. public MsgDuplicate(id){ return PLUGIN_HANDLED; }
  111.  
  112. public PlayerPostSpawn(id)  
  113. {      
  114.     if(is_user_alive (id) && get_user_flags(id) & VIP_ACCESS)  
  115.         set_user_rendering(id, kRenderFxGlowShell, cs_get_user_team(id) == CS_TEAM_CT ? 0 : 255, 0, cs_get_user_team(id) == CS_TEAM_CT ? 255 : 0, kRenderNormal, 16)
  116. }
  117.  
  118. public on_damage(id)
  119. {
  120.     new attacker = get_user_attacker(id)
  121.  
  122. #if defined DAMAGE_RECIEVED
  123.    // id should be connected if this message is sent, but lets check anyway
  124.     if ( is_user_connected(id) && is_user_connected(attacker) )
  125.     if (get_user_flags(attacker) & ADMIN_LEVEL_H)
  126.     {
  127.         new damage = read_data(2)
  128.  
  129.         set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
  130.         ShowSyncHudMsg(id, g_MsgSync2, "%i^n", damage)
  131. #else
  132.    if ( is_user_connected(attacker) && if (get_user_flags(attacker) & ADMIN_LEVEL_H) )
  133.     {
  134.         new damage = read_data(2)
  135. #endif
  136.        set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
  137.         ShowSyncHudMsg(attacker, g_MsgSync, "%i^n", damage)
  138.     }
  139. }
  140.  
  141. public Damage(id)
  142. {
  143.     new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
  144.     if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
  145.     if (get_user_flags(attacker) & ADMIN_LEVEL_H)
  146.     {
  147.         new money = read_data(2) * get_pcvar_num(mpd)
  148.         if(hitpoint==1) money += get_pcvar_num(mhb)
  149.         cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
  150.     }
  151. }
  152.  
  153. public death_msg()
  154. {
  155.     if(read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
  156. }
  157.  
  158. public LogEvent_RoundStart()
  159. {
  160.     CurrentRound++;
  161.     new players[32], player, pnum;
  162.     get_players(players, pnum, "a");
  163.     for(new i = 0; i < pnum; i++)
  164.     {
  165.         player = players[i];
  166.         if(is_user_alive(player) && get_user_flags(player) & ADMIN_LEVEL_H)
  167.         {
  168.             give_item(player, "weapon_hegrenade")
  169.             give_item(player, "item_assaultsuit")
  170.             give_item(player, "item_thighpack")
  171.             set_user_gravity(player, 720.0 / 800)
  172.             give_item(player,"weapon_deagle")
  173.             give_item(player,"ammo_50ae")
  174.             give_item(player,"ammo_50ae")
  175.             give_item(player,"ammo_50ae")
  176.             give_item(player,"ammo_50ae")
  177.             give_item(player,"ammo_50ae")
  178.             give_item(player,"ammo_50ae")
  179.             give_item(player,"ammo_50ae")
  180.            
  181.    
  182.             chat(player, "!g[VIP] You Got Deagle, He Grenade, Low Gravity, Armor, Thighpack.")
  183.  
  184.             if (!get_pcvar_num(g_menu_active))
  185.                 return PLUGIN_CONTINUE
  186.  
  187.             if(CurrentRound >= 3)
  188.             {
  189.                 Showrod(player);
  190.             }
  191.         }
  192.     }
  193.     return PLUGIN_HANDLED
  194. }
  195.  
  196. public Event_RoundRestart()
  197. {
  198.     CurrentRound=0;
  199. }
  200.  
  201. public hook_death()
  202. {
  203.    // Killer id
  204.    nKiller = read_data(1)
  205.  
  206.    if ( (read_data(3) == 1) && (read_data(5) == 0) )
  207.    {
  208.       nMoney_add = get_pcvar_num (money_hs_add)
  209.    }
  210.    else
  211.       nMoney_add = get_pcvar_num (money_add)
  212.    nMoney_max = get_pcvar_num (money_max)
  213.    // Updating Killer Money
  214.    if(!(get_user_flags(nKiller) & ADMIN_LEVEL_H))
  215.    return;
  216.  
  217.    nKiller_money += nMoney_add
  218.    // Maximum Money check
  219.    if (nKiller_money > nMoney_max) nKiller_money = nMoney_max
  220.    // Hud message "Added +%d Money"
  221.    set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
  222.    show_hudmessage(nKiller, "Added +%d Money", nMoney_add)
  223.    // Screen fading
  224.    message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
  225.    write_short(1<<10)
  226.    write_short(1<<10)
  227.    write_short(0x0000)
  228.    write_byte(0)
  229.    write_byte(0)
  230.    write_byte(200)
  231.    write_byte(75)
  232.    message_end()
  233.  
  234. }
  235.  
  236. public Showrod(id)
  237. {
  238.     if(!is_user_connected(id) || !is_user_alive(id))
  239.         return PLUGIN_HANDLED
  240.  
  241.     new menu = menu_create("\r[\y FREE VIP Guns \r]", "Pressedrod")
  242.  
  243.     menu_additem(menu, "\wAK47 + Desert Eagle", "0", 0)
  244.  
  245.     menu_additem(menu, "\wM4A1 + Desert Eagle^n", "1", 0)
  246.  
  247.     menu_additem(menu, "\wAWP + USP", "2", 0)
  248.  
  249.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  250.     menu_display(id, menu, 0)
  251.     return PLUGIN_HANDLED
  252. }
  253. public Pressedrod(id, menu, item)
  254. {
  255.     new data[6], name[64]
  256.     new access, callback
  257.     menu_item_getinfo(menu, item, access, data, 5, name, 63, callback)
  258.     switch(str_to_num(data))
  259.     {
  260.         case 0:
  261.         {
  262.             if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
  263.                 HasC4[id] = true;
  264.             else
  265.                 HasC4[id] = false;
  266.  
  267.             strip_user_weapons (id)
  268.             give_item(id,"weapon_ak47")
  269.             give_item(id,"ammo_762nato")
  270.             give_item(id,"ammo_762nato")
  271.             give_item(id,"ammo_762nato")
  272.             give_item(id,"weapon_deagle")
  273.             give_item(id,"ammo_50ae")
  274.             give_item(id,"ammo_50ae")
  275.             give_item(id,"ammo_50ae")
  276.             give_item(id,"ammo_50ae")
  277.             give_item(id,"ammo_50ae")
  278.             give_item(id,"ammo_50ae")
  279.             give_item(id,"ammo_50ae")
  280.             give_item(id,"weapon_knife")
  281.             give_item(id,"weapon_hegrenade")
  282.             give_item(id, "weapon_smokegrenade");
  283.             give_item(id, "item_assaultsuit");
  284.             give_item(id, "item_thighpack");
  285.             chat(id, "!g[VIP]!n You Taked Free AK47 and Deagle")
  286.  
  287.             if (HasC4[id])
  288.             {
  289.                 give_item(id, "weapon_c4");
  290.                 cs_set_user_plant( id );
  291.             }
  292.         }
  293.         case 1:
  294.         {
  295.             if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
  296.                 HasC4[id] = true;
  297.             else
  298.                 HasC4[id] = false;
  299.  
  300.             strip_user_weapons (id)
  301.             give_item(id,"weapon_m4a1")
  302.             give_item(id,"ammo_556nato")
  303.             give_item(id,"ammo_556nato")
  304.             give_item(id,"ammo_556nato")
  305.             give_item(id,"weapon_deagle")
  306.             give_item(id,"ammo_50ae")
  307.             give_item(id,"ammo_50ae")
  308.             give_item(id,"ammo_50ae")
  309.             give_item(id,"ammo_50ae")
  310.             give_item(id,"ammo_50ae")
  311.             give_item(id,"ammo_50ae")
  312.             give_item(id,"ammo_50ae")
  313.             give_item(id,"weapon_knife")
  314.             give_item(id,"weapon_hegrenade")
  315.             give_item(id, "weapon_smokegrenade");
  316.             give_item(id, "item_assaultsuit");
  317.             give_item(id, "item_thighpack");
  318.             chat(id, "!g[VIP]!n You Taked Free M4A1 and Deagle")
  319.  
  320.             if (HasC4[id])
  321.             {
  322.                 give_item(id, "weapon_c4");
  323.                 cs_set_user_plant( id );
  324.             }
  325.         }
  326.         case 2:
  327.         {
  328.             if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
  329.                 HasC4[id] = true;
  330.             else
  331.                 HasC4[id] = false;
  332.  
  333.             strip_user_weapons (id)
  334.             give_item(id,"weapon_awp")
  335.             give_item(id,"ammo_338magnum")
  336.             give_item(id,"ammo_338magnum")
  337.             give_item(id,"ammo_338magnum")
  338.             give_item(id,"weapon_usp")
  339.             give_item(id,"ammo_45acp")
  340.             give_item(id,"ammo_45acp")
  341.             give_item(id,"ammo_45acp")
  342.             give_item(id,"ammo_45acp")
  343.             give_item(id,"ammo_45acp")
  344.             give_item(id,"ammo_45acp")
  345.             give_item(id,"ammo_45acp")
  346.             give_item(id,"ammo_45acp")
  347.             give_item(id,"ammo_45acp")
  348.             give_item(id,"weapon_knife")
  349.             give_item(id,"weapon_hegrenade")
  350.             give_item(id, "weapon_smokegrenade");
  351.             give_item(id, "item_assaultsuit");
  352.             give_item(id, "item_thighpack");
  353.             chat(id, "!g[VIP]!n You Taked Free AWP and USP")
  354.  
  355.             if (HasC4[id])
  356.             {
  357.                 give_item(id, "weapon_c4");
  358.                 cs_set_user_plant( id );
  359.             }
  360.         }
  361.     }
  362. }
  363. public HandleCmd(id){
  364.     if (!get_pcvar_num(g_awp_active))
  365.       return PLUGIN_CONTINUE
  366.     if(get_user_flags(id) & ADMIN_LEVEL_H)
  367.         return PLUGIN_CONTINUE
  368.     chat(id, "!g[VIP]!n Sniper's Only For VIP's")
  369.     return PLUGIN_HANDLED
  370. }
  371.  
  372. public ShowMotd(id)
  373. {
  374.  show_motd(id, "vip.txt")
  375. }
  376. public client_authorized(id)
  377. {
  378.  set_task(40.0, "PrintText" ,id)
  379. }
  380. public PrintText(id)
  381. {
  382.  chat(id, "!g[VIP]!n Write!g /vipinfo!n To See VIP Privileges!")
  383. }
  384.  
  385. public handle_say(id) {
  386.     new said[192]
  387.     read_args(said,192)
  388.     if( ( containi(said, "who") != -1 && containi(said, "admin") != -1 ) || contain(said, "/vips") != -1 )
  389.         set_task(0.1,"print_adminlist",id)
  390.     return PLUGIN_CONTINUE
  391. }
  392.  
  393. public print_adminlist(user)
  394. {
  395.     new adminnames[33][32]
  396.     new message[256]
  397.     new contactinfo[256], contact[112]
  398.     new id, count, x, len
  399.  
  400.     for(id = 1 ; id <= maxplayers ; id++)
  401.         if(is_user_connected(id))
  402.             if(get_user_flags(id) & ADMIN_LEVEL_H)
  403.                 get_user_name(id, adminnames[count++], 31)
  404.  
  405.     len = format(message, 255, "%s VIP ONLINE: ",COLOR)
  406.     if(count > 0) {
  407.         for(x = 0 ; x < count ; x++) {
  408.             len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
  409.             if(len > 96 ) {
  410.                 chat(user, message)
  411.                 len = format(message, 255, "%s ",COLOR)
  412.             }
  413.         }
  414.         chat(user, message)
  415.     }
  416.     else {
  417.         len += format(message[len], 255-len, "No VIP online.")
  418.         chat(user, message)
  419.     }
  420.  
  421.     get_cvar_string("amx_contactinfo", contact, 63)
  422.     if(contact[0])  {
  423.         format(contactinfo, 111, "%s Contact Server Admin -- %s", COLOR, contact)
  424.         chat(user, contactinfo)
  425.     }
  426. }
  427.  
  428. public hook_say(id)
  429. {
  430.     new SzMessages[192], SzName[32];
  431.     new SzAlive = is_user_alive(id);
  432.     new SzGetFlag = get_user_flags(id);
  433.    
  434.     read_args(SzMessages, 191);
  435.     remove_quotes(SzMessages);
  436.     get_user_name(id, SzName, 31);
  437.    
  438.  
  439.     if(!is_valid_msg(SzMessages))    
  440.     return PLUGIN_CONTINUE;
  441.        
  442.     if(get_pcvar_num(VIPPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
  443.     else if(get_pcvar_num(VIPPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
  444.     for(new i = 1; i <= SzMaxPlayers; i++)
  445.         {
  446.             if(!is_user_connected(i))
  447.                 continue;
  448.        
  449.             if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
  450.                 {
  451.                     message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
  452.                     write_byte(id);
  453.                     write_string(SzMessages);
  454.                     message_end();
  455.                 }
  456.         }
  457.  
  458.     return PLUGIN_CONTINUE;
  459. }
  460.  
  461. public hook_say_team(id){
  462.     new SzMessages[192], SzName[32];
  463.     new SzAlive = is_user_alive(id);
  464.     new SzGetFlag = get_user_flags(id);
  465.     new SzGetTeam = get_user_team(id);
  466.  
  467.     read_args(SzMessages, 191);
  468.     remove_quotes(SzMessages);
  469.     get_user_name(id, SzName, 31);
  470.  
  471.     if(!is_valid_msg(SzMessages))
  472.     return PLUGIN_CONTINUE;
  473.        
  474.     if(get_pcvar_num(VIPPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^1(%s) ^4[%s] ^3%s : ^4%s", SzGTeam[SzGetTeam], PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^4%s", SzGTeam[SzGetTeam], VIPPrefix, SzName, SzMessages));
  475.     else if(get_pcvar_num(VIPPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^1(%s) ^3%s : ^1%s", SzGTeam[SzGetTeam], SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^1(%s) ^3%s : ^1%s", SzGTeam[SzGetTeam], SzName, SzMessages));
  476.  
  477.     for(new i = 1; i <= SzMaxPlayers; i++)
  478.         {
  479.             if(!is_user_connected(i))
  480.                 continue;
  481.            
  482.             if(get_user_team(i) != SzGetTeam)
  483.                 continue;
  484.            
  485.             if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
  486.                 {
  487.                     message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
  488.                     write_byte(id);
  489.                     write_string(SzMessages);
  490.                     message_end();
  491.                 }
  492.         }
  493.  
  494.     return PLUGIN_CONTINUE;
  495. }
  496.  
  497. bool:is_valid_msg(const SzMessages[]){
  498.     if( SzMessages[0] == '@'
  499.     || !strlen(SzMessages)){ return false; }
  500.     return true;
  501. }
  502.  
  503. public client_putinserver(id)
  504. {
  505.     if(access(id,VIP_LEVEL))
  506.     {
  507.         vips[id] = true
  508.     }
  509. }
  510.  
  511. public client_disconnect(id)
  512. {
  513.     if( vips[id] )
  514.     {
  515.         vips[id] = false
  516.     }
  517. }
  518.  
  519. public resethud(id)
  520. {
  521.     if( vips[id] )
  522.     {
  523.         set_user_scoreattrib(id,4)
  524.     }
  525. }
  526.  
  527. stock set_user_scoreattrib(id,attrib=0)
  528. {
  529.     message_begin(2,get_user_msgid("ScoreAttrib"),{0,0,0},0);
  530.     write_byte(id);
  531.     write_byte(attrib);
  532.     message_end();
  533. }  
  534.  
  535. stock chat(const id, const input[], any:...) {
  536.     new count = 1, players[32];
  537.     static msg[191];
  538.     vformat(msg, 190, input, 3);
  539.  
  540.     replace_all(msg, 190, "!g", "^4");
  541.     replace_all(msg, 190, "!n", "^1");
  542.     replace_all(msg, 190, "!t", "^3");
  543.  
  544.     if(id) players[0] = id;
  545.     else get_players(players, count, "ch"); {
  546.         for(new i = 0; i < count; i++) {
  547.             if(is_user_connected(players[i])) {
  548.                 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  549.                 write_byte(players[i]);
  550.                 write_string(msg);
  551.                 message_end();
  552.             }
  553.         }
  554.     }
  555. }
Add Comment
Please, Sign In to add comment