Перейти к публикации
Внимание! В связи с переходом на новую версию движка, сайт будет находиться в разработке! Все косяки в скором времени уберутся!

Скриншоты

Описание файла

Модуль включает в себя все необходимое для создания своего мода Hide and Seek. По сути, тот же Hide and Seek: Developer Mode, но в наиболее доработанном виде, ну и, конечно же, реализованный как AMXX Модуль, что несомненно делает его оптимальней, чем версия, реализованная на спавне.

 

Поддерживаемые версии HLDS: 5787,6027,6153 (Windows/Linux).
На остальных билдах работа не гарантирована, т.к. тесты проводились именно на перечисленных.

 

Установка: Закинуть hnsmod_amxx.dll или hnsmod_amxx_i386.so (в зависимости от ОС) в директорию /cstrike/addons/amxmodx/modules/, и в modules.ini добавить строку hnsmod.

 

Скрытый текст

[MAIN]
{
 
# HNS_FRAG_DURATION - время в секундах, через которое потенциальная жертва фрагера будет лишена защиты.
    HNS_FRAG_DURATION = 3
 
# HNS_TIMER_SECONDS - время таймера, в секундах.
    HNS_TIMER_SECONDS = 10
   
# HNS_SERVER_AA - акселерация на сервере (sv_airaccelerate).
    HNS_SERVER_AA = 100
 
# HNS_BLOCK_MONEY - блокировка изменения HUDа денег.
    HNS_BLOCK_MONEY = 1
}
 
[AUTO JOIN TEAM]
{
 
# HNS_JOIN_TEAM - принудительный выбор команда. 5 - автовыбор.
    HNS_JOIN_TEAM = 5
   
# HNS_JOIN_CLASS - принудительный выбор класса. 5 - автовыбор.
    HNS_JOIN_CLASS = 5
   
# HNS_CHANGE_BLOCK - запрет смены команды во время игры (1/0).
    HNS_CHANGE_BLOCK = 1
}
 
[ENTITY REMOVED LIST]
{
 
#СПИСОК ОБЪЕКТОВ, КОТОРЫЕ БУДУТ УДАЛЕНЫ
 
    func_buyzone
    info_bomb_target
    func_hostage_rescue
    monster_scientist
    hostage_entity
    info_hostage_rescue
    func_bomb_target
    func_escapezone
    info_vip_start
    func_vip_safetyzone
    armoury_entity
    func_breakable
}
Скрытый текст

#if defined _HNSENGINE_
    #endinput
 #endif
 
 #define _HNSENGINE_
 
 #define HNS_NORMAL 1
 #define HNS_SUPERCEDE 2
 
 enum HnsTeams
 {
        HNS_DRAW_OR_UNASSIGNED,
        HNS_TEAM_T,
        HNS_TEAM_CT,
        HNS_TEAM_SPECTATOR
 };
 
/**
 * Вызывается, когда раунд заканчивается в пользу той или иной команды или вничью.
 *
 * @param team                  Победившая команда.
 */
 forward hns_round_end(HnsTeams:team);
 
/**
 * Вызывается, когда таймер закончен и CT начинают действовать.
 *
 * @param index         Индекс игрока.
 */
 forward hns_round_start(index);
 
/**
 * Вызывается в процессе таймера.
 *
 * @param index         Индекс игрока.
 * @param time          Секунды таймера.
 */
 forward hns_timer_process(index, time);
 
/**
 * Вызывается после смены команды игрока, произведенной нативой hns_switch_teams().
 *
 * @param index         Индекс игрока.
 * @param team                  Новая команда игрока.
 */
 forward hns_became_team(index, HnsTeams:team);
 
/**
 * Вызывается когда в опр. команде остается один игрок.
 *
 * @param index         Индекс игрока.
 * @param team          Команда игрока.
 */
 forward hns_player_loner(index, HnsTeams:team);
 
 /**
 * Вызывается до фактического совершения фрага.
 *
 * @param victim                Индекс жертвы.
 * @param attacker              Индекс фрагера (убийцы).
 * @param damage                Нанесенный урон.
 */
 forward hns_frag_pre(victim, attacker, Float: damage);
 
 /**
 * Вызывается после фактического совершения фрага.
 *
 * @param victim                Индекс жертвы.
 * @param attacker              Индекс фрагера (убийцы).
 * @param damage                Нанесенный урон.
 */
 forward hns_frag_post(victim, attacker, Float: damage);
 
  /**
* Вызывается до фактического присоединения к команде.
*
* @param index Индекс игрока.
*/
forward hns_jointeam_pre(index);

