Показаны результаты для тегов 'sourcemod'. - Моддинг Игр и Серверов Перейти к содержанию
Гость

Поиск сообщества

Показаны результаты для тегов 'sourcemod'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общее
    • Новости Сайта
    • Общение
    • Помощь по игровым серверам
    • Поиск плагинов/файлов
  • По играм
    • Counter-Strike 2
    • Counter-Strike: Global Offensive
    • Team Fortress 2
    • Left 4 Dead (1/2)
    • Grand Theft Auto V
    • Minecraft
    • S&box
    • Dota 2
    • Terraria
    • Half-Life 2:Deathmatch
    • GTA: SAMP
    • Counter-Strike: Source
    • Counter-Strike
    • Rust
    • PLAYERUNKNOWN'S BATTLEGROUNDS
    • Warface
    • Half-Life: Alyx
    • World Of Tanks
  • Архив/Корзина
    • Устаревшие Статьи
    • Steam
    • Новости из мира игровой индустрии
    • Халява

Категории

  • Counter-Strike 2
    • Плагины/моды
    • Карты
    • Скины / Модели
  • Team Fortress 2
    • Скины / Модели
    • Карты
  • Left 4 Dead (1/2)
    • Скины / Модели
  • Sourcemod плагины
    • CS:GO
    • Left 4 Dead
    • Team Fortress 2
    • Half-Life 2: Deathmatch
    • Counter-Strike 2
  • Counter-Strike: Global Offensive
    • Скины / Модели
    • Сборки / Готовые Сервера CS:GO
    • Карты
    • Разное
  • Half-Life 2:Deathmatch
    • Скины / Модели
    • Карты
  • Counter-Strike
    • Готовые сервера
  • Rust
    • Плагины Umod (Oxide)
  • World Of Tanks
    • Моды для World Of Tanks
    • Прицелы
    • Шкурки / Зоны пробития
    • Ангары
  • Dota 2
    • Скины/Модели
    • Разное
  • Minecraft
    • Плагины
    • Скины
    • Карты

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


