PDA

Просмотр полной версии : [Вопрос] mysql | события/phpmyadmin



_lizard
18.02.2017, 16:30
Создал событие на уменьшение времени мута каждые 60 секунд, но почему-то оно не убавляет секунды (игроки удовлетворяют условиям WHERE). Может я не понимаю как они работают?
https://pp.vk.me/c639816/v639816832/6bd2/yGCH1ils6Xo.jpg
Где зачёркнуто - написано database@%


https://pp.vk.me/c639816/v639816832/6bd9/tVdoV3AyMQM.jpg https://pp.vk.me/c639816/v639816832/6be0/GYCUnl9tv8I.jpg

mute_time остаётся 1200.

ziggi
18.02.2017, 17:05
Какой тип поля?

И да, система не надёжная, лучше запоминать время окончания мута в виде timestamp, тогда никакие таймеры не понадобятся и ничего вычитать не придётся.

_lizard
18.02.2017, 17:10
Какой тип поля?
Int


И да, система не надёжная, лучше запоминать время окончания мута в виде timestamp, тогда никакие таймеры не понадобятся и ничего вычитать не придётся.
Так игрок может же и оффнуться, при повторном входе ему надо будет выдать оставшееся время
upd: догнал, что можно просто вычесть

DeimoS
18.02.2017, 22:12
Так игрок может же и оффнуться, при повторном входе ему надо будет выдать оставшееся время
upd: догнал, что можно просто вычесть

Эмм, Ziggi говорит про такой вариант:

//При выдаче мута
pInfo[playerid][pMuteTime] = gettime()+60;//Даём мут, например, на 60 секунд

//OnPlayerText
if(pInfo[playerid][pMuteTime] > gettime)
{
SendClientMessage(playerid, -1, "У вас мут");
return 0;
}

И ничего вычитать не нужно будет. Просто записываешь значение pMuteTime в таблицу и оттуда же выгружаешь при входе. Больше никаких действий не нужно

_lizard
19.02.2017, 11:05
Эмм, Ziggi говорит про такой вариант:

//При выдаче мута
pInfo[playerid][pMuteTime] = gettime()+60;//Даём мут, например, на 60 секунд

//OnPlayerText
if(pInfo[playerid][pMuteTime] > gettime)
{
SendClientMessage(playerid, -1, "У вас мут");
return 0;
}

И ничего вычитать не нужно будет. Просто записываешь значение pMuteTime в таблицу и оттуда же выгружаешь при входе. Больше никаких действий не нужно

Так игрок может просто оффнуться и мут у него будет "убывать" когда его не будет в игре. А мне надо, чтоб секунды убавлялись только в онлайне

DeimoS
19.02.2017, 11:12
Так игрок может просто оффнуться и мут у него будет "убывать" когда его не будет в игре. А мне надо, чтоб секунды убавлялись только в онлайне

Если у тебя есть столбец, куда записывается время выхода, то переводишь его в UnixTime, отнимаешь его от нового времени входа и прибавляешь это время к времени мута