Ночная вип, пропадают флаги.

Сообщения
264
Реакции
80
Помог
1 раз(а)
Всем привет! Вечер добрый. :yes3:

Чуть переделал, ночную випку.. ну что-бы если заходит админ или вип, ему не присваивались флаги.
Но вот если заходит обычный игрок и в процессе игры меняет ник, то у него пропадают ранее выданные флаги.
Прощу помощи! Подскажите, как мне это исправить?

Код:
#include <amxmodx>
#include <amxmisc>

new const START = 0
new const FINISH = 9

new const FLAGS = ADMIN_LEVEL_G|ADMIN_LEVEL_H

new g_DefaultFlag

public plugin_init()
{
    register_plugin("Night VIP", "0.1", "F@nt0M")
}

public plugin_cfg()
{
    new cvar = get_cvar_pointer("amx_default_access")
    if (cvar)
    {
        new flags[32]
        get_pcvar_string(cvar, flags, charsmax(flags))
        g_DefaultFlag = read_flags(flags)
    }
}

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

    if (checkTime() && (get_user_flags(id) & FLAGS) != FLAGS)
    {
        if (g_DefaultFlag)
        {
            remove_user_flags(id, g_DefaultFlag)
            set_user_flags(id, FLAGS)
        }
    }
}

bool:checkTime()
{
    new hour
    time(hour)
    return (START <= hour <= FINISH) ? true : false
}
Код:
#include <amxmodx>

new const START = 0;
new const FINISH = 9;

new const FLAGS = ADMIN_LEVEL_G|ADMIN_LEVEL_H;

new g_DefaultFlag;

public plugin_init() {
    register_plugin("Night VIP", "0.1", "F@nt0M");
}

public plugin_cfg() {
    new cvar = get_cvar_pointer("amx_default_access");
    if (cvar) {
        new flags[32];
        get_pcvar_string(cvar, flags, charsmax(flags));
        g_DefaultFlag = read_flags(flags);
    }
}

public client_putinserver(id) {
    if (checkTime() && (get_user_flags(id) & FLAGS) != FLAGS) {
        if (g_DefaultFlag) {
            remove_user_flags(id, g_DefaultFlag);
            set_user_flags(id, FLAGS);
        }
    }
}

bool:checkTime() {
    new hour;
    time(hour);

    return (START <= hour <= FINISH) ? true : false;
}
 
Сообщения
258
Реакции
262
Помог
5 раз(а)
если заходит обычный игрок и в процессе игры меняет ник
Вы замечали, наверное, что при изменении ника в консоли клиента / сервера появляется сообщение с текстом типа "* Привилегии установлены"? Следовательно, когда игрок изменяет свой ник, дефолтный плагин выдачи привилегий выдаёт ему флаги заново (то есть, флаг доступа по умолчанию, т.к. игрока нет в списке users.ini или в БД). Соответственно, есть три пути решения:
  1. Блокировать смену ника в ночное время
  2. Отлавливать смену ника и занового вешать флаги
  3. Изменить логику плагина таким образом, чтобы не выдавать флаги каждому игроку, а менять дефолтный набор флагов в ночное время
 
Сообщения
264
Реакции
80
Помог
1 раз(а)
Subb98, Действительно вы правы.
Интересует вот это.
  1. Изменить логику плагина таким образом, чтобы не выдавать флаги каждому игроку, а менять дефолтный набор флагов в ночное время
Можно хоть примерно узнать, как делается это? :blush2:
 
Сообщения
258
Реакции
262
Помог
5 раз(а)
REVO, в этом случае потребуется бесконечный task, чтобы проверять, наступило / прошло ли ночное время. При наступлении / прошествии ночного времени изменять значение квара amx_default_access. Если на сервере используются раунды, то можно обойтись без task'а, проверяя время каждый раунд.
15 Янв 2018
П.с.: и, конечно, при изменении флагов не забыть выполнить команду amx_reloadadmins, чтобы у игроков обновились флаги.
 

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

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