Veteran Member
Join Date: Oct 2008
Location: 🎧Music World
|
02-22-2010
, 10:57
Re: [New Natives] Zombie Plague 4.3 - v1.2 - 22/02/2010
|
#29
|
Quote:
Originally Posted by NiHiLaNTh
Something like this
|
yes...thank you
there is just a minor thing...it stops you a little bit
it can't be done like the nemesis immunity right?
i mean it won't stop the zombie at all
EDIT:
i'm updating my zp so i wanna be sure everything is perfect
in "native_set_user_frozen", at "set"(freeze user), haven't you forgot to add this?
PHP Code:
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) // stop motion
set_pev(id, pev_maxspeed, 1.0) // prevent from moving
return; // shouldn't leap while frozen
i didn't test it but i really think a player that should be frozen using this native will be able to move
also i replaced "is_user_valid_alive" with "g_isalive" for the remove function, cause i wanted the code to be exactly like mercyllezz's
in the end it looks like this...tell me if anything needs corrected please
PHP Code:
// Native: zp_set_user_frozen
public native_set_user_frozen(id, set)
{
if (set) // Set = 1, froze player
{
// Player isn't alive
if (!is_user_valid_alive[id])
return;
// User allready frozen
if (g_frozen[id])
return;
g_frozen[id] = true
static sound[64]
ArrayGetString(grenade_frost_player, random_num(0, ArraySize(grenade_frost_player) - 1), sound, charsmax(sound))
emit_sound(id, CHAN_BODY, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
if (get_pcvar_num(cvar_hudicons))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, _, id)
write_byte(0) // damage save
write_byte(0) // damage take
write_long(DMG_DROWN) // damage type - DMG_FREEZE
write_coord(0) // x
write_coord(0) // y
write_coord(0) // z
message_end()
}
if (g_handle_models_on_separate_ent)
fm_set_rendering(g_ent_playermodel[id], kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25)
else
fm_set_rendering(id, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25)
message_begin(MSG_ONE, g_msgScreenFade, _, id)
write_short(0) // duration
write_short(0) // hold time
write_short(FFADE_STAYOUT) // fade type
write_byte(0) // red
write_byte(50) // green
write_byte(200) // blue
write_byte(100) // alpha
message_end()
if (pev(id, pev_flags) & FL_ONGROUND)
set_pev(id, pev_gravity, 999999.9) // set really high
else
set_pev(id, pev_gravity, 0.000001) // no gravity
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) // stop motion
set_pev(id, pev_maxspeed, 1.0) // prevent from moving
return; // shouldn't leap while frozen
}
else // Set = 0, unfroze player
{
// Player isn't alive
if (!g_isalive[id])
return;
// User is not frozen
if (!g_frozen[id])
return;
// Get Nemesis' and Humans' nvg colors info to use it later
new nred, ngreen, nblue, hred, hgreen, hblue
nred = get_pcvar_num(cvar_nemnvgcolor[0])
ngreen = get_pcvar_num(cvar_nemnvgcolor[1])
nblue = get_pcvar_num(cvar_nemnvgcolor[2])
hred = get_pcvar_num(cvar_humnvgcolor[0])
hgreen = get_pcvar_num(cvar_humnvgcolor[1])
hblue = get_pcvar_num(cvar_humnvgcolor[2])
g_frozen[id] = false
if (g_zombie[id])
{
if (g_nemesis[id])
set_pev(id, pev_gravity, get_pcvar_float(cvar_nemgravity))
else
set_pev(id, pev_gravity, Float:ArrayGetCell(g_zclass_grav, g_zombieclass[id]))
}
else
{
if (g_survivor[id])
set_pev(id, pev_gravity, get_pcvar_float(cvar_survgravity))
if (g_sniper[id])
set_pev(id, pev_gravity, get_pcvar_float(cvar_snipergravity))
if (!g_survivor[id] && !g_sniper[id])
set_pev(id, pev_gravity, get_pcvar_float(cvar_humangravity))
}
// Restore rendering
if (g_handle_models_on_separate_ent)
{
// Nemesis, Survivor or Sniper glow / remove glow on player model entity
if (g_nemesis[id] && get_pcvar_num(cvar_nemglow))
fm_set_rendering(g_ent_playermodel[id], kRenderFxGlowShell, nred, ngreen, nblue, kRenderNormal, 25)
else if (g_survivor[id] && get_pcvar_num(cvar_survglow) || g_sniper[id] && get_pcvar_num(cvar_sniperglow))
fm_set_rendering(g_ent_playermodel[id], kRenderFxGlowShell, hred, hgreen, hblue, kRenderNormal, 25)
else
fm_set_rendering(g_ent_playermodel[id])
}
else
{
// Nemesis, Survivor or Sniper glow / remove glow
if (g_nemesis[id] && get_pcvar_num(cvar_nemglow))
fm_set_rendering(id, kRenderFxGlowShell, nred, ngreen, nblue, kRenderNormal, 25)
else if (g_survivor[id] && get_pcvar_num(cvar_survglow) || g_sniper[id] && get_pcvar_num(cvar_sniperglow))
fm_set_rendering(id, kRenderFxGlowShell, hred, hgreen, hblue, kRenderNormal, 25)
else
fm_set_rendering(id)
}
message_begin(MSG_ONE, g_msgScreenFade, _, id)
write_short(UNIT_SECOND) // duration
write_short(0) // hold time
write_short(FFADE_IN) // fade type
write_byte(0) // red
write_byte(50) // green
write_byte(200) // blue
write_byte(100) // alpha
message_end()
static sound[64]
ArrayGetString(grenade_frost_break, random_num(0, ArraySize(grenade_frost_break) - 1), sound, charsmax(sound))
emit_sound(id, CHAN_BODY, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
static origin2[3]
get_user_origin(id, origin2)
message_begin(MSG_PVS, SVC_TEMPENTITY, origin2)
write_byte(TE_BREAKMODEL) // TE id
write_coord(origin2[0]) // x
write_coord(origin2[1]) // y
write_coord(origin2[2]+24) // z
write_coord(16) // size x
write_coord(16) // size y
write_coord(16) // size z
write_coord(random_num(-50, 50)) // velocity x
write_coord(random_num(-50, 50)) // velocity y
write_coord(25) // velocity z
write_byte(10) // random velocity
write_short(g_glassSpr) // model
write_byte(10) // count
write_byte(25) // life
write_byte(BREAK_GLASS) // flags
message_end()
ExecuteForward(g_fwUserUnfrozen, g_fwDummyResult, id)
}
}
__________________
Last edited by georgik57; 02-22-2010 at 14:28.
Reason: ASKING SOME QUESTIONS AND FOR SOME ADVICE
|
|