PHP Code:
/*================================================================================
-----------------------------------
-*- [ZP] Zombie Class : Mystique Zombie -*-
-----------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
Press "v" to disguise as a human being.
================================================================================*/
#include <amxmodx>
#include <cstrike>
#include <zombieplague>
new g_zclass_mzombie, Bind, MaxPlayers
new HasDisguise[ 33 ] = 0
new const zclass_name[] = { "Mystique Zombie" }
new const zclass_info[] = { "Disguise" }
new const zclass_model[] = { "zombie_source" }
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" }
const zclass_health = 1700
const zclass_speed = 270
const Float:zclass_gravity = 0.9
const Float:zclass_knockback = 1.0
public plugin_init( )
{
register_plugin( "[ZP] Zombie Class : Mystique Zombie", "1.0", "Merc3y" )
register_logevent( "roundStart", 2, "1=Round_Start" )
register_clcmd( "+disguise", "disguise_start", ADMIN_ALL, "bind [key] +disguise" )
Bind = register_cvar( "zp_mzombie_bindkey", "1" )
MaxPlayers = get_maxplayers( )
}
public plugin_precache( )
{
g_zclass_mzombie = zp_register_zombie_class( zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback )
precache_model( "models/player/sas/sas.mdl" )
precache_model( "models/player/arctic/arctic.mdl" )
precache_model( "models/player/gign/gign.mdl" )
precache_model( "models/player/gsg9/gsg9.mdl" )
precache_model( "models/player/guerilla/guerilla.mdl" )
precache_model( "models/player/leet/leet.mdl" )
precache_model( "models/player/terror/terror.mdl" )
precache_model( "models/player/urban/urban.mdl" )
}
public zp_user_infected_post( id, infector )
{
if ( zp_get_user_zombie_class( id ) == g_zclass_mzombie )
{
HasDisguise[ id ] = 0
new mode = get_pcvar_num( Bind )
if ( mode == 1 )
{
client_cmd( id, "bind v ^"+disguise^"" )
chat_print( id, "To disguise press ^'^'V^'^'" )
}
if ( mode == 0 )
{
chat_print( id, "To disguise type bind <key> +disguise" )
}
}
}
public disguise_start( id )
{
if ( zp_get_user_zombie( id ) && zp_get_user_zombie_class( id ) == g_zclass_mzombie && !zp_get_user_nemesis( id ) )
{
if ( !is_user_alive( id ) )
{
chat_print( id, "You can't disguise when you are are dead." )
return
}
else
{
Disguise( id )
HasDisguise[ id ] = 1
}
}
}
public Disguise( id )
{
if ( zp_get_user_zombie( id ) && zp_get_user_zombie_class( id ) == g_zclass_mzombie && !zp_get_user_nemesis( id ) )
{
switch ( random_num( 1, 8 ) )
{
case 1:
{
cs_set_user_model( id, "models/player/sas/sas.mdl" )
}
case 2:
{
cs_set_user_model( id, "models/player/arctic/arctic.mdl" )
}
case 3:
{
cs_set_user_model( id, "models/player/gign/gign.mdl" )
}
case 4:
{
cs_set_user_model( id, "models/player/gsg9/gsg9.mdl" )
}
case 5:
{
cs_set_user_model( id, "models/player/guerilla/guerilla.mdl" )
}
case 6:
{
cs_set_user_model( id, "models/player/leet/leet.mdl" )
}
case 7:
{
cs_set_user_model( id, "models/player/terror/terror.mdl" )
}
case 8:
{
cs_set_user_model( id, "models/player/urban/urban.mdl" )
}
}
}
}
public roundStart( )
{
for ( new i = 1; i <= MaxPlayers; i++ )
{
HasDisguise[ i ] = 0
}
}
stock chat_print( plr, const message[ ], { Float, Sql, Result, _ }:... )
{
static msg[ 192 ], saytext, maxplayers;
format( msg, 191, "^x04[ZP]^x01 " );
vformat( msg[ 7 ], 185, message, 3 );
if ( !saytext )
{
saytext = get_user_msgid( "SayText" );
}
if ( !maxplayers )
{
maxplayers = get_maxplayers( );
}
if ( plr <= maxplayers && plr )
{
message_begin( MSG_ONE_UNRELIABLE, saytext, { 0, 0, 0 }, plr );
write_byte( plr );
write_string( msg );
message_end( );
}
else if ( !plr )
{
for( new i = 1; i <= maxplayers; i++ )
{
if ( !is_user_connected( i ) )
{
continue;
}
message_begin( MSG_ONE_UNRELIABLE, saytext, { 0, 0, 0 }, i );
write_byte( i );
write_string( msg );
message_end( );
}
}
return 1;
}