Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Formatright © 2014
- Knife Vip
- Author: OvidiuS
- Original idea: GaMeR_FoReVeR (http://steamcommunity.com/id/GaMeR_FoReVeR/)
- Realease date: 11:20 PM, Wednesday, June 18, 2014 (CEST)
- *English*
- This plugin is free software;
- You can modify it under the terms of the
- GNU General Public License as published by the Free Software Foundation.
- *Serbian*
- Ovaj plugin je besplatni program;
- Možete ga menjati poštujući prava autora, samo ga ne smete prodavati.
- Svako kršenje GNU licence može da rezultitra tužbom.
- */
- #include < amxmodx >
- #include < amxmisc >
- #include < fakemeta >
- #include < engine >
- #include < hamsandwich >
- #include < cstrike >
- #include < fun >
- #define flag_set(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) )
- #define flag_rem(%1,%2) ( %1 &= ~( 1 << ( %2 & 31 ) ) )
- #define flag_get(%1,%2) ( %1 & ( 1 << ( %2 & 31 ) ) )
- #define MAX_JUMPS 2
- #define XTRA_OFS_PLAYER 5
- #define m_afButtonPressed 246
- #define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame
- enum
- {
- SCOREATTRIB_ARG_PLAYERID = 1,
- SCOREATTRIB_ARG_FLAGS
- };
- enum ( <<= 1 )
- {
- SCOREATTRIB_FLAG_NONE = 0,
- SCOREATTRIB_FLAG_DEAD = 1,
- SCOREATTRIB_FLAG_BOMB,
- SCOREATTRIB_FLAG_VIP
- };
- enum CVARS
- {
- GRAVITY,
- SPEED,
- MONEY,
- FLAGS_JUMP,
- FLAGS_MONEY,
- FLAGS_GRAVITY,
- FLAGS_SPEED,
- FLAGS_PARACHUTE
- };
- new const global_pCvars[ CVARS ][ ] =
- {
- "vip_gravity",
- "vip_speed",
- "vip_money",
- "vip_jump_flags",
- "vip_money_flags",
- "vip_gravity_flags",
- "vip_speed_flags",
- "vip_parachute_flags"
- };
- new const global_pValues[ CVARS ][ ] =
- {
- "0.4",
- "500.0",
- "2000",
- "b",
- "t",
- "t",
- "t",
- "t"
- };
- new global_sModels[ ][ ] =
- {
- "assasin",
- "doktor"
- };
- new global_msgScreenFade,
- global_bIsVip,
- global_bIsVip_Jump,
- global_bIsVip_Money,
- global_bIsVip_Gravity,
- global_bIsVip_Speed,
- global_bIsVip_Parachute;
- new global_iPlayerJumps[ 33 ],
- global_iParachuteEntity[ 33 ],
- global_sPlayerModel[ 33 ][ 64 ];
- new global_cPointer[ CVARS ];
- public plugin_init( )
- {
- register_plugin( "Knife Vip", "0.1", "OvidiuS" );
- for ( new CVARS:i = GRAVITY ; i < CVARS ; i++ )
- global_cPointer[ i ] = register_cvar( global_pCvars[ i ], global_pValues[ i ] );
- RegisterHam( Ham_Spawn, "player", "ham_Spawn_player_post", .Post = true );
- RegisterHam( Ham_Player_Jump, "player", "ham_Player_Jump_pre" );
- RegisterHam( Ham_CS_Player_ResetMaxSpeed, "player", "ham_ResetMaxSpeed_player_post", .Post = true );
- register_forward( FM_SetClientKeyValue, "forward_SetKeyValue" );
- register_event( "DeathMsg", "event_DeathMsg", "a" );
- register_message( get_user_msgid( "ClCorpse" ), "message_ClCorpse" );
- register_message( get_user_msgid( "ScoreAttrib" ), "message_ScoreAttrib" );
- global_msgScreenFade = get_user_msgid( "ScreenFade" );
- }
- public plugin_precache( )
- {
- precache_model( "models/player/doktor/doktor.mdl" );
- precache_model( "models/player/assasin/assasin.mdl" );
- precache_model( "models/parachute.mdl" );
- }
- public client_putinserver( id )
- {
- global_sPlayerModel[ id ][ 0 ] = EOS;
- new sFlags_Jump[ 2 ], sFlags_Money[ 2 ], sFlags_Gravity[ 2 ], sFlags_Speed[ 2 ], sFlags_Parachute[ 2 ];
- get_pcvar_string( global_cPointer[ FLAGS_JUMP ], sFlags_Jump, charsmax( sFlags_Jump ) );
- get_pcvar_string( global_cPointer[ FLAGS_MONEY ], sFlags_Money, charsmax( sFlags_Money ) );
- get_pcvar_string( global_cPointer[ FLAGS_GRAVITY ], sFlags_Gravity, charsmax( sFlags_Gravity ) );
- get_pcvar_string( global_cPointer[ FLAGS_SPEED ], sFlags_Speed, charsmax( sFlags_Speed ) );
- get_pcvar_string( global_cPointer[ FLAGS_PARACHUTE ], sFlags_Parachute, charsmax( sFlags_Parachute ) );
- new iFlags = get_user_flags( id );
- new iFlags_Jump = read_flags( sFlags_Jump );
- new iFlags_Money = read_flags( sFlags_Money );
- new iFlags_Gravity = read_flags( sFlags_Gravity );
- new iFlags_Speed = read_flags( sFlags_Speed );
- new iFlags_Parachute = read_flags( sFlags_Parachute );
- if( iFlags & iFlags_Jump || iFlags & iFlags_Money || iFlags & iFlags_Gravity || iFlags & iFlags_Speed || iFlags & iFlags_Parachute )
- {
- flag_set( global_bIsVip, id )
- if( iFlags & iFlags_Jump )
- flag_set( global_bIsVip_Jump, id );
- if( iFlags & iFlags_Money )
- flag_set( global_bIsVip_Money, id );
- if( iFlags & iFlags_Gravity )
- flag_set( global_bIsVip_Gravity, id );
- if( iFlags & iFlags_Speed )
- flag_set( global_bIsVip_Speed, id );
- if( iFlags & iFlags_Parachute )
- flag_set( global_bIsVip_Parachute, id );
- }
- }
- public client_disconnect( id )
- {
- flag_rem( global_bIsVip, id );
- flag_rem( global_bIsVip_Jump, id );
- flag_rem( global_bIsVip_Gravity, id );
- flag_rem( global_bIsVip_Speed, id );
- flag_rem( global_bIsVip_Parachute, id );
- }
- public client_PreThink( id )
- {
- if( flag_get( global_bIsVip_Parachute, id ) )
- {
- if( !is_user_alive( id ) )
- return;
- new button = get_user_button( id );
- new flags = get_entity_flags( id );
- if( button & IN_USE )
- {
- if( !( flags & FL_ONGROUND ) )
- {
- new Float:fVelocity[ 3 ];
- entity_get_vector( id, EV_VEC_velocity, fVelocity );
- if( fVelocity[ 2 ] < 0.0 )
- {
- if( global_iParachuteEntity[ id ] <= 0 )
- {
- global_iParachuteEntity[ id ] = create_entity( "info_target" );
- if( global_iParachuteEntity[ id ] > 0 )
- {
- entity_set_model( global_iParachuteEntity[ id ], "models/parachute.mdl" );
- entity_set_int( global_iParachuteEntity[ id ], EV_INT_movetype, MOVETYPE_FOLLOW );
- entity_set_edict( global_iParachuteEntity[ id ], EV_ENT_aiment, id );
- }
- }
- if( global_iParachuteEntity[ id ] > 0 )
- {
- fVelocity[ 2 ] = ( fVelocity[ 2 ] + 40.0 < -100.0 ) ? fVelocity[ 2 ] + 40.0 : -100.0;
- entity_set_vector( id, EV_VEC_velocity, fVelocity );
- if( entity_get_float( global_iParachuteEntity[ id ], EV_FL_frame) < 0.0 || entity_get_float( global_iParachuteEntity[ id ] , EV_FL_frame ) > 254.0 )
- {
- if( entity_get_int( global_iParachuteEntity[ id ], EV_INT_sequence) != 1 )
- entity_set_int( global_iParachuteEntity[ id ], EV_INT_sequence, 1 );
- entity_set_float( global_iParachuteEntity[ id ], EV_FL_frame, 0.0 );
- }
- else
- entity_set_float( global_iParachuteEntity[ id ], EV_FL_frame, entity_get_float( global_iParachuteEntity[ id ], EV_FL_frame ) + 1.0 );
- }
- }
- else if( global_iParachuteEntity[ id ] > 0 )
- {
- remove_entity( global_iParachuteEntity[ id ] )
- global_iParachuteEntity[ id ] = 0
- }
- }
- else if( global_iParachuteEntity[ id ] > 0 )
- {
- remove_entity( global_iParachuteEntity[ id ] )
- global_iParachuteEntity[ id ] = 0
- }
- }
- else if( global_iParachuteEntity[ id ] > 0 )
- {
- remove_entity( global_iParachuteEntity[ id ] )
- global_iParachuteEntity[ id ] = 0
- }
- }
- }
- public ham_Spawn_player_post( id )
- {
- if( is_user_alive( id ) && flag_get( global_bIsVip, id ) )
- {
- new CsTeams:iTeam = cs_get_user_team( id );
- if( iTeam == CS_TEAM_CT || iTeam == CS_TEAM_T )
- {
- copy( global_sPlayerModel[ id ], charsmax( global_sPlayerModel[ ] ), global_sModels[ _:iTeam - 1 ] );
- set_user_info( id, "model", global_sPlayerModel[ id ] );
- }
- if( global_iParachuteEntity[ id ] > 0 )
- {
- remove_entity( global_iParachuteEntity[ id ] )
- entity_set_float( id, EV_FL_gravity, 1.0 );
- global_iParachuteEntity[ id ] = 0;
- }
- if( flag_get( global_bIsVip_Gravity, id ) )
- entity_set_float( id, EV_FL_gravity, 1.0 - get_pcvar_float( global_cPointer[ GRAVITY ] ) );
- if( flag_get( global_bIsVip_Money, id ) )
- cs_set_user_money( id, cs_get_user_money( id ) + get_pcvar_num( global_cPointer[ MONEY ] ) );
- }
- }
- public ham_ResetMaxSpeed_player_post( id )
- {
- if( flag_get( global_bIsVip_Speed, id ) )
- {
- static Float:flSpeed;
- flSpeed = get_pcvar_float( global_cPointer[ SPEED ] );
- engfunc( EngFunc_SetClientMaxspeed, id, flSpeed );
- set_pev( id, pev_maxspeed, flSpeed );
- //client_cmd( id, "cl_forwardspeed %0.1f;cl_sidespeed %0.1f;cl_backspeed %0.1f", flSpeed, flSpeed, flSpeed );
- }
- }
- public ham_Player_Jump_pre( id )
- {
- if( !is_user_alive( id ) )
- return HAM_IGNORED;
- new fFlags = pev( id, pev_flags );
- if( fFlags & FL_WATERJUMP || pev( id, pev_waterlevel ) >= 2 || !( get_pdata_int( id, m_afButtonPressed, XTRA_OFS_PLAYER ) & IN_JUMP ) )
- {
- return HAM_IGNORED;
- }
- if( fFlags & FL_ONGROUND )
- {
- global_iPlayerJumps[ id ] = 0;
- return HAM_IGNORED;
- }
- if( flag_get( global_bIsVip_Jump, id ) && ++global_iPlayerJumps[ id ] < MAX_JUMPS )
- {
- new Float:fVelocity[ 3 ];
- pev( id, pev_velocity, fVelocity );
- fVelocity[ 2 ] = random_float( 265.0, 285.0 );
- set_pev( id, pev_velocity, fVelocity );
- return HAM_HANDLED;
- }
- return HAM_IGNORED;
- }
- public event_DeathMsg( )
- {
- new iAttacker = read_data( 1 );
- new iVictim = read_data( 2 );
- if( global_iParachuteEntity[ iVictim ] > 0 )
- {
- if( is_valid_ent( global_iParachuteEntity[ iVictim ] ) )
- remove_entity( global_iParachuteEntity[ iVictim ] );
- global_iParachuteEntity[ iVictim ] = 0;
- }
- if( iVictim != iAttacker )
- {
- if( flag_get( global_bIsVip, iVictim ) )
- UTIL_ScreenFade( iVictim, 1<<14, 1<<14, 1<<16, 0, 200, 250, 230 );
- }
- }
- public forward_SetKeyValue( id, const _szInfoBuffer[ ], const _szKey[ ], const _szValue[ ] )
- {
- if( global_sPlayerModel[ id ][ 0 ] && equal( _szKey, "model" ) && !equal( _szValue, global_sPlayerModel[ id ] ) )
- {
- set_user_info( id, "model", global_sPlayerModel[ id ] );
- return FMRES_SUPERCEDE;
- }
- return FMRES_IGNORED;
- }
- public message_ClCorpse( )
- {
- new id = get_msg_arg_int( 12 );
- if( global_sPlayerModel[ id ][ 0 ] )
- set_msg_arg_string( 1, global_sPlayerModel[ id ] );
- }
- public message_ScoreAttrib( msgId, iDestination, iReceiver )
- {
- new id = get_msg_arg_int( SCOREATTRIB_ARG_PLAYERID );
- if( flag_get( global_bIsVip, id ) )
- set_msg_arg_int( SCOREATTRIB_ARG_FLAGS, ARG_BYTE, SCOREATTRIB_FLAG_VIP );
- }
- stock UTIL_ScreenFade( id, iDuration, iHoldtime, iFadetype, red, green, blue, alpha )
- {
- message_begin( MSG_ONE, global_msgScreenFade, { 0, 0, 0 }, id );
- write_short( iDuration ); // Duration of fadeout
- write_short( iHoldtime ); // Hold time of color
- write_short( iFadetype ); // Fade type
- write_byte ( red ); // Red
- write_byte ( green ); // Green
- write_byte ( blue ); // Blue
- write_byte ( alpha ); // Alpha
- message_end( );
- }
Add Comment
Please, Sign In to add comment