Untitled diff

Created Diff never expires
/*
---------------------------------------------------------
# # # #=== ### ## #
# ## #=== # # # #
# # #=== ### ## #
---------------------------------------------------------
<VeCo>'s Zombie BaseBuilder Mod 4.3

Special thanks to:
- carbonated : for ideas and testing and reset_unlocks_tool.
- PornStar : for the idea for vzbb_block_weapon_drop CVAR.
- koyot- : for the idea for bonus credits for
humans'/zombies' win and other.
- pacoX : for ideas.
- MusiC : for ideas.
- DJ Alex : for ideas and testing.
- 3emu : for ideas.
- zNxx-_-Sm0k3 : for testing.
- HoBaK : for ideas and testing.

If you modify the code, please DO NOT change the author!
---------------------------------------------------------
Contacts:
e-mail: veco.kn@gmail.com
skype: veco_kn
---------------------------------------------------------
Changes log:
-> v 1.0 = First release!
-> v 1.1 = Added CVAR vzbb_barrier_alpha.
Fixed admin block moving of claimed blocks.
Added CVAR vzbb_zombie_class_select_time.
Added customizable win sounds.
-> v 1.2 = Fixed respawn and client command bugs.
-> v 1.3 = Fixed respawn and client command bugs. (again)
-> v 1.4 = Fixed bugs with credit reward for humans.
-> v 1.5 = Blocked teamchange and kill command.
-> v 1.6 = Fixed executing classic zombie's CVARs.
Added icons when you are burning or you are
frozen.
Changed first respawn after connect.
Fixed a lot of critical bugs.
-> v 1.7 = Blocked respawn commands for spectators.
-> v 1.8 = Fixed executing configs in Linux.
Fixed bug when you are moving block and disconnect.
-> v 2.0 = Fixed bug with the secondary weapon menu.
Changed the method of model change for reducing
the crashes.
Added customizable human models.
Removed unneccessary code.
-> v 2.1 = Fixed client command bug.
Fixed bug with the UNDEAD achievement.
-> v 2.2 = Fixed bug with the achievements.
-> v 2.3 = Fixed bug with the regeneration upgrade.
Added CVAR cvar_push_remove.
The build phase timer now shows minutes and
seconds (not only seconds).
Zombies can't take shields from the ground.
-> v 2.4 = SQL defines are now CVARs.
Added CVAR vzbb_block_weapon_drop.
Fixed twice calling bug in round_end.
Admin Zombies can see claimers of the blocks.
-> v 2.5 = Fixed bug with the rendering restore after removing
freeze.
Optimized achievement code.
Zombies can't infect or kill in the build phase.
-> v 2.6 = Added better code for blocking the damage during
freezetime/round end and Build phase.
When a zombie touches a block in the Build phase,
the block will be reseted.
Added bonus credits for humans'/zombies' win.
Added instant auto heal on humans in the Build phase.
-> v 2.7 = Added /guns command.
Now spectator admins can move blocks too.
Fixed bug with spectator team transfer.
Optimized SQL load/save code.
Added CVAR vzbb_credits_win_min_players.
-> v 2.7.fixed = The old SQL load/save code have
been back again.
-> v 2.7.fixed.2 = Fixed SQL get_user_name error. (lol :d)
-> v 2.8 = Added CVAR vzbb_hurt_remove.
Added VZBB Map Repair System for fixing the maps
where there is no barrier (like bb_icewar)
and added vzbb_mrs_addent command for it.
Fixed team transfer bug. (yeah, at last! :^) )
-> v 2.9 = Added HUMILIATION achievement.
Added BIG BANG achievement.
Fixed bug with the regeneration.
Added vzbb_grenade_give_chance CVARs.
Changed functions of vzbb_weapons_start_grenade CVARs.
Big variable optimization.
Added Scan Grenade instead of Smoke Grenade
and CVARs for it (vzbb_grenade_scan CVARs).
Expanded data save string sizes.
Added new VZBB item - ScanNade and CVAR for it.
Added vzbb_sql_update SQL command for updating
the row sizes from version 2.8- to 2.9.
-> v 2.9.fixed = Added limitations in the save data code.
-> v 2.9.fixed.2 = Fixed SQL saving.
-> v 3.0 = Added zombie item support and items for the
zombies.
Removed unneccessary code.
Added vzbb_grenade_counter CVAR.
Added vzbb_grenade_scan_sound CVAR.
Zombies must first reduce the humans' armor to 0
in order to infect them.
Changed FireNade damage code.
Now vzbb_grenade_fire_duration CVAR will work
for burn times.
Now the item menu will not close when you buy an item.
Fixed invisibility bugs.
Changed block render code.
Added VZBB Fun Mode and CVARs for it.
-> v 3.1 = Fixed user_uninfect native.
Fixed item buying.
Added random color option in the /color command.
Changed some code.
Fixed remove money code.
-> v 3.2 = Changed some code.
Fixed bug in block_teamchange function.
-> v 3.3 = Changes some code.
Fixed random sound and random model set codes.
Fixed sniper zoom infect bug.
Fixed entity check in fun mode code.
Fixed cs_get_user_team runtime error in hook_say.
-> v 3.4 = Added admin logging in /lock, /unclaim and /start commands.
Fixed get_total_zombie_classes and get_total_shop_items
natives.
Removed second default human win sound (it was loop sound).
Added "Round Deal" and command (/deal), CVARs for it.
Added vzbb_grenade_frost_cool* CVARs.
-> v 3.5 = Fixed bug with frost grenade explosion.
Optimized admin give/take and revive commands.
Fixed bug with player rendering.
Fixed Round Deal info message.
Changed Item Buy System to work properly with Round Deal.
-> v 3.6 = Changed some code.
Fixed start grenade CVARs.
Fixed respawn command.
Added reason in build ban message.
-> v 3.7 = Added mp3 support for win sounds.
Fixed error on primary attack.
Added cvar_credit_limit CVAR.
-> v 3.8 = Fixed set_user_block_ent native.
Changed set speed code.
Added function to make a specific zombie class
or item available only for players with specific
admin access.
Added admin /claim command.
Changed some code.
Added ability to block some custom forwards.
-> v 3.9 = Optimized code.
Fixed bug with speed.
Now /claim command works only on unclaimed blocks.
Fixed user infect.
Fixed bug with fire and freeze grenades.
@ALL in admin give/take credit commands changed to @A.
Changed and fixed admin give/take credit commands code.
-> v 3.9.fixed = Changed some code.
-> v 3.9.fixed.2 = Fixed bug with custom grenades.
-> v 4.0 = Now, you can disable an upgrade by setting the value 0
of one of it's CVARs.
Changed Item Buy System for easier and more reliable work.
Added function to allow specific items to be bought only
specific times per round.
Fixed user_infect native.
-> v 4.0.fixed = Fixed bug with upgrades.
-> v 4.1 = Fixed typo in the armor HUD message.
Added GREEN (regenerating) fun block and CVAR for it.
-> v 4.2 = Fixed fun block types array size.
Added define for enabling better SQL chars escape.
Removed useless sql_update_28_29 command.
-> v 4.3 = Fixed block moving with BattleBuild after being infected.
---------------------------------------------------------
Don't forget to visit http://www.amxmodxbg.org :)
---------------------------------------------------------
*/

#include <amxmodx>
#include <amxmodx>
#include <amxmisc>
#include <amxmisc>
#include <fun>
#include <fun>
#include <engine>
#include <engine>
#include <cstrike>
#include <cstrike>
#include <fakemeta>
#include <fakemeta>
#include <hamsandwich>
#include <hamsandwich>


#define SQL
//#define SQL


#if !defined SQL
#if !defined SQL
#include <nvault>
#include <nvault>
#else
#else
#include <sqlx>
#include <sqlx>


//#define NEW_CHAR_ESCAPE
//#define NEW_CHAR_ESCAPE
/* uncommend the previous line to enable better SQL character escape that doesn't replace
/* uncommend the previous line to enable better SQL character escape that doesn't replace
symbols with numbers in players' names (all previous data saves will not be loaded!) */
symbols with numbers in players' names (all previous data saves will not be loaded!) */
#endif
#endif


