Raised This Month: $ Target: $400
 0% 

[Help] plguin do


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
counter1strike6
Senior Member
Join Date: Sep 2014
Location: morocco
Old 02-09-2016 , 04:04   [Help] plguin do
Reply With Quote #1

hello guys
i need your help, this plugin does not inflict damage on enemies team or any entity in the map.


PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <xs>
#include <fun>

#define MODEL_V "models/trend/v_m134_v.mdl"
#define MODEL_P "models/trend/p_m134_v.mdl"
#define MODEL_W "models/trend/w_m134_v.mdl"

#define MUZZLEFLASH "sprites/trend/m134_v_muzzle2.spr"
#define MUZZLEFLASH2 "sprites/trend/m134_v_muzzle1.spr"

#define DAMAGE 75
#define CLIP 100
#define BPAMMO 200

#define SPEED_A 0.04
#define SPEED_B 0.02
#define TIME_RELOAD 5.0

#define CSW_M134V CSW_M249
#define weapon_m134v "weapon_m249"
#define WEAPON_ANIMEXT "m249"

new const WeaponSounds[11][] =
{
    
"weapons/m134ex-1.wav",
    
"weapons/m134_clipoff.wav",
    
"weapons/m134_clipon.wav",
    
"weapons/m134ex_spin.wav",
    
"weapons/m134hero_draw.wav",
    
"weapons/m134hero_fire_after_overheat.wav",
    
"weapons/m134hero_overheat_end.wav",
    
"weapons/m134hero_overload.wav",
    
"weapons/m134hero_spindown.wav",
    
"weapons/m134hero_spinup.wav",
    
"weapons/steam.wav"
}

new const 
WeaponResources[3][] = 
{
    
"sprites/weapon_m134_v.txt",
    
"sprites/trend/m134_v_weapon1.spr",
    
"sprites/trend/m134_v_ammo1.spr"
}

new const 
Steam[] = "sprites/trend/m134_v_steam1.spr"
new const Shell1[] = "models/trend/s_m134_v_piston.mdl"
new const Shell2[] = "models/trend/s_m134_v_shell.mdl"

enum
{
    
ANIME_IDLE 0,
    
ANIME_DRAW,
    
ANIME_RELOAD,
    
ANIME_FIRE_START,
    
ANIME_FIRE_LOOP,
    
ANIME_FIRE_END,
    
ANIME_NANI1,
    
ANIME_NANI2,
    
ANIME_OH_DRAW,
    
ANIME_OH_START,
    
ANIME_OH_IDLE,
    
ANIME_OH_END,
    
ANIME_SFIRE_START,
    
ANIME_SFIRE_LOOP,
    
ANIME_SFIRE_END
}

enum
{
    
M134_ATTACK_NOT 0,
    
M134_ATTACK_BEGIN,
    
M134_ATTACK_LOOP,
    
M134_ATTACK_END
}

#define TASK_ATTACK 1972
#define TASK_OVERHEAT 1973

#define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
#define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
#define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const 
SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
new 
g_Had_M134Vg_Clip[33], g_M134State[33], Float:g_SpeedControl[33], Float:g_AttackDelay[33], g_RapidMode
new g_Event_M134Vm_iBlood[2], g_OverHeatg_Firedg_ShellID1g_ShellID2
new g_MsgWeaponListg_MsgCurWeapong_SteamIDFloat:SteamTime[33], FiringTime[33], g_InTempingAttack
new g_Muzzleflash_Entg_Muzzleflash
new g_Muzzleflash_Ent2g_Muzzleflash2
new g_IsConnectedg_IsAliveg_PlayerWeapon[33]

public 
plugin_init(){
    
Register_SafetyFunc()
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fw_PlaybackEvent")
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_EmitSound"fw_EmitSound")
    
register_forward(FM_TraceLine"fw_TraceLine")
    
register_forward(FM_TraceHull"fw_TraceHull")
    
register_forward(FM_SetModel"fw_SetModel")    
    
register_forward(FM_AddToFullPack"fw_AddToFullPack_post"1)
    
register_forward(FM_CheckVisibility"fw_CheckVisibility")
    
    
RegisterHam(Ham_Item_Deployweapon_m134v"fw_Item_Deploy_Post"1)    
    
RegisterHam(Ham_Item_AddToPlayerweapon_m134v"fw_Item_AddToPlayer_Post"1)
    
RegisterHam(Ham_Weapon_WeaponIdleweapon_m134v"fw_Weapon_WeaponIdle_Post"1)
    
RegisterHam(Ham_Item_PostFrameweapon_m134v"fw_Item_PostFrame")    
    
RegisterHam(Ham_Weapon_Reloadweapon_m134v"fw_Weapon_Reload")
    
RegisterHam(Ham_Weapon_Reloadweapon_m134v"fw_Weapon_Reload_Post"1)    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack_World")
    
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Player")    

    
g_MsgCurWeapon get_user_msgid("CurWeapon")
    
g_MsgWeaponList get_user_msgid("WeaponList")
    
    
register_clcmd("v_mini""Get_M134V")
    
