Всем привет
Как можно сделать автоудаление аккаунта если игрок не заходит на сервер около 30 дней ?
Вид для печати
Всем привет
Как можно сделать автоудаление аккаунта если игрок не заходит на сервер около 30 дней ?
Если есть переменная с датой последнего входа, то используй ее.
Всем привет. Решил сегодня с MapIcon поиграться, хотел сделать иконку видимой на большой карте из любого места, а на мини-карте только при приближении, но после кучи попыток замены стиля иконки, изменения дистанции стрима - так ничего и не получилось.. Точнее получилось сделать так, что иконка становится видимой на большой карте всегда только после того как к ней подъедешь (10000.0 стрим и MAPICON_LOCAL). В одиночной игре есть иконки про которые я говорю, а в сампе разве нет?
p.s. Создавал и через CreateDynamicMapIcon и через SetPlayerMapIcon.
Опять же, возвращаемся к теме "ЗАЩеМ УЧИТЬ МУСКУЛ, ВЕТЬ ЭТА НИ ЯЗЫК И Я ИТАК ВНЁМ РАЗБИРАЮСЯ!!!"
Реализация полностью на стороне БД:
- Создаём новое поле, указывая ему тип "TIMESTAMP", размер не указывая и указывая лишь "По умолчанию" как "CURRENT_TIMESTAMP". Всё. Теперь все новые строки, которые создаются в таблице, будут автоматически сохраняться с датой и временем создания этих самых строк (время берётся с сервера, на котором установлен MySQL).
- В моде создаём вот такой запрос (если стоит система часов на сервере, то можно отправлять его, например, каждый день в 12 ночи):
И при каждом запросе "UPDATE" добавить обновление нашего столбца таким образом:PHP код:
DELETE FROM `имя_таблицы` WHERE `имя_нашего_столбца` < NOW() - INTERVAL 30 DAY
И всё, вы идеальный программист.PHP код:
`имя_нашего_столбца` = NOW()
P.S. Так же в самой БД может быть настройка событий, куда можно запихать запрос на удаление старых аккаунтов. В phpMyAdmin настройка так и называется: "События". Находится она там же, где у вас все вкладки "Структура", "Обзор" и т.д. (заходить надо именно в БД, а не в таблицу). Настраиваем выполнение события на промежуток в день и всё. В мод останется лишь добавить обновление столбца со временем, как я показал выше и всё
Если реализация нужна для файлов, то тут проще использовать сторонний софт/настройки хостинга, которые будут проверять дату создания/правки файла и удалять "просроченные"
P.S. МУСКУЛ УЧАТ ТОКА СЛАБАКИ! ТОК ПАВН, ТОКА ХАРДКОР!
now() возвращает время с сервера. А если кривые администраторы , то и время на сервере кривое.
А, ещё возможно, что сервер будет не на территории этой страны -> что и время будет другое в запросах.
Спс все работает)
Ну вот вопрос при каждом запросе "UPDATE" добавить обновление нашего столбца:
Я его добавляю перед WHERE правильно ? или нет
А еще если не добавлять в каждый "UPDATE"Код:format(MySQL, sizeof(MySQL), "UPDATE house SET hOwner = '%s', `time_vhod` = NOW() WHERE hID = '%d' LIMIT 1",Name(playerid),houseid);
У меня при логине записывается дата входа если только в нее добавить `time_vhod` = NOW() то в другие можно не добавлять ? или все же лучше в каждый запрос ?
Код:format(string, sizeof(string), "UPDATE `accounts` SET `pGetonDate` = '%d/%d/%d', `pGetonIP` = '%s' WHERE `ID` = '%i' LIMIT 1", day, month, year, pTemp[playerid][pIp], PlayerInfo[playerid][MysqlpID]);
Таки я об этом сам сказал, не? И это легко правится либо на стороне запросов, либо простым обращением к хостеру с просьбой подправить время на машине, не? Или не? Не?
- - - Добавлено - - -
Ну если игрок на сервере провисит 30 суток, а после выйдет, его аккаунт будет удалён, ибо сохранение было только при входе :sarcastic: Но вообще да, можно, если, например, на сервере каждую ночь происходит рестарт
Хостинг, например находиться в Франции ты попросишь сменить время в mysql-server, боюсь, что тебя пошлют куда подальше (хотя я не уверен, что нельзя сделать для конкретной базы свое время)
Хмм я не уверен, что такое вкатит, но можно попробовать:
P.S: Я в этих Ваших СУБД не очень то и силен.PHP код:
SET time_zone = 'MSK'