[TUT] How to add p_, w_ models for grenades for zp 4.3
Jun 19, 2018 21:06:06 GMT
ComManDer likes this
Post by Déãth Strøkē ツ on Jun 19, 2018 21:06:06 GMT
Hellow members and staff.
today i'm gonna show how to add "P_, W_, models" on zp 4.3, ok let's start!
1.First we locking for :
and we need to add before this cvars :
2.Next we are looking for: // Custom weapon models
and we need add after that models :
3.Next we are looking for: // Forward Set Model
we need change it to:
4.Next we are looking for: case CSW_HEGRENADE: // Infection bomb or fire grenade
we need change it to :
NOTE : if you got any error replay me here.
5.Next we locking for: //case SECTION_WEAPON_MODELS
we add this
6.Final step : we need add this in "zombieplague.ini"
i hope this Tutorial help enjoy!
today i'm gonna show how to add "P_, W_, models" on zp 4.3, ok let's start!
1.First we locking for :
model_grenade_fire[64], model_grenade_frost[64], model_grenade_flare[64],
and we need to add before this cvars :
model_grenade_fire_p[64], model_grenade_frost_p[64], model_grenade_flare_p[64], model_grenade_infect_p[64],
model_grenade_fire_w[64], model_grenade_frost_w[64], model_grenade_flare_w[64], model_grenade_infect_w[64],
2.Next we are looking for: // Custom weapon models
engfunc(EngFunc_PrecacheModel, model_grenade_fire)
engfunc(EngFunc_PrecacheModel, model_grenade_frost)
engfunc(EngFunc_PrecacheModel, model_grenade_flare)
and we need add after that models :
engfunc(EngFunc_PrecacheModel, model_grenade_fire_p)
engfunc(EngFunc_PrecacheModel, model_grenade_frost_p)
engfunc(EngFunc_PrecacheModel, model_grenade_flare_p)
engfunc(EngFunc_PrecacheModel, model_grenade_infect_p)
engfunc(EngFunc_PrecacheModel, model_grenade_fire_w)
engfunc(EngFunc_PrecacheModel, model_grenade_frost_w)
engfunc(EngFunc_PrecacheModel, model_grenade_flare_w)
engfunc(EngFunc_PrecacheModel, model_grenade_infect_w)
3.Next we are looking for: // Forward Set Model
// Forward Set Model
public fw_SetModel(entity, const model[])
{
// We don't care
if (strlen(model) < 8)
return;
// Remove weapons?
if (get_pcvar_float(cvar_removedropped) > 0.0)
{
// Get entity's classname
static classname[10]
pev(entity, pev_classname, classname, charsmax(classname))
// Check if it's a weapon box
if (equal(classname, "weaponbox"))
{
// They get automatically removed when thinking
set_pev(entity, pev_nextthink, get_gametime() + get_pcvar_float(cvar_removedropped))
return;
}
}
// Narrow down our matches a bit
if (model[7] != 'w' || model[8] != '_')
return;
// Get damage time of grenade
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
// Grenade not yet thrown
if (dmgtime == 0.0)
return;
// Get whether grenade's owner is a zombie
if (g_zombie[pev(entity, pev_owner)])
{
if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb
{
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 0, 200, 0, kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(0) // r
write_byte(200) // g
write_byte(0) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION)
}
}
else if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_firegrenades)) // Napalm Grenade
{
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 200, 0, 0, kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(200) // r
write_byte(0) // g
write_byte(0) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
}
else if (model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade
{
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(0) // r
write_byte(100) // g
write_byte(200) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
}
else if (model[9] == 's' && model[10] == 'm' && get_pcvar_num(cvar_flaregrenades)) // Flare
{
// Build flare's color
static rgb[3]
switch (get_pcvar_num(cvar_flarecolor))
{
case 0: // white
{
rgb[0] = 255 // r
rgb[1] = 255 // g
rgb[2] = 255 // b
}
case 1: // red
{
rgb[0] = random_num(50,255) // r
rgb[1] = 0 // g
rgb[2] = 0 // b
}
case 2: // green
{
rgb[0] = 0 // r
rgb[1] = random_num(50,255) // g
rgb[2] = 0 // b
}
case 3: // blue
{
rgb[0] = 0 // r
rgb[1] = 0 // g
rgb[2] = random_num(50,255) // b
}
case 4: // random (all colors)
{
rgb[0] = random_num(50,200) // r
rgb[1] = random_num(50,200) // g
rgb[2] = random_num(50,200) // b
}
case 5: // random (r,g,b)
{
switch (random_num(1, 3))
{
case 1: // red
{
rgb[0] = random_num(50,255) // r
rgb[1] = 0 // g
rgb[2] = 0 // b
}
case 2: // green
{
rgb[0] = 0 // r
rgb[1] = random_num(50,255) // g
rgb[2] = 0 // b
}
case 3: // blue
{
rgb[0] = 0 // r
rgb[1] = 0 // g
rgb[2] = random_num(50,255) // b
}
}
}
}
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, rgb[0], rgb[1], rgb[2], kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(rgb[0]) // r
write_byte(rgb[1]) // g
write_byte(rgb[2]) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE)
// Set flare color on the thrown grenade entity
set_pev(entity, PEV_FLARE_COLOR, rgb)
}
}
we need change it to:
// Forward Set Model
public fw_SetModel(entity, const model[])
{
// We don't care
if (strlen(model) < 8)
return FMRES_IGNORED
// Remove weapons?
if (get_pcvar_float(cvar_removedropped) > 0.0)
{
// Get entity's classname
static classname[10]
pev(entity, pev_classname, classname, charsmax(classname))
// Check if it's a weapon box
if (equal(classname, "weaponbox"))
{
// They get automatically removed when thinking
set_pev(entity, pev_nextthink, get_gametime() + get_pcvar_float(cvar_removedropped))
return FMRES_IGNORED
}
}
// Narrow down our matches a bit
if (model[7] != 'w' || model[8] != '_')
return FMRES_IGNORED
// Get damage time of grenade
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
// Grenade not yet thrown
if (dmgtime == 0.0)
return FMRES_IGNORED
// Get whether grenade's owner is a zombie
if (g_zombie[pev(entity, pev_owner)])
{
if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb
{
// Set w_ model
engfunc(EngFunc_SetModel, entity, model_grenade_infect_w)
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 0, 200, 0, kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(0) // r
write_byte(200) // g
write_byte(0) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION)
}
return FMRES_SUPERCEDE
}
else if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_firegrenades)) // Napalm Grenade
{
// Set w_ model
engfunc(EngFunc_SetModel, entity, model_grenade_fire_w)
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 200, 0, 0, kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(200) // r
write_byte(0) // g
write_byte(0) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
return FMRES_SUPERCEDE
}
else if (model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade
{
// Set w_ model
engfunc(EngFunc_SetModel, entity, model_grenade_frost_w)
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(0) // r
write_byte(100) // g
write_byte(200) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
return FMRES_SUPERCEDE
}
else if (model[9] == 's' && model[10] == 'm' && get_pcvar_num(cvar_flaregrenades)) // Flare
{
// Set w_ model
engfunc(EngFunc_SetModel, entity, model_grenade_flare_w)
// Build flare's color
static rgb[3]
switch (get_pcvar_num(cvar_flarecolor))
{
case 0: // white
{
rgb[0] = 255 // r
rgb[1] = 255 // g
rgb[2] = 255 // b
}
case 1: // red
{
rgb[0] = random_num(50,255) // r
rgb[1] = 0 // g
rgb[2] = 0 // b
}
case 2: // green
{
rgb[0] = 0 // r
rgb[1] = random_num(50,255) // g
rgb[2] = 0 // b
}
case 3: // blue
{
rgb[0] = 0 // r
rgb[1] = 0 // g
rgb[2] = random_num(50,255) // b
}
case 4: // random (all colors)
{
rgb[0] = random_num(50,200) // r
rgb[1] = random_num(50,200) // g
rgb[2] = random_num(50,200) // b
}
case 5: // random (r,g,b)
{
switch (random_num(1, 3))
{
case 1: // red
{
rgb[0] = random_num(50,255) // r
rgb[1] = 0 // g
rgb[2] = 0 // b
}
case 2: // green
{
rgb[0] = 0 // r
rgb[1] = random_num(50,255) // g
rgb[2] = 0 // b
}
case 3: // blue
{
rgb[0] = 0 // r
rgb[1] = 0 // g
rgb[2] = random_num(50,255) // b
}
}
}
}
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, rgb[0], rgb[1], rgb[2], kRenderNormal, 16);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(rgb[0]) // r
write_byte(rgb[1]) // g
write_byte(rgb[2]) // b
write_byte(200) // brightness
message_end()
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE)
// Set flare color on the thrown grenade entity
set_pev(entity, PEV_FLARE_COLOR, rgb)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
4.Next we are looking for: case CSW_HEGRENADE: // Infection bomb or fire grenade
case CSW_HEGRENADE: // Infection bomb or fire grenade
{
if (g_zombie[id])
set_pev(id, pev_viewmodel2, model_grenade_infect)
else
set_pev(id, pev_viewmodel2, model_grenade_fire)
}
case CSW_FLASHBANG: // Frost grenade
{
set_pev(id, pev_viewmodel2, model_grenade_frost)
}
case CSW_SMOKEGRENADE: // Flare grenade
{
set_pev(id, pev_viewmodel2, model_grenade_flare)
}
we need change it to :
case CSW_HEGRENADE: // Infection bomb or fire grenade
{
if (g_zombie[id])
{
set_pev(id, pev_viewmodel2, model_grenade_infect)
set_pev(id, pev_weaponmodel2, model_grenade_infect_p)
}
else
{
set_pev(id, pev_viewmodel2, model_grenade_fire)
set_pev(id, pev_weaponmodel2, model_grenade_fire_p)
}
}
case CSW_FLASHBANG: // Frost grenade
{
set_pev(id, pev_viewmodel2, model_grenade_frost)
set_pev(id, pev_weaponmodel2, model_grenade_frost_p)
}
case CSW_SMOKEGRENADE: // Flare grenade
{
set_pev(id, pev_viewmodel2, model_grenade_flare)
set_pev(id, pev_weaponmodel2, model_grenade_flare_p)
}
NOTE : if you got any error replay me here.
5.Next we locking for: //case SECTION_WEAPON_MODELS
we add this
else if (equal(key, "GRENADE FIRE_P"))
copy(model_grenade_fire_p, charsmax(model_grenade_fire_p), value)
else if (equal(key, "GRENADE FROST_P"))
copy(model_grenade_frost_p, charsmax(model_grenade_frost_p), value)
else if (equal(key, "GRENADE FLARE_P"))
copy(model_grenade_flare_p, charsmax(model_grenade_flare_p), value)
else if (equal(key, "GRENADE INFECT_P"))
copy(model_grenade_infect_p, charsmax(model_grenade_infect_p), value)
else if (equal(key, "GRENADE FIRE_W"))
copy(model_grenade_fire_w, charsmax(model_grenade_fire_w), value)
else if (equal(key, "GRENADE FROST_W"))
copy(model_grenade_frost_w, charsmax(model_grenade_frost_w), value)
else if (equal(key, "GRENADE FLARE_W"))
copy(model_grenade_flare_w, charsmax(model_grenade_flare_w), value)
else if (equal(key, "GRENADE INFECT_W"))
copy(model_grenade_infect_w, charsmax(model_grenade_infect_w), value)
6.Final step : we need add this in "zombieplague.ini"
GRENADE INFECT_P = models/zombie_plague/p_infect.mdl
GRENADE FIRE_P = models/zombie_plague/p_fire.mdl
GRENADE FROST_P = models/zombie_plague/p_fros.mdl
GRENADE FLARE_P = models/zombie_plague/p_flare.mdl
GRENADE INFECT_W = models/zombie_plague/w_infect.mdl
GRENADE FIRE_W = models/zombie_plague/w_fire.mdl
GRENADE FROST_W = models/zombie_plague/w_frost.mdl
GRENADE FLARE_W = models/zombie_plague/w_flare.mdl
i hope this Tutorial help enjoy!