register_clcmd("weapon_m134_v""Hook_Weapon")
}
public 
plugin_precache(){
    
precache_model(MODEL_V)
    
precache_model(MODEL_P)
    
precache_model(MODEL_W)
    for(new 
0sizeof(WeaponSounds); i++)precache_sound(WeaponSounds[i])
    
    
precache_generic(WeaponResources[0])
    
precache_model(WeaponResources[1])
    
precache_model(WeaponResources[2])
    
g_SteamID precache_model(Steam)
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")
    
register_forward(FM_PrecacheEvent"fw_PrecacheEvent_Post"1)
    
g_ShellID1 precache_model(Shell1)
    
g_ShellID2 precache_model(Shell2)
    
    
g_Muzzleflash_Ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
    
precache_model(MUZZLEFLASH)
    
engfunc(EngFunc_SetModelg_Muzzleflash_EntMUZZLEFLASH)
    
set_pev(g_Muzzleflash_Entpev_scale0.2)
    
    
set_pev(g_Muzzleflash_Entpev_rendermodekRenderTransTexture)
    
set_pev(g_Muzzleflash_Entpev_renderamt0.0)

    
g_Muzzleflash_Ent2 engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
    
precache_model(MUZZLEFLASH2)
    
engfunc(EngFunc_SetModelg_Muzzleflash_Ent2MUZZLEFLASH2)
    
set_pev(g_Muzzleflash_Ent2pev_scale0.2)
    
    
set_pev(g_Muzzleflash_Ent2pev_rendermodekRenderTransTexture)
    
set_pev(g_Muzzleflash_Ent2pev_renderamt0.0)
}
public 
fw_PrecacheEvent_Post(type, const name[]){
    if(
equal("events/m249.sc"name)) g_Event_M134V get_orig_retval()        
}
public 
Hook_Weapon(id){
    
engclient_cmd(idweapon_m134v)
    return 
PLUGIN_HANDLED
}
public 
client_putinserver(id){
    
Safety_Connected(id)
}
public 
client_disconnect(id){
    
Safety_Disconnected(id)
}
public 
plugin_natives(){
    
register_native("trend_give_v","Get_M134V",1);
    
register_native("trend_strip_v","Remove_M134V",1);
}
stock drop_weapons(iddropwhat){
    static 
weapons[32], numiweaponid
    num 
0
    get_user_weapons
(idweaponsnum)
    for (
0numi++){
        
weaponid weapons[i]
        if ((
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))){
            static 
wname[32]; get_weaponname(weaponidwnamecharsmax(wname))
            
engclient_cmd(id"drop"wname)
        }
    }
}
public 
Get_M134V(id){
    
remove_task(id+TASK_OVERHEAT)
    
    
drop_weapons(id1)
    
    
UnSet_BitVar(g_InTempingAttackid)
    
UnSet_BitVar(g_Firedid)
    
UnSet_BitVar(g_OverHeatid)
    
UnSet_BitVar(g_RapidModeid)
    
g_M134State[id] = M134_ATTACK_NOT
    FiringTime
[id] = 0
    
    Set_BitVar
(g_Had_M134Vid)
    
give_item(idweapon_m134v)
    
    static 
EntEnt fm_get_user_weapon_entity(idCSW_M134V)
    if(!
pev_valid(Ent)) return
    
    
cs_set_weapon_ammo(EntCLIP)
    
cs_set_user_bpammo(idCSW_M134VBPAMMO)
    
    
message_begin(MSG_ONE_UNRELIABLEg_MsgCurWeapon_id)
    
write_byte(1)
    
write_byte(CSW_M134V)
    
write_byte(CLIP)
    
message_end()
}
public 
Remove_M134V(id){
    
UnSet_BitVar(g_InTempingAttackid)
    
UnSet_BitVar(g_Had_M134Vid)
    
UnSet_BitVar(g_OverHeatid)
    
UnSet_BitVar(g_RapidModeid)
    
    
remove_task(id+TASK_OVERHEAT)
}
public 
fw_AddToFullPack_post(esStateiEiEntiHostiHostFlagsiPlayerpSet){
    if(
iEnt == g_Muzzleflash_Ent){
        if(
Get_BitVar(g_MuzzleflashiHost)){
            
set_es(esStateES_Framefloat(random_num(02)))
                
            
set_es(esStateES_RenderModekRenderTransAdd)
            
set_es(esStateES_RenderAmt255.0)
            
            
UnSet_BitVar(g_MuzzleflashiHost)
        }    
        
set_es(esStateES_SkiniHost)
        
set_es(esStateES_Body1)
        
set_es(esStateES_AimEntiHost)
        
set_es(esStateES_MoveTypeMOVETYPE_FOLLOW)
    } 
    if(
iEnt == g_Muzzleflash_Ent2){
        if(
Get_BitVar(g_Muzzleflash2iHost)){
            
set_es(esStateES_Framefloat(random_num(02)))
                
            
set_es(esStateES_RenderModekRenderTransAdd)
            
set_es(esStateES_RenderAmt255.0)
            
            
UnSet_BitVar(g_Muzzleflash2iHost)
        }
            
        
set_es(esStateES_SkiniHost)
        
set_es(esStateES_Body1)
        
set_es(esStateES_AimEntiHost)
        
set_es(esStateES_MoveTypeMOVETYPE_FOLLOW)
    }
}
public 
fw_CheckVisibility(iEntitypSet){
    if(
iEntity == g_Muzzleflash_Ent){
        
forward_return(FMV_CELL1)
        return 
FMRES_SUPERCEDE
    

    else if(
iEntity == g_Muzzleflash_Ent2) {
        
forward_return(FMV_CELL1)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED
}
public 
fw_EmitSound(idchannel, const sample[], Float:volumeFloat:attnflagspitch){
    if(!
is_connected(id))return FMRES_IGNORED
    
if(!Get_BitVar(g_InTempingAttackid))return FMRES_IGNORED
        
    
if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i'){
        if(
sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')return FMRES_SUPERCEDE
        
if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't'){
            if (
sample[17] == 'w')  return FMRES_SUPERCEDE
            
else  return FMRES_SUPERCEDE
        
}
        if (
sample[14] == 's' && sample[15] == 't' && sample[16] == 'a')return FMRES_SUPERCEDE;
    }
    return 
FMRES_IGNORED
}
public 
fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle){
    if(!
is_alive(id))return FMRES_IGNORED    
    
if(!Get_BitVar(g_InTempingAttackid))return FMRES_IGNORED
    
    
static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    
    
pev(idpev_originfOrigin)
    
pev(idpev_view_ofsview_ofs)
    
xs_vec_add(fOriginview_ofsvecStart)
    
pev(idpev_v_anglev_angle)
    
    
engfunc(EngFunc_MakeVectorsv_angle)
    
get_global_vector(GL_v_forwardv_forward)

    
xs_vec_mul_scalar(v_forward0.0v_forward)
    
xs_vec_add(vecStartv_forwardvecEnd)
    
    
engfunc(EngFunc_TraceLinevecStartvecEndignored_monsteridhandle)
    
    return 
FMRES_SUPERCEDE
}
public 
fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monsterhullidhandle){
    if(!
is_alive(id))return FMRES_IGNORED    
    
if(!Get_BitVar(g_InTempingAttackid))return FMRES_IGNORED
    
    
static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    
    
pev(idpev_originfOrigin)
    
pev(idpev_view_ofsview_ofs)
    
xs_vec_add(fOriginview_ofsvecStart)
    
pev(idpev_v_anglev_angle)
    
    
engfunc(EngFunc_MakeVectorsv_angle)
    
get_global_vector(GL_v_forwardv_forward)
    
    
xs_vec_mul_scalar(v_forward0.0v_forward)
    
xs_vec_add(vecStartv_forwardvecEnd)
    
    
engfunc(EngFunc_TraceHullvecStartvecEndignored_monsterhullidhandle)
    
    return 
FMRES_SUPERCEDE
}
public 
fw_UpdateClientData_Post(idsendweaponscd_handle){
    if(!
is_alive(id))return FMRES_IGNORED    
    
if(get_player_weapon(id) == CSW_M134V && Get_BitVar(g_Had_M134Vid))set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
    return 
FMRES_HANDLED
}
public 
fw_PlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2){
    if (!
is_connected(invoker))return FMRES_IGNORED    
    
if(get_player_weapon(invoker) != CSW_M134V || !Get_BitVar(g_Had_M134Vinvoker))return FMRES_IGNORED
        
    
if(eventid == g_Event_M134V){
        
engfunc(EngFunc_PlaybackEventflags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED
}
public 
fw_CmdStart(iduc_handleseed){
    if(!
is_alive(id))return
    if(
get_player_weapon(id) != CSW_M134V || !Get_BitVar(g_Had_M134Vid))return
    
    static 
NewButtonNewButton get_uc(uc_handleUC_Buttons)
    static 
EntEnt fm_get_user_weapon_entity(idCSW_M134V)
    
    if(!
pev_valid(Ent))return
        
    if(
NewButton IN_ATTACK){
        
NewButton &= ~IN_ATTACK
        set_uc
(uc_handleUC_ButtonsNewButton)

        if(
get_pdata_float(id835) > 0.0)return
        if(
Get_BitVar(g_OverHeatid))return
        if(
cs_get_weapon_ammo(Ent) <= 0){
            if(
get_pdata_int(Ent54))return
            
set_pdata_int(Ent5414)
            
ExecuteHamB(Ham_Weapon_ReloadEnt)
            return
        }
        if(
g_M134State[id] == M134_ATTACK_NOT){
            
g_M134State[id] = M134_ATTACK_BEGIN
            
            FiringTime
[id] = 0
            UnSet_BitVar
(g_Firedid)
            
UnSet_BitVar(g_RapidModeid)
        } 
        else if(
g_M134State[id] == M134_ATTACK_BEGIN){
            if(
pev(idpev_weaponanim) != ANIME_FIRE_ENDSet_WeaponAnim(idANIME_FIRE_START)

            
emit_sound(EntCHAN_WEAPONWeaponSounds[9], 1.00.52094 random_num(015))
            
            
Set_WeaponIdleTime(idCSW_M134V0.2)
            
Set_PlayerNextAttack(id0.2)
            
            if(!
task_exists(id+TASK_ATTACK)) set_task(0.15"Task_ChangeState_Loop"id+TASK_ATTACK)
        } 
        else if(
g_M134State[id] == M134_ATTACK_LOOP) {
            if(
cs_get_weapon_ammo(Ent) > 0){
                if(!
Get_BitVar(g_RapidModeid)) Set_WeaponAnim(idANIME_FIRE_LOOP)
                else 
Set_WeaponAnim(idANIME_SFIRE_LOOP)
                
                
Set_WeaponIdleTime(idCSW_M134V0.5)
                
Set_PlayerNextAttack(id0.5)
            } 
            else{
                
g_M134State[id] = M134_ATTACK_END
                Set_WeaponAnim
(idANIME_FIRE_END)
                
                
emit_sound(EntCHAN_WEAPONWeaponSounds[8], 1.00.52094 random_num(015))
                
                
Set_WeaponIdleTime(idCSW_M134V2.0)
                
Set_PlayerNextAttack(id0.25)
                
                
remove_task(id+TASK_ATTACK)
                
g_M134State[id] = M134_ATTACK_NOT    
            
}
        }
    } 
    else if(
NewButton IN_ATTACK2) {
        
NewButton &= ~IN_ATTACK2
        set_uc
(uc_handleUC_ButtonsNewButton)

        if(
get_pdata_float(id835) > 0.0) return
        if(
Get_BitVar(g_OverHeatid))return
        if(
cs_get_weapon_ammo(Ent) <= 0){
            if(
get_pdata_int(Ent54))return
        
            
set_pdata_int(Ent5414)
            
ExecuteHamB(Ham_Weapon_ReloadEnt)
            return
        }
        if(
g_M134State[id] == M134_ATTACK_NOT){
            
Set_BitVar(g_RapidModeid)
            
            
FiringTime[id] = 0
            UnSet_BitVar
(g_Firedid)
            
g_M134State[id] = M134_ATTACK_BEGIN
        

        else if(
g_M134State[id] == M134_ATTACK_BEGIN) {
            if(
pev(idpev_weaponanim) != ANIME_FIRE_ENDSet_WeaponAnim(idANIME_SFIRE_START)

            
emit_sound(EntCHAN_WEAPONWeaponSounds[9], 1.00.52094 random_num(015))
            
            
Set_WeaponIdleTime(idCSW_M134V0.2)
            
Set_PlayerNextAttack(id0.2)
            
            if(!
task_exists(id+TASK_ATTACK)) set_task(0.15"Task_ChangeState_Loop"id+TASK_ATTACK)
        } 
        else if(
g_M134State[id] == M134_ATTACK_LOOP) {
            if(
cs_get_weapon_ammo(Ent) > 0){
                if(!
Get_BitVar(g_RapidModeid)) Set_WeaponAnim(idANIME_FIRE_LOOP)
                else 
Set_WeaponAnim(idANIME_SFIRE_LOOP)
                
                
Set_WeaponIdleTime(idCSW_M134V0.5)
                
Set_PlayerNextAttack(id0.5)
            } 
            else {
                
g_M134State[id] = M134_ATTACK_END
                emit_sound
(EntCHAN_WEAPONWeaponSounds[8], 1.00.52094 random_num(015))
                
                
Overheat_Begin(id)
                
                
remove_task(id+TASK_ATTACK)
                
g_M134State[id] = M134_ATTACK_NOT    
            
}
        }
    } 
    else {
        if(
g_M134State[id] == M134_ATTACK_LOOP) {
            
g_M134State[id] = M134_ATTACK_END
            
            emit_sound
(EntCHAN_WEAPONWeaponSounds[8], 1.00.52094 random_num(015))
            
            
Set_WeaponIdleTime(idCSW_M134V2.0)
            
Set_PlayerNextAttack(id0.25)
            
            if(!
Get_BitVar(g_RapidModeid)) Set_WeaponAnim(idANIME_FIRE_END)
            else 
Overheat_Begin(id)
            
            
remove_task(id+TASK_ATTACK)
            
g_M134State[id] = M134_ATTACK_NOT
        
}
    }
    
    if(
NewButton IN_RELOAD){
        if(
get_pdata_int(Ent54))return
        if(
Get_BitVar(g_OverHeatid))return
        if(
cs_get_weapon_ammo(Ent) >= CLIP)return
        if(
get_pdata_float(id835) > 0.0 || get_pdata_float(Ent464) > 0.0 || get_pdata_float(Ent474) > 0.0)return
            
        
set_pdata_int(Ent5414)
        
ExecuteHamB(Ham_Weapon_ReloadEnt)
    }
}
public 
Overheat_Begin(id){
    if(
Get_BitVar(g_Firedid)){
        if(
FiringTime[id] > 0){
            
Set_BitVar(g_OverHeatid)
            
            
SteamTime[id] = get_gametime() + 1.0
            
            Set_WeaponIdleTime
(idCSW_M134V2.0 1.0)
            
Set_PlayerNextAttack(idfloat(FiringTime[id]) + 1.0)
            
            
Set_WeaponAnim(idANIME_OH_START)
            
            
remove_task(id+TASK_OVERHEAT)
            
set_task(float(FiringTime[id]) + 1.0"Overheat_End"id+TASK_OVERHEAT)
        } 
        else {
            
Set_WeaponIdleTime(idCSW_M134V2.0)
            
Set_PlayerNextAttack(id0.25)
            
            
Set_WeaponAnim(idANIME_SFIRE_END)
        }
    } 
    else {
        
Set_WeaponIdleTime(idCSW_M134V2.0)
        
Set_PlayerNextAttack(id0.25)
        
        
Set_WeaponAnim(idANIME_SFIRE_END)
    }
}
public 
Overheat_End(id){
    
id -= TASK_OVERHEAT
    
    
if(!is_alive(id))return
        
    
UnSet_BitVar(g_OverHeatid)
    
    if(
get_player_weapon(id) != CSW_M134V || !Get_BitVar(g_Had_M134Vid))return
        
    
Set_WeaponAnim(idANIME_OH_END)

    
Set_WeaponIdleTime(idCSW_M134V2.0)
    
Set_PlayerNextAttack(id2.0)
}
public 
client_PostThink(id){
    if(!
is_alive(id))return
    if(
get_player_weapon(id) != CSW_M134V || !Get_BitVar(g_Had_M134Vid))return
    if(
Get_BitVar(g_OverHeatid)){
        if(
get_gametime() - 1.0 SteamTime[id]){
            static 
Float:Origin[3]
            
get_position(id20.00.00.0Origin)
            
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_SPRITE)
            
engfunc(EngFunc_WriteCoordOrigin[0])
            
engfunc(EngFunc_WriteCoordOrigin[1])
            
engfunc(EngFunc_WriteCoordOrigin[2])
            
write_short(g_SteamID)
            
write_byte(1)
            
write_byte(250)
            
message_end()
            
            
emit_sound(idCHAN_WEAPONWeaponSounds[10], 1.00.52094 random_num(015))
            
            
SteamTime[id] = get_gametime()
        }
    }
    if(
g_M134State[id] != M134_ATTACK_LOOP)return    
        
    static 
Float:DerSpeedDerSpeed Get_BitVar(g_RapidModeid) ? SPEED_B SPEED_A
    
    
if(get_gametime() - DerSpeed g_SpeedControl[id]){
        static 
EntEnt fm_get_user_weapon_entity(idCSW_M134V)
        if(!
pev_valid(Ent)) return

        if(
cs_get_weapon_ammo(Ent) > 0){
            
Set_BitVar(g_Firedid)
            
            
// Shake Screen
            
static Float:PunchAngles[3]
            
PunchAngles[0] = random_float(-1.51.5)
            
PunchAngles[1] = random_float(-1.51.5)
            
            
set_pev(idpev_punchanglePunchAngles)
            
            
Set_BitVar(g_Muzzleflashid)
            
Set_BitVar(g_Muzzleflash2id)
            
            
Create_Vodan(id)
            
emit_sound(EntCHAN_WEAPONWeaponSounds[0], 1.00.52094 random_num(015))
            
            static 
Float:Origin[3], Float:Target[3]
            
pev(idpev_originOrigin); Origin[2] += 16.0
            get_position
(id4096.00.00.0Target)
            
            if(
get_gametime() - 1.0 SteamTime[id]){
                
FiringTime[id]++
                
SteamTime[id] = get_gametime()
            }
            
            
Create_FakeAttack(id)
            
            static 
TraceTrace create_tr2()
            
engfunc(EngFunc_TraceLineOriginTargetDONT_IGNORE_MONSTERSidTrace)
            static 
HitHit get_tr2(TraceTR_pHit)
            
            if(
is_alive(Hit)){
                
do_attack(idHit0float(DAMAGE))
            } 
            else {
                static 
ptrptr create_tr2() 
                
engfunc(EngFunc_TraceLineOriginTargetDONT_IGNORE_MONSTERSidptr)

                static 
Float:EndPos[3]
                
get_tr2(ptrTR_vecEndPosEndPos)
                static 
Float:WallVector[3];get_tr2(ptr,TR_vecPlaneNormal,WallVector)
                
                
make_bullet(idEndPos)
                
                
engfunc(EngFunc_MessageBegin,MSG_PVS,SVC_TEMPENTITY,EndPos,0);
                
write_byte(TE_STREAK_SPLASH)
                
engfunc(EngFunc_WriteCoord,EndPos[0]);
                
engfunc(EngFunc_WriteCoord,EndPos[1]);
                
engfunc(EngFunc_WriteCoord,EndPos[2]);
                
engfunc(EngFunc_WriteCoord,WallVector[0]*random_float(25.0,30.0));
                
engfunc(EngFunc_WriteCoord,WallVector[1]*random_float(25.0,30.0));
                
engfunc(EngFunc_WriteCoord,WallVector[2]*random_float(25.0,30.0));
                
write_byte(111)
                
write_short(12)
                
write_short(3)
                
write_short(75)    
                
message_end()
                
                
free_tr2(ptr)
            }
            
            
free_tr2(Trace)
        }
        else {
            
g_M134State[id] = M134_ATTACK_END
            
if(!Get_BitVar(g_RapidModeid)) Set_WeaponAnim(idANIME_FIRE_END)
            else 
Set_WeaponAnim(idANIME_SFIRE_END)
            
            
Set_WeaponIdleTime(idCSW_M134V2.0)
            
Set_PlayerNextAttack(id0.25)
            
            
remove_task(id+TASK_ATTACK)
            
g_M134State[id] = M134_ATTACK_NOT
        
}
        
        
g_SpeedControl[id] = get_gametime()
    }
    
    static 
Float:DerTimeDerTime Get_BitVar(g_RapidModeid) ? 0.1 0.25
    
if(get_gametime() -  DerTime g_AttackDelay[id]){
        static 
EntEnt fm_get_user_weapon_entity(idCSW_M134V)
        if(!
pev_valid(Ent)) return
        
        if(
cs_get_weapon_ammo(Ent) > 0) {
            
cs_set_weapon_ammo(Entcs_get_weapon_ammo(Ent) - 1)
            if(
cs_get_weapon_ammo(Ent) <= && Get_BitVar(g_RapidModeid))
                
set_task(0.1"Overheat_Begin"id)
        }
        
        
g_AttackDelay[id] = get_gametime()
    }
}
public 
Create_Vodan(id){
    
Eject_Shell2(idg_ShellID10)
    
Eject_Shell2(idg_ShellID21)
}
public 
Task_ChangeState_Loop(id){
    
id -= TASK_ATTACK
    
    
if(!is_alive(id))return
    if(
get_player_weapon(id) != CSW_M134V || !Get_BitVar(g_Had_M134Vid))return
    if(
g_M134State[id] != M134_ATTACK_BEGIN)return
        
    
g_M134State[id] = M134_ATTACK_LOOP
}
public 
fw_Item_Deploy_Post(Ent){
    if(
pev_valid(Ent) != 2)return
    static 
IdId get_pdata_cbase(Ent414)
    if(
get_pdata_cbase(Id373) != Ent)return
    if(!
Get_BitVar(g_Had_M134VId))return
    
    
set_pev(Idpev_viewmodel2MODEL_V)
    
set_pev(Idpev_weaponmodel2MODEL_P)

    if(!
Get_BitVar(g_OverHeatId)) Set_WeaponAnim(IdANIME_DRAW)
    else 
Set_WeaponAnim(IdANIME_OH_DRAW)
    
    
set_pdata_string(Id, (492) * 4WEAPON_ANIMEXT, -20)
}
public 
fw_Item_AddToPlayer_Post(Entid){
    if(!
pev_valid(Ent))return HAM_IGNORED
        
    
if(pev(Entpev_impulse) == 123123645489){
        
Set_BitVar(g_Had_M134Vid)
        
set_pev(Entpev_impulse0)
    }
    
    if(
Get_BitVar(g_Had_M134Vid)){
        
message_begin(MSG_ONE_UNRELIABLEg_MsgWeaponList_id)
        
write_string("weapon_m134_vulcan")
        
write_byte(3)
        
write_byte(200)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(4)
        
write_byte(CSW_M134V)
        
write_byte(0)
        
message_end()
    }
    return 
HAM_HANDLED    
}
public 
fw_SetModel(entitymodel[]){
    if(!
pev_valid(entity))return FMRES_IGNORED
    
    
static Classname[32]
    
pev(entitypev_classnameClassnamesizeof(Classname))
    
    if(!
equal(Classname"weaponbox"))return FMRES_IGNORED
    
    
static iOwner
    iOwner 
pev(entitypev_owner)
    
    if(
equal(model"models/w_m249.mdl")){
        static 
weaponweapon find_ent_by_owner(-1weapon_m134ventity)
        
        if(!
pev_valid(weapon))return FMRES_IGNORED;
        
        if(
Get_BitVar(g_Had_M134ViOwner)){
            
set_pev(weaponpev_impulse123123645489)
            
            
engfunc(EngFunc_SetModelentityMODEL_W)
            
            
Remove_M134V(iOwner)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED;
}
public 
fw_Item_PostFrame(ent){
    static 
idid pev(entpev_owner)
    if(!
is_user_alive(id))return HAM_IGNORED
    
if(!Get_BitVar(g_Had_M134Vid))return HAM_IGNORED    
    
    
static Float:flNextAttackflNextAttack get_pdata_float(id835)
    static 
bpammobpammo cs_get_user_bpammo(idCSW_M134V)
    
    static 
iClipiClip get_pdata_int(ent514)
    static 
fInReloadfInReload get_pdata_int(ent544)
    
    if(
fInReload && flNextAttack <= 0.0){
        static 
temp1
        temp1 
min(CLIP iClipbpammo)

        
set_pdata_int(ent51iClip temp14)
        
cs_set_user_bpammo(idCSW_M134Vbpammo temp1)        
        
        
set_pdata_int(ent5404)
        
fInReload 0
    
}        
    
    return 
HAM_IGNORED
}
public 
fw_Weapon_Reload(ent){
    static 
idid pev(entpev_owner)
    if(!
is_user_alive(id))return HAM_IGNORED
    
if(!Get_BitVar(g_Had_M134Vid))return HAM_IGNORED    
    
if(Get_BitVar(g_OverHeatid))return HAM_SUPERCEDE
    
    g_Clip
[id] = -1
        
    
static BPAmmoBPAmmo cs_get_user_bpammo(idCSW_M134V)
    static 
iClipiClip get_pdata_int(ent514)
        
    if(
BPAmmo <= 0)return HAM_SUPERCEDE
    
if(iClip >= CLIP)return HAM_SUPERCEDE        
            
    g_Clip
[id] = iClip    
    
    
return HAM_HANDLED
}
public 
fw_Weapon_Reload_Post(ent){
    static 
idid pev(entpev_owner)
    if(!
is_user_alive(id))return HAM_IGNORED
    
if(!Get_BitVar(g_Had_M134Vid))return HAM_IGNORED    
    
if(Get_BitVar(g_OverHeatid))return HAM_SUPERCEDE
    
    
if((get_pdata_int(ent544) == 1)){
        if(
g_Clip[id] == -1)return HAM_IGNORED
        
        set_pdata_int
(ent51g_Clip[id], 4)
        
Set_WeaponAnim(idANIME_RELOAD)
        
        
Set_PlayerNextAttack(idTIME_RELOAD)
    }
    
    return 
HAM_HANDLED
}
public 
fw_Weapon_WeaponIdle_PostiEnt ){
    if(
pev_valid(iEnt) != 2)return
    static 
IdId get_pdata_cbase(iEnt414)
    if(
get_pdata_cbase(Id373) != iEnt)return
    if(!
Get_BitVar(g_Had_M134VId))return
        
    if(
get_pdata_float(iEnt484) <= 0.25){
        if(!
Get_BitVar(g_OverHeatId)) Set_WeaponAnim(IdANIME_IDLE)
        else 
Set_WeaponAnim(IdANIME_OH_IDLE)
        
set_pdata_float(iEnt4820.04)
    }    
}
public 
fw_TraceAttack_World(VictimAttackerFloat:DamageFloat:Direction[3], PtrDamageBits){
    if(!
is_connected(Attacker))return HAM_IGNORED    
    
if(get_player_weapon(Attacker) != CSW_M134V || !Get_BitVar(g_Had_M134VAttacker))return HAM_IGNORED
        
    
static Float:flEnd[3], Float:vecPlane[3]
        
    
get_tr2(PtrTR_vecEndPosflEnd)
    
get_tr2(PtrTR_vecPlaneNormalvecPlane)        
            
    
Make_BulletHole(AttackerflEndDamage)
    
    static 
Float:WallVector[3];get_tr2(Ptr,TR_vecPlaneNormal,WallVector)
            
    
engfunc(EngFunc_MessageBegin,MSG_PVS,SVC_TEMPENTITY,flEnd,0);
    
write_byte(TE_STREAK_SPLASH)
    
engfunc(EngFunc_WriteCoord,flEnd[0]);
    
engfunc(EngFunc_WriteCoord,flEnd[1]);
    
engfunc(EngFunc_WriteCoord,flEnd[2]);
    
engfunc(EngFunc_WriteCoord,WallVector[0]*random_float(25.0,30.0));
    
engfunc(EngFunc_WriteCoord,WallVector[1]*random_float(25.0,30.0));
    
engfunc(EngFunc_WriteCoord,WallVector[2]*random_float(25.0,30.0));
    
write_byte(111)
    
write_short(12)
    
write_short(3)
    
write_short(75)    
    
message_end()

    
SetHamParamFloat(3float(DAMAGE))
    
    return 
HAM_HANDLED
}
public 
fw_TraceAttack_Player(VictimAttackerFloat:DamageFloat:Direction[3], PtrDamageBits){
    if(!
is_connected(Attacker))return HAM_IGNORED    
    
if(get_player_weapon(Attacker) != CSW_M134V || !Get_BitVar(g_Had_M134VAttacker))return HAM_IGNORED

    SetHamParamFloat
(3float(DAMAGE))
    
    return 
HAM_HANDLED
}
public 
Create_FakeAttack(id){
    static 
EntEnt fm_get_user_weapon_entity(idCSW_KNIFE)
    if(!
pev_valid(Ent)) return
    
    
Set_BitVar(g_InTempingAttackid)
    
ExecuteHamB(Ham_Weapon_PrimaryAttackEnt)
    static 
iAnimDesired,  szAnimation[64]
    
formatex(szAnimationcharsmax(szAnimation), (pev(idpev_flags) & FL_DUCKING) ? "crouch_shoot_%s" "ref_shoot_%s"WEAPON_ANIMEXT)
    if((
iAnimDesired lookup_sequence(idszAnimation)) == -1)
        
iAnimDesired 0
    set_pev
(idpev_sequenceiAnimDesired)
    
UnSet_BitVar(g_InTempingAttackid)
}
public 
Register_SafetyFunc(){
    
register_event("CurWeapon""Safety_CurWeapon""be""1=1")
    
RegisterHam(Ham_Spawn"player""fw_Safety_Spawn_Post"1)
    
RegisterHam(Ham_Killed"player""fw_Safety_Killed_Post"1)
}
public 
Register_SafetyFuncBot(id){
    
RegisterHamFromEntity(Ham_Spawnid"fw_Safety_Spawn_Post"1)
    
RegisterHamFromEntity(Ham_Killedid"fw_Safety_Killed_Post"1)
}
public 
Safety_Connected(id){
    
Set_BitVar(g_IsConnectedid)
    
UnSet_BitVar(g_IsAliveid)
    
    
g_PlayerWeapon[id] = 0
}
public 
Safety_Disconnected(id){
    
UnSet_BitVar(g_IsConnectedid)
    
UnSet_BitVar(g_IsAliveid)
    
    
g_PlayerWeapon[id] = 0
}
public 
Safety_CurWeapon(id){
    if(!
is_alive(id))return
        
    static 
CSWCSW read_data(2)
    if(
g_PlayerWeapon[id] != CSWg_PlayerWeapon[id] = CSW
}
public 
fw_Safety_Spawn_Post(id){
    if(!
is_user_alive(id))return
        
    
Set_BitVar(g_IsAliveid)
}
public 
fw_Safety_Killed_Post(id){
    
UnSet_BitVar(g_IsAliveid)
}
public 
is_alive(id){
    if(!(
<= id <= 32))return 0
    
if(!Get_BitVar(g_IsConnectedid))return 0
    
if(!Get_BitVar(g_IsAliveid))return 0
    
    
return 1
}
public 
is_connected(id){
    if(!(
<= id <= 32))return 0
    
if(!Get_BitVar(g_IsConnectedid))return 0
    
    
return 1
}
public 
get_player_weapon(id){
    if(!
is_alive(id))return 0
    
return g_PlayerWeapon[id]
}
stock Set_WeaponAnim(idanim){
    
set_pev(idpev_weaponanimanim)
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(anim)
    
write_byte(pev(idpev_body))
    
message_end()
}
stock Make_BulletHole(idFloat:Origin[3], Float:Damage){
    static 
DecalDecal random_num(4145)
    static 
LoopTime
    
    if(
Damage 100.0LoopTime 2
    
else LoopTime 1
    
    
for(new 0LoopTimei++){
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_byte(Decal)
        
message_end()
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_short(id)
        
write_byte(Decal)
        
message_end()
    }
}
stock get_weapon_attachment(idFloat:output[3], Float:fDis 40.0){ 
    static 
Float:vfEnd[3], viEnd[3
    
get_user_origin(idviEnd3)  
    
IVecFVec(viEndvfEnd
    
    static 
Float:fOrigin[3], Float:fAngle[3]
    
    
pev(idpev_originfOrigin
    
pev(idpev_view_ofsfAngle)
    
    
xs_vec_add(fOriginfAnglefOrigin
    
    static 
Float:fAttack[3]
    
    
xs_vec_sub(vfEndfOriginfAttack)
    
xs_vec_sub(vfEndfOriginfAttack
    
    static 
Float:fRate
    
    fRate 
fDis vector_length(fAttack)
    
xs_vec_mul_scalar(fAttackfRatefAttack)
    
    
xs_vec_add(fOriginfAttackoutput)
}
stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[]){
    new 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    
    
pev(idpev_originvOrigin)
    
pev(idpev_view_ofs,vUp)
    
xs_vec_add(vOrigin,vUp,vOrigin)
    
pev(idpev_v_anglevAngle
    
    
angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward
    
angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
    
angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
    
    
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
    vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
    vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3]){
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
    
    
return 1;
}
stock Set_WeaponIdleTime(idWeaponId ,Float:TimeIdle){
    static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
    if(!
pev_valid(entwpn)) return
        
    
set_pdata_float(entwpn46TimeIdle4)
    
set_pdata_float(entwpn47TimeIdle4)
    
set_pdata_float(entwpn48TimeIdle 0.54)
}
stock Set_PlayerNextAttack(idFloat:nexttime){
    
set_pdata_float(id83nexttime5)
}
stock Get_Position(id,Float:forwFloat:rightFloat:upFloat:vStart[]){
    static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    
    
pev(idpev_originvOrigin)
    
pev(idpev_view_ofs,vUp
    
xs_vec_add(vOrigin,vUp,vOrigin)
    
pev(idpev_v_anglevAngle
    
    
angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward
    
angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
    
angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
    
    
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
    vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
    vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}
stock is_wall_between_points(Float:start[3], Float:end[3], ignore_ent){
    static 
ptr
    ptr 
create_tr2()

    
engfunc(EngFunc_TraceLinestartendIGNORE_MONSTERSignore_entptr)
    
    static 
Float:EndPos[3]
    
get_tr2(ptrTR_vecEndPosEndPos)

    
free_tr2(ptr)
    return 
floatround(get_distance_f(endEndPos))

do_attack(AttackerVictimInflictorFloat:fDamage){
    
fake_player_trace_attack(AttackerVictimfDamage)
    
fake_take_damage(AttackerVictimfDamageInflictor)
}
fake_player_trace_attack(iAttackeriVictim, &Float:fDamage){
    static 
Float:fAngles[3], Float:fDirection[3]
    
pev(iAttackerpev_anglesfAngles)
    
angle_vector(fAnglesANGLEVECTOR_FORWARDfDirection)
    
    static 
Float:fStart[3], Float:fViewOfs[3]
    
pev(iAttackerpev_originfStart)
    
pev(iAttackerpev_view_ofsfViewOfs)
    
xs_vec_add(fViewOfsfStartfStart)
    
    static 
iAimOrigin[3], Float:fAimOrigin[3]
    
get_user_origin(iAttackeriAimOrigin3)
    
IVecFVec(iAimOriginfAimOrigin)
    
    static 
ptrptr create_tr2() 
    
engfunc(EngFunc_TraceLinefStartfAimOriginDONT_IGNORE_MONSTERSiAttackerptr)
    static 
pHitpHit get_tr2(ptrTR_pHit)
    static 
iHitgroupiHitgroup get_tr2(ptrTR_iHitgroup)
    static 
Float:fEndPos[3]; get_tr2(ptrTR_vecEndPosfEndPos)

    static 
iTargetiBody
    get_user_aiming
(iAttackeriTargetiBody)
    
    if (
iTarget == iVictim)iHitgroup iBody
    
    
else if (pHit != iVictim){
        static 
Float:fVicOrigin[3], Float:fVicViewOfs[3], Float:fAimInVictim[3]
        
pev(iVictimpev_originfVicOrigin)
        
pev(iVictimpev_view_ofsfVicViewOfs
        
xs_vec_add(fVicViewOfsfVicOriginfAimInVictim)
        
fAimInVictim[2] = fStart[2]
        
fAimInVictim[2] += get_distance_f(fStartfAimInVictim) * floattanfAngles[0] * 2.0degrees )
    
        static 
iAngleToVictimiAngleToVictim get_angle_to_target(iAttackerfVicOrigin)
        
iAngleToVictim abs(iAngleToVictim)
        static 
Float:fDisfDis 2.0 get_distance_f(fStartfAimInVictim) * floatsinfloat(iAngleToVictim) * 0.5degrees )
        static 
Float:fVicSize[3]
        
pev(iVictimpev_size fVicSize)
        if ( 
fDis <= fVicSize[0] * 0.5 ){
            static 
ptr2ptr2 create_tr2() 
            
engfunc(EngFunc_TraceLinefStartfAimInVictimDONT_IGNORE_MONSTERSiAttackerptr2)
            static 
pHit2pHit2 get_tr2(ptr2TR_pHit)
            static 
iHitgroup2iHitgroup2 get_tr2(ptr2TR_iHitgroup)
            
            if ( 
pHit2 == iVictim && (iHitgroup2 != HIT_HEAD || fDis <= fVicSize[0] * 0.25) ){
                
pHit iVictim
                iHitgroup 
iHitgroup2
                get_tr2
(ptr2TR_vecEndPosfEndPos)
            }
            
            
free_tr2(ptr2)
        }
        
        if (
pHit != iVictim){
            
iHitgroup HIT_GENERIC
            
            
new ptr3 create_tr2() 
            
engfunc(EngFunc_TraceLinefStartfVicOriginDONT_IGNORE_MONSTERSiAttackerptr3)
            
get_tr2(ptr3TR_vecEndPosfEndPos)
            
            
free_tr2(ptr3)
        }
    }
    
    
set_tr2(ptrTR_pHitiVictim)
    
set_tr2(ptrTR_iHitgroupiHitgroup)
    
set_tr2(ptrTR_vecEndPosfEndPos)
    
    if(
cs_get_user_team(iVictim) != cs_get_user_team(iAttacker)) create_blood(fEndPos)
    
    static 
Float:fMultifDamage 
    
switch(iHitgroup){
        case 
HIT_HEADfMultifDamage  4.0
        
case HIT_STOMACHfMultifDamage  1.25
        
case HIT_LEFTLEGfMultifDamage  0.75
        
case HIT_RIGHTLEGfMultifDamage  0.75
        
default: fMultifDamage  1.0
    
}
    
    
fDamage *= fMultifDamage
    
    fake_trake_attack
(iAttackeriVictimfDamagefDirectionptr)
    
free_tr2(ptr)
}
stock create_blood(const Float:origin[3]){
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY
    
write_byte(TE_BLOODSPRITE)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[2])
    
write_short(m_iBlood[1])
    
write_short(m_iBlood[0])
    
write_byte(75)
    
write_byte(5)
    
message_end()
}
stock fake_trake_attack(iAttackeriVictimFloat:fDamageFloat:fDirection[3], iTraceHandleiDamageBit = (DMG_NEVERGIB DMG_BULLET)){
    
ExecuteHamB(Ham_TraceAttackiVictimiAttackerfDamagefDirectioniTraceHandleiDamageBit)
}
stock fake_take_damage(iAttackeriVictimFloat:fDamageiInflictor 0iDamageBit = (DMG_NEVERGIB DMG_BULLET)){
    
ExecuteHamB(Ham_TakeDamageiVictimiInflictoriAttackerfDamageiDamageBit)
}
stock get_angle_to_target(id, const Float:fTarget[3], Float:TargetSize 0.0){
    new 
Float:fOrigin[3], iAimOrigin[3], Float:fAimOrigin[3], Float:fV1[3]
    
pev(idpev_originfOrigin)
    
get_user_origin(idiAimOrigin3)
    
IVecFVec(iAimOriginfAimOrigin)
    
xs_vec_sub(fAimOriginfOriginfV1)
    new 
Float:fV2[3]
    
xs_vec_sub(fTargetfOriginfV2)
    new 
iResult get_angle_between_vectors(fV1fV2)
    if (
TargetSize 0.0){
        new 
Float:fTan TargetSize get_distance_f(fOriginfTarget)
        new 
fAngleToTargetSize floatroundfloatatan(fTandegrees) )
        
iResult -= (iResult 0) ? fAngleToTargetSize : -fAngleToTargetSize
    
}
    
    return 
iResult
}
stock get_angle_between_vectors(const Float:fV1[3], const Float:fV2[3]){
    new 
Float:fA1[3], Float:fA2[3]
    
engfunc(EngFunc_VecToAnglesfV1fA1)
    
engfunc(EngFunc_VecToAnglesfV2fA2)
    
    new 
iResult floatround(fA1[1] - fA2[1])
    
iResult iResult 360
    iResult 
= (iResult 180) ? (iResult 360) : iResult
    
    
return iResult
}
stock make_bullet(idFloat:Origin[3]){
    new 
decal random_num(4145)
    const 
loop_time 2
    
    
for(new 0loop_timei++){
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_byte(decal)
        
message_end()
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_short(id)
        
write_byte(decal)
        
message_end()
    }
}
stock Get_SpeedVector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3]){
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= (num 2.0)
    
new_velocity[1] *= (num 2.0)
    
new_velocity[2] *= (num 2.0)
}  
stock Eject_Shell(idShell_ModelIndexFloat:Time){
    static 
EntEnt get_pdata_cbase(id3735)
    if(!
pev_valid(Ent))return

        
set_pdata_int(Ent57Shell_ModelIndex4)
        
set_pdata_float(id111get_gametime() + Time)
}
public 
Eject_Shell2(idShellIDRight){
    static 
Float:player_origin[3], Float:origin[3], Float:origin2[3], Float:gunorigin[3], Float:oldangles[3], Float:v_forward[3], Float:v_forward2[3], Float:v_up[3], Float:v_up2[3], Float:v_right[3], Float:v_right2[3], Float:viewoffsets[3];
    
    
pev(id,pev_v_angleoldangles); pev(id,pev_origin,player_origin); pev(idpev_view_ofsviewoffsets);

    
engfunc(EngFunc_MakeVectorsoldangles)
    
    
global_get(glb_v_forwardv_forward); global_get(glb_v_upv_up); global_get(glb_v_rightv_right);
    
global_get(glb_v_forwardv_forward2); global_get(glb_v_upv_up2); global_get(glb_v_rightv_right2);
    
    
xs_vec_add(player_originviewoffsetsgunorigin);
    
    if(!
Right){
        
xs_vec_mul_scalar(v_forward20.0v_forward); xs_vec_mul_scalar(v_right, -2.5v_right);
        
xs_vec_mul_scalar(v_up, -1.5v_up);
        
xs_vec_mul_scalar(v_forward219.9v_forward2); xs_vec_mul_scalar(v_right2, -2.0v_right2);
        
xs_vec_mul_scalar(v_up2, -2.0v_up2);
    } 
    else {
        
xs_vec_mul_scalar(v_forward20.0v_forward); xs_vec_mul_scalar(v_right2.5v_right);
        
xs_vec_mul_scalar(v_up, -1.5v_up);
        
xs_vec_mul_scalar(v_forward219.9v_forward2); xs_vec_mul_scalar(v_right22.0v_right2);
        
xs_vec_mul_scalar(v_up2, -2.0v_up2);
    }
    
    
xs_vec_add(gunoriginv_forwardorigin);
    
xs_vec_add(gunoriginv_forward2origin2);
    
xs_vec_add(originv_rightorigin);
    
xs_vec_add(origin2v_right2origin2);
    
xs_vec_add(originv_uporigin);
    
xs_vec_add(origin2v_up2origin2);

    static 
Float:velocity[3]
    
get_speed_vector(origin2originrandom_float(140.0160.0), velocity)

    static 
angleangle random_num(0360)

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_MODEL)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[2] - 16.0)
    
engfunc(EngFunc_WriteCoord,velocity[0])
    
engfunc(EngFunc_WriteCoord,velocity[1])
    
engfunc(EngFunc_WriteCoord,velocity[2])
    
write_angle(angle)
    
write_short(ShellID)
    
write_byte(1)
    
write_byte(20)
    
message_end()


Last edited by counter1strike6; 02-09-2016 at 04:22.
counter1strike6 is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 09:51.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode