1. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    Автор: Mistrick
    Версия: v1.1 от 4.11.2016
    Источник: amx-x.ru

    Описание: Основа для создания deathrun мода и плагин управления режимами тера(присутствуют примеры режимов).


    Возможности:
    • Необходимый функционал для организации мода
    • Блокировка кнопок через стены
    • Удаление лишних энтити
    • Создание независимых режимов(отдельные плагины)
    • Информер, включающий спеклист и спидометр.
    • Плагин API для реализации своего магазина

    Требования: Сторонний плагин семиклипа. Рекомендую модуль от s1lent.

    Включенные режимы:
    • Кнопки
    • Свободный
    • Невидимка
    • Снежки(Снежки пролетают сквозь стекло, чтобы тер не тупил пока не пройдут карту)
    • Рэмбо(Есть перегрев оружия)
    • Дуэль(Нож, дигл, авп, ак47. Есть API для реализации ставок)
    Режимы не завершены, являются примером использования API.

    deathrun_core.inc
    PHP:
    /**
     * Forward which called when chosen new terrorist(new round or disconnect).
     *
     * @param id                Player index.
     */
    forward dr_chosen_new_terrorist(id);

    /**
     * Get player index current terrorist.
     *
     * @return                    Player index.
     */
    native dr_get_terrorist();

    /**
     * Set player who became terrorist in new round.
     *
     * @param id                Next terrorist index.
     */
    native dr_set_next_terrorist(id);

    /**
     * Get player who became terrorist in new round.
     *
     * @return                    Player index.
     */
    native dr_get_next_terrorist();
    deathrun_modes.inc
    PHP:
    enum _:ModeData
    {
        
    m_Name[32],
        
    m_Mark[16],
        
    m_RoundDelay,
        
    m_CurDelay,
        
    m_CT_BlockWeapon,
        
    m_TT_BlockWeapon,
        
    m_CT_BlockButtons,
        
    m_TT_BlockButtons,
        
    m_Bhop,
        
    m_Usp,
        
    m_Hide
    };

    /**
     * Mode registration.
     *
     * @param Name                Mode name, use ML key.
     * @param Mark                Mode mark, use this to get mode index in other plugins.
     * @param RoundDelay        Mode blocking in rounds.
     * @param CT_BlockWeapons    Allow CT pick up weapons.
     * @param TT_BlockWeapons    Allow TT pick up weapons.
     * @param CT_BlockButtons    Allow CT use buttons.
     * @param TT_BlockButtons    Allow TT use buttons.
     * @param Bhop                Enable autobhop.
     * @param Usp                Enable start with USP for CT.
     * @param Hide                Allow hide mode in menu.
     *
     * @return                    Mode index.
     */
    native dr_register_mode(Name[32], Mark[16], RoundDelayCT_BlockWeaponsTT_BlockWeaponsCT_BlockButtonsTT_BlockButtonsBhopUspHide 0);

    /**
     * Get current mode.
     *
     * @param name                Mode name, here will be copied the current mode ML key.
     * @param size                Name size.
     *
     * @return                    Mode index.
     */
    native dr_get_mode(name[] = ""size 0);

    /**
     * Set new mode.
     *
     * @param mode                Mode index.
     * @param fwd                Call forward(dr_selected_mode).
    [email protected]�forward.
     */
    native dr_set_mode(modefwd 0id 0);

    /**
     * Get mode by mark.
     *
     * @param mark                Mode mark.
     *
     * @return                    Mode index.
     */
    native dr_get_mode_by_mark(mark[]);

    /**
     * Get full mode info.
     *
     * @param mode                Mode index.
     * @param modeinfo            Info array.
     */
    native dr_get_mode_info(modemodeinfo[ModeData]);

    /**
     * Set mode autobhop.
     *
     * @param bhop                0 - OFF, 1 - ON.
     */
    native dr_set_mode_bhop(bhop);

    /**
     * Get mode autobhop.
     *
     * @return                    0 - OFF, 1 - ON.
     */
    native dr_get_mode_bhop();

    /**
     * Set player autobhop.
     *
     * @note The value for a mode bhop more important than for the player.
     *
     * @param id                Player index.
     * @param bhop                false - OFF, true - ON.
     */
    native dr_set_user_bhop(idbool:bhop);

    /**
     * Get player autobhop.
     *
     * @param id                Player index.
     */
    native bool:dr_get_user_bhop(id);

    /**
     * Forward which called when the selection mode.
     *
     * @param id                Terrorist index.
     * @param mode                Mode index.
     */
    forward dr_selected_mode(idmode);
    deathrun_shop.inc
    PHP:
    const ITEM_TEAM_T = (<< 1);
    const 
    ITEM_TEAM_CT = (<< 2);

    /**
     * Item registration in shop
     *
     * @param name            Item name in menu
     * @param cost            Item cost
     * @param team            Team access, bitsum, use ITEM_TEAM_T, ITEM_TEAM_CT
     * @param access        Admin access, admin flags
     * @param on_buy        OnBuy function(id)
     * @param can_buy        CanBuy function(id), should return ITEM_ENABLED or ITEM_DISABLED
     *
     * @return                Item index, use with changing cost
     */
    native dr_shop_add_item(name[], costteam = (ITEM_TEAM_T|ITEM_TEAM_CT), access 0on_buy[], can_buy[] = "");

    /**
     * Use this in CanBuy function
     *
     * @param addition        Additional string in menu
     */
    native dr_shop_item_addition(addition[]);

    /**
     * @param item            Item index
     * @param cost            New item cost
     */
    native dr_shop_set_item_cost(itemcost);
    deathrun_duel.inc
    PHP:
    enum CancelType
    {
        
    CType_TimeOver,
        
    CType_PlayerDisconneced,
        
    CType_PlayerDied,
        
    CType_ModeChanged
    }

     
    /**
     * Forward which called before duel start, warm up time
     *
     * @param duelist_ct            Player index.
     * @param duelist_t                Player index.
     */
    forward dr_duel_prestart(duelist_ctduelist_t);

     
    /**
     * Forward which called when duel started
     *
     * @param duelist_ct            Player index.
     * @param duelist_t                Player index.
     */
    forward dr_duel_start(duelist_ctduelist_t);

     
    /**
     * Forward which called when duel overed
     *
     * @param winner                Player index.
     * @param looser                Player index.
     */
    forward dr_duel_finish(winnerlooser);

     
    /**
     * Forward which called when duel canceled
     *
     * @param type                    Cancel type
     */
    forward dr_duel_canceled(CancelType:type);
    Проверка на режим
    Код:
    #include <deathrun_modes>
    
    new g_iDuelIndex, bool:g_bDuel;
    
    public plugin_cfg()
    {
        // В данном случае ищем режим "дуэль", если хотите определить другой режим, то смотрите второй параметр при регистрации режима
        g_iDuelIndex = dr_get_mode_by_mark("duel");
    }
    public dr_selected_mode(id, mode)
    {
        g_bDuel = (g_iDuelIndex == mode);
    }
    public func(id)
    {
        // если дуэль, то...
        if(g_bDuel)
        {
            // code
        }
    }
    Commits · Mistrick/DeathrunMod · GitHub

    v4 beta:
    - Немного изменены функции(бхоп и усп перенесены в моды)
    - Поправлена замена тера и выбор нового

    v3 beta:
    - Добавлен плагин Lifes
    - Удален показ тера в информере

    v2 beta:
    - Добавлен плагин Informer
    - Переписан код блокировки кнопок
    - Переписан код блокировки худа оружия.
    - Переписан код autojoin(PRoSToTeM@)
    - Нового тера возвращает на место старого
    v1 beta:
    - Релиз
     

    Вложения:

    Последнее редактирование: 28.11.16
    Адель и pUzzlik нравится это.
  2. damir4ik Пользователь

    Регистрация:
    27.07.15
    Сообщения:
    228
    Симпатии:
    19
    Пол:
    Мужской
    обновите до в 1.1 )
     
  3. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    Обновил.
    - Новый плагин deathrun_shop. API для создания магазина.
    - Новый режим Рэмбо.
    - Обновлен API основных плагинов, теперь каждый плагин имеет свой инклюд.
    - Фиксы режимов и другое по мелочи.
    Полный лог всегда на гитхабе.

    При обновлении удостоверьтесь в соответствии своих плагинов с новой версией API.

    PHP:
    #include <amxmodx>
    #include <fun>
    #include <deathrun_shop>
    #include <deathrun_modes>

    #define PLUGIN "Deathrun Shop: Items"
    #define VERSION "0.1"
    #define AUTHOR "Mistrick"

    #pragma semicolon 1

    #define MAX_USE 3

    new g_iGrenadeUsed[33];
    new 
    g_iModeDuel;
    new 
    g_bDuel;

    public 
    plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR);
      
        
    register_event("HLTV""Event_NewRound""a""1=0""2=0");
      
        
    dr_shop_add_item("Health"100ITEM_TEAM_T|ITEM_TEAM_CT0"ShopItem_Health""ShopItem_CanBuy_Health");
        
    dr_shop_add_item("Gravity"100ITEM_TEAM_T|ITEM_TEAM_CT0"ShopItem_Gravity");
        
    dr_shop_add_item("Grenade HE"100ITEM_TEAM_CT0"ShopItem_GrenadeHE""ShopItem_CanBuy_GrenadeHE");
    }
    public 
    plugin_cfg()
    {
        
    g_iModeDuel dr_get_mode_by_mark("duel");
    }
    public 
    client_putinserver(id)
    {
        
    g_iGrenadeUsed[id] = MAX_USE;
    }
    public 
    Event_NewRound()
    {
        
    arrayset(g_iGrenadeUsedMAX_USEsizeof(g_iGrenadeUsed));
    }
    public 
    dr_selected_mode(idmode)
    {
        
    g_bDuel = (g_iModeDuel == mode) ? true false;
    }
    public 
    ShopItem_Health(id)
    {
        
    set_user_health(idget_user_health(id) + 150);
        
    client_print(idprint_chat"You bougth 150HP.");
    }
    public 
    ShopItem_Gravity(id)
    {
        
    set_user_gravity(id0.5);
    }
    public 
    ShopItem_GrenadeHE(id)
    {
        
    g_iGrenadeUsed[id]--;
        
    give_item(id"weapon_hegrenade");
    }
    public 
    ShopItem_CanBuy_Health(id)
    {
        return 
    g_bDuel ITEM_DISABLED ITEM_ENABLED;
    }
    public 
    ShopItem_CanBuy_GrenadeHE(id)
    {
        if(
    g_iGrenadeUsed[id] <= 0)
        {
            
    dr_shop_item_addition("\r[ALL USED]");
            return 
    ITEM_DISABLED;
        }
        new 
    szAddition[32]; formatex(szAdditioncharsmax(szAddition), "\y[Have %d]"g_iGrenadeUsed[id]);
        
    dr_shop_item_addition(szAddition);
        return 
    ITEM_ENABLED;
    }
     
    neygomon и Morfik_59RUS нравится это.
  4. 1nfluence Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    55
    Симпатии:
    2
    Пол:
    Мужской
    Насколько сейчас актуален мод? Стоит открывать сервер как второй ?
     
  5. 1nfluence Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    55
    Симпатии:
    2
    Пол:
    Мужской
    Хотелось бы видеть в следующих обновах
    - Возможность отключения авто bhop
    - При переводе в наблюдатели афк менеджером, невозможно вернуться обратно за команду без реконнекта
    - Было бы неплохо выводить количество жизней у игрока в информер
     
  6. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    @1nfluence,
    - /bhop на что?
    - В моде залочено дефолтное меню выбора тимы. По моей логике держатель сервера должен сделать своё меню, в которое уже добавит всё что хочет, в том числе и смену тимы.
    - Жизни неосновной плагин, не вижу смысла добавлять.
     
  7. 1nfluence Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    55
    Симпатии:
    2
    Пол:
    Мужской
    1. bhop отключать на уровне сервера
    2. странная логика, ну да ладно
    3. люди банально не знают, что есть система жизней, что у них есть возможность реснуться
     
    Последнее редактирование: 22.11.16
  8. Punisher Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    1.569
    Симпатии:
    198
    Пол:
    Мужской
    VKcom:
    wkolopunisher
    Telegram:
    punproject
    Skype:
    punproject
    @1nfluence, вырежете код бхопа и всё
     
  9. 1nfluence Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    55
    Симпатии:
    2
    Пол:
    Мужской
    Да я искал часть кода, так чето и не нашел) если поможете буду благодарен))
     
  10. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    Бхоп настраивается для каждого режима отдельно. Прочитайте описание API. В deathrun_modes есть дефайн DEFAULT_BHOP, по которому определяет будет ли включен бхоп до выбора режима.
     
  11. 1nfluence Пользователь

    Регистрация:
    08.02.16
    Сообщения:
    55
    Симпатии:
    2
    Пол:
    Мужской
    я считаю, что без него сильно интереснее мод и было бы хорошо иметь возможность отключить его полностью во всех режимах, кваром или дефайном
     
  12. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    @1nfluence, если вам сложно изменить по одной цифре в каждом режиме, то данная разработка не для вас.
     
  13. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    @Mistrick, да покажи ты типу пример.
    авось одуплит
     
  14. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    @neygomon, ты открой хоть один плагин с режимом. Посмотри как у меня написана регистрация режима.
     
  15. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    @Mistrick, я ленивая тварь, прости(
    :guzzler:
     
  16. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    161
    Симпатии:
    88
    Пол:
    Мужской
    @neygomon, угадай как выключить бхоп.
    Код:
    public plugin_init()
    {
        register_plugin(PLUGIN, VERSION, AUTHOR);
        RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
     
        g_iModeInvis = dr_register_mode
        (
            .Name = "DRM_MODE_INVIS",
            .Mark = "invis",
            .RoundDelay = 2,
            .CT_BlockWeapons = 0,
            .TT_BlockWeapons = 1,
            .CT_BlockButtons = 0,
            .TT_BlockButtons = 1,
            .Bhop = 1,
            .Usp = 1,
            .Hide = 0
        );
    }
     
  17. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    0
    :D
     
  18. Адель Пользователь

    Регистрация:
    27.03.16
    Сообщения:
    56
    Симпатии:
    0
    Пол:
    Мужской
    Skype:
    aero0829
    Привет, подскажи пожалуйста, как сделать что бы во время режима "Невидимка" у КТ были glock с бесконечными патронами?
    И как меню выбора режимов по красивее сделать, в каком sma плагине делается?
    --- добавлено 24.11.16 ---
    И что бы во время режима "Рембо" у Т отнимался нож
     
  19. Адель Пользователь

    Регистрация:
    27.03.16
    Сообщения:
    56
    Симпатии:
    0
    Пол:
    Мужской
    Skype:
    aero0829
    Привет, слушай, научи пожалуйста делать DHUD сообщения, например когда тер выбрал какой либо режим, выходило по центру экрана "Террорист выбрал режим: Невидимка" и т.д, если надо я заплачу