Quote:
Originally Posted by GetReady
I need a not so simple plugin.Only CT players gib on death but only when they get killed with headshot.Anyone can help me with this request?
|
I used this plugin for editing from <VeCo>, check out the cvars that are used:
https://forums.alliedmods.net/showthread.php?t=107215
I left all the models so you can combine them or add your own gibs.
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <engine>
#define HIT_HEAD 1
#define BREAK_GLASS 0x01
#define BREAK_METAL 0x02
#define BREAK_FLESH 0x04
#define BREAK_WOOD 0x08
#define BREAK_CONCRETE 0x40
new const g_sz_Const_GibModels[][] =
{
"models/hgibs.mdl",
"models/glassgibs.mdl",
"models/woodgibs.mdl",
"models/metalplategibs.mdl",
"models/cindergibs.mdl",
"models/ceilinggibs.mdl",
"models/computergibs.mdl",
"models/rockgibs.mdl",
"models/bookgibs.mdl",
"models/garbagegibs.mdl",
"models/bonegibs.mdl",
"models/cactusgibs.mdl",
"models/webgibs.mdl"
}
new const g_i_Const_GibMaterials[sizeof g_sz_Const_GibModels] =
{
BREAK_FLESH,
BREAK_GLASS,
BREAK_WOOD,
BREAK_METAL,
BREAK_CONCRETE,
BREAK_CONCRETE,
BREAK_METAL,
BREAK_CONCRETE,
BREAK_FLESH,
BREAK_FLESH,
BREAK_FLESH,
BREAK_WOOD,
BREAK_FLESH
}
new g_i_CacheGibsMdl[sizeof g_sz_Const_GibModels],
g_i_CacheAvailableGibs[sizeof g_sz_Const_GibModels], g_i_CacheAvailableNum,
g_p_Cvar_GibType, g_p_Cvar_GibSpread, g_p_Cvar_GibCount, g_p_Cvar_GibLife
public plugin_precache() {
for(new i = 0; i < sizeof g_sz_Const_GibModels; i++)
g_i_CacheGibsMdl[i] = precache_model(g_sz_Const_GibModels[i])
}
public plugin_init()
{
register_plugin("Gib Death (CT Headshot Only)", "2.1", "<VeCo>/Edit Pukovnik (Uzviseni Bog) HS ONLY")
g_p_Cvar_GibType = register_cvar("gib_type", "abcdefghijklm")
g_p_Cvar_GibSpread = register_cvar("gib_spread", "10")
g_p_Cvar_GibCount = register_cvar("gib_count", "8")
g_p_Cvar_GibLife = register_cvar("gib_life", "30")
register_logevent("LogEvent_RoundStart", 2, "1=Round_Start")
RegisterHam(Ham_Killed, "player", "HamHook_Player_Killed_Post", 1)
set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET)
}
public LogEvent_RoundStart()
{
g_i_CacheAvailableNum = 0
new sz_CacheCvar_Type[42]
get_pcvar_string(g_p_Cvar_GibType, sz_CacheCvar_Type, charsmax(sz_CacheCvar_Type))
new i_CacheCvar_StrLen = strlen(sz_CacheCvar_Type)
for(new i = 0; i < i_CacheCvar_StrLen; i++)
{
if(sz_CacheCvar_Type[i] > 'm' || sz_CacheCvar_Type[i] < 'a') continue
g_i_CacheAvailableGibs[g_i_CacheAvailableNum++] = sz_CacheCvar_Type[i] - 'a'
}
}
public HamHook_Player_Killed_Post(id, killer, shouldgib)
{
if(!is_user_connected(id) || cs_get_user_team(id) != CS_TEAM_CT)
return HAM_IGNORED
new weapon, hitplace
get_user_attacker(id, weapon, hitplace)
if(hitplace != HIT_HEAD)
return HAM_IGNORED
entity_set_int(id, EV_INT_effects, entity_get_int(id, EV_INT_effects) | EF_NODRAW)
new i_GetGib = g_i_CacheAvailableGibs[(g_i_CacheAvailableNum > 1) ? random(g_i_CacheAvailableNum) : 0]
new i_v_Origin[3]
get_user_origin(id, i_v_Origin)
message_begin(MSG_PVS, SVC_TEMPENTITY, i_v_Origin)
write_byte(TE_BREAKMODEL)
write_coord(i_v_Origin[0])
write_coord(i_v_Origin[1])
write_coord(i_v_Origin[2] + 16)
write_coord(32)
write_coord(32)
write_coord(32)
write_coord(0)
write_coord(0)
write_coord(25)
write_byte(get_pcvar_num(g_p_Cvar_GibSpread))
write_short(g_i_CacheGibsMdl[i_GetGib])
write_byte(get_pcvar_num(g_p_Cvar_GibCount))
write_byte(get_pcvar_num(g_p_Cvar_GibLife))
write_byte(g_i_Const_GibMaterials[i_GetGib])
message_end()
return HAM_HANDLED
}
gib_death.sma
Models.zip