О себе

  1. Версия 1.0.0

    56 раз скачали

    Простой sourcemod плагин для сервера cs:go, позволяет задать и активировать свой конфиг и плагины для каждой карты. Настройка: В создайте конфиг с названием карты: configs/pluginler/map-cfg/НАЗВАНИЕ КАРТЫ.cfg В сам конфиг файл впишите настройки которые должны быть АКТИВИРОВАНЫ на этой карте. Так же,с помощью команды sm_eklenti_aktif можно выбрать какие плагины будут АКТИВНЫ на этой карте.Прописывать нужно: sm_eklenti_aktif <название плагина> Например: sm_eklenti_aktif noblock sm_eklenti_aktif thirdperson sm_eklenti_aktif store mp_timelimit 9999 mp_roundtime 3 mp_maxrounds 0 mp_warmuptime 0 mp_freezetime 0 mp_limitteams 2 mp_autoteambalance 1 Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  2. Просмотр файла [CS:GO] Очередь в Deathrun / Deathrun gamemode with queue Плагин позволяет игрокам занимать очередь на подключение к команде Террористов, вместо случайного выбора террориста. Если желающих быть террористами не будет - им станет бот. Рекомендуемые настройки,для корректной работы плагина, которые стоит прописать в свой deathrun.cfg: mp_autoteambalance 0 mp_limitteams 0 bot_join_team t bot_quota_mode normal bot_join_after_player 0 bot_quota 1 sv_disable_radar 1 mp_equipment_reset_rounds 1 sv_falldamage_scale 1 mp_free_armor 0 mp_buytime 0 mp_ct_default_melee "weapon_knife" // or weapon_fists mp_ct_default_secondary "" mp_ct_default_primary "" mp_ct_default_grenades "" mp_t_default_melee "weapon_knife" // or weapon_fists mp_t_default_secondary "" mp_t_default_primary "" mp_t_default_grenades "" Команда что бы занять очередь: sm_queue или !queue Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Добавил Mr_Swag Добавлено 20.02.2019 Категория CS:GO / CS2  
  3. Версия 2.2

    113 раза скачали

    Плагин позволяет игрокам занимать очередь на подключение к команде Террористов, вместо случайного выбора террориста. Если желающих быть террористами не будет - им станет бот. Рекомендуемые настройки,для корректной работы плагина, которые стоит прописать в свой deathrun.cfg: mp_autoteambalance 0 mp_limitteams 0 bot_join_team t bot_quota_mode normal bot_join_after_player 0 bot_quota 1 sv_disable_radar 1 mp_equipment_reset_rounds 1 sv_falldamage_scale 1 mp_free_armor 0 mp_buytime 0 mp_ct_default_melee "weapon_knife" // or weapon_fists mp_ct_default_secondary "" mp_ct_default_primary "" mp_ct_default_grenades "" mp_t_default_melee "weapon_knife" // or weapon_fists mp_t_default_secondary "" mp_t_default_primary "" mp_t_default_grenades "" Команда что бы занять очередь: sm_queue или !queue Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  4. Просмотр файла [CS:GO]Время до конца карты на экране / Panorama - Timeleft Простой и легкий плагин - выносит время до смены/конца карты в HUD на экран игроку. Как выглядит - можно увидеть на скриншоте выше. Никаких настроек и команд.Сразу к установке. Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  5. Версия 1.0.1

    433 раза скачали

    Простой и легкий плагин - выносит время до смены/конца карты в HUD на экран игроку. Как выглядит - можно увидеть на скриншоте выше. Никаких настроек и команд.Сразу к установке. Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  6. Просмотр файла [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 Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  7. Версия 1.0.1

    68 раз скачали

    Плагин позволяет рандомно создавать вещи на карте (оружие,пропы и тд). Хорошо подойдет для 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
    Бесплатный
  8. Просмотр файла [CS:GO/CS:S] Загрузка конфигов / AlfaLoader - Config Executor Плагин позволяет запустить конфиг (или конфиги) прописанные в configs/configexecutor.cfg Может пригодиться для разных целей. Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  9. Версия 1.0.0

    53 раза скачали

    Плагин позволяет запустить конфиг (или конфиги) прописанные в configs/configexecutor.cfg Может пригодиться для разных целей. Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  10. Просмотр файла [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 и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  11. Версия 1.0.0

    82 раза скачали

    Красивый и эффектный плагин для CS:GO.Замораживает игроков в ледяном кубе,с соответствующим звуком. В архиве с плагином идет и моделька ледяного куба - не забудьте её добавить на свой сервер и FastDL. Видео плагина: Настройки: sm_ice_snow - создаватьс нег вокруг куба во время заморозки? sm_ice_freezetime - замораживать игроков во льду во время закупа (freezetime)? sm_ice_volume - уровень громкости звука заморозки Админ команды: sm_ice - замораживает игрока во льду sm_unice - размораживает игрока Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  12. Просмотр файла [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 Видео: Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  13. Версия 1.02

    36 раз скачали

    Плагин, в основном, для разработчиков работающих над созданием карт для 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 Видео:
    Бесплатный
  14. Просмотр файла [CS:GO] Курица - питомец / Chicken Pet Плагин позволяет игроку создать себе свою собственную курочку питомца! Она полностью анимированная,и следует за игрокоам.Кстати,на которую, можно нацепить: крылья (мы сделали тебе крылья на крылья у курицы ага) и шапки.Прямо на голову курице можно цеплять шапки...Боже как же много у людей свободного времени... Видео: Настройки: sm_chicken_kill - пропадать ли курице после убийства её хозяина? 1 = да , 0 = нет Команды: sm_chicken - открывает меню управления курочкой sm_ec - меню управления курицей Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  15. Версия 1.0.0

    81 раз скачали

    Плагин позволяет игроку создать себе свою собственную курочку питомца! Она полностью анимированная,и следует за игрокоам.Кстати,на которую, можно нацепить: крылья (мы сделали тебе крылья на крылья у курицы ага) и шапки.Прямо на голову курице можно цеплять шапки...Боже как же много у людей свободного времени... Видео: Настройки: sm_chicken_kill - пропадать ли курице после убийства её хозяина? 1 = да , 0 = нет Команды: sm_chicken - открывает меню управления курочкой sm_ec - меню управления курицей Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  16. Просмотр файла [CS:GO] Показ урона как в Fortnite / Fortnite like damage showing На сайте уже есть другая версия "Отображения урона в HUD как в Fortnite", и скачать ее вы можете здесь: Но версия которая сейчас перед вами - более новая,более совершенная и оптимизированная.Да и к тому же более красивая - эффект анимации на уровне. Идеально для веселых не напряжных серверов, Surf серверов или Минигеймов. На видео можно увидеть плагин в действии: Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Файлы текстур желательно закинуть на FastDL Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  17. Версия 1.2.0

    366 раз скачали

    На сайте уже есть другая версия "Отображения урона в HUD как в Fortnite", и скачать ее вы можете здесь: Но версия которая сейчас перед вами - более новая,более совершенная и оптимизированная.Да и к тому же более красивая - эффект анимации на уровне. Идеально для веселых не напряжных серверов, Surf серверов или Минигеймов. На видео можно увидеть плагин в действии: Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Файлы текстур желательно закинуть на FastDL
    Бесплатный
  18. Просмотр файла [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 и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  19. Версия 2.2

    96 раз скачали

    Плагин-дополнение для 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 и так далее)
    Бесплатный
  20. Просмотр файла [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 и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO  
  21. Версия 1.1.0

    1 459 раз скачали

    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 и так далее)
    Бесплатный
  22. Просмотр файла [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 и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  23. Версия 1.2

    44 раза скачали

    Плагин сохраняет в базу данных все победы игрока, и подгружает их при подключении к серверу. Сделано для Королевской битвы CS:GO ( battle royal ). Плагин поддерживает SQLite и MySQL на выбор. Все настройки плагина можно найти в файле cfg/sourcemod/wins_counter.cfg который будет сгенерирован после первого запуска. Админ-команда: sm_setwins <ник #userid> <количество побед> - устанавить конкретному игроку определенное число побед Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный
  24. Просмотр файла [CS:GO]Издевательство над игроками / Abusive Admin Commands Плагин для cs:go, добавляет новые возможности для админов по издевательству над игроками.Ну или для веселья.Кому как) Список команд: !target <ник> - выбрать цель-жертву !untarget - удалить выбранную цель !brake - раздавить игрока !chicken - создать куриц над игроком !shake - устроить землятресение игроку !invert - поменять кнопки управления игрока ("вперед" станет кнопкой "назад" и тд) !targetsay <сообщение> - напишет в чат ваш текст от имени жертвы !targetteamsay - то же самое что команда выше,но напишет в командный чат !abuse - открывает общее админ меню со всеми функциями Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее) Добавил Mr_Swag Добавлено 19.02.2019 Категория CS:GO / CS2  
  25. Версия 1.4

    281 раз скачали

    Плагин для cs:go, добавляет новые возможности для админов по издевательству над игроками.Ну или для веселья.Кому как) Список команд: !target <ник> - выбрать цель-жертву !untarget - удалить выбранную цель !brake - раздавить игрока !chicken - создать куриц над игроком !shake - устроить землятресение игроку !invert - поменять кнопки управления игрока ("вперед" станет кнопкой "назад" и тд) !targetsay <сообщение> - напишет в чат ваш текст от имени жертвы !targetteamsay - то же самое что команда выше,но напишет в командный чат !abuse - открывает общее админ меню со всеми функциями Установка: Раскидать файлы по папкам (.smx в addons/sourcemod/plugins, .cfg в configs и так далее)
    Бесплатный

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

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

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