#define ADMIN_BLOCK_MOVE_BATTLE ADMIN_CFG // access level for moving blocks in the battle phase
#define ADMIN_BLOCK_MOVE_BATTLE ADMIN_CFG // access level for moving blocks in the battle phase
#define ADMIN_BLOCK_LOCK ADMIN_KICK // access level for /lock command
#define ADMIN_BLOCK_LOCK ADMIN_KICK // access level for /lock command
#define ADMIN_BLOCK_UNCLAIM ADMIN_SLAY // access level for /unclaim command
#define ADMIN_BLOCK_UNCLAIM ADMIN_SLAY // access level for /unclaim command
#define ADMIN_BLOCK_CLAIM ADMIN_SLAY // access level for /claim command
#define ADMIN_BLOCK_CLAIM ADMIN_SLAY // access level for /claim command
#define ADMIN_START ADMIN_RESERVATION // access level for /start command
#define ADMIN_START ADMIN_RESERVATION // access level for /start command
#define ADMIN_GIVE_CREDIT ADMIN_IMMUNITY // access level for vzbb_give command
#define ADMIN_GIVE_CREDIT ADMIN_IMMUNITY // access level for vzbb_give command
#define ADMIN_TAKE_CREDIT ADMIN_RCON // access level for vzbb_take command
#define ADMIN_TAKE_CREDIT ADMIN_RCON // access level for vzbb_take command


#define MAX_BLOCKS 250
#define MAX_BLOCKS 250


/*
/*
iuser1 - is locked by an admin?
iuser1 - is locked by an admin?
iuser2 - is being moved?
iuser2 - is being moved?
iuser3 - claimed by?
iuser3 - claimed by?
iuser4 - owner?
iuser4 - owner?


fuser1 - render mode?
fuser1 - render mode?
fuser2 - render amount?
fuser2 - render amount?
fuser3 - block type?
fuser3 - block type?
*/
*/


#define FORWARD_CONTINUE 777 // do not edit or you won't have any luck in lifetime!
#define FORWARD_CONTINUE 777 // do not edit or you won't have any luck in lifetime!


#define TASK_BURN 7000
#define TASK_BURN 7000
#define TASK_FREEZE 8000
#define TASK_FREEZE 8000
#define TASK_FREEZE_COOL 10000
#define TASK_FREEZE_COOL 10000
#define TASK_BUILD_TIME_COUNTER 2000
#define TASK_BUILD_TIME_COUNTER 2000
#define TASK_USER_HUD_DATA 4000
#define TASK_USER_HUD_DATA 4000
#define TASK_ZCLASS_SELECT 6000
#define TASK_ZCLASS_SELECT 6000
#define TASK_BRESPAWN_REUSE 9000
#define TASK_BRESPAWN_REUSE 9000


/*START - From colorchat.inc by Numb */
enum Color {
enum Color {
NORMAL = 1,
NORMAL = 1,
GREEN,
GREEN,
TEAM_COLOR,
TEAM_COLOR,
GREY,
GREY,
RED,
RED,
BLUE,
BLUE,
}
}


new TeamName[][] = {
new TeamName[][] = {
"",
"",
"TERRORIST",
"TERRORIST",
"CT",
"CT",
"SPECTATOR"
"SPECTATOR"
}
}
/*END - From colorchat.inc by Numb */


new const name_weapons[][] =
new const name_weapons[][] =
{
{
"",
"",
"weapon_glock18",
"weapon_glock18",
"weapon_usp",
"weapon_usp",
"weapon_p228",
"weapon_p228",
"weapon_deagle",
"weapon_deagle",
"weapon_fiveseven",
"weapon_fiveseven",
"weapon_elite",
"weapon_elite",
"weapon_galil",
"weapon_galil",
"weapon_m4a1",
"weapon_m4a1",
"weapon_mp5navy",
"weapon_mp5navy",
"weapon_famas",
"weapon_famas",
"weapon_ak47",
"weapon_ak47",
"weapon_sg552",
"weapon_sg552",
"weapon_aug",
"weapon_aug",
"weapon_tmp",
"weapon_tmp",
"weapon_ump45",
"weapon_ump45",
"weapon_mac10",
"weapon_mac10",
"weapon_p90",
"weapon_p90",
"weapon_scout",
"weapon_scout",
"weapon_m3",
"weapon_m3",
"weapon_xm1014",
"weapon_xm1014",
"weapon_sg550",
"weapon_sg550",
"weapon_g3sg1",
"weapon_g3sg1",
"weapon_awp",
"weapon_awp",
"weapon_m249"
"weapon_m249"
}
}


new const csw_weapons[] =
new const csw_weapons[] =
{
{
0,
0,
CSW_GLOCK18,
CSW_GLOCK18,
CSW_USP,
CSW_USP,
CSW_P228,
CSW_P228,
CSW_DEAGLE,
CSW_DEAGLE,
CSW_FIVESEVEN,
CSW_FIVESEVEN,
CSW_ELITE,
CSW_ELITE,
CSW_GALIL,
CSW_GALIL,
CSW_M4A1,
CSW_M4A1,
CSW_MP5NAVY,
CSW_MP5NAVY,
CSW_FAMAS,
CSW_FAMAS,
CSW_AK47,
CSW_AK47,
CSW_SG552,
CSW_SG552,
CSW_AUG,
CSW_AUG,
CSW_TMP,
CSW_TMP,
CSW_UMP45,
CSW_UMP45,
CSW_MAC10,
CSW_MAC10,
CSW_P90,
CSW_P90,
CSW_SCOUT,
CSW_SCOUT,
CSW_M3,
CSW_M3,
CSW_XM1014,
CSW_XM1014,
CSW_SG550,
CSW_SG550,
CSW_G3SG1,
CSW_G3SG1,
CSW_AWP,
CSW_AWP,
CSW_M249
CSW_M249
}
}


enum _:ZOMBIE_CLASS_DATA
enum _:ZOMBIE_CLASS_DATA
{
{
ZOMBIE_NAME[32],
ZOMBIE_NAME[32],
ZOMBIE_INFO[32],
ZOMBIE_INFO[32],
ZOMBIE_MDL[128],
ZOMBIE_MDL[128],
ZOMBIE_CLAWMDL[128],
ZOMBIE_CLAWMDL[128],
ZOMBIE_HEALTH,
ZOMBIE_HEALTH,
Float:ZOMBIE_GRAVITY,
Float:ZOMBIE_GRAVITY,
Float:ZOMBIE_SPEED,
Float:ZOMBIE_SPEED,
ZOMBIE_ACCESS
ZOMBIE_ACCESS
}
}


enum _:SHOP_ITEM_DATA
enum _:SHOP_ITEM_DATA
{
{
ITEM_NAME[32],
ITEM_NAME[32],
ITEM_COST,
ITEM_COST,
ITEM_USE,
ITEM_USE,
ITEM_TEAM,
ITEM_TEAM,
ITEM_ACCESS,
ITEM_ACCESS,
ITEM_MAX,
ITEM_MAX,
ITEM_MAX_PRIVATE
ITEM_MAX_PRIVATE
}
}


enum
enum
{
{
ACH_BLOODPARTY = 0,
ACH_BLOODPARTY = 0,
ACH_GENOCIDE,
ACH_GENOCIDE,
ACH_FIREWORKS,
ACH_FIREWORKS,
ACH_ICEAGE,
ACH_ICEAGE,
ACH_BASEBUILDER,
ACH_BASEBUILDER,
ACH_UNDEAD,
ACH_UNDEAD,
ACH_SURVIVOR,
ACH_SURVIVOR,
ACH_UPGRADEME,
ACH_UPGRADEME,
ACH_UNLOCKERZ,
ACH_UNLOCKERZ,
ACH_BIOHAZARD,
ACH_BIOHAZARD,
ACH_HUMILIATION,
ACH_HUMILIATION,
ACH_BIGBANG,
ACH_BIGBANG,
MAX_ACH
MAX_ACH
}
}


