Base builder zombie mod is an idea that totally warps the idea of a Half-Life zombie mod. If you're familiar with Counter-Strike Source zombie mods, then you are also aware of the physics which allows the user to essentially build his/her own barricade using couches and other objects laying around. Using this concept, I thought of moving this idea a step further and allow the user to create their own entire bases. After all, everyone likes to make their own maps. So why not let them?
Because every user is different and will like to build their own different styles of bases, every round is different. It is nearly impossible to recreate exact bases (unless the user has practiced significantly), so playing one map won't get too old too quickly.
This text wrote
У вас нет разрешения на просмотр ссылки, пожалуйста Вход или Регистрация
(raw and unmitigated crap)...#include Modules:
- AMX Mod X 1.10
- FakeMeta 1.10
- HamSandwich 1.10
- SQLx 1.10 (for SQLite or MySQL Coin save)
- AMXX UBB Module v1.5.2.r
C-подобный:
#if defined _UBB_included
#endinput
#endif
#define _UBB_included
#pragma reqlib UBB
#if !defined AMXMODX_NOAUTOLOAD
#pragma loadlib UBB
#endif
#if !defined _fakemeta_included
#include <fakemeta>
#endif
// 0 - alpha / 1 - beta / 2 - release
#define UBB_VERSION_MIN 1522
#define UBB_VERSION "1.5.2.r"
#define UBB_MAXPLAYERS 32
#define UBB_MAXCOLORS 24
#define LockBlock(%1,%2) (set_pev(%1, pev_iuser1, %2))
#define UnlockBlock(%1) (set_pev(%1, pev_iuser1, 0))
#define BlockLocker(%1) (pev(%1, pev_iuser1 ))
#define MovingEnt(%1) (set_pev(%1, pev_iuser2, 1))
#define UnmovingEnt(%1) (set_pev(%1, pev_iuser2, 0))
#define IsMovingEnt(%1) (pev(%1, pev_iuser2) == 1)
#define SetEntMover(%1,%2) (set_pev(%1, pev_iuser3, %2))
#define UnsetEntMover(%1) (set_pev(%1, pev_iuser3, 0))
#define GetEntMover(%1) (pev(%1, pev_iuser3 ))
#define SetLastMover(%1,%2) (set_pev(%1, pev_iuser4, %2))
#define UnsetLastMover(%1) (set_pev(%1, pev_iuser4, 0))
#define GetLastMover(%1) (pev(%1, pev_iuser4 ))
enum _: structPlayerTeam {
Zombie = 1, // @integer, This player Zombie?
Human // @integer, This player Human?
};
enum _: structRoundPhase (+= 4578) {
NonePhase = 2572, // @bool, Choose Phase
Build, // @integer, Task on BuildTime (@bool, Build Phase)
Prephare, // @integer, Task on PrephareTime (@bool, Prephare Phase)
Release, // @integer, Phase Release Zombies (@bool, Release Phase)
ZPA // @integer, Default Zombie Plague
};
enum _: structPlayerModel {
PlayerEntModel[32], // @string, Player Model Name
ViewClawsModel[64], // @string, Path to View Claws Model
PlayerClawsModel[64] // @string, Path to Player Claws Model
};
enum _: structSubModel {
PlayerEntSubModel, // @integer, SubModel on Player (Number)
ViewClawsSubModel, // @integer, SubModel v_ Claws Model (Number)
PlayerClawsSubModel // @integer, SubModel p_ Claws Model (Number)
};
enum _: structAnimNum {
ViewClawsAnimNum, // @integer, Animation v_ Claws Model (Number)
PlayerClawsAnimNum // @integer, Animation p_ Claws Model (Number)
};
enum _: structZombieClass {
sName[32], // @string, Zombie Class Name
sInfo[32], // @string, Description
sSkin[structPlayerModel], // @struct, Path to Player Models (player, v_model, p_model)
iHealth, // @integer, Set Default Health
iArmor, // @integer, Set Default Armor
Float: fSpeed, // @float, Set Default Speed
Float: fGravity, // @float, Set Default Gravity
iSubModel[structSubModel], // @struct, Set Default Sub Model Number (-1 Dont Use)
iAnimNum[structAnimNum], // @struct, Set Default Anim Model Number (-1 Dont Use)
iSkinNum, // @integer, Set Default Skin Model Number (-1 Dont Use)
iAccessFlag // @flag, Access Flag
};
enum _: structGameSettings {
bool: BuildEnable, // @bool, Build Enabled (if not set! default: false)
bool: CoinsEnable, // @bool, Coins Enabled (if not set! default: false)
bool: GunsEnable, // @bool, Guns Enabled (if not set! default: false)
bool: LockBlock, // @bool, Is it possible to privatize blocks? (if not set! default: false)
BuildTime, // @integer, Build Time
PrephareTime, // @integer, Prephare Time
Float: ZombieRespawnDelay, // @float, Respawn Zombie in seconds
LockBlockMax, // @integer, Maximum blocks privatize
MinMoveDist, // @integer, Block Min distantion
MaxMoveDist, // @integer, Block Max distantion
MinDistSet, // @integer, Block Min set distantion
ChatPrefix[24], // @string, Prefix in Chat
SumFlags[12] // @string, Admin Access Flags
};
enum _: structColorArray {
Float: fRed, // @float, Color Red
Float: fGreen, // @float, Color Green
Float: fBlue, // @float, Color Blue
Float: fAlpha, // @float, Color Alpha Channel
};
enum _: structSounds {
soundsZombieDie[64], // @string, Sounds Zombie Die
soundsZombiePain[64], // @string, Sounds Zombie Pain
soundsZombieHit[64], // @string, Sounds Zombie Hit
soundsZombieMiss[64], // @string, Sounds Zombie Miss
};
enum _: structExtraItems {
itemsName[32], // @string, Extra Item Name
itemsCost, // @integer, Extra Item Cost
itemsTeam // @integer, Extra Item Team (Zombie OR Human)
};
enum _: structCustomItems {
wName[16], // @string, WeaponName (Example: "weapon_ak47")
itemIndex, // @integer, Extra Item Index
vModel[64], // @string, v_ Model
subVModel, // @integer, Number Sub-model
animVModel, // @integer, Number Anim-model
pModel[64], // @string, p_ Model
subPModel, // @integer, Number Sub-model
animPModel, // @integer, Number Anim-model
wModel[64], // @string, w_ Model
subWModel, // @integer, Number Sub-model
animWModel // @integer, Number Anim-model
};
enum _: structCoinsSaver {
csMethod[7], // @string, "mysql" (Global DB), "sqlite" (Local DB)
csHost[32], // @string, DB Host
csUser[32], // @string, DB User
csPass[32], // @string, DB Password
csDataBase[32], // @string, Data Base
csTable[32] // @string, Table
};
enum _: structForwards (+= 1610) {
fwStartPhase = 1997, // @iArg1, Current Phase
// ======================================
fwTickTimer, // @iArg1, Current Tick
// ======================================
fwPlayerJoin, // @iArg1, Index of Player
// ======================================
fwPlayerSpawn, // @iArg1, Index of Player
// ======================================
fwPlayerKilled, // @iArg1, Index of iVictim,
// @iArg2, Index of iAttacker
// ======================================
fwPlayerSelectClass, // @iArg1, Index of Player,
// @iArg2, Index of Zombie Class
// ======================================
fwPlayerTakeDamage, // @iArg1, Index of iVictim,
// @iArg2, Index of iInflictor,
// @iArg3, Index of iAttacker,
// @iArg4, Damage Count (@integer)
// ======================================
fwPlayerAttack, // @iArg1, Index of Player,
// @iArg2, iButton (1 - attack1 | 2 - attack2)
// ======================================
fwPlayerThink, // @iArg1, Index of Player
// ======================================
fwPlayerTouch, // @iArg1, Index of Player,
// @iArg2, Index of iEnt
// ======================================
fwExtraItemSelect, // @iArg1, Index of Player,
// @iArg2, Index of Extra Item
// ======================================
fwCustomItemSelect, // @iArg1, Index of Player,
// @iArg2, Index of Extra Item,
// @iArg3, Index of Custom Item
// ======================================
fwCustomItemTake, // @iArg1, Index of Player,
// @iArg2, Index of WeaponEnt,
// @iArg3, Index of Extra Item,
// @iArg4, Index of Custom Item
// ======================================
fwCustomItemDrop, // @iArg1, Index of Player,
// @iArg2, Index of WeaponEnt,
// @iArg3, Index of Extra Item,
// @iArg4, Index of Custom Item
// ======================================
fwCustomItemDeploy, // @iArg1, Index of Player,
// @iArg2, Index of WeaponEnt,
// @iArg3, Index of Extra Item,
// @iArg4, Index of Custom Item
// ======================================
fwCustomItemWorld, // @iArg1, Index of WeaponBoxEnt,
// @iArg2, Index of WeaponEnt,
// @iArg3, Index of Extra Item,
// @iArg4, Index of Custom Item
// ======================================
fwGrabBlock, // @iArg1, Index of Player,
// @iArg2, Index of Entity
// ======================================
fwDropBlock, // @iArg1, Index of Player,
// @iArg2, Index of Entity
// ======================================
fwLockBlock, // @iArg1, Index of Player,
// @iArg2, Index of Entity
// ======================================
fwBZGTouch, // @iArg1, Index of iEntity,
// @iArg2, Index of iEntity1 (original)
// @iArg2, Index of iEntity2 (original)
// ======================================
fwTeamBalanced, // @iArg1, Index of Player,
// @iArg2, Index of PlayerTeam
// ======================================
fwTeamBalanced2, // @iArg1, Index of Player,
// @iArg2, Index of PlayerTeam
// ======================================
fwTeamWin // @iArg1, Index of WinTeam
};
/*
@Description: Set Game Parameters (Use all struct parameters)
@UseIN @plugin_init()
*/
native ubb_set_game_settings(sGameSettings[structGameSettings]);
/*
@Description: Set DB Parameters (Use all struct parameters)
@UseIN @plugin_init()
*/
native ubb_set_db_settings(sCoinsDB[structCoinsSaver]);
/*
@Description: Set Color Parameters (iNum = {1, 2, ..., UBB_MAXCOLORS)
@UseIN @plugin_init()
*/
native ubb_set_users_color(iNum, Float: colorRed, Float: colorGreen, Float: colorBlue, Float: colorAlpha);
/*
@Description: Add Sounds (Use all struct parameters)
@return @integer Number of sounds
@UseIN @plugin_precache()
*/
native ubb_add_sounds(sSounds[structSounds]);
/*
@Description: Add Barrier
@b_sClassName @string Entity ClassName
@b_sTargetName @string Entity TargetName
@return @integer Number of Barriers
@UseIN @plugin_precache()
*/
native ubb_add_custom_barrier(sClassName[], sTargetName[]);
/*
@Description: Add Build Entity
@b_sClassName @string Entity ClassName
@b_sTargetName @string Entity TargetName
@return @integer Number of Entites
@UseIN @plugin_precache()
*/
native ubb_add_custom_entity(sClassName[], sTargetName[]);
/*
@Description: Perform many times. Each call of an individual forward
@Args @integer, Returns a negative number if there is no argument
@Post @integer, Action performed before or after. 1 - after, 0 - before
*/
forward ubb_forwards(sForwards, Post, iArg1, iArg2, iArg3, iArg4);
/*
@Description: Get Round Phase (Build|Prephare|Release) OR ZPA
Example: if(ubb_get_round_phase() == Build)
*/
native ubb_get_round_phase();
/*
@Description: Force Set Round Phase (Build|Prephare|Release)
*/
native ubb_set_round_phase(sRoundPhase);
/*
@Description: Register Zombie Class
@return @Index Zombie Class
@UseIN @plugin_precache()
*/
native ubb_register_zombie_class(sData[structZombieClass]);
/*
@Description: Force Open Zombie Class Menu
*/
native ubb_open_zombie_class_menu(userId);
/*
@Description: Force Open Guns Menu
Example: ubb_open_guns_menu(userId, true);
return @bool, if success(true) OR not success(false)
*/
native bool:ubb_open_guns_menu(userId, bool:setPistol = false);
/*
@Description: This Player Zombie?
@return @Bool
*/
native bool:ubb_is_user_zombie(userId);
/*
@Description: This Player Builder?
@return @Bool
*/
native bool:ubb_is_user_builder(userId);
/*
@Description: Player Zombie Class Name
@return @integer, Index Zombie Class
*/
native ubb_get_user_zombie_class(userId);
/*
@Description: Get User Team
return @integer, iPlayerTeam (structPlayerTeam)
*/
native ubb_get_user_team(userId);
/*
@Description: Force Set User Team
@iPlayerTeam @integer, structPlayerTeam
*/
native ubb_set_user_team(userId, sPlayerTeam);
/*
@Description: Zombie Hands [Lock OR Unlock] (default: true)
bool:bLock true - Lock, false - Unlock
*/
native ubb_lock_zombie_hands(userId, bool:bLock = true);
/*
@Description: Reset Default Player Speed
*/
native ubb_reset_user_speed(userId);
/*
@Description: Reset Default Player Gravity
*/
native ubb_reset_user_gravity(userId);
/*
@Description: Get user Coins
return @integer, User Coins
*/
native ubb_get_user_coins(userId);
/*
@Description: Set user Coins
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_set_user_coins(userId, iCoins);
/*
@Description: Get user Ignored Status (Auto Team Balance)
return @bool, If yes(true) OR no(false)
*/
native bool:ubb_get_user_ignore_team_balanced(userId);
/*
@Description: Set user Ignored Status (Auto Team Balance)
return @bool, If yes(true) OR no(false)
*/
native bool:ubb_set_user_ignore_team_balanced(userId, bool:bIgnored = false);
/*
@Description: Set all User Ignored Status (Auto Team Balance)
*/
native ubb_set_users_ignore_team_balanced(bool:bIgnored = false);
/*
@Description: Register Extra Items
return @integer, ItemId
*/
native ubb_register_extra_item(sItemData[structExtraItems]);
/*
@Description: Force Open Extra Items Menu
*/
native ubb_open_extra_items_menu(userId);
/*
@Description: Register Custom Items
return @integer, CustomItemId
*/
native ubb_register_custom_item(sCustomData[structCustomItems]);
/*
@Description: Get Custom Item
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_is_custom_item(iCustomItemId);
/*
@Description: Force Open Build Zone Guard Menu (Create)
*/
native ubb_bzg_open_creator_menu(userId);
/*
@Description: Force Open Build Zone Guard Menu (Edit)
*/
native ubb_bzg_open_editor_menu(userId);
/*
@Description: Send Formatex Message in Chat
*/
native ubb_send_chat(userId, sMessage[], any:...);
/*
@Description: Strip User Weapons
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_strip_user_weapons(userId);
/*
@Description: Add Item for User
return @integer, ItemId
*/
native ubb_add_user_item(userId, sItem[]);
/*
@Description: Set Clip in Active Weapon
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_set_user_ammo(userId, iAmount);
/*
@Description: Set BpAmmo in Weapon
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_set_user_bpammo(userId, iWeaponId, iAmount);
/*
@Description: Get User Health
return @integer, iHealthValue
*/
native ubb_get_user_hp(userId);
/*
@Description: Set User Health
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_set_user_hp(userId, iValue);
/*
@Description: Get User Armor
return @integer, iArmorValue
*/
native ubb_get_user_armor(userId);
/*
@Description: Set User Armor
@iType 0 - no armor, 1 - armor, 2 - armor && helmet
return @bool, If success(true) OR not success(false)
*/
native bool:ubb_set_user_armor(userId, iValue, iType);
// Version Checker! Don't modify for correct work...
#if !defined _UBB2_included
public __UBB_VersionCheckErr(const Version) { if(UBB_VERSION_MIN > Version) { new sTemp[64]; formatex(sTemp, charsmax(sTemp), "[UBB] pApi version = %d > cApi version = %d", UBB_VERSION_MIN, Version); set_fail_state(sTemp); } }
#endif
Install:
Copy amxx module to addons/amxmodx/modules. Write in modules.ini -> UBB
Copy amxx plugins to addons/amxmodx/plugins. Write in plugins.ini -> plugins_names.amxx
Restart Server 🙂