PHP Code:
#define EXTRAOFFSET_WEAPONS 4
#define OFFSET_WEAPONTYPE 43
#define OFFSET_SILENCER_FIREMODE 74
#define M4A1_SILENCED (1<<2)
#define M4A1_ATTACHSILENCEANIM 6
#define M4A1_DETACHSILENCEANIM 13
#define USP_SILENCED (1<<0)
#define USP_ATTACHSILENCEANIM 7
#define USP_DETACHSILENCEANIM 15
#define GLOCK_SEMIAUTOMATIC 0
#define GLOCK_BURSTMODE 2
#define FAMAS_AUTOMATIC 0
#define FAMAS_BURSTMODE 16
#define cs_get_weapon_id(%1) get_pdata_int(%1,OFFSET_WEAPONTYPE,EXTRAOFFSET_WEAPONS)
stock cs_get_weapon_silenced(index)
{
switch( cs_get_weapon_id(index) )
{
case CSW_M4A1:
{
return (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) & M4A1_SILENCED);
}
case CSW_USP:
{
return (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) & USP_SILENCED);
}
}
return 0;
}
stock cs_get_weapon_burstmode(index)
{
switch(cs_get_weapon_id(index))
{
case CSW_GLOCK18:
{
return (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) == GLOCK_BURSTMODE);
}
case CSW_FAMAS:
{
return (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) == FAMAS_BURSTMODE);
}
}
return 0;
}
stock cs_set_weapon_silen(index, silence = 1, draw_animation = 1)
{
switch(cs_get_weapon_id(index))
{
case CSW_M4A1:
{
new silencemode = get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS);
if(silence)
{
if (!(silencemode & M4A1_SILENCED))
{
silencemode |= M4A1_SILENCED;
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,silencemode,EXTRAOFFSET_WEAPONS);
if (draw_animation)
{
new id = pev(index, pev_owner);
if( id )
{
set_pev(id, pev_weaponanim, M4A1_ATTACHSILENCEANIM);
}
}
}
}
else if(silencemode & M4A1_SILENCED)
{
silencemode &= ~M4A1_SILENCED;
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,silencemode,EXTRAOFFSET_WEAPONS);
if (draw_animation)
{
new id = pev(index, pev_owner);
if( id )
{
set_pev(id, pev_weaponanim, M4A1_DETACHSILENCEANIM);
}
}
}
}
case CSW_USP:
{
new silencemode = get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS);
if (silence)
{
if (!(silencemode & USP_SILENCED))
{
silencemode |= USP_SILENCED;
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,silencemode,EXTRAOFFSET_WEAPONS);
if (draw_animation)
{
new id = pev(index, pev_owner);
if( id )
{
set_pev(id, pev_weaponanim, USP_ATTACHSILENCEANIM);
}
}
}
}
else if (silencemode & USP_SILENCED)
{
silencemode &= ~USP_SILENCED;
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,silencemode,EXTRAOFFSET_WEAPONS);
if (draw_animation)
{
new id = pev(index, pev_owner);
if( id )
{
set_pev(id, pev_weaponanim, USP_DETACHSILENCEANIM);
}
}
}
}
default:return 0;
}
return 1;
}
stock cs_set_weapon_burst(index, burstmode = 1)
{
switch (cs_get_weapon_id(index))
{
case CSW_GLOCK18:
{
if (burstmode)
{
if (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) != GLOCK_BURSTMODE)
{
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,GLOCK_BURSTMODE,EXTRAOFFSET_WEAPONS);
new id = pev(index, pev_owner);
if( id )
{
client_print(id, print_center, "#Switch_To_BurstFire");
}
}
}
else if (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) != GLOCK_SEMIAUTOMATIC)
{
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,GLOCK_SEMIAUTOMATIC,EXTRAOFFSET_WEAPONS);
new id = pev(index, pev_owner);
if( id )
{
client_print(id, print_center, "#Switch_To_SemiAuto");
}
}
}
case CSW_FAMAS:
{
if (burstmode)
{
if (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) != FAMAS_BURSTMODE)
{
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,FAMAS_BURSTMODE,EXTRAOFFSET_WEAPONS);
new id = pev(index, pev_owner);
if( id )
{
client_print(id, print_center, "#Switch_To_BurstFire");
}
}
}
else if (get_pdata_int(index,OFFSET_SILENCER_FIREMODE,EXTRAOFFSET_WEAPONS) != FAMAS_AUTOMATIC)
{
set_pdata_int(index,OFFSET_SILENCER_FIREMODE,FAMAS_AUTOMATIC,EXTRAOFFSET_WEAPONS);
new id = pev(index, pev_owner);
if( id )
{
client_print(id, print_center, "#Switch_To_FullAuto");
}
}
}
default:
{
return 0;
}
}
return 1;
}