[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. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    À mà thôi,metahook mình có rồi,bác nào hảo tâm,post 1 bài đơn giản giới thiệu+hướng dẫn sơ qua về metahook đi.Cám ơn.
     
  2. N?K

    N?K C O N T R A

    Tham gia ngày:
    23/7/03
    Bài viết:
    1,814
    NST Efect Killer Metahook Spr
    Đây là bộ killmark mình làm lại từ bộ NST Efect Killer, có tham khảo code của ACG

    Sử dụng các spr (cho nhẹ máy), có 1 số tính năng sau:
    - Tương thích version p48 4554
    - Hỗ trợ HLDS
    - Không cần hud.txt
    - Có sẵn Fade out
    - Đẹp rõ hơn cách sử dụng Spr cũ
    - Đã tối ưu hóa code tối đa (theo mình nghĩ)

    Lưu ý:
    - hiện nó chưa hoàn thiện, mình public chủ yếu nhờ mọi người cùng nghiên cứu metahook.inc để hoàn thiện cái này hơn
    - sprites có sẵn chỉ là để làm mẫu, các bạn tự sửa lại cho đẹp nhé, vì mình không rành cái khoảng design đâu

    Cách sử dụng:
    - copy đè vô game Counter Strike, phần Server thêm vô chữ metahook trong file modules.ini và mở fakemeta
    - trong game mở console gõ lệnh djb_killtip 0

    Link download: http://www.mediafire.com/?uiz9dy9s2kdm6z4

    Code:
    [SPOIL]
    #include <amxmodx>
    #include <fakemeta>
    #include <metahook>

    #define LEVELS 8
    new kills[33], Float:timekill[33], revenge[33], oneshot[33]
    new g_firstkill, g_lastkill


    new const spr_combo[][] =
    {
    "sprites/Mark/1shot_2kill.spr",
    "sprites/Mark/1shot_3kill.spr",
    "sprites/Mark/c4_defuse.spr",
    "sprites/Mark/c4_set.spr",
    "sprites/Mark/kill_1.spr",
    "sprites/Mark/kill_2.spr",
    "sprites/Mark/kill_3.spr",
    "sprites/Mark/kill_4.spr",
    "sprites/Mark/kill_5.spr",
    "sprites/Mark/kill_6.spr",
    "sprites/Mark/kill_7.spr",
    "sprites/Mark/kill_8.spr",
    "sprites/Mark/kill_first.spr",
    "sprites/Mark/kill_he.spr",
    "sprites/Mark/kill_headshot.spr",
    "sprites/Mark/kill_knife.spr",
    "sprites/Mark/kill_last.spr",
    "sprites/Mark/kill_revenge.spr",
    "sprites/Mark/wall_shot.spr",
    "sprites/Mark/wall_shot_hs.spr"
    }

    new const spr_combo2[][] =
    {
    "Mark/kill_1",
    "Mark/kill_2",
    "Mark/kill_3",
    "Mark/kill_4",
    "Mark/kill_5",
    "Mark/kill_6",
    "Mark/kill_7",
    "Mark/kill_8",
    "Mark/kill_first",
    "Mark/c4_defuse",
    "Mark/c4_set",
    "Mark/kill_he",
    "Mark/kill_headshot",
    "Mark/kill_knife",
    "Mark/kill_last",
    "Mark/kill_revenge",
    "Mark/wall_shot",
    "Mark/wall_shot_hs",
    "Mark/1shot_2kill",
    "Mark/1shot_3kill"
    }

    enum
    {
    KILL_1 = 0,
    KILL_2,
    KILL_3,
    KILL_4,
    KILL_5,
    KILL_6,
    KILL_7,
    KILL_8,
    KILL_FIRST,
    C4_DEFUSE,
    C4_SET,
    KILL_HEGRENADE,
    KILL_HEADSHOT,
    KILL_KNIFE,
    KILL_LAST,
    KILL_REVENGE,
    WALLSHOT,
    WALLSHOT_HEADSHOT,
    ONESHOT_2KILL,
    ONESHOT_3KILL
    }

    public plugin_precache()
    {
    for (new i = 0; i <= 17; i++)
    {
    precache_model(spr_combo)

    }
    }

    public plugin_init()
    {
    register_plugin("NST Effects Kill MH Spr", "1.0", "N?K modified from NST & ACG")

    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
    register_event("DeathMsg", "event_DeathMsg", "a")
    }

    public event_round_start()
    {
    new reset_value[33]

    g_firstkill = 1
    kills = reset_value
    revenge = reset_value
    oneshot = reset_value
    }

    public event_DeathMsg()
    {
    static killer, headshot, weapon[32], wpnindex, victim
    killer = read_data(1)
    victim = read_data(2)

    headshot = read_data(3)
    read_data(4, weapon, charsmax(weapon))
    if (equali(weapon, "grenade"))
    format(weapon, charsmax(weapon), "hegrenade")
    format(weapon, charsmax(weapon), "weapon_%s", weapon)
    wpnindex = get_weaponid(weapon)

    if (!is_user_connected(killer) || !is_user_connected(victim) || killer==victim) return;
    if (!get_user_name(killer))
    {
    if (g_firstkill)
    g_firstkill = 0
    return;
    }

    kills[victim] = 0

    // set revenge of victim
    revenge[victim] = killer

    new Float:timeleft = get_gametime()-timekill[killer]
    if (timeleft <= 3.0) kills[killer] += 1
    else kills[killer] = 1
    if (kills[killer]>LEVELS) kills[killer] = LEVELS
    timekill[killer] = get_gametime()

    if (!oneshot[killer]) oneshot[killer] = 1
    if (!timeleft && wpnindex != CSW_HEGRENADE) oneshot[killer] += 1
    else oneshot[killer] = 1
    oneshot[killer] = min(3, oneshot[killer])

    new players_ct[32], players_t[32], ict, ite
    get_players(players_ct,ict,"ae","CT")
    get_players(players_t,ite,"ae","TERRORIST")
    if (ict == 0 || ite == 0) g_lastkill = 1

    new m_revenge
    if (victim == revenge[killer])
    {
    m_revenge = 1
    revenge[killer] = 0
    }

    if (oneshot[killer] > 1)
    {
    if (oneshot[killer] == 2)
    MH_DrawImage(killer, 0, 1, spr_combo2[ONESHOT_2KILL], 0.7, 0.3, 255, 255, 255, 2, 3.0, 1, -1)

    else if (oneshot[killer] == 3)
    MH_DrawImage(killer, 0, 1, spr_combo2[ONESHOT_3KILL], 0.7, 0.3, 255, 255, 255, 2, 3.0, 1, -1)

    }

    if (g_lastkill)
    {
    g_lastkill = 0
    MH_DrawImage(killer, 0, 1, spr_combo2[KILL_LAST], 0.6, 0.3, 255, 255, 255, 2, 3.0, 2, -1)

    }

    if (m_revenge)
    MH_DrawImage(killer, 0, 1, spr_combo2[KILL_REVENGE], 0.5, 0.65, 255, 255, 255, 2, 3.0, 3, -1)


    if ((wpnindex != CSW_KNIFE) && (wpnindex != CSW_HEGRENADE) && !can_see_fm(killer, victim))
    {
    if (headshot)
    MH_DrawImage(killer, 0, 1, spr_combo2[WALLSHOT_HEADSHOT], 0.5, 0.75, 255, 255, 255, 2, 3.0, 4, -1)

    else
    MH_DrawImage(killer, 0, 1, spr_combo2[WALLSHOT], 0.5, 0.75, 255, 255, 255, 2, 3.0, 4, -1)

    }

    if (headshot && wpnindex)
    {
    MH_DrawImage(killer, 0, 1, spr_combo2[KILL_HEADSHOT], 0.4, 0.3, 255, 255, 255, 2, 3.0, 5, -1)

    }
    else if (wpnindex == CSW_KNIFE)
    {
    MH_DrawImage(killer, 0, 1, spr_combo2[KILL_KNIFE], 0.4, 0.3, 255, 255, 255, 2, 3.0, 5, -1)

    }
    else if (wpnindex == CSW_HEGRENADE)
    {
    MH_DrawImage(killer, 0, 1, spr_combo2[KILL_HEGRENADE], 0.4, 0.3, 255, 255, 255, 2, 3.0, 5, -1)

    }

    if (g_firstkill)
    {
    g_firstkill = 0
    MH_DrawImage(killer, 0, 1, spr_combo2[KILL_FIRST], 0.6, 0.3, 255, 255, 255, 2, 3.0, 6, -1)

    }
    else
    {
    MH_DrawImage(killer, 0, 1, spr_combo2[kills[killer] - 1], 0.55, 0.3, 255, 255, 255, 2, 3.0, 6, -1)

    }
    }
    public bomb_defused(id)
    {
    MH_DrawImage(id, 0, 1, spr_combo2[C4_DEFUSE], 0.5, 0.75, 255, 255, 255, 2, 3.0, 7, -1)

    }

    public bomb_planted(id)
    {
    MH_DrawImage(id, 0, 1, spr_combo2[C4_SET], 0.5, 0.75, 255, 255, 255, 2, 3.0, 7, -1)

    }

    bool:can_see_fm(entindex1, entindex2)
    {
    if (!entindex1 || !entindex2)
    return false
    // new ent1, ent2

    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)
    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)
    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)
    get_tr2(0, TraceResult:TR_flFraction, flFraction)
    if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
    {
    return true
    }
    }
    }
    }
    }
    return false
    }[/SPOIL]
     
    Chỉnh sửa cuối: 18/12/11
  3. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    Cám ơn nhiều.Bác cho mình hỏi là: NST Efect Killer Metahook Spr chắc chắn là không thể dùng được cho HLDS đúng không.
     
  4. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    ^
    - Metahook hỗ trợ hlds là chuyện thường, nhưng mà client muốn thấy dc hiệu ứng thì client cũng phải cài metahook :)). Mơ quá trớn cũng ko dc đâu
     
  5. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    Lại quên khong nhìn kỹ,xin lỗi nha.Mắt nổ mắt xịt.:-(||>

    ---------- Post added at 17:35 ---------- Previous post was at 17:34 ----------

    Client cài metahook,có nghĩa là cái metahook.dll ở thư mục cài game à?
     
  6. N?K

    N?K C O N T R A

    Tham gia ngày:
    23/7/03
    Bài viết:
    1,814
    tự động não đi các bạn...........
     
  7. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    Không biết phải hỏi,muốn giỏi phải học,động não muốn biết mình đúng hay sai thì phải hỏi.
     
  8. N?K

    N?K C O N T R A

    Tham gia ngày:
    23/7/03
    Bài viết:
    1,814
    ở trên đã ghi rõ hướng dẫn sử dụng....
     
  9. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    ^
    ^
    - Vâng, ở thư mục game CS phải có file metahook.dll và phải patch file hl.exe
     
  10. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    Câu hỏi của mình thuôc QUOTE trên.^^.Thông cảm,trình độ có hạn,phải hỏi mấy pro này thôi.
     
  11. 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
    Cho hỏi là ông N?K có đi hỏi bên blog.lolifun.tk ko thế, thấy cái nick NewComer ở bên đó:-?
     
  12. N?K

    N?K C O N T R A

    Tham gia ngày:
    23/7/03
    Bài viết:
    1,814
    nó đó :D
    ..........................................
     
  13. theanh11a5

    theanh11a5 - NOW ON - Moderator

    Tham gia ngày:
    8/10/09
    Bài viết:
    5,126
    Bác N?K cho tui hỏi tý,tui cài bộ plug-in của bác vào CS Catalysm,nó hiện mỗi cái radar,ngoài ra khi kill nó hiện sprites như hình,còn 1 chỗ trắng trắng to đùng ở chỗ radar nữa.T.T
    [​IMG]
     
  14. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    Thiếu sprites rồi,bác vào phần sprite của CS Catalysm,copy toàn bộ vào là dc.
    P/s:Lên lịch offline chưa bác?

    ---------- Post added at 19:23 ---------- Previous post was at 19:22 ----------

    Sặc,lại đọc không kỹ rồi,cái này là sprites,bác N?K quên chưa share hud.txt.
     
  15. 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
    Metahook dùng hud.txt chứ có dùng file như ACG đâu=))
     
  16. theanh11a5

    theanh11a5 - NOW ON - Moderator

    Tham gia ngày:
    8/10/09
    Bài viết:
    5,126
    Vẫn chẳng biết giải quyết thế nào,copy đề như bác N?K hướng dẫn rồi vào chơi luôn,mà khoản này tui mù tịt.
    Bác N?K hay Biên bắt lỗi dùm tớ đc ko?
     
  17. lucky131

    lucky131 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/11
    Bài viết:
    141
    Nơi ở:
    Paradise
    Mấy cái sprites efect đấy nó phải có tọa độ đi kèm,thế nên bác N?K share luôn tọa độ đi,sau đó chỉ việc copy vào hud.txt là song.
     
  18. N?K

    N?K C O N T R A

    Tham gia ngày:
    23/7/03
    Bài viết:
    1,814
    Không, cái này không cần hud.txt
    đây là file hud.txt của mình, chả cần add gì hết. Coi chừng các bạn quen add module
    http://www.mediafire.com/?b84lv1nawomqp8s

    chưa xem qua code hay sao mà phán như đúng rồi thế?
    trong native nó hỗ trợ tọa độ trên màn hình đó
     
  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
    Đã nói rồi, mth draw spr trong hud.txt mà=))cái code kia là draw theo kiểu ACG nên ko đc là phải=))
     
  20. N?K

    N?K C O N T R A

    Tham gia ngày:
    23/7/03
    Bài viết:
    1,814
    vậy mà mình draw được o.0 ,chẳng lẽ phải làm clip chứng minh ?
    có thể các bạn quên mở fakemeta nữa
     

Chia sẻ trang này