/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < cstrike >
#include < colorchat >
#include < hamsandwich >
#include < fakemeta_util >
#include " engine "
#define PLUGIN "New Plug-In"
#define VERSION "0.0.1"
#define AUTHOR "hadesownage"
enum _:PlayerIs {
Harry,
VoldeMort
}
new g_PlayerIs [ 33 ] [ PlayerIs ];
new szPrefix [ ] = "[Harry vs VoldeMort]^3";
new HarrySound [ ] = "harryvsvolde/harrysound.wav";
new VoldeMortSound [ ] = "harryvsvolde/voldemortsound.wav";
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
new cvar_hp, cvar_ap, cvar_speed, cvar_hp2, cvar_ap2, cvar_speed2;
new SyncHudMessage, ShockWave, VoldeDamage, CvarVoldeAmmo;
new Volde_Countdown [ 33 ];
new Harry_Ammo [ 33 ];
new Float: HarryLastShotTime [ 33 ];
new DualDeagle [ 66 ] = "models/harryvsvolde/v_dualdeagle.mdl";
new DualDeagle2 [ 66 ] = "models/harryvsvolde/p_dualdeagle.mdl";
new HarryFireSound [ ] = "harryvsvolde/harry_shoot1.wav";
new HarryHitSound [ ] = "harryvsvolde/harry_hit.wav";
new HarryHitSound2 [ ] = "harryvsvolde/harry_shoot2.wav";
new g_szAntiToxine [ ] = "harryvsvolde/antitoxin_shot.wav";
new g_szToxineDetected [ ] = "harryvsvolde/blood_toxins.wav";
new HarryModel [ ] = "models/harryvsvolde/v_harry.mdl";
new VoldeModel [ ] = "models/harryvsvolde/v_volde.mdl";
new VoldeModel2 [ ] = "models/harryvsvolde/p_volde.mdl";
new HarryBeam, HarryExp, HarryExp2, DeathSprite;
new HarryDamageCvar, HarryDamageCvar2, HarryAmmo, HarryDeagleDamage, Volde_Ammo [ 33 ];
public plugin_cfg ( ) {
set_cvar_float ( "sv_maxspeed", 1000.0 );
}
public plugin_init ( ) {
register_clcmd ( "power", "UseUltimatePower", -1 );
register_clcmd ( "ultimate", "UseUltimatePower", -1 );
register_event ( "DeathMsg", "eDeath", "a" );
register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" );
register_forward ( FM_CmdStart, "Harry_CmdStart" );
RegisterHam ( Ham_Player_ResetMaxSpeed, "player", "Ham_ResetMaxSpeedPost", 1 );
RegisterHam ( Ham_Spawn, "player", "Ham_SpawnCallback", 1 );
RegisterHam ( Ham_TakeDamage, "player", "Ham_DamageCallback", 1 );
HarryDamageCvar = register_cvar ( "harry_damage", "80" );
HarryDamageCvar2 = register_cvar ( "harry_damage2", "135" );
HarryAmmo = register_cvar ( "harry_ammo", "20" );
HarryDeagleDamage = register_cvar ( "harry_deagle_dmg", "1.7" );
VoldeDamage = register_cvar ( "volde_damage", "3.5" );
CvarVoldeAmmo = register_cvar ( "volde_ammo", "3" );
cvar_hp = register_cvar( "harry_hp", "400" );
cvar_ap = register_cvar( "harry_ap", "400" );
cvar_speed = register_cvar( "harry_speed", "450" );
cvar_hp2 = register_cvar( "volde_hp", "250" );
cvar_ap2 = register_cvar( "volde_ap", "400" );
cvar_speed2 = register_cvar( "volde_speed", "800" );
SyncHudMessage = CreateHudSyncObj ( );
}
public plugin_precache ( ) {
precache_sound ( VoldeMortSound );
precache_sound ( HarrySound );
precache_sound ( HarryFireSound );
precache_sound ( HarryHitSound );
precache_sound ( HarryHitSound2 );
precache_sound ( g_szAntiToxine );
precache_sound ( g_szToxineDetected );
precache_model ( HarryModel );
precache_model ( VoldeModel );
precache_model ( VoldeModel2 );
precache_model ( DualDeagle );
precache_model ( DualDeagle2 );
HarryBeam = precache_model ( "sprites/harryvsvolde/harry_plasma_beam.spr" );
HarryExp = precache_model ( "sprites/harryvsvolde/harry_plasma_exp2.spr" );
HarryExp2 = precache_model ( "sprites/harryvsvolde/harry_plasma_exp3.spr" );
ShockWave = precache_model ( "sprites/shockwave.spr" );
register_plugin ( "Harry vs VoldeMort", VERSION, "hadesownage" );
}
public client_putinserver ( id ) {
g_PlayerIs [ id ] [ Harry ] = false;
g_PlayerIs [ id ] [ VoldeMort ] = false;
Harry_Ammo [ id ] = 0;
Volde_Ammo [ id ] = 0;
Volde_Countdown [ id ] = 0;
engclient_cmd ( id , "cl_sidespeed 1000" );
engclient_cmd ( id , "cl_forwardspeed 1000" );
engclient_cmd ( id , "cl_backspeed 1000" );
}
public client_disconnect ( id ) {
g_PlayerIs [ id ] [ Harry ] = false;
g_PlayerIs [ id ] [ VoldeMort ] = false;
Harry_Ammo [ id ] = 0;
Volde_Ammo [ id ] = 0;
Volde_Countdown [ id ] = 0;
engclient_cmd ( id , "cl_sidespeed 400" );
engclient_cmd ( id , "cl_forwardspeed 400" );
engclient_cmd ( id , "cl_backspeed 400" );
SearchHarry ( );
SearchVoldeMort ( );
}
public CurrentWeapon ( id ) {
if ( get_user_weapon ( id ) == CSW_KNIFE && g_PlayerIs [ id ] [ Harry ] ) {
set_pev ( id, pev_viewmodel2, HarryModel );
}
if ( get_user_weapon ( id ) == CSW_KNIFE && g_PlayerIs [ id ] [ VoldeMort ] ) {
set_pev ( id, pev_viewmodel2, VoldeModel );
set_pev ( id, pev_weaponmodel2, VoldeModel2 );
}
if ( get_user_weapon ( id ) == CSW_ELITE && g_PlayerIs [ id ] [ Harry ] ) {
set_pev ( id, pev_viewmodel2, DualDeagle );
set_pev ( id, pev_weaponmodel2, DualDeagle2 );
}
}
public UseUltimatePower ( id ) {
if ( is_user_alive ( id ) && g_PlayerIs [ id ] [ VoldeMort ] ) {
if ( Volde_Ammo [ id ] <= 0 ) {
ColorChat ( id, GREEN, "%s Nu mai ai munitie pentru a folosi aceasta putere !", szPrefix );
set_hudmessage ( 255, 0, 0, 0.01, 0.90, 0, 6.0, 1.0 );
show_hudmessage ( id, "No Ammo" );
return 1;
}
else if ( Volde_Ammo [ id ] > 0 ) {
new target, body;
static Float:start[3];
static Float:aim[3];
pev(id, pev_origin, start);
fm_get_aim_origin(id, aim);
start[2] += 16.0; // raise
aim[2] += 16.0; // raise
get_user_aiming (id, target, body, 4500);
if(is_user_alive(target) && get_user_team(id) != get_user_team(target)) {
engclient_cmd ( target, "spk %s", g_szToxineDetected );
FadeScreen ( target, 4.0, 255, 255, 0, 100 );
ShakeScreen ( target, 4.5 );
if ( get_user_health ( target ) >= 50 ) {
fm_set_user_health ( target, get_user_health ( target ) - random_num ( 24, 44 ) );
}
else if ( get_user_health ( target ) <= 45 ) {
death_message ( id, target, 1, "VoldeMort Infection");
}
fm_set_user_armor ( target, random_num ( 25, 52 ) );
fm_set_rendering ( target, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 25)
set_task ( 0.5, "AntiToxineSound", target );
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
write_short(1<<10);
write_short(1<<10);
write_short(0x0000);
write_byte(0);
write_byte(100);
write_byte(200);
write_byte(50);
message_end();
}
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(0);
engfunc(EngFunc_WriteCoord,start[0]);
engfunc(EngFunc_WriteCoord,start[1]);
engfunc(EngFunc_WriteCoord,start[2]);
engfunc(EngFunc_WriteCoord,aim[0]);
engfunc(EngFunc_WriteCoord,aim[1]);
engfunc(EngFunc_WriteCoord,aim[2]);
write_short(HarryBeam); // sprite index
write_byte(0); // start frame
write_byte(30); // frame rate in 0.1's
write_byte(20); // life in 0.1's
write_byte(50); // line width in 0.1's
write_byte(50); // noise amplititude in 0.01's
write_byte(255); // red
write_byte(255); // green
write_byte(0); // blue
write_byte(100); // brightness
write_byte(50); // scroll speed in 0.1's
message_end();
Volde_Ammo [ id ]--;
if ( Volde_Ammo [ id ] > 0 ) {
set_hudmessage ( 0, 127, 255, 0.01, 0.90, 0, 6.0, 1.0 );
show_hudmessage ( id, "Remaining Ammo: %d", Volde_Ammo [ id ] );
}
else if ( Volde_Ammo [ id ] <= 0 ) {
set_hudmessage ( 255, 0, 0, 0.01, 0.90, 0, 6.0, 1.0 );
show_hudmessage ( id, "No Ammo" );
}
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public AntiToxineSound ( id ) {
engclient_cmd ( id, "spk %s", g_szAntiToxine );
set_task ( 1.5, "RemoveGlow", id );
return 1;
}
public RemoveGlow ( id ) {
fm_set_user_rendering ( id );
}
public eDeath ( ) {
SearchHarry ( );
SearchVoldeMort ( );
new iKiller = read_data ( 1 );
new iVictim = read_data ( 2 );
if ( !is_user_connected ( iKiller ) || !is_user_connected ( iVictim ) || iKiller == iVictim ) return 1;
if ( g_PlayerIs [ iVictim ] [ Harry ] ) {
ColorChat ( 0, GREEN, "%s Harry Potter^4 %s^3 a fost omorat de^4 %s^3 !^4", szPrefix, get_name ( iVictim ), get_name ( iKiller ) );
}
else if ( g_PlayerIs [ iVictim ] [ VoldeMort ] ) {
ColorChat ( 0, GREEN, "%s VoldeMort^4 %s^3 a fost omorat de^4 %s^3 !^4", szPrefix, get_name ( iVictim ), get_name ( iKiller ) );
}
return 0;
}
public SearchHarry ( ) {
new iTerro = CountPlayers( 1 );
new iCounter = CountPlayers( 2 );
if( iCounter == 1 && iTerro > 0 )
{
new id = GetRemainingPlayerId( 2 );
if( g_PlayerIs [ id ] [ Harry ] ) return 1;
g_PlayerIs [ id ] [ Harry ] = true;
Harry_Ammo [ id ] = get_pcvar_num ( HarryAmmo );
ColorChat ( 0, GREEN, "%s %s^3 a devenit^4 Harry Potter^3 !^4", szPrefix, get_name ( id ) );
ColorChat ( 0, GREEN, "%s Are^4 %d^3 HP,^4 %d^3 AP si^4 %d^3 Speed !^4", szPrefix, get_pcvar_num( cvar_hp ), get_pcvar_num( cvar_ap ), get_pcvar_num( cvar_speed ) );
fm_strip_user_weapons ( id );
fm_give_item ( id, "weapon_knife" );
fm_give_item ( id, "weapon_hegrenade" );
fm_give_item ( id, "weapon_elite" );
cs_set_user_bpammo ( id, CSW_ELITE, 500 );
CurrentWeapon ( id );
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 Harry Potter !^n Cea din urma salvare a omenirii !", get_name( id ) );
fm_set_user_maxspeed( id, float( get_pcvar_num( cvar_speed ) ) );
fm_set_user_health( id, get_pcvar_num( cvar_hp ) );
fm_set_user_armor( id, get_pcvar_num( cvar_ap ) );
fm_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 ) ) );
emit_sound ( 0, CHAN_WEAPON, HarrySound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
return 0;
}
public SearchVoldeMort ( ) {
new iTerro = CountPlayers( 1 );
new iCounter = CountPlayers( 2 );
if( iTerro == 1 && iCounter > 0 )
{
new id = GetRemainingPlayerId( 1 );
if( g_PlayerIs [ id ] [ VoldeMort ] ) return 1;
g_PlayerIs [ id ] [ VoldeMort ] = true;
ColorChat ( 0, GREEN, "%s %s^3 a devenit^4 Lord VoldeMort^3 !^4", szPrefix, get_name ( id ) );
ColorChat ( 0, GREEN, "%s Are^4 %d^3 HP,^4 %d^3 AP si^4 %d^3 Speed !^4", szPrefix, 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 Lord VoldeMort !^nSansele pamantenilor au scazut !", get_name( id ) );
Volde_Ammo [ id ] = get_pcvar_num ( CvarVoldeAmmo );
CurrentWeapon ( id );
engclient_cmd ( id, "bind f power" );
engclient_cmd ( id, "bind v power" );
fm_set_user_maxspeed( id, float( get_pcvar_num( cvar_speed2 ) ) );
fm_set_user_health( id, get_pcvar_num( cvar_hp2 ) );
fm_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 ) ) );
engclient_cmd( id, szCommand );
emit_sound ( 0, CHAN_WEAPON, VoldeMortSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
return 0;
}
public Ham_ResetMaxSpeedPost ( id ) {
if( is_user_alive( id ) && is_user_connected( id ) && fm_get_user_maxspeed(id) != 1.0 )
{
new Float:flMaxSpeed;
if( g_PlayerIs [ id ] [ Harry ] )
{
flMaxSpeed = float( get_pcvar_num( cvar_speed ) );
}
if( g_PlayerIs [ id ] [ VoldeMort ] )
{
flMaxSpeed = float( get_pcvar_num( cvar_speed2 ) );
}
if( flMaxSpeed > 0.0 )
{
set_pev( id, pev_maxspeed, flMaxSpeed );
}
}
}
public Ham_SpawnCallback ( id ) {
if ( !is_user_alive ( id ) ) return 1;
g_PlayerIs [ id ] [ Harry ] = false;
g_PlayerIs [ id ] [ VoldeMort ] = false;
Volde_Countdown [ id ] = 0;
remove_task ( id );
fm_set_user_rendering ( id );
return 0;
}
public Ham_DamageCallback ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits ) {
if ( get_user_team ( iAttacker ) == get_user_team ( iVictim ) || iAttacker == iVictim ) return 1;
new iDmg = floatround ( fDamage, floatround_floor );
if ( iDmg >= 60 && get_user_weapon ( iAttacker ) == CSW_KNIFE && g_PlayerIs [ iAttacker ] [ VoldeMort ] ) {
ShakeScreen ( iVictim, 2.0 );
new originnn[3];
get_user_origin ( iVictim, originnn, 0 );
message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
write_byte(TE_BEAMCYLINDER);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+10);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+60);
write_short(ShockWave);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(0); //255
write_byte(255); //255
write_byte(0); //255
write_byte(255); //255 //RED
write_byte(0);
message_end();
UTIL_CreateBeamCylinder( originnn, 120, ShockWave, 0, 0, 6, 16, 0, 255, 0, 0, 255, 0 );
UTIL_CreateBeamCylinder( originnn, 320, ShockWave, 0, 0, 6, 16, 0, 255, 51, 51, 255, 0 );
UTIL_CreateBeamCylinder( originnn, 500, ShockWave, 0, 0, 6, 16, 0, 255, 102, 102, 255, 0 );
}
if ( g_PlayerIs [ iAttacker ] [ VoldeMort ] && get_user_weapon ( iAttacker ) == CSW_KNIFE ) {
SetHamParamFloat( 4, fDamage * get_pcvar_float ( VoldeDamage ) );
return HAM_HANDLED;
}
if ( g_PlayerIs [ iAttacker ] [ Harry ] && get_user_weapon ( iAttacker ) == CSW_ELITE ) {
SetHamParamFloat( 4, fDamage * get_pcvar_float ( HarryDeagleDamage ) );
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Harry_CmdStart ( id, uc_handle, seed ) {
if ( is_user_alive ( id ) && g_PlayerIs [ id ] [ Harry ] ) {
static CurButton;
CurButton = get_uc ( uc_handle, UC_Buttons );
new Float:flNextAttack = get_pdata_float ( id, 83, 5 );
if ( CurButton & IN_ATTACK ) {
if ( get_user_weapon ( id ) == CSW_KNIFE && g_PlayerIs [ id ] [ Harry ] ) {
if ( Harry_Ammo [ id ] > 0 && flNextAttack <= 0.0 ) {
if ( get_gametime ( ) - HarryLastShotTime [ id ] > 0.35 ) {
set_weapon_anim ( id, random_num ( 3,5 ) );
emit_sound ( id, CHAN_WEAPON, HarryFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
Harry_Fire ( id );
if ( Harry_Ammo [ id ] > 0 ) {
set_hudmessage ( 0, 127, 255, 0.01, 0.90, 0, 6.0, 1.0 );
show_hudmessage ( id, "Remaining Ammo: %d", Harry_Ammo [ id ] );
}
else if ( Harry_Ammo [ id ] <= 0 ) {
set_hudmessage ( 255, 0, 0, 0.01, 0.90, 0, 6.0, 1.0 );
show_hudmessage ( id, "No Ammo" );
}
static Float:Punch_Angles[3];
Punch_Angles[0] = -5.0;
Punch_Angles[1] = 0.0;
Punch_Angles[2] = 0.0;
set_pev(id, pev_punchangle, Punch_Angles);
Harry_Ammo [ id ] -= 1;
HarryLastShotTime [ id ] = get_gametime();
}
}
CurButton &= ~IN_ATTACK;
set_uc ( uc_handle, UC_Buttons, CurButton );
}
}
else if ( CurButton & IN_ATTACK2 ) {
if ( get_user_weapon ( id ) == CSW_KNIFE && g_PlayerIs [ id ] [ Harry ] ) {
if ( Harry_Ammo [ id ] >= 5 && flNextAttack <= 0.0 ) {
if ( get_gametime ( ) - HarryLastShotTime [ id ] > 0.75 ) {
set_weapon_anim ( id, random_num ( 5,10 ) );
emit_sound ( id, CHAN_WEAPON, HarryFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
Harry_Fire2 ( id );
set_hudmessage ( 0, 127, 255, 0.01, 0.90, 0, 6.0, 1.0 );
show_hudmessage ( id, "Remaining Ammo: %d", Harry_Ammo [ id ] );
static Float:Punch_Angles[3];
Punch_Angles[0] = -5.0;
Punch_Angles[1] = 0.0;
Punch_Angles[2] = 0.0;
set_pev(id, pev_punchangle, Punch_Angles);
Harry_Ammo [ id ] -= 5;
HarryLastShotTime [ id ] = get_gametime();
}
}
CurButton &= ~IN_ATTACK2;
set_uc ( uc_handle, UC_Buttons, CurButton );
}
}
}
else if ( is_user_alive ( id ) && !g_PlayerIs [ id ] [ Harry ] ) {
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public Harry_Fire ( id ) {
static Victim, Body, EndOrigin[3], BeamOrigin[3];
get_user_origin(id, BeamOrigin, 3) ;
get_user_origin(id, EndOrigin, 3);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_BEAMENTPOINT);
write_short(id | 0x1000);
write_coord(BeamOrigin[0]); // Start X
write_coord(BeamOrigin[1]); // Start Y
write_coord(BeamOrigin[2]); // Start Z
write_short(HarryBeam); // Sprite
write_byte(1); // Start frame
write_byte(1); // Frame rate
write_byte(1); // Life
write_byte(40); // Line width
write_byte(0); // Noise
write_byte(66); // Red
write_byte(161); // Green
write_byte(255); // Blue
write_byte(150); // Brightness
write_byte(25); // Scroll speed
message_end();
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(3);
write_coord(EndOrigin[0]);
write_coord(EndOrigin[1]);
write_coord(EndOrigin[2]);
write_short(HarryExp);
write_byte(10);
write_byte(15);
write_byte(4);
message_end();
get_user_aiming(id, Victim, Body, 999999);
if(is_user_connected(Victim)) {
new Float:Damage = float(get_damage_body(Body, get_pcvar_float ( HarryDamageCvar ) ));
new Float:VictimOrigin[3];
VictimOrigin[0] = float(EndOrigin[0]);
VictimOrigin[1] = float(EndOrigin[1]);
VictimOrigin[2] = float(EndOrigin[2]);
if(get_user_health(Victim) - get_pcvar_float ( HarryDamageCvar ) >= 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) {
new originnn[3];
get_user_origin ( Victim, originnn, 0 );
message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
write_byte(TE_BEAMCYLINDER);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+10);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+60);
write_short(HarryExp);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(0); //255
write_byte(0); //255
write_byte(255); //255 //BLUE
write_byte(255); //255
write_byte(0);
message_end();
Create_TE_SPRITETRAIL3( originnn, originnn, DeathSprite, 50, 10, 2, 50, 10 );
make_knockback(Victim, VictimOrigin, 3*get_pcvar_float ( HarryDamageCvar ));
ExecuteHam(Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS);
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, Victim);
write_byte(0);
write_byte(0);
write_long(DMG_SHOCK);
write_coord(0) ;
write_coord(0);
write_coord(0);
message_end();
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, Victim);
write_short(1<<13);
write_short(1<<14);
write_short(0x0000);
write_byte(255);
write_byte(122);
write_byte(122);
write_byte(100) ;
message_end();
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Victim);
write_short(0xFFFF);
write_short(1<<13);
write_short(0xFFFF) ;
message_end();
}
else if(get_user_health(Victim) - get_pcvar_float ( HarryDamageCvar ) < 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) {
new originnn[3];
get_user_origin ( Victim, originnn, 0 );
message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
write_byte(TE_BEAMCYLINDER);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+10);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+60);
write_short(HarryExp);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(0); //255
write_byte(0); //255
write_byte(255); //255 //BLUE
write_byte(255); //255
write_byte(0);
message_end();
Create_TE_SPRITETRAIL3( originnn, originnn, DeathSprite, 50, 10, 2, 50, 10 );
make_knockback(Victim, VictimOrigin, 3*get_pcvar_float ( HarryDamageCvar ));
death_message(id, Victim, 1, "Magic Wand");
SearchVoldeMort ( );
}
}
else {
static ClassName[32];
pev(Victim, pev_classname, ClassName, charsmax(ClassName));
if(equal(ClassName, "func_breakable")) {
if(entity_get_float(Victim, EV_FL_health) <= 80) {
force_use(id, Victim);
}
}
}
emit_sound(id, CHAN_WEAPON, HarryHitSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}
public Harry_Fire2 ( id ) {
static Victim, Body, EndOrigin[3], BeamOrigin[3];
get_user_origin(id, BeamOrigin, 3) ;
get_user_origin(id, EndOrigin, 3);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_BEAMENTPOINT);
write_short(id | 0x1000);
write_coord(BeamOrigin[0]); // Start X
write_coord(BeamOrigin[1]); // Start Y
write_coord(BeamOrigin[2]); // Start Z
write_short(HarryBeam); // Sprite
write_byte(1); // Start frame
write_byte(1); // Frame rate
write_byte(1); // Life
write_byte(40); // Line width
write_byte(0); // Noise
write_byte(255); // Red
write_byte(0); // Green
write_byte(0); // Blue
write_byte(150); // Brightness
write_byte(25); // Scroll speed
message_end();
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(3);
write_coord(EndOrigin[0]);
write_coord(EndOrigin[1]);
write_coord(EndOrigin[2]);
write_short(HarryExp2);
write_byte(10);
write_byte(15);
write_byte(4);
message_end();
get_user_aiming(id, Victim, Body, 999999);
if(is_user_connected(Victim)) {
new Float:Damage = float(get_damage_body(Body, get_pcvar_float ( HarryDamageCvar ) ));
new Float:VictimOrigin[3];
VictimOrigin[0] = float(EndOrigin[0]);
VictimOrigin[1] = float(EndOrigin[1]);
VictimOrigin[2] = float(EndOrigin[2]);
if(get_user_health(Victim) - get_pcvar_float ( HarryDamageCvar2 ) >= 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) {
new originnn[3];
get_user_origin ( Victim, originnn, 0 );
message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
write_byte(TE_BEAMCYLINDER);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+10);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+60);
write_short(HarryExp2);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(255); //255
write_byte(0); //255
write_byte(0); //255 //BLUE
write_byte(255); //255
write_byte(0);
message_end();
Create_TE_SPRITETRAIL3( originnn, originnn, DeathSprite, 50, 10, 2, 50, 10 );
make_knockback(Victim, VictimOrigin, 3*get_pcvar_float ( HarryDamageCvar2 ));
ExecuteHam(Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS);
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, Victim);
write_byte(0);
write_byte(0);
write_long(DMG_NERVEGAS);
write_coord(0) ;
write_coord(0);
write_coord(0);
message_end();
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, Victim);
write_short(1<<13);
write_short(1<<14);
write_short(0x0000);
write_byte(0);
write_byte(255);
write_byte(0);
write_byte(100) ;
message_end();
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Victim);
write_short(0xFFFF);
write_short(1<<13);
write_short(0xFFFF) ;
message_end();
}
else if(get_user_health(Victim) - get_pcvar_float ( HarryDamageCvar2 ) < 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) {
new originnn[3];
get_user_origin ( Victim, originnn, 0 );
message_begin(MSG_PAS, SVC_TEMPENTITY, originnn);
write_byte(TE_BEAMCYLINDER);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+10);
write_coord(originnn[0]);
write_coord(originnn[1]);
write_coord(originnn[2]+60);
write_short(HarryExp2);
write_byte(0);
write_byte(0);
write_byte(3);
write_byte(60);
write_byte(0);
write_byte(255); //255
write_byte(0); //255
write_byte(0); //255 //BLUE
write_byte(255); //255
write_byte(0);
message_end();
Create_TE_SPRITETRAIL3( originnn, originnn, DeathSprite, 50, 10, 2, 50, 10 );
make_knockback(Victim, VictimOrigin, 3*get_pcvar_float ( HarryDamageCvar2 ));
death_message(id, Victim, 1, "Double Magic Wand");
SearchVoldeMort ( );
}
}
else {
static ClassName[32];
pev(Victim, pev_classname, ClassName, charsmax(ClassName));
if(equal(ClassName, "func_breakable")) {
if(entity_get_float(Victim, EV_FL_health) <= 80) {
force_use(id, Victim);
}
}
}
emit_sound(id, CHAN_WEAPON, HarryHitSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}
// Make knockback
public make_knockback(Victim, Float:origin[3], Float:maxspeed) {
// Get and set velocity
new Float:fVelocity[3];
kickback(Victim, origin, maxspeed, fVelocity);
entity_set_vector(Victim, EV_VEC_velocity, fVelocity);
return(1);
}
public ShakeScreen( id, const Float:seconds )
{
message_begin( MSG_ONE, get_user_msgid( "ScreenShake" ), { 0, 0, 0 }, id );
write_short( floatround( 4096.0 * seconds, floatround_round ) );
write_short( floatround( 4096.0 * seconds, floatround_round ) );
write_short( 1<<13 );
message_end( );
}
public FadeScreen( id, const Float:seconds, const redd, const greenn, const bluee, const alpha )
{
message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), _, id );
write_short( floatround( 4096.0 * seconds, floatround_round ) );
write_short( floatround( 4096.0 * seconds, floatround_round ) );
write_short( 0x0000 );
write_byte( redd );
write_byte( greenn );
write_byte( bluee );
write_byte( alpha );
message_end( );
}
stock CountPlayers( const Team )
{
new iPlayers[ 32 ];
new iPlayersNum;
new iPlayersCount;
get_players( iPlayers, iPlayersNum, "h" );
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, "h" );
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;
}
// Extra calulation for knockback
stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) {
// Find origin
new Float:fEntOrigin[3];
entity_get_vector(ent, EV_VEC_origin, fEntOrigin);
// Do some calculations
new Float:fDistance[3];
fDistance[0] = fEntOrigin[0] - fOrigin[0];
fDistance[1] = fEntOrigin[1] - fOrigin[1];
fDistance[2] = fEntOrigin[2] - fOrigin[2];
new Float:fTime =(vector_distance(fEntOrigin,fOrigin) / fSpeed);
fVelocity[0] = fDistance[0] / fTime;
fVelocity[1] = fDistance[1] / fTime;
fVelocity[2] = fDistance[2] / fTime;
return(fVelocity[0] && fVelocity[1] && fVelocity[2]);
}
stock death_message(Killer, Victim, ScoreBoard, const Weapon[]) {
// Block death msg
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
ExecuteHamB(Ham_Killed, Victim, Killer, 2);
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
// Death
make_deathmsg(Killer, Victim, 0, Weapon);
cs_set_user_money(Killer, cs_get_user_money(Killer) + 300);
// Update score board
if(ScoreBoard) {
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(Killer); // id
write_short(pev(Killer, pev_frags)); // frags
write_short(cs_get_user_deaths(Killer)); // deaths
write_short(0); // class?
write_short(get_user_team(Killer)); // team
message_end();
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(Victim); // id
write_short(pev(Victim, pev_frags)); // frags
write_short(cs_get_user_deaths(Victim)); // deaths
write_short(0); // class?
write_short(get_user_team(Victim)); // team
message_end();
}
}
stock set_weapon_anim(id, anim) {
set_pev(id, pev_weaponanim, anim);
if(is_user_connected(id)) {
message_begin(MSG_ONE, SVC_WEAPONANIM, _, id);
write_byte(anim);
write_byte(pev(id, pev_body));
message_end();
}
}
stock get_damage_body(body, Float:damage) {
switch(body) {
case HIT_HEAD: damage *= 4.0;
case HIT_STOMACH: damage *= 1.1;
case HIT_CHEST: damage *= 1.5;
case HIT_LEFTARM: damage *= 0.77;
case HIT_RIGHTARM: damage *= 0.77;
case HIT_LEFTLEG: damage *= 0.75;
case HIT_RIGHTLEG: damage *= 0.75;
default: damage *= 1.0;
}
return floatround(damage);
}
stock Create_TE_SPRITETRAIL3(start[3], end[3], iSprite, count, life, scale, velocity, random ){
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( TE_SPRITETRAIL )
write_coord( start[0] ) // start position (X)
write_coord( start[1] ) // start position (Y)
write_coord( start[2] + 40 ) // start position (Z)
write_coord( end[0] ) // end position (X)
write_coord( end[1] ) // end position (Y)
write_coord( end[2] ) // end position (Z)
write_short( iSprite ) // sprite index
write_byte( count ) // count
write_byte( life) // life in 0.1's
write_byte( scale) // scale in 0.1's
write_byte( velocity ) // velocity along vector in 10's
write_byte( random ) // randomness of velocity in 10's
message_end()
}
stock UTIL_CreateBeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
message_begin( MSG_PVS, SVC_TEMPENTITY, origin );
write_byte( TE_BEAMCYLINDER );
write_coord( origin[ 0 ] );
write_coord( origin[ 1 ] );
write_coord( origin[ 2 ] );
write_coord( origin[ 0 ] );
write_coord( origin[ 1 ] );
write_coord( origin[ 2 ] + addrad );
write_short( sprite );
write_byte( startfrate );
write_byte( framerate );
write_byte(life );
write_byte( width );
write_byte( amplitude );
write_byte( red );
write_byte( green );
write_byte( blue );
write_byte( brightness );
write_byte( speed );
message_end();
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/