enum
enum
{
{
ACH_LEVEL_WHITE = 1,
ACH_LEVEL_WHITE = 1,
ACH_LEVEL_YELLOW,
ACH_LEVEL_YELLOW,
ACH_LEVEL_RED,
ACH_LEVEL_RED,
MAX_ACH_LEVEL
MAX_ACH_LEVEL
}
}


new const ach_name[][] =
new const ach_name[][] =
{
{
"BLOOD PARTY",
"BLOOD PARTY",
"GENOCIDE",
"GENOCIDE",
"FIREWORKS",
"FIREWORKS",
"ICE AGE",
"ICE AGE",
"BASEBUILDER",
"BASEBUILDER",
"UNDEAD",
"UNDEAD",
"SURVIVOR",
"SURVIVOR",
"UPGRADE ME!",
"UPGRADE ME!",
"UNLOCKERZ",
"UNLOCKERZ",
"BIOHAZARD",
"BIOHAZARD",
"HUMILIATION",
"HUMILIATION",
"BIG BANG"
"BIG BANG"
}
}


new const ach_level_color[][] =
new const ach_level_color[][] =
{
{
"\d",
"\d",
"\w",
"\w",
"\y"
"\y"
}
}


new const ach_info1[][] =
new const ach_info1[][] =
{
{
"Kill ",
"Kill ",
"Kill ",
"Kill ",
"Burn ",
"Burn ",
"Freeze ",
"Freeze ",
"Move ",
"Move ",
"Respawn ",
"Respawn ",
"Survive ",
"Survive ",
"Buy ",
"Buy ",
"Unlock ",
"Unlock ",
"Infect ",
"Infect ",
"Kill ",
"Kill ",
"Kill "
"Kill "
}
}


new const ach_info2[][] =
new const ach_info2[][] =
{
{
" humans",
" humans",
" zombies",
" zombies",
" zombies at once",
" zombies at once",
" zombies at once",
" zombies at once",
" blocks",
" blocks",
" times",
" times",
" minutes as a human in the battle phase",
" minutes as a human in the battle phase",
" upgrades",
" upgrades",
" weapons",
" weapons",
" humans",
" humans",
" zombies with a knife",
" zombies with a knife",
" zombies with a fire grenade"
" zombies with a fire grenade"
}
}


enum
enum
{
{
UPGRADE_HEALTH = 0,
UPGRADE_HEALTH = 0,
UPGRADE_ARMOR,
UPGRADE_ARMOR,
UPGRADE_REGENERATION,
UPGRADE_REGENERATION,
UPGRADE_RECOIL,
UPGRADE_RECOIL,
UPGRADE_SPEED,
UPGRADE_SPEED,
UPGRADE_GRAVITY,
UPGRADE_GRAVITY,
UPGRADE_INVISIBILITY,
UPGRADE_INVISIBILITY,
MAX_UPGRADES
MAX_UPGRADES
}
}


new const upgrade_name[][] =
new const upgrade_name[][] =
{
{
"Health",
"Health",
"Armor",
"Armor",
"Regeneration",
"Regeneration",
"Recoil",
"Recoil",
"Speed",
"Speed",
"Gravity",
"Gravity",
"Invisibility"
"Invisibility"
}
}


new const sound_zombie_pain[][] =
new const sound_zombie_pain[][] =
{
{
"zombie_blood/pain1.wav",
"zombie_blood/pain1.wav",
"zombie_blood/pain2.wav",
"zombie_blood/pain2.wav",
"zombie_blood/pain3.wav",
"zombie_blood/pain3.wav",
"zombie_blood/pain4.wav"
"zombie_blood/pain4.wav"
}
}


new const sound_zombie_die[][] =
new const sound_zombie_die[][] =
{
{
"zombie_blood/die1.wav",
"zombie_blood/die1.wav",
"zombie_blood/die2.wav",
"zombie_blood/die2.wav",
"zombie_blood/die3.wav"
"zombie_blood/die3.wav"
}
}


new const sound_zombies_win[][] =
new const sound_zombies_win[][] =
{
{
"ambience/the_horror1.wav",
"ambience/the_horror1.wav",
"ambience/the_horror2.wav"
"ambience/the_horror2.wav"
}
}


new const sound_humans_win[][] =
new const sound_humans_win[][] =
{
{
"ambience/goal_1.wav"
"ambience/goal_1.wav"
}
}


new const human_models[][] =
new const human_models[][] =
{
{
"human1",
"arctic",
"human2",
"guerilla",
"human3",
"leet",
"human4",
"terror",
"human5",
"gign",
"human1",
"gsg9",
"human2",
"sas",
"human3"
"urban"
}
}


new const nade_names[][] =
new const nade_names[][] =
{
{
"weapon_hegrenade",
"weapon_hegrenade",
"weapon_flashbang",
"weapon_flashbang",
"weapon_smokegrenade"
"weapon_smokegrenade"
}
}


new const csw_nades[] =
new const csw_nades[] =
{
{
CSW_HEGRENADE,
CSW_HEGRENADE,
CSW_FLASHBANG,
CSW_FLASHBANG,
CSW_SMOKEGRENADE
CSW_SMOKEGRENADE
}
}


enum
enum
{
{
BLOCKS_NORMAL = 0,
BLOCKS_NORMAL = 0,
BLOCKS_YELLOW,
BLOCKS_YELLOW,
BLOCKS_BLACK,
BLOCKS_BLACK,
BLOCKS_BLUE,
BLOCKS_BLUE,
BLOCKS_RED,
BLOCKS_RED,
BLOCKS_GREEN,
BLOCKS_GREEN,
MAX_BLOCKTYPES
MAX_BLOCKTYPES
}
}


new const Float:fun_blocks_colors[][3] =
new const Float:fun_blocks_colors[][3] =
{
{
{0.0,0.0,0.0},
{0.0,0.0,0.0},
{255.0,255.0,0.0},
{255.0,255.0,0.0},
{0.0,0.0,0.0},
{0.0,0.0,0.0},
{0.0,0.0,255.0},
{0.0,0.0,255.0},
{255.0,0.0,0.0},
{255.0,0.0,0.0},
{0.0,255.0,0.0}
{0.0,255.0,0.0}
}
}


new const fun_blocks_names[][] =
new const fun_blocks_names[][] =
{
{
"Normal Block",
"Normal Block",
"Yellow Block",
"Yellow Block",
"Black Block",
"Black Block",
"Blue Block",
"Blue Block",
"Red Block",
"Red Block",
"Green Block"
"Green Block"
}
}


new const short_team_names[][] =
new const short_team_names[][] =
{
{
"A",
"A",
"Z",
"Z",
"H"
"H"
}
}


new const long_team_names[][] =
new const long_team_names[][] =
{
{
"players",
"players",
"zombies",
"zombies",
"humans"
"humans"
}
}


new const log_file[] = "addons/amxmodx/logs/vzbb_mod_log.log"
new const log_file[] = "addons/amxmodx/logs/vzbb_mod_log.log"
new const mrs_file[] = "addons/amxmodx/configs/vzbb_mod_mrs.ini"
new const mrs_file[] = "addons/amxmodx/configs/vzbb_mod_mrs.ini"


