⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🇹🇷 TR Lokasyon | 🛡️ Gelişmiş DDoS Koruması | ⚡ Düşük Ping | 🎧 Kesintisiz TS3 | Hostlar
Sponsor Görsel 2
SponsorSponsor

Konu

#1
S.a silahtaki sıkıntı şudur serverın modu Zombie Escape  mod  ama serverda  takım arkadaşlarım silahtaki efekt ile zarar görüyor sadece zombilere hasar vermesini istiyorum rica etsem düzeltir misiniz 
sadece zombilere hasar vermesini istiyorum
.smaextra.sma(Dosya Boyutu: 35,74 KB | İndirme Sayısı: 5)
Son Düzenleme: 15-07-2021, 13:26, Düzenleyen: mert3825.
#2
Kod:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <csx>
#include <zombieplague>

#define PLUGIN "x-tracker"
#define VERSION "1.0"
#define AUTHOR "Mellowzy"

#define CSW_LOCKGUN CSW_M249
#define weapon_lockgun "weapon_m249"
#define weapon_old "models/w_m249.mdl"
#define old_event "events/m249.sc"

#define TASK_ZOOM 00100201
#define mf_cls "mf_lockongun"
#define RECOILA 0.5
#define RECOILB 0.2

#define WEAPON_CODE 109299913
#define RELOAD_TIME 2.0
#define spr_wpn "weapon_lockongun"
#define DAMAGE_A 75
#define DAMAGE_B 1000
#define CLIP 50
#define BPMAMO 500
#define SPEED 0.07
#define CHARGE_TIME 0.3

#define zp_get_user_team

#define INSTANCE(%0) ((%0 == -1) ? 0 : %0)
#define IsValidPev(%0) (pev_valid(%0) == 2)
#define IsObserver(%0) pev(%0,pev_iuser1)
#define OBS_IN_EYE 4
#define MSGID_WEAPONLIST 78
#define MAXTR 10

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)

// MACROS
#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))

new g_Had_Thanatos5, g_Thanatos5_Clip[33],g_iMode, iAmmo[33]
new g_MsgCurWeapon, g_MsgWeaponList, g_MaxPlayers,Float:g_Recoil[33][3]
new g_Event_Thanatos5, g_ShellId, g_SmokePuff_SprId, g_HamBot, spr_trail, g_Exp_SprID
new bool:gInZoom[256], bool:gTracked[256], bool:ready[256], bool:recover[256]
new Float:TrackedPos[3],Float:TrackedPos2[MAXTR][3], TrackedVictim[33], maxtracked[MAXTR],  g_item
enum
{
    HIT_USER_CHEST = 1,
    HIT_USER_STOMACH,
    HIT_USER_HEAD
}
new const lockgun_model[][] =
{
    "models/tracker/lockongun_bullet1.mdl",
    "models/tracker/p_lockongun1.mdl", //1
    "models/tracker/v_lockongun1.mdl", //2
    "models/tracker/v_lockonsight1.mdl", //3
    "models/tracker/w_lockongun1.mdl" //4
}
new const lockgun_sound[][] =
{
    "weapons/tracker/lockongun_draw.wav",
    "weapons/tracker/lockongun_exp.wav", //1
    "weapons/tracker/lockongun_lockon_beep.wav",//2
    "weapons/tracker/lockongun_reload.wav",
    "weapons/tracker/lockongun_scope_on.wav",
    "weapons/tracker/lockongun_shootb.wav", //5
    "weapons/tracker/lockongun_shootb_on1.wav",
    "weapons/tracker/lockongun_shootb_on2.wav",
    "weapons/tracker/lockongun_zoom_in.wav",
    "weapons/tracker/lockongun_zoom_out.wav",
    "weapons/tracker/lockongun-1.wav" //10
}

new const lockgun_sprites[][] =
{
    "sprites/tracker/640hud36.spr",
    "sprites/tracker/640hud44.spr",
    "sprites/tracker/640hud189.spr",
    "sprites/tracker/ef_lockongun_explosion01.spr",
    "sprites/tracker/muzzleflash102.spr"
}
    
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
    
    register_forward(FM_SetModel, "fw_SetModel")
    register_forward(FM_CmdStart, "fw_CmdStart")
    register_forward(FM_UpdateClientData,"fw_UpdateClientData_Post", 1)    
    register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
    
    register_think("lockon_rocket", "rocket_think")
    register_touch("lockon_rocket", "*", "tocket_touch")
    
    RegisterHam(Ham_Item_Deploy, weapon_lockgun, "fw_Item_Deploy_Post", 1)    
    RegisterHam(Ham_Item_AddToPlayer, weapon_lockgun, "fw_Item_AddToPlayer_Post", 1)
    RegisterHam(Ham_Item_PostFrame, weapon_lockgun, "fw_Item_PostFrame")    
    RegisterHam(Ham_Weapon_Reload, weapon_lockgun, "fw_Weapon_Reload")
    RegisterHam(Ham_Weapon_Reload, weapon_lockgun, "fw_Weapon_Reload_Post", 1)    
    RegisterHam(Ham_Weapon_WeaponIdle, weapon_lockgun, "fw_Weapon_WeaponIdle_Post", 1)
    RegisterHam(Ham_Think, "env_sprite", "fw_MF_Think")
    
    RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack_World")
    RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack_Player")
    
    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage", 1)
    RegisterHam(Ham_Weapon_PrimaryAttack, weapon_lockgun, "fw_Weapon_PrimaryAttack")
    RegisterHam(Ham_Weapon_PrimaryAttack, weapon_lockgun, "fw_Weapon_PrimaryAttack_Post", 1)
    
    g_MsgCurWeapon = get_user_msgid("CurWeapon")
    g_MsgWeaponList = get_user_msgid("WeaponList")
    g_MaxPlayers = get_maxplayers()
    
    g_item = zp_register_extra_item("X-Tracker", 0, ZP_TEAM_HUMAN);
    register_clcmd(spr_wpn, "Hook_Weapon")
}

