Guest User

cs2card

a guest
May 26th, 2025
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.37 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < cstrike >
  3. #include < reapi >
  4.  
  5. new kills[ 33 ];
  6.  
  7. enum _:MESSAGES {
  8.     MSG_wpnlist,
  9.     MSG_curwpn,
  10.     MSG_setfov,
  11.     MSG_hide
  12. }
  13.  
  14. new Hooked_Msgs[ MESSAGES ];
  15.  
  16. new const Hooked_Msgs_Name[ MESSAGES ][ ] = {
  17.     "WeaponList", "CurWeapon", "SetFOV", "HideWeapon"
  18. }
  19.  
  20. new const sprites[ ][ ] = {
  21.     "kill_1", "kill_2", "kill_3", "kill_4",
  22.     "kill_5", "kill_6", "kill_7", "kill_8",
  23.     "kill_9", "kill_10", "kill_knife", "kill_combo",
  24.     "kill_he", "kill_headshot", "c4_set", "c4_defuse"
  25. }
  26.  
  27. new isKnife[ 33 ], isGrenade[ 33 ], isHeadshot[ 33 ], isDef, isPlant;
  28.  
  29. /*  --------------------------------------- -> | Discord: yvezzaint. | <- ---------------------------------------    */
  30.  
  31. public plugin_init()
  32. {
  33.     register_plugin("CS2: Cards", "1.0", "Yvezzaint");
  34.     RegisterHookChain( RG_CBasePlayer_Killed, "@PlayerKilled", true );
  35.  
  36.     register_event( "CurWeapon", "@SetSprite", "be", "1=1" );
  37.     register_event( "TextMsg", "@BombPlanted", "a", "2&%!MRAD_BOMBPL" );
  38.     register_event( "TextMsg", "@BombDefused", "a", "2&%!MRAD_BOMBDEF" );
  39.  
  40.     for( new i = 0; i < sizeof Hooked_Msgs; i++ )
  41.         Hooked_Msgs[ i ] = get_user_msgid( Hooked_Msgs_Name[ i ] );
  42. }
  43.  
  44. public plugin_precache()
  45. {
  46.     for (new i = 0; i < sizeof sprites; i++)
  47.     {
  48.         precache_model( fmt( "sprites/combo_cards/%s.spr", sprites[ i ] ) );
  49.         precache_generic( fmt( "sprites/combo_cards/%s.txt", sprites[ i ] ) );
  50.     }
  51. }
  52.  
  53. /*  --------------------------------------- -> | Player Connection | <- ---------------------------------------    */
  54.  
  55. public client_putinserver( id )
  56. {
  57.     kills[ id ] = 0;
  58.     isKnife[ id ] = 0;
  59.     isGrenade[ id ] = 0;
  60.     isHeadshot[ id ] = 0;
  61. }
  62.  
  63. public client_disconnected( id )
  64. {
  65.     kills[ id ] = 0;
  66.     isKnife[ id ] = 0;
  67.     isGrenade[ id ] = 0;
  68.     isHeadshot[ id ] = 0;
  69. }
  70.  
  71. /*  --------------------------------------- -> | Player Died | <- ---------------------------------------    */
  72.  
  73. public @PlayerKilled( iVictim, iKiller )
  74. {
  75.     if( !is_user_connected( iKiller ) )
  76.         return HC_CONTINUE;
  77.  
  78.     if( iVictim == iKiller )
  79.     {
  80.         kills[ iVictim ] = 0;
  81.         return HC_CONTINUE;
  82.     }
  83.  
  84.     kills[ iVictim ] = 0;
  85.     kills[ iKiller ] += 1;
  86.  
  87.     if( get_user_weapon( iKiller ) == CSW_KNIFE )
  88.         isKnife[ iKiller ] = 1;
  89.     else if( get_member( iVictim, m_bKilledByGrenade ) )
  90.         isGrenade[ iKiller ] = 1;
  91.     else if( get_member( iVictim, m_bHeadshotKilled ) )
  92.         isHeadshot[ iKiller ] = 1;
  93.  
  94.     @SetSprite( iKiller );
  95.     return HC_CONTINUE;
  96. }
  97.  
  98. /*  --------------------------------------- -> | Bomb Events | <- ---------------------------------------    */
  99.  
  100. public @BombPlanted()
  101. {
  102.     isPlant = 1;
  103.     TrigerAll();
  104. }
  105.  
  106. public @BombDefused()
  107. {
  108.     isDef = 1;
  109.     TrigerAll();
  110. }
  111.  
  112. /*  --------------------------------------- -> | Show Sprite | <- ---------------------------------------    */
  113.  
  114. public @Reset( id )
  115. {
  116.     isDef = 0;
  117.     isPlant = 0;
  118.     isKnife[ id ] = 0;
  119.     isGrenade[ id ] = 0;
  120.     isHeadshot[ id ] = 0;
  121.  
  122.     @SetSprite( id );
  123. }
  124.  
  125. public @SetSprite( id )
  126. {
  127.     if( kills[ id ] == 0 && !isKnife[ id ] && !isGrenade[ id ] && !isHeadshot[ id ] && !isDef && !isPlant )
  128.         return PLUGIN_CONTINUE;
  129.  
  130.     if( cs_get_user_zoom( id ) != CS_SET_NO_ZOOM )
  131.         return PLUGIN_CONTINUE;
  132.  
  133.     new wpn = get_user_weapon( id );
  134.     if( wpn == CSW_AWP || wpn == CSW_SCOUT || wpn == CSW_G3SG1 || wpn == CSW_SG550 )
  135.     {
  136.         message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_hide ], _, id );
  137.         write_byte( ( 1 << 6 ) );
  138.         message_end();
  139.     } else {
  140.         message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_hide ], _, id );
  141.         write_byte( 0 );
  142.         message_end();
  143.     }
  144.    
  145.     new Weapon, ammo, sprtxt[ 80 ];
  146.     Weapon = get_user_weapon( id, ammo );
  147.  
  148.     switch( kills[ id ] )
  149.     {
  150.         case 1: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_1");
  151.         case 2: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_2");
  152.         case 3: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_3");
  153.         case 4: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_4" );
  154.         case 5: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_5" );
  155.         case 6: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_6" );
  156.         case 7: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_7" );
  157.         case 8: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_8" );
  158.         case 9: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_9" );
  159.         case 10: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_10" );
  160.         default: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_combo" );
  161.     }
  162.  
  163.     if( isPlant == 1 )
  164.         formatex( sprtxt, charsmax( sprtxt ), "combo_cards/c4_set");
  165.     else if( isDef == 1 )
  166.         formatex( sprtxt, charsmax( sprtxt ), "combo_cards/c4_defuse");
  167.     else if( isHeadshot[id] == 1 )
  168.         formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_headshot");
  169.     else if( isGrenade[id] == 1 )
  170.         formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_he");
  171.     else if( isKnife[id] == 1)
  172.         formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_knife");
  173.  
  174.     if( isKnife[ id ] || isGrenade[ id ] || isHeadshot[ id ] || isDef || isPlant )
  175.         set_task( 3.0, "@Reset", id );
  176.  
  177.     switch ( Weapon )
  178.     {
  179.         case CSW_P228: Display( id, sprtxt, 9, 52 );
  180.         case CSW_HEGRENADE: Display( id, sprtxt, 12, 1 );
  181.         case CSW_XM1014: Display( id, sprtxt, 5, 32 );
  182.         case CSW_C4: Display( id, sprtxt, 14, 1 );
  183.         case CSW_MAC10: Display( id, sprtxt, 6, 100 );
  184.         case CSW_AUG: Display( id, sprtxt, 4, 90 );
  185.         case CSW_SMOKEGRENADE: Display( id, sprtxt, 13, 1 );
  186.         case CSW_ELITE: Display( id, sprtxt, 10, 120 );
  187.         case CSW_FIVESEVEN: Display( id, sprtxt, 7, 100 );
  188.         case CSW_UMP45: Display( id, sprtxt, 6, 100 );
  189.         case CSW_GALIL: Display( id, sprtxt, 4, 90 );
  190.         case CSW_FAMAS: Display( id, sprtxt, 4, 90 );
  191.         case CSW_USP: Display( id, sprtxt, 6, 100 );
  192.         case CSW_GLOCK18: Display( id, sprtxt, 10, 120 );
  193.         case CSW_MP5NAVY: Display( id, sprtxt, 10, 120 );
  194.         case CSW_M249: Display( id, sprtxt, 3, 200 );
  195.         case CSW_M3: Display( id, sprtxt, 5, 32 );
  196.         case CSW_M4A1: Display( id, sprtxt, 4, 90 );
  197.         case CSW_TMP: Display( id, sprtxt, 10, 120 );
  198.         case CSW_FLASHBANG: Display( id, sprtxt, 11, 2 );
  199.         case CSW_DEAGLE: Display( id, sprtxt, 8, 35 );
  200.         case CSW_SG552: Display( id, sprtxt, 4, 90 );
  201.         case CSW_AK47: Display( id, sprtxt, 2, 90 );
  202.         case CSW_KNIFE: Display( id, sprtxt, -1, -1 );
  203.         case CSW_P90: Display( id, sprtxt, 7, 100 );
  204.         case CSW_SCOUT: Display( id, sprtxt, 2, 90 );
  205.         case CSW_AWP: Display( id, sprtxt, 1, 30 );
  206.         case CSW_SG550: Display( id, sprtxt, 4, 90 );
  207.         case CSW_G3SG1: Display( id, sprtxt, 2, 90 );
  208.     }
  209.  
  210.     Msg_SetFOV( id, 89 );
  211.     Msg_CurWeapon( id, 1, 2, ammo );
  212.     Msg_SetFOV( id, 90 );
  213.  
  214.     return PLUGIN_CONTINUE;
  215. }
  216.  
  217. /*  --------------------------------------- -> | Stocks | <- ---------------------------------------    */
  218.  
  219. stock TrigerAll()
  220. {
  221.     new iPlayers[ 32 ], iPnum;
  222.     get_players( iPlayers, iPnum, "achi" )
  223.  
  224.     for(new i = 0; i < iPnum; i++)
  225.         @SetSprite( iPlayers[ i ] )
  226. }
  227.  
  228. stock Display( id, sprtxt[], nr1, nr2)
  229. {
  230.     Msg_WeaponList( id, sprtxt, nr1, nr2, -1, -1, 0, 11, 2, 0 );
  231. }
  232.  
  233. stock Msg_CurWeapon(id, IsActive, WeaponID, ClipAmmo)
  234. {
  235.  
  236.     message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_curwpn ], { 0, 0, 0 }, id );
  237.  
  238.     write_byte( IsActive );
  239.     write_byte( WeaponID );
  240.     write_byte( ClipAmmo );
  241.  
  242.     message_end();
  243. }
  244.  
  245. stock Msg_WeaponList( id, const WpnName[], PAmmoID, PAmmoMax, SAmmoID, SAmmoMax, SlotID, SlotNum, WpnID, Flags )
  246. {
  247.     message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_wpnlist ], { 0, 0, 0 }, id );
  248.  
  249.     write_string( WpnName );
  250.     write_byte( PAmmoID );
  251.     write_byte( PAmmoMax );
  252.     write_byte( SAmmoID );
  253.     write_byte( SAmmoMax );
  254.     write_byte( SlotID );
  255.     write_byte( SlotNum );
  256.     write_byte( WpnID );
  257.     write_byte( Flags );
  258.  
  259.     message_end();
  260. }
  261.  
  262.  
  263. stock Msg_SetFOV( id, Degrees )
  264. {
  265.     message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_setfov ], { 0, 0, 0 }, id );
  266.     write_byte( Degrees );
  267.     message_end();
  268. }
Advertisement
Add Comment
Please, Sign In to add comment