Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < amxmodx >
- #include < cstrike >
- #include < reapi >
- new kills[ 33 ];
- enum _:MESSAGES {
- MSG_wpnlist,
- MSG_curwpn,
- MSG_setfov,
- MSG_hide
- }
- new Hooked_Msgs[ MESSAGES ];
- new const Hooked_Msgs_Name[ MESSAGES ][ ] = {
- "WeaponList", "CurWeapon", "SetFOV", "HideWeapon"
- }
- new const sprites[ ][ ] = {
- "kill_1", "kill_2", "kill_3", "kill_4",
- "kill_5", "kill_6", "kill_7", "kill_8",
- "kill_9", "kill_10", "kill_knife", "kill_combo",
- "kill_he", "kill_headshot", "c4_set", "c4_defuse"
- }
- new isKnife[ 33 ], isGrenade[ 33 ], isHeadshot[ 33 ], isDef, isPlant;
- /* --------------------------------------- -> | Discord: yvezzaint. | <- --------------------------------------- */
- public plugin_init()
- {
- register_plugin("CS2: Cards", "1.0", "Yvezzaint");
- RegisterHookChain( RG_CBasePlayer_Killed, "@PlayerKilled", true );
- register_event( "CurWeapon", "@SetSprite", "be", "1=1" );
- register_event( "TextMsg", "@BombPlanted", "a", "2&%!MRAD_BOMBPL" );
- register_event( "TextMsg", "@BombDefused", "a", "2&%!MRAD_BOMBDEF" );
- for( new i = 0; i < sizeof Hooked_Msgs; i++ )
- Hooked_Msgs[ i ] = get_user_msgid( Hooked_Msgs_Name[ i ] );
- }
- public plugin_precache()
- {
- for (new i = 0; i < sizeof sprites; i++)
- {
- precache_model( fmt( "sprites/combo_cards/%s.spr", sprites[ i ] ) );
- precache_generic( fmt( "sprites/combo_cards/%s.txt", sprites[ i ] ) );
- }
- }
- /* --------------------------------------- -> | Player Connection | <- --------------------------------------- */
- public client_putinserver( id )
- {
- kills[ id ] = 0;
- isKnife[ id ] = 0;
- isGrenade[ id ] = 0;
- isHeadshot[ id ] = 0;
- }
- public client_disconnected( id )
- {
- kills[ id ] = 0;
- isKnife[ id ] = 0;
- isGrenade[ id ] = 0;
- isHeadshot[ id ] = 0;
- }
- /* --------------------------------------- -> | Player Died | <- --------------------------------------- */
- public @PlayerKilled( iVictim, iKiller )
- {
- if( !is_user_connected( iKiller ) )
- return HC_CONTINUE;
- if( iVictim == iKiller )
- {
- kills[ iVictim ] = 0;
- return HC_CONTINUE;
- }
- kills[ iVictim ] = 0;
- kills[ iKiller ] += 1;
- if( get_user_weapon( iKiller ) == CSW_KNIFE )
- isKnife[ iKiller ] = 1;
- else if( get_member( iVictim, m_bKilledByGrenade ) )
- isGrenade[ iKiller ] = 1;
- else if( get_member( iVictim, m_bHeadshotKilled ) )
- isHeadshot[ iKiller ] = 1;
- @SetSprite( iKiller );
- return HC_CONTINUE;
- }
- /* --------------------------------------- -> | Bomb Events | <- --------------------------------------- */
- public @BombPlanted()
- {
- isPlant = 1;
- TrigerAll();
- }
- public @BombDefused()
- {
- isDef = 1;
- TrigerAll();
- }
- /* --------------------------------------- -> | Show Sprite | <- --------------------------------------- */
- public @Reset( id )
- {
- isDef = 0;
- isPlant = 0;
- isKnife[ id ] = 0;
- isGrenade[ id ] = 0;
- isHeadshot[ id ] = 0;
- @SetSprite( id );
- }
- public @SetSprite( id )
- {
- if( kills[ id ] == 0 && !isKnife[ id ] && !isGrenade[ id ] && !isHeadshot[ id ] && !isDef && !isPlant )
- return PLUGIN_CONTINUE;
- if( cs_get_user_zoom( id ) != CS_SET_NO_ZOOM )
- return PLUGIN_CONTINUE;
- new wpn = get_user_weapon( id );
- if( wpn == CSW_AWP || wpn == CSW_SCOUT || wpn == CSW_G3SG1 || wpn == CSW_SG550 )
- {
- message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_hide ], _, id );
- write_byte( ( 1 << 6 ) );
- message_end();
- } else {
- message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_hide ], _, id );
- write_byte( 0 );
- message_end();
- }
- new Weapon, ammo, sprtxt[ 80 ];
- Weapon = get_user_weapon( id, ammo );
- switch( kills[ id ] )
- {
- case 1: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_1");
- case 2: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_2");
- case 3: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_3");
- case 4: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_4" );
- case 5: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_5" );
- case 6: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_6" );
- case 7: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_7" );
- case 8: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_8" );
- case 9: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_9" );
- case 10: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_10" );
- default: formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_combo" );
- }
- if( isPlant == 1 )
- formatex( sprtxt, charsmax( sprtxt ), "combo_cards/c4_set");
- else if( isDef == 1 )
- formatex( sprtxt, charsmax( sprtxt ), "combo_cards/c4_defuse");
- else if( isHeadshot[id] == 1 )
- formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_headshot");
- else if( isGrenade[id] == 1 )
- formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_he");
- else if( isKnife[id] == 1)
- formatex( sprtxt, charsmax( sprtxt ), "combo_cards/kill_knife");
- if( isKnife[ id ] || isGrenade[ id ] || isHeadshot[ id ] || isDef || isPlant )
- set_task( 3.0, "@Reset", id );
- switch ( Weapon )
- {
- case CSW_P228: Display( id, sprtxt, 9, 52 );
- case CSW_HEGRENADE: Display( id, sprtxt, 12, 1 );
- case CSW_XM1014: Display( id, sprtxt, 5, 32 );
- case CSW_C4: Display( id, sprtxt, 14, 1 );
- case CSW_MAC10: Display( id, sprtxt, 6, 100 );
- case CSW_AUG: Display( id, sprtxt, 4, 90 );
- case CSW_SMOKEGRENADE: Display( id, sprtxt, 13, 1 );
- case CSW_ELITE: Display( id, sprtxt, 10, 120 );
- case CSW_FIVESEVEN: Display( id, sprtxt, 7, 100 );
- case CSW_UMP45: Display( id, sprtxt, 6, 100 );
- case CSW_GALIL: Display( id, sprtxt, 4, 90 );
- case CSW_FAMAS: Display( id, sprtxt, 4, 90 );
- case CSW_USP: Display( id, sprtxt, 6, 100 );
- case CSW_GLOCK18: Display( id, sprtxt, 10, 120 );
- case CSW_MP5NAVY: Display( id, sprtxt, 10, 120 );
- case CSW_M249: Display( id, sprtxt, 3, 200 );
- case CSW_M3: Display( id, sprtxt, 5, 32 );
- case CSW_M4A1: Display( id, sprtxt, 4, 90 );
- case CSW_TMP: Display( id, sprtxt, 10, 120 );
- case CSW_FLASHBANG: Display( id, sprtxt, 11, 2 );
- case CSW_DEAGLE: Display( id, sprtxt, 8, 35 );
- case CSW_SG552: Display( id, sprtxt, 4, 90 );
- case CSW_AK47: Display( id, sprtxt, 2, 90 );
- case CSW_KNIFE: Display( id, sprtxt, -1, -1 );
- case CSW_P90: Display( id, sprtxt, 7, 100 );
- case CSW_SCOUT: Display( id, sprtxt, 2, 90 );
- case CSW_AWP: Display( id, sprtxt, 1, 30 );
- case CSW_SG550: Display( id, sprtxt, 4, 90 );
- case CSW_G3SG1: Display( id, sprtxt, 2, 90 );
- }
- Msg_SetFOV( id, 89 );
- Msg_CurWeapon( id, 1, 2, ammo );
- Msg_SetFOV( id, 90 );
- return PLUGIN_CONTINUE;
- }
- /* --------------------------------------- -> | Stocks | <- --------------------------------------- */
- stock TrigerAll()
- {
- new iPlayers[ 32 ], iPnum;
- get_players( iPlayers, iPnum, "achi" )
- for(new i = 0; i < iPnum; i++)
- @SetSprite( iPlayers[ i ] )
- }
- stock Display( id, sprtxt[], nr1, nr2)
- {
- Msg_WeaponList( id, sprtxt, nr1, nr2, -1, -1, 0, 11, 2, 0 );
- }
- stock Msg_CurWeapon(id, IsActive, WeaponID, ClipAmmo)
- {
- message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_curwpn ], { 0, 0, 0 }, id );
- write_byte( IsActive );
- write_byte( WeaponID );
- write_byte( ClipAmmo );
- message_end();
- }
- stock Msg_WeaponList( id, const WpnName[], PAmmoID, PAmmoMax, SAmmoID, SAmmoMax, SlotID, SlotNum, WpnID, Flags )
- {
- message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_wpnlist ], { 0, 0, 0 }, id );
- write_string( WpnName );
- write_byte( PAmmoID );
- write_byte( PAmmoMax );
- write_byte( SAmmoID );
- write_byte( SAmmoMax );
- write_byte( SlotID );
- write_byte( SlotNum );
- write_byte( WpnID );
- write_byte( Flags );
- message_end();
- }
- stock Msg_SetFOV( id, Degrees )
- {
- message_begin( MSG_ONE_UNRELIABLE, Hooked_Msgs[ MSG_setfov ], { 0, 0, 0 }, id );
- write_byte( Degrees );
- message_end();
- }
Advertisement
Add Comment
Please, Sign In to add comment