• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Баг с блокировкой чата

Статус
В этой теме нельзя размещать новые ответы.

Dmitriy Makarov

Умник
Привет.
Делал команды /mute, /unmute. Сами команды работают нормально, но есть проблема, из-за которого случается следующее:
При входе в игру, если у человека нету на аккаунте мута, то ему после коннекта на сервер пишет, мол, срок действия блокировки чата истёк и т.п, ну в общем, то, что пишет когда мут спадает сам.
Писал на другом форуме, они почему-то меня обосрали из-за незнания основ.
Помогите, пожалуйста.
Вот фулл код, связанный с мутом:
C++:
new MuteTimer[MAX_PLAYERS]; // Переменная в начале мода

// stock LoadDataFromDataBase, где берётся информация об аккаунте с Базы Данных
cache_get_value_name_int(0, "Mute", pInfo[playerid][pMute]);
MuteTimer[playerid] = SetTimerEx("MuteSecondTimer", 1000, true, "d", playerid);

// Сама проблема вот здесь. При входе на сервер, если у меня нету мута, то срабатывает 1-е условие
forward MuteSecondTimer(playerid);
public MuteSecondTimer(playerid)
{
    if(pInfo[playerid][pMute] == 0)
    {
        SCM(playerid, COLOR_LIMEGREEN, "Срок действия блокировки чата истёк. Доступ в чат разблокирован");
        KillTimer(MuteTimer[playerid]);
        new query[72];
        format(query, sizeof(query), "UPDATE `users` SET `Mute` = '%d' WHERE `ID` = '%d' LIMIT 1", pInfo[playerid][pMute], pInfo[playerid][pID]);
        mysql_tquery(dbHandle, query);
    }
    if(pInfo[playerid][pMute] > 0) pInfo[playerid][pMute]--;
    return 1;
}

// OnPlayerDisconnect
KillTimer(MuteTimer[playerid]);


// Сами команды /mute, /unmute
CMD:mute(playerid, params[])
{
    if(pInfo[playerid][pAdmin] < 2) return 1;
    new string[128];
    if(sscanf(params, "dds[128]", params[0], params[1], params[2])) return SCM(playerid, COLOR_GREY, "Используйте: /mute [ID] [Время] [Причина]");
    if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрока с таким ID нет на сервере");
    if(params[1] < 1 || params[1] > 300) return SCM(playerid, COLOR_GREY, "Время не должно быть меньше 1 и выше 300");
    if(pInfo[params[0]][pMute] != 0) return SCM(playerid, COLOR_GREY, "У этого игрока уже заблокирован чат");
    pInfo[params[0]][pMute] = params[1] * 60;
    format(string, sizeof(string), "Администратор %s выдал блокировку чата игроку %s на %d мин. Причина: %s", pInfo[playerid][pName], pInfo[params[0]][pName], params[1], params[2]);
    SCMTA(COLOR_LIGHTRED, string);
    SCM(params[0], 0xDF5402FF, "Доступ в чат заблокирован. Чтобы узнать время до разблокировки чата, введите /mtime");
    new query[74];
    format(query, sizeof(query), "UPDATE `users` SET `Mute` = '%d' WHERE `id` = '%d' LIMIT 1", pInfo[params[0]][pMute], pInfo[params[0]][pID]);
    mysql_tquery(dbHandle, query);
    MuteTimer[playerid] = SetTimerEx("MuteSecondTimer", 1000, true, "d", playerid);
    return 1;

}

CMD:unmute(playerid, params[])
{
    if(pInfo[playerid][pAdmin] < 2) return 1;
    new string[128];
    if(sscanf(params, "ds[128]", params[0], params[1])) return SCM(playerid, COLOR_GREY, "Используйте: /unmute [ID] [Причина]");
    if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрока с таким ID нет на сервере");
    if(pInfo[params[0]][pMute] == 0) return SCM(playerid, COLOR_GREY, "У этого игрока не заблокирован чат");
    format(string, sizeof(string), "Администратор %s снял блокировку чата с игрока %s. Причина: %s", pInfo[playerid][pName], pInfo[params[0]][pName], params[1]);
    SCMTA(COLOR_LIGHTRED, string);
    SCM(params[0], COLOR_LIMEGREEN, "Доступ в чат разблокирован");
    pInfo[params[0]][pMute] = 0;
    new query[69];
    format(query, sizeof(query), "UPDATE `users` SET `Mute` = '%d' WHERE `id` = '%d' LIMIT 1", pInfo[params[0]][pMute], pInfo[params[0]][pID]);
    mysql_tquery(dbHandle, query);
    return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу