[AMXX 1.10] Ultimate Base Builder [UBB]

  • Автор темы Автор темы reg1on
  • Дата начала Дата начала
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
UBB.API:
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 🙂

Test server:​

193.19.118.168:27666

Download:​

 

Вложения

Назад
Сверху