Advertisement
Hyuna

VIP Stuff

Apr 26th, 2016
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.85 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fakemeta>
  5. #include <fun>
  6. #include <hamsandwich>
  7.  
  8. #pragma semicolon 1
  9.  
  10. #define VIP_ACCESS ADMIN_CHAT /* flag "i" */
  11.  
  12. #define BEACON_TASKID 420
  13.  
  14. #define MAX_PLAYERS 32
  15.  
  16. #define MAX_KNIVES 6
  17.  
  18. #define XO_CBASEPLAYERITEM 4
  19.  
  20. const m_pPlayer = 41;
  21.  
  22. new g_iMenu;
  23.  
  24. new g_beacon_sprite;
  25.  
  26. new const g_beacon_sound[] = "buttons/blip1.wav";
  27. new const g_beacon_model[] = "sprites/laserbeam.spr";
  28.  
  29. new bool:g_beacon[MAX_PLAYERS + 1];
  30. new g_iKnives[MAX_PLAYERS + 1] = { -1, -1, ... };
  31.  
  32. enum _:KnifeData
  33. {
  34.     NAME[16],
  35.     VMODEL[64]
  36. };
  37.  
  38. new const g_KnivesData[MAX_KNIVES][KnifeData] = {
  39.     { "Default Knife", "models/v_knife.mdl" },
  40.     { "Knife #1", "models/newknives1234/v_knife1.mdl" },
  41.     { "Knife #2", "models/newknives1234/v_knife2.mdl" },
  42.     { "Knife #3", "models/newknives1234/v_knife3.mdl" },
  43.     { "Knife #4", "models/newknives1234/v_knife4.mdl" },
  44.     { "Knife #5", "models/newknives1234/v_knife5.mdl" }
  45. };
  46.  
  47. public plugin_init() {
  48.     register_plugin("VIP Stuff","v1.0","Hyuna");
  49.    
  50.     register_clcmd("say !vip","cmdVips",VIP_ACCESS,"Shows VIP Menu");
  51.    
  52.     RegisterHam(Ham_Killed,"player","fwdHamKilledPost",1);
  53.     RegisterHam(Ham_Item_Deploy,"weapon_knife","fwdHamItemDeployPost",1);
  54. }
  55.  
  56. public plugin_precache() {
  57.     g_beacon_sprite = precache_model(g_beacon_model);
  58.     precache_sound(g_beacon_sound);
  59.    
  60.     for (new i = 1; i < MAX_KNIVES; i++)
  61.     {
  62.         if(!file_exists(g_KnivesData[i][VMODEL])) // Safe fail check
  63.         {
  64.             new shit[128];
  65.             formatex(shit,charsmax(shit),"Error! Model ^"%s^" not found!",g_KnivesData[i][VMODEL]);
  66.             set_fail_state(shit);
  67.         }
  68.            
  69.         precache_model(g_KnivesData[i][VMODEL]);
  70.     }
  71. }
  72.  
  73. public plugin_cfg() {
  74.     g_iMenu = menu_create("[AMXX] VIP Menu","mHandler");
  75.    
  76.     menu_additem(g_iMenu,"Add 120HP");
  77.     menu_additem(g_iMenu,"Active/Deactive Beacon");
  78.     menu_additem(g_iMenu,"Drug me");
  79.     menu_additem(g_iMenu,"75% Gravity");
  80.     menu_addblank(g_iMenu,1);
  81.     menu_additem(g_iMenu,"Knife Menu");
  82. }
  83.  
  84. public client_connect(client) {
  85.     g_beacon[client] = false;
  86.     g_iKnives[client] = -1;
  87. }
  88.  
  89. public client_disconnect(client) {
  90.     g_beacon[client] = false;
  91.     g_iKnives[client] = -1;
  92. }
  93.  
  94. public fwdHamKilledPost(client, idattacker, shouldgib) {
  95.     g_beacon[client] = false;
  96. }
  97.  
  98. public fwdHamItemDeployPost(ent) {
  99.     new client = get_pdata_cbase(ent,m_pPlayer,XO_CBASEPLAYERITEM);
  100.  
  101.     set_pev(client,pev_viewmodel2,g_KnivesData[g_iKnives[client]][VMODEL]);
  102. }
  103.  
  104. public cmdVips(client,level,cid) {
  105.     if (!cmd_access(client,level,cid,1))
  106.     {
  107.         client_print(client,print_chat,"[AMXX] You have no access!");
  108.         return PLUGIN_HANDLED;
  109.     }
  110.    
  111.     if (!is_user_alive(client))
  112.     {
  113.         client_print(client,print_chat,"[AMXX] You need to be alive to use this menu!");
  114.         return PLUGIN_HANDLED;
  115.     }
  116.    
  117.     menu_display(client,g_iMenu);
  118.    
  119.     return PLUGIN_HANDLED;
  120. }
  121.  
  122. public mHandler(client,menu,item) {
  123.     if (!is_user_alive(client))
  124.         return PLUGIN_HANDLED;
  125.        
  126.     switch (item)
  127.     {
  128.         case 0:
  129.         {
  130.             set_user_health(client,max(get_user_health(client) + 120,255));
  131.             client_print(client,print_chat,"[AMXX] You have got 120HP!");
  132.         }
  133.        
  134.         case 1:
  135.         {
  136.             g_beacon[client] = !g_beacon[client];
  137.            
  138.             client_print(client,print_chat,"[AMXX] You have %sabled beacon!",(g_beacon[client] ? "en":"dis"));
  139.            
  140.             if (g_beacon[client])
  141.                 set_task(1.0,"create_beacon",BEACON_TASKID + client,.flags="b");
  142.         }
  143.         case 2:
  144.         {
  145.             makeMeDrugged(client);
  146.             client_print(client,print_chat,"[AMXX] You have smoked some weed!");
  147.         }
  148.        
  149.         case 3:
  150.         {
  151.             set_user_gravity(client,0.75);
  152.             client_print(client,print_chat,"[AMXX] You have got 25% less gravity!");
  153.         }
  154.        
  155.         case 4: showKnifeMenu(client);
  156.     }
  157.    
  158.     return PLUGIN_HANDLED;
  159. }
  160.  
  161. public showKnifeMenu(client) {
  162.     static shit[128], iKnivesMenu, i,cb;
  163.    
  164.     iKnivesMenu = menu_create("[AMXX] Vip's Knife Menu","mKnifeHandler");
  165.     cb = menu_makecallback("mKnifeCallback");
  166.    
  167.     for (i = 0; i < MAX_KNIVES; i++)
  168.     {
  169.         formatex(shit,charsmax(shit),"%s %s",g_KnivesData[i][NAME],(g_iKnives[client] == i ? "- Current Knife":""));
  170.         menu_additem(iKnivesMenu,shit,.callback=cb);
  171.     }
  172. }
  173.  
  174. public mKnifeCallback(client,menu,item) {
  175.     return (g_iKnives[client] == item) ? ITEM_DISABLED:ITEM_ENABLED;
  176. }
  177.  
  178. public mKnifeHandler(client,menu,item) {   
  179.     if (item != MENU_EXIT)
  180.     {
  181.         g_iKnives[client] = item;
  182.        
  183.         client_print(client,print_chat,"[AMXX] You have choosed %s as your current knife.",g_KnivesData[item][NAME]);  
  184.     }
  185.    
  186.     menu_destroy(menu);
  187.     return PLUGIN_HANDLED;
  188. }
  189.  
  190. public create_beacon(player) {
  191.     player -= BEACON_TASKID;
  192.    
  193.     if (!is_user_alive(player) || !g_beacon[player])
  194.     {
  195.         remove_task(player + BEACON_TASKID);
  196.         return;
  197.     }
  198.    
  199.     static origin[3];
  200.     emit_sound(player,CHAN_ITEM,g_beacon_sound,1.0,ATTN_NORM,0,PITCH_NORM);
  201.    
  202.     get_user_origin(player,origin);
  203.     message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  204.     write_byte(TE_BEAMCYLINDER);
  205.     write_coord(origin[0]); //position.x
  206.     write_coord(origin[1]); //position.y
  207.     write_coord(origin[2] - (pev(player,pev_button) & IN_DUCK ? 7:25)); //position.z
  208.     write_coord(origin[0]);    //axis.x
  209.     write_coord(origin[1]);    //axis.y
  210.     write_coord(origin[2]+200); //axis.z
  211.     write_short(g_beacon_sprite); //sprite index
  212.     write_byte(0);       //starting frame
  213.     write_byte(1);        //frame rate in 0.1's
  214.     write_byte(6);        //life in 0.1's
  215.     write_byte(2);        //line width in 0.1's
  216.     write_byte(1);        //noise amplitude in 0.01's
  217.    
  218.     new bool:is_terrorist = (cs_get_user_team(player) == CS_TEAM_T) ? true:false;
  219.    
  220.     write_byte(is_terrorist ? 255:0);   //red
  221.     write_byte(0);          //green
  222.     write_byte(is_terrorist ? 0:255);   //blue
  223.    
  224.     write_byte(255);     //brightness
  225.     write_byte(6);       //scroll speed in 0.1's
  226.     message_end();
  227. }
  228.  
  229. stock makeMeDrugged(client) {
  230.     static msgSetFOV;
  231.    
  232.     if (!msgSetFOV)
  233.         msgSetFOV = get_user_msgid("SetFOV");
  234.        
  235.     message_begin(MSG_ONE,msgSetFOV,{ 0, 0, 0 },client);
  236.     write_byte(180);
  237.     message_end();
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement