PHP Code:
/*================================================================================
Deagle Sniper
Copyright (C) 2009 by fezh
=================================================================================*/
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#define PLUGIN_VERSION "0.1.3"
const m_iFOV = 363
const m_iPlayer = 41
const m_iClipAmmo = 51
const m_iExtraOffsetLinux = 4
const m_iExtraOffsetWindows = 0
#pragma semicolon 1
new model_deagle_sniper[] = "models/v_deagle_new.mdl";
new gAlive[33];
new gZoom[33];
new gReloading[33];
new g_ZoomDist[ 33 ] = 0;
new cvar_zoom_type;
public plugin_precache()
engfunc(EngFunc_PrecacheModel, model_deagle_sniper);
public plugin_init()
{
register_plugin("Deagle Sniper", PLUGIN_VERSION, "fezh");
register_forward(FM_CmdStart, "fwCmdStart");
RegisterHam(Ham_Spawn, "player", "fwPlayerSpawnPost", 1);
RegisterHam(Ham_Killed, "player", "fwPlayerKilled");
RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fwWeaponReload");
RegisterHam(Ham_Item_Deploy, "weapon_deagle", "fwItemDeployPost", 1);
register_cvar("deagle_sniper", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY);
cvar_zoom_type = register_cvar("goldendeagle_zoom_type", "4");
}
public fwCmdStart(id, uc_handle, seed)
{
if (!gAlive[id]) return FMRES_IGNORED;
static button, oldbuttons, weapon;
button = get_uc(uc_handle, UC_Buttons);
oldbuttons = pev(id, pev_oldbuttons);
weapon = get_user_weapon(id);
if ((button & IN_ATTACK2) && !(oldbuttons & IN_ATTACK2))
{
if (weapon == CSW_DEAGLE)
{
if (!gZoom[id] && !gReloading[id])
{
gZoom[id] = true;
deagle_zoom( id, get_pcvar_num( cvar_zoom_type ) );
}
else
{
if (gZoom[id])
{
gZoom[id] = false;
cs_set_user_zoom( id, CS_RESET_ZOOM, 1 );
}
}
}
}
return FMRES_IGNORED;
}
public fwPlayerSpawnPost(id) if (is_user_alive(id)) gAlive[id] = true;
public fwPlayerKilled(victim, attacker, shouldgib) gAlive[victim] = false;
public fwWeaponReload(weapon)
{
if (fm_get_weapon_ammo(weapon) != 7)
{
static id;
id = get_pdata_cbase(weapon, m_iPlayer, 4);
set_pdata_int(id, m_iFOV, 90, 5);
gReloading[id] = true;
set_task(2.3, "taskWeaponReloaded", id);
}
}
public taskWeaponReloaded(id)
gReloading[id] = false;
public fwItemDeployPost(weapon)
{
static id;
id = get_pdata_cbase(weapon, m_iPlayer, 4);
set_pev(id, pev_viewmodel2, model_deagle_sniper);
}
// cs_to_fm
stock fm_get_weapon_ammo(weapon)
return get_pdata_int(weapon, m_iClipAmmo, is_linux_server() ? m_iExtraOffsetLinux : m_iExtraOffsetWindows);
stock deagle_zoom( id, type )
{
gZoom[ id ] = true;
switch( type )
{
case 0: cs_set_user_zoom( id, CS_RESET_ZOOM, 1 );
case 1: cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 );
case 2:
{
cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 1 );
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 );
}
case 3:
{
cs_set_user_zoom( id, CS_SET_SECOND_ZOOM, 1 );
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 );
}
case 4:
{
g_ZoomDist[ id ]++;
gZoom[ id ] = false;
switch( g_ZoomDist[ id ] )
{
case 1: cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 );
case 2:
{
cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 1 );
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 );
}
case 3:
{
cs_set_user_zoom( id, CS_SET_SECOND_ZOOM, 1 );
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 );
}
case 4:
{
g_ZoomDist[ id ] = 0;
cs_set_user_zoom( id, CS_RESET_ZOOM, 1 );
}
}
}
}
}