Post by ShaunCraft15 on Feb 3, 2023 11:59:25 GMT
Hello guys, i know someone wants predator class, well i made it, it has 2 Abiliy's:
Freeze Ability: Like Dragon (Press R)
Blind Ability: Press R
Credits:
Author(Private): i can't say the name
Here is the plugin, enjoy
Freeze Ability: Like Dragon (Press R)
Blind Ability: Press R
Credits:
Author(Private): i can't say the name
Here is the plugin, enjoy
/*================================================================================
---------------------------
-*- [ZP] Class: Predator -*-
---------------------------
This plugin is part of Zombie Plague Mod and is distributed under the
terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
================================================================================*/
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <amx_settings_api>
#include <cs_maxspeed_api>
#include <cs_player_models_api>
#include <cs_weap_models_api>
#include <cs_ham_bots_api>
#include <zp50_core>
#include <zp50_colorchat>
#define LIBRARY_GRENADE_FROST "zp50_grenade_frost"
#include <zp50_grenade_frost>
#define LIBRARY_GRENADE_FIRE "zp50_grenade_fire"
#include <zp50_grenade_fire>
// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"
// Default models
new const models_predator_player[][] = { "zombie_source" }
new const models_predator_claw[][] = { "models/zombie_plague/v_knife_zombie.mdl" }
#define PLAYERMODEL_MAX_LENGTH 32
#define MODEL_MAX_LENGTH 64
// Custom models
new Array:g_models_predator_player
new Array:g_models_predator_claw
#define TASK_AURA 100
#define ID_AURA (taskid - TASK_AURA)
#define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
#define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
#define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
#define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))
//#define NEW_GRENADE_FROST
// Predator Ability's
new g_fSkill1[ 33 ], g_fSkill2[ 33 ]
/* Blind */
const Float:BLIND_ATTACK_RADIUS = 210.0
new g_fMsgScreenFade
new g_fPcvarBlindTime, g_fPcvarBlindDur, g_fRingSprite
/* Frost */
new g_fFrostSprite, g_fPcvar_FreezeDistance, g_fPcvar_FreezeDur, g_fPcvar_FreezeTime
new Float:g_fLastCmdUsed[ 33 ]
/* Damage Mode */
new g_fPcvarDMGMode, g_fPcvarDMG
new const Ring_Effect_Color[3] = { 51, 153, 255 }
// End Of Predator Abilitys
new g_MaxPlayers
new g_IsPredator
new cvar_predator_health, cvar_predator_base_health, cvar_predator_speed, cvar_predator_gravity
new cvar_predator_glow
new cvar_predator_aura, cvar_predator_aura_color_R, cvar_predator_aura_color_G, cvar_predator_aura_color_B
new cvar_predator_damage, cvar_predator_kill_explode
new cvar_predator_grenade_frost, cvar_predator_grenade_fire
public plugin_init()
{
register_plugin("[ZP] Class: Predator", ZP_VERSION_STRING, "ZP Dev Team")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHamBots(Ham_TakeDamage, "fw_TakeDamage")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
RegisterHamBots(Ham_Killed, "fw_PlayerKilled")
register_forward(FM_ClientDisconnect, "fw_ClientDisconnect_Post", 1)
register_forward(FM_CmdStart, "fw_CMDStart")
g_MaxPlayers = get_maxplayers()
g_fMsgScreenFade = get_user_msgid("ScreenFade")
cvar_predator_health = register_cvar("zp_predator_health", "0")
cvar_predator_base_health = register_cvar("zp_predator_base_health", "2000")
cvar_predator_speed = register_cvar("zp_predator_speed", "1.05")
cvar_predator_gravity = register_cvar("zp_predator_gravity", "0.5")
cvar_predator_glow = register_cvar("zp_predator_glow", "1")
cvar_predator_aura = register_cvar("zp_predator_aura", "1")
cvar_predator_aura_color_R = register_cvar("zp_predator_aura_color_R", "150")
cvar_predator_aura_color_G = register_cvar("zp_predator_aura_color_G", "0")
cvar_predator_aura_color_B = register_cvar("zp_predator_aura_color_B", "0")
cvar_predator_damage = register_cvar("zp_predator_damage_multi", "2.0")
cvar_predator_kill_explode = register_cvar("zp_predator_kill_explode", "1")
cvar_predator_grenade_frost = register_cvar("zp_predator_grenade_frost", "0")
cvar_predator_grenade_fire = register_cvar("zp_predator_grenade_fire", "1")
/* Frost Cvars */
g_fPcvar_FreezeDistance = register_cvar("zp_predator_freeze_distance", "900")
g_fPcvar_FreezeDur = register_cvar("zp_predator_freeze_cooldown", "15.0")
g_fPcvar_FreezeTime = register_cvar("zp_predator_freeze_time", "5.0")
/* Blind Cvars */
g_fPcvarBlindDur = register_cvar("zp_predator_blind_cooldown", "15.0")
g_fPcvarBlindTime = register_cvar("zp_predator_blind_time", "3.5")
/* Blind Cvars */
g_fPcvarDMGMode = register_cvar("zp_predator_damage_mode", "0")
g_fPcvarDMG = register_cvar("zp_predator_damage", "250.0")
}
public plugin_precache()
{
// Initialize arrays
g_models_predator_player = ArrayCreate(PLAYERMODEL_MAX_LENGTH, 1)
g_models_predator_claw = ArrayCreate(MODEL_MAX_LENGTH, 1)
// Load from external file
amx_load_setting_string_arr(ZP_SETTINGS_FILE, "Player Models", "PREDATOR", g_models_predator_player)
amx_load_setting_string_arr(ZP_SETTINGS_FILE, "Weapon Models", "V_KNIFE PREDATOR", g_models_predator_claw)
// If we couldn't load from file, use and save default ones
new index
if (ArraySize(g_models_predator_player) == 0)
{
for (index = 0; index < sizeof models_predator_player; index++)
ArrayPushString(g_models_predator_player, models_predator_player[index])
// Save to external file
amx_save_setting_string_arr(ZP_SETTINGS_FILE, "Player Models", "PREDATOR", g_models_predator_player)
}
if (ArraySize(g_models_predator_claw) == 0)
{
for (index = 0; index < sizeof models_predator_claw; index++)
ArrayPushString(g_models_predator_claw, models_predator_claw[index])
// Save to external file
amx_save_setting_string_arr(ZP_SETTINGS_FILE, "Weapon Models", "V_KNIFE PREDATOR", g_models_predator_claw)
}
// Precache models
new player_model[PLAYERMODEL_MAX_LENGTH], model[MODEL_MAX_LENGTH], model_path[128]
for (index = 0; index < ArraySize(g_models_predator_player); index++)
{
ArrayGetString(g_models_predator_player, index, player_model, charsmax(player_model))
formatex(model_path, charsmax(model_path), "models/player/%s/%s.mdl", player_model, player_model)
precache_model(model_path)
// Support modelT.mdl files
formatex(model_path, charsmax(model_path), "models/player/%s/%sT.mdl", player_model, player_model)
if (file_exists(model_path)) precache_model(model_path)
}
for (index = 0; index < ArraySize(g_models_predator_claw); index++)
{
ArrayGetString(g_models_predator_claw, index, model, charsmax(model))
precache_model(model)
}
g_fFrostSprite = precache_model( "sprites/frost_explode.spr" )
g_fRingSprite = precache_model( "sprites/shockwave.spr" )
}
public plugin_natives()
{
register_library("zp50_class_predator")
register_native("zp_class_predator_get", "native_class_predator_get")
register_native("zp_class_predator_set", "native_class_predator_set")
register_native("zp_class_predator_get_count", "native_class_predator_get_count")
set_module_filter("module_filter")
set_native_filter("native_filter")
}
public module_filter(const module[])
{
if (equal(module, LIBRARY_GRENADE_FROST) || equal(module, LIBRARY_GRENADE_FIRE))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public native_filter(const name[], index, trap)
{
if (!trap)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
if (flag_get(g_IsPredator, id))
{
// Remove predator glow
if (get_pcvar_num(cvar_predator_glow))
set_user_rendering(id)
// Remove predator aura
if (get_pcvar_num(cvar_predator_aura))
remove_task(id+TASK_AURA)
}
}
Effect_Ring(const Float:originF[3])
{
// Smallest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+285.0) // z axis
write_short(g_fRingSprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(Ring_Effect_Color[0]) // red
write_byte(Ring_Effect_Color[1]) // green
write_byte(Ring_Effect_Color[2]) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
// Medium ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+370.0) // z axis
write_short(g_fRingSprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(Ring_Effect_Color[0]) // red
write_byte(Ring_Effect_Color[1]) // green
write_byte(Ring_Effect_Color[2]) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
// Largest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+455.0) // z axis
write_short(g_fRingSprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(Ring_Effect_Color[0]) // red
write_byte(Ring_Effect_Color[1]) // green
write_byte(Ring_Effect_Color[2]) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}
public fw_ClientDisconnect_Post(id)
{
// Reset flags AFTER disconnect (to allow checking if the player was predator before disconnecting)
flag_unset(g_IsPredator, id)
}
// Ham Take Damage Forward
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
// Non-player damage or self damage
if (victim == attacker || !is_user_alive(attacker))
return HAM_IGNORED;
// Predator attacking human
if (flag_get(g_IsPredator, attacker) && !zp_core_is_zombie(victim))
{
// Ignore predator damage override if damage comes from a 3rd party entity
// (to prevent this from affecting a sub-plugin's rockets e.g.)
if (inflictor == attacker)
{
if( get_pcvar_num( g_fPcvarDMGMode ) )
{
// Set predator damage
SetHamParamFloat(4, damage * get_pcvar_float(cvar_predator_damage))
}
else
{
// Set predator damage
SetHamParamFloat(4, get_pcvar_float(g_fPcvarDMG))
}
return HAM_HANDLED;
}
}
return HAM_IGNORED;
}
// Ham Player Killed Forward
public fw_PlayerKilled(victim, attacker, shouldgib)
{
if (flag_get(g_IsPredator, victim))
{
// Predator explodes!
if (get_pcvar_num(cvar_predator_kill_explode))
SetHamParamInteger(3, 2)
// Remove predator aura
if (get_pcvar_num(cvar_predator_aura))
remove_task(victim+TASK_AURA)
}
}
public zp_fw_grenade_frost_pre(id)
{
// Prevent frost for Predator
if (flag_get(g_IsPredator, id) && !get_pcvar_num(cvar_predator_grenade_frost))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public zp_fw_grenade_fire_pre(id)
{
// Prevent burning for Predator
if (flag_get(g_IsPredator, id) && !get_pcvar_num(cvar_predator_grenade_fire))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public zp_fw_core_spawn_post(id)
{
if (flag_get(g_IsPredator, id))
{
// Remove predator glow
if (get_pcvar_num(cvar_predator_glow))
set_user_rendering(id)
// Remove predator aura
if (get_pcvar_num(cvar_predator_aura))
remove_task(id+TASK_AURA)
// Remove predator flag
flag_unset(g_IsPredator, id)
}
}
public zp_fw_core_cure(id, attacker)
{
if (flag_get(g_IsPredator, id))
{
// Remove predator glow
if (get_pcvar_num(cvar_predator_glow))
set_user_rendering(id)
// Remove predator aura
if (get_pcvar_num(cvar_predator_aura))
remove_task(id+TASK_AURA)
// Remove predator flag
flag_unset(g_IsPredator, id)
}
}
public zp_fw_core_infect_post(id, attacker)
{
// Apply Predator attributes?
if (!flag_get(g_IsPredator, id))
return;
// Health
if (get_pcvar_num(cvar_predator_health) == 0)
set_user_health(id, get_pcvar_num(cvar_predator_base_health) * GetAliveCount())
else
set_user_health(id, get_pcvar_num(cvar_predator_health))
// Gravity
set_user_gravity(id, get_pcvar_float(cvar_predator_gravity))
// Speed
cs_set_player_maxspeed_auto(id, get_pcvar_float(cvar_predator_speed))
// Apply predator player model
new player_model[PLAYERMODEL_MAX_LENGTH]
ArrayGetString(g_models_predator_player, random_num(0, ArraySize(g_models_predator_player) - 1), player_model, charsmax(player_model))
cs_set_player_model(id, player_model)
// Apply predator claw model
new model[MODEL_MAX_LENGTH]
ArrayGetString(g_models_predator_claw, random_num(0, ArraySize(g_models_predator_claw) - 1), model, charsmax(model))
cs_set_player_view_model(id, CSW_KNIFE, model)
// Predator glow
if (get_pcvar_num(cvar_predator_glow))
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25)
// Predator aura task
if (get_pcvar_num(cvar_predator_aura))
set_task(0.1, "predator_aura", id+TASK_AURA, _, _, "b")
if( is_user_bot( id ) )
{
set_task(6.5, "SupportSkillsForBots", id, _, _, "b")
}
ControlSkills( id, random( 1 ) )
zp_colored_print(id, "You are now ^4Predator^1, Use ^4[R] ^1For Skills")
}
public fw_CMDStart( this )
{
if ( flag_get(g_IsPredator, this) )
{
new fButton = get_user_button( this )
new fOldButton = get_user_oldbutton( this )
if( !( fOldButton & IN_RELOAD ) && ( fButton & IN_RELOAD ) )
{
if( g_fSkill1[ this ] )
{
FreezeAbilityCMD( this )
}
if( g_fSkill2[ this ] )
{
BlindAbilityCMD( this )
}
}
}
return PLUGIN_CONTINUE;
}
public SupportSkillsForBots( this )
{
if( g_fSkill1[ this ] )
{
FreezeAbilityCMD( this )
}
if( g_fSkill2[ this ] )
{
BlindAbilityCMD( this )
}
}
public FreezeAbilityCMD( this )
{
new Float:fGameTime = get_gametime( )
if( fGameTime - g_fLastCmdUsed[ this ] < get_pcvar_float( g_fPcvar_FreezeDur ) )
{
zp_colored_print( this, "You Have To Wait ^4%..f ^3Seconds ^1To Use The Freeze Ability", get_pcvar_float( g_fPcvar_FreezeDur ) - (fGameTime - g_fLastCmdUsed[ this ] ) )
return false;
}
new fTarget, fBody
if( !get_user_aiming( this, fTarget, fBody, get_pcvar_num( g_fPcvar_FreezeDistance ) ) )
{
zp_colored_print( this, "You Are Not Aiming To A Target!!!")
return false;
}
else
{
if(!is_user_alive( fTarget ) || zp_core_is_zombie( fTarget ) )
return false;
if(zp_grenade_frost_get( fTarget ) )
{
zp_colored_print( this, "Player Already ^3Freezed")
return false;
}
sprite_control( this )
g_fLastCmdUsed[ this ] = fGameTime
FreezePlayer( fTarget )
ControlSkills( this, 1 )
}
return true;
}
public BlindAbilityCMD( this )
{
new Float:fGameTime = get_gametime( )
if( fGameTime - g_fLastCmdUsed[ this ] < get_pcvar_float( g_fPcvarBlindDur ) )
{
zp_colored_print( this, "You Have To Wait ^4%..f ^3Seconds ^1To Use The Blind Ability", get_pcvar_float( g_fPcvarBlindDur ) - (fGameTime - g_fLastCmdUsed[ this ] ) )
return false;
}
g_fLastCmdUsed[ this ] = fGameTime
BlindPlayer( this )
ControlSkills( this, 0 )
return true;
}
public BlindPlayer( this )
{
static Float:fOrigin[3], fTarget
pev( this, pev_origin, fOrigin )
Effect_Ring( fOrigin )
fTarget = -1
while( ( fTarget = find_ent_in_sphere( fTarget, fOrigin, BLIND_ATTACK_RADIUS ) ) != 0 )
{
if( is_user_connected( fTarget ) && is_user_alive( fTarget ) && !zp_core_is_zombie( fTarget ) )
{
UTIL_ScreenFade( fTarget, get_pcvar_float( g_fPcvarBlindTime ), 64, 64, 64, 255 )
}
}
}
public te_spray( args[ ] )
{
message_begin( MSG_BROADCAST,SVC_TEMPENTITY )
write_byte( 120 ) // Throws a shower of sprites or models
write_coord( args[ 0 ] ) // start pos
write_coord( args[ 1 ] )
write_coord( args[ 2 ] )
write_coord( args[ 3 ] ) // velocity
write_coord( args[ 4 ] )
write_coord( args[ 5 ] )
write_short( g_fFrostSprite ) // spr
write_byte( 8 ) // count
write_byte( 70 ) // speed
write_byte( 100 ) //(noise)
write_byte( 5 ) // (rendermode)
message_end( )
return PLUGIN_CONTINUE
}
public sqrt( num )
{
new div = num
new result = 1
while( div > result )
{
div = ( div + result ) / 2
result = num / div
}
return div
}
public sprite_control( player )
{
new vec[ 3 ]
new aimvec[ 3 ]
new velocityvec[ 3 ]
new length
new speed = 10
get_user_origin( player, vec )
get_user_origin( player, aimvec, 2 )
velocityvec[ 0 ] = aimvec[ 0 ] - vec[ 0 ]
velocityvec[ 1 ] = aimvec[ 1 ] - vec[ 1 ]
velocityvec[ 2 ] = aimvec[ 2 ] - vec[ 2 ]
length = sqrt( velocityvec[ 0 ] * velocityvec[ 0 ] + velocityvec[ 1 ] * velocityvec[ 1 ] + velocityvec[ 2 ] * velocityvec[ 2 ] )
velocityvec[ 0 ] = velocityvec[ 0 ] * speed / length
velocityvec[ 1 ] = velocityvec[ 1 ] * speed / length
velocityvec[ 2 ] = velocityvec[ 2 ] * speed / length
new args[ 8 ]
args[ 0 ] = vec[ 0 ]
args[ 1 ] = vec[ 1 ]
args[ 2 ] = vec[ 2 ]
args[ 3 ] = velocityvec[ 0 ]
args[ 4 ] = velocityvec[ 1 ]
args[ 5 ] = velocityvec[ 2 ]
set_task( 0.1, "te_spray", 0, args, 8, "a", 2 )
}
public FreezePlayer( this )
{
if( is_user_alive( this ) )
{
#if defined NEW_GRENADE_FROST
zp_grenade_frost_set( this, true, get_pcvar_float( g_fPcvar_FreezeTime ) )
#else
zp_grenade_frost_set( this, true )
set_task( get_pcvar_float( g_fPcvar_FreezeTime ), "RemoveFreeze", this )
#endif
}
}
public RemoveFreeze( this )
{
if( is_user_alive( this ) )
{
if( zp_grenade_frost_get( this ) )
{
zp_grenade_frost_set( this, false )
}
}
}
public ControlSkills( this, mode )
{
if( !mode )
{
g_fSkill1[ this ] = true
g_fSkill2[ this ] = false
}
else
{
g_fSkill1[ this ] = false
g_fSkill2[ this ] = true
}
}
public native_class_predator_get(plugin_id, num_params)
{
new id = get_param(1)
if (!is_user_connected(id))
{
log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
return -1;
}
return flag_get_boolean(g_IsPredator, id);
}
public native_class_predator_set(plugin_id, num_params)
{
new id = get_param(1)
if (!is_user_alive(id))
{
log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
return false;
}
if (flag_get(g_IsPredator, id))
{
log_error(AMX_ERR_NATIVE, "[ZP] Player already a nemesis (%d)", id)
return false;
}
flag_set(g_IsPredator, id)
zp_core_force_infect(id)
return true;
}
public native_class_predator_get_count(plugin_id, num_params)
{
return GetPredatorCount();
}
// Predator aura task
public predator_aura(taskid)
{
// Get player's origin
static origin[3]
get_user_origin(ID_AURA, origin)
// Colored Aura
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_DLIGHT) // TE id
write_coord(origin[0]) // x
write_coord(origin[1]) // y
write_coord(origin[2]) // z
write_byte(20) // radius
write_byte(get_pcvar_num(cvar_predator_aura_color_R)) // r
write_byte(get_pcvar_num(cvar_predator_aura_color_G)) // g
write_byte(get_pcvar_num(cvar_predator_aura_color_B)) // b
write_byte(2) // life
write_byte(0) // decay rate
message_end()
}
// Remade Of Default Stock ScreenFade
UTIL_ScreenFade( this, Float:g_fDuration, g_fRed, g_fGreen, g_fBlue, g_fAlpha )
{
new pPlayer = this ? this : g_MaxPlayers;
if( !pPlayer )
{
return 0;
}
message_begin( this ? MSG_ONE : MSG_ALL, g_fMsgScreenFade, { 0, 0, 0 }, this );
{
write_short( floatround( 4096.0 * g_fDuration, floatround_round ) );
write_short( floatround( 4096.0 * g_fDuration, floatround_round ) );
write_short( 4096 );
write_byte( clamp( g_fRed, 0, 255 ) );
write_byte( clamp( g_fGreen, 0, 255 ) );
write_byte( clamp( g_fBlue, 0, 255 ) );
write_byte( clamp( g_fAlpha, 0, 255 ) );
}
message_end( );
return 1;
}
// Get Alive Count -returns alive players number-
GetAliveCount()
{
new iAlive, id
for (id = 1; id <= g_MaxPlayers; id++)
{
if (is_user_alive(id))
iAlive++
}
return iAlive;
}
// Get Predator Count -returns alive predator number-
GetPredatorCount()
{
new iPredator, id
for (id = 1; id <= g_MaxPlayers; id++)
{
if (is_user_alive(id) && flag_get(g_IsPredator, id))
iPredator++
}
return iPredator;
}