Сбос цвета /fade

Сообщения
4
Реакции
0
Привет! Подскажите пожалуйста, как сделать чтобы 5ый пункт убирал затемнение экрана. Пробовал разными способами, максимум ставится на default (Синий)
(В коде одна из ста моих попыток).

Код:
#include <amxmodx>
#include <reapi>
#include <nvault>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
    #define client_disconnected client_disconnect
#endif

#define VAULT_NAME "lite_fade"             // Название файла для сохранения.
#define REMOVING_OBSOLETE_RECORDS 15         // Через сколько дней удалять устаревшие записи.

//#define FFA_MODE                 // Поддержка CSDM FFA.
//#define FLAG_ACCESS ADMIN_LEVEL_H         // Выдавать только указанным флагам.

enum _:udata
{
    FadeColor
}
new UserData[33][udata]

new g_Connected
#define IsUserValid(%1) (1 <= %1 <= 32)
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define clr_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

new g_MsgScreenFade, g_Vault
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6

#if defined FLAG_ACCESS
new bool:has_used[32]
#endif

public plugin_init()
{
    register_plugin("lite screen fade", "1.0", "AcE")
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true)

    g_Vault = nvault_open(VAULT_NAME)
    nvault_prune(g_Vault, 0, get_systime(-(86400 * REMOVING_OBSOLETE_RECORDS)))

    register_clcmd("say /fade", "fade_menu")
    register_clcmd("say_team /fade", "fade_menu")
    register_menucmd(register_menuid("Menu"), keys, "show_fademenu")
    g_MsgScreenFade = get_user_msgid("ScreenFade")
}

public fade_menu(id)
{
    #if defined FLAG_ACCESS
    if (!has_used[id])
    {
        if (!(get_user_flags(id) & FLAG_ACCESS))
        {
            client_cmd(id, "spk buttons/button2")
            client_print_color(id, print_team_default, "^1[^4Fade^1] ^3Данная команда вам недоступна!")
            return PLUGIN_HANDLED
        }
    }
    #endif

    static menu[1024], len; len = 0
    client_cmd(id, "spk buttons/lightswitch2")
    len = formatex(menu[len], charsmax(menu) - len, "\r[\yFade\r] \wВыберите цвет затемнения^n^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r1. \wСиний^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r2. \wЗелёный^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r3. \wКрасный^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r4. \wРозовый^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r5. \wФиолетовый^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r6. \wВыключен^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r0. \wВыход")
    show_menu(id, keys, menu, -1, "Menu")
    return PLUGIN_HANDLED
}

public show_fademenu(id, key)
{
    new szSteamId[32]
    get_user_authid(id, szSteamId, charsmax(szSteamId))

    client_cmd(id, "spk buttons/lightswitch2")
    switch(key)
    {
        case 0:
        {
            UserData[id][FadeColor] = 0
            client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Синий ^1цвет.")
            screen_fade(id); nvault_set(g_Vault, szSteamId, "0")
        }
        case 1:
        {
            UserData[id][FadeColor] = 1
            client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Зелёный ^1цвет.")
            screen_fade(id); nvault_set(g_Vault, szSteamId, "1")
        }
        case 2:
        {
            UserData[id][FadeColor] = 2
            client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Красный ^1цвет.")
            screen_fade(id); nvault_set(g_Vault, szSteamId, "2")
        }
        case 3:
        {
            UserData[id][FadeColor] = 3
            client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Розовый ^1цвет.")
            screen_fade(id); nvault_set(g_Vault, szSteamId, "3")
        }
        case 4:
        {
            UserData[id][FadeColor] = 4
            client_print_color(id, print_team_default, "^1[^4Fade^1] Вы выбрали ^4Фиолетовый ^1цвет.")
            screen_fade(id); nvault_set(g_Vault, szSteamId, "4")
        }
        case 5:
        {
            UserData[id][FadeColor] = 5
            client_print_color(id, print_team_default, "^1[^4Fade^1] Вы отключили затемнение.")
            screen_fade(id); nvault_set(g_Vault, szSteamId, "5")
        }
    }
    #if defined FLAG_ACCESS
    has_used[id] = true
    #endif
    return PLUGIN_HANDLED
}

