Sorinel

VIP

Aug 5th, 2020
1,426
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include < amxmodx >
  2. #include < cstrike >
  3. #include < engine >
  4. #include < hamsandwich >
  5. #include < fakemeta_util >
  6.  
  7. //#pragma semicolon 1
  8.  
  9. ShowMenu[ 33 ] = 0;
  10.  
  11. #define Plugin    "Xarea VIP"
  12. #define Version   "1.0"
  13. #define Author    "Sorinel"
  14.  
  15. #define VIP_FLAG ADMIN_LEVEL_H
  16.  
  17. #define VIP_PARACHUTE read_flags( "r" )
  18. #define VIP_SPEED_KNIFE read_flags( "s" )
  19.  
  20. #define KILL_HP         10       // cat hp primeste pe kill
  21. #define HS_HP           20      //  cat hp primeste cand da hs
  22. #define FRAG_HP_LIMIT   100    //   limita hp la kill
  23.  
  24. new const restricted_maps[ ][ ] =
  25. {
  26.     "35hp",                
  27.     "31hp",                // Poti adauga tu mai multe mape dupa model
  28.     "1hp",
  29.     "awp_garden",
  30.     "awp_bycastor32",
  31.     "awp_zigzag",
  32.     "awp_bycastor",
  33.     "css_bycastor",
  34.     "css_india2",
  35.     "css_india_go",
  36.     "css_deagle",
  37. //  "fy_snow",
  38.     "fy_cluj",
  39.     "fy_buzzkill"
  40. };
  41.  
  42. /*
  43. enum {
  44.     SCOREATTRIB_ARG_PLAYERID = 1,
  45.     SCOREATTRIB_ARG_FLAGS
  46. }
  47.  
  48. enum ( <<= 1 ) {
  49.     SCOREATTRIB_FLAG_NONE = 0,
  50.     SCOREATTRIB_FLAG_DEAD = 1,
  51.     SCOREATTRIB_FLAG_BOMB,
  52.     SCOREATTRIB_FLAG_VIP
  53. }*/
  54.  
  55. const WEAPON_BITSUM = (1<<CSW_SCOUT) | (1<<CSW_XM1014) | (1<<CSW_MAC10) | (1<<CSW_AUG) | (1<<CSW_UMP45) | (1<<CSW_SG550) | (1<<CSW_P90) |
  56. (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) |
  57. (1<<CSW_AK47) | (1<<CSW_GALIL) | (1<<CSW_GLOCK18) | (1<<CSW_USP);
  58.  
  59.  
  60. public plugin_init( ) {
  61.  
  62.        register_plugin( Plugin, Version, Author );
  63.        register_event("DeathMsg", "death_msg", "a", "1>0");
  64.        RegisterHam( Ham_Spawn, "player", "PlayerSpawn", 1 );  
  65.        register_event( "CurWeapon","CheckWeapon","be","1=1" );
  66. //     register_message( get_user_msgid( "ScoreAttrib" ), "MessageScoreAttrib" );
  67. }
  68.  
  69. public client_putinserver( id ) {
  70.  
  71.        new map_name[32], i;
  72.        get_mapname(map_name, charsmax(map_name));
  73.    
  74.        for(i = 0; i < sizeof(restricted_maps); i++)
  75.        {
  76.         if(equali(map_name, restricted_maps[i]))
  77.         {
  78.             remove_user_flags(id, VIP_FLAG);
  79.         }
  80.        }
  81. }
  82.  
  83. public DisplayMenu( id ) {
  84.  
  85.     new menu = menu_create( "Equipment", "menu_handler" );
  86.        
  87.     menu_additem( menu, "M4A1", "", 0, ADMIN_LEVEL_H );
  88.     menu_additem( menu, "AK47", "", 0, ADMIN_LEVEL_H );
  89.         menu_additem( menu, "AWP \r(Only in round 3)", "", 0, ADMIN_LEVEL_H );
  90.    
  91.     menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );   
  92.         menu_display( id, menu, 0 );
  93. }
  94.  
  95. public menu_handler( id, menu, item )
  96. {
  97.     switch( item )
  98.     {
  99.         case 0:
  100.         {
  101.                         drop_wpn( id );
  102.                        
  103.                 fm_give_item(id, "weapon_m4a1" );
  104.                         cs_set_user_bpammo(id, CSW_M4A1, 90 );
  105.  
  106.                 fm_give_item(id, "weapon_deagle" );
  107.                         cs_set_user_bpammo(id, CSW_DEAGLE, 35 );
  108.  
  109.         }
  110.         case 1:
  111.         {
  112.                         drop_wpn( id );
  113.      
  114.                 fm_give_item(id, "weapon_ak47" );
  115.                         cs_set_user_bpammo(id, CSW_AK47, 90 );
  116.        
  117.                 fm_give_item(id, "weapon_deagle" );
  118.                         cs_set_user_bpammo(id, CSW_DEAGLE, 35 );
  119.  
  120.                 }          
  121.                 case 2:
  122.    
  123.                 if( ShowMenu[id] >= 3 )
  124.                 {
  125.                         drop_wpn( id );
  126.  
  127.                         fm_give_item(id, "weapon_awp" );
  128.                         cs_set_user_bpammo(id, CSW_AWP, 90 );
  129.  
  130.                         fm_give_item(id, "weapon_deagle" );
  131.                         cs_set_user_bpammo(id, CSW_DEAGLE, 35 );
  132.                 }    
  133.                 else        
  134.                 {
  135.                         ShowMenu[id]++;
  136.                 }        
  137.         }  
  138.    
  139.     menu_destroy( menu ); return PLUGIN_HANDLED;
  140. }
  141.  
  142. bonus_health(id, health)
  143. {
  144.     if( is_user_bot(id) )
  145.           return PLUGIN_HANDLED;
  146.    
  147.     static limit;
  148.     limit = FRAG_HP_LIMIT;
  149.    
  150.     if( is_user_alive( id ) && get_user_flags( id ) & VIP_FLAG )
  151.     {
  152.         limit = FRAG_HP_LIMIT;
  153.     }
  154.    
  155.     fm_set_user_health(id, clamp((get_user_health(id) + health), 1, limit) );
  156.     return PLUGIN_HANDLED;
  157. }
  158.  
  159. public PlayerSpawn( id ) {
  160.    
  161.     if( is_user_alive( id ) && get_user_flags( id ) & VIP_FLAG) {
  162.        
  163.         if( ShowMenu[id] >= 2 )
  164.         {
  165.             DisplayMenu( id );
  166.            
  167.             fm_give_item(id, "weapon_hegrenade" );
  168.             fm_give_item(id, "weapon_flashbang" );
  169.             cs_set_user_bpammo(id, CSW_FLASHBANG, 2 );  
  170.         }  
  171.         else
  172.         {
  173.             ShowMenu[id]++;
  174.         }
  175.     }
  176. }
  177.  
  178. /*
  179. public MessageScoreAttrib(iMsgId, iDest, iReceiver)
  180. {
  181.     new iPlayer = get_msg_arg_int(SCOREATTRIB_ARG_PLAYERID);
  182.    
  183.     if(get_user_flags(iPlayer) & VIP_FLAG )
  184.         set_msg_arg_int(SCOREATTRIB_ARG_FLAGS, ARG_BYTE, SCOREATTRIB_FLAG_VIP);
  185. }*/
  186.  
  187.  
  188. public death_msg()
  189. {
  190.     new killer = read_data(1);
  191.     new victim = read_data(2);
  192.         new headshot = read_data(3);
  193.  
  194.     if(killer == victim || !is_user_connected(victim) || !is_user_alive(killer))
  195.                      return PLUGIN_HANDLED;
  196.  
  197.         if (headshot)
  198.         {
  199.                 bonus_health(killer, HS_HP);
  200.         }
  201.         else
  202.         {
  203.                 bonus_health(killer, KILL_HP);
  204.         }
  205.         return PLUGIN_CONTINUE;
  206. }
  207.  
  208. public CheckWeapon( id ) {
  209.    
  210.     new Weapon;
  211.  
  212.     Weapon = get_user_weapon(id);
  213.    
  214.     if( Weapon == CSW_KNIFE ) {
  215.        
  216.         if( is_user_alive( id ) && get_user_flags( id ) & VIP_SPEED_KNIFE ) {
  217.            
  218.                fm_set_user_maxspeed(id, 350.0 );
  219.         }
  220.     }
  221. }  
  222.  
  223. public client_PreThink(id)
  224. {
  225.     if( is_user_alive( id ) && get_user_flags( id ) & VIP_PARACHUTE ) {
  226.        
  227.         new Float:fallspeed = 100.0 * -1.0;
  228.        
  229.         new button = get_user_button(id);
  230.         if(button & IN_USE)
  231.         {
  232.             new Float:velocity[3];
  233.             entity_get_vector(id, EV_VEC_velocity, velocity);
  234.             if (velocity[2] < 0.0)
  235.             {
  236.                 entity_set_int(id, EV_INT_sequence, 3);
  237.                 entity_set_int(id, EV_INT_gaitsequence, 1);
  238.                 entity_set_float(id, EV_FL_frame, 1.0);
  239.                 entity_set_float(id, EV_FL_framerate, 1.0);
  240.                
  241.                 velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed;
  242.                 entity_set_vector(id, EV_VEC_velocity, velocity);
  243.             }
  244.         }
  245.     }
  246. }
  247.  
  248. drop_wpn( id )
  249. {
  250.     static weapons[32], num;
  251.     get_user_weapons(id, weapons, num);
  252.  
  253.     for (new i = 0; i < num; i++)
  254.     {
  255.         if (WEAPON_BITSUM & (1<<weapons[i]))
  256.         {
  257.             static wname[32];
  258.             get_weaponname(weapons[i], wname, sizeof wname - 1);
  259.  
  260.             engclient_cmd(id, "drop", wname);
  261.         }
  262.     }
  263. }
RAW Paste Data