[AMX][Codes] Hỏi đáp về các code của AMX ...

Thảo luận trong 'Counter Strike' bắt đầu bởi sontung0, 6/8/09.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. My Own Way

    My Own Way S.V.E.N Commander

    Tham gia ngày:
    30/7/09
    Bài viết:
    12,221
    Nơi ở:
    Hải Phòng
    Hồi trước tôi cũng ném 1 đống model CSO vào server sau đó chán :|
     
  2. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
    mà CSO models hầu như toàn con Tanks Zombie và con Zombie nữ
     
  3. huucuong_2107198

    huucuong_2107198 Dragon Quest

    Tham gia ngày:
    29/12/09
    Bài viết:
    1,449
    @SONTUNG:
    Trong CSO_NST của bạn chia tay NAM và NỮ rất hay. Bạn chỉ mình đoạn code đó được không? Mình có dự định với các Skinner của CSCF cho 1 skin 5 group hand. Rất cần dùng thuật toán đó. Nếu không bạn chỉ mình hàm nào set group cũng ok ! Đa tạ trước!
     
  4. sontung0

    sontung0 Dragon Quest

    Tham gia ngày:
    27/5/09
    Bài viết:
    1,333
    PHP:
    #include <amxmodx>
    #include <hamsandwich>
    #include <fakemeta>
    #include <nst_player>

    #define PLUGIN "NST Wpn Hand"
    #define VERSION "1.0"
    #define AUTHOR "NST"

    new cvar_run
    new g_wpn[33], g_silen[33][CSW_P90+1], g_attack[33], g_anim[33], g_glock[33], g_change[33]
    const 
    SILENT_BS    = ((1<<CSW_USP)|(1<<CSW_M4A1))
    const 
    PISTOLS_BS = ((1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE))
    const 
    m_iId 43
    const m_fSilent 74
    enum
    {
        
    ANIM_DRAW 1,
        
    ANIM_SHOOT,
        
    ANIM_SHOOT2,
        
    ANIM_SHOOT_EMPTY
    }
    new const 
    V_KNIFE[2][] = {"models/v_knife.mdl""models/nst_wpn/v_knife_w.mdl"}
    new const 
    WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
                
    "weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
                
    "weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
                
    "weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
                
    "weapon_ak47""weapon_knife""weapon_p90" }

    new 
    g_fwWeaponDrawg_fwDummyResult
    const NOSHOOT2_BS = ((1<<CSW_KNIFE)|(1<<CSW_GLOCK18)|(1<<CSW_ELITE))



    // ########################## MAIN PLUGINS ##########################
    public plugin_natives()
    {
        
    register_native("nst_wpn_send_weapon_anim""natives_send_weapon_anim"1)
    }
    public 
    plugin_precache()
    {
        
    engfunc(EngFunc_PrecacheModelV_KNIFE[0])
        
    engfunc(EngFunc_PrecacheModelV_KNIFE[1])
    }
    public 
    plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
        
    cvar_run register_cvar("nst_wpn_hand""1")
        
        for (new 
    i=1i<=CSW_P90i++)
        {
            if (
    strlen(WEAPONENTNAMES[i]))
            {
                
    RegisterHam(Ham_Weapon_SendWeaponAnimWEAPONENTNAMES[i], "fw_Weapon_SendWeaponAnim")
                
    RegisterHam(Ham_Weapon_PrimaryAttackWEAPONENTNAMES[i], "fw_primary_attack_post",1
                
    RegisterHam(Ham_Item_PostFrameWEAPONENTNAMES[i], "fw_Item_PostFrame")
            }
        }
        
        
    register_event("CurWeapon","checkWeapon","be","1=1")
        
    register_forward(FM_CmdStart"fw_CmdStart")
        
    //register_concmd("qq", "qq")
        
        // Custom Forwards
        
    g_fwWeaponDraw CreateMultiForward("nst_wpn_weapon_draw"ET_IGNOREFP_CELL)
    }

    // ########################## MAIN PUBLIC ##########################
    public fw_Item_PostFrame(ent)
    {
        new 
    id pev(entpev_owner)
        if (!
    is_user_connected(id)) return HAM_IGNORED

        
    // check silent
        
    static iId iId get_pdata_int(entm_iId4)
        if (
    SILENT_BS & (1<<iId))
        {
            if (
    get_pdata_int(entm_fSilent4)) g_silen[id][iId] = 1
            
    else g_silen[id][iId] = 0
        
    }
        
        return 
    HAM_IGNORED
    }
    public 
    fw_Weapon_SendWeaponAnim(entiAnimskiplocalbody)
    {
        new 
    id pev(entpev_owner)
        if (!
    is_user_connected(id)) return HAM_IGNORED

        g_attack
    [id] = 0
        playanim
    (idiAnim)

        
    // Fix Anim Glock18
        
    new classname[64]
        
    pev(entpev_classnameclassnamecharsmax(classname))
        new 
    idwpn cs_weapon_name_to_id(classname)
        
        if (
    iAnim == get_num_anim(ididwpnANIM_DRAW) && g_wpn[id] == idwpn)
        {
            
    g_change[id] = 1
            ExecuteForward
    (g_fwWeaponDrawg_fwDummyResultid)
            
            
    //client_print(0, print_chat, "[%s][%s]", g_weapon_models[id][0], g_weapon_models[id][1])
            
    return HAM_SUPERCEDE
        
    }
        
        if (
    idwpn == CSW_GLOCK18)
        {
            if (
    iAnim == || iAnim == 11g_anim[id] = iAnim
            
    else if (iAnim == || iAnim == || iAnim == 2)
            {
                
    g_glock[id] = 1
                g_anim
    [id] = iAnim
            
    }
            else 
    g_anim[id] = 0
        
    }
        
        
    //client_print(0, print_chat, "[%i][%i][%i][%i]", id, iAnim, skiplocal, body)
        
    return HAM_IGNORED
    }
    public 
    fw_primary_attack_post(ent)
    {
        new 
    id pev(entpev_owner)
        if (!
    is_user_connected(id)) return HAM_IGNORED

        
    new plrClipplrAmmo
        get_user_weapon
    (idplrClip plrAmmo)
        if (
    plrClip)
        {
            
    g_attack[id] = 1
        
    }
        
        return 
    HAM_IGNORED
    }
    public 
    checkWeapon(id)
    {
        new 
    plrClipplrAmmoplrWeapId
        plrWeapId 
    get_user_weapon(idplrClip plrAmmo)
        
        if (
    g_attack[id])
        {
            new 
    ani
            
    if (!plrClipani get_num_anim(idplrWeapIdANIM_SHOOT_EMPTY)
            else if (!
    aniani get_num_anim(idplrWeapIdANIM_SHOOT)
            
            
    playanim(idani)
            
    g_attack[id] = 0
        
    }
        
        if (
    plrWeapId == CSW_KNIFE)
        {
            new 
    model_v[64]
            
    pev(idpev_viewmodel2model_vcharsmax(model_v))
            if (
    equal(model_vV_KNIFE[0]))
            {
                if (
    nst_get_user_sex(id) == 2set_pev(idpev_viewmodel2V_KNIFE[1])
                else 
    set_pev(idpev_viewmodel2V_KNIFE[0])
            }
        }
        
    //client_print(id, print_chat, "2[%i]", plrClip)

    }
    public 
    fw_CmdStart(iduc_handleseed)
    {
        
    //new num = pev(id, pev_weaponanim)
        //client_print(id, print_chat, "AT[%i]", g_silen[id])
        
        
    if (!is_user_alive(id)) return;
        
        new 
    plrClipplrAmmoplrWeapId
        plrWeapId 
    get_user_weapon(idplrClip plrAmmo)

        if (
    g_wpn[id] != plrWeapId || g_change[id])
        {
            new 
    anim get_num_anim(idplrWeapIdANIM_DRAW)
            if (
    plrWeapId == CSW_GLOCK18)
            {
                
    anim max(animg_anim[id])
                
    g_anim[id] = 0
            
    }
            
            
    playanim(idanim)
            
            
    g_wpn[id] = plrWeapId
            g_attack
    [id] = 0
            g_change
    [id] = 0
        
    }
        else if (!
    g_attack[id])
        {
            if (
    plrWeapId == CSW_GLOCK18 && g_glock[id])
            {
                
    playanim(idg_anim[id])
                
    g_glock[id] = 0
                g_anim
    [id] = 0
            
    }
        }
    }
    public 
    qq(id)
    {

    }

    // ########################## FUNCTION ##########################
    playanim(playeranim)
    {
        if (!
    is_user_alive(player) || !get_pcvar_num(cvar_run)) return;
        if (
    g_wpn[player] == CSW_ELITE && g_attack[player]) return;
        
        new 
    hand nst_get_user_hand(player)
        if (!
    hand) return;
        
        
    //set_pev(player, pev_weaponanim, anim)
        
    message_begin(MSG_ONESVC_WEAPONANIM, {000}, player)
        
    write_byte(anim)
        
    write_byte(hand)
        
    message_end()
    }
    playanim2(playeranim)
    {
        new 
    hand nst_get_user_hand(player)
        
        
    //set_pev(player, pev_weaponanim, anim)
        
    message_begin(MSG_ONESVC_WEAPONANIM, {000}, player)
        
    write_byte(anim)
        
    write_byte(hand)
        
    message_end()
    }
    cs_weapon_name_to_id(const weapon[])
    {
        static 
    i
        
    for (0sizeof WEAPONENTNAMESi++)
        {
            if (
    equal(weaponWEAPONENTNAMES[i]))
                return 
    i;
        }
        
        return 
    0;
    }
    get_num_anim(idwpntype)
    {
        
    // type = 1 : draw - type = 2 : shoot
        
    new drawshootshoot_empty
        
    switch(wpn)
        {
            case 
    CSW_AK47:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_AUG:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_AWP:
            {
                
    draw 5
                shoot 
    1
            
    }
            case 
    CSW_DEAGLE:
            {
                
    draw 5
                shoot 
    1
                shoot_empty 
    3
            
    }
            case 
    CSW_ELITE:
            {
                
    draw 15
                shoot 
    6
                shoot_empty 
    7
            
    }
            case 
    CSW_FAMAS:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_FIVESEVEN:
            {
                
    draw 5
                shoot 
    1
                shoot_empty 
    3
            
    }
            case 
    CSW_G3SG1:
            {
                
    draw 4
                shoot 
    1
            
    }
            case 
    CSW_GALIL:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_GLOCK18:
            {
                
    draw 8
                shoot 
    5
                shoot_empty 
    6
            
    }
            case 
    CSW_KNIFE:
            {
                
    draw 3
                shoot 
    1
            
    }
            case 
    CSW_M3:
            {
                
    draw 6
                shoot 
    1
            
    }
            case 
    CSW_M4A1:
            {
                
    draw 12
                shoot 
    8
            
    }
            case 
    CSW_M249:
            {
                
    draw 4
                shoot 
    1
            
    }
            case 
    CSW_MAC10:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_MP5NAVY:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_P90:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_P228:
            {
                
    draw 6
                shoot 
    1
                shoot_empty 
    4
            
    }
            case 
    CSW_SCOUT:
            {
                
    draw 4
                shoot 
    1
            
    }
            case 
    CSW_SG550:
            {
                
    draw 4
                shoot 
    1
            
    }
            case 
    CSW_SG552:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_TMP:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_UMP45:
            {
                
    draw 2
                shoot 
    3
            
    }
            case 
    CSW_USP:
            {
                
    draw 14
                shoot 
    9
                shoot_empty 
    12
            
    }
            case 
    CSW_XM1014:
            {
                
    draw 6
                shoot 
    1
            
    }
            case 
    CSW_C4:
            {
                
    draw 1
            
    }
            case 
    CSW_HEGRENADE:
            {
                
    draw 3
            
    }
            case 
    CSW_FLASHBANG:
            {
                
    draw 3
            
    }
            case 
    CSW_SMOKEGRENADE:
            {
                
    draw 3
            
    }
        }
        
        
    // silen wpn
        
    if (wpn == CSW_M4A1 && g_silen[id][CSW_M4A1])
        {
            
    draw -= 7
            shoot 
    -= 7
            shoot_empty 
    -= 7
        
    }
        else if (
    wpn == CSW_USP && g_silen[id][CSW_USP])
        {
            
    draw -= 8
            shoot 
    -= 8
            shoot_empty 
    -= 8
        
    }
        
        
    // random anim shoot2
        
    if (!(NOSHOOT2_BS & (1<<wpn))) shoot += random_num(01)

        
    // return value
        
    if (type == ANIM_DRAW) return draw
        
    else if (type == ANIM_SHOOT) return shoot
        
    else if (type == ANIM_SHOOT_EMPTY) return shoot_empty
        
        
    return 0
    }

    // ########################## NATIVES ##########################
    public natives_send_weapon_anim(playeranim)
    {
        
    playanim2(playeranim)
        return 
    1
    }
    về tự vọc nhớ
    cậu copy file hamsandwich.dll từ cso nst qua thì mới chạy đc
     
  5. huucuong_2107198

    huucuong_2107198 Dragon Quest

    Tham gia ngày:
    29/12/09
    Bài viết:
    1,449
    Thanks so much! :D:D Vọc là khả năng tốt nhất của tớ mà! À có ít ebook hay web nào vọc AMXX cậu share tớ với ! Thấy code của cậu có những hàm lạ hoắc ko có trong ebook amxx của tớ! NICE!
     
  6. mrkun

    mrkun T.E.T.Я.I.S

    Tham gia ngày:
    4/4/10
    Bài viết:
    544
    có cách nào bắt admin set 1 lệnh nào đó ko ? vd 1 plugin chơi đc 10' thì admin set gravity = 500 ?
     
  7. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    bác kia có ebook amxx àh ;)).
    Share với nào. Nếu cảm thấy ko pub dc thì send link qua Private Messenger
     
  8. harwardc_2008

    harwardc_2008 C O N T R A

    Tham gia ngày:
    18/4/08
    Bài viết:
    1,874
    Nơi ở:
    Hole
    Lên google gõ amxxmodx wiki ra cả đống
     
  9. trungtin911

    trungtin911 C O N T R A

    Tham gia ngày:
    15/6/10
    Bài viết:
    1,695
    Nơi ở:
    Trên trễn =))
    anh Tùng ơi cho em xin đoạn code double wpn cho knife được không?
     
  10. 5c0r-|3i0

    5c0r-|3i0 Donkey Kong

    Tham gia ngày:
    6/8/09
    Bài viết:
    387
    +1 Ha ha =))

    @huucuong : amx có cả Ebook cơ àh , share tôi với :P . Tôi toàn lên funcwiki mà sem ,hay khu scripting help thôi :D.
    @sontung0 : hamsandwich của ông khác j với hamsandwich của amx , hay chỉ là bản build mới hơn ?? :-s ....
    @kakaan96: Đã nói đây là nơi hỏi đáp code amx , ko thích share .sma thì ....phắn , chúng ta ko cần amxx ở đây :-w ....:(
     
  11. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
    tớ sẽ rút kinh nghiệm :D ......
     
  12. rocxman800

    rocxman800 Dragon Quest

    Tham gia ngày:
    7/11/05
    Bài viết:
    1,215
    Nơi ở:
    trên Trển áh
    Có ai tìm hộ tui CSDM bản mới nhất ko, tìm thử trên AlliedMod rùi nhưng dễ nản quá ^^!
     
  13. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
  14. 5c0r-|3i0

    5c0r-|3i0 Donkey Kong

    Tham gia ngày:
    6/8/09
    Bài viết:
    387
    // kakaan96 : Bấy nhiêu tuổi đầu rồi mà ko biết đọc luật lệ 4rum đấy ? Chữ kí cỡ đó , muốn ăn BAN àh ==".
    @mrkun: Set_task ngay plugin_init , 10 phút = 600 giây ....server_cmd("sv_gravity 500")....
     
  15. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
    @Bio:done
    con Leo cái ji Ghost ở TB có khác ji con Ghost thường ko
     
    Chỉnh sửa cuối: 4/10/10
  16. rocxman800

    rocxman800 Dragon Quest

    Tham gia ngày:
    7/11/05
    Bài viết:
    1,215
    Nơi ở:
    trên Trển áh
    CSDM tui đang dùng ở trong bản CSO-NST có lỗi thế này: Trước khi vô game (làm host) mình có thể tùy chọn vũ khí được phép cho bot, tui bỏ hết để cho bot dùng dao thui thì vào game vừa nhặt súng bất kì rơi ra đất"đơ" lun, có ai gặp tình trạng như tui ko nhỉ :|
     
  17. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
    thế đừng chơi CSO NST nữa
    vả lại chơi CSDM cài CS v23 chơi thoải mái
     
  18. anhhungmeo125

    anhhungmeo125 Mr & Ms Pac-Man

    Tham gia ngày:
    11/9/09
    Bài viết:
    154
    Nơi ở:
    Devil May Cry
    @sontung:bác sơn tùng cho em cái yahoo đi
    có plugin fast run ở dạng sma cho em xin
     
  19. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
    sontung đã post code fast run rồi
    tìm mấy page trước
    dạo này Chief đi đâu rồi
     
  20. sontung0

    sontung0 Dragon Quest

    Tham gia ngày:
    27/5/09
    Bài viết:
    1,333
    vì cái hamsandwich.dll mặc định không hỗ trợ Ham_Weapon_SendWeaponAnim (vào là bị đơ)
    hồi đó lên tìm hiểu lỗi này thì vớ đc hamsandwich.dll của 1 thằng nó edit lại
    nhưng vẫn bị thiếu biến body (biến này để hiển thị các sub của v model)
    PHP:
    public fw_Weapon_SendWeaponAnim(entiAnimskiplocalbody)
    nếu amxx studio fix đc lỗi này thì tốt biêt mấy

    ---------- Post added at 20:37 ---------- Previous post was at 20:34 ----------

    tớ toàn xem native trong các file ini của amxx và các plugin mẫu thôi
    thế là đủ rồi ^^
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này