Иконка ресурса

Add-on CMS Time for Flags 1.0.0

Нет прав для скачивания
C++:
#include <amxmodx>
#include <hamsandwich>

/* ======= начало настройки =========*/

//#defined MAP_MANAGER            //Раскомментировать, если установлен плагин map_manager от Mistrik

new const g_szStartTime[] = "15:00";    // Начало выдачи флагов
new const g_szEndTime[] = "23:55";    // Окончание выдачи флагов
new const g_szAddFlags[] = "inuo";    //Флаги для выдачи


new g_szMessage[MAX_FMT_LENGTH/2] = //Сообщение, которое будет показано игроку при первом входе в игру
"Вам выданы ночные вип привилегии с <start> до <end>";

new iHudColor[] =    //цвет сообшения
{
    0,         //красный
    255,     //зеленый
    0        //синий
}

new Float:flHudCoord[] =    //координаты сообшения
{
    -1.0,     //x
    0.35     //y
}
new Float:flHudTime =    5.0; //время показа сообшения, сек

/* ======= конец настройки =========*/


new g_szOldAccessFlags[MAX_NAME_LENGTH];
new bool:g_bIsNigthMode, bool:g_bApi;
new g_iStartTime, g_iEndTime;
new bool:g_bPlayerNotified[MAX_PLAYERS + 1];
new HamHook:g_iHookSpawn;

public plugin_init()
{
    register_plugin("CMS Time for Flags", "1.0.0", "zhorzh78");
}

public OnAPIPluginLoaded(Handle:sqlTuple, version[], serverID)
{
    g_bApi = true;
 
    #if defined MAP_MANAGER
    if(!g_iStartTime)
        set_task(10.0, "OnConfigsExecuted");
    #endif
}


public OnConfigsExecuted()
{
    g_iStartTime = parse_time(g_szStartTime, "%H:%M");
    g_iEndTime = parse_time(g_szEndTime, "%H:%M");

    if(g_iStartTime > g_iEndTime)
        g_iEndTime += 86400;

    get_cvar_string("amx_default_access", g_szOldAccessFlags, charsmax(g_szOldAccessFlags));

    FnCheckTime();
}

public FnCheckTime()
{
    if(!g_bApi)
        return;
 
    new iCurrentTime = get_systime();
    if(g_iStartTime <= iCurrentTime)
    {
        if(iCurrentTime < g_iEndTime)
        {
            if(!g_bIsNigthMode)
            {
                g_bIsNigthMode = true;         
             
                set_task(float(g_iEndTime - iCurrentTime), "FnCheckTime");
                set_cvar_string("amx_default_access", g_szAddFlags);

                g_iHookSpawn = RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawn_Post", 1);
             
                replace_all(g_szMessage, charsmax(g_szMessage), "<start>", g_szStartTime);
                replace_all(g_szMessage, charsmax(g_szMessage), "<end>", g_szEndTime);
            }

            return;
        }
    }
    else
    {
        set_task(float(g_iStartTime - iCurrentTime), "FnCheckTime");
        return;
    }

    if(g_bIsNigthMode)
    {
        if(strcmp(g_szAddFlags, g_szOldAccessFlags))
        {
            if(g_iHookSpawn)
                DisableHamForward(g_iHookSpawn);

            set_cvar_string("amx_default_access", g_szOldAccessFlags);
        }
    }
}

public FwdHamPlayerSpawn_Post(id)
{
    if(g_bPlayerNotified[id])
        return;
 
    if(!is_user_alive(id))
        return;

    g_bPlayerNotified[id] = true;
 
    set_hudmessage(iHudColor[0], iHudColor[1], iHudColor[1], flHudCoord[0], flHudCoord[0], 0, 0.0, flHudTime);
    show_hudmessage(id, "%s", g_szMessage);
}

public client_connect(id)
    g_bPlayerNotified[id] = false;
Назад
Сверху