Junior Member
|
01-26-2015
, 12:59
Request change classes zm
|
#1
|
Hi all.
I would miss if I can remove xp from these classes are no xp .
Thanks.
1.
PHP Code:
*======================================================================================
-------------------------------
-*- [ZP] Zombie Class: Crow -*-
-------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
You can adjust fligth speed, press jump to fly and hold jump,
you remain flying until you either touch ground or hold jump. Hope you all like it.
======================================================================================*/
#include < amxmodx >
#include < engine >
#include < fakemeta >
#include < zombieplague >
#include < Licence >
#define PLUGIN "[ZP] Zombie Class Crow"
#define VERSION "1.0"
new g_zclass_crow, g_maxplayers, cvar_fly_speed, cvar_crow_glow, cvar_float,
cvar_glow_thickness, cvar_glow_color[3], thickness, Float:g_flPlayerGravity[ 33 ],
bool:g_can_fly[ 33 ], R, G, B, NR, NG, NB;
// Crow Zombie Atributes
new const zclass_name[ ] = "Crow Zombie"; // name
new const zclass_info[ ] = "Can fly"; // description
new const zclass_model[ ] = "zmland_crow_beta"; // model
new const zclass_clawmodel[ ] = "v_zmland_crow_claws1.mdl"; // claw model
const zclass_health = 1000; // health
const zclass_speed = 257; // speed
const Float:zclass_gravity = 0.57; // gravity
const Float:zclass_knockback = 1.1; // knockback
const zclass_level = 5
public plugin_init( )
{
Licence( );
register_plugin( PLUGIN, VERSION, "Cristi. C" );
register_event( "HLTV", "event_round_start", "a", "1=0", "2=0" );
register_event( "DeathMsg", "fw_PlayerKilled", "a" );
g_maxplayers = get_maxplayers( );
cvar_fly_speed = register_cvar( "zp_crow_fly_speed", "257" );
cvar_crow_glow = register_cvar( "zp_crow_glow", "1" );
cvar_float = register_cvar( "zp_crow_float", "1" );
cvar_glow_color[ 0 ] = register_cvar( "zp_crow_glow_R", "0" );
cvar_glow_color[ 1 ] = register_cvar( "zp_crow_glow_G", "0" );
cvar_glow_color[ 2 ] = register_cvar( "zp_crow_glow_B", "255" );
cvar_glow_thickness = register_cvar( "zp_crow_glow_thickness", "15" );
R = get_pcvar_num( cvar_glow_color[ 0 ] );
G = get_pcvar_num( cvar_glow_color[ 1 ] );
B = get_pcvar_num( cvar_glow_color[ 2 ] );
thickness = get_pcvar_num( cvar_glow_thickness );
}
public plugin_precache( )
g_zclass_crow = zp_register_zombie_class( zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback, zclass_level );
public client_putinserver( iClient )
{
g_can_fly[ iClient ] = false;
remove_task( iClient );
}
public client_disconnect( iClient )
{
g_can_fly[ iClient ] = false;
remove_task( iClient );
}
public event_round_start( )
{
static iClient;
for( iClient = 1; iClient <= g_maxplayers; iClient++ )
{
if ( zp_get_user_zombie_class( iClient ) != g_zclass_crow )
return;
g_can_fly[ iClient ] = false;
remove_task( iClient );
}
}
public zp_user_infected_post( iClient, infector, nemesis, assassin, bombardier )
{
if ( zp_get_user_zombie_class( iClient ) != g_zclass_crow || nemesis || assassin || bombardier )
return;
g_can_fly[ iClient ] = true;
set_task( 0.1, "CheckPlayer", iClient, _, _, "b" );
if ( get_pcvar_num( cvar_crow_glow ) )
{
fm_set_rendering( iClient, kRenderFxGlowShell, R, G, B, kRenderNormal, thickness );
}
}
public fw_PlayerKilled( )
{
static iClient;
iClient = read_data( 2 );
if (!zp_get_user_zombie( iClient ) || zp_get_user_zombie_class( iClient ) != g_zclass_crow )
return;
remove_task( iClient );
g_can_fly[ iClient ] = false;
}
public zp_user_frozen_post( iClient )
{
if ( zp_get_user_zombie_class( iClient ) != g_zclass_crow )
return;
g_can_fly[ iClient ] = false;
}
public zp_user_unfrozen( iClient )
{
if ( zp_get_user_zombie_class( iClient ) != g_zclass_crow || !zp_get_user_zombie( iClient ) )
return;
g_can_fly[ iClient ] = true;
if ( get_pcvar_num( cvar_crow_glow ) )
{
fm_set_rendering( iClient, kRenderFxGlowShell, R, G, B, kRenderNormal, thickness );
}
}
public zp_user_madness_post( iClient )
{
if (zp_get_user_zombie_class( iClient ) != g_zclass_crow
|| !get_pcvar_num( cvar_crow_glow ) )
return;
NR = get_cvar_num( "zp_nvg_nem_color_R" );
NG = get_cvar_num( "zp_nvg_nem_color_G" );
NB = get_cvar_num( "zp_nvg_nem_color_B" );
fm_set_rendering( iClient, kRenderFxGlowShell, NR, NG, NB, kRenderNormal, thickness );
}
public zp_user_madness_over_post( iClient )
{
if ( zp_get_user_zombie_class( iClient ) != g_zclass_crow
|| !get_pcvar_num( cvar_crow_glow ) )
return;
fm_set_rendering( iClient, kRenderFxGlowShell, R, G, B, kRenderNormal, thickness );
}
public zp_user_humanized_post( iClient, survivor, sniper )
{
g_can_fly[ iClient ] = false;
remove_task( iClient );
}
public CheckPlayer( iClient )
{
if( !g_can_fly[ iClient ] || !is_user_alive( iClient )
// || pev( id, pev_flags ) & FL_ONGROUND
|| !zp_get_user_zombie( iClient ) )
return;
new Float:fAimF[ 3 ], Float:fAimB[ 3 ], Float:fVelocity[ 3 ];
VelocityByAim( iClient, get_pcvar_num( cvar_fly_speed ), fAimF );
VelocityByAim( iClient, -get_pcvar_num( cvar_fly_speed ), fAimB );
switch ( get_user_button( iClient ) )
{
case IN_FORWARD:
{
fVelocity[ 0 ] = fAimF[ 0 ];
fVelocity[ 1 ] = fAimF[ 1 ];
fVelocity[ 2 ] = fAimF[ 2 ];
set_user_velocity( iClient, fVelocity );
}
case IN_BACK:
{
fVelocity[ 0 ] = fAimB[ 0 ];
fVelocity[ 1 ] = fAimB[ 1 ];
fVelocity[ 2 ] = fAimB[ 2 ];
set_user_velocity( iClient, fVelocity );
}
}
if ( get_pcvar_num( cvar_float ) )
{
if ( get_user_button( iClient ) & IN_JUMP )
{
set_pev( iClient, pev_velocity, Float:{ 0.0, 0.0, 0.0 } );
set_pev( iClient, pev_maxspeed, 1.0 );
set_pev( iClient, pev_gravity, 0.000001 );
}
else
set_pev( iClient, pev_gravity, g_flPlayerGravity[ iClient ] );
}
}
// Set entity's rendering type (from fakemeta_util)
stock fm_set_rendering( entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16 )
{
static Float:color[ 3 ];
color[ 0 ] = float( r );
color[ 1 ] = float( g );
color[ 2 ] = float( b );
set_pev( entity, pev_renderfx, fx );
set_pev( entity, pev_rendercolor, color );
set_pev( entity, pev_rendermode, render );
set_pev( entity, pev_renderamt, float( amount ) );
}
2.
PHP Code:
#include <amxmodx>
#include <zombieplague>
#include < Licence >
// Zombie Attributes
new const zclass_name[] = "Frozen Zombie" // name
new const zclass_info[] = "Can't be frozen" // description
new const zclass_model[] = "zmland_frost" // model
new const zclass_clawmodel[] = "v_zmland_frost.mdl" // claw model
const zclass_health = 1800 // health
const zclass_speed = 190 // speed
const Float:zclass_gravity = 1.157 // gravity
const Float:zclass_knockback = 0.757 // knockback
const zclass_level = 3
// Class IDs
new g_zclass_frozen, g_frozen[33]
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
register_plugin("[ZP] Frozen Zombie Class", "1.0", "Cristi. C")
// Register the new class and store ID for reference
g_zclass_frozen = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback, zclass_level )
}
public plugin_init( )
{
Licence( );
}
public client_disconnect(id)
g_frozen[id] = false
public zp_user_spawn_post(id)
g_frozen[id] = false
public zp_user_infected_post(id, infector, nemesis, assassin, bombardier)
{
if (zp_get_user_zombie_class(id) != g_zclass_frozen || nemesis || assassin || bombardier)
return;
g_frozen[id] = true
}
public zp_user_humanized_post(id)
g_frozen[id] = false
public zp_user_killed_post(id)
g_frozen[id] = false
public zp_user_frozen(id)
{
if (!g_frozen[id])
return;
zp_set_user_frozen(id, 0)
}
3.
PHP Code:
#include < amxmodx >
#include < zombieplague >
#include < Licence >
// Zombie Attributes
new const zclass_name[ ] = "Incinerated Zombie"; // name
new const zclass_info[ ] = "Can't be burned"; // description
new const zclass_model[ ] = "zmland_burned"; // model
new const zclass_clawmodel[ ] = "v_zmland_burned.mdl"; // claw model
const zclass_health = 1800; // health
const zclass_speed = 190; // speed
const Float:zclass_gravity = 0.75; // gravity
const Float:zclass_knockback = 1.157; // knockback
const zclass_level = 4;
new g_zclass_incinerated, g_incinerated[ 33 ];
public plugin_precache( )
{
register_plugin( "[ZP] Incinerated Zombie Class", "1.0", "Cristi. C" );
g_zclass_incinerated = zp_register_zombie_class( zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback, zclass_level );
}
public plugin_init( )
{
Licence( );
}
public client_disconnect( id )
g_incinerated[ id ] = false;
public zp_user_spawn_post( id )
g_incinerated[ id ] = false;
public zp_user_infected_post( id, infector, nemesis, assassin, bombardier )
{
if (zp_get_user_zombie_class( id ) != g_zclass_incinerated || nemesis || assassin || bombardier )
return;
g_incinerated[ id ] = true;
}
public zp_user_burn( id )
{
if ( !g_incinerated[ id ] )
return;
zp_set_user_burning( id, 0 );
}
public zp_user_humanized_post( id )
g_incinerated[ id ] = false;
public zp_user_killed_post( id )
g_incinerated[ id ] = false;
4.
PHP Code:
/*======================================================================================
-------------------------------
-*- [ZP] Zombie Class: Rage -*-
-------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
This is just a simple zombie class that 'is radioactive'
and has a custom colored glow while not frozen or in madness.
======================================================================================*/
#include < amxmodx >
#include < fakemeta >
#include < zombieplague >
#include < Licence >
// Zombie Attributes
new const zclass_name[ ] = "Rage Zombie"; // name
new const zclass_info[ ] = "Radioactive"; // description
new const zclass_model[ ] = "zmland_rage"; // model
new const zclass_clawmodel[ ] = "v_zmland_rage.mdl"; // claw model
const zclass_health = 4600; // health
const zclass_speed = 277; // speed
const Float:zclass_gravity = 0.95; // gravity
const Float:zclass_knockback = 1.5; // knockback
const zclass_level = 6;
new g_zclass_rage, cvar_glow_color[ 3 ], cvar_glow_thickness, R, G, B, thickness, NR, NG, NB;
public plugin_precache( )
{
register_plugin( "[ZP] Zombie Class: Rage", "1.0", "Cristi. C" );
cvar_glow_color[ 0 ] = register_cvar( "zp_zrage_glow_R", "0" );
cvar_glow_color[ 1 ] = register_cvar( "zp_zrage_glow_G", "255" );
cvar_glow_color[ 2 ] = register_cvar( "zp_zrage_glow_B", "0" );
cvar_glow_thickness = register_cvar( "zp_zrage_glow_thickness", "15" );
R = get_pcvar_num( cvar_glow_color[ 0 ] );
G = get_pcvar_num( cvar_glow_color[ 1 ] );
B = get_pcvar_num( cvar_glow_color[ 2 ] );
thickness = get_pcvar_num( cvar_glow_thickness );
g_zclass_rage = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback, zclass_level )
}
public plugin_init( )
{
Licence( );
}
public zp_user_infected_post( id )
{
if ( zp_get_user_nemesis( id ) || zp_get_user_assassin( id ) || zp_get_user_bombardier( id ) || zp_get_user_zombie_class( id ) != g_zclass_rage )
return;
fm_set_rendering(id, kRenderFxGlowShell, R, G, B, kRenderNormal, thickness );
}
public zp_user_unfrozen( id )
{
if ( zp_get_user_zombie_class( id ) != g_zclass_rage )
return;
fm_set_rendering( id, kRenderFxGlowShell, R, G, B, kRenderNormal, thickness );
}
public zp_user_madness_post( id )
{
if ( zp_get_user_zombie_class( id ) != g_zclass_rage )
return;
NR = get_cvar_num( "zp_nvg_nem_color_R" );
NG = get_cvar_num( "zp_nvg_nem_color_G" );
NB = get_cvar_num( "zp_nvg_nem_color_B" );
fm_set_rendering( id, kRenderFxGlowShell, NR, NG, NB, kRenderNormal, thickness );
}
public zp_user_madness_over_post( id )
{
if ( !zp_get_user_zombie( id ) || zp_get_user_zombie_class( id ) != g_zclass_rage )
return;
fm_set_rendering( id, kRenderFxGlowShell, R, G, B, kRenderNormal, thickness );
}
public zp_user_humanized_post( id, survivor, sniper )
{
if ( survivor || sniper || zp_get_user_zombie_class( id ) != g_zclass_rage )
return;
fm_set_rendering( id );
}
// Stock from fakemeta_util
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));
return 1;
}
5.
PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <xs>
#include <hamsandwich>
#include <zombieplague>
#include <Licence>
/*================================================================================
[Customizations]
=================================================================================*/
// Zombie Attributes
new const zclass_name[] = "Siren Zombie" // name
new const zclass_info[] = "Scream Ability" // description
new const zclass_model[] = "zmland_kf_siren" // model
new const zclass_clawmodel[] = "v_zmland_siren_fakeclaws.mdl" // claw model
new const zclass_ring_sprite[] = "sprites/shockwave.spr" // ring sprite
new const zclass_screamsounds[][] = { "killing_floor/siren_scream.wav" } // scream sound
// Scream ring color R G B
new zclass_ring_colors[3] = { 255, 0, 0 }
const zclass_health = 6450 // health
const zclass_speed = 170 // speed
const Float:zclass_gravity = 0.5 // gravity
const Float:zclass_knockback = 2.0 // knockback
const zclass_level = 7
/*================================================================================
Customization ends here! Yes, that's it. Editing anything beyond
here is not officially supported. Proceed at your own risk...
=================================================================================*/
// Variables
new g_iSirenZID, g_iMaxPlayers, g_msgSayText, g_msgScreenFade, g_msgScreenShake,
g_msgBarTime, g_sprRing
// Arrays
new g_iPlayerTaskTimes[33]
// Cvar pointers
new cvar_screammode, cvar_duration, cvar_screamdmg, cvar_startime, cvar_reloadtime,
cvar_radius, cvar_damagemode, cvar_slowdown
// Cached cvars
new g_iCvar_ScreamMode, g_iCvar_ScreamDuration, g_iCvar_ScreamDmg,
g_iCvar_ScreamStartTime, Float:g_flCvar_ReloadTime, Float:g_flCvar_Radius,
g_iCvar_DamageMode, Float:g_flCvar_ScreamSlowdown
// Bools
new bool:g_bIsConnected[33], bool:g_bIsAlive[33], bool:g_bInScreamProcess[33],
bool:g_bCanDoScreams[33], bool:g_bKilledByScream[33], bool:g_bDoingScream[33],
bool:g_bRoundEnding
// Some constants
const FFADE_IN = 0x0000
const GIB_NEVER = 0
const UNIT_SECOND = (1<<12)
const TASK_SCREAM = 37729
const TASK_RELOAD = 55598
const TASK_SCREAMDMG = 48289
const NADE_TYPE_INFECTION = 1111
// Plug info.
#define PLUG_VERSION "0.2"
#define PLUG_AUTH "meTaLiCroSS"
// Macros
#define zp_get_grenade_type(%1) (entity_get_int(%1, EV_INT_flTimeStepSound))
#define is_user_valid_alive(%1) (1 <= %1 <= g_iMaxPlayers && g_bIsAlive[%1])
#define is_user_valid_connected(%1) (1 <= %1 <= g_iMaxPlayers && g_bIsConnected[%1])
/*================================================================================
[Init, CFG and Precache]
=================================================================================*/
public plugin_init()
{
Licence( );
// Plugin Info
register_plugin("[ZP] Zombie Class: KF Siren Zombie", PLUG_VERSION, PLUG_AUTH)
// Main events
register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
// Main messages
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
// Fakemeta Forwards
register_forward(FM_CmdStart, "fw_CmdStart")
// Hamsandwich Forward
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
// Cvars
cvar_screammode = register_cvar("zp_siren_mode", "0")
cvar_duration = register_cvar("zp_siren_scream_duration", "3")
cvar_screamdmg = register_cvar("zp_siren_scream_damage", "2")
cvar_startime = register_cvar("zp_siren_scream_start_time", "1")
cvar_reloadtime = register_cvar("zp_siren_scream_reload_time", "30.0")
cvar_radius = register_cvar("zp_siren_scream_radius", "250.0")
cvar_damagemode = register_cvar("zp_siren_damage_mode", "0")
cvar_slowdown = register_cvar("zp_siren_damage_slowdown", "0.5")
static szCvar[30]
formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTH)
register_cvar("zp_zclass_siren", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
// Vars
g_iMaxPlayers = get_maxplayers()
g_msgBarTime = get_user_msgid("BarTime")
g_msgSayText = get_user_msgid("SayText")
g_msgScreenFade = get_user_msgid("ScreenFade")
g_msgScreenShake = get_user_msgid("ScreenShake")
}
public plugin_cfg()
{
// Cache some cvars
cache_cvars()
}
public plugin_precache()
{
// Register the new class and store ID for reference
g_iSirenZID = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback, zclass_level)
// Ring sprite
g_sprRing = precache_model(zclass_ring_sprite)
// Sounds
static i
for(i = 0; i < sizeof zclass_screamsounds; i++)
precache_sound(zclass_screamsounds[i])
}
/*================================================================================
[Main Events/Messages]
=================================================================================*/
public event_RoundStart()
{
// Caching cvars
cache_cvars()
// Reset round end bar
g_bRoundEnding = false
}
public message_DeathMsg(msg_id, msg_dest, id)
{
static iAttacker, iVictim
// Get attacker and victim
iAttacker = get_msg_arg_int(1)
iVictim = get_msg_arg_int(2)
// Non-player attacker or self kill
if(!is_user_connected(iAttacker) || iAttacker == iVictim)
return PLUGIN_CONTINUE
// Killed by siren scream
if(g_bKilledByScream[iVictim])
set_msg_arg_string(4, "siren scream")
return PLUGIN_CONTINUE
}
/*================================================================================
[Main Forwards]
=================================================================================*/
public client_putinserver(id)
{
// Updating bool
g_bIsConnected[id] = true
}
public client_disconnect(id)
{
// Updating bool
g_bIsAlive[id] = false
g_bIsConnected[id] = false
}
public fw_PlayerSpawn_Post(id)
{
// Not alive...
if(!is_user_alive(id))
return HAM_IGNORED
// Player is alive
g_bIsAlive[id] = true
// Reset player vars and tasks
stop_scream_task(id)
g_bCanDoScreams[id] = false
g_bDoingScream[id] = false
g_iPlayerTaskTimes[id] = 0
remove_task(id+TASK_RELOAD)
remove_task(id+TASK_SCREAMDMG)
return HAM_IGNORED
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
// Player victim
if(is_user_valid_connected(victim))
{
// Victim is not alive
g_bIsAlive[victim] = false
// Reset player vars and tasks
stop_scream_task(victim)
g_bCanDoScreams[victim] = false
g_bDoingScream[victim] = false
g_iPlayerTaskTimes[victim] = 0
remove_task(victim+TASK_RELOAD)
remove_task(victim+TASK_SCREAMDMG)
return HAM_HANDLED
}
return HAM_IGNORED
}
public fw_CmdStart(id, handle, random_seed)
{
// Not alive
if(!is_user_alive(id))
return FMRES_IGNORED;
// Isn't a zombie?
if(!zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_assassin(id) || zp_get_user_bombardier(id))
return FMRES_IGNORED;
// Invalid class id
if(zp_get_user_zombie_class(id) != g_iSirenZID)
return FMRES_IGNORED;
// Get user old and actual buttons
static iInUseButton, iInUseOldButton
iInUseButton = (get_uc(handle, UC_Buttons) & IN_USE)
iInUseOldButton = (get_user_oldbutton(id) & IN_USE)
// Pressing +use button
if(iInUseButton)
{
// Last used button isn't +use, i need to
// do this, because i call this "only" 1 time
if(!iInUseOldButton && g_bCanDoScreams[id] && !g_bDoingScream[id] && !g_bRoundEnding)
{
// A bar appears in his screen
message_begin(MSG_ONE, g_msgBarTime, _, id)
write_byte(g_iCvar_ScreamStartTime) // time
write_byte(0) // unknown
message_end()
// Update bool
g_bInScreamProcess[id] = true
// Next scream time
set_task(g_iCvar_ScreamStartTime + 0.2, "task_do_scream", id+TASK_SCREAM)
return FMRES_HANDLED
}
}
else
{
// Last used button it's +use
if(iInUseOldButton && g_bInScreamProcess[id])
{
// Stop scream main task
stop_scream_task(id)
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
/*================================================================================
[Tasks]
=================================================================================*/
public task_do_scream(id)
{
// Normalize task
id -= TASK_SCREAM
// Do scream sound
emit_sound(id, CHAN_STREAM, zclass_screamsounds[random_num(0, sizeof zclass_screamsounds - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
// Block screams
g_bCanDoScreams[id] = false
// Reload task
set_task(g_flCvar_ReloadTime, "task_reload_scream", id+TASK_RELOAD)
// Now it's doing an scream
g_bDoingScream[id] = true
// Get his origin coords
static iOrigin[3]
get_user_origin(id, iOrigin)
// Do a good effect, life the original Killing Floor.
message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
write_byte(TE_LAVASPLASH)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
message_end()
// Scream damage task
set_task(0.1, "task_scream_process", id+TASK_SCREAMDMG, _, _, "b")
}
public task_reload_scream(id)
{
// Normalize taks
id -= TASK_RELOAD
// Can do screams again
g_bCanDoScreams[id] = true
// Message
client_printcolor(id, "/g[ZP]/y Ready, you can do /gScreams/y again")
client_printcolor(id, "/g[ZP]/y Remember, press the /g^"+use^"/y Button to do an /gScreams/y")
}
public task_scream_process(id)
{
// Normalize task
id -= TASK_SCREAMDMG
// Time exceed
if(g_iPlayerTaskTimes[id] >= (g_iCvar_ScreamDuration*10) || g_bRoundEnding)
{
// Remove player task
remove_task(id+TASK_SCREAMDMG)
// Reset task times count
g_iPlayerTaskTimes[id] = 0
// Update bool
g_bDoingScream[id] = false
return;
}
// Update player task time
g_iPlayerTaskTimes[id]++
// Get player origin
static Float:flOrigin[3]
entity_get_vector(id, EV_VEC_origin, flOrigin)
// Collisions
static iVictim
iVictim = -1
// Vector var
static Float:flVictimOrigin[3]
// A ring effect
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, flOrigin[0]) // x
engfunc(EngFunc_WriteCoord, flOrigin[1]) // y
engfunc(EngFunc_WriteCoord, flOrigin[2]) // z
engfunc(EngFunc_WriteCoord, flOrigin[0]) // x axis
engfunc(EngFunc_WriteCoord, flOrigin[1]) // y axis
engfunc(EngFunc_WriteCoord, flOrigin[2] + g_flCvar_Radius) // z axis
write_short(g_sprRing) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(10) // life
write_byte(25) // width
write_byte(0) // noise
write_byte(zclass_ring_colors[0]) // red
write_byte(zclass_ring_colors[1]) // green
write_byte(zclass_ring_colors[2]) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
// Screen effects for him self
screen_effects(id)
// Do scream effects
while((iVictim = find_ent_in_sphere(iVictim, flOrigin, g_flCvar_Radius)) != 0)
{
// Non-player entity
if(!is_user_valid_connected(iVictim))
{
// Validation check
if(is_valid_ent(iVictim))
{
// Get entity classname
static szClassname[33]
entity_get_string(iVictim, EV_SZ_classname, szClassname, charsmax(szClassname))
// It's a grenade, and isn't an Infection Bomb
if(equal(szClassname, "grenade") && zp_get_grenade_type(iVictim) != NADE_TYPE_INFECTION)
{
// Get grenade origin
entity_get_vector(iVictim, EV_VEC_origin, flVictimOrigin)
// Do a good effect
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flVictimOrigin, 0)
write_byte(TE_PARTICLEBURST) // TE id
engfunc(EngFunc_WriteCoord, flVictimOrigin[0]) // x
engfunc(EngFunc_WriteCoord, flVictimOrigin[1]) // y
engfunc(EngFunc_WriteCoord, flVictimOrigin[2]) // z
write_short(45) // radius
write_byte(108) // particle color
write_byte(10) // duration * 10 will be randomized a bit
message_end()
// Remove it
remove_entity(iVictim)
}
// If i don't check his solid type, it's used all the time.
else if(equal(szClassname, "func_breakable") && entity_get_int(iVictim, EV_INT_solid) != SOLID_NOT)
{
// Destroy entity if he can
force_use(id, iVictim)
}
}
continue;
}
// Not alive, zombie or with Godmode
if(!g_bIsAlive[iVictim] || zp_get_user_zombie(iVictim) || get_user_godmode(iVictim))
continue;
// Screen effects for victims
screen_effects(iVictim)
// Get scream mode
switch(g_iCvar_ScreamMode)
{
// Do damage
case 0:
{
// Scream slowdown, first should be enabled
if(g_flCvar_ScreamSlowdown > 0.0)
{
// Get his current velocity vector
static Float:flVelocity[3]
get_user_velocity(iVictim, flVelocity)
// Multiply his velocity by a number
xs_vec_mul_scalar(flVelocity, g_flCvar_ScreamSlowdown, flVelocity)
// Set his new velocity vector
set_user_velocity(iVictim, flVelocity)
}
// Get damage result
static iNewHealth
iNewHealth = max(0, get_user_health(iVictim) - g_iCvar_ScreamDmg)
// Does not has health
if(!iNewHealth)
{
// Be infected when it's going to die
if(g_iCvar_DamageMode /* == 1*/)
{
// Returns 1 on sucess...
if(zp_infect_user(iVictim, id, 0, 1))
continue
}
// Kill it
scream_kill(iVictim, id)
continue
}
// Do fake damage
set_user_health(iVictim, iNewHealth)
}
// Instantly Infect
case 1:
{
// Can be infected?
if(!zp_infect_user(iVictim, id, 0, 1))
{
// Kill it
scream_kill(iVictim, id)
}
}
// Instantly Kill
case 2:
{
// Kill it
scream_kill(iVictim, id)
}
}
}
}
/*================================================================================
[Zombie Plague Forwards]
=================================================================================*/
public zp_user_infected_post(id, infector)
{
// It's the selected zombie class
if(zp_get_user_zombie_class(id) == g_iSirenZID && !zp_get_user_nemesis(id) && !zp_get_user_assassin(id) && !zp_get_user_bombardier(id))
{
// Array
g_bCanDoScreams[id] = true
// Message
client_printcolor(id, "/g[ZP]/y You can do /gScreams/y pressing the /g^"+use^"/y Button")
}
}
public zp_user_humanized_post(id)
{
// Reset player vars and tasks
stop_scream_task(id)
g_bCanDoScreams[id] = false
g_bDoingScream[id] = false
g_iPlayerTaskTimes[id] = 0
remove_task(id+TASK_RELOAD)
remove_task(id+TASK_SCREAMDMG)
}
public zp_round_ended(winteam)
{
// Update bool
g_bRoundEnding = true
// Make a loop
static id
for(id = 1; id <= g_iMaxPlayers; id++)
{
// Valid connected
if(is_user_valid_connected(id))
{
// Remove mainly tasks
stop_scream_task(id)
remove_task(id+TASK_RELOAD)
}
}
}
/*================================================================================
[Internal Functions]
=================================================================================*/
stop_scream_task(id)
{
// Remove the task
if(task_exists(id+TASK_SCREAM))
{
remove_task(id+TASK_SCREAM)
// Remove screen's bar
message_begin(MSG_ONE, g_msgBarTime, _, id)
write_byte(0) // time
write_byte(0) // unknown
message_end()
// Update bool
g_bInScreamProcess[id] = false
}
}
screen_effects(id)
{
// Screen Fade
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id)
write_short(UNIT_SECOND*1) // duration
write_short(UNIT_SECOND*1) // hold time
write_short(FFADE_IN) // fade type
write_byte(200) // r
write_byte(0) // g
write_byte(0) // b
write_byte(125) // alpha
message_end()
// Screen Shake
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
write_short(UNIT_SECOND*5) // amplitude
write_short(UNIT_SECOND*1) // duration
write_short(UNIT_SECOND*5) // frequency
message_end()
}
cache_cvars()
{
g_iCvar_ScreamMode = get_pcvar_num(cvar_screammode)
g_iCvar_ScreamDuration = get_pcvar_num(cvar_duration)
g_iCvar_ScreamDmg = get_pcvar_num(cvar_screamdmg)
g_iCvar_ScreamStartTime = get_pcvar_num(cvar_startime)
g_iCvar_DamageMode = get_pcvar_num(cvar_damagemode)
g_flCvar_ReloadTime = floatmax(g_iCvar_ScreamDuration+0.0, get_pcvar_float(cvar_reloadtime))
g_flCvar_Radius = get_pcvar_float(cvar_radius)
g_flCvar_ScreamSlowdown = get_pcvar_float(cvar_slowdown)
}
scream_kill(victim, attacker)
{
// To use later in DeathMsg event
g_bKilledByScream[victim] = true
// Do kill
ExecuteHamB(Ham_Killed, victim, attacker, GIB_NEVER)
// We don't need this
g_bKilledByScream[victim] = false
}
/*================================================================================
[Stocks]
=================================================================================*/
stock client_printcolor(id, const input[], any:...)
{
static iPlayersNum[32], iCount; iCount = 1
static szMsg[191]
vformat(szMsg, charsmax(szMsg), input, 3)
replace_all(szMsg, 190, "/g", "^4") // green txt
replace_all(szMsg, 190, "/y", "^1") // orange txt
replace_all(szMsg, 190, "/ctr", "^3") // team txt
replace_all(szMsg, 190, "/w", "^0") // team txt
if(id) iPlayersNum[0] = id
else get_players(iPlayersNum, iCount, "ch")
for (new i = 0; i < iCount; i++)
{
if (g_bIsConnected[iPlayersNum[i]])
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayersNum[i])
write_byte(iPlayersNum[i])
write_string(szMsg)
message_end()
}
}
}
6.
PHP Code:
#include < amxmodx >
#include < fun >
#include < engine >
#include < hamsandwich >
#include < zombieplague >
#include < Licence >
// Radioactive Zombie Attributes
new const zclass_rage_name[ ] = "Radioactive Zombie" // name
new const zclass_rage_info[ ] = "Toxic radiation(damage on touch)" // description
new const zclass_rage_model[ ] = "zmland_radioactive" // model
new const zclass_rage_clawmodel[ ] = "v_knife_zombie.mdl" // claw model
const zclass_rage_health = 5400 // health
const zclass_rage_speed = 200 // speed
const Float:zclass_rage_gravity = 0.757 // gravity
const Float:zclass_rage_knockback = 1.357 // knockback
const zclass_rage_level = 1
new const g_kevlar_hit_sound[] = "player/bhit_kevlar-1.wav"
//new const g_flesh_hit_sound[] = "player/bhit_flesh-1.wav"
new g_zclass_rage, bool:g_radioactive[33], bool:g_no_damage[33],
g_nem_color[3], g_cvars[2], Float:g_interval
enum
{
interval,
damage
}
public plugin_init()
{
Licence( );
register_plugin("[ZP] Radioactive Zombie", "1.1", "Cristi. C")
register_touch("player", "player", "zp_user_touched")
g_cvars[interval] = register_cvar("zp_radioactive_dmg_interval", "1.57")
g_cvars[damage] = register_cvar("zp_radioactive_dmg_amount", "5")
}
public plugin_precache()
{
// Register all classes
g_zclass_rage = zp_register_zombie_class(zclass_rage_name, zclass_rage_info, zclass_rage_model, zclass_rage_clawmodel, zclass_rage_health, zclass_rage_speed, zclass_rage_gravity, zclass_rage_knockback, zclass_rage_level)
precache_sound(g_kevlar_hit_sound)
// precache_sound(g_flesh_hit_sound)
}
public plugin_cfg()
{
g_interval = get_pcvar_float(g_cvars[interval])
g_cvars[damage] = get_pcvar_num(g_cvars[damage])
g_nem_color[0] = get_cvar_num("zp_nvg_nem_color_R")
g_nem_color[1] = get_cvar_num("zp_nvg_nem_color_G")
g_nem_color[2] = get_cvar_num("zp_nvg_nem_color_B")
}
public zp_user_spawn_post(id)
g_radioactive[id] = false
public zp_user_infected_post( id, nemesis, assassin, bombardier )
{
if (zp_get_user_zombie_class(id) != g_zclass_rage)
return;
if (nemesis)
{
if (!get_cvar_num("zp_nem_glow"))
set_user_rendering(id)
return;
}
else if (assassin)
{
if (!get_cvar_num("zp_ass_glow"))
set_user_rendering(id)
return;
}
else if (bombardier)
{
if (!get_cvar_num("zp_bom_glow"))
set_user_rendering(id)
return;
}
g_radioactive[id] = true
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 0)
}
public zp_user_unfrozen(id)
if (g_radioactive[id])
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 0)
public zp_user_humanized_post(id)
g_radioactive[id] = false
public zp_user_killed_post(id)
g_radioactive[id] = false
public zp_extra_item_selected(id, itemid)
{
if (itemid != EXTRA_MADNESS || !g_radioactive[id])
return;
set_user_rendering(id, kRenderFxGlowShell, g_nem_color[0], g_nem_color[1], g_nem_color[2], kRenderNormal, 0)
set_task(get_cvar_float("zp_extra_madness_duration"), "zp_reset_glow", id + 57)
}
public zp_reset_glow(taskid)
set_user_rendering(taskid - 57, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 0)
public zp_user_touched(id, zm)
{
if (!g_radioactive[zm] || g_no_damage[zm] || zp_get_user_zombie(id))
return;
static armor
armor = get_user_armor(id)
if (armor)
{
zp_set_user_armor(id, armor - g_cvars[damage])
emit_sound(id, CHAN_BODY, g_kevlar_hit_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
client_print(id, print_center, "Your armor is taking damage! Avoid contact with Radioactive Zombies!")
}
else if (!zp_get_user_last_human(id) && !zp_get_user_survivor(id) && !zp_get_user_sniper(id)
&& !zp_is_swarm_round() && !zp_is_plague_round())
{
zp_infect_user(id, zm, 0, 1)
client_print(id, print_center, "You have been infected because you made contact with a Radioactive Zombie and had no armor")
}
else
{
ExecuteHamB(Ham_TakeDamage, id, zm, zm, float:g_cvars[damage], DMG_NERVEGAS)
client_print(id, print_center, "You are taking damage! Avoid contact with Radioactive Zombies!")
}
g_no_damage[zm] = true
remove_task(zm + 75)
set_task(g_interval, "zp_allow_damage", zm + 75)
}
public zp_allow_damage(taskid)
g_no_damage[taskid - 75] = false
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
|
|