So I found this one in my plugin archive, but I can't get this to work.
There are no blood trails, no body explosions (even if the body gets hit/killed with a huge shot charge) and in no way any more gore.
Here comes the code - maybe anyone can help me out with that:
PHP Code:
/*
v0.1 - [28.09.2011] First release
v0.1a - [29.09.2011] Fixed little bug in cs 1.6
v0.1b - [12.10.2011] Fixed blood stream
v0.2 - [08.01.2012]
1)new code
2)removed cvars
3)blood fountain now more real!
4)new system body explode
5)now only dead(explode) bodies dissapears
6)zBot fix code include (need`s - "hamsandwich_zBot_FIX")
IDEA TAKEN FROM: "Ultimate Gore" - "JTP10181"
http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community
*/
/* *************** */
/* >>> OPTIONS <<< */
/* *************** */
#define Half_Life // remove comment for Half-Life
#define zBot_on_server // enable this if you have zBot on server! (works on "cs/csz" ONLY!) *NEED`s* - "hamsandwich_zBot_FIX" - PLUGIN!
#define BLOOD_FOUTAIN // remove comment if you need`s blood fountain, if comment - default explode mode will be enabled
/* ******************* */
/* >>> END OPTIONS <<< */
/* ******************* */
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "hl_ultimate_gore_upd"
#define VERSION "0.2"
#define AUTHOR "Turanga_Leela"
#define LINUX_OFFSET 5
#define CS_last_hit_group 75
#define HL_last_hit_group 90
#define BLOOD_COLOR_RED 247
#define BLOOD_STREAM_RED 70
#define CL_CORPSE_MSG 122 // DOD = 126
#define BODY 0
enum _:BODY_EXPLODE
{
DEFAULT_EXPLODE,
NEVER_EXPLODE,
ALWAYS_EXPLODE
}
#if !defined Half_Life
new g_hidden_body
#if defined zBot_on_server
public zBot_entered_the_game(id)
{
RegisterHamFromEntity(Ham_Killed, id, "player_killed_pre", 0)
}
public zBot_change_data(id, zBot_alive, zBot_in_game)
{
if(id > 0 && 1 << (id - 1) & zBot_alive)
{
player_spawned_post(id)
}
}
#endif
public player_spawned_post(id)
{
g_hidden_body &= ~(1 << (id - 1))
}
public cL_Corpse()
{
if(1 << (get_msg_arg_int(12) - 1) & g_hidden_body)
{
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
#endif
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
#if !defined Half_Life
register_message(CL_CORPSE_MSG, "cL_Corpse")
RegisterHam(Ham_Spawn, "player", "player_spawned_post", 1)
#endif
RegisterHam(Ham_Killed, "player", "player_killed_pre", 0)
}
public player_killed_pre(id, idattacker, shouldgib)
{
if(shouldgib & NEVER_EXPLODE)
{
#if !defined Half_Life
switch(1 << get_pdata_int(id, CS_last_hit_group, LINUX_OFFSET) & 1 << HIT_HEAD)
#else
switch(1 << get_pdata_int(id, HL_last_hit_group, LINUX_OFFSET) & 1 << HIT_HEAD)
#endif
{
case BODY: return
default:
{
#if defined BLOOD_FOUTAIN
new damage = pev(id, pev_dmg_take)
if(damage < 1)
{
return
}
else if(damage > 500)
{
damage = 500
}
if(random_float(0.0, (1000.0 / damage)) > 1.0)
{
new
Float:victim_origin[3],
Float:killer_origin[3],
max_damage
pev(id, pev_origin, victim_origin)
victim_origin[2] += 17
if(pev_valid(idattacker))
{
pev(idattacker, pev_origin, killer_origin)
killer_origin[0] = (victim_origin[0] - killer_origin[0]) * random_float(0.5, 0.75)
killer_origin[1] = (victim_origin[1] - killer_origin[1]) * random_float(0.5, 0.75)
killer_origin[2] = floatsqroot(damage * get_distance_f(victim_origin, killer_origin))
}
else
{
killer_origin[0] = random_float(-256.0, 256.0)
killer_origin[1] = random_float(-256.0, 256.0)
killer_origin[2] = random_float(256.0, 1024.0)
}
switch(damage)
{
case 1..25: max_damage = 75
case 26..50: max_damage = 82
case 51..75: max_damage = 89
case 76..100: max_damage = 96
case 101..125: max_damage = 103
case 126..150: max_damage = 110
case 151..200: max_damage = 117
case 201..225: max_damage = 124
case 226..250: max_damage = 131
case 251..275: max_damage = 138
case 276..300: max_damage = 145
case 301..325: max_damage = 152
case 326..350: max_damage = 159
case 351..375: max_damage = 166
case 376..400: max_damage = 173
case 401..425: max_damage = 180
case 426..450: max_damage = 187
case 451..475: max_damage = 194
case 476..500: max_damage = 201
}
blood_stream(victim_origin, killer_origin, max_damage)
return
}
#endif
#if !defined Half_Life
g_hidden_body |= 1 << (id - 1)
#endif
#if defined BLOOD_FOUTAIN
SetHamParamInteger(BODY_EXPLODE, ALWAYS_EXPLODE)
#else
new damage = pev(id, pev_dmg_take)
if(damage < 1)
{
return
}
else if(damage > 500)
{
damage = 500
}
if(random_float(0.0, (1000.0 / damage)) <= 1.0)
{
SetHamParamInteger(BODY_EXPLODE, ALWAYS_EXPLODE)
}
#endif
}
}
}
}
#if defined BLOOD_FOUTAIN
blood_stream(Float:origin[], Float:velocity_vec[], damage)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BLOODSTREAM)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2])
engfunc(EngFunc_WriteCoord, velocity_vec[0])
engfunc(EngFunc_WriteCoord, velocity_vec[1])
engfunc(EngFunc_WriteCoord, velocity_vec[2])
write_byte(BLOOD_STREAM_RED)
write_byte(damage)
message_end()
}
#endif