

Стаж: 18 лет
Сообщений: 987
Благодарностей: 529
Полезность: 1050
|
Много есть ответов нащёт этого плагина,и всё склоняеться к тому,что всё нереально потому,как нельзя заменить уже существующий файл клиенту hud.txt, в котором прописаны эти самые спрайты.
Теперь росмотрим мой вариант плагина.
В интернете нет данного исходника Effects_Killer . А если и есть на оленях,то там инклуды,которые не найти.
Но я нашол другой вариант версии и инклуд Код:
#include <amxmodx> #include <fakemeta> #include <acg>
#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[i]) } }
public plugin_init() { register_plugin("Effects Kill", "0.2", "modified from CSO-NST") 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 (!acg_userstatus(killer)) { if (g_firstkill) g_firstkill = 0 return; } kills[victim] = 0
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) acg_drawspr(killer, spr_combo2[ONESHOT_2KILL], 255, 255, 255, 0.7, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 1) else if (oneshot[killer] == 3) acg_drawspr(killer, spr_combo2[ONESHOT_3KILL], 255, 255, 255, 0.7, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 1) } if (g_lastkill) { g_lastkill = 0 acg_drawspr(killer, spr_combo2[KILL_LAST], 255, 255, 255, 0.6, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 2) } if (m_revenge) acg_drawspr(killer, spr_combo2[KILL_REVENGE], 255, 255, 255, 0.5, 0.65, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 3) if ((wpnindex != CSW_KNIFE) && (wpnindex != CSW_HEGRENADE) && !can_see_fm(killer, victim)) { if (headshot) acg_drawspr(killer, spr_combo2[WALLSHOT_HEADSHOT], 255, 255, 255, 0.5, 0.75, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 4) else acg_drawspr(killer, spr_combo2[WALLSHOT], 255, 255, 255, 0.5, 0.75, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 4) } if (headshot && wpnindex) { acg_drawspr(killer, spr_combo2[KILL_HEADSHOT], 255, 255, 255, 0.4, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 5) } else if (wpnindex == CSW_KNIFE) { acg_drawspr(killer, spr_combo2[KILL_KNIFE], 255, 255, 255, 0.4, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 5) } else if (wpnindex == CSW_HEGRENADE) { acg_drawspr(killer, spr_combo2[KILL_HEGRENADE], 255, 255, 255, 0.4, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 5) } if (g_firstkill) { g_firstkill = 0 acg_drawspr(killer, spr_combo2[KILL_FIRST], 255, 255, 255, 0.6, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 6) } else { acg_drawspr(killer, spr_combo2[kills[killer] - 1], 255, 255, 255, 0.55, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 6) } } public bomb_defused(id) { acg_drawspr(id, spr_combo2[C4_DEFUSE], 255, 255, 255, 0.5, 0.75, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 7) }
public bomb_planted(id) { acg_drawspr(id, spr_combo2[C4_SET], 255, 255, 255, 0.5, 0.75, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 7) }
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) 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 }
Следуя этому Код:
acg_drawspr(killer, spr_combo2[KILL_HEGRENADE], 255, 255, 255, 0.4, 0.3, 1, FX_FADE, 0.0, 0.4, 0.0, 3.0, DRAW_ADDITIVE, 5) И то,что эсть в инклуде Код:
native acg_drawspr(id, const szSpr[], red, green, blue, Float:x, Float:y, center,effects, Float:fadeintime, Float:fadeouttime, Float:fxtime, Float:holdtime, mode, channel=-1) Должно работать как бы и без hud.txt Но,увы,не тут то было...
Подгружал и я его ,и вроде всё на местах,спрайты и прописано правильно - но,нет...
Жду мнение експертов...

• МультиМод CS •
|