[AMX] Tổng hợp Code, Plug do Mem chế hoặc giới thiệu

Thảo luận trong 'Counter Strike' bắt đầu bởi Orpheus, 22/1/11.

  1. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    =)) đang nói anim cho nhân vật... =))
     
  2. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Cái đó cũng ko xài msg:-j
     
  3. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @buiducduy:
    - sontung0 đã share con deimos có play player anim. mở ra mà xem, phải set idle linh tinh gì gì rồi mới set seq :))
     
  4. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ...có đâu? trong đó chỉ có play anim của hand à =="
     
  5. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Bác nào rảnh check dùm em code này với
    Mặc dù tham khảo code của bác teo rồi mà anim vẫn bị lỗi... (thỉnh thoảng)

    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <engine>
    #include <hamsandwich>
    #include <nst_wpn>
    #include <xs>

    #define PLUGIN    "Knife"
    #define AUTHOR    "Bui duc duy"
    #define VERSION    "1.0"

    enum
    {
        
    anim_idle 0,
        
    anim_slash_1,
        
    anim_slash_2,
        
    anim_draw,
        
    anim_stab,
        
    anim_stab_miss,
        
    anim_slash1_mid,
        
    anim_slash2_mid
    }

    public 
    plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    RegisterHam(Ham_Weapon_SendWeaponAnim,"weapon_knife","Fw_Weapon_SendWeaponAnim")
        
    RegisterHam(Ham_Weapon_SecondaryAttack,"weapon_knife","Fw_SecondaryAttack_Post",1)
        
    RegisterHam(Ham_Weapon_PrimaryAttack,"weapon_knife","Fw_PrimAttack_Post",1)
        
        
        
    register_forward(FM_CmdStart,"Fw_CmdStart")
        
    register_forward(FM_TraceLine,"Fw_TraceLine")
        
    register_forward(FM_TraceHull,"Fw_TraceHull")
    }

    public 
    Fw_SecondaryAttack_Post(ent)
    {
        static 
    id 
        id 
    pev(ent,pev_owner)
        if(!
    pev_valid(ent) || !is_user_connected(id))
            return 
    HAM_IGNORED
            
        set_pdata_float
    (ent,47,nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+0.5,4)
        
        return 
    HAM_IGNORED
    }

    public 
    Fw_PrimAttack_Post(ent)
    {
        static 
    id 
        id 
    pev(ent,pev_owner)
        if(!
    pev_valid(ent) || !is_user_connected(id))
            return 
    HAM_IGNORED
        
        set_pdata_float
    (ent,460.3 ,4)
        
        return 
    HAM_IGNORED
    }

    // set distance
    public Fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle)
    {
        if (!
    is_user_connected(id))
            return 
    FMRES_IGNORED;
        
        if (!
    is_user_alive(id))
            return 
    FMRES_IGNORED;
        
        if (
    get_user_weapon(id) != CSW_KNIFE)
            return 
    FMRES_IGNORED;
        
        
        
    pev(idpev_v_anglevector_end)
        
    angle_vector(vector_endANGLEVECTOR_FORWARDvector_end)
        
        
    xs_vec_mul_scalar(vector_endnst_wpn_get_float3(idNST_WPN_DATA_DISTANCE), vector_end)
        
        
    xs_vec_add(vector_startvector_endvector_end)
        
    engfunc(EngFunc_TraceLinevector_startvector_endignored_monsteridhandle)
        
        return 
    FMRES_SUPERCEDE;
    }

    public 
    Fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monsterhullidhandle)
    {
        if (!
    is_user_connected(id))
            return 
    FMRES_IGNORED;
        
        if (!
    is_user_alive(id))
            return 
    FMRES_IGNORED;
        
        if (
    get_user_weapon(id) != CSW_KNIFE)
            return 
    FMRES_IGNORED;
        
        
        
    pev(idpev_v_anglevector_end)
        
    angle_vector(vector_endANGLEVECTOR_FORWARDvector_end)
        
        
    xs_vec_mul_scalar(vector_endnst_wpn_get_float3(idNST_WPN_DATA_DISTANCE), vector_end)
        
        
    xs_vec_add(vector_startvector_endvector_end)
        
    engfunc(EngFunc_TraceHullvector_startvector_endignored_monsterhullidhandle)
        
        return 
    FMRES_SUPERCEDE;
    }

    //

    /* Knife Hook delay */
    public Fw_CmdStart(id,handle,seed)
    {
        static 
    iButton,iEnt
        iButton 
    get_uc(handle,UC_Buttons)
        
    iEnt find_ent_by_owner(-1"weapon_knife"id)
        
        
        if(
    get_user_weapon(id) ==CSW_KNIFE)
        {
            if (
    iButton&IN_ATTACK2)
            {
                
    set_uc(handle,UC_Buttons,iButton&~IN_ATTACK2)
                
                
    set_weapon_anim(idanim_stab)
                
                if (
    task_exists(id)) remove_task(id)
                
    set_task(nst_wpn_get_float3(idNST_WPN_DATA_DELAY),"task_knife_attack",id)
                
                
    set_pdata_float(iEnt47nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+0.5,4)
            }
        }
    }

    public 
    task_knife_attack(id)
    {
        new 
    ent find_ent_by_owner(-1,"weapon_knife",id)
        
        if(!
    is_user_alive(id) || get_user_weapon(id) != CSW_KNIFE) return
        
    ExecuteHamB(Ham_Weapon_SecondaryAttack,ent)
    }



    public 
    Fw_Weapon_SendWeaponAnim(ent,anim)
    {
        static 
    id 
        id 
    pev(ent,pev_owner)
        if(!
    pev_valid(ent) || !is_user_connected(id)) return HAM_IGNORED
            
        
    if (get_pdata_float(ent,474)>0.0 && get_user_weapon(id)==CSW_KNIFE) return HAM_SUPERCEDE
        
        
    return HAM_IGNORED
    }


    stock set_weapon_anim(idanim)
    {
        
    set_pev(idpev_weaponanimanim)
        
        
    message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
        
    write_byte(anim)
        
    write_byte(pev(id,pev_body))
        
    message_end()
    }


     
  6. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    - CmdStart nó chạy liên tục khi không hoặc có giữ nút. Chú định cho nó chém liên hoàn cước à ?

    PHP:
    /* Knife Hook delay */
    public Fw_CmdStart(id,handle,seed)
    {
        static 
    iButton,iEnt
        iButton 
    get_uc(handle,UC_Buttons)
        
    iEnt find_ent_by_owner(-1"weapon_knife"id)
        
        
        if(
    get_user_weapon(id) ==CSW_KNIFE)
        {
            if (
    iButton&IN_ATTACK2)
            {
                
    set_uc(handle,UC_Buttons,iButton&~IN_ATTACK2)
                
                
    set_weapon_anim(idanim_stab)
                
                if (
    task_exists(id)) remove_task(id)
                
    set_task(nst_wpn_get_float3(idNST_WPN_DATA_DELAY),"task_knife_attack",id)
                
                
    set_pdata_float(iEnt47nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+0.5,4)
            }
        }
    }
     
  7. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Dòng này để làm cảnh à bạn trẻ=))
     
  8. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    Duy:không nên dùng secondaryattack mà nên dùmg primaryattack.như vậy anim sẽ không bị loạn.
    @heo:chỉ tui cái anim p model cho dual weapon model đi.
     
  9. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    P/S: EM nghĩ code này đã hoàn hảo nhất rồi mà thỉnh thoảng nó vẫn lỗi :(( help me...
    Lỗi: Chém gió thì không sao nhưng khi đang chém gió mà di cái tâm vào tường hay vào người thằng nào thì lại bắt đầu chạy anim stab mới :((

    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <engine>
    #include <hamsandwich>
    #include <nst_wpn>
    #include <xs>

    #define PLUGIN    "Knife"
    #define AUTHOR    "Bui duc duy"
    #define VERSION    "1.0"

    enum
    {
        
    anim_idle 0,
        
    anim_slash_1,
        
    anim_slash_2,
        
    anim_draw,
        
    anim_stab,
        
    anim_stab_miss,
        
    anim_slash1_mid,
        
    anim_slash2_mid
    }

    new 
    Float:g_knife_attack[33]

    public 
    plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    RegisterHam(Ham_Weapon_SendWeaponAnim,"weapon_knife","Fw_Weapon_SendWeaponAnim")
        
    RegisterHam(Ham_Weapon_SecondaryAttack,"weapon_knife","Fw_SecondaryAttack_Post",1)
        
    RegisterHam(Ham_Weapon_PrimaryAttack,"weapon_knife","Fw_PrimAttack_Post",1)
        
        
        
    register_forward(FM_CmdStart,"Fw_CmdStart")
        
    register_forward(FM_TraceLine,"Fw_TraceLine")
        
    register_forward(FM_TraceHull,"Fw_TraceHull")
    }

    public 
    Fw_SecondaryAttack_Post(ent)
    {
        static 
    id 
        id 
    pev(ent,pev_owner)
        if(!
    pev_valid(ent) || !is_user_connected(id))
            return 
    HAM_IGNORED
            
        set_pdata_float
    (ent,47,nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+0.5,4)
        
        return 
    HAM_IGNORED
    }

    public 
    Fw_PrimAttack_Post(ent)
    {
        static 
    id 
        id 
    pev(ent,pev_owner)
        if(!
    pev_valid(ent) || !is_user_connected(id))
            return 
    HAM_IGNORED
        
        set_pdata_float
    (ent,460.3 ,4)
        
        return 
    HAM_IGNORED
    }

    // set distance
    public Fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle)
    {
        if (!
    is_user_connected(id))
            return 
    FMRES_IGNORED;
        
        if (!
    is_user_alive(id))
            return 
    FMRES_IGNORED;
        
        if (
    get_user_weapon(id) != CSW_KNIFE)
            return 
    FMRES_IGNORED;
        
        
        
    pev(idpev_v_anglevector_end)
        
    angle_vector(vector_endANGLEVECTOR_FORWARDvector_end)
        
        
    xs_vec_mul_scalar(vector_endnst_wpn_get_float3(idNST_WPN_DATA_DISTANCE), vector_end)
        
        
    xs_vec_add(vector_startvector_endvector_end)
        
    engfunc(EngFunc_TraceLinevector_startvector_endignored_monsteridhandle)
        
        return 
    FMRES_SUPERCEDE;
    }

    public 
    Fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monsterhullidhandle)
    {
        if (!
    is_user_connected(id))
            return 
    FMRES_IGNORED;
        
        if (!
    is_user_alive(id))
            return 
    FMRES_IGNORED;
        
        if (
    get_user_weapon(id) != CSW_KNIFE)
            return 
    FMRES_IGNORED;
        
        
        
    pev(idpev_v_anglevector_end)
        
    angle_vector(vector_endANGLEVECTOR_FORWARDvector_end)
        
        
    xs_vec_mul_scalar(vector_endnst_wpn_get_float3(idNST_WPN_DATA_DISTANCE), vector_end)
        
        
    xs_vec_add(vector_startvector_endvector_end)
        
    engfunc(EngFunc_TraceHullvector_startvector_endignored_monsterhullidhandle)
        
        return 
    FMRES_SUPERCEDE;
    }

    //

    /* Knife Hook delay */
    public Fw_CmdStart(id,handle,seed)
    {
        static 
    iButton,iEnt
        iButton 
    get_uc(handle,UC_Buttons)
        
    iEnt find_ent_by_owner(-1"weapon_knife"id)
        
        
        if(
    get_user_weapon(id) ==CSW_KNIFE)
        {
            if (
    iButton&IN_ATTACK2)
            {
                if (
    get_gametime() - g_knife_attack[id] < nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+1.0) return
                
    g_knife_attack[id] = get_gametime()
                
                
    //set_uc(handle,UC_Buttons,iButton&~IN_ATTACK2)
                
                
    set_weapon_anim(idanim_stab)
                
                if (
    task_exists(id)) remove_task(id)
                
    set_task(nst_wpn_get_float3(idNST_WPN_DATA_DELAY),"task_knife_attack",id)
                
                
    set_pdata_float(iEnt47nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+0.5,4)
            }
        }
    }

    public 
    task_knife_attack(id)
    {
        new 
    ent find_ent_by_owner(-1,"weapon_knife",id)
        
        if(!
    is_user_alive(id) || get_user_weapon(id) != CSW_KNIFE) return
        
    ExecuteHamB(Ham_Weapon_SecondaryAttack,ent)
    }



    public 
    Fw_Weapon_SendWeaponAnim(ent,anim)
    {
        static 
    id 
        id 
    pev(ent,pev_owner)
        if(!
    pev_valid(ent) || !is_user_connected(id)) return HAM_IGNORED
            
        
    if (get_gametime() - g_knife_attack[id] < nst_wpn_get_float3(idNST_WPN_DATA_DELAY)+1.0 && get_user_weapon(id)==CSW_KNIFE) return HAM_SUPERCEDE
        
        
    return HAM_IGNORED
    }


    stock set_weapon_anim(idanim)
    {
        
    set_pev(idpev_weaponanimanim)
        
        
    message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
        
    write_byte(anim)
        
    write_byte(pev(id,pev_body))
        
    message_end()
    }


     
  10. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Đề nghị bạn trẻ tự tìm hiểu chứ đừng có lên đây kêu gào, nếu cứ thế này thì trình độ sẽ kém đi chứ chả lên đc đâu.
     
  11. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    CHết... thiếu chữ
    @DIAS :2cool_misdoubt:
     
    Chỉnh sửa cuối: 8/5/12
  12. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Tôi nói nghiêm túc chứ không nói đùa đâu.
     
  13. phuonglong003

    phuonglong003 Mr & Ms Pac-Man

    Tham gia ngày:
    12/2/10
    Bài viết:
    296
    @kungfulon: bác fix cái link này đi
     
  14. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    phuonglong003 thích bài này.
  15. phuonglong003

    phuonglong003 Mr & Ms Pac-Man

    Tham gia ngày:
    12/2/10
    Bài viết:
    296
  16. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @kungfulon:
    - cái đó block nút cũ b-(. làm gì là delay
     
  17. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Block nút cũ thì nó mới ko chém liên tục, ngu thếb-(
     
  18. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Thằng buiducduy nó tạo ra attack mới mà b-(. player giữ attack2 liên tục -> CmdStart chạy liên tục thì ko phải nó set task liên tục để chạy code attack liên tục à :))
     
    Chỉnh sửa cuối: 8/5/12
  19. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Thế ko thấy nó check IN_ATTACK2 àb-(
     
  20. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Thì nó check rồi đó. Nhỡ player đè phím Attack2 thì sao. nó chém liên thanh :))
     
    Chỉnh sửa cuối: 8/5/12

Chia sẻ trang này