0%
Обязательно ознакомьтесь с правилами форума!
Требуются люди в Команду форума для наполнения сайта ресурсами и полезным контентом. Писать в Telegram: @g_r_e_a_t_z_a_r_a_z_a
Чат для серверодержателей CS 1.6

Чат для серверодержателей Counter-Strike 1.6 а так же владельцев сайтов на движке GameCMS

Сообщество администраторов, разработчиков и владельцев серверов

GameCMS обсуждение Разработка плагинов Администрирование Опытные специалисты Безопасность и оптимизация
Рекламное место

Рекламное место свободно

Разместите свою рекламу прямо здесь!

Активная аудитория Высокая конверсия Доступная цена Эффективная реклама
MOTD Model

CS 1.6 Amxx MOTD Model 1.1.0

Плагин позволяет использовать модель вместо стандартного MOTD
Код:
#pragma semicolon 1
 
#include <amxmodx>
#include <reapi>
 
new const MOTD_MODEL[] = "models/nezhno_inf.mdl";
 
enum IntroState
{
    INTRO_INIT,
    INTRO_PLAYING,
    INTRO_END,
 
}; new IntroState:g_iIntroState[MAX_PLAYERS + 1];
 
new motdmdl_skippable_intro;
 
public plugin_precache()
{
    register_plugin("MOTD Model", "1.1.0", "fl0wer");
 
    precache_model(MOTD_MODEL);
}
 
public plugin_init()
{
    RegisterHookChain(RG_ShowVGUIMenu, "@ShowVGUIMenu_Pre", false);
    RegisterHookChain(RG_HandleMenu_ChooseTeam, "@HandleMenu_ChooseTeam_Pre", false);
 
    bind_pcvar_num(create_cvar("motdmdl_skippable_intro", "0", _, "Players can skip intro by menu keys^n0 - disabled^n1 - enabled", true, 0.0, true, 1.0), motdmdl_skippable_intro);
}
 
public client_putinserver(id)
{
    g_iIntroState[id] = is_user_bot(id) ? INTRO_END : INTRO_INIT;
}
 
@ShowVGUIMenu_Pre(id, VGUIMenu:menuType, bitsSlots, oldMenu[])
{
    if (menuType != VGUI_Menu_Team)
        return;
 
    if (g_iIntroState[id] == INTRO_END)
        return;
 
    if (get_member(id, m_iJoiningState) == JOINED)
        return;
 
    if (g_iIntroState[id] == INTRO_INIT)
    {
        g_iIntroState[id] = INTRO_PLAYING;
 
        set_entvar(id, var_viewmodel, MOTD_MODEL);
        set_task(3.65, "@Task_IntroEnd", id);
    }
 
    set_member(id, m_bForceShowMenu, true);
 
    SetHookChainArg(3, ATYPE_INTEGER, 1023);
    SetHookChainArg(4, ATYPE_STRING, "\n");
}
 
@HandleMenu_ChooseTeam_Pre(id, key)
{
    if (g_iIntroState[id] == INTRO_END)
        return HC_CONTINUE;
 
    if (g_iIntroState[id] == INTRO_PLAYING && motdmdl_skippable_intro)
        StopIntro(id);
 
    SetHookChainReturn(ATYPE_INTEGER, false);
    return HC_SUPERCEDE;
}
 
@Task_IntroEnd(task)
{
    new id = task;
 
    if (!is_user_connected(id))
        return;
 
    StopIntro(id);
}
 
StopIntro(id)
{
    remove_task(id);
 
    g_iIntroState[id] = INTRO_END;
 
    set_entvar(id, var_viewmodel, "");
    engclient_cmd(id, "menuselect", "0");
}
Верх Низ