#include < amxmodx >
#include < fun >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < engine >
#include < xs >
#include < colorchat >
#define PLUGIN "[Furien] Kage vs Psycho"
#define VERSION "2.0"
new v_model[64] = "models/v_minigun.mdl";
new p_model[64] = "models/p_minigun.mdl";
new bool:minigun[33];
new const KageSound[ ] = "thunder.wav";
new const PsychoSound[ ] = "thunder.wav";
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
new bool:UserIsKage[ 33 ], bool:UserIsPsycho[ 33 ], bool:UserIsAlcadeaas[33],bool:UserIsAbyss[33],bool:UserIsBlasto[33],bool:UserIsDeklowas[33];
new cvar_hp, cvar_ap, cvar_speed, cvar_hp2, cvar_ap2, cvar_speed2, cvar_flames, cvar_dmg,cvar_hp_blasto,cvar_ap_blasto,cvar_speed_blasto,cvar_hp_decklowas,cvar_ap_decklowas, cvar_speed_decklowas,cvar_hp_alcadeeas, cvar_ap_alcadeeas,cvar_speed_alcadeeas, cvar_hp_abyss, cvar_ap_abyss, cvar_speed_abyss;
new SyncHudMessage, sprite_fire, sprite_burn;
new g_ThrowFlames[ 33 ], flame_count[ 33 ];
public plugin_cfg( )
set_cvar_float( "sv_maxspeed", 1000.0 );
public plugin_precache( )
{
precache_sound( KageSound );
precache_sound( PsychoSound );
sprite_fire = precache_model( "sprites/explode1.spr" );
sprite_burn = precache_model( "sprites/xfire.spr" );
precache_sound( "flamethrower.wav" );
precache_model(p_model)
precache_model(v_model)
}
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar & KronoS # GG & FaTzZu" );
cvar_hp = register_cvar( "fmp_psycho_hp", "250" );
cvar_ap = register_cvar( "fmp_psycho_ap", "300" );
cvar_speed = register_cvar( "fmp_psycho_speed", "600" );
cvar_hp_blasto = register_cvar( "fmp_blasto_hp", "1000" );
cvar_ap_blasto = register_cvar( "fmp_blasto_ap", "300" );
cvar_speed_blasto = register_cvar( "fmp_blasto_speed", "600" );
cvar_hp_decklowas = register_cvar( "fmp_decklowas_hp", "250" );
cvar_ap_decklowas = register_cvar( "fmp_decklowas_ap", "300" );
cvar_speed_decklowas = register_cvar( "fmp_decklowas_speed", "600" );
cvar_hp_alcadeeas = register_cvar( "fmp_alcadeeas_hp", "1000" );
cvar_ap_alcadeeas = register_cvar( "fmp_alcadeeas_ap", "300" );
cvar_speed_alcadeeas = register_cvar( "fmp_alcadeeas_speed", "600" );
cvar_hp_abyss = register_cvar( "fmp_abyss_hp", "250" );
cvar_ap_abyss = register_cvar( "fmp_abyss_ap", "300" );
cvar_speed_abyss = register_cvar( "fmp_abyss_speed", "600" );
cvar_hp2 = register_cvar( "fmp_kage_hp", "300" );
cvar_ap2 = register_cvar( "fmp_kage_ap", "300" );
cvar_speed2 = register_cvar( "fmp_kage_speed", "900" );
cvar_flames = register_cvar( "fmp_kage_flames", "20" );
cvar_dmg = register_cvar( "fmp_kage_flames_dmg", "30" );
register_clcmd( "fire", "amx_fflame" );
RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawnPost", 1 );
RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" );
register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" );
register_event( "DeathMsg", "evDeathMsg", "a" );
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;
UserIsAlcadeaas[id] = false;
UserIsAbyss[id] = false;
UserIsBlasto[id] = false;
UserIsDeklowas[id] = false
g_ThrowFlames[ id ] = 0;
flame_count[ id ] = 0;
minigun[id] = false;
client_cmd( id , "cl_sidespeed 1000" );
client_cmd( id , "cl_forwardspeed 1000" );
client_cmd( id , "cl_backspeed 1000" );
client_cmd( id , "bind x fire" );
return 0;
}
public client_disconnect( id )
{
if ( is_user_bot( id ) || is_user_hltv( id ) )
return 0;
UserIsKage[ id ] = false;
UserIsPsycho[ id ] = false;
UserIsAlcadeaas[id] = false;
UserIsAbyss[id] = false;
UserIsBlasto[id] = false;
UserIsDeklowas[id] = false
g_ThrowFlames[ id ] = 0;
flame_count[ id ] = 0;
minigun[id] = false;
client_cmd( id , "cl_sidespeed 400" );
client_cmd( id , "cl_forwardpeed 400" );
client_cmd( id , "cl_backspeed 400" );
return 0;
}
public Ham_PlayerSpawnPost( id )
{
if ( !is_user_alive( id ) )
return HAM_IGNORED;
set_task( 0.1, "RemovePowers", id + 123 );
return HAM_IGNORED;
}
public CurrentWeapon ( id ) {
new szWeapon = get_user_weapon ( id );
if ( szWeapon == CSW_M249 && minigun[id] ) {
set_pev ( id, pev_viewmodel2, v_model );
set_pev ( id, pev_weaponmodel2, p_model );
}
}
public RemovePowers( id )
{
id -= 123;
if ( !is_user_connected( id ) )
return 1;
if ( UserIsPsycho[ id ] )
set_user_rendering( id );
if ( UserIsKage[ id ] || UserIsPsycho[ id ] || UserIsAbyss[id] || UserIsAlcadeaas[id] || UserIsBlasto[id] || UserIsDeklowas[id])
set_user_armor( id, 0 );
UserIsPsycho[ id ] = false;
UserIsKage[ id ] = false;
UserIsAlcadeaas[id] = false;
UserIsAbyss[id] = false;
UserIsBlasto[id] = false;
UserIsDeklowas[id] = false
g_ThrowFlames[ id ] = 0;
flame_count[ id ] = 0;
minigun[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 );
new menu = menu_create("Ce doresti sa devi?", "menu_ct")
menu_additem(menu, "\wPsycho \r[\wMinigun\r]", "1", 0)
menu_additem(menu, "\wBlasto \r[\w1000HP + Gravity and Speed\r]", "2", 0)
menu_additem(menu, "\wDecklowas \r[\wInfinite HE + x4damage\r]", "3", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
return 0;
}
public menu_ct(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
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 ) );
set_task( 1.0, "give_weapon", id );
minigun[id] = true;
set_pev ( id, pev_viewmodel2, v_model );
set_pev ( id, pev_weaponmodel2, p_model );
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 );
}
case 2:
{
new id = GetRemainingPlayerId( 2 );
if ( UserIsBlasto[ id ] )
return 1;
UserIsBlasto[id] = true;
ColorChat( 0, RED,"^x04[AntiFurien]^x03 %s^x01 a devenit^x03 Blasto^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_blasto ), get_pcvar_num( cvar_ap_blasto ), get_pcvar_num( cvar_speed_blasto ) );
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 Blasto !^n Cea din urma salvare a omenirii !", get_name( id ) );
set_user_maxspeed( id, float( get_pcvar_num( cvar_speed_blasto ) ) );
set_user_health( id, get_pcvar_num( cvar_hp_blasto ) );
set_user_armor( id, get_pcvar_num( cvar_ap_blasto ) );
new szCommand[ 128 ];
formatex( szCommand, sizeof( szCommand ) - 1, "cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f",
float( get_pcvar_num( cvar_speed_blasto ) ), float( get_pcvar_num( cvar_speed_blasto ) ),
float( get_pcvar_num( cvar_speed_blasto ) ) );
client_cmd( id, szCommand );
client_cmd( 0, "spk sound/%s", PsychoSound );
}
case 3:
{
new id = GetRemainingPlayerId( 2 );
if(UserIsDeklowas[id])
return 1;
UserIsDeklowas[id] = true
ColorChat( 0, RED,"^x04[AntiFurien]^x03 %s^x01 a devenit^x03 Decklowas^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_decklowas ), get_pcvar_num( cvar_ap_decklowas ), get_pcvar_num( cvar_speed_decklowas ) );
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 Decklowas !^n Cea din urma salvare a omenirii !", get_name( id ) );
set_user_maxspeed( id, float( get_pcvar_num( cvar_speed_decklowas ) ) );
set_user_health( id, get_pcvar_num( cvar_hp_decklowas ) );
set_user_armor( id, get_pcvar_num( cvar_ap_decklowas ) );
give_item(id, "weapon_hegrenade")
cs_set_user_bpammo(id, CSW_HEGRENADE, 999)
new szCommand[ 128 ];
formatex( szCommand, sizeof( szCommand ) - 1, "cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f",
float( get_pcvar_num( cvar_speed_decklowas ) ), float( get_pcvar_num( cvar_speed_decklowas ) ),
float( get_pcvar_num( cvar_speed_decklowas ) ) );
client_cmd( id, szCommand );
client_cmd( 0, "spk sound/%s", PsychoSound );
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public give_weapon( id )
{
if ( is_user_alive( id ) && UserIsPsycho[ id ] )
{
give_item( id, "weapon_m249" );
cs_set_user_bpammo( id, CSW_M249, 200 );
}
}
public SearchForKage( )
{
new iTerro = CountPlayers( 1 );
new iCounter = CountPlayers( 2 );
if ( iTerro == 1 && iCounter > 0 )
{
new id = GetRemainingPlayerId( 1 );
new menu = menu_create("Ce doresti sa devi?", "menu_t")
menu_additem(menu, "\wKaGe \r[\wTrage cu foc (litera E)\r]", "1", 0)
menu_additem(menu, "\wAbyss \r[\wInfinite HE + x4damage\r]", "2", 0)
menu_additem(menu, "\wAlcadeeas \r[\w1000HP + Gravity and Speed\r]", "3", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
return 0;
}
public menu_t(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
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 ) );
g_ThrowFlames[ id ] = 1;
flame_count[ id ] = get_pcvar_num( cvar_flames );
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 ) );
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 );
}
case 2:
{
new id = GetRemainingPlayerId( 1 );
if ( UserIsAbyss[ id ] )
return 1;
UserIsAbyss[ id ] = true;
ColorChat( 0, RED,"^x04[Furien]^x03 %s^x01 s-a transformat in^x03 Abyss^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_hp_abyss ), get_pcvar_num( cvar_ap_abyss ), get_pcvar_num( cvar_speed_abyss ) );
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 Abyss !^nSansele pamantenilor au scazut !", get_name( id ) );
g_ThrowFlames[ id ] = 0;
set_user_maxspeed( id, float( get_pcvar_num( cvar_speed_abyss ) ) );
set_user_health( id, get_pcvar_num( cvar_hp_abyss ) );
set_user_armor( id, get_pcvar_num( cvar_ap_abyss ) );
new szCommand[ 128 ];
formatex( szCommand, sizeof( szCommand ) - 1, "cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f",
float( get_pcvar_num( cvar_speed_abyss ) ), float( get_pcvar_num( cvar_speed_abyss ) ),
float( get_pcvar_num( cvar_speed_abyss ) ) );
give_item(id, "weapon_hegrenade")
cs_set_user_bpammo(id, CSW_HEGRENADE, 999)
client_cmd( id, szCommand );
client_cmd( 0, "spk sound/%s", KageSound );
}
case 3:
{
new id = GetRemainingPlayerId( 1 );
if ( UserIsAlcadeaas[ id ] )
return 1;
UserIsAlcadeaas[ id ] = true;
ColorChat( 0, RED,"^x04[Furien]^x03 %s^x01 s-a transformat in^x03 Alcadeeas^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_hp_alcadeeas ), get_pcvar_num( cvar_ap_alcadeeas ), get_pcvar_num( cvar_speed_alcadeeas ) );
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 Alcadeeas !^nSansele pamantenilor au scazut !", get_name( id ) );
g_ThrowFlames[ id ] = 0;
set_user_maxspeed( id, float( get_pcvar_num( cvar_speed_alcadeeas ) ) );
set_user_health( id, get_pcvar_num( cvar_hp_alcadeeas ) );
set_user_armor( id, get_pcvar_num( cvar_ap_alcadeeas ) );
new szCommand[ 128 ];
formatex( szCommand, sizeof( szCommand ) - 1, "cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f",
float( get_pcvar_num( cvar_speed_alcadeeas ) ), float( get_pcvar_num( cvar_speed_alcadeeas ) ),
float( get_pcvar_num( cvar_speed_alcadeeas ) ) );
client_cmd( id, szCommand );
client_cmd( 0, "spk sound/%s", KageSound );
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
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[Furien]^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 ) );
else if ( UserIsAlcadeaas[ iVictim ] )
ColorChat( 0, RED, "^x04[AntiFurien]^x01 Alcadeeas^x03 %s^x01 a fost omorat de^x03 %s^x01 !",get_name( iVictim ), get_name( iKiller ) );
else if ( UserIsAbyss[ iVictim ] )
ColorChat( 0, RED, "^x04[AntiFurien]^x01 Abyss^x03 %s^x01 a fost omorat de^x03 %s^x01 !",get_name( iVictim ), get_name( iKiller ) );
else if ( UserIsDeklowas[ iVictim ] )
ColorChat( 0, RED, "^x04[AntiFurien]^x01 Decklowas^x03 %s^x01 a fost omorat de^x03 %s^x01 !",get_name( iVictim ), get_name( iKiller ) );
else if ( UserIsBlasto[ iVictim ] )
ColorChat( 0, RED, "^x04[AntiFurien]^x01 Blasto^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 ) && get_user_maxspeed( id ) != 1.0 )
{
new Float:flMaxSpeed;
if ( UserIsPsycho[ id ] )
flMaxSpeed = float( get_pcvar_num( cvar_speed ) );
else if ( UserIsKage[ id ] )
flMaxSpeed = float( get_pcvar_num( cvar_speed2 ) );
else if ( UserIsAbyss[ id ] )
flMaxSpeed = float( get_pcvar_num( cvar_speed_abyss ) );
else if ( UserIsAlcadeaas[ id ] )
flMaxSpeed = float( get_pcvar_num( cvar_speed_alcadeeas ) );
else if ( UserIsBlasto[ id ] )
flMaxSpeed = float( get_pcvar_num( cvar_speed_blasto ) );
else if ( UserIsDeklowas[ id ] )
flMaxSpeed = float( get_pcvar_num( cvar_speed_decklowas ) );
if ( flMaxSpeed > 0.0 )
set_pev( id, pev_maxspeed, 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_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_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;
}
public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
if ( UserIsAbyss[iAttacker]) {
SetHamParamFloat( 4, fDamage * 4.0);
return HAM_HANDLED;
}
if ( UserIsDeklowas[iAttacker]) {
SetHamParamFloat( 4, fDamage * 4.0);
return HAM_HANDLED;
}
return HAM_IGNORED
}
public amx_fflame( id )
{
if ( is_user_alive( id ) == 0)
return PLUGIN_HANDLED;
if ( flame_count[ id ] < 1 )
return PLUGIN_HANDLED;
if ( !g_ThrowFlames[ id ] )
return PLUGIN_HANDLED;
new Float:fOrigin[ 3 ], Float:fVelocity[ 3 ];
entity_get_vector( id,EV_VEC_origin, fOrigin );
VelocityByAim( id, 35, fVelocity );
new Float:fTemp[ 3 ], iFireOrigin[ 3 ];
xs_vec_add( fOrigin, fVelocity, fTemp );
FVecIVec( fTemp, iFireOrigin );
new Float:fFireVelocity[ 3 ], iFireVelocity[ 3 ];
VelocityByAim( id, 100, fFireVelocity );
FVecIVec( fFireVelocity, iFireVelocity );
create_flames_n_sounds( id, iFireOrigin, iFireVelocity );
direct_damage( id );
flame_count[ id ] -= 1;
return PLUGIN_HANDLED;
}
public create_flames_n_sounds( id, origin[ 3 ], velocity[ 3 ] )
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( 120 );
write_coord( origin[ 0 ] );
write_coord( origin[ 1 ] );
write_coord( origin[ 2 ] );
write_coord( velocity[ 0 ] );
write_coord( velocity[ 1 ] );
write_coord( velocity[ 2 ] + 5 );
write_short( sprite_fire );
write_byte( 1 );
write_byte( 10 );
write_byte( 1);
write_byte( 5 );
message_end( );
emit_sound( id, CHAN_WEAPON, "flamethrower.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
public direct_damage( id )
{
new ent, body;
get_user_aiming( id, ent, body, 600 ) ;
if ( ent > 0 && is_user_alive( ent ) )
{
if ( get_user_team( id ) != get_user_team( ent ) )
damage_user( id, ent, get_pcvar_num( cvar_dmg ) );
}
}
stock damage_user( id, victim, damage )
{
new iHealth = get_user_health( victim );
if ( iHealth > damage )
set_user_health( victim, iHealth - damage );
else
{
user_silentkill( victim );
make_deathmsg( id, victim, 0, "flamethrower" );
new iOrigin[ 3 ];
get_user_origin( victim, iOrigin, 0 );
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( 17 );
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ] + 10 );
write_short( sprite_burn );
write_byte( 30 );
write_byte( 40 );
message_end( );
if ( get_user_team( id ) != get_user_team( victim ) )
{
set_user_frags( id, get_user_frags( id ) + 1 );
cs_set_user_money( id, cs_get_user_money( id ) + 300 );
}
message_begin( MSG_ALL, get_user_msgid( "ScoreInfo" ) );
write_byte( id );
write_short( get_user_frags( id ) );
write_short( get_user_deaths( id ) );
write_short( 0);
write_short( get_user_team( id ) );
message_end();
message_begin( MSG_ALL, get_user_msgid( "ScoreInfo" ) );
write_byte( victim );
write_short( get_user_frags( victim ) );
write_short( get_user_deaths( victim ) );
write_short( 0 );
write_short( get_user_team( victim ) );
message_end( );
}
}
stock get_name( id )
{
new name[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
return name;
}