Member
|
06-06-2017
, 05:16
Knife Spark
|
#1
|
Good day, can anyone please remove other things on these plugin I only want knife spark and a cvar to enable or disable it.
It's for CS 1.6 I attach a picture I found on internet, just to clarify.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#define PLUGIN_NAME "Bloody Corpses"
#define PLUGIN_AUTHOR "se7h/BlackCat"
#define PLUGIN_VERSION "2.0"
#define RED_BLOOD_COLOR 248
new g_LastWeapon[33], g_LastAmmo[33], g_max_clients, bool:g_wounded[33]
new gradius[4] = {14, 13, 11, 14}
new gorigin[33][4][3]
new spr_blood_drop, spr_blood_spray
new gSprRedBloodDecal[8] = {190,191,192,193,194,195,196,197}
new gSprYellowBloodDecal[8] = {190,191,192,193,194,195,196,197}
new hitflesh[4][] =
{
"weapons/knife_hit1.wav",
"weapons/knife_hit2.wav",
"weapons/knife_hit3.wav",
"weapons/knife_hit4.wav"
}
new scream[4][] =
{
"player/death6.wav",
"player/die1.wav",
"player/die2.wav",
"player/die3.wav"
}
new pain[5][] =
{
"player/pl_pain2.wav",
"player/pl_pain4.wav",
"player/pl_pain5.wav",
"player/pl_pain6.wav",
"player/pl_pain7.wav"
}
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_event("ClCorpse", "event_cl_corpse", "a")
register_event("CurWeapon", "event_curweapon", "be", "1=1")
register_forward(FM_EmitSound, "fwEmitSound")
g_max_clients = global_get(glb_maxClients)
}
public plugin_precache()
{
spr_blood_drop = precache_model("sprites/blood.spr")
spr_blood_spray = precache_model("sprites/bloodspray.spr")
}
public event_cl_corpse()
{
static id
id = read_data(12)
if(!is_user_connected(id))
return
g_wounded[id] = (random(2) == 0) ? true : false
static Float:origin1[3], Float:origin2[3], Float:angle[3]
engfunc(EngFunc_GetBonePosition, id, 6, origin1, angle)
FVecIVec(origin1, gorigin[id][0])
engfunc(EngFunc_GetBonePosition, id, 2, origin2, angle)
FVecIVec(origin2, gorigin[id][1])
engfunc(EngFunc_GetBonePosition, id, 32, origin1, angle)
engfunc(EngFunc_GetBonePosition, id, 37, origin2, angle)
mid_point(origin1, origin2, gorigin[id][2])
engfunc(EngFunc_GetBonePosition, id, 33, origin1, angle)
engfunc(EngFunc_GetBonePosition, id, 38, origin2, angle)
mid_point(origin1, origin2, gorigin[id][3])
}
public fwEmitSound(id, channel, sound[])
{
if(!(1 <= id <= g_max_clients) || !is_user_alive(id) || !equali(sound, "weapons/knife_hitwall1.wav") || g_LastWeapon[id] != CSW_KNIFE || !(pev(id, pev_button) & (IN_ATTACK | IN_ATTACK2)))
return FMRES_IGNORED
return doit(id)
}
public event_curweapon(id)
{
static WID, Clip
WID = read_data(2)
Clip = read_data(3)
switch(WID)
{
case CSW_KNIFE:
{
g_LastWeapon[id] = WID
return PLUGIN_CONTINUE
}
case CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE, CSW_C4: return PLUGIN_CONTINUE
}
if(g_LastWeapon[id] == WID && g_LastAmmo[id] > Clip)
doit(id)
g_LastWeapon[id] = WID
g_LastAmmo[id] = Clip
return PLUGIN_CONTINUE
}
find_dead_body(id, Aim[3], body = 0)
{
static i, j
get_user_origin(id, Aim, 3)
for(i=1; i<=g_max_clients; i++)
{
for(j=0; j<4; j++)
{
if((get_distance(Aim, gorigin[i][j]) < gradius[j]) && (!body || body == i))
return i
}
}
return 0
}
stock doit(id)
{
static Aim[3], Float:fAim[3], Point[3], body, Float:oldtime, Float:curtime
body = find_dead_body(id, Aim)
curtime = get_gametime()
if(!body || is_user_alive(body))
{
if(g_LastWeapon[id] == CSW_KNIFE)
{
get_user_origin(id, Point)
if(get_distance(Aim, Point) < 66)
sparks(Aim)
}
return FMRES_IGNORED
}
get_points(id, Aim, Point, fAim)
static dead // Fixed by [TagPro] to support Normal Mode
dead = is_user_alive(body)
func_fx_bloodsprite(dead, Point)
func_fx_blood_decal(dead, Aim)
engfunc(EngFunc_EmitAmbientSound, 0, fAim, hitflesh[random(4)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
if(g_wounded[body] && (curtime - oldtime) > 1.0)
{
oldtime = curtime
g_wounded[body] = (random(3) == 0) ? true : false
if(g_wounded[body])
engfunc(EngFunc_EmitAmbientSound, 0, fAim, pain[random(5)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
else
engfunc(EngFunc_EmitAmbientSound, 0, fAim, scream[random(4)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
return FMRES_SUPERCEDE
}
stock get_points(id, const aim[3], out[3], Float:faim[3])
{
static start[3], Float:fmult, Float:fstart[3], Float:fout[3]
get_user_origin(id, start, 1)
IVecFVec(start, fstart)
IVecFVec(aim, faim)
fout[2] = faim[2] + random_float(10.0, 12.0)
fout[0] = faim[2] - fstart[2]
fmult = (fout[0] == 0.0) ? 0.0 : ((fout[2] - fstart[2])/fout[0])
fout[0] = fmult*(faim[0] - fstart[0]) + fstart[0]
fout[1] = fmult*(faim[1] - fstart[1]) + fstart[1]
FVecIVec(fout, out)
}
stock func_fx_bloodsprite(zombie, origin[])
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_BLOODSPRITE)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_short(spr_blood_spray)
write_short(spr_blood_drop)
write_byte(zombie ? RED_BLOOD_COLOR : RED_BLOOD_COLOR)
write_byte(random_num(4,7))
message_end()
}
stock func_fx_blood_decal(zombie, origin[])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_byte(zombie ? gSprYellowBloodDecal[random(6)] : gSprRedBloodDecal[random(8)])
message_end()
}
stock sparks(origin[])
{
message_begin(MSG_ALL, SVC_TEMPENTITY)
write_byte(TE_SPARKS)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
message_end()
}
stock mid_point(const Float:origin1[], const Float:origin2[], out[])
{
out[0] = floatround(origin1[0] + origin2[0])/2
out[1] = floatround(origin1[1] + origin2[1])/2
out[2] = floatround(origin1[2] + origin2[2])/2
}
|
|