Give Flags on Time

Плагин АМХХ Give Flags on Time 1.3

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

#pragma semicolon 1

new const szPluginInfo[][] = {"GFonTime", "1.2", "ApXuTekToR"};

enum _:CVARS {
    NIGHTMODE[64],
    SHOW_TYPE,
    HUD_SETTINGS[64],
    RELOAD_FLAGS
};

new Float:g_posX, Float:g_posY, Float:g_Update;
new g_rgbR, g_rgbG, g_rgbB, g_Effect;
new bool:gNight_Mode;
new g_pCvars[CVARS];
new Night_Start[8], Night_End[8], Night_Flag[64], iStartHour, iStartMinutes, iEndHour, iEndMinutes;
new hudInfo, g_Current, g_Holiday_StartNum, Holiday_Start[384], Holiday_End[384], Holiday_Flag[16];
new g_bMode_Holiday;
new Array:g_StartTime, Array:g_EndTime, Array:g_Flag;

public plugin_init() {
    register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);

    register_logevent("spawn_show", 2, "1=Round_End");
    register_srvcmd("flags_holiday", "setholiday");

    register_cvar("GFoT_Set_Flags_Night",        "23:00 09:00 t");
    register_cvar("GFoT_Set_Info_Mode",            "1");
    register_cvar("GFoT_Set_Info_Settings",        "255 0 0 -1.0 0.0 1 1.0");
    register_cvar("GFoT_Set_Reload_Flags",        "1");

    g_StartTime    = ArrayCreate(384);
    g_EndTime    = ArrayCreate(384);
    g_Flag        = ArrayCreate(16);

    new cfgFilePath[PLATFORM_MAX_PATH];
    new const fileName[64] = "/SevCorp/GFoT_Configuration.cfg";
    get_localinfo("amxx_configsdir", cfgFilePath, charsmax(cfgFilePath));
    add(cfgFilePath, charsmax(cfgFilePath), fileName);
    if(file_exists(cfgFilePath)) {
        server_cmd("exec %s", cfgFilePath);
        server_exec();
    } else {
        server_print("[%s] File '%s' not found. Plugin Stoped", szPluginInfo[0], cfgFilePath);
        plugin_print(false, "[%s] File '%s' not found. Plugin Stoped", szPluginInfo[0], cfgFilePath);
    }

    initCvars();

    hudInfo = CreateHudSyncObj(3);

    register_dictionary("GFoT_Dictionary.txt");
}

public plugin_cfg() {
    TaskCheck_Night();
    TaskCheck_Holiday();
    LoadSettings();
}

public initCvars() {
    get_cvar_string("GFoT_Set_Flags_Night",        g_pCvars[NIGHTMODE],    charsmax(g_pCvars[NIGHTMODE]));
    get_cvar_string("GFoT_Set_Info_Settings",    g_pCvars[HUD_SETTINGS], charsmax(g_pCvars[HUD_SETTINGS]));
    g_pCvars[SHOW_TYPE]        = get_cvar_num("GFoT_Set_Info_Mode");
    g_pCvars[RELOAD_FLAGS]    = get_cvar_num("GFoT_Set_Reload_Flags");
}

public LoadSettings() {
    static szRgbRRR[8], szRgbGGG[8], szRgbBBB[8], szPosX[8], szPosY[8], szEffect[8], szUpdate[8];
    parse(g_pCvars[HUD_SETTINGS],    szRgbRRR,    charsmax(szRgbRRR), szRgbGGG,    charsmax(szRgbGGG), szRgbBBB, charsmax(szRgbBBB),
                                    szPosX,        charsmax(szPosX),    szPosY,        charsmax(szPosY), szEffect,      charsmax(szEffect), szUpdate, charsmax(szUpdate));
    g_rgbR        = str_to_num(szRgbRRR);
    g_rgbG        = str_to_num(szRgbGGG);
    g_rgbB        = str_to_num(szRgbBBB);
    g_posX        = str_to_float(szPosX);
    g_posY        = str_to_float(szPosY);
    g_Effect    = str_to_num(szEffect);
    g_Update    = str_to_float(szUpdate);
}

public client_connect(id) {
    TaskCheck_Night();
    TaskCheck_Holiday();
}

public spawn_show(id) {
    TaskCheck_Night();
    TaskCheck_Holiday();
}

public setholiday() {
    read_argv(1, Holiday_Start, charsmax(Holiday_Start));
    read_argv(2, Holiday_End, charsmax(Holiday_End));
    read_argv(3, Holiday_Flag, charsmax(Holiday_Flag));
    g_Holiday_StartNum++;
    ArrayPushString(g_StartTime, Holiday_Start);
    ArrayPushString(g_EndTime, Holiday_End);
    ArrayPushString(g_Flag, Holiday_Flag);
    return PLUGIN_HANDLED;
}

