Dmitriy Makarov
Умник
Привет. Столкнулся со странной проблемой, которая, вроде бы должна работать нормально.
Как было до:
Это обычный таймер, который я создал, когда делал команду /mute. Мне посоветовали создать 1 общий таймер для подобных вещей: Мут/КПЗ/Время каптов и т.д.
Это теперь общий таймер. Единственное, название я забываю всегда менять.
Окей. Решил тогда сделать команду /jail.
Сделал. Но таймер нагнулся и теперь не работает ни /jail, ни /mute.
P.S: Не работает в смысле мне пишет, что у меня уже есть мут/кпз.
Что теперь стало:
Прикол в том, что я команду /jail сделал точно так же, как и команду /mute. Т.е, я в /jail не добавлял того, чего нету в /mute, ибо команды практически одинаковые в плане времени.
Может я где-то что-то упустил?
P.S: Таймер до добавления команды /jail работал нормально.
Как было до:
C++:
new MuteTimer[MAX_PLAYERS]; // global variable
// stock LoadDataFromDataBase(playerid) - (Это сток, который берёт данные из БД)
if(pInfo[playerid][pMute] != 0) MuteTimer[playerid] = SetTimerEx("MuteSecondTimer", 1000, true, "d", playerid);
// timer
forward MuteSecondTimer(playerid);
public MuteSecondTimer(playerid)
{
if(--pInfo[playerid][pMute] == 0)
{
KillTimer(MuteTimer[playerid]);
new query[70];
format(query, sizeof(query), "UPDATE users SET Mute = '%d' WHERE id= '%d' LIMIT 1", pInfo[playerid][pMute], pInfo[playerid][pID]);
mysql_tquery(dbHandle, query);
SCM(playerid, COLOR_LIMEGREEN, !"Доступ в чат разблокирован");
}
return true;
}
// public OnPlayerDisconnect
KillTimer(MuteTimer[playerid]);
Это теперь общий таймер. Единственное, название я забываю всегда менять.
Окей. Решил тогда сделать команду /jail.
Сделал. Но таймер нагнулся и теперь не работает ни /jail, ни /mute.
P.S: Не работает в смысле мне пишет, что у меня уже есть мут/кпз.
Что теперь стало:
C++:
// global variable
new MuteTimer[MAX_PLAYERS];
new JailTimer[MAX_PLAYERS];
// OnGameModeInit()
SetTimer("MuteSecondTimer", 1000, 1);
// Timer
forward MuteSecondTimer(playerid);
public MuteSecondTimer(playerid)
{
if(--pInfo[playerid][pMute] == 0)
{
KillTimer(MuteTimer[playerid]);
new query[70];
format(query, sizeof(query), "UPDATE users SET Mute = '%d' WHERE id= '%d' LIMIT 1", pInfo[playerid][pMute], pInfo[playerid][pID]);
mysql_tquery(dbHandle, query);
SCM(playerid, COLOR_LIMEGREEN, !"Доступ в чат разблокирован");
}
if(--pInfo[playerid][pJail] == 0)
{
KillTimer(JailTimer[playerid]);
new query[70];
format(query, sizeof(query), "UPDATE users SET JailTimer = '%d' WHERE id= '%d' LIMIT 1", pInfo[playerid][pJail], pInfo[playerid][pID]);
mysql_tquery(dbHandle, query);
SCM(playerid, COLOR_LIMEGREEN, !"Вы отсидели свой срок в тюрьме и можете идти на свободу");
}
return true;
}
// OnplayerDisconnect
KillTimer(MuteTimer[playerid]);
KillTimer(JailTimer[playerid]);
// Проверки в командах /jail, /mute
if(pInfo[params[0]][pMute] != 0) return SCM(playerid, COLOR_GREY, "У этого игрока уже заблокирован чат"); // Mute
if(pInfo[params[0]][pJail] != 0) return SCM(playerid, COLOR_GREY, "Этот игрок уже находится в тюрьме"); // Jail
Может я где-то что-то упустил?
P.S: Таймер до добавления команды /jail работал нормально.