public plugin_precache()
{
    new i;
    for(i = 0; i <sizeof(lockgun_model); i++)
        precache_model(lockgun_model[i])
    for(i = 0; i <sizeof(lockgun_sound); i++)
        precache_sound(lockgun_sound[i])
    for(i = 0; i<sizeof(lockgun_sprites); i++)
        precache_model(lockgun_sprites[i])
    
    new Txt[32]
    format(Txt, 31, "sprites/%s.txt", spr_wpn)
    engfunc(EngFunc_PrecacheGeneric, Txt)
    
    g_Exp_SprID = precache_model("sprites/tracker/ef_lockongun_explosion03.spr")
    
    g_ShellId = precache_model("models/tracker/rshell1.mdl")
    g_SmokePuff_SprId = precache_model("sprites/tracker/wall_puff1.spr")
    spr_trail = engfunc(EngFunc_PrecacheModel, "sprites/tracker/laserbeam.spr")
    
    register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
    
    server_cmd("mp_consistency 0")
}
public fw_PrecacheEvent_Post(type, const name[])
{
    if(equal(old_event, name)) g_Event_Thanatos5 = get_orig_retval()        
}

public client_putinserver(id)
{
    if(!g_HamBot && is_user_bot(id))
    {
        g_HamBot = 1
        set_task(0.1, "Do_Register_HamBot", id)
    }
}
public client_connect(id)Remove_Weapon(id)
public client_disconnected(id) Remove_Weapon(id)
public Event_CurWeapon(id)
{
    static CSW; CSW = read_data(2)
    if(CSW != CSW_LOCKGUN)
        return
    if(!Get_BitVar(g_Had_Thanatos5, id))    
        return
        
    static Ent; Ent = fm_get_user_weapon_entity(id, CSW_LOCKGUN)
    if(!pev_valid(Ent)) return
    
    set_pdata_float(Ent, 46, SPEED, 4)
    set_pdata_float(Ent, 47, SPEED, 4)
}
public Do_Register_HamBot(id)
{
    RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack_Player")
}
public zp_extra_item_selected(id, ItemID)
{
    if(ItemID == g_item) Get_Thanatos5(id)
}

public zbheroex_weapon_remove(id, ItemID)
{
    if(ItemID == g_item) Remove_Weapon(id)
}

public Get_Thanatos5(id)
{
    drop_weapons(id, 1)
    set_zoomid(id, 0)
    iAmmo[id] = 10
    ready[id] = false
    recover[id] = true
    
    Set_BitVar(g_Had_Thanatos5, id)
    Set_BitVar(g_iMode, id)
    give_item(id, weapon_lockgun)
    
    static Ent; Ent = fm_get_user_weapon_entity(id, CSW_LOCKGUN)
    if(pev_valid(Ent)) set_pdata_int(Ent, 51, CLIP, 4)
    
    engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, g_MsgCurWeapon, {0, 0, 0}, id)
    write_byte(1)
    write_byte(CSW_LOCKGUN)
    write_byte(CLIP)
    message_end()
    
    set_pev(Ent, pev_fuser2, 0.0)
    
    gInZoom[id] = false
    gTracked[id] = false
    
    cs_set_user_bpammo(id, CSW_LOCKGUN, BPMAMO)
}
public Hook_Weapon(id)
{
    engclient_cmd(id, weapon_lockgun)
    return PLUGIN_HANDLED
}
public Remove_Weapon(id)
{
    set_fov(id, 90)
    UnSet_BitVar(g_Had_Thanatos5, id)
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED    
    if(get_user_weapon(id) == CSW_LOCKGUN && Get_BitVar(g_Had_Thanatos5, id))
        set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
    
    return FMRES_HANDLED
}