public plugin_end()
{
    if (g_Vault != INVALID_HANDLE)
    {
        nvault_close(g_Vault)
    }
}

public client_disconnected(id) clr_bit(g_Connected, id)

public client_putinserver(id)
{
    if (is_user_bot(id) || is_user_hltv(id))
        return

    set_bit(g_Connected, id)
    arrayset(UserData[id], 0, udata)

    new szSteamId[32]
    get_user_authid(id, szSteamId, charsmax(szSteamId))

    if (szSteamId[0] == 'S')
    {
        new szSettings[6]
        nvault_get(g_Vault, szSteamId, szSettings, charsmax(szSettings))

        switch(szSettings[0])
        {
            case '0': UserData[id][FadeColor] = 0
            case '1': UserData[id][FadeColor] = 1
            case '2': UserData[id][FadeColor] = 2
            case '3': UserData[id][FadeColor] = 3
            case '4': UserData[id][FadeColor] = 4
            case '5': UserData[id][FadeColor] = 5
            default: UserData[id][FadeColor] = 0
        }
    }
    else
    {
        UserData[id][FadeColor] = 0
    }
}

public CBasePlayer_Killed_Post(const victim, killer, iGib)
{
    static live
    live = is_user_alive(killer)

    if (!get_bit(g_Connected, killer) && !live) return
    if (!IsUserValid(killer) || !IsUserValid(victim) || killer == victim || get_member(victim, m_bKilledByBomb)) return

    #if !defined FFA_MODE
    if (get_member(victim, m_iTeam) == get_member(killer, m_iTeam)) return
    #endif

    #if defined FLAG_ACCESS
    if (!(get_user_flags(killer) & FLAG_ACCESS)) return
    #endif

    screen_fade(killer)
}

public screen_fade(id)
{
    if (get_gametime() >= Float:get_member(id, m_blindStartTime) + Float:get_member(id, m_blindFadeTime))
    {
        message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, .player = id)
        write_short(1<<10); write_short(1<<11); write_short(0x0000)
        switch(UserData[id][FadeColor])
        {
            case 0:
            {
                // Синий.
                UserData[id][FadeColor] = 0
                write_byte(0); write_byte(0); write_byte(200)
            }
            case 1:
            {
                // Зелёный.
                UserData[id][FadeColor] = 1
                write_byte(0); write_byte(100); write_byte(0)
            }
            case 2:
            {
                // Красный.
                UserData[id][FadeColor] = 2
                write_byte(100); write_byte(0); write_byte(0)
            }
            case 3:
            {
                // Розовый.
                UserData[id][FadeColor] = 3
                write_byte(100); write_byte(0); write_byte(100)
            }
            case 4:
            {
                // Фиолетовый.
                UserData[id][FadeColor] = 4
                write_byte(90); write_byte(0); write_byte(157)
            }
            case 5: {}
            default:
            {
                // Синий.
                UserData[id][FadeColor] = 0
                write_byte(0); write_byte(0); write_byte(200)
            }
        }
        write_byte(75); message_end()
    }
}
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
Нет смысла тратить время - в любом случае плагин с багом, при затемнении экрана будет пропадать ослепление игроков после флеш.
Тут уже готовый нормальный вариант: https://dev-cs.ru/resources/41/
 
Сообщения
4
Реакции
0
На reapi этого бага нет. Вчера проверял. ))
Выбрал этот вместо того что скинули Вы, из-за того, что он простенький и в виде меню.
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
На reapi этого бага нет. Вчера проверял. ))
Выбрал этот вместо того что скинули Вы, из-за того, что он простенький и в виде меню.
по функционалу они идентичны, просто один из них криво написан
 

AcE

Сообщения
31
Реакции
4
Sonyx, плагин без бага если что а это не оригинальный код) это кто то уже изменял его. так как я не делал выключение плагина точнее пункт убрать fade. и когда слепой эффект ослепления не пропадает.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу