#include < amxmodx >
#include < fun >
#include < hamsandwich >
#include < fakemeta >
#include < cstrike >
#include < ColorChat >
#pragma semicolon 1
#define PLUGIN "Furien Mod Powers"
#define VERSION "0.1"
new const KageSound[ ] = "bleahhK.wav";
new const PsychoSound[ ] = "bleacP.wav";
new minigun_v [66] = "models/v_minigun.mdl";
new minigun_p [66] = "models/p_minigun.mdl";
new lama_v [66] = "models/v_super_lama.mdl";
new lama_p [66] = "models/p_super_lama.mdl";
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
new bool:UserIsKage[ 33 ];
new bool:UserIsPsycho[ 33 ];
new bool:Minigiun[33];
new bool:Lama[33];
new cvar_hp;
new cvar_ap;
new cvar_speed;
new cvar_hp2;
new cvar_ap2;
new cvar_speed2;
new SyncHudMessage;
public plugin_cfg( )
{
set_cvar_float("sv_maxspeed", 1000.0 );
}
public plugin_precache( )
{
precache_sound( KageSound );
precache_sound( PsychoSound );
precache_model( minigun_v );
precache_model( minigun_p );
precache_model( lama_v );
precache_model( lama_p );
}
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar" ); // Credits Hades Ownage // Edited FaTzZu
cvar_hp = register_cvar( "fmp_psycho_hp", "400" );
cvar_ap = register_cvar( "fmp_psycho_ap", "400" );
cvar_speed = register_cvar( "fmp_psycho_speed", "450" );
cvar_hp2 = register_cvar( "fmp_kage_hp", "400" );
cvar_ap2 = register_cvar( "fmp_kage_ap", "400" );
cvar_speed2 = register_cvar( "fmp_kage_speed", "450" );
RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawnPost", 1 );
register_event( "DeathMsg", "evDeathMsg", "a" );
register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" );
RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" );
RegisterHam( Ham_Player_ResetMaxSpeed, "player", "Ham_ResetMaxSpeedPost", 1 );
SyncHudMessage = CreateHudSyncObj( );
}
public client_connect( id )
{
if( is_user_bot( id ) || is_user_hltv( id ) ) return 0;
UserIsKage[ id ] = false;
UserIsPsycho[ id ] = false;
Minigiun [id] = false;
Lama [ id ] = false;
client_cmd( id , "cl_sidespeed 1000" );
client_cmd( id , "cl_forwardspeed 1000" );
client_cmd( id , "cl_backspeed 1000" );
return 0;
}
public client_disconnect( id )
{
if( is_user_bot( id ) || is_user_hltv( id ) ) return 0;
UserIsKage[ id ] = false;
UserIsPsycho[ id ] = false;
Minigiun [id] = false;
Lama [ id ] = false;
client_cmd( id , "cl_sidespeed 400" );
client_cmd( id , "cl_forwardpeed 400" );
client_cmd( id , "cl_backspeed 400" );
return 0;
}
public CurrentWeapon(id)
{
new iWeapon = get_user_weapon ( id );
if ( iWeapon == CSW_M249 && Minigiun[id] )
{
set_pev ( id, pev_viewmodel2, minigun_v );
set_pev ( id, pev_weaponmodel2, minigun_p );
}
if ( iWeapon == CSW_KNIFE && Lama[id] )
{
set_pev ( id, pev_viewmodel2, lama_v );
set_pev ( id, pev_weaponmodel2, lama_p );
}
}
public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
if ( Minigiun [ iAttacker ] && get_user_weapon ( iAttacker ) == CSW_M249 )
{
SetHamParamFloat( 4, fDamage * 2.0);
return HAM_HANDLED;
}
if ( Lama [ iAttacker ] && get_user_weapon ( iAttacker ) == CSW_KNIFE )
{
SetHamParamFloat( 4, fDamage * 3.0);
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Ham_PlayerSpawnPost( id )
{
if( !is_user_alive( id ) || !is_user_connected( id ) ) return HAM_IGNORED;
set_task( 0.1, "RemovePowers", id + 123 );
return HAM_IGNORED;
}
public RemovePowers( id )
{
id -= 123;
if( !is_user_connected( id ) ) return 1;
if( UserIsPsycho[ id ] )
set_user_rendering( id );
if( UserIsKage[ id ] || UserIsPsycho[ id ] )
set_user_armor( id, 0 );
UserIsPsycho[ id ] = false;
UserIsKage[ id ] = false;
Minigiun [id] = false;
Lama [id] = false;
client_cmd( id, "lastinv" );
client_cmd( id, "lastinv" );
return 0;
}
public SearchForPsycho( )
{
new iTerro = CountPlayers( 1 );
new iCounter = CountPlayers( 2 );
if( iCounter == 1 && iTerro > 0 )
{
new id = GetRemainingPlayerId( 2 );
if( UserIsPsycho[ id ] ) return 1;
UserIsPsycho[ id ] = true;
ColorChat( 0, RED,"^x04[AntiFurien]^x03 %s^x01 a devenit^x03 Psycho^x01 ! ", get_name( id ) );
ColorChat( 0, RED,"^x04[AntiFurien]^x01 Are^x03 %d^x01 HP,^x03 %d^x01 AP,^x03 %d^x01 Speed, aveti grija !", get_pcvar_num( cvar_hp ), get_pcvar_num( cvar_ap ), get_pcvar_num( cvar_speed ) );
set_hudmessage( 0, 255, 0, -1.0, -1.0, 0, 0.0, 5.0, 0.0, 1.0, 3);
ShowSyncHudMsg( 0, SyncHudMessage, "%s a devenit Psycho !^n Cea din urma salvare a omenirii !", get_name( id ) );
set_user_maxspeed( id, float( get_pcvar_num( cvar_speed ) ) );
set_user_health( id, get_pcvar_num( cvar_hp ) );
set_user_armor( id, get_pcvar_num( cvar_ap ) );
give_item(id, "weapon_m249");
cs_set_user_bpammo(id, CSW_M249, 300);
set_pev ( id, pev_viewmodel2, minigun_v );
set_pev ( id, pev_weaponmodel2, minigun_p );
Minigiun [id] = true;
Lama [id] = false;
set_user_rendering( id, kRenderFxGlowShell, 0, 255, 255, kRenderNormal, 25 );
new szCommand[ 128 ];
formatex( szCommand, sizeof ( szCommand ) -1,"cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f",
float( get_pcvar_num( cvar_speed ) ), float( get_pcvar_num( cvar_speed ) ),
float( get_pcvar_num( cvar_speed ) ) );
client_cmd( id, szCommand );
client_cmd( 0, "spk sound/%s", PsychoSound );
}
return 0;
}
public SearchForKage( )
{
new iTerro = CountPlayers( 1 );
new iCounter = CountPlayers( 2 );
if( iTerro == 1 && iCounter > 0 )
{
new id = GetRemainingPlayerId( 1 );
if( UserIsKage[ id ] ) return 1;
UserIsKage[ id ] = true;
ColorChat( 0, RED,"^x04[Furien]^x03 %s^x01 s-a transformat in^x03 Kage^x01 ! ", get_name( id ));
ColorChat( 0, RED,"^x04[Furien]^x01 Are^x03 %d^x01 HP,^x03 %d^x01 AP,^x03 %d^x01 Speed, aveti grija !", get_pcvar_num( cvar_hp2 ), get_pcvar_num( cvar_ap2 ), get_pcvar_num( cvar_speed2 ) );
set_hudmessage( 0, 255, 0, -1.0, -1.0, 0, 0.0, 5.0, 0.0, 1.0, 3);
ShowSyncHudMsg( 0, SyncHudMessage, "%s s-a transformat in Kage !^nSansele pamantenilor au scazut !", get_name( id ) );
set_user_maxspeed( id, float( get_pcvar_num( cvar_speed2 ) ) );
set_user_health( id, get_pcvar_num( cvar_hp2 ) );
set_user_armor( id, get_pcvar_num( cvar_ap2 ) );
Lama[id] = true;
Minigiun[id] = false;
set_pev ( id, pev_viewmodel2, lama_v );
set_pev ( id, pev_weaponmodel2, lama_p );
new szCommand[ 128 ];
formatex( szCommand, sizeof ( szCommand ) -1,"cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f",
float( get_pcvar_num( cvar_speed2 ) ), float( get_pcvar_num( cvar_speed2 ) ),
float( get_pcvar_num( cvar_speed2 ) ) );
client_cmd( id, szCommand );
client_cmd( 0, "spk sound/%s", KageSound );
}
return 0;
}
public evDeathMsg( )
{
SearchForPsycho( );
SearchForKage( );
new iKiller = read_data( 1 );
new iVictim = read_data( 2 );
if( !is_user_connected( iKiller ) || !is_user_connected( iVictim ) || iKiller == iVictim ) return 1;
if( UserIsKage[ iVictim ] )
{
ColorChat( 0, RED, "^x04[AntiFurien]^x01 Kage^x03 %s^x01 a fost omorat de^x03 %s^x01 !",get_name( iVictim ), get_name( iKiller ) );
}
else if( UserIsPsycho[ iVictim ] )
{
ColorChat( 0, RED, "^x04[AntiFurien]^x01 Psycho^x03 %s^x01 a fost omorat de^x03 %s^x01 !",get_name( iVictim ), get_name( iKiller ) );
}
return 0;
}
public Ham_ResetMaxSpeedPost( id )
{
if( is_user_alive( id ) && is_user_connected( id ) && get_user_maxspeed(id) != 1.0 )
{
new Float:flMaxSpeed;
if( UserIsPsycho[ id ] )
{
flMaxSpeed = float( get_pcvar_num( cvar_speed ) );
}
if( UserIsKage[ id ] )
{
flMaxSpeed = float( get_pcvar_num( cvar_speed2 ) );
}
if( flMaxSpeed > 0.0 )
{
set_pev( id, pev_maxspeed, flMaxSpeed );
// slow hack ? o_O
//client_cmd( id, "cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f", flMaxSpeed, flMaxSpeed, flMaxSpeed );
}
}
}
stock CountPlayers( const Team )
{
new iPlayers[ 32 ];
new iPlayersNum;
new iPlayersCount;
get_players( iPlayers, iPlayersNum, "ch" );
for( new i = 0 ; i < iPlayersNum ; i++ )
{
if( is_user_connected( iPlayers[ i ] ) && is_user_alive( iPlayers[ i ] ) )
{
if( Team == 1 )
{
if( get_user_team( iPlayers[ i ] ) == 1 )
{
iPlayersCount++;
}
}
else if( Team == 2 )
{
if( get_user_team( iPlayers[ i ] ) == 2 )
{
iPlayersCount++;
}
}
}
}
return iPlayersCount;
}
stock GetRemainingPlayerId( const Team )
{
new iPlayers[ 32 ];
new iPlayersNum;
new iPlayerId;
get_players( iPlayers, iPlayersNum, "ch" );
for( new i = 0 ; i < iPlayersNum ; i++ )
{
if( is_user_connected( iPlayers[ i ] ) && is_user_alive( iPlayers[ i ] ) )
{
if( Team == 1 )
{
if( get_user_team( iPlayers[ i ] ) == 1 )
{
iPlayerId = iPlayers[ i ];
}
}
else if( Team == 2 )
{
if( get_user_team( iPlayers[ i ] ) == 2 )
{
iPlayerId = iPlayers[ i ];
}
}
}
}
return iPlayerId;
}
stock get_name( id )
{
new name[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
return name;
}