new spr_trail,spr_flame,spr_smoke, mdl_glassgibs,
new spr_trail,spr_flame,spr_smoke, mdl_glassgibs,
sv_backslash_str[2], cvar_build_time, cvar_data_save_type, cvar_mode, cvar_push_remove,cvar_hurt_remove, cvar_barrier_alpha, cvar_block_wpn_drop,
sv_backslash_str[2], cvar_build_time, cvar_data_save_type, cvar_mode, cvar_push_remove,cvar_hurt_remove, cvar_barrier_alpha, cvar_block_wpn_drop,
cvar_respawn_time,cvar_respawn_bchance,cvar_respawn_bchance_cost,cvar_respawn_bchance_reuse_time,
cvar_respawn_time,cvar_respawn_bchance,cvar_respawn_bchance_cost,cvar_respawn_bchance_reuse_time,
cvar_zclass_nr_select,cvar_zclass_select_time,
cvar_zclass_nr_select,cvar_zclass_select_time,
cvar_zombie_classic_mdl,cvar_zombie_classic_clawmdl,cvar_zombie_classic_hp,cvar_zombie_classic_grav,cvar_zombie_classic_speed,
cvar_zombie_classic_mdl,cvar_zombie_classic_clawmdl,cvar_zombie_classic_hp,cvar_zombie_classic_grav,cvar_zombie_classic_speed,
cvar_block_nr_reset,cvar_block_claim,cvar_block_maxclaims, cvar_block_select_alpha,cvar_block_select_color,cvar_block_user_select_color,
cvar_block_nr_reset,cvar_block_claim,cvar_block_maxclaims, cvar_block_select_alpha,cvar_block_select_color,cvar_block_user_select_color,
cvar_move_pull_push_speed,cvar_move_min_dist,cvar_move_max_dist,
cvar_move_pull_push_speed,cvar_move_min_dist,cvar_move_max_dist,
cvar_weapons_weapons[sizeof name_weapons],cvar_weapons_start_grenade[3],
cvar_weapons_weapons[sizeof name_weapons],cvar_weapons_start_grenade[3],
cvar_unlock[sizeof name_weapons],cvar_unlock_cost[sizeof name_weapons],
cvar_unlock[sizeof name_weapons],cvar_unlock_cost[sizeof name_weapons],
cvar_credit_start,cvar_credit_limit, cvar_credit_give,cvar_credit_look, cvar_credits_hkill,cvar_credits_zkill,cvar_credits_hkillhs,cvar_credits_zkillhs,
cvar_credit_start,cvar_credit_limit, cvar_credit_give,cvar_credit_look, cvar_credits_hkill,cvar_credits_zkill,cvar_credits_hkillhs,cvar_credits_zkillhs,
cvar_credits_z_win,cvar_credits_h_win,cvar_credits_win_min_players,
cvar_credits_z_win,cvar_credits_h_win,cvar_credits_win_min_players,
cvar_round_deal,cvar_round_deal_chance, cvar_round_deal_min_items,cvar_round_deal_max_items, cvar_round_deal_min_discount,cvar_round_deal_max_discount,
cvar_round_deal,cvar_round_deal_chance, cvar_round_deal_min_items,cvar_round_deal_max_items, cvar_round_deal_min_discount,cvar_round_deal_max_discount,
cvar_nade_give_chance[3],cvar_nade_counter,
cvar_nade_give_chance[3],cvar_nade_counter,
cvar_nade_fire,cvar_nade_fire_radius,cvar_nade_fire_dur,cvar_nade_fire_damage,cvar_nade_fire_dmgstep,cvar_nade_fire_can_kill,
cvar_nade_fire,cvar_nade_fire_radius,cvar_nade_fire_dur,cvar_nade_fire_damage,cvar_nade_fire_dmgstep,cvar_nade_fire_can_kill,
cvar_nade_frost,cvar_nade_frost_radius,cvar_nade_frost_dur, cvar_nade_frost_cool,cvar_nade_frost_cool_radius,cvar_nade_frost_cool_dur,
cvar_nade_frost,cvar_nade_frost_radius,cvar_nade_frost_dur, cvar_nade_frost_cool,cvar_nade_frost_cool_radius,cvar_nade_frost_cool_dur,
cvar_nade_scan_sound,cvar_nade_scan,cvar_nade_scan_radius,cvar_nade_scan_step,
cvar_nade_scan_sound,cvar_nade_scan,cvar_nade_scan_radius,cvar_nade_scan_step,
cvar_ach,cvar_ach_price[MAX_ACH_LEVEL],cvar_ach_get[MAX_ACH][MAX_ACH_LEVEL],
cvar_ach,cvar_ach_price[MAX_ACH_LEVEL],cvar_ach_get[MAX_ACH][MAX_ACH_LEVEL],
cvar_upgrade[3][MAX_UPGRADES],cvar_upgrade_levels[3][MAX_UPGRADES],cvar_upgrade_cost[3][MAX_UPGRADES],
cvar_upgrade[3][MAX_UPGRADES],cvar_upgrade_levels[3][MAX_UPGRADES],cvar_upgrade_cost[3][MAX_UPGRADES],
cvar_fun,cvar_fun_blocks_num[MAX_BLOCKTYPES], Float:g_fOffset1[33], Float:g_fOffset2[33], Float:g_fOffset3[33], //dsa
cvar_fun,cvar_fun_blocks_num[MAX_BLOCKTYPES], Float:g_fOffset1[33], Float:g_fOffset2[33], Float:g_fOffset3[33], //dsa
#if defined SQL
#if defined SQL
cvar_sql_host,cvar_sql_user,cvar_sql_pass,cvar_sql_db,
cvar_sql_host,cvar_sql_user,cvar_sql_pass,cvar_sql_db,
#endif
#endif
get_barrierent, maxplayers,maxrounds, sync,sync2,sync3,sync4, freezetime,
get_barrierent, maxplayers,maxrounds, sync,sync2,sync3,sync4, freezetime,
cvar_get_select_color[3], get_blocks[MAX_BLOCKS],total_blocks,
cvar_get_select_color[3], get_blocks[MAX_BLOCKS],total_blocks,
count_build_time, can_build, total_rounds, h_lose, round_mode, was_zombie[33], hud_cache_text[128],hud_cache_colors[3],bool:hud_cache_condition,
count_build_time, can_build, total_rounds, h_lose, round_mode, was_zombie[33], hud_cache_text[128],hud_cache_colors[3],bool:hud_cache_condition,
is_banned[33],user_banreason[33][128], can_bc_respawn[33], user_race[33], user_credits[33], user_unlock[33][sizeof name_weapons], selected_weapons[33],
is_banned[33],user_banreason[33][128], can_bc_respawn[33], user_race[33], user_credits[33], user_unlock[33][sizeof name_weapons], selected_weapons[33],
user_upgrade_level[33][3][MAX_UPGRADES],user_upgrade_last_race[33],user_buy_last_race[33], round_deal_items,round_deal_discount,
user_upgrade_level[33][3][MAX_UPGRADES],user_upgrade_last_race[33],user_buy_last_race[33], round_deal_items,round_deal_discount,
zclassic_mdl_str[128],zclassic_clawmdl_str[128],
zclassic_mdl_str[128],zclassic_clawmdl_str[128],
user_class[33],get_zclass_clawmdl[33][128],Float:get_user_speed[33],can_select_zclass[33],must_change_zclass[33],
user_class[33],get_zclass_clawmdl[33][128],Float:get_user_speed[33],can_select_zclass[33],must_change_zclass[33],
Float:user_block_color[33][3],user_blockent[33],Float:user_block_dist[33],user_block_claims[33], user_build_battle[33],
Float:user_block_color[33][3],user_blockent[33],Float:user_block_dist[33],user_block_claims[33], user_build_battle[33],
user_fire_dur[33],user_fire_atk[33], user_frost[33],user_frost_cool[33],user_block_frost[33], user_played_seconds[33], user_ach_progress[33][MAX_ACH],user_ach_level[33][MAX_ACH],must_save[33],
user_fire_dur[33],user_fire_atk[33], user_frost[33],user_frost_cool[33],user_block_frost[33], user_played_seconds[33], user_ach_progress[33][MAX_ACH],user_ach_level[33][MAX_ACH],must_save[33],
total_zombie_classes,total_shop_items,
total_zombie_classes,total_shop_items,
Array:zombie_array,Array:shop_item_array,
Array:zombie_array,Array:shop_item_array,
fwd_zombie_class_selected,fwd_shop_item_selected,fwd_block_pull_push,fwd_battle_phase_begin,fwd_battle_phase_begin_adm,
fwd_zombie_class_selected,fwd_shop_item_selected,fwd_block_pull_push,fwd_battle_phase_begin,fwd_battle_phase_begin_adm,
fwd_throw_nade_pre,fwd_throw_nade_post, fwd_user_burn_pre,fwd_user_burn_post,fwd_user_remove_burn,
fwd_throw_nade_pre,fwd_throw_nade_post, fwd_user_burn_pre,fwd_user_burn_post,fwd_user_remove_burn,
fwd_user_freeze_pre,fwd_user_freeze_post,fwd_user_unfreeze_pre,fwd_user_unfreeze_post,
fwd_user_freeze_pre,fwd_user_freeze_post,fwd_user_unfreeze_pre,fwd_user_unfreeze_post,
fwd_user_freeze_cool_pre,fwd_user_freeze_cool_post,fwd_user_unfreeze_cool_pre,fwd_user_unfreeze_cool_post,
fwd_user_freeze_cool_pre,fwd_user_freeze_cool_post,fwd_user_unfreeze_cool_pre,fwd_user_unfreeze_cool_post,
fwd_user_infect_pre,fwd_user_infect_post,fwd_user_uninfect_pre,fwd_user_uninfect_post, fwd_grab_block_pre,fwd_grab_block_post,
fwd_user_infect_pre,fwd_user_infect_post,fwd_user_uninfect_pre,fwd_user_uninfect_post, fwd_grab_block_pre,fwd_grab_block_post,
fwd_release_block_pre,fwd_release_block_post, fwd_update_user_hud_data, fwd_fun_block_touch_pre,fwd_fun_block_touch_post,
fwd_release_block_pre,fwd_release_block_post, fwd_update_user_hud_data, fwd_fun_block_touch_pre,fwd_fun_block_touch_post,
msg_hideweapon,msg_health,msg_sendaudio,msg_deathmsg,msg_scoreattrib,msg_scoreinfo,msg_screenfade,msg_statusicon,
msg_hideweapon,msg_health,msg_sendaudio,msg_deathmsg,msg_scoreattrib,msg_scoreinfo,msg_screenfade,msg_statusicon,
fwd_return,
fwd_return,
bots_cvar,pointer_activity,bots_reg
bots_cvar,pointer_activity,bots_reg


