Facebook
From Crimson Crow, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 202
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5.  
  6. #define DAMAGE_RECIEVED
  7.  
  8. static const COLOR[] = "^x04" //green
  9. static const CONTACT[] = ""
  10.  
  11. new maxplayers
  12. new gmsgSayText
  13. new mpd, mkb, mhb
  14. new g_MsgSync
  15. new health_add
  16. new health_hs_add
  17. new health_max
  18. new nKiller
  19. new nKiller_hp
  20. new nHp_add
  21. new nHp_max
  22. new g_awp_active
  23. new g_menu_active
  24. new CurrentRound
  25. new bool:HasC4[33]
  26.  
  27. #define Keysrod (1<<0)|(1<<1)|(1<<2) // Keys: 1234567890
  28.  
  29. #if defined DAMAGE_RECIEVED
  30.         new g_MsgSync2
  31. #endif
  32.  
  33.  
  34. new const g_szFileName [ ] = "SILVER.ini"
  35. new g_szFile[ 128 ]
  36. new Trie: g_tVipList
  37. new bool: g_bIsVip[ 33 ]
  38.  
  39.  
  40. public plugin_init()
  41. {
  42.         register_plugin("VIP Eng Version", "3.0", "Dunno")
  43.         mpd = register_cvar("money_per_damage","3")
  44.         mkb = register_cvar("money_kill_bonus","300")
  45.         mhb = register_cvar("money_hs_bonus","600")
  46.         health_add = register_cvar("amx_vip_hp", "10")
  47.         health_hs_add = register_cvar("amx_vip_hp_hs", "15")
  48.         health_max = register_cvar("amx_vip_max_hp", "100")
  49.         g_awp_active = register_cvar("awp_active", "0")
  50.         g_menu_active = register_cvar("menu_active", "1")
  51.         register_event("Damage","Damage","b")
  52.         register_event("DeathMsg","death_msg","a")
  53.         register_menucmd(register_menuid("rod"), Keysrod, "Pressedrod")
  54.         register_clcmd("awp","HandleCmd")
  55.         register_clcmd("sg550","HandleCmd")
  56.         register_clcmd("g3sg1","HandleCmd")
  57.         register_clcmd("say /wantvip","ShowMotd")
  58.         maxplayers = get_maxplayers()
  59.         gmsgSayText = get_user_msgid("SayText")
  60.         register_clcmd("say", "handle_say")
  61.         register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
  62.         register_logevent("LogEvent_RoundStart", 2, "1=Round_Start" );
  63.         register_event("TextMsg","Event_RoundRestart","a","2&#Game_w")
  64.         register_event("TextMsg","Event_RoundRestart","a","2&#Game_C");
  65.         register_event("DeathMsg", "hook_death", "a", "1>0")
  66.         register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
  67.         g_MsgSync = CreateHudSyncObj()
  68.  
  69. #if defined DAMAGE_RECIEVED
  70.         g_MsgSync2 = CreateHudSyncObj()
  71. #endif 
  72. }
  73.  
  74.  
  75. public plugin_precache( )
  76. {
  77.    g_tVipList = TrieCreate( )
  78. }
  79.  
  80. public plugin_cfg( )
  81. {
  82.    new szDir[ 128  ];
  83.    get_configsdir( szDir, charsmax( szDir ) );
  84.    
  85.    formatex( g_szFile, charsmax( g_szFile ), "%s/%s", szDir, g_szFileName );
  86.    
  87.    if ( !file_exists( g_szFile ) )
  88.    {
  89.       new fp = fopen( g_szFile, "a+" );
  90.       if( fp )
  91.       {
  92.          fputs( fp, "; ===========================================================^n" );
  93.          fputs( fp, "; --------------------- VIP LIST ----------------------------^n" );
  94.          fputs( fp, "; ===========================================================^n" );
  95.          fputs( fp, "; Nota: Incepe randul cu ^";^" pentru a dezactiva un VIP^n" );
  96.          fputs( fp, "^b" );
  97.       }
  98.      
  99.       fclose( fp );
  100.    }
  101.    
  102.    ReadIniFile( )
  103. }
  104.  
  105. public plugin_end( )
  106. {
  107.    TrieDestroy( g_tVipList )
  108. }
  109.  
  110. ReadIniFile( )
  111. {
  112.    new fp = fopen( g_szFile , "rt" );
  113.    if( !fp )
  114.    {
  115.       return 0;
  116.    }
  117.    
  118.    new szData[ 256 ], i;
  119.    
  120.    while( !feof( fp ) )
  121.    {
  122.       fgets( fp, szData, charsmax( szData ) );
  123.       trim( szData );
  124.      
  125.       if( !szData[ 0 ] || szData[ 0 ] == ';' || szData[ 0 ] == '#' || (szData[ 0 ] == '/' && szData[ 1 ] == '/'))
  126.       {
  127.          continue;
  128.       }
  129.      
  130.       TrieSetCell( g_tVipList, szData, i )
  131.       i ++
  132.    }
  133.    
  134.    return 0
  135. }
  136.  
  137. public client_putinserver( id )
  138. {
  139.    new szName[ 32 ]; get_user_name( id, szName, charsmax( szName ) )
  140.    if( TrieKeyExists( g_tVipList, szName ) )
  141.    {
  142.       g_bIsVip[ id ] = true
  143.    }
  144. }
  145.  
  146.  
  147. public on_damage(id)
  148. {
  149.         new attacker = get_user_attacker(id)
  150.  
  151. #if defined DAMAGE_RECIEVED
  152.         // id should be connected if this message is sent, but lets check anyway
  153.         if ( is_user_connected(id) && is_user_connected(attacker) )
  154.         if (g_bIsVip[attacker])
  155.         {
  156.                 new damage = read_data(2)
  157.  
  158.                 set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
  159.                 ShowSyncHudMsg(id, g_MsgSync2, "%i^n", damage)
  160. #else
  161.         if ( is_user_connected(attacker) && g_bIsVip[attacker] )
  162.         {
  163.                 new damage = read_data(2)
  164. #endif
  165.                 set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
  166.                 ShowSyncHudMsg(attacker, g_MsgSync, "%i^n", damage)
  167.         }
  168. }
  169.  
  170. public Damage(id)
  171. {
  172.         new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
  173.         if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
  174.         if (g_bIsVip[attacker])
  175.         {
  176.                 new money = read_data(2) * get_pcvar_num(mpd)
  177.                 if(hitpoint==1) money += get_pcvar_num(mhb)
  178.                 cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
  179.         }
  180. }
  181.  
  182. public death_msg()
  183. {
  184.         if(read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2)&&g_bIsVip[read_data(1)]) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
  185. }
  186.  
  187. public LogEvent_RoundStart()
  188. {
  189.         CurrentRound++;
  190.         new players[32], player, pnum;
  191.         get_players(players, pnum, "a");
  192.         for(new i = 0; i < pnum; i++)
  193.         {
  194.                 player = players[i];
  195.                 if(is_user_alive(player) && g_bIsVip[player])
  196.                 {
  197.                         give_item(player, "weapon_hegrenade")
  198.                         give_item(player, "weapon_flashbang")
  199.                         give_item(player, "weapon_flashbang")
  200.                         give_item(player, "item_assaultsuit")
  201.                         give_item(player, "item_thighpack")
  202.                         give_item(player,"weapon_deagle")
  203.                         give_item(player,"ammo_50ae")
  204.                         give_item(player,"ammo_50ae")
  205.                         give_item(player,"ammo_50ae")
  206.                         give_item(player,"ammo_50ae")
  207.                         give_item(player,"ammo_50ae")
  208.                         give_item(player,"ammo_50ae")
  209.                         give_item(player,"ammo_50ae")
  210.                        
  211.                         if (!get_pcvar_num(g_menu_active))
  212.                                 return PLUGIN_CONTINUE
  213.                        
  214.                         if(CurrentRound >= 2)
  215.                         {
  216.                                 Showrod(player);
  217.                         }
  218.                 }
  219.         }
  220.         return PLUGIN_HANDLED
  221. }
  222.  
  223. public Event_RoundRestart()
  224. {
  225.         CurrentRound=0;
  226. }
  227.  
  228. public hook_death()
  229. {
  230.    // Killer id
  231.    nKiller = read_data(1)
  232.    
  233.    if ( (read_data(3) == 1) && (read_data(5) == 0) )
  234.    {
  235.       nHp_add = get_pcvar_num (health_hs_add)
  236.    }
  237.    else
  238.       nHp_add = get_pcvar_num (health_add)
  239.    nHp_max = get_pcvar_num (health_max)
  240.    // Updating Killer HP
  241.    if(!g_bIsVip[nKiller])
  242.    return;
  243.  
  244.    nKiller_hp = get_user_health(nKiller)
  245.    nKiller_hp += nHp_add
  246.    // Maximum HP check
  247.    if (nKiller_hp > nHp_max) nKiller_hp = nHp_max
  248.    set_user_health(nKiller, nKiller_hp)
  249.    // Hud message "Healed +15/+30 hp"
  250.    set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
  251.    show_hudmessage(nKiller, "Healed +%d hp", nHp_add)
  252.    // Screen fading
  253.    message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
  254.    write_short(1<<10)
  255.    write_short(1<<10)
  256.    write_short(0x0000)
  257.    write_byte(0)
  258.    write_byte(0)
  259.    write_byte(200)
  260.    write_byte(75)
  261.    message_end()
  262.  
  263. }
  264.  
  265. public Showrod(id) {
  266.         show_menu(id, Keysrod, "SILVER VIP^n\w1. Get M4A1+Deagle^n\w2. Get AK47+Deagle^n\0. Exit^n", -1, "rod") // Display menu
  267. }
  268.  
  269. public Pressedrod(id, key) {
  270.         /* Menu:
  271.         * VIP Menu
  272.         * 1. Get M4A1+Deagle
  273.         * 2. Get AK47+Deagle
  274.         * 0. Exit
  275.         */
  276.         switch (key) {
  277.                 case 0: {
  278.                         if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
  279.                                 HasC4[id] = true;
  280.                         else
  281.                                 HasC4[id] = false;
  282.            
  283.                         strip_user_weapons (id)
  284.                         give_item(id,"weapon_m4a1")
  285.                         give_item(id,"ammo_556nato")
  286.                         give_item(id,"ammo_556nato")
  287.                         give_item(id,"ammo_556nato")
  288.                         give_item(id,"weapon_deagle")
  289.                         give_item(id,"ammo_50ae")
  290.                         give_item(id,"ammo_50ae")
  291.                         give_item(id,"ammo_50ae")
  292.                         give_item(id,"ammo_50ae")
  293.                         give_item(id,"ammo_50ae")
  294.                         give_item(id,"ammo_50ae")
  295.                         give_item(id,"ammo_50ae")
  296.                         give_item(id,"weapon_knife")
  297.                         give_item(id,"weapon_hegrenade")
  298.                         give_item(id, "weapon_flashbang");
  299.                         give_item(id, "weapon_flashbang");
  300.                         give_item(id, "item_assaultsuit");
  301.                         give_item(id, "item_thighpack");
  302.                         client_print(id, print_center, "You Taked Free M4A1 and Deagle")
  303.                        
  304.                         if (HasC4[id])
  305.                         {
  306.                                 give_item(id, "weapon_c4");
  307.                                 cs_set_user_plant( id );
  308.                         }
  309.                         }
  310.                 case 1: {
  311.                         if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
  312.                                 HasC4[id] = true;
  313.                         else
  314.                                 HasC4[id] = false;
  315.            
  316.                         strip_user_weapons (id)
  317.                         give_item(id,"weapon_ak47")
  318.                         give_item(id,"ammo_762nato")
  319.                         give_item(id,"ammo_762nato")
  320.                         give_item(id,"ammo_762nato")
  321.                         give_item(id,"weapon_deagle")
  322.                         give_item(id,"ammo_50ae")
  323.                         give_item(id,"ammo_50ae")
  324.                         give_item(id,"ammo_50ae")
  325.                         give_item(id,"ammo_50ae")
  326.                         give_item(id,"ammo_50ae")
  327.                         give_item(id,"ammo_50ae")
  328.                         give_item(id,"ammo_50ae")
  329.                         give_item(id,"weapon_knife")
  330.                         give_item(id,"weapon_hegrenade")
  331.                         give_item(id, "weapon_flashbang");
  332.                         give_item(id, "weapon_flashbang");
  333.                         give_item(id, "item_assaultsuit");
  334.                         give_item(id, "item_thighpack");
  335.                         client_print(id, print_center, "You Taked Free AK47 and Deagle")
  336.                        
  337.                         if (HasC4[id])
  338.                         {
  339.                                 give_item(id, "weapon_c4");
  340.                                 cs_set_user_plant( id );
  341.                         }
  342.                         }
  343.                 case 2: {
  344.                         if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
  345.                                 HasC4[id] = true;
  346.                         else
  347.                                 HasC4[id] = false;
  348.            
  349.                         strip_user_weapons (id)
  350.                         give_item(id,"weapon_awp")
  351.                         give_item(id,"ammo_338magnum")
  352.                         give_item(id,"ammo_338magnum")
  353.                         give_item(id,"ammo_338magnum")
  354.                         give_item(id,"weapon_deagle")
  355.                         give_item(id,"ammo_50ae")
  356.                         give_item(id,"ammo_50ae")
  357.                         give_item(id,"ammo_50ae")
  358.                         give_item(id,"ammo_50ae")
  359.                         give_item(id,"ammo_50ae")
  360.                         give_item(id,"ammo_50ae")
  361.                         give_item(id,"ammo_50ae")
  362.                         give_item(id,"weapon_knife")
  363.                         give_item(id,"weapon_hegrenade")
  364.                         give_item(id, "weapon_flashbang");
  365.                         give_item(id, "weapon_flashbang");
  366.                         give_item(id, "item_assaultsuit");
  367.                         give_item(id, "item_thighpack");
  368.                         client_print(id, print_center, "You Taked Free AWP and Deagle")
  369.                        
  370.                         if (HasC4[id])
  371.                         {
  372.                                 give_item(id, "weapon_c4");
  373.                                 cs_set_user_plant( id );
  374.                         }
  375.                         }
  376.                 case 9: {                      
  377.                 }
  378.         }
  379.         return PLUGIN_CONTINUE
  380. }
  381.  
  382. public HandleCmd(id){
  383.         if (!get_pcvar_num(g_awp_active))
  384.       return PLUGIN_CONTINUE
  385.         if(!g_bIsVip[id])
  386.                 return PLUGIN_HANDLED
  387.         client_print(id, print_center, "Sniper's Only For VIP's")
  388.         return PLUGIN_HANDLED
  389. }
  390.  
  391. public ShowMotd(id)
  392. {
  393.  show_motd(id, "vip.txt")
  394. }
  395. public client_authorized(id)
  396. {
  397.  set_task(30.0, "PrintText" ,id)
  398. }
  399. public PrintText(id)
  400. {
  401.  client_print(id, print_chat, "[VIP] write /wantvip and u will see how get VIP and VIP privilegies.")
  402. }
  403.  
  404. public handle_say(id) {
  405.         new said[192]
  406.         read_args(said,192)
  407.         if( ( containi(said, "who") != -1 && containi(said, "admin") != -1 ) || contain(said, "/vips") != -1 )
  408.                 set_task(0.1,"print_adminlist",id)
  409.         return PLUGIN_CONTINUE
  410. }
  411.  
  412. public print_adminlist(user)
  413. {
  414.         new adminnames[33][32]
  415.         new message[256]
  416.         new contactinfo[256], contact[112]
  417.         new id, count, x, len
  418.        
  419.         for(id = 1 ; id <= maxplayers ; id++)
  420.                 if(is_user_connected(id))
  421.                         if(g_bIsVip[id])
  422.                                 get_user_name(id, adminnames[count++], 31)
  423.  
  424.         len = format(message, 255, "%s SILVER V.I.P: ",COLOR)
  425.         if(count > 0) {
  426.                 for(x = 0 ; x < count ; x++) {
  427.                         len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
  428.                         if(len > 96 ) {
  429.                                 print_message(user, message)
  430.                                 len = format(message, 255, "%s ",COLOR)
  431.                         }
  432.                 }
  433.                 print_message(user, message)
  434.         }
  435.         else {
  436.                 len += format(message[len], 255-len, "No VIP online.")
  437.                 print_message(user, message)
  438.         }
  439.        
  440.         get_cvar_string("amx_contactinfo", contact, 63)
  441.         if(contact[0])  {
  442.                 format(contactinfo, 111, "%s Contact Server Admin -- %s", COLOR, contact)
  443.                 print_message(user, contactinfo)
  444.         }
  445. }
  446.  
  447. print_message(id, msg[]) {
  448.         message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
  449.         write_byte(id)
  450.         write_string(msg)
  451.         message_end()
  452. }
  453.  
  454.  
  455. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  456. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1063\\ f0\\ fs16 \n\\ par }
  457. */
  458.