Контент Mr_Swag - Страница 3 - Моддинг Игр и Серверов Перейти к содержанию
Гость

Mr_Swag

Пользователи
  • Постов

    1 288
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Mr_Swag

  1. [CS:GO]Время до конца карты на экране / Panorama - Timeleft


    Простой и легкий плагин - выносит время до смены/конца карты в HUD на экран игроку.

    Как выглядит - можно увидеть на скриншоте выше.

    Никаких настроек и команд.Сразу к установке.

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)

     

     


     

  2. [CS:GO] Рандомное создавание предметов / Entity Spawner


    Плагин позволяет рандомно создавать вещи на карте (оружие,пропы и тд).

    Хорошо подойдет  для Zombie  или TTT сервера в CS:GO

     

    Для работы этого плагина потребуется основа:

     

    Команды:

    sm_esspawn - Создает предметы на карте 
    sm_esclear - Удаляет все предметы на карте,которые были созданы этим плагином
    sm_esreload - Перезагружает entities.cfg 

     

    Настройки:

    entityspawner_nav_areas_required - сколько должно быть NavArea на карте, чтобы создавать предметы

    entityspawner_spawn_limit - лимит ентитей, после которого плагин прекращает создавать новые

     

    Видео:

    Пример конфига предметов для создания:

    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    //                            INFO
    //
    //    The config is read from top to bottom, so maps put further up
    //     the config will be prioritized
    //
    //    Example:
    //    - de_dust2
    //    - de_
    //
    //    If the map is dust2, the spawns for that section will be read.
    //     If the map is nuke, the spawns for "de_" section will be read.
    //
    //    MAP KEYS:
    //    "spawnroundstart"    "<number>"            - 0 will disable entity spawning on round start
    //                                            - 1 will enable entity spawning on round start
    //
    //    "maxroundspawns"    "<number>"            - Amount of rounds entities will spawn
    //                                            - 0 will spawn entities every round
    //
    //    "spawninterval"        "<number>"            - Amount of seconds until entities should spawn again
    //                                            - 0 will disable
    //
    //    "resettimer"        "<0/1>"                - Should the spawn timer be reset on round start or transfer over rounds
    //
    //
    //    ENTITY KEYS:
    //    "classname"            "<string>"            - The classname of the entity you want to spawn
    //                                            - List of CSGO specific entities can be found here: [url]https://developer.valvesoftware.com/wiki/List_of_Counter-Strike:_Global_Offensive_Entities[/url]
    //
    //    "keyvalue<number>"    "<key> <value>"        - Enter a keyvalue for a entity, this is optional
    //                                            - If you need to set multiple keyvalues, just increment the number after the key
    //                                            Example:
    //                                            - "keyvalue0"    "model modelpath/modelname.mdl"
    //                                            - "keyvalue1"    "modelscale 5.0"
    //
    //    "prop<number>"        "<prop> <value>"    - Enter a value for an entity property, this is optional
    //                                            - If you need to set multiple props, just increment the number after the key
    //                                            Example:
    //                                            - "prop0"    "m_iHealth 2"
    //                                            - "prop1"    "m_vecOrigin 50.0 24.5 36.0"
    //                                            - "prop2"    "m_iszName hehehehe"
    //
    //    "maxspawns"            "<number">            - Max amount of times this entity could be spawned per round.
    //                                              However, it does not guarantee that it will spawn this amount of times.
    //
    //    "zoffset"            "<decimal>"            - If the terrain is very uneven like dust2, increase this value a bit (5.0 - 10.0)
    //                                              and you might see an increase of spawns.
    //                                            - The reason for this key is because everytime a prop is spawned, it makes sure
    //                                              that the prop fits around the area its spawned.
    //                                            - Increasing this value will make the prop spawn higher above the ground
    //
    //    "slopes"            "<0/1>"                - Can this entity spawn on slopes or only flat surfaces
    //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    // This stock config will spawn AWPS/Breakable crates/Chickens on maps that start with "de_" or "cs_"
    
    "entities"
    {
        "de_"
        {
            "spawnroundstart"    "1"
            "maxroundspawns"    "0"
            "spawninterval"        "0"
            "resettimer"        "1"
            
            "AWP"
            {
                "classname"        "weapon_awp"
                "maxspawns"        "20"
                "zoffset"        "10.0"
                "slopes"        "1"
            }
            
            "Breakable Crate"
            {
                "classname"        "prop_physics_override"
                "keyvalue0"        "model models/props_junk/wood_crate001a.mdl"
                "prop0"            "m_takedamage 2"
                "maxspawns"        "50"
                "zoffset"        "10.0"
                "slopes"        "1"
            }
            
            "Chicken Medium"
            {
                "classname"        "chicken"
                "maxspawns"        "20"
                "zoffset"        "5.0"
                "slopes"        "1"
            }
        }
        
        "cs_"
        {
            "spawnroundstart"    "1"
            "maxroundspawns"    "0"
            "spawninterval"        "0"
            "resettimer"        "1"
            
            "AWP"
            {
                "classname"        "weapon_awp"
                "maxspawns"        "20"
                "zoffset"        "10.0"
                "slopes"        "1"
            }
            
            "Breakable Crate"
            {
                "classname"        "prop_physics_override"
                "keyvalue0"        "model models/props_junk/wood_crate001a.mdl"
                "prop0"            "m_takedamage 2"
                "maxspawns"        "50"
                "zoffset"        "10.0"
                "slopes"        "1"
            }
            
            "Chicken Medium"
            {
                "classname"        "chicken"
                "maxspawns"        "20"
                "zoffset"        "5.0"
                "slopes"        "1"
            }
        }
    }  

     

     

    Разработчикам:

    #if defined _entityspawner_included
     #endinput
    #endif
    #define _entityspawner_included
    
    #define ES_PREFIX " \x09[\x04ES\x09]"
    #define ES_MAX_ENTITIES 256
    #define ES_INVALID_MAX_SPAWNS 0
    #define ES_INVALID_SPAWN_INTERVAL 0
    #define ES_INVALID_PROP_SEND_OFFSET -1
    #define ES_INVALID_PROP_DATA_OFFSET -1
    
    /**
     * Spawns random entities on the map (Set in entityspawner.cfg)
     * @return int         amount of entities spawned
     */
    native int ES_SpawnEntities();
    
    /**
     * Clears all randomly spawned entities
     * @return int         amount of entities removed
     */
    native int ES_ClearEntities();
    
    /**
     * Returns true if spawning is enabled on round start
     * @return bool        are entities spawning on round start
     */
    native bool ES_IsSpawningOnRoundStart();
    
    /**
     * Returns true if theres enough nav areas (Set by convar) and if config is setup for current map
     * @return bool        enough nav areas/config setup
     */
    native bool ES_IsRandomSpawnsEnabled();
    
    /**
     * Called when entities are randomly spawned across the map
     * @param entities that spawned (Entity references)
     * @param amount of entities spawned
     * @noreturn
     */
    forward void ES_OnEntitiesSpawned(int entities[ES_MAX_ENTITIES], int entCount);
    
    /**
     * Called when all randomly spawned entities are removed
     * @param amount of entities removed
     * @noreturn
     */
    forward void ES_OnEntitiesCleared(int entCount);
    
    public SharedPlugin __pl_entityspawner  =
    {
        name = "entityspawner",
        file = "entityspawner.smx",
    #if defined REQUIRE_PLUGIN
        required = 1
    #else
        required = 0
    #endif
    };
    
    #if !defined REQUIRE_PLUGIN
    public __pl_entityspawner_SetNTVOptional()
    {    
        MarkNativeAsOptional("ES_SpawnEntities");
        MarkNativeAsOptional("ES_ClearEntities");
        MarkNativeAsOptional("ES_IsSpawningOnRoundStart");
        MarkNativeAsOptional("ES_IsRandomSpawnsEnabled");
    }
    #endif  

     

  3. [CS:GO/CS:S] Загрузка конфигов / AlfaLoader - Config Executor


    Плагин позволяет запустить конфиг (или конфиги) прописанные в configs/configexecutor.cfg

    Может пригодиться для разных целей.

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  4. [CS:GO] Заморозка в ледяном кубе / Ice Cube


    Красивый и эффектный плагин для CS:GO.Замораживает игроков в ледяном кубе,с соответствующим звуком.

    В архиве с плагином идет и моделька ледяного куба - не забудьте её добавить на свой сервер и FastDL.

     

    Видео плагина:

     

    Настройки:

    sm_ice_snow - создаватьс нег вокруг куба во время заморозки?
    sm_ice_freezetime - замораживать игроков во льду во время закупа (freezetime)?
    sm_ice_volume  - уровень громкости звука заморозки

     

    Админ команды:

    sm_ice - замораживает игрока во льду
    sm_unice - размораживает игрока

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  5. [CS:GO] Визуализация NavArea/ Nav Area Utilities


    Плагин, в основном, для разработчиков работающих над созданием карт для CS:GO.

    Помогает определять NavArea на карте и визуализировать их.

     

    Команды:

    sm_naucount - Показывает количество nav area на карте
    sm_nauarea -  Визуализирует NavArea (sm_nauarea <navareaindex(optional)> <showneighbours(0-1)>

     

    Для разработчиков:

    #if defined _navareautilities_included 
     #endinput 
    #endif 
    #define _navareautilities_included 
    
    #define NAU_PREFIX " \x09[\x04Nav UTIL\x09]" 
    
    #define NAU_GAMEDATA "navareautilities.gamedata" 
    
    #define NAU_VERSION "1.02" 
    
    #define NAU_NAVAREA_PARENT 0x7C 
    
    #define NAU_NAVAREA_SOUTH_NAV_CONNECT_VECTOR 0x5C 
    
    #define NAU_NAVAREA_LADDER_INDICATOR 0x34 
    
    #define NAU_NAVAREA_LADDER_HEIGHT 0x18 
    #define NAU_NAVAREA_LADDER_WIDTH 0x1C 
    
    #define NAU_NAVAREA_LADDER_NAVAREAS 0x20 
    
    enum NavDirType 
    { 
        NAVDIR_SOUTH =             0, 
        NAVDIR_EAST =             1, 
        NAVDIR_NORTH =             2, 
        NAVDIR_WEST =             3, 
        NAVDIR_UP =                4, 
        NAVDIR_DOWN =            5, 
         
        NAVDIR_MAX 
    } 
    
    enum NavLadderDestination 
    { 
        NAVLADDER_TOP_FORWARD = 0, 
        NAVLADDER_TOP_LEFT =     1, 
        NAVLADDER_TOP_RIGHT =     2, 
        NAVLADDER_TOP_BEHIND =     3, 
        NAVLADDER_BOTTOM =        4, 
         
        NAVLADDER_MAX 
    } 
    
    /** 
     * Returns amount of nav areas 
     * @return int         amount of nav areas 
     */ 
    native int NAU_GetNavAreaCount(); 
    
    /** 
     * Returns an address of a navareaindex 
     * @return address         address of nav area 
     */ 
    native CNavArea NAU_GetNavAreaAddressByIndex(int navAreaIndex); 
    
    /** 
     * Called when nav areas are loaded by plugin (OnMapStart) 
     * @param amount of nav areas found 
     * @noreturn 
     */ 
    forward void NAU_OnNavAreasLoaded(); 
    
    methodmap CNavArea 
    { 
        /** 
         * Returns the north west corner of the nav area 
         * @param buffer to store the position 
         * @return void 
         */ 
        public void GetNorthWestCorner(float result[3]) 
        { 
            result[0] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(4), NumberType_Int32)); 
            result[1] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(8), NumberType_Int32)); 
            result[2] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(12), NumberType_Int32)); 
        } 
         
        /** 
         * Returns the south east corner of the nav area 
         * @param buffer to store the position 
         * @return void 
         */ 
        public void GetSouthEastCorner(float result[3]) 
        { 
            result[0] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(16), NumberType_Int32)); 
            result[1] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(20), NumberType_Int32)); 
            result[2] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(24), NumberType_Int32)); 
        } 
         
        /** 
         * Get the parent nav area 
         * @return address        address of the parent nav area 
         */ 
        public CNavArea GetParent() 
        { 
            Address navParent =    view_as<Address>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_PARENT), NumberType_Int32)); 
            return view_as<CNavArea>(LoadFromAddress(navParent, NumberType_Int32)); 
        } 
         
        /** 
         * Get the amount of nav areas in direction 
         * @param direction 
         * @return int        Amount of neighbours in direction 
         */ 
        public int GetNeighbourCount(NavDirType direction) 
        { 
            Address navConnectVector =    view_as<Address>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_SOUTH_NAV_CONNECT_VECTOR + (0x4 * view_as<int>(direction))), NumberType_Int32)); 
            return LoadFromAddress(navConnectVector, NumberType_Int32); 
        } 
         
        /** 
         * Get address of a neighbour nav area 
         * @param direction 
         * @param neighbour index 
         * @return address         address of the neighbour nav area 
         */ 
        public CNavArea GetNeighbour(NavDirType direction, int directionListIndex) 
        { 
            Address navConnectVector =    view_as<Address>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_SOUTH_NAV_CONNECT_VECTOR + (0x4 * view_as<int>(direction))), NumberType_Int32)); 
            return view_as<CNavArea>(LoadFromAddress(navConnectVector + view_as<Address>(0x4 + (0x8 * view_as<int>(directionListIndex))), NumberType_Int32)); 
        } 
         
        /** 
         * Hacky way to find out if the nav area a CNavLadder or CNavArea 
         * @return bool     if ladder area or not 
         */ 
        public bool IsNavLadder() 
        { 
            int hack = view_as<int>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_LADDER_INDICATOR), NumberType_Int32)); 
            return hack == -1; 
        } 
         
        public bool IsNullPointer() 
        { 
            return view_as<Address>(this) <= Address_Null; 
        } 
         
        /** 
         * Returns the center position of the nav area 
         * @param buffer to store the position 
         * @return void 
         */ 
        public void GetCenter(float result[3]) 
        { 
            float nwCorner[3], seCorner[3]; 
            this.GetNorthWestCorner(nwCorner); 
            this.GetSouthEastCorner(seCorner); 
             
            NAU_GetMiddleOfABox(nwCorner, seCorner, result); 
        } 
         
        /** 
         * Returns wether or not the entity has larger X/Y values than the nav area 
         * @param entity index 
         * @return bool        can entity fit in nav area 
         */ 
        public bool CanEntityFit(int entity) 
        { 
            float mid[3], vMins[3], vMaxs[3]; 
            GetEntPropVector(entity, Prop_Data, "m_vecMins", vMins); 
            GetEntPropVector(entity, Prop_Data, "m_vecMaxs", vMaxs); 
             
            mid[0] /= 2.0; 
            mid[1] /= 2.0; 
            mid[2] /= 2.0; 
             
            if(mid[0] < 0.0) mid[0] *= -1; 
            if(mid[1] < 0.0) mid[1] *= -1; 
            if(mid[2] < 0.0) mid[2] *= -1; 
             
            float nwCorner[3], seCorner[3], navAreaMid[3]; 
            this.GetNorthWestCorner(nwCorner); 
            this.GetSouthEastCorner(seCorner); 
             
            MakeVectorFromPoints(seCorner, nwCorner, navAreaMid); 
             
            navAreaMid[0] /= 2.0; 
            navAreaMid[1] /= 2.0; 
            navAreaMid[2] /= 2.0; 
             
            if(navAreaMid[0] < 0.0) navAreaMid[0] *= -1; 
            if(navAreaMid[1] < 0.0) navAreaMid[1] *= -1; 
            if(navAreaMid[2] < 0.0) navAreaMid[2] *= -1; 
             
            return (mid[0] <= navAreaMid[0] && mid[1] <= navAreaMid[1]); 
        } 
         
        /** 
         * Returns wether or not the entity has larger X/Y values than the nav area 
         * @param Mins of box 
         * @param Maxs of box 
         * @return bool        can entity fit in nav area 
         */ 
        public bool CanFit(float vMins[3], float vMaxs[3]) 
        { 
            float mid[3]; 
            MakeVectorFromPoints(vMins, vMaxs, mid); 
            mid[0] /= 2.0; 
            mid[1] /= 2.0; 
             
            if(mid[0] < 0.0) mid[0] *= -1; 
            if(mid[1] < 0.0) mid[1] *= -1; 
             
            float nwCorner[3], seCorner[3], navAreaMid[3]; 
            this.GetNorthWestCorner(nwCorner); 
            this.GetSouthEastCorner(seCorner); 
             
            MakeVectorFromPoints(seCorner, nwCorner, navAreaMid); 
             
            navAreaMid[0] /= 2.0; 
            navAreaMid[1] /= 2.0; 
             
            if(navAreaMid[0] < 0.0) navAreaMid[0] *= -1; 
            if(navAreaMid[1] < 0.0) navAreaMid[1] *= -1; 
             
            return (mid[0] <= navAreaMid[0] && mid[1] <= navAreaMid[1]); 
        } 
         
        /** 
         * Get a random position within a nav area, returns false if the mins/maxs are bigger than the area 
         * @param Mins of entity you want to fit in the area 
         * @param Maxs of entity you want to fit in the area 
         * @param buffer to store the position 
         * @return bool        can entity fit in nav area 
         */ 
        public bool GetRandomPos(float vMins[3], float vMaxs[3], float result[3]) 
        { 
            // To stop random crashes if someone were to do stuff on a navladder 
            if(this.IsNavLadder()) 
                return false; 
                 
            bool returnVal = true; 
            float mid[3]; 
            MakeVectorFromPoints(vMins, vMaxs, mid); 
            mid[0] /= 2.0; 
            mid[1] /= 2.0; 
             
            if(mid[0] < 0.0) mid[0] *= -1; 
            if(mid[1] < 0.0) mid[1] *= -1; 
             
            float nwCorner[3], seCorner[3], navAreaMid[3]; 
            this.GetNorthWestCorner(nwCorner); 
            this.GetSouthEastCorner(seCorner); 
             
            MakeVectorFromPoints(seCorner, nwCorner, navAreaMid); 
             
            navAreaMid[0] /= 2.0; 
            navAreaMid[1] /= 2.0; 
             
            if(navAreaMid[0] < 0.0) navAreaMid[0] *= -1; 
            if(navAreaMid[1] < 0.0) navAreaMid[1] *= -1; 
             
            if(mid[0] > navAreaMid[0] || mid[1] > navAreaMid[1]) 
                returnVal = false; 
             
            // Add/Subtract half of the size to the random pos (To make the entity fit properly) 
            result[0] = GetRandomFloat(nwCorner[0] + mid[0], seCorner[0] - mid[0]); 
            result[1] = GetRandomFloat(nwCorner[1] + mid[1], seCorner[1] - mid[1]); 
             
            // Set the position to the highest point (TODO: Add function to calculate the height of the slope at a certain point of the plane) 
            result[2] = seCorner[2]; 
             
            return returnVal; 
        } 
    
        /** 
         * Get the difference in Z positions of the nav area (Used to check if its a slope or not, returns 0 if plane surface) 
         * @return float        Z position difference 
         */ 
        public float GetZDifference() 
        { 
            float nwCorner[3], seCorner[3]; 
            this.GetNorthWestCorner(nwCorner); 
            this.GetSouthEastCorner(seCorner); 
             
            return seCorner[2] - nwCorner[2]; 
        } 
    } 
    
    methodmap CNavLadder < CNavArea 
    { 
        /** 
         * Get the top left position of the nav ladder area 
         * @param buffer to store the position 
         * @return void 
         */ 
        public void GetTop(float result[3]) 
        { 
            result[0] = view_as<float>(LoadFromAddress(view_as<Address>(this), NumberType_Int32)); 
            result[1] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(4), NumberType_Int32)); 
            result[2] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(8), NumberType_Int32)); 
        } 
         
        /** 
         * Get the bottom right position of the nav ladder area 
         * @param buffer to store the position 
         * @return void 
         */ 
        public void GetBottom(float result[3]) 
        { 
            result[0] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(12), NumberType_Int32)); 
            result[1] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(16), NumberType_Int32)); 
            result[2] = view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(20), NumberType_Int32)); 
        } 
         
        /** 
         * Get the height of the ladder 
         * @return float    height of ladder 
         */ 
        public float GetHeight() 
        { 
            return view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_LADDER_HEIGHT), NumberType_Int32)); 
        } 
         
        /** 
         * Get the width of the ladder 
         * @return float    width of ladder 
         */ 
        public float GetWidth() 
        { 
            return view_as<float>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_LADDER_WIDTH), NumberType_Int32)); 
        } 
         
        /** 
         * Get address of a destination nav area from a ladder (check NavLadderDestination) 
         * @param ladder destination 
         * @return address         address of the destination nav area (Address_Null if invalid navarea) 
         */ 
        public CNavArea GetDestinationNavArea(NavLadderDestination destination) 
        { 
            return view_as<CNavArea>(LoadFromAddress(view_as<Address>(this) + view_as<Address>(NAU_NAVAREA_LADDER_NAVAREAS + (0x4 * view_as<int>(destination))), NumberType_Int32)); 
        } 
         
        /** 
         * Get the center position of the nav ladder area 
         * @param buffer to store the position 
         * @return void 
         */ 
        public void GetCenter(float result[3]) 
        { 
            float nwCorner[3], seCorner[3]; 
            this.GetTop(nwCorner); 
            this.GetBottom(seCorner); 
             
            NAU_GetMiddleOfABox(nwCorner, seCorner, result); 
        } 
    } 
    
    /** 
     * Get closes neighbour nav area (By checking their center positions) 
     * @param address of the nav area to check 
     * @param a position to check which nav area is closest 
     * @return address         address of the closest neighbour area 
     */ 
    public CNavArea NAU_GetClosestNavAreaNeighbour(CNavArea navArea, float pos[3]) 
    { 
        CNavArea closestNavArea = navArea; 
        float startPos[3]; 
        //GetNavAreaCenter(navAreaAddress, startPos); 
        if(!closestNavArea.IsNavLadder()) 
            closestNavArea.GetCenter(startPos); 
        else 
        { 
            CNavLadder ladder = view_as<CNavLadder>(closestNavArea); 
            ladder.GetCenter(startPos); 
        } 
             
        float closestDistance = GetVectorDistance(pos, startPos, true); 
        bool gotfirst = false; 
        if(navArea.IsNavLadder()) 
        { 
            ArrayList ladderDestinations = new ArrayList(); 
            for (int i = 0; i < view_as<int>(NAVLADDER_MAX); i++) 
            { 
                CNavLadder ladder = view_as<CNavLadder>(navArea); 
                CNavArea destination = ladder.GetDestinationNavArea(view_as<NavLadderDestination>(i)); 
                 
                if(!destination.IsNullPointer()) 
                    ladderDestinations.Push(destination); 
            } 
             
            CNavArea destination = ladderDestinations.Get(GetRandomInt(0, ladderDestinations.Length - 1)); 
             
            float navPos[3]; 
            if(!destination.IsNavLadder()) 
                destination.GetCenter(navPos); 
            else 
            { 
                CNavLadder ladder = view_as<CNavLadder>(destination); 
                ladder.GetCenter(navPos); 
            } 
    
            closestNavArea = destination; 
            delete ladderDestinations; 
        } 
        else 
        { 
            for (int i = 0; i < view_as<int>(NAVDIR_MAX); i++) 
            { 
                int neighbourCount = navArea.GetNeighbourCount(view_as<NavDirType>(i)); 
                for (int j = 0; j < neighbourCount; j++) 
                { 
                    CNavArea neighbour = navArea.GetNeighbour(view_as<NavDirType>(i), j); 
                     
                    float navPos[3]; 
                    //GetNavAreaCenter(neighbour, navPos); 
                     
                    if(!closestNavArea.IsNavLadder()) 
                        neighbour.GetCenter(navPos); 
                    else 
                    { 
                        CNavLadder ladder = view_as<CNavLadder>(neighbour); 
                        ladder.GetCenter(navPos); 
                    } 
         
                    float dist = 0.0; 
                    if((dist = GetVectorDistance(navPos, pos, true)) < closestDistance || !gotfirst) 
                    { 
                        closestNavArea = neighbour; 
                        closestDistance = dist; 
                        gotfirst = true; 
                    } 
                } 
            } 
        } 
         
        return closestNavArea; 
    } 
    
    public void NAU_DebugNavArea(int client, CNavArea navArea, int laserModelIndex) 
    { 
        float navAreaNW[3], navAreaSE[3], center[3]; 
         
        if(!navArea.IsNavLadder()) 
        { 
            navArea.GetNorthWestCorner(navAreaNW); 
            navArea.GetSouthEastCorner(navAreaSE); 
            navArea.GetCenter(center); 
        } 
        else 
        { 
            CNavLadder ladder = view_as<CNavLadder>(navArea); 
            ladder.GetTop(navAreaNW); 
            ladder.GetBottom(navAreaSE); 
            ladder.GetCenter(center); 
        } 
    
        if(client > 0 && client <= MaxClients && IsClientInGame(client)) 
        { 
            NAU_PrintVector(client, "North West: ", navAreaNW); 
            NAU_PrintVector(client, "South East: ", navAreaSE); 
            NAU_PrintVector(client, "Center: ", center); 
        } 
         
        NAU_SendBox(navAreaSE, navAreaNW, laserModelIndex, { 255, 0, 0, 255 }, 5.0); 
    } 
    
    
    public void NAU_DebugNavAreaNeighbours(int client, CNavArea navArea, int laserModelIndex) 
    { 
        if(navArea.IsNavLadder()) 
        { 
            for (int i = 0; i < view_as<int>(NAVLADDER_MAX); i++) 
            { 
                CNavLadder ladder = view_as<CNavLadder>(navArea); 
                CNavArea destination = ladder.GetDestinationNavArea(view_as<NavLadderDestination>(i)); 
                NAU_DebugNavArea(client, destination, laserModelIndex); 
            } 
        } 
        else 
        { 
            for (int i = 0; i < view_as<int>(NAVDIR_MAX); i++) 
            { 
                int neighbourCount = navArea.GetNeighbourCount(view_as<NavDirType>(i)); 
                for (int j = 0; j < neighbourCount; j++) 
                { 
                    CNavArea neighbour = navArea.GetNeighbour(view_as<NavDirType>(i), j); 
                    NAU_DebugNavArea(client, neighbour, laserModelIndex); 
                } 
            } 
        } 
    } 
    
    /** 
     * Get the address of the clients last known nav area (Private hidden variable: offset 0x8D8 as of 7/31/2018) 
     * @param client index 
     * @return address         address of the last known nav area (Address_Null if player has no last known nav area) 
     */ 
    public CNavArea NAU_GetClientLastKnownNavArea(int client) 
    { 
        // Make shit break less 
        return view_as<CNavArea>(GetEntData(client, FindSendPropInfo("CBaseCombatCharacter", "m_nRelativeDirectionOfLastInjury") + 0x8)); 
    } 
    
    public void NAU_Initialize(Address& navCount, Address& navAreas) 
    { 
        Handle hConf = LoadGameConfigFile(NAU_GAMEDATA); 
         
        navCount = GameConfGetAddress(hConf, "navarea_count"); 
    #if defined DEBUG 
        PrintToServer("Found \"navarea_count\" @ 0x%X", navCount); 
    #endif 
        navAreas = view_as<Address>(LoadFromAddress(navCount + view_as<Address>(0x4), NumberType_Int32)); 
    #if defined DEBUG 
        PrintToServer("Found \"TheNavAreas\" @ 0x%X", navAreas); 
    #endif 
        delete hConf; 
         
    #if defined DEBUG 
        int navAreaCount = NAU_GetNavAreaCount(); 
        PrintToServer("Nav area count: %d", navAreaCount); 
    #endif 
    } 
    
    public void NAU_GetMiddleOfABox(const float vec1[3], const float vec2[3], float result[3]) 
    { 
        float mid[3]; 
        MakeVectorFromPoints(vec1, vec2, mid); 
        mid[0] /= 2.0; 
        mid[1] /= 2.0; 
        mid[2] /= 2.0; 
        AddVectors(vec1, mid, result); 
    } 
    
    public bool NAU_IsPositionBlocked(float pos[3], float vMins[3], float vMaxs[3]) 
    { 
        Handle ray = TR_TraceHullFilterEx(pos, pos, vMins, vMaxs, MASK_PLAYERSOLID, NAU_TraceFilterNothing); 
        return TR_DidHit(ray); 
    } 
    
    public bool NAU_TraceFilterNothing(int entityhit, int mask, any entity) 
    { 
        if(entityhit == 0) 
            return true; 
         
        return false; 
    } 
    
    public bool NAU_IsPositionBlockedIgnoreSelf(float pos[3], float vMins[3], float vMaxs[3], int entity) 
    { 
        Handle ray = TR_TraceHullFilterEx(pos, pos, vMins, vMaxs, MASK_PLAYERSOLID, NAU_TraceFilterIgnoreSelf, entity); 
        return TR_DidHit(ray); 
    } 
    
    public bool NAU_TraceFilterIgnoreSelf(int entityhit, int mask, any entity) 
    { 
        if(entityhit > -1 && entityhit != entity) 
            return true; 
         
        return false; 
    } 
    
    public void NAU_PrintVector(int client, char[] prefix, float pos[3]) 
    { 
        PrintToChat(client, "%s %s\x02%.2f \x04%.2f \x0C%.2f", NAU_PREFIX, prefix, pos[0], pos[1], pos[2]); 
    } 
    
    public void NAU_SendBox(float vMins[3], float vMaxs[3], int modelIndex, int color[4], float lifetime) 
    { 
        float vPos1[3], vPos2[3], vPos3[3], vPos4[3], vPos5[3], vPos6[3]; 
        vPos1 = vMaxs; 
        vPos1[0] = vMins[0]; 
        vPos2 = vMaxs; 
        vPos2[1] = vMins[1]; 
        vPos3 = vMaxs; 
        vPos3[2] = vMins[2]; 
        vPos4 = vMins; 
        vPos4[0] = vMaxs[0]; 
        vPos5 = vMins; 
        vPos5[1] = vMaxs[1]; 
        vPos6 = vMins; 
        vPos6[2] = vMaxs[2]; 
        NAU_SendBeam(vMaxs, vPos1, modelIndex, color, lifetime); 
        NAU_SendBeam(vMaxs, vPos2, modelIndex, color, lifetime); 
        NAU_SendBeam(vMaxs, vPos3, modelIndex, color, lifetime);    //Vertical 
        NAU_SendBeam(vPos6, vPos1, modelIndex, color, lifetime); 
        NAU_SendBeam(vPos6, vPos2, modelIndex, color, lifetime); 
        NAU_SendBeam(vPos6, vMins, modelIndex, color, lifetime);    //Vertical 
        NAU_SendBeam(vPos4, vMins, modelIndex, color, lifetime); 
        NAU_SendBeam(vPos5, vMins, modelIndex, color, lifetime); 
        NAU_SendBeam(vPos5, vPos1, modelIndex, color, lifetime);    //Vertical 
        NAU_SendBeam(vPos5, vPos3, modelIndex, color, lifetime); 
        NAU_SendBeam(vPos4, vPos3, modelIndex, color, lifetime); 
        NAU_SendBeam(vPos4, vPos2, modelIndex, color, lifetime);    //Vertical 
    } 
    
    public void NAU_SendBeam(const float vMins[3], const float vMaxs[3], int modelIndex, const int color[4], float lifetime) 
    { 
        TE_SetupBeamPoints(vMins, vMaxs, modelIndex, modelIndex, 0, 0, lifetime, 1.0, 1.0, 1, 0.0, color, 0); 
        TE_SendToAll(); 
    } 
    
    
    public SharedPlugin __pl_navareautilities  = 
    { 
        name = "navareautilities", 
        file = "navareautilities.smx", 
    #if defined REQUIRE_PLUGIN 
        required = 1 
    #else 
        required = 0 
    #endif 
    }; 
    
    #if !defined REQUIRE_PLUGIN 
    public __pl_navareautilities_SetNTVOptional() 
    {     
        MarkNativeAsOptional("NAU_GetNavAreaCount"); 
        MarkNativeAsOptional("NAU_GetNavAreaAddressByIndex"); 
    } 
    #endif  

     

    Видео:


     

  6. [CS:GO] Курица - питомец / Chicken Pet


    Плагин позволяет игроку создать себе свою собственную курочку питомца!

    Она полностью анимированная,и следует за игрокоам.Кстати,на которую, можно нацепить: крылья (мы сделали тебе крылья на крылья у курицы ага) и шапки.Прямо на голову курице можно цеплять шапки...Боже как же много у людей свободного времени...

     

    Видео:

     

    Настройки:

    sm_chicken_kill - пропадать ли курице после убийства её хозяина? 1 = да , 0 = нет

     

    Команды:

    sm_chicken - открывает меню управления курочкой
    sm_ec - меню управления курицей

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  7. [CS:GO] Показ урона как в Fortnite / Fortnite like damage showing


    На сайте уже есть другая версия "Отображения урона в HUD как в Fortnite", и скачать ее вы можете здесь:

     

     

    Но версия которая сейчас перед вами - более новая,более совершенная и оптимизированная.Да и к тому же более красивая - эффект анимации на уровне.

    Идеально для веселых не напряжных серверов, Surf серверов или Минигеймов.

     

    На видео можно увидеть плагин в действии:

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)

    Файлы текстур желательно закинуть на FastDL


     

  8. [CS:GO][Retakes]Раунды с разными закупами / MyWeaponAllocator


    Плагин-дополнение для Retales (Захваты).Позволяет разнообразить геймплей, чередуя разные варианты закупов: Полный закуп, Форс, Пистолетка и Раунд на Диглах.

    Игроки через меню !guns могут выбирать какое оружие они хотят использовать в этих раундах.

    Броня,хп и другая аммуниция будут выдаваться в зависимости от раундов.

     

    Для работы плагина требуется основа (ядро) Retakes:

     

    Есть два режима выбора раундов:

    mywa_rounds_chance 1 - Первые X раундов будут Пистолетками, следующие X раундов - Форсы, и последующие - Полный закуп

    mywa_rounds_chance 0 - абсолютно рандомный порядок выпадению раундов + добавляется еще один раунд: На Диглах (Deagle)

     

    Настройки:


    mywa_enable "1" - включение и выключение плагина


    mywa_rounds_chance "1" - режим выбора раундов


    mywa_chance_pistol "20" - какая вероятность выпадения Пистолетки


    mywa_chance_force "30" - какая вероятность выпадения Форса


    mywa_chance_deagle "5" - какая вероятность выпадения Раунда на диглах


    mywa_rounds_pistol "3" - сколько раундов будет Пистолетками


    mywa_rounds_force "4" - сколько раундов будет Форсами


    mywa_money_full "16000" - сколько денег выдавать в раунде Полного Закупа


    mywa_money_pistol "800" - денег для закупа во время пистолетки


    mywa_money_force "2400" - денег для закупа во время Форса


    mywa_awp_min_t "3" - минимальное количество террористов для разблокировки AWP


    mywa_scout_min_t "2" - минимальное количество террористов для разблокировки Scout (ssg,мухи)


    mywa_awp_t "1" - максимальное количество AWP разрешенных террористам


    mywa_scout_t "1" - максимальное количество Scout (мух) для террористов


    mywa_molotov_t "2" - максимальное количество коктейлей молотова у террористов


    mywa_smoke_t "2" - максимальное количество дымовух у террористов


    mywa_flash_t "3" - максимальное количество флешек у террористов


    mywa_he_t "3"  - максимальное количество осколочных гранат у террористов


    mywa_awp_min_ct "3" - минимальное количество контров для разблокировки AWP


    mywa_scout_min_ct "2" - минимальное количество контров для разблокировки Scout (ssg,мухи)


    mywa_awp_ct "1" - максимальное количество AWP у контров


    mywa_scout_ct "1" - максимальное количество Scout (мух) у контров


    mywa_molotov_ct "2" - максимальное количество коктейлей молотова у контров

     
    mywa_smoke_ct "2" - максимальное количество дымовух у контров


    mywa_flash_ct "3" - максимальное количество флешек у контров


    mywa_he_ct "3"  - максимальное количество осколочных гранат у контров


    mywa_buy_order "0" - порядок в котором закупать инвентарь: 0 - рандомно,  1 - гранаты,броня и дефуза , 2 - броня,дефуза и гранаты


    mywa_kevlar "1" - выдавать бронь?


    mywa_helm "1" - выдавать шлем?


    mywa_defuser "1" - выдавать дефуза?


    mywa_deagle "1" - разрешить Дигл во время пистолеток и полного закупа?


    mywa_revolver "1" - разрешить револьвер во время пистолеток и полного закупа?

     
    mywa_bombsite "1" -
    включить оповещения о закладке бомбы?

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  9. [CS:GO] Новые гранаты / Grenade Modes [Nademodes]


    Sourcemod плагин для CS:GO, добавляющий новые моды/режимы гранат на сервер.

     

    Видео:

     

     

    На данный момент у гранат есть 4 режима:

    • Классические гранаты
    • Контактные,мины (взрываются от прикосновения)
    • С датчиком движения (взрываются когда враг рядом,но не задел гранату)
    • Мины-растяжки (взрываются когда игрок пересекает линию,лазер)

     

    Игрок может выбрать какой тип гранаты использовать, нажав кнопку F (+lookatweapon , осмотр оружия).Этот процесс показан на видео выше.

    Цветовые эффекты гранат (цвет лазера, маяков и тд) зависит от команды игрока.Вражеские гранаты будут в красном цвете, союзнические - в синем.Это по стандартным значениям.Через настройки все можно изменить на свои цвета.

     

    Настройки:

    "sm_grenade_modes_enable" - включает и отключает плагин
    "sm_grenade_modes_self_color" - Цвет гранат игрока
    "sm_grenade_modes_teammate_color" - Цвет гранат союзников
    "sm_grenade_modes_enemy_color" - Цвета противников
    "sm_grenade_modes_proximity_powerup_time" - Время установки гранаты с датчиком движения
    "sm_grenade_modes_tripwire_powerup_time" - Время установки мины-растяжки

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


    • Добавил
    • Добавлено
      19.02.2019
    • Категория

     

  10. [CS:GO/CS:S]Сохранение побед игрока / Wins Counter (for battle royal servers)


    Плагин сохраняет в базу данных все победы игрока, и подгружает их при подключении к серверу.

    Сделано для Королевской битвы CS:GO ( battle royal ).

    Плагин поддерживает SQLite и MySQL на выбор.

     

    Все настройки плагина можно найти в файле  cfg/sourcemod/wins_counter.cfg  который будет сгенерирован после первого запуска.

     

    Админ-команда:

    sm_setwins <ник #userid> <количество побед> - устанавить конкретному игроку определенное число побед

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  11. [CS:GO]Издевательство над игроками / Abusive Admin Commands


    Плагин для cs:go, добавляет новые возможности для админов по издевательству над игроками.Ну или для веселья.Кому как)

     

    Список команд:

    !target <ник> - выбрать цель-жертву

    !untarget - удалить выбранную цель

    !brake - раздавить игрока

    !chicken - создать куриц над игроком

    !shake - устроить землятресение игроку

    !invert - поменять кнопки управления игрока ("вперед" станет кнопкой "назад" и тд)

    !targetsay  <сообщение> - напишет в чат ваш текст от имени жертвы

    !targetteamsay - то же самое что команда выше,но напишет в командный чат

    !abuse -  открывает общее админ меню со всеми функциями

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  12. [CS:GO] Новый список админов / SkylerAdmins


    Очередная версия плагина показывающая список админов онлайн на сервере CS:GO.

     

    Команды:

    sm_admins или /admins - включает и отключает отображение списка админов

    !admins или /admins - та же команда,но для игроков - показывает список админов онлайн

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  13. [CS:GO]Переломный раунд / Breaking Point


    Если следующий раунд - финальный, и у обеих команд одинаковый счет, то общее количество раундов будет увеличено на 2.

     

    Настройка одна:

    breaking_point_enabled - Default "1" - включает и отключает плагин

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  14. [CS:GO]Восстановление игроков при краше сервера / Map Change Client Crash Fixer


    Плагин повторно подключит игроков к серверу, если во время смены карты произошел краш сервера, или если игрока выкинуло.

    Если игрока выкинуло с сервера (но не краш его игры), то он тоже будет автоматический переподключен.

    Игроки даже не заметят что что то пошло не так.

    Гарантия конечно не 100%, но в большинстве случаев потери игроков сократились.

    Особенно актуально если вы часто добавляете на сервер новые карты, и не всегда есть возможность проверить все карты лично.

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  15. [CS:GO][Jailbreak]Подсветка заключенных / SkylerGlow


    Простой плагин подсвечивающий контур террористов (заключенных).Просто для веселья.

    Работает плагин с JailBreak Gangs (hl_gangs):

     

    Команда:

    sm_glow или /glow - включает подсветку у террористов.Доступно только админам и CT (охранникам)

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  16. [CS:GO/CS:S]Временные метки чата / Chat-TimeStamps


    Плагин указывает у каждого чат сообщения время в которое оно было написано (как показано на скриншоте выше).Это будет хорошим дополнением в спорах и жалобах пользователей при обжаловании банов и тд.

    Работает как в CS:GO, так и в CS:S.Возможно и в других играх Source.

    Так же, плагин позволяет игрокам выбирать свою временную зону в которой он живет.Для выбора временной зоны нужно прописать !cts в чат

    Выбор игрока сохраняется после отключения от сервера.

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)

     


     

  17. [CS:GO]Битва на ножах (запрет смены оружия) / No Knife Bullshit


    Короткий и простой плагин, аналог многих подобных плагинов-битв на ножах в конце раунда.

    Плагин был создан для того чтобы предотвратить неприятную ситуацию, когда в командах остается по 1 игроку, они договариваются о битве на ножах, но в самый последний момент кто нибудь достает огнестрельное оружие.

     

    Теперь, если в командах останется по одному игроку, они должны будут прописать !nkb в чат, запуститься обратный отсчет.

    После отсчета у игроков будет отобрано оружие и начнется битва на ножах.

     

    Настроек никаких нет, но  если есть желание - можно изменить количество необходимых живых игроков для начала битвы.

    Для этого, нужно открыть исходник плагина и на 40 строке поменять количество игроков


     

  18. [CS:GO/CS:S]Канал для админов и VIP / Admin Talk


    Плагин позволяет создавать отдельные чат-комнаты ( текстовые и голосовые закрытые каналы) для админов и VIP игроков.

    Админы могут вступать в голосовой канал, а так же "запихивать" туда других игроков (даже обычных, без VIP доступов).

    Хорошо подойдет для CS:GO RolePlay серверов

     

    Функции:

    • Админы могут присоединиться к закрытому каналу
    • Админы могут присоединять других игроков или админов к закрытым каналам
    • Отображается список тех,кто в комнате

     

    Команды:

    sm_admintalk - Войти/Выйти из админской комнаты
    sm_fadmintalk <ник> - Присоединить игрока к Админской комнате.Повторный ввод команды - выгнать.
    sm_sadmintalk - Список всех участвующих в админской конфе

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  19. [CS:GO]Список наблюдащих за игроком / SpecList


    Свежий и оптимизированный плагин для CS:GO.

    Отображает в HUD информацию о том кто именно в данный момент наблюдает за игроком (информация показывается как и самому игроку за которым наблюдают, так и тем кто за ним наблюдает)

    У игроков с доступами ADMFLAG_UNBAN и ADMFLAG_CUSTOM1 - никнейм в списке будет подсвечиваться своим цветом.

    Настроек никаких нет.

     

    Команда для админов одна:

    sm_stealth - позволяет спрятать никнейм админа из списка

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  20. [CS:GO] Запрет никнеймов / Names Blocker UPDATED


    Простой, но функциональный плагин, позволяющий банить/кикать игроков с запрещенными никнеймами или фразами.

    Видео:

     

    Функции:

    • Просто меню для добавления и удаления никнеймов
    • Можно выбрать наказание (кик/бан), время бана и причину
    • Подробный бан лист - список всех бан,причин, и того что написал игрок (за что и получил бан)
    • Поддерживает MySQL, так что можно использовать для игровых сообществ с несколькими серверами

     

    Команда для админов одна:

    sm_blocker или !blocker - открывает меню админа

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)

    В databases.cfg прописать:

    "nblocker"
    	{
    		"driver"			"mysql"
    		"host"				"yourhost"
    		"database"			"yourdatabase"
    		"user"				"youruser"
    		"pass"				"yourpassword"
    	}

     

     

     


     

  21. [CS:GO]Цветной текст в чат / Entity - Requested Color Support


    Плагин для CS:GO, позволюяющий админам (или игрокам с определенным флагом доступа) использовать чат-теги для окрашивания своих сообщений.

    Если убрать доступ по флагу - то можно сделать функцию доступной для всех игроков.

    Вообще хорошо подойдет для админов - можно красным выделять текст предупреждений и тд.

    Пример того как писать в чате используя теги: {red}This {blue}is {green}a {orange}test

    Так же у плагина есть файлы перевода - и его легко можно перевести на любой язык.

     

    Кстати, этот плагин есть в составе плагина для VIP игроков: 

     

    Настройка одна:

    sm_ent_chatflag - какой флаг доступа должен иметь игрок для использования этих функций

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  22. [CS:GO] Меню VIP Игрока / Simple Vip Menu


    Еще одна випка для CS:GO, с различными функциями.

    Особенности этого VIP плагина:

    • Написан на новом синтаксисе
    • Поддерживает мультиязычность
    • Поддержка Cookies и плагина MyJailBreak

     

    Функции VIP:

    • Дополнительные ХП каждый раунд
    • Броня и Шлем каждый раунд
    • Установка собственно КланТега
    • Собственный чат-тег
    • Цвет никнейма
    • Цвет чат-тега
    • Цвет сообщений игрока
    • Поддержка Multi ChatColor ({red}a{blue}b{green}c)
    • Радужная (переливающаяся) окраска модели игрока

     

    Настройки:

    sm_entvip_enabled - Включен ли плагин?
    sm_entvip_health - Активировать ли бонусные ХП у випов?
    sm_entvip_armor - Активировать броню и шлем у вип игроков?
    sm_entvip_plushp - Сколько бонусных ХП выдавать?
    sm_entvip_plusarmor - Сколько брони выдавать
    sm_entvip_plushelmet - Выдавать ли Шлем вместе с броней?
    sm_entvip_rainbowmodel - Разрешить випам одевать "радужный" скин?
    sm_entvip_deadrestrict - Запретить мертвым игрокам общаться с живыми через чат?


    !vip  - открывает меню ВИП игрока (ADMFLAG_RESERVATION)

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)


     

  23. [CS:GO/CS:S]Ранки для Zombie Realoaded,Zombie Plague / Simple Rank System


    Простая система ранков для Zombie Reloaded / Zombie Escape серверов в CS:GO.Возможно работает и в CS:S.

     

    Требуется для работы:

    • Color Variables
    • Zombie Reloaded или Zombie Plague (ссылка ниже)

     

     

    Установка:

    Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)

    В databases.cfg прописать настройку,заменив значения на свои:

    "zr_rank"
    {
      "driver"    "mysql"
      "host"      "ваш хост"
      "database"  "Название вашей базы данных"
      "user"      "логин базы данных"
      "pass"      "пароль к базе"
    }

     

     

    Настройки:

    zr_rank_startpoints (Default: 100) - сколько очков у нового игрока
    zr_rank_infecthuman (Default: 1) - сколько очков получает игрок за заражение другого
    zr_rank_killzombie (Default: 1) - сколько очков получает игрок за убийство зомби
    zr_rank_killzombie_headshot (Default: 2) - Количество очков за убийство в хедшот
    zr_rank_killzombie_knife (Default: 5) - очки за убийство зомби с ножа
    zr_rank_killzombie_he (Default: 3) - очки за убийство зомби взрывной гранатой
    zr_rank_killzombie_smokeflashbang (Default: 20) - Очки за убийство зомби с помощью дымовой или флеш гранатой
    zr_rank_stabzombie_left (Default: 1) - очки за убийство зомби ножом левой кнопкой мыши
    zr_rank_stabzombie_right (Default: 1) - очки за убийство зомби ножом правой кнопкой мыши
    zr_rank_maxplayers_top (Default: 50) - Максимальное количество игроков в ТОПе
    zr_rank_minplayers (Default: 4) - Минимальное количество игроков для активации Ранков
    zr_rank_beinginfected (Default: 1) - Сколько очков игрок теряет при инфицировании
    zr_rank_beingkilled (Default: 1) - Сколько очков теряет зомби при смерти
    zr_rank_prefix (Default: [{purple}ZR Rank{default}]) - Префикс плагина в чате
    zr_rank_allow_warmup (Default: 0) - Будут ли игроки терять очки во время разминки?
    zr_rank_suicide (Default: 0) - Сколько очков потеряет игрок при суициде
    zr_rank_roundwin_human (Default: 1) - Сколько очков получает игрок за победу в качестве Выжившего
    zr_rank_roundwin_zombie (Default: 1) - Сколько получит игрок за победу за Зомби

     

    Команды:

    sm_rank - показывает позицию игрока в ТОПе и сколько у него очков
    sm_top ЧИСЛО - показывает заданное количество первых игроков в общем ТОПе
    sm_topkills ЧИСЛО-  показывает заданное количество первых игроков в ТОПе по убийствам Зомби
    sm_topinfects ЧИСЛО - показывает заданное количество первых игроков в ТОПе по Зараженным людм
    sm_humanwins ЧИСЛО - показывает заданное количество первых игроков в ТОПе по выигранным раундам в качестве Выжившего
    sm_zombiewins ЧИСЛО - показывает заданное количество первых игроков в ТОПе по выигранным раундам за зомби
    sm_resetrank_all - Обнуляет всю статистику

     

    Для разработчиков:

    /*********************************************************
     * Get's the number of a player's points
     *
     * @param client        The client to get the points
     * @return                The number of points        
     *********************************************************/
    native int ZR_Rank_GetPoints(int client);
    
    /*********************************************************
     * Sets points to a certain player
     *
     * @param client        The client to get the points
     * @param points        Number of points to set
     * @return                The number of points    
     *********************************************************/
    native bool ZR_Rank_SetPoints(int client, int points);
    
    /*********************************************************
     * Get's the number of a player's Zombie Kills
     *
     * @param client        The client to get the zombie kills
     * @return                The number of points        
     *********************************************************/
    native int ZR_Rank_GetZombieKills(int client);
    
    /*********************************************************
     * Get's the number of a player's Human Infects
     *
     * @param client        The client to get the zombie kills
     * @return                The number of points        
     *********************************************************/
    native int ZR_Rank_GetHumanInfects(int client);
    
    /*********************************************************
     * Get's the number of a player's Round Wins as Zombie
     *
     * @param client        The client to get the round wins
     * @return                The number of round wins        
     *********************************************************/
    native int ZR_Rank_GetRoundWins_Zombie(int client);
    
    /*********************************************************
     * Get's the number of a player's Round Wins as Human
     *
     * @param client        The client to get the round wins
     * @return                The number of round wins        
     *********************************************************/
    native int ZR_Rank_GetRoundWins_Human(int client);

     


     

  24. [CS:GO][Jailbreak][Банды] Пожертвования кредитами / Credits Donation


    Плагин является дополнением к дополнению. Вот так.

    Позволяет игрокам жертвовать друг другу деньги. Можно настроить процент налогов и тд.

     

    Для работы плагина требуется Jailbreak Gangs:

     

    В качестве валюты (Кредитов) используется денежная система расчетов от основы - Jailbreak Gangs.

     

    Команда одна: 

    sm_donatecredits <ник или UserID игрока> <сумма перевода> - переводит конкретную сумму выбранному игроку

     

    Настройки:

    credits_donation_min_amount- минимальная сумма пожертвования
    credits_donation_max_amount   - максимальная сумма пожертвования (  0 = безгранично)
    credits_donation_fee - Процент налогов с пожертвования
    credits_donation_fee_subtract  - Кто платит налоги? 1 = получатель, 0 = тот кто жертвует

     


     

  25. [CS:GO] Убийца [Маньяк] / Murder


    Очередная версия плагина "Маньяка" для CS:GO.

    Все старо как мир: один игрок становиться Маньяком, у него есть нож.Его задача тихо и незаметно убить остальных игроков.

    Задача остальных игроков вычислить и убить Маньяка.Проблема в том что у них всего 1 оружие на всю команду.

     

    Установка:

    Для корректной работы плагина потребуется база данных MySQL

    В databases.cfg необходимо добавить,прописав свои настройки:

    "Murder"
    {
    	"driver"		        "default"
    	"host"				"Хост "
    	"database"			"База Данных"
    	"user"				"Логин базы данных"
    	"pass"				"Пароль базы данных"
    	//"timeout"			"0"
    	"port"				"3306"
    }

     

    Для настроек моделей пропов (Вещей) или добавление/удаления Радио команд, редактируйте их в файлах configs/Murder/Props.cfg или Radio.cfg соответственно.

     

    Настройки:

    murder_players_needed - сколько игроков нужно для начала игры
    murder_radio_delay - Интервал между голосовыми командами
    murder_smoke_time - Сколько времени сохранится эффект Дыма на маньяке
    murder_smoke_addition - Сколько времени маскировки в дыме получает Маньяк за каждое убийство
    murder_models_enabled - Менять (на модель жертвы) модель маньяка при маскировке?
    murder_prop_disguise_amount - Сколько подсказок нужно собрать,чтобы маскироваться в Мертвых игроков?
    murder_prop_gun_amount - Сколько пропов (вещей) собрать что бы получить оружие?
    murder_prop_respawn_time    - Интервал,через который на карте создается случайный набор вещей
    murder_knife_duration - Через сколько секунд нож вернется маньяку (если он его выкинул)
    murder_footsteps_life - Как долго сохраняются отпечатки на земле?
    murder_doublejump_enabled - Включить двойной прыжок?
    murder_doublejump_max - Максимальное количество дополнительных прыжков воздухе
    murder_doublejump_height - Высота каждого прыжка

     

    Для разработчиков:

    /**
    * Retrieves the current Murderer.
    *
    * @noparam
    * @return	Murderer User ID
    */
    native int GetMurderer(); 
    
    /**
    * Sets a client to be a Murderer.
    *
    * @param Index	Client's User ID
    * @noreturn
    */
    native void SetMurderer(int client); 
    
    /**
    * Retrieves the current Detective.
    *
    * @noparam
    * @return	Detective User ID
    */
    native int GetDetective(); 
    
    /**
    * Sets a client to be a Detective or Special Bystander.
    *
    * @param Index	Client's User ID
    * @noreturn
    */
    native void SetDetective(int client); 
    
    /**
    * Retrieves client's character.
    *
    * @param Index	Client's User ID
    * @param String	Client's Character Name (with chat colors)
    * @noreturn 
    */
    native void GetClientCharacter(int client, char[] sCharacterName); 

     


     

Подписывайтесь на нас во Вконтакте!

×
×
  • Создать...
Искать в
  • Ещё...
Поиск контента, содержащего...
Поиск результатов в...

Напишите свой запрос, а Мы попробуем найти ответ!