#if !defined SQL
#if !defined SQL
new vault
new vault
#else
#else
new Handle:mysql_tuple,str_error[512]
new Handle:mysql_tuple,str_error[512]
#endif
#endif


public plugin_precache()
public plugin_precache()
{
{
new cfgfile[44], cache_mdl_str[128],cache_clawmdl_str[128], i, ent = create_entity("info_bomb_target")
new cfgfile[44], cache_mdl_str[128],cache_clawmdl_str[128], i, ent = create_entity("info_bomb_target")
spr_trail = precache_model("sprites/white.spr")
spr_trail = precache_model("sprites/white.spr")
spr_flame = precache_model("sprites/flame.spr")
spr_flame = precache_model("sprites/flame.spr")
spr_smoke = precache_model("sprites/black_smoke3.spr")
spr_smoke = precache_model("sprites/black_smoke3.spr")
mdl_glassgibs = precache_model("models/glassgibs.mdl")
mdl_glassgibs = precache_model("models/glassgibs.mdl")
cvar_zombie_classic_mdl = register_cvar("vzbb_zombie_classic_mdl","zombie_source")
cvar_zombie_classic_mdl = register_cvar("vzbb_zombie_classic_mdl","zombie_source")
cvar_zombie_classic_clawmdl = register_cvar("vzbb_zombie_classic_clawmdl","zombie_source")
cvar_zombie_classic_clawmdl = register_cvar("vzbb_zombie_classic_clawmdl","v_claws")
cvar_zombie_classic_hp = register_cvar("vzbb_zombie_classic_health","4100")
cvar_zombie_classic_hp = register_cvar("vzbb_zombie_classic_health","2500")
cvar_zombie_classic_grav = register_cvar("vzbb_zombie_classic_gravity","1.1")
cvar_zombie_classic_grav = register_cvar("vzbb_zombie_classic_gravity","1.0")
cvar_zombie_classic_speed = register_cvar("vzbb_zombie_classic_speed","200.0")
cvar_zombie_classic_speed = register_cvar("vzbb_zombie_classic_speed","0.0")
formatex(cfgfile,43,"addons/amxmodx/configs/vzbb_mod_classes.cfg")
formatex(cfgfile,43,"addons/amxmodx/configs/vzbb_mod_classes.cfg")
if(file_exists(cfgfile))
if(file_exists(cfgfile))
{
{
server_cmd("exec %s", cfgfile)
server_cmd("exec %s", cfgfile)
} else {
} else {
log_amx("[BB] ERROR: File configs/vzbb_mod_classes doesn't exist!")
log_amx("[VZBB] ERROR: File configs/vzbb_mod_classes doesn't exist!")
log_amx("[BB] Default CVAR values will be loaded instead.")
log_amx("[VZBB] Default CVAR values will be loaded instead.")
}
}
get_pcvar_string(cvar_zombie_classic_mdl,zclassic_mdl_str,127)
get_pcvar_string(cvar_zombie_classic_mdl,zclassic_mdl_str,127)
get_pcvar_string(cvar_zombie_classic_clawmdl,zclassic_clawmdl_str,127)
get_pcvar_string(cvar_zombie_classic_clawmdl,zclassic_clawmdl_str,127)
formatex(cache_mdl_str,127,"models/player/%s/%s.mdl",zclassic_mdl_str,zclassic_mdl_str)
formatex(cache_mdl_str,127,"models/player/%s/%s.mdl",zclassic_mdl_str,zclassic_mdl_str)
formatex(cache_clawmdl_str,127,"models/%s.mdl",zclassic_clawmdl_str)
formatex(cache_clawmdl_str,127,"models/%s.mdl",zclassic_clawmdl_str)
precache_model(cache_mdl_str)
precache_model(cache_mdl_str)
precache_model(cache_clawmdl_str)
precache_model(cache_clawmdl_str)
for(i=0;i<sizeof human_models;i++)
for(i=0;i<sizeof human_models;i++)
{
{
formatex(cache_mdl_str,127,"models/player/%s/%s.mdl",human_models[i],human_models[i])
formatex(cache_mdl_str,127,"models/player/%s/%s.mdl",human_models[i],human_models[i])
precache_model(cache_mdl_str)
precache_model(cache_mdl_str)
}
}
new cache_str[128]
new cache_str[128]
for(i=0;i<sizeof sound_zombie_pain;i++) precache_sound(sound_zombie_pain[i])
for(i=0;i<sizeof sound_zombie_pain;i++) precache_sound(sound_zombie_pain[i])
for(i=0;i<sizeof sound_zombie_die;i++) precache_sound(sound_zombie_die[i])
for(i=0;i<sizeof sound_zombie_die;i++) precache_sound(sound_zombie_die[i])
for(i=0;i<sizeof sound_zombies_win;i++)
for(i=0;i<sizeof sound_zombies_win;i++)
{
{
if(!equal(sound_zombies_win[i][strlen(sound_zombies_win[i]) - 4],".mp3"))
if(!equal(sound_zombies_win[i][strlen(sound_zombies_win[i]) - 4],".mp3"))
{
{
precache_sound(sound_zombies_win[i])
precache_sound(sound_zombies_win[i])
} else {
} else {
formatex(cache_str,127,"sound/%s",sound_zombies_win[i])
formatex(cache_str,127,"sound/%s",sound_zombies_win[i])
precache_generic(cache_str)
precache_generic(cache_str)
}
}
}
}
for(i=0;i<sizeof sound_humans_win;i++)
for(i=0;i<sizeof sound_humans_win;i++)
{
{
if(!equal(sound_humans_win[i][strlen(sound_humans_win[i]) - 4],".mp3"))
if(!equal(sound_humans_win[i][strlen(sound_humans_win[i]) - 4],".mp3"))
{
{
precache_sound(sound_humans_win[i])
precache_sound(sound_humans_win[i])
} else {
} else {
formatex(cache_str,127,"sound/%s",sound_humans_win[i])
formatex(cache_str,127,"sound/%s",sound_humans_win[i])
precache_generic(cache_str)
precache_generic(cache_str)
}
}
}
}
precache_sound("zombie_blood/infect1.wav")
precache_sound("zombie_blood/infect1.wav")
precache_sound("turret/tu_ping.wav")
precache_sound("turret/tu_ping.wav")
precache_sound("debris/beamstart8.wav")
precache_sound("debris/beamstart8.wav")
precache_sound("ambience/flameburst1.wav")
precache_sound("ambience/flameburst1.wav")
if(ent) entity_set_origin(ent,Float:{8192.0,8192.0,8192.0})
if(ent) entity_set_origin(ent,Float:{8192.0,8192.0,8192.0})
}
}


