this plugin is for base builder 6.5 by Tirant. original one is made by Tirant i used his plugin and added new zombies + powers. plugin is not fully written by me i combined codes from other plugins and made this. there might be some unnecessary parts in it but it works fine 0 error.
4th class tanker have 300 armor he glow blue while he have armor when he get 0 armor left his glow dissapear
5th class hair it have invisibility for first 20 seconds when it gets respawned. (not completly invisible but very hard to see)
6th class frost can freeze builder when you aim builder and use mouse2 button when builder is frozen he cant shoot or move freeze duration is 3.7 sec and ability cooldown 30 sec ( you can use it in every 30 sec) this cvars can be changed
7th class alien it can regenerate hp when it get damage it regenerates 40hp/sec max regeneration = 2000hp while regenerating he glow green
8th class hunter it have 4000hp and activates godmode for 1.6 sec when it get 1000hp damage in total 3 times = 4.8 sec godmode while he have godmode he glow orange
9th class prohunter it have shield with 250 armor points while he have shield he glow white he wont take damage until he have shield active shield duration is 30 sec you can destroy shield by shooting when shield is deactivated zm take normal damage shield = 250 armor points when armor hits 0 points shield is deactivated
PHP Code:
/*================================================================================
-----------------------------------
-*- [BB] Default Zombie Classes -*-
-----------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
This plugin adds the default zombie classes from Zombie Plague
into Base Builder. All credit belongs to MeRcyLeZZ.
All classes have been balanced, but feel free to edit them if
you are not satisfied.
================================================================================*/
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <basebuilder>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <fakemeta_util>
#define is_user_frozen(%1) bFrozen[%1]
/*================================================================================
[Plugin Customization]
=================================================================================*/
// Classic Zombie Attributes
new const zclass1_name[] = { "Classic Zombie" }
new const zclass1_info[] = { "\r| \dNo Power \r(Free)" }
new const zclass1_model[] = { "classicpk" }
new const zclass1_clawmodel[] = { "v_classicpk" }
const zclass1_health = 3500
const zclass1_speed = 280
const Float:zclass1_gravity = 0.85
const zclass1_adminflags = ADMIN_ALL
// Fast Zombie Attributes
new const zclass2_name[] = { "Fast Zombie" }
new const zclass2_info[] = { "\r| \dNo Power \r(Free)" }
new const zclass2_model[] = { "fastpk" }
new const zclass2_clawmodel[] = { "v_fastpk" }
const zclass2_health = 2400
const zclass2_speed = 420
const Float:zclass2_gravity = 1.0
const zclass2_adminflags = ADMIN_ALL
// Jumper Zombie Attributes
new const zclass3_name[] = { "Jumper Zombie" }
new const zclass3_info[] = { "\r| \dNo Power \r(Free)" }
new const zclass3_model[] = { "jumperpk" }
new const zclass3_clawmodel[] = { "v_jumperpk" }
const zclass3_health = 3000
const zclass3_speed = 260
const Float:zclass3_gravity = 0.5
const zclass3_adminflags = ADMIN_ALL
// Tanker Zombie Attributes
new const zclass4_name[] = { "Tanker Zombie" }
new const zclass4_info[] = { "\r| \yTank Armor \r(Free)" }
new const zclass4_model[] = { "tankerpk" }
new const zclass4_clawmodel[] = { "v_tankerpk" }
const zclass4_health = 4200
const zclass4_speed = 220
const Float:zclass4_gravity = 1.0
const zclass4_adminflags = ADMIN_ALL
// Jockey Zombie Attributes
new const zclass5_name[] = { "Hair Zombie" }
new const zclass5_info[] = { "\r| \yInvisible \r(VIP)" }
new const zclass5_model[] = { "hairpk" }
new const zclass5_clawmodel[] = { "v_hairpk" }
const zclass5_health = 3800
const zclass5_speed = 270
const Float:zclass5_gravity = 0.7
const zclass5_adminflags = ADMIN_LEVEL_H
// Agent-1 Zombie Attributes
new const zclass6_name[] = { "Frost Zombie" }
new const zclass6_info[] = { "\r| \yFreeze CT \r(Test Admin)" }
new const zclass6_model[] = { "frostpk" }
new const zclass6_clawmodel[] = { "v_frostpk" }
const zclass6_health = 3500
const zclass6_speed = 320
const Float:zclass6_gravity = 1.0
const zclass6_adminflags = ADMIN_VOTE
// Agent-2 Zombie Attributes
new const zclass7_name[] = { "Alien Zombie" }
new const zclass7_info[] = { "\r| \yRegenerator \r(Admin)" }
new const zclass7_model[] = { "alienpk2" }
new const zclass7_clawmodel[] = { "v_prohunterpk" }
const zclass7_health = 2000
const zclass7_speed = 440
const Float:zclass7_gravity = 0.5
const zclass7_adminflags = ADMIN_KICK
// Lysing Zombie Attributes
new const zclass8_name[] = { "Hunter Zombie" }
new const zclass8_info[] = { "\r| \yInvincible \r(Full Admin)" }
new const zclass8_model[] = { "hunterpk" }
new const zclass8_clawmodel[] = { "v_hunterpk" }
const zclass8_health = 4000
const zclass8_speed = 285
const Float:zclass8_gravity = 0.9
const zclass8_adminflags = ADMIN_BAN
// Wolf Zombie Attributes
new const zclass9_name[] = { "ProHunter Zombie" }
new const zclass9_info[] = { "\r| \yShield \r(Head Admin)" }
new const zclass9_model[] = { "spiderpk" }
new const zclass9_clawmodel[] = { "v_spiderpk" }
const zclass9_health = 4500
const zclass9_speed = 265
const Float:zclass9_gravity = 0.6
const zclass9_adminflags = ADMIN_CFG
#define HUNTER 1
#define REGENERATOR 25
#define TANK_ARMOR 300
/*============================================================================*/
new beamSpr, freezer_spr
new pcvar_distance
new cvar_cooldown
new pcvar_freeze
new g_zclass_tanker
new g_zclass_alien
new g_zclass_hunter
new g_freezer
new g_hair
new g_spider
new g_maxplayers
new is_cooldown[33] = 0
new bool:g_cd[33]
new cvar_nemesis
new Countdown[33]
new bool:bFrozen[33]
new Float:iAngles[33][3]
const iVictim = 2
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
register_plugin("[BB] Default Zombie Classes", "6.5", "Tirant")
beamSpr = precache_model("sprites/lgtning.spr")
freezer_spr = precache_model("sprites/freezer_exp.spr")
// Register all classes
bb_register_zombie_class(zclass1_name, zclass1_info, zclass1_model, zclass1_clawmodel, zclass1_health, zclass1_speed, zclass1_gravity, 0.0, zclass1_adminflags)
bb_register_zombie_class(zclass2_name, zclass2_info, zclass2_model, zclass2_clawmodel, zclass2_health, zclass2_speed, zclass2_gravity, 0.0, zclass2_adminflags)
bb_register_zombie_class(zclass3_name, zclass3_info, zclass3_model, zclass3_clawmodel, zclass3_health, zclass3_speed, zclass3_gravity, 0.0, zclass3_adminflags)
g_zclass_tanker = bb_register_zombie_class(zclass4_name, zclass4_info, zclass4_model, zclass4_clawmodel, zclass4_health, zclass4_speed, zclass4_gravity, 0.0, zclass4_adminflags)
g_hair = bb_register_zombie_class(zclass5_name, zclass5_info, zclass5_model, zclass5_clawmodel, zclass5_health, zclass5_speed, zclass5_gravity, 0.0, zclass5_adminflags)
g_freezer = bb_register_zombie_class(zclass6_name, zclass6_info, zclass6_model, zclass6_clawmodel, zclass6_health, zclass6_speed, zclass6_gravity, 0.0, zclass6_adminflags)
g_zclass_alien = bb_register_zombie_class(zclass7_name, zclass7_info, zclass7_model, zclass7_clawmodel, zclass7_health, zclass7_speed, zclass7_gravity, 0.0, zclass7_adminflags)
g_zclass_hunter = bb_register_zombie_class(zclass8_name, zclass8_info, zclass8_model, zclass8_clawmodel, zclass8_health, zclass8_speed, zclass8_gravity, 0.0, zclass8_adminflags)
g_spider = bb_register_zombie_class(zclass9_name, zclass9_info, zclass9_model, zclass9_clawmodel, zclass9_health, zclass9_speed, zclass9_gravity, 0.0, zclass9_adminflags)
}
#if defined REGENERATOR
public plugin_init()
{
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post2", 1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post3", 1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post5", 1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post6", 1)
pcvar_distance = register_cvar ( "bb_frost_distancex", "1000" )
cvar_cooldown = register_cvar("bb_frost_shot_cooldownx","30.0")
pcvar_freeze = register_cvar( "bb_frost_freeze_time", "3.7" )
cvar_nemesis = register_cvar("bb_frost_nemesisx", "1")
g_maxplayers = get_maxplayers()
register_logevent("roundStart", 2, "1=Round_Start")
register_forward(FM_CmdStart, "fwd_cmd_start")
RegisterHam(Ham_Spawn,"player","fw_PlayerSpawn_Post",1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post4", 1)
register_event( "DeathMsg" , "eventDeathMsg" , "a" );
register_logevent( "eventRoundEnd" , 2 , "1=Round_End" );
}
public ham_PlayerSpawn_Post6(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_spider)
{
remove_task(id),
give_item(id, "item_assaultsuit"),
set_user_armor(id, 250),
set_user_rendering(id,kRenderFxGlowShell,255,255,255,kRenderNormal,25),
set_task(0.02, "regen2", id, .flags = "b"),
set_task(0.1, "destroy", id, .flags = "b"),
set_task(30.0, "destroy2", id, .flags = "b")
}
}
public regen2(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_spider)
set_user_health(id, 4500)
}
public destroy(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_spider && get_user_armor(id) < 1)
remove_task(id),
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
}
public destroy2(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_spider)
set_user_armor(id, 0)
}
public ham_PlayerSpawn_Post2(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_alien)
{
remove_task(id),
set_task(0.5, "regen", id, .flags = "b")
}
}
public regen(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_alien && get_user_health(id) < 2000)
set_user_health(id, get_user_health(id) + 20),
set_user_rendering(id,kRenderFxGlowShell,0,255,0,kRenderNormal,25)
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_alien && get_user_health(id) > 1999)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
}
#endif
#if defined HUNTER
public ham_PlayerSpawn_Post3(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_hunter)
{
remove_task(id),
set_task(0.1, "godmode", id, .flags = "b")
}
}
public godmode(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_hunter && get_user_health(id) < 3000)
remove_task(id),
set_user_godmode(id, 1),
set_user_rendering(id,kRenderFxGlowShell,255,150,38,kRenderNormal,25),
set_task(0.1, "godmode2", id, .flags = "b"),
set_task(1.6, "rgodmode", id)
}
public godmode2(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_hunter && get_user_health(id) < 2000)
remove_task(id),
set_user_godmode(id, 1),
set_user_rendering(id,kRenderFxGlowShell,255,150,38,kRenderNormal,25),
set_task(0.1, "godmode3", id, .flags = "b"),
set_task(1.6, "rgodmode", id)
}
public godmode3(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_hunter && get_user_health(id) < 1000)
remove_task(id),
set_user_godmode(id, 1),
set_user_rendering(id,kRenderFxGlowShell,255,150,38,kRenderNormal,25),
set_task(1.6, "rgodmode", id)
}
public rgodmode(id)
{
if(bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_hunter)
set_user_godmode(id, 0),
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
}
#endif
public fw_PlayerSpawn_Post(id)
{
// Not alive...
if(!is_user_alive(id))
return HAM_IGNORED
if(cvar_nemesis == 1)
{
if(bb_get_user_zombie_class(id) == g_freezer && bb_is_user_zombie(id))
{
g_cd[id] = true
}
} else {
if(bb_get_user_zombie_class(id) == g_freezer && bb_is_user_zombie(id))
{
g_cd[id] = true
}
}
return HAM_IGNORED
}
public fwd_cmd_start(id, uc_handle, seed)
{
if(cvar_nemesis == 1)
{
if (!is_user_alive(id) || !bb_is_user_zombie(id) || g_cd[id] )
return FMRES_IGNORED
} else {
if (!is_user_alive(id) || !bb_is_user_zombie(id) || g_cd[id] )
return FMRES_IGNORED
}
if (bb_get_user_zombie_class(id) != g_freezer)
return FMRES_IGNORED
static buttons
buttons = get_uc(uc_handle, UC_Buttons)
if(buttons & IN_ATTACK2) {
cmd_freez(id)
g_cd[id] = true
}
buttons &= ~IN_ATTACK2
set_uc(uc_handle, UC_Buttons, buttons)
return FMRES_HANDLED
}
cmd_freez(id)
{
new target, body
static Float:start[3]
static Float:aim[3]
pev(id, pev_origin, start)
fm_get_aim_origin(id, aim)
start[2] += 16.0; // raise
aim[2] += 16.0; // raise
get_user_aiming ( id, target, body, pcvar_distance )
if( is_user_alive( target ) && !bb_is_user_zombie( target ))
{
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, aim[0])
engfunc(EngFunc_WriteCoord, aim[1])
engfunc(EngFunc_WriteCoord, aim[2])
write_short(freezer_spr)
write_byte(10)
write_byte(30)
write_byte(4)
message_end()
Freeze(target)
set_task( get_pcvar_float( pcvar_freeze ), "UnFreeze", target )
}
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(0)
engfunc(EngFunc_WriteCoord,start[0]);
engfunc(EngFunc_WriteCoord,start[1]);
engfunc(EngFunc_WriteCoord,start[2]);
engfunc(EngFunc_WriteCoord,aim[0]);
engfunc(EngFunc_WriteCoord,aim[1]);
engfunc(EngFunc_WriteCoord,aim[2]);
write_short(beamSpr); // sprite index
write_byte(0); // start frame
write_byte(10); // frame rate in 0.1's
write_byte(10); // life in 0.1's
write_byte(100); // line width in 0.1's
write_byte(4); // noise amplititude in 0.01's
write_byte(100); // red
write_byte(149); // green
write_byte(237); // blue
write_byte(100); // brightness
write_byte(50); // scroll speed in 0.1's
message_end();
set_task( get_pcvar_float( cvar_cooldown ), "reset_cooldown2", id );
set_task( 1.0, "CountDown1", id, _, _, "a",Countdown [ id ] );
Countdown [ id ] = get_pcvar_num( cvar_cooldown )
}
public ham_PlayerSpawn_Post4(id, infector)
{
if (bb_get_user_zombie_class(id) == g_freezer)
{
is_cooldown[id] = 0
g_cd[id] = false
}
}
public reset_cooldown2(id)
{
g_cd[id] = false
}
public zp_user_humanized_post(id)
{
remove_task(id)
is_cooldown[id] = 0
}
public roundStart()
{
for (new i = 1; i <= g_maxplayers; i++)
{
Countdown [ i ] = get_pcvar_num( cvar_cooldown )
is_cooldown[i] = 0
remove_task(i)
}
}
stock Freeze(id)
{
new iFlags = pev( id , pev_flags );
if( ~iFlags & FL_FROZEN )
{
set_pev( id , pev_flags , iFlags | FL_FROZEN );
pev( id , pev_v_angle , iAngles[ id ] );
set_user_rendering( id , kRenderFxGlowShell , 0 , 100 , 200 , kRenderNormal , 16 );
}
bFrozen[ id ] = true;
}
public eventDeathMsg( )
{
UnFreeze( read_data( iVictim ) );
}
public eventRoundEnd( )
{
new iPlayers[ 32 ] , iNum , i , id;
get_players( iPlayers , iNum , "a" );
for( i = 0; i < iNum; i++ )
{
id = iPlayers[ i ];
if( is_user_frozen( id ) )
{
UnFreeze( id );
}
}
}
public UnFreeze(id)
{
new frozenCount = 0;
bFrozen[ id ] = false;
new iFlags = pev( id , pev_flags ) ;
if( iFlags & FL_FROZEN )
{
set_pev( id , pev_flags , iFlags & ~FL_FROZEN ) ;
set_user_rendering( id , kRenderFxNone , 0 , 0 , 0 , kRenderNormal , 0 );
new iPlayers[ 32 ] , iNum , i , tid;
get_players( iPlayers , iNum , "a" );
for( i = 0; i < iNum; i++ )
{
tid = iPlayers[ i ];
if( is_user_frozen( tid ) )
{
frozenCount++;
}
}
}
}
public CountDown1(id) {
if(is_valid_ent(id) && is_user_alive(id) && bb_get_user_zombie_class(id) == g_freezer && bb_is_user_zombie(id))
{
Countdown [ id ] = Countdown [ id ] - 1;
set_hudmessage(251, 165, 87, -1.0, 0.9, 0, 12.0, 12.0, 0.1, 0.2, 4)
show_hudmessage(id, "[ Freeze Ability Cooldown: %d ]",Countdown [ id ])
}else{
remove_task(id)
}
}
#if defined TANK_ARMOR
public ham_PlayerSpawn_Post(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_tanker)
{
remove_task(id),
give_item(id, "item_assaultsuit"),
cs_set_user_armor(id, 300, CS_ARMOR_VESTHELM),
set_user_rendering(id,kRenderFxGlowShell,0,230,230,kRenderNormal,25),
set_task(0.1, "armor", id, .flags = "b")
}
}
#endif
public armor(id)
{
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_tanker && get_user_armor(id) < 1)
remove_task(id),
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
}
public ham_PlayerSpawn_Post5(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_hair)
{
remove_task(id),
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 5),
set_task(20.0, "visible", id)
}
}
public visible(id)
{
fm_set_user_rendering(id, kRenderFxNone, 255, 255, 255, kRenderTransTexture, 255)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/