/**
* Вызывается после фактического присоединения к команде.
*
* @param index Индекс игрока.
*/
forward hns_jointeam_post(index);
 
/**
 * Функция предназначена для переформирования команд, а именно изменения их местами.
 */
 native hns_switch_teams();
 
 /**
 * Функция возвращает истину, если имеется состав обеих команд.
 */
 native bool:hns_get_gamestarted();
 
 /**
 * Функция возвращает кол-во  игроков в опр. команде.
 *
 * @param team                  Необходимая команда.
 * @param alive                 Брать в рассчет только живых игроков (по умолчанию: false).
 */
 native hns_get_playersnum(HnsTeams:team, bool: alive = false);
 
 /**
 * Функция позволяет изменять команду игрокам.
 *
 * @param index                 Индекс игрока.
 * @param team                  Новая команда игрока.
 */
 native hns_set_user_team(index, HnsTeams:team);
 
 /**
 * Функция возвращает команду игрока.
 *
 * @param index                 Индекс игрока.
 */
 native HnsTeams: hns_get_user_team(index);
 
 /**
 * Функция позволяет ослеплять игрока или наоборот, убирать ослепление.
 *
 * @param index                 Индекс игрока.
 * @param status            Состояние (true/false).
 */
 native hns_set_screenfade(index, bool: status);

hns_engine.inc - Описание функций найдете в нем.

 

Отдельное внимание хотелось бы уделить двум нововведениям: два форварда, которые дают возможность контролировать одно неприятное нарушение многих игроков Hide and Seek - фрагерство. Для тех, кто не знает - это когда контр-террорист догнав террориста не отпускает его после первого удара, а добивает и не дает террористу шанс на то, чтобы тот унес свою тушу.

Скрытый текст

/**
* Вызывается до фактического совершения фрага.
*
* @param victim Индекс жертвы.
* @param attacker Индекс фрагера (убийцы).
* @param damage Нанесенный урон.
* @param time Оставшееся время действия анти-фрага.
*/
forward hns_frag_pre(victim, attacker, Float: damage, time);

/**
* Вызывается после фактического совершения фрага.
*
* @param victim Индекс жертвы.
* @param attacker Индекс фрагера (убийцы).
* @param damage Нанесенный урон.
* @param time Оставшееся время действия анти-фрага.
*/
forward hns_frag_post(victim, attacker, Float: damage, time);

Покажу вам пример использования данных форвард-функций. Давайте поставим для себя такую задачу - нам нужно защищать админа от фрагерства. В этом случае нам необходимо использовать pre событие, т.к. мы будем блокировать урон:


public hns_frag_pre(victim, attacker, Float: damage)
{
    if (get_user_flags(victim) & ADMIN_BAN)//если жертва - админ с флагом ADMIN_BAN
    {
        client_print(attacker, print_chat, "You can not frag an admin.");//выводим нарушителю сообщение, что нельзя фрагерить админа
        client_print(victim, print_chat,  "Hurry flee!");//выводим жертве сообщение с советом скорее бежать
       
        return HNS_SUPERCEDE;//блокируем урон по жертве
    }
   
    return HNS_NORMAL;
}

Поставленная задача решена.

 

Теперь поставим перед собой такую задачу: нам нужно написать вспомогательный плагин, который будет просто уведомлять, что фрагерство на сервере запрещено. В этом случае нам подойдет post событие, ведь блокировать мы ничего не будем:


public hns_frag_post(victim, attacker, Float: damage)
{
    new szName[32]; get_user_name(attacker, szName, charsmax(szName));//получаем имя нарушителя
   
    client_print(attacker, print_chat, "%s, on this server forbidden frag!", szName);//выводим нарушителю сообщение о том, что фрагерить на сервере запрещено и он получит по попке
}

Собственно, все. Это лишь примеры, все остальное остается на вашей фантазии.

 

Пример реализации эмуляции фризтайма для CT, показ дхуд сообщения с выигравшей командой, а также переформирование команд в случае победы CT уже в архиве.

P.S.: В конфигурационном файле вы можете настроить продолжительность анти-фрага.


Отзывы пользователей

Вы можете оставить отзыв к файлу только после его скачивания.

Нет отзывов для отображения.

×
×
  • Создать...

Важная информация

Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.