public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
    if (!is_user_connected(invoker))
        return FMRES_IGNORED    
    if(get_user_weapon(invoker) != CSW_LOCKGUN || !Get_BitVar(g_Had_Thanatos5, invoker))
        return FMRES_IGNORED
    if(eventid != g_Event_Thanatos5)
        return FMRES_IGNORED
    
    engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
    
    Eject_Shell(invoker, g_ShellId, 0.01)

    return FMRES_IGNORED
}
public fw_Weapon_PrimaryAttack(Ent)
{
    static id; id = pev(Ent, pev_owner)
    if(!is_user_alive(id))
        return HAM_IGNORED
    if(!Get_BitVar(g_Had_Thanatos5, id))
        return HAM_IGNORED

    pev(id, pev_punchangle, g_Recoil[id])
    return HAM_IGNORED
}
public fw_Weapon_PrimaryAttack_Post(Ent)
{
    static id; id = pev(Ent, pev_owner)
    new iClip = get_pdata_int(Ent, 51, 4)
    if(!is_user_alive(id))
        return
    if(!Get_BitVar(g_Had_Thanatos5, id))
        return
    if(!iClip)
        return
    
    static Float:Push[3]
    pev(id, pev_punchangle, Push)
    xs_vec_sub(Push, g_Recoil[id], Push)
    xs_vec_mul_scalar(Push, gInZoom[id]?RECOILB : RECOILA, Push)
    xs_vec_add(Push, g_Recoil[id], Push)
    set_pev(id, pev_punchangle, Push)
    
    if(Get_BitVar(g_iMode, id)) Set_WeaponAnim(id, 3)
    else Set_WeaponAnim(id, 2)
    emit_sound(id, CHAN_WEAPON, lockgun_sound[10], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    Make_Muzzle(id)
    
    // Acc
    static Accena; Accena = gInZoom[id]? 100 : 15
    if(Accena != -1)
    {
        static Float:Accuracy
        Accuracy = (float(100 - Accena) * 1.5) / 100.0

        set_pdata_float(Ent, 62, Accuracy, 4);
    }
    set_pdata_int(Ent, 64, 0, 4)
}
public fw_SetModel(entity, model[])
{
    if(!pev_valid(entity))
        return FMRES_IGNORED
    
    static Classname[32]
    pev(entity, pev_classname, Classname, sizeof(Classname))
    
    if(!equal(Classname, "weaponbox"))
        return FMRES_IGNORED
    
    static iOwner
    iOwner = pev(entity, pev_owner)
    
    if(equal(model, weapon_old))
    {
        static weapon; weapon = find_ent_by_owner(-1, weapon_lockgun, entity)
        
        if(!pev_valid(weapon))
            return FMRES_IGNORED;
        
        if(Get_BitVar(g_Had_Thanatos5, iOwner))
        {
            set_pev(weapon, pev_impulse, 3152015)
            
            engfunc(EngFunc_SetModel, entity, lockgun_model[4])
            
            Remove_Weapon(iOwner)
            
            return FMRES_SUPERCEDE
        }
    }

    return FMRES_IGNORED;
}

public fw_Item_Deploy_Post(Ent)
{
    if(pev_valid(Ent) != 2)
        return
    static Id; Id = get_pdata_cbase(Ent, 41, 4)
    if(get_pdata_cbase(Id, 373) != Ent)
        return
    if(!Get_BitVar(g_Had_Thanatos5, Id))
        return
    
    set_pev(Id, pev_viewmodel2, lockgun_model[2])
    set_pev(Id, pev_weaponmodel2, lockgun_model[1])
    
    set_zoomid(Id, 0)
    gInZoom[Id] = false
    
    if(Get_BitVar(g_iMode, Id)) Set_WeaponAnim(Id, 7)
    else Set_WeaponAnim(Id, 6)
}

public fw_Item_AddToPlayer_Post(Ent, id)
{
    if(!pev_valid(Ent))
        return HAM_IGNORED
        
    if(pev(Ent, pev_impulse) == 3152015)
    {
        Set_BitVar(g_Had_Thanatos5, id)
        set_pev(Ent, pev_impulse, 0)
        
        //spriteshud(id)    
    }

    return HAM_HANDLED    
}
public spriteshud(id)
{
    message_begin(MSG_ONE_UNRELIABLE, g_MsgWeaponList, .player = id)
    write_string("weapon_lockongun")
    write_byte(3) // PrimaryAmmoID
    write_byte(200) // PrimaryAmmoMaxAmount
    write_byte(-1) // SecondaryAmmoID
    write_byte(-1) // SecondaryAmmoMaxAmount
    write_byte(0) // SlotID (0...N)
    write_byte(4) // NumberInSlot (1...N)
    write_byte(CSW_LOCKGUN) // WeaponID
    write_byte(0) // Flags
    message_end()
}
public fw_Weapon_WeaponIdle_Post( iEnt )
{
    if(pev_valid(iEnt) != 2)
        return
    static Id; Id = get_pdata_cbase(iEnt, 41, 4)
    if(get_pdata_cbase(Id, 373) != iEnt)
        return
    if(!Get_BitVar(g_Had_Thanatos5, Id))
        return
        
    if(get_pdata_float(iEnt, 48, 4) <= 0.25)
    {
        if(Get_BitVar(g_iMode, Id)) Set_WeaponAnim(Id, 1)
        else Set_WeaponAnim(Id, 0)
        
        set_pdata_float(iEnt, 48, 20.0, 4)
    }    
}

public fw_TraceAttack_World(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
{
    if(!is_user_connected(Attacker))
        return HAM_IGNORED    
    if(get_user_weapon(Attacker) != CSW_LOCKGUN || !Get_BitVar(g_Had_Thanatos5, Attacker))
        return HAM_IGNORED
        
    static Float:flEnd[3], Float:vecPlane[3]
        
    get_tr2(Ptr, TR_vecEndPos, flEnd)
    get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)        
            
    Make_BulletHole(Attacker, flEnd, Damage)
    Make_BulletSmoke(Attacker, Ptr)

    SetHamParamFloat(3, float(DAMAGE_A))
    
    return HAM_IGNORED
}

public fw_TraceAttack_Player(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
{
    if(!is_user_connected(Attacker))
        return HAM_IGNORED    
    if(get_user_weapon(Attacker) != CSW_LOCKGUN || !Get_BitVar(g_Had_Thanatos5, Attacker))
        return HAM_IGNORED
        
    new tr_info = pev(Attacker, pev_iuser4)
    switch(tr_info)
    {
        case HIT_USER_CHEST:
        {
            set_tr2(Ptr, TR_iHitgroup, HIT_CHEST)
        }
        case HIT_USER_STOMACH:
        {
            set_tr2(Ptr, TR_iHitgroup, HIT_STOMACH)
        }
        case HIT_USER_HEAD:
        {
            set_tr2(Ptr, TR_iHitgroup, HIT_HEAD)
        }
    }
    
    if(gInZoom[Attacker])
    {
        gTracked[Attacker] = true
        maxtracked[Attacker] ++
        showinfo_hitgroup(Victim,Attacker)
        emit_sound(Attacker, CHAN_VOICE, lockgun_sound[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    }
    
    if(gTracked[Attacker]) TrackedVictim[Attacker] = Victim
        
    SetHamParamFloat(3, float(DAMAGE_A))
    
    return HAM_IGNORED
}
public fw_TakeDamage(v,i,a,Float:dmg,dmgbits)
{
    if(!Get_BitVar(g_Had_Thanatos5, a))
        return HAM_IGNORED
    if(!is_user_alive(v) || !is_user_alive(a))
        return HAM_IGNORED
    if(zp_get_user_team(v) == zp_get_user_team(a))
        return HAM_IGNORED
    
    if(gInZoom[a])showinfo_hitgroup(v,a)
    if(gTracked[a]) TrackedVictim[a] = v
    
    return HAM_IGNORED
}
public showinfo_hitgroup(info_player,id)
{
    new info_hitgroup = get_pdata_int(info_player, 75)
    
    switch(info_hitgroup)
    {
        case HIT_CHEST:
        {
            client_print(id, print_chat, "CHEST")
            set_pev(id, pev_iuser4, HIT_USER_CHEST)
            set_pdata_int(id, 75, HIT_CHEST, 5)
        }
        case HIT_HEAD:
        {
            client_print(id, print_chat, "HEAD")
            set_pev(id, pev_iuser4, HIT_USER_HEAD)
            set_pdata_int(id, 75, HIT_HEAD, 5)
        }
        case HIT_STOMACH:
        {
            client_print(id, print_chat, "STOMACH")
            set_pev(id, pev_iuser4, HIT_USER_STOMACH)
            set_pdata_int(id, 75, HIT_STOMACH, 5)
        }
    }
}
public fw_Item_PostFrame(ent)
{
    static id; id = pev(ent, pev_owner)
    if(!is_user_alive(id))
        return HAM_IGNORED
    if(!Get_BitVar(g_Had_Thanatos5, id))
        return HAM_IGNORED    
    
    static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
    static bpammo; bpammo = cs_get_user_bpammo(id, CSW_LOCKGUN)
    
    static iClip; iClip = get_pdata_int(ent, 51, 4)
    static fInReload; fInReload = get_pdata_int(ent, 54, 4)
    
    if(fInReload && flNextAttack <= 0.0)
    {
        static temp1
        temp1 = min(CLIP - iClip, bpammo)

        set_pdata_int(ent, 51, iClip + temp1, 4)
        cs_set_user_bpammo(id, CSW_LOCKGUN, bpammo - temp1)        
        
        set_pdata_int(ent, 54, 0, 4)
        
        fInReload = 0
    }
    
    static Float:flLastEventCheck; pev(ent, pev_fuser2, flLastEventCheck)    
    
    if(!ready[id] && iAmmo[id] < 10 && flLastEventCheck < get_gametime())
    {
        iAmmo[id] ++
        recover[id] = false
        set_pev(ent, pev_fuser2, get_gametime() + CHARGE_TIME)
    }
    if(iAmmo[id] >= 10 && flLastEventCheck < get_gametime())
    {
        ready[id] = true
        
        if(!recover[id])
        {
            Set_BitVar(g_iMode, id)
            gTracked[id] = false
            recover[id] = true
            Set_WeaponAnim(id, 8)
            Set_Player_NextAttack(id, 0.5)
            Set_WeaponIdleTime(id, CSW_LOCKGUN, 1.0)
        }
        else
        {
            set_pev(ent, pev_fuser2, 0.0)
        }
    }
        
    Notice(id)
    
    return HAM_IGNORED
}
public Notice(id) client_print(id, print_center, "%d", iAmmo[id])
public fw_CmdStart(id, uc_handle, seed)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED
    if(get_user_weapon(id) != CSW_LOCKGUN || !Get_BitVar(g_Had_Thanatos5, id))
        return FMRES_IGNORED
        
    static PressedButton
    PressedButton = get_uc(uc_handle, UC_Buttons)
    if(get_pdata_float(id, 83, 5) > 0.0)
        return FMRES_IGNORED
    if(!Get_BitVar(g_iMode, id))
        return FMRES_IGNORED
    
    if(PressedButton & IN_ATTACK2)
    {
        if(!gInZoom[id])
        {
            set_task(0.1, "zoom_start", id+TASK_ZOOM)
        } else {
            set_task(0.1, "zoom_end", id+TASK_ZOOM)
        }
    }
    
    PressedButton &= ~IN_ATTACK2
    set_uc(uc_handle, UC_Buttons, PressedButton)
    
    return FMRES_HANDLED
}
public zoom_start(id)
{
    id -= TASK_ZOOM
    Set_WeaponAnim(id, 9)
    Set_BitVar(g_iMode, id)
    Set_Player_NextAttack(id, 0.5)
    Set_WeaponIdleTime(id, CSW_LOCKGUN, 0.5)
    set_task(0.6, "zoom_idle", id+TASK_ZOOM)
}
public zoom_idle(id)
{
    id -= TASK_ZOOM
    set_zoomid(id, 1)
    gInZoom[id] = true
}
public zoom_end(id)
{
    id -= TASK_ZOOM
    if(gTracked[id]){
        set_zoomid(id, 0)
        gInZoom[id] = false
        set_task(0.5, "sound_rocket", id)
        set_task(1.2, "make_rocket", id)
        UnSet_BitVar(g_iMode, id)
        Set_WeaponAnim(id, 12)
        Set_Player_NextAttack(id, 1.0)
        Set_WeaponIdleTime(id, CSW_LOCKGUN, 2.5)
        remove_task(id+TASK_ZOOM)
    }
    else
    {
        set_zoomid(id, 0)
        gInZoom[id] = false
        Set_WeaponAnim(id, 11)
        Set_Player_NextAttack(id, 1.0)
        Set_WeaponIdleTime(id, CSW_LOCKGUN, 1.0)
        remove_task(id+TASK_ZOOM)
    }
}
public make_rocket(id)
{
    new Float:StartOrigin[10][3], Float:Angles[3]
    pev(id, pev_angles, Angles)
    
    Get_Position(id,120.0,15.0, 20.0, StartOrigin[0])
    Get_Position(id,120.0,15.0, 30.0, StartOrigin[1])
    Get_Position(id,120.0,15.0, 40.0, StartOrigin[2])
    Get_Position(id,120.0,15.0, 50.0, StartOrigin[3])
    Get_Position(id,120.0,15.0, 60.0, StartOrigin[4])
    
    Get_Position(id,120.0,-15.0, 20.0, StartOrigin[5])
    Get_Position(id,120.0,-15.0, 30.0, StartOrigin[6])
    Get_Position(id,120.0,-15.0, 40.0, StartOrigin[7])
    Get_Position(id,120.0,-15.0, 50.0, StartOrigin[8])
    Get_Position(id,120.0,-15.0, 60.0, StartOrigin[9])
    
    for(new i = 0; i < MAXTR; i++) lockongun_rocket(id, StartOrigin[i], Angles)
}
public sound_rocket(id) emit_sound(id, CHAN_WEAPON, lockgun_sound[5], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
public fw_Weapon_Reload(ent)
{
    static id; id = pev(ent, pev_owner)
    if(!is_user_alive(id))
        return HAM_IGNORED
    if(!Get_BitVar(g_Had_Thanatos5, id))
        return HAM_IGNORED    

    g_Thanatos5_Clip[id] = -1
        
    static BPAmmo; BPAmmo = cs_get_user_bpammo(id, CSW_LOCKGUN)
    static iClip; iClip = get_pdata_int(ent, 51, 4)
        
    if(BPAmmo <= 0)
        return HAM_SUPERCEDE
    if(iClip >= CLIP)
        return HAM_SUPERCEDE        
            
    g_Thanatos5_Clip[id] = iClip    
    
    return HAM_HANDLED
}

public fw_Weapon_Reload_Post(ent)
{
    static id; id = pev(ent, pev_owner)
    if(!is_user_alive(id))
        return HAM_IGNORED
    if(!Get_BitVar(g_Had_Thanatos5, id))
        return HAM_IGNORED    
        
    if((get_pdata_int(ent, 54, 4) == 1))
    { // Reload
        if(g_Thanatos5_Clip[id] == -1)
            return HAM_IGNORED
        
        set_pdata_int(ent, 51, g_Thanatos5_Clip[id], 4)
        set_pdata_float(id, 83, RELOAD_TIME, 5)
        
        set_zoomid(id, 0)
        
        if(gInZoom[id])
        {
            gInZoom[id] = false
            set_task(0.1, "zoom_end", id+TASK_ZOOM)
        }
        else
        {
            if(Get_BitVar(g_iMode, id)) Set_WeaponAnim(id, 5)
            else Set_WeaponAnim(id, 4)
        }
    }
    
    return HAM_HANDLED
}


//stock
stock set_zoomid(id, izoom)
{
    switch(izoom)
    {
        case 0:
        {
            user_fade(id, 0)
            set_fov(id, 90)
            set_pev(id, pev_viewmodel2, lockgun_model[2])
        }
        case 1:
        {
            set_fov(id, 80)
            user_fade(id, 1)
            set_pev(id, pev_viewmodel2, lockgun_model[3])
        }
    }
}
stock Make_Muzzle(iStock)
{
    new Ent = Stock_CreateEntityBase(iStock, "env_sprite", MOVETYPE_FOLLOW, lockgun_sprites[4], mf_cls, SOLID_NOT, 0.01)
    set_pev(Ent, pev_body, 1)
    set_pev(Ent, pev_owner, iStock)
    set_pev(Ent, pev_rendermode, kRenderTransAdd)
    set_pev(Ent, pev_renderamt, 255.0)
    set_pev(Ent, pev_aiment, iStock)
    set_pev(Ent, pev_scale, 0.065)
    set_pev(Ent, pev_frame, 0.0)
    dllfunc(DLLFunc_Spawn, Ent)
}
public fw_MF_Think(ent)
{
    if(!pev_valid(ent))
        return
    
    static Classname[32]
    pev(ent, pev_classname, Classname, sizeof(Classname))
    static Owner; Owner = pev(ent, pev_owner)
    
    if(!is_user_alive(Owner) || get_user_weapon(Owner) != CSW_LOCKGUN)
    {
        set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
        return
    }
    if(equal(Classname, mf_cls))
    {
        static Float:fFrame, Float:fFrameMax
        pev(ent, pev_frame, fFrame)
        
        fFrameMax = 8.0
        
        fFrame += 0.5
        set_pev(ent, pev_frame, fFrame)
        
        if(fFrame >= fFrameMax)
        {
            set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
            fFrame = 0.0;
        }
        set_pev(ent, pev_nextthink, get_gametime() + 0.01)
    }
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float: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 Get_Position(id,Float:forw, Float:right, Float:up, Float:vStart[])
{
    static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    
    pev(id, pev_origin, vOrigin)
    pev(id, pev_view_ofs,vUp) //for player
    xs_vec_add(vOrigin,vUp,vOrigin)
    pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
    
    angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
    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 can_damage(id1, id2)
{
    if(id1 <= 0 || id1 >= 33 || id2 <= 0 || id2 >= 33)
        return 1
        
    // Check team
    return(get_pdata_int(id1, 114) != get_pdata_int(id2, 114))
}
stock lockongun_rocket(id, Float:Origin[3], Float:Angles[3])
{
    new ent = create_entity("info_target")
    set_pev(ent, pev_classname, "lockon_rocket")
    engfunc(EngFunc_SetModel, ent, lockgun_model[0])
    set_pev(ent, pev_origin, Origin)
    set_pev(ent, pev_angles, Angles)
    set_pev(ent, pev_solid, SOLID_TRIGGER)
    set_pev(ent, pev_movetype, MOVETYPE_FLY)
    set_pev(ent, pev_owner, id)
    entity_anim(ent, 0)
    set_pev(ent, pev_nextthink, get_gametime() + 0.01)
    
    iAmmo[id] --
    ready[id] = false
    Notice(id)
    
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(TE_BEAMFOLLOW)
    write_short(ent)
    write_short(spr_trail)
    write_byte(4)
    write_byte(3)
    write_byte(255)
    write_byte(255)
    write_byte(225)
    write_byte(125)
    message_end()
}
public rocket_think(ent)
{
    if(!pev_valid(ent)) return
    if(pev(ent, pev_flags) == FL_KILLME) return
    
    static id;
    id = pev(ent, pev_owner)
    new Float:Origin[3], Float:Origin2[3], Float:velo[3]
    if(!gTracked[id])
    {
        pev(ent, pev_origin, Origin)
        Get_Position(id, 4096.0, 0.0, 0.0, Origin2)
        get_speed_vector(Origin,Origin2,2500.0, velo)
        set_pev(ent, pev_velocity, velo)
    }
    else
    {
        static Float:Ent_origin[3], Float:fSpeed //tracked
        pev(ent, pev_origin, Ent_origin)
        pev(TrackedVictim[id], pev_origin, TrackedPos)
        pev(TrackedVictim[id], pev_origin, TrackedPos2)
        if(!is_user_alive(TrackedVictim[id])) gTracked[id] = false
        if(cs_get_user_team(pev(ent, pev_owner)) == cs_get_user_team(TrackedVictim[id])) gTracked[id] = false
        fSpeed = floatmin(2500.0, vector_distance(Ent_origin, TrackedPos) * 20.0)
        Stock_Hook_Ent(ent, TrackedPos, fSpeed, 1)
        ent_turntotarget(ent, Ent_origin, TrackedPos)
        
        /*new enemy = FindClosesEnemy(ent) //find closest
        if(pev_valid(enemy))
        {
            new Float:Vic_Origin[3], Float:dist
            pev(enemy, pev_origin, Vic_Origin)
            dist = get_distance_f(Ent_origin, Vic_Origin)
            if(is_user_alive(enemy))
            {
                if(dist <= 150.0)
                {
                    ent_explode(ent)
                }
                else
                {
                    static Float:fSpeed
                    fSpeed = floatmin(2500.0, vector_distance(Ent_origin, Vic_Origin) * 20.0)
                    Stock_Hook_Ent(ent, Vic_Origin, fSpeed, 1)
                    ent_turntotarget(ent, Ent_origin, Vic_Origin)
                }
            }
        }*/
    }
    
    set_pev(ent, pev_nextthink, get_gametime() + 0.1)
}
public tocket_touch(ent, touched)
{
    if(!pev_valid(ent)) return
    if(pev(ent, pev_flags) == FL_KILLME) return
    
    static Float:Origin[3]; pev(ent, pev_origin, Origin)
    ent_explode(ent,Origin)
    set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
}
stock ent_explode(ent, Float:vecOri[3])
{
    pev(ent, pev_origin, vecOri)
    
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOri, 0)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord, vecOri[0])
    engfunc(EngFunc_WriteCoord, vecOri[1])
    engfunc(EngFunc_WriteCoord, vecOri[2])
    write_short(g_Exp_SprID)
    write_byte(7)//size
    write_byte(35)//framerate
    write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES)
    message_end()
    
    emit_sound(0, CHAN_VOICE, lockgun_sound[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    
    static Float:fDmg, Float:fRng, Float:fKnc
    fDmg = float(DAMAGE_B)
    fRng = 120.0
    fKnc = 15.0
    
    new iOwner = pev(ent, pev_owner)
    
    new pEntity = -1
    while((pEntity = engfunc(EngFunc_FindEntityInSphere, pEntity, vecOri, fRng)) != 0)
    {
        if(pev(pEntity, pev_takedamage) == DAMAGE_NO) continue
        if(!zp_get_user_zombie(pEntity)) continue;
        if(is_user_connected(pEntity) && pEntity != iOwner)
            if(!can_damage(pEntity, iOwner)) continue
        if(pEntity == iOwner) continue
        
        if(pev_valid(pEntity))
        {
            ExecuteHam(Ham_TakeDamage, pEntity, iOwner, iOwner, fDmg, DMG_BULLET)
            Stock_Fake_KnockBack(iOwner, pEntity, fKnc)
        }
    }
    set_pev(iOwner, pev_iuser4, 0)
    set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
}
stock entity_anim(ent, anim)
{
    if(pev_valid(ent))
    {
        set_pev(ent, pev_sequence, anim)
        set_pev(ent, pev_animtime, get_gametime())
        set_pev(ent, pev_frame, 0.0)
        set_pev(ent, pev_framerate, 1.0)
    }
}
public FindClosesEnemy(entid)
{
    new Float:Dist
    new id = pev(entid, pev_owner)
    new Float:maxdistance=4000.0
    new indexid=0    
    for(new i=1;i<=g_MaxPlayers;i++){
        if(is_user_alive(i) && pev_valid(i) && can_see_fm(entid, i) && cs_get_user_team(id) != cs_get_user_team(i))
        {
            Dist = entity_range(entid, i)
            if(Dist <= maxdistance)
            {
                maxdistance=Dist
                indexid=i
                
                return indexid
            }
        }    
    }    
    return 0
}
public bool:can_see_fm(entindex1, entindex2)
{
    if (!entindex1 || !entindex2)
        return false

    if (pev_valid(entindex1) && pev_valid(entindex1))
    {
        new flags = pev(entindex1, pev_flags)
        if (flags & EF_NODRAW || flags & FL_NOTARGET)
        {
            return false
        }

        new Float:lookerOrig[3]
        new Float:targetBaseOrig[3]
        new Float:targetOrig[3]
        new Float:temp[3]

        pev(entindex1, pev_origin, lookerOrig)
        pev(entindex1, pev_view_ofs, temp)
        lookerOrig[0] += temp[0]
        lookerOrig[1] += temp[1]
        lookerOrig[2] += temp[2]

        pev(entindex2, pev_origin, targetBaseOrig)
        pev(entindex2, pev_view_ofs, temp)
        targetOrig[0] = targetBaseOrig [0] + temp[0]
        targetOrig[1] = targetBaseOrig [1] + temp[1]
        targetOrig[2] = targetBaseOrig [2] + temp[2]

        engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the had of seen player
        if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
        {
            return false
        }
        else
        {
            new Float:flFraction
            get_tr2(0, TraceResult:TR_flFraction, flFraction)
            if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
            {
                return true
            }
            else
            {
                targetOrig[0] = targetBaseOrig [0]
                targetOrig[1] = targetBaseOrig [1]
                targetOrig[2] = targetBaseOrig [2]
                engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the body of seen player
                get_tr2(0, TraceResult:TR_flFraction, flFraction)
                if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
                {
                    return true
                }
                else
                {
                    targetOrig[0] = targetBaseOrig [0]
                    targetOrig[1] = targetBaseOrig [1]
                    targetOrig[2] = targetBaseOrig [2] - 17.0
                    engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the legs of seen player
                    get_tr2(0, TraceResult:TR_flFraction, flFraction)
                    if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
                    {
                        return true
                    }
                }
            }
        }
    }
    return false
}    
public ent_turntotarget(ent, Float:Ent_Origin[3], Float:Vic_Origin[3])
{
    new Float:newAngle[3]
    entity_get_vector(ent, EV_VEC_angles, newAngle)
    new Float:x = Vic_Origin[0] - Ent_Origin[0]
    new Float:z = Vic_Origin[1] - Ent_Origin[1]

    new Float:radians = floatatan(z/x, radian)
    newAngle[1] = radians * (180 / 3.14)
    if (Vic_Origin[0] < Ent_Origin[0])
        newAngle[1] -= 180.0
       
    entity_set_vector(ent, EV_VEC_angles, newAngle)
}
stock set_fov(id, num = 90)
{
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SetFOV"), {0,0,0}, id)
    write_byte(num)
    message_end()
}
stock Stock_Hook_Ent(ent, Float:TargetOrigin[3], Float:Speed, mode=0)
{
    static Float:fl_Velocity[3],Float:EntOrigin[3],Float:distance_f,Float:fl_Time
    pev(ent, pev_origin, EntOrigin)
    
    if(!mode)
    {
        distance_f = get_distance_f(EntOrigin, TargetOrigin)
        fl_Time = distance_f / Speed
            
        pev(ent, pev_velocity, fl_Velocity)
            
        fl_Velocity[0] = (TargetOrigin[0] - EntOrigin[0]) / fl_Time
        fl_Velocity[1] = (TargetOrigin[1] - EntOrigin[1]) / fl_Time
        fl_Velocity[2] = (TargetOrigin[2] - EntOrigin[2]) / fl_Time

        if(vector_length(fl_Velocity) > 1.0) set_pev(ent, pev_velocity, fl_Velocity)
        else set_pev(ent, pev_velocity, Float:{0.01, 0.01, 0.01})
    } else {
        static Float:fl_EntVelocity[3], Float:fl_Acc[3]
        Stock_Directed_Vector(TargetOrigin, EntOrigin, fl_Velocity)
        xs_vec_mul_scalar(fl_Velocity, Speed, fl_Velocity)
        
        for(new i =0; i<3; i++)
        {
            if(fl_Velocity[i] > fl_EntVelocity[i])
            {
                fl_Acc[i] = fl_Velocity[i]-fl_EntVelocity[i]
                fl_Acc[i] = floatmin(70.0, fl_Acc[i])
                fl_EntVelocity[i] += fl_Acc[i]
            }
            else if(fl_Velocity[i] < fl_EntVelocity[i])
            {
                fl_Acc[i] = fl_EntVelocity[i]-fl_Velocity[i]
                fl_Acc[i] = floatmin(70.0, fl_Acc[i])
                fl_EntVelocity[i] -= fl_Acc[i]
            }
        }
        set_pev(ent, pev_velocity, fl_EntVelocity)
    }
}
stock Stock_Directed_Vector(Float:start[3],Float:end[3],Float:reOri[3])
{    
    new Float:v3[3]
    v3[0]=start[0]-end[0]
    v3[1]=start[1]-end[1]
    v3[2]=start[2]-end[2]
    new Float:vl = vector_length(v3)
    reOri[0] = v3[0] / vl
    reOri[1] = v3[1] / vl
    reOri[2] = v3[2] / vl
}    
    
// Drop primary/secondary weapons
stock drop_weapons(id, dropwhat)
{
    // Get user weapons
    static weapons[32], num, i, weaponid
    num = 0 // reset passed weapons count (bugfix)
    get_user_weapons(id, weapons, num)
    
    // Loop through them and drop primaries or secondaries
    for (i = 0; i < num; i++)
    {
        // Prevent re-indexing the array
        weaponid = weapons[i]
        
        if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
        {
            // Get weapon entity
            static wname[32]; get_weaponname(weaponid, wname, charsmax(wname))
            engclient_cmd(id, "drop", wname)
        }
    }
}
stock Stock_CreateEntityBase(id, classtype[], mvtyp, mdl[], class[], solid, Float:fNext)
{
    new pEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classtype))
    set_pev(pEntity, pev_movetype, mvtyp);
    set_pev(pEntity, pev_owner, id);
    engfunc(EngFunc_SetModel, pEntity, mdl);
    set_pev(pEntity, pev_classname, class);
    set_pev(pEntity, pev_solid, solid);
    set_pev(pEntity, pev_nextthink, get_gametime() + fNext)
    return pEntity
}
stock Set_WeaponAnim(id, anim)
{
    set_pev(id, pev_weaponanim, anim)
    
    message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
    write_byte(anim)
    write_byte(pev(id, pev_body))
    message_end()
}

stock Eject_Shell(id, Shell_ModelIndex, Float:Time) // By Dias
{
    static Ent; Ent = get_pdata_cbase(id, 373, 5)
    if(!pev_valid(Ent))
        return

        set_pdata_int(Ent, 57, Shell_ModelIndex, 4)
        set_pdata_float(id, 111, get_gametime() + Time)
}

stock Make_BulletHole(id, Float:Origin[3], Float:Damage)
{
    // Find target
    static Decal; Decal = random_num(41, 45)
    static LoopTime;
    
    if(Damage > 100.0) LoopTime = 2
    else LoopTime = 1
    
    for(new i = 0; i < LoopTime; i++)
    {
        // Put decal on "world" (a wall)
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_WORLDDECAL)
        engfunc(EngFunc_WriteCoord, Origin[0])
        engfunc(EngFunc_WriteCoord, Origin[1])
        engfunc(EngFunc_WriteCoord, Origin[2])
        write_byte(Decal)
        message_end()
        
        // Show sparcles
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_GUNSHOTDECAL)
        engfunc(EngFunc_WriteCoord, Origin[0])
        engfunc(EngFunc_WriteCoord, Origin[1])
        engfunc(EngFunc_WriteCoord, Origin[2])
        write_short(id)
        write_byte(Decal)
        message_end()
    }
}

stock Make_BulletSmoke(id, TrResult)
{
    static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
    
    get_weapon_attachment(id, vecSrc)
    global_get(glb_v_forward, vecEnd)
   
    xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
    xs_vec_add(vecSrc, vecEnd, vecEnd)

    get_tr2(TrResult, TR_vecEndPos, vecSrc)
    get_tr2(TrResult, TR_vecPlaneNormal, vecEnd)
   
    xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
    xs_vec_add(vecSrc, vecEnd, vecEnd)
   
    TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
    TE_FLAG |= TE_EXPLFLAG_NOSOUND
    TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
    
    engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord, vecEnd[0])
    engfunc(EngFunc_WriteCoord, vecEnd[1])
    engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
    write_short(g_SmokePuff_SprId)
    write_byte(2)
    write_byte(50)
    write_byte(TE_FLAG)
    message_end()
}

stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
{
    static Float:vfEnd[3], viEnd[3]
    get_user_origin(id, viEnd, 3) 
    IVecFVec(viEnd, vfEnd)
    
    static Float:fOrigin[3], Float:fAngle[3]
    
    pev(id, pev_origin, fOrigin)
    pev(id, pev_view_ofs, fAngle)
    
    xs_vec_add(fOrigin, fAngle, fOrigin)
    
    static Float:fAttack[3]
    
    xs_vec_sub(vfEnd, fOrigin, fAttack)
    xs_vec_sub(vfEnd, fOrigin, fAttack)
    
    static Float:fRate
    
    fRate = fDis / vector_length(fAttack)
    xs_vec_mul_scalar(fAttack, fRate, fAttack)
    
    xs_vec_add(fOrigin, fAttack, output)
}
stock user_fade(id, on)
{    
    if(!Get_BitVar(g_Had_Thanatos5, id)) return
    
    if(on == 1)
    {
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, id)
        write_short((1<<12))//duration
        write_short((1<<12) * 1) //Hold
        write_short(0x0004) //Type
        write_byte(0) //R
        write_byte(155) //G
        write_byte(255) //B
        write_byte(30) //B
        message_end()
    } else {
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, id)
        write_short((1<<12))//duration
        write_short((1<<12) * 1) //Hold
        write_short(0x0004) //Type
        write_byte(200) //R
        write_byte(200) //G
        write_byte(200) //B
        write_byte(0) //B
        message_end()
    }
}
stock Stock_Fake_KnockBack(id, iVic, Float:iKb)
{
    if(iVic > 32) return
    
    new Float:vAttacker[3], Float:vVictim[3], Float:vVelocity[3], flags
    pev(id, pev_origin, vAttacker)
    pev(iVic, pev_origin, vVictim)
    vAttacker[2] = vVictim[2] = 0.0
    flags = pev(id, pev_flags)
    
    xs_vec_sub(vVictim, vAttacker, vVictim)
    new Float:fDistance
    fDistance = xs_vec_len(vVictim)
    xs_vec_mul_scalar(vVictim, 1 / fDistance, vVictim)
    
    pev(iVic, pev_velocity, vVelocity)
    xs_vec_mul_scalar(vVictim, iKb, vVictim)
    xs_vec_mul_scalar(vVictim, 50.0, vVictim)
    vVictim[2] = xs_vec_len(vVictim) * 0.15
    
    if(flags &~ FL_ONGROUND)
    {
        xs_vec_mul_scalar(vVictim, 1.2, vVictim)
        vVictim[2] *= 0.4
    }
    if(xs_vec_len(vVictim) > xs_vec_len(vVelocity)) set_pev(iVic, pev_velocity, vVictim)
}
stock Set_Player_NextAttack(id, Float:NextTime) set_pdata_float(id, 83, NextTime, 5)
stock Set_WeaponIdleTime(id, WeaponId ,Float:TimeIdle)
{
    static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
    if(!pev_valid(entwpn))
        return
        
    set_pdata_float(entwpn, 46, TimeIdle, 4)
    set_pdata_float(entwpn, 47, TimeIdle, 4)
    set_pdata_float(entwpn, 48, TimeIdle + 0.5, 4)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1057\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1057\\ f0\\ fs16 \n\\ par }
*/

Steam
#3
Akşam eve gidince deniyecegim teşekkürler ilgilendiğiniz için
#4
İstek konusu, @"XaRex" adlı kullanıcı tarafından 1 gün içinde çözülmüştür.
İsteği çözdüğü için XaRex Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
XaRex Adlı kullanıcı sizin dışınızda toplam 11 kişiye yardım etmiştir.

Herhangi bir konuda hata olduğunu düşünüyorsanız destek sistemi üzerinden iletişim kurabilirsiniz.

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da