public plugin_init() {
public plugin_init() {
register_plugin("[BB]'s Zombie BaseBuilder Mod", "4.3", "[Marlboro]")
register_plugin("<VeCo>'s Zombie BaseBuilder Mod", "4.3", "<VeCo>")
cvar_build_time = register_cvar("vzbb_build_time","150")
cvar_build_time = register_cvar("vzbb_build_time","120")
cvar_data_save_type = register_cvar("vzbb_data_save_type","0")
cvar_data_save_type = register_cvar("vzbb_data_save_type","0")
cvar_mode = register_cvar("vzbb_mode","0")
cvar_mode = register_cvar("vzbb_mode","0")
cvar_push_remove = register_cvar("vzbb_push_remove","0")
cvar_push_remove = register_cvar("vzbb_push_remove","0")
cvar_hurt_remove = register_cvar("vzbb_hurt_remove","0")
cvar_hurt_remove = register_cvar("vzbb_hurt_remove","0")
cvar_barrier_alpha = register_cvar("vzbb_barrier_alpha","175.0")
cvar_barrier_alpha = register_cvar("vzbb_barrier_alpha","175.0")
cvar_block_wpn_drop = register_cvar("vzbb_block_weapon_drop","0")
cvar_block_wpn_drop = register_cvar("vzbb_block_weapon_drop","0")
cvar_respawn_time = register_cvar("vzbb_respawn_time","2.0")
cvar_respawn_time = register_cvar("vzbb_respawn_time","2.0")
cvar_respawn_bchance = register_cvar("vzbb_respawn_battle_chance","6")
cvar_respawn_bchance = register_cvar("vzbb_respawn_battle_chance","6")
cvar_respawn_bchance_cost = register_cvar("vzbb_respawn_battle_chance_cost","8")
cvar_respawn_bchance_cost = register_cvar("vzbb_respawn_battle_chance_cost","8")
cvar_respawn_bchance_reuse_time = register_cvar("vzbb_respawn_battle_chance_reuse_time","60.0")
cvar_respawn_bchance_reuse_time = register_cvar("vzbb_respawn_battle_chance_reuse_time","60.0")
cvar_zclass_nr_select = register_cvar("vzbb_zombie_class_newround_select","1") // sa nu mai iti dea clasa de zm la fiecare runda sa ti-o alegi , doar atunci cand dai /class ( 0 )
cvar_zclass_nr_select = register_cvar("vzbb_zombie_class_newround_select","1")
cvar_zclass_select_time = register_cvar("vzbb_zombie_class_select_time","9.0")
cvar_zclass_select_time = register_cvar("vzbb_zombie_class_select_time","9.0")
cvar_block_nr_reset = register_cvar("vzbb_block_newround_reset","1")
cvar_block_nr_reset = register_cvar("vzbb_block_newround_reset","1")
cvar_block_claim = register_cvar("vzbb_block_claim","1")
cvar_block_claim = register_cvar("vzbb_block_claim","1")
cvar_block_maxclaims = register_cvar("vzbb_block_max_claims","8")
cvar_block_maxclaims = register_cvar("vzbb_block_max_claims","8")
cvar_block_select_alpha = register_cvar("vzbb_block_select_alpha","100.0")
cvar_block_select_alpha = register_cvar("vzbb_block_select_alpha","100.0")
cvar_block_select_color = register_cvar("vzbb_block_select_color","255 0 0")
cvar_block_select_color = register_cvar("vzbb_block_select_color","255 0 0")
cvar_block_user_select_color = register_cvar("vzbb_block_user_select_color","1")
cvar_block_user_select_color = register_cvar("vzbb_block_user_select_color","1")
new select_cvar_str[12], r[4],g[4],b[4]
new select_cvar_str[12], r[4],g[4],b[4]
get_pcvar_string(cvar_block_select_color, select_cvar_str,11)
get_pcvar_string(cvar_block_select_color, select_cvar_str,11)
parse(select_cvar_str, r,3, g,3, b,3)
parse(select_cvar_str, r,3, g,3, b,3)
cvar_get_select_color[0] = str_to_num(r)
cvar_get_select_color[0] = str_to_num(r)
cvar_get_select_color[1] = str_to_num(g)
cvar_get_select_color[1] = str_to_num(g)
cvar_get_select_color[2] = str_to_num(b)
cvar_get_select_color[2] = str_to_num(b)
cvar_move_pull_push_speed = register_cvar("vzbb_move_pull_push_speed","2.0")
cvar_move_pull_push_speed = register_cvar("vzbb_move_pull_push_speed","2.0")
cvar_move_min_dist = register_cvar("vzbb_move_min_distance","80.0")
cvar_move_min_dist = register_cvar("vzbb_move_min_distance","80.0")
cvar_move_max_dist = register_cvar("vzbb_move_max_distance","900.0")
cvar_move_max_dist = register_cvar("vzbb_move_max_distance","900.0")
new i,weapon_str[36]
new i,weapon_str[36]
for(i=1;i<sizeof name_weapons;i++)
for(i=1;i<sizeof name_weapons;i++)
{
{
formatex(weapon_str,35,"vzbb_%s",name_weapons[i])
formatex(weapon_str,35,"vzbb_%s",name_weapons[i])
cvar_weapons_weapons[i] = register_cvar(weapon_str,"1")
cvar_weapons_weapons[i] = register_cvar(weapon_str,"1")
formatex(weapon_str,35,"vzbb_unlock_%s",name_weapons[i])
formatex(weapon_str,35,"vzbb_unlock_%s",name_weapons[i])
cvar_unlock[i] = register_cvar(weapon_str,"0")
cvar_unlock[i] = register_cvar(weapon_str,"0")
formatex(weapon_str,35,"vzbb_unlock_cost_%s",name_weapons[i])
formatex(weapon_str,35,"vzbb_unlock_cost_%s",name_weapons[i])
cvar_unlock_cost[i] = register_cvar(weapon_str,"2")
cvar_unlock_cost[i] = register_cvar(weapon_str,"2")
}
}
cvar_weapons_start_grenade[0] = register_cvar("vzbb_weapon_start_grenade_he","1")
cvar_weapons_start_grenade[0] = register_cvar("vzbb_weapon_start_grenade_he","1")
cvar_weapons_start_grenade[1] = register_cvar("vzbb_weapon_start_grenade_fb","1")
cvar_weapons_start_grenade[1] = register_cvar("vzbb_weapon_start_grenade_fb","1")
cvar_weapons_start_grenade[2] = register_cvar("vzbb_weapon_start_grenade_sg","1")
cvar_weapons_start_grenade[2] = register_cvar("vzbb_weapon_start_grenade_sg","1")
cvar_credit_start = register_cvar("vzbb_credit_start","5")
cvar_credit_start = register_cvar("vzbb_credit_start","5")
cvar_credit_limit = register_cvar("vzbb_credit_limit","0")
cvar_credit_limit = register_cvar("vzbb_credit_limit","0")
cvar_credit_give = register_cvar("vzbb_credit_give","1")
cvar_credit_give = register_cvar("vzbb_credit_give","1")
cvar_credit_look = register_cvar("vzbb_credit_look","1")
cvar_credit_look = register_cvar("vzbb_credit_look","1")
cvar_credits_hkill = register_cvar("vzbb_credits_human_kill","2")
cvar_credits_hkill = register_cvar("vzbb_credits_human_kill","2")
cvar_credits_zkill = register_cvar("vzbb_credits_zombie_kill","1")
cvar_credits_zkill = register_cvar("vzbb_credits_zombie_kill","1")
cvar_credits_hkillhs = register_cvar("vzbb_credits_human_kill_headshot","4")
cvar_credits_hkillhs = register_cvar("vzbb_credits_human_kill_headshot","4")
cvar_credits_zkillhs = register_cvar("vzbb_credits_zombie_kill_headshot","2")
cvar_credits_zkillhs = register_cvar("vzbb_credits_zombie_kill_headshot","2")
cvar_credits_h_win = register_cvar("vzbb_credits_humans_win","10")
cvar_credits_h_win = register_cvar("vzbb_credits_humans_win","10")
cvar_credits_z_win = register_cvar("vzbb_credits_zombies_win","10")
cvar_credits_z_win = register_cvar("vzbb_credits_zombies_win","10")
cvar_credits_win_min_players = register_cvar("vzbb_credits_win_min_players","4")
cvar_credits_win_min_players = register_cvar("vzbb_credits_win_min_players","4")
cvar_round_deal = register_cvar("vzbb_round_deal","1")
cvar_round_deal = register_cvar("vzbb_round_deal","1")
cvar_round_deal_chance = register_cvar("vzbb_round_deal_chance","98")
cvar_round_deal_chance = register_cvar("vzbb_round_deal_chance","98")
cvar_round_deal_min_items = register_cvar("vzbb_round_deal_min_items","1")
cvar_round_deal_min_items = register_cvar("vzbb_round_deal_min_items","1")
cvar_round_deal_max_items = register_cvar("vzbb_round_deal_max_items","3")
cvar_round_deal_max_items = register_cvar("vzbb_round_deal_max_items","3")
cvar_round_deal_min_discount = register_cvar("vzbb_round_deal_min_discount","1")
cvar_round_deal_min_discount = register_cvar("vzbb_round_deal_min_discount","1")
cvar_round_deal_max_discount = register_cvar("vzbb_round_deal_max_discount","4")
cvar_round_deal_max_discount = register_cvar("vzbb_round_deal_max_discount","4")
cvar_nade_give_chance[0] = register_cvar("vzbb_grenade_give_chance_fire","100")
cvar_nade_give_chance[0] = register_cvar("vzbb_grenade_give_chance_fire","100")
cvar_nade_give_chance[1] = register_cvar("vzbb_grenade_give_chance_frost","100")
cvar_nade_give_chance[1] = register_cvar("vzbb_grenade_give_chance_frost","100")
cvar_nade_give_chance[2] = register_cvar("vzbb_grenade_give_chance_scan","75")
cvar_nade_give_chance[2] = register_cvar("vzbb_grenade_give_chance_scan","75")
cvar_nade_counter = register_cvar("vzbb_grenade_counter","1")
cvar_nade_counter = register_cvar("vzbb_grenade_counter","1")
cvar_nade_fire = register_cvar("vzbb_grenade_fire","1")
cvar_nade_fire = register_cvar("vzbb_grenade_fire","1")
cvar_nade_fire_radius = register_cvar("vzbb_grenade_fire_radius","200")
cvar_nade_fire_radius = register_cvar("vzbb_grenade_fire_radius","200")
cvar_nade_fire_dur = register_cvar("vzbb_grenade_fire_duration","10")
cvar_nade_fire_dur = register_cvar("vzbb_grenade_fire_duration","10")
cvar_nade_fire_damage = register_cvar("vzbb_grenade_fire_damage","20")
cvar_nade_fire_damage = register_cvar("vzbb_grenade_fire_damage","20")
cvar_nade_fire_dmgstep = register_cvar("vzbb_grenade_fire_damage_step","0.5")
cvar_nade_fire_dmgstep = register_cvar("vzbb_grenade_fire_damage_step","0.5")
cvar_nade_fire_can_kill = register_cvar("vzbb_grenade_fire_can_kill","1")
cvar_nade_fire_can_kill = register_cvar("vzbb_grenade_fire_can_kill","1")
cvar_nade_frost = register_cvar("vzbb_grenade_frost","1")
cvar_nade_frost = register_cvar("vzbb_grenade_frost","1")
cvar_nade_frost_radius = register_cvar("vzbb_grenade_frost_radius","200")
cvar_nade_frost_radius = register_cvar("vzbb_grenade_frost_radius","200")
cvar_nade_frost_dur = register_cvar("vzbb_grenade_frost_duration","4.0")
cvar_nade_frost_dur = register_cvar("vzbb_grenade_frost_duration","4.0")
cvar_nade_frost_cool = register_cvar("vzbb_grenade_frost_cool","1")
cvar_nade_frost_cool = register_cvar("vzbb_grenade_frost_cool","1")
cvar_nade_frost_cool_radius = register_cvar("vzbb_grenade_frost_cool_radius","100")
cvar_nade_frost_cool_radius = register_cvar("vzbb_grenade_frost_cool_radius","100")
cvar_nade_frost_cool_dur = register_cvar("vzbb_grenade_frost_cool_duration","4.0")
cvar_nade_frost_cool_dur = register_cvar("vzbb_grenade_frost_cool_duration","4.0")
cvar_nade_scan = register_cvar("vzbb_grenade_scan","1")
cvar_nade_scan = register_cvar("vzbb_grenade_scan","1")
cvar_nade_scan_radius = register_cvar("vzbb_grenade_scan_radius","300")
cvar_nade_scan_radius = register_cvar("vzbb_grenade_scan_radius","300")
cvar_nade_scan_step = register_cvar("vzbb_grenade_scan_step","0.5")
cvar_nade_scan_step = register_cvar("vzbb_grenade_scan_step","0.5")
cvar_nade_scan_sound = register_cvar("vzbb_grenade_scan_sound","0")
cvar_nade_scan_sound = register_cvar("vzbb_grenade_scan_sound","0")
cvar_ach = register_cvar("vzbb_achievement","1")
cvar_ach = register_cvar("vzbb_achievement","1")
cvar_ach_price[ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_white_price","30")
cvar_ach_price[ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_white_price","30")
cvar_ach_price[ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_yellow_price","50")
cvar_ach_price[ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_yellow_price","50")
cvar_ach_price[ACH_LEVEL_RED] = register_cvar("vzbb_achievement_red_price","100")
cvar_ach_price[ACH_LEVEL_RED] = register_cvar("vzbb_achievement_red_price","100")
cvar_ach_get[ACH_BLOODPARTY][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_bloodparty_white","200")
cvar_ach_get[ACH_BLOODPARTY][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_bloodparty_white","200")
cvar_ach_get[ACH_BLOODPARTY][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_bloodparty_yellow","400")
cvar_ach_get[ACH_BLOODPARTY][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_bloodparty_yellow","400")
cvar_ach_get[ACH_BLOODPARTY][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_bloodparty_red","600")
cvar_ach_get[ACH_BLOODPARTY][ACH
cvar_ach_get[ACH_GENOCIDE][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_genocide_white","200")
cvar_ach_get[ACH_GENOCIDE][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_genocide_yellow","400")
cvar_ach_get[ACH_GENOCIDE][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_genocide_red","600")
cvar_ach_get[ACH_FIREWORKS][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_fireworks_white","5")
cvar_ach_get[ACH_FIREWORKS][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_fireworks_yellow","6")
cvar_ach_get[ACH_FIREWORKS][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_fireworks_red","7")
cvar_ach_get[ACH_ICEAGE][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_iceage_white","5")
cvar_ach_get[ACH_ICEAGE][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_iceage_yellow","6")
cvar_ach_get[ACH_ICEAGE][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_iceage_red","7")
cvar_ach_get[ACH_BASEBUILDER][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_basebuilder_white","100")
cvar_ach_get[ACH_BASEBUILDER][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_basebuilder_yellow","300")
cvar_ach_get[ACH_BASEBUILDER][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_basebuilder_red","750")
cvar_ach_get[ACH_UNDEAD][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_undead_white","300")
cvar_ach_get[ACH_UNDEAD][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_undead_yellow","550")
cvar_ach_get[ACH_UNDEAD][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_undead_red","725")
cvar_ach_get[ACH_SURVIVOR][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_survivor_white","100")
cvar_ach_get[ACH_SURVIVOR][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_survivor_yellow","600")
cvar_ach_get[ACH_SURVIVOR][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_survivor_red","1200")
cvar_ach_get[ACH_UPGRADEME][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_upgrademe_white","5")
cvar_ach_get[ACH_UPGRADEME][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_upgrademe_yellow","12")
cvar_ach_get[ACH_UPGRADEME][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_upgrademe_red","50")
cvar_ach_get[ACH_UNLOCKERZ][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_unlockerz_white","2")
cvar_ach_get[ACH_UNLOCKERZ][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_unlockerz_yellow","5")
cvar_ach_get[ACH_UNLOCKERZ][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_unlockerz_red","7")
cvar_ach_get[ACH_BIOHAZARD][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_biohazard_white","500")
cvar_ach_get[ACH_BIOHAZARD][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_biohazard_yellow","1000")
cvar_ach_get[ACH_BIOHAZARD][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_biohazard_red","1350")
cvar_ach_get[ACH_HUMILIATION][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_humiliation_white","1")
cvar_ach_get[ACH_HUMILIATION][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_humiliation_yellow","2")
cvar_ach_get[ACH_HUMILIATION][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_humiliation_red","3")
cvar_ach_get[ACH_BIGBANG][ACH_LEVEL_WHITE] = register_cvar("vzbb_achievement_bigbang_white","1")
cvar_ach_get[ACH_BIGBANG][ACH_LEVEL_YELLOW] = register_cvar("vzbb_achievement_bigbang_yellow","2")
cvar_ach_get[ACH_BIGBANG][ACH_LEVEL_RED] = register_cvar("vzbb_achievement_bigbang_red","3")
cvar_upgrade[1][UPGRADE_HEALTH] = register_cvar("vzbb_upgrade_zombie_health","100")
cvar_upgrade_levels[1][UPGRADE_HEALTH] = register_cvar("vzbb_upgrade_zombie_health_levels","20")
cvar_upgrade_cost[1][UPGRADE_HEALTH] = register_cvar("vzbb_upgrade_zombie_health_cost","18")
cvar_upgrade[1][UPGRADE_REGENERATION] = register_cvar("vzbb_upgrade_zombie_regeneration","1")
cvar_upgrade_levels[1][UPGRADE_REGENERATION] = register_cvar("vzbb_upgrade_zombie_regeneration_levels","20")
cvar_upgrade_cost[1][UPGRADE_REGENERATION] = register_cvar("vzbb_upgrade_zombie_regeneration_cost","25")
cvar_upgrade[1][UPGRADE_SPEED] = register_cvar("vzbb_upgrade_zombie_speed","20.0")
cvar_upgrade_levels[1][UPGRADE_SPEED] = register_cvar("vzbb_upgrade_zombie_speed_levels","20")
cvar_upgrade_cost[1][UPGRADE_SPEED] = register_cvar("vzbb_upgrade_zombie_speed_cost","20")
cvar_upgrade[1][UPGRADE_GRAVITY] = register_cvar("vzbb_upgrade_zombie_gravity","0.025")
cvar_upgrade_levels[1][UPGRADE_GRAVITY] = register_cvar("vzbb_upgrade_zombie_gravity_levels","20")
cvar_upgrade_cost[1][UPGRADE_GRAVITY] = register_cvar("vzbb_upgrade_zombie_gravity_cost","25")
cvar_upgrade[1][UPGRADE_INVISIBILITY] = register_cvar("vzbb_upgrade_zombie_invisibility","12")
cvar_upgrade_levels[1][UPGRADE_INVISIBILITY] = register_cvar("vzbb_upgrade_zombie_invisibility_levels","20")
cvar_upgrade_cost[1][UPGRADE_INVISIBILITY] = register_cvar("vzbb_upgrade_zombie_invisibility_cost","20")
cvar_upgrade[2][UPGRADE_HEALTH] = register_cvar("vzbb_upgrade_human_health","10")
cvar_upgrade_levels[2][UPGRADE_HEALTH] = register_cvar("vzbb_upgrade_human_health_levels","20")
cvar_upgrade_cost[2][UPGRADE_HEALTH] = register_cvar("vzbb_upgrade_human_health_cost","15")
cvar_upgrade[2][UPGRADE_ARMOR] = register_cvar("vzbb_upgrade_human_armor","8")
cvar_upgrade_levels[2][UPGRADE_ARMOR] = register_cvar("vzbb_upgrade_human_armor_levels","20")
cvar_upgrade_cost[2][UPGRADE_ARMOR] = register_cvar("vzbb_upgrade_human_armor_cost","10")
cvar_upgrade[2][UPGRADE_RECOIL] = register_cvar("vzbb_upgrade_human_recoil","0.1")
cvar_upgrade_levels[2][UPGRADE_RECOIL] = register_cvar("vzbb_upgrade_human_recoil_levels","20")
cvar_upgrade_cost[2][UPGRADE_RECOIL] = register_cvar("vzbb_upgrade_human_recoil_cost","20")
cvar_upgrade[2][UPGRADE_SPEED] = register_cvar("vzbb_upgrade_human_speed","15.0")
cvar_upgrade_levels[2][UPGRADE_SPEED] = register_cvar("vzbb_upgrade_human_speed_levels","20")
cvar_upgrade_cost[2][UPGRADE_SPEED] = register_cvar("vzbb_upgrade_human_speed_cost","20")
cvar_upgrade[2][UPGRADE_GRAVITY] = register_cvar("vzbb_upgrade_human_gravity","0.06")
cvar_upgrade_levels[2][UPGRADE_GRAVITY] = register_cvar("vzbb_upgrade_human_gravity_levels","20")
cvar_upgrade_cost[2][UPGRADE_GRAVITY] = register_cvar("vzbb_upgrade_human_gravity_cost","25")
cvar_upgrade[2][UPGRADE_INVISIBILITY] = register_cvar("vzbb_upgrade_human_invisibility","12")
cvar_upgrade_levels[2][UPGRADE_INVISIBILITY] = register_cvar("vzbb_upgrade_human_invisibility_levels","20")
cvar_upgrade_cost[2][UPGRADE_INVISIBILITY] = register_cvar("vzbb_upgrade_human_invisibility_cost","20")
cvar_fun = register_cvar("vzbb_fun","1")
cvar_fun_blocks_num[BLOCKS_YELLOW] = register_cvar("vzbb_fun_blocks_yellow_num","4")
cvar_fun_blocks_num[BLOCKS_BLACK] = register_cvar("vzbb_fun_blocks_black_num","2")
cvar_fun_blocks_num[BLOCKS_BLUE] = register_cvar("vzbb_fun_blocks_blue_num","1")
cvar_fun_blocks_num[BLOCKS_RED] = register_cvar("vzbb_fun_blocks_red_num","1")
cvar_fun_blocks_num[BLOCKS_GREEN] = register_cvar("vzbb_fun_blocks_green_num","1")
fwd_zombie_class_selected = CreateMultiForward("zombie_class_selected",ET_IGNORE, FP_CELL,FP_CELL)
fwd_shop_item_selected = CreateMultiForward("shop_item_selected",ET_CONTINUE, FP_CELL,FP_CELL)
fwd_block_pull_push = CreateMultiForward("block_pull_push",ET_CONTINUE, FP_CELL,FP_CELL)
fwd_b