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

  • Thread starter Thread starter Orpheus
  • Ngày gửi Ngày gửi
À 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.
 
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:
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.
 
^
- 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
 
NST Efect Killer Metahook Spr
- Hỗ trợ HLDS
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 ----------

^
- 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
Client cài metahook,có nghĩa là cái metahook.dll ở thư mục cài game à?
 
tự động não đi các bạn...........
 
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.
 
ở trên đã ghi rõ hướng dẫn sử dụng....
 
^
^
- Vâng, ở thư mục game CS phải có file metahook.dll và phải patch file hl.exe
 
Muốn thấy dc hiệu ứng thì client cũng phải cài metahook
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.
 
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 đó:-?
 
nó đó :D
..........................................
 
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
3a2be4f73464298cebdf8acf115775f1_39025234.untitled.png
 
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.
 
Metahook dùng hud.txt chứ có dùng file như ACG đâu=))
 
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?
 
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.
 
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
3a2be4f73464298cebdf8acf115775f1_39025234.untitled.png

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

Metahook dùng hud.txt chứ có dùng file như ACG đâu=))
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 đó
 
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 đó
Đã 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=))
 
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
 
Back
Top