public TaskCheck_Night() {
    if(!g_pCvars[NIGHTMODE])
        return;

    parse(g_pCvars[NIGHTMODE], Night_Start, charsmax(Night_Start), Night_End, charsmax(Night_End), Night_Flag, charsmax(Night_Flag));
    get_int_time(Night_Start, iStartHour, iStartMinutes);
    get_int_time(Night_End, iEndHour, iEndMinutes);
    new iCurHour, iCurMinutes; time(iCurHour, iCurMinutes);
    if(iStartHour != iEndHour && (iStartHour == iCurHour && iCurMinutes >= iStartMinutes || iEndHour == iCurHour && iCurMinutes < iEndMinutes)) {
        gNight_Mode = true;
    }else if(iStartHour == iEndHour && iStartMinutes <= iCurMinutes < iEndMinutes) {
        gNight_Mode = true;
    }else if(iStartHour > iEndHour && (iStartHour < iCurHour < 24 || 0 <= iCurHour < iEndHour)) {
        gNight_Mode = true;
    }else if(iStartHour < iCurHour < iEndHour) {
        gNight_Mode = true;
    }else{
        gNight_Mode = false;
    }

    if(gNight_Mode) {
        server_cmd("amx_default_access %s", Night_Flag);
        if(g_pCvars[RELOAD_FLAGS])
            server_cmd("amx_reloadadmins");
    }

    if(gNight_Mode && g_pCvars[SHOW_TYPE])
        set_task(g_Update, "TaskInfo_Night", .flags="a", .repeat=10);
}

public TaskCheck_Holiday() {
    if (g_Current >= g_Holiday_StartNum)
        g_Current = 0;      
    if (g_Holiday_StartNum == 0) {
        return;
    }

    ArrayGetString(g_StartTime, g_Current, Holiday_Start, charsmax(Holiday_Start));
    ArrayGetString(g_EndTime, g_Current, Holiday_End, charsmax(Holiday_End));
    ArrayGetString(g_Flag, g_Current, Holiday_Flag, charsmax(Holiday_Flag));
    new bOldMode_Holiday = g_bMode_Holiday;  
    if(parse_time(Holiday_Start, "%d.%m.%y %H:%M") != parse_time(Holiday_End, "%d.%m.%y %H:%M") && (parse_time(Holiday_Start, "%d.%m.%y %H:%M") == get_systime() && parse_time(Holiday_End, "%d.%m.%y %H:%M") == get_systime())) {
        g_bMode_Holiday = true;
    } else if(parse_time(Holiday_Start, "%d.%m.%y %H:%M") == parse_time(Holiday_End, "%d.%m.%y %H:%M")) {
        g_bMode_Holiday = true;
    } else if(parse_time(Holiday_Start, "%d.%m.%y %H:%M") > parse_time(Holiday_End, "%d.%m.%y %H:%M") && (parse_time(Holiday_Start, "%d.%m.%y %H:%M") < get_systime() < parse_time(Holiday_End, "%d.%m.%y %H:%M"))) {
        g_bMode_Holiday = true;
    } else if(parse_time(Holiday_Start, "%d.%m.%y %H:%M") < get_systime() < parse_time(Holiday_End, "%d.%m.%y %H:%M")) {
        g_bMode_Holiday = true;
    } else {
        g_bMode_Holiday = false;
        ++g_Current;
    }
   
    if(g_bMode_Holiday && !bOldMode_Holiday){
        server_cmd("amx_default_access %s", Holiday_Flag);
        if(g_pCvars[RELOAD_FLAGS])
            server_cmd("amx_reloadadmins");
    }
    if(g_bMode_Holiday && g_pCvars[SHOW_TYPE])
        set_task(g_Update, "StartHolidayShow", .flags="a", .repeat=10);
}

public TaskInfo_Night(id) {
    if(g_pCvars[SHOW_TYPE] == 1) {
        set_hudmessage(g_rgbR, g_rgbG, g_rgbB, g_posX, g_posY, g_Effect, 6.0, 10.0);
        ShowSyncHudMsg(id, hudInfo, "%L", LANG_PLAYER, "LANG_NIGHT_MODE_START_HUD");
    } else if(g_pCvars[SHOW_TYPE] == 2) {
        set_dhudmessage(g_rgbR, g_rgbG, g_rgbB, g_posX, g_posY, g_Effect, 6.0, 10.0);
        show_dhudmessage(id, "%L", LANG_PLAYER, "LANG_NIGHT_MODE_START_HUD");
    }
}

public StartHolidayShow(id) {
    ArrayGetString(g_StartTime, g_Current, Holiday_Start, charsmax(Holiday_Start));
    if(g_pCvars[SHOW_TYPE] == 1) {
        set_hudmessage(g_rgbR, g_rgbG, g_rgbB, g_posX, g_posY, g_Effect, 6.0, 10.0);
        ShowSyncHudMsg(id, hudInfo, "%L", LANG_PLAYER, "FLAGS_HOLIDAY_START_HUD", Holiday_Start, Holiday_End);
    } else {
        set_dhudmessage(g_rgbR, g_rgbG, g_rgbB, g_posX, g_posY, g_Effect, 6.0, 10.0);
        show_dhudmessage(id, "%L", LANG_PLAYER, "FLAGS_HOLIDAY_START_HUD", Holiday_Start, Holiday_End);
    }
    return PLUGIN_HANDLED;
}

public plugin_end() {
    ArrayDestroy(g_StartTime);
    ArrayDestroy(g_EndTime);
    ArrayDestroy(g_Flag);
}

get_int_time(string[], &hour, &minutes) {
    new left[4], right[4]; strtok(string, left, charsmax(left), right, charsmax(right), ':');
    hour = str_to_num(left);
    minutes = str_to_num(right);
}

plugin_print(bool:bBlock, const szMessage[], any:...) {
    new szMsg[128];
    vformat(szMsg, charsmax(szMsg), szMessage, 3);
    switch(bBlock) {
        case false:    log_amx(szMsg);
        case true:    set_fail_state(szMsg);
    }
}
Назад
Сверху