Sign in to follow this  
Followers 0
Новый

[закрыто] Вопрос || Unix-time

Рекомендованные сообщения



Не найдено.

10 posts in this topic

Привет всем. Мне понятно , как создать само число времени UNIX-TIME.
Но у меня таков вопрос: как надо отсчитывать это самое число. ( Будет использовано в команде /ban )
** Использую MYSQL R-41:3
* На скринах : Структура таблицы и значения.
 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту spoiler.

 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту attachment.

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту attachment.

Пробовал устанавливать любые типы строки time (заменил int(15)) не помогло. Либо я туп или что-то еще

Edited by Новый
Причина: Перенёс в спойлер

0

Share this post


Link to post
Share on other sites

Эту строку: 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.

замените на эту строку: 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.

Тогда в базу данных будут попадать данные не о количестве забаненных дней, а сразу о UNIX-времени разбана. 

0

Share this post


Link to post
Share on other sites

Благодарю , заносится,

 но в базе-данных должно отображаться сколько осталось времени? Может надо сменить что-то в структуре таблицы?

 

0

Share this post


Link to post
Share on other sites
52 минуты назад, DEST сказал:

Эту строку: 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.

замените на эту строку: 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.

Тогда в базу данных будут попадать данные не о количестве забаненных дней, а сразу о UNIX-времени разбана. 

 

0

Share this post


Link to post
Share on other sites
4 часа назад, Новый сказал:

в базе-данных должно отображаться сколько осталось времени?

я не знаю как вам нужно сделать и как у вас реализована система разбана, поэтому этот вопрос вам

0

Share this post


Link to post
Share on other sites

@Новый, а зачем у вас вообще хранится UNIX время разбана/бана? Мало того, что это ненаглядно, так еще и больше времени уходит на реализацию всяких функций для конвертации времени.

0

Share this post


Link to post
Share on other sites

Пример более-менее адекватной реализации системы блокировки аккаунта. Данный пример может послужить в целом примером правильной работы со временем.

 

1. Для начала стоит понять (уяснить) для себя, какой именно вы хотите видеть данную систему. Мне, например, хотелось бы знать время, причину, дату бана, имя администратора, выдавшего бан аккаунта. На основе этих пожеланий создаем таблицу "players_bans" в базе данных:

  • "id" - идентификатор бана (уникальный ID, который присвоен данной блокировке).
  • "playerid" - идентификатор аккаунта игрока, который заблокирован. Обратите внимание: я собираюсь хранить именно идентификатор, а не nick-name, поскольку дублировать поля, содержащие имя игроков в нескольких таблицах (как минимум в нашей players_bans и таблице, где представлен список всех аккаунтов) не вижу смысла: это затратно в плане ресурсов, а также на поиск аккаунта методом сверки строк требуется больше времени. Вообще оперировать лучше всегда с идентификаторами, нежели со строками. Длина поля зависит от максимальной длины идентификатора аккаунта. Я поставил 5 (т.е. максимальный ID аккаунта - 99999).
  • "bandate" - дата блокировки аккаунта в формате

    Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту link.

    ('yyyy-mm-dd hh:mm:ss'). В значение "по умолчанию" установите CURRENT_TIMESTAMP (то есть поле bandate примет значение времени, в которое была создана запись о блокировке. Это облегчит работу в плане того, что нам не придется это время бана выставлять вручную. При необходимости его можно менять, нет никаких ограничений в этом плане.
  • "reason" - текстовое поле, хранящее в себе причину блокировки аккаунта. Длина - максимальная длина причины бана (я поставлю 64).
  • "adminid" - идентификатор аккаунта администратора, который выдал блокировку.
  • "unbandate" - дата окончания блокировки аккаунта в формате

    Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту link.

    ('yyyy-mm-dd hh:mm:ss'). В значение "по умолчанию" ничего не устанавливайте. Время окончания блокировки у всех игроков не будет зависеть от выдачи самой блокировки.

 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту spoiler.

 

А дальше остается уже вставлять эти функции в нужные места, при необходимости что-то где-то подправить (я не проверял работоспособность кода, но все должно работать).

2

Share this post


Link to post
Share on other sites
7 часов назад, odosenok сказал:

Пример более-менее адекватной реализации системы блокировки аккаунта. Данный пример может послужить в целом примером правильной работы со временем.

 

1. Для начала стоит понять (уяснить) для себя, какой именно вы хотите видеть данную систему. Мне, например, хотелось бы знать время, причину, дату бана, имя администратора, выдавшего бан аккаунта. На основе этих пожеланий создаем таблицу "players_bans" в базе данных:

  • "id" - идентификатор бана (уникальный ID, который присвоен данной блокировке).
  • "playerid" - идентификатор аккаунта игрока, который заблокирован. Обратите внимание: я собираюсь хранить именно идентификатор, а не nick-name, поскольку дублировать поля, содержащие имя игроков в нескольких таблицах (как минимум в нашей players_bans и таблице, где представлен список всех аккаунтов) не вижу смысла: это затратно в плане ресурсов, а также на поиск аккаунта методом сверки строк требуется больше времени. Вообще оперировать лучше всегда с идентификаторами, нежели со строками. Длина поля зависит от максимальной длины идентификатора аккаунта. Я поставил 5 (т.е. максимальный ID аккаунта - 99999).
  • "bandate" - дата блокировки аккаунта в формате

    Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту link.

    ('yyyy-mm-dd hh:mm:ss'). В значение "по умолчанию" установите CURRENT_TIMESTAMP (то есть поле bandate примет значение времени, в которое была создана запись о блокировке. Это облегчит работу в плане того, что нам не придется это время бана выставлять вручную. При необходимости его можно менять, нет никаких ограничений в этом плане.
  • "reason" - текстовое поле, хранящее в себе причину блокировки аккаунта. Длина - максимальная длина причины бана (я поставлю 64).
  • "adminid" - идентификатор аккаунта администратора, который выдал блокировку.
  • "unbandate" - дата окончания блокировки аккаунта в формате

    Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту link.

    ('yyyy-mm-dd hh:mm:ss'). В значение "по умолчанию" ничего не устанавливайте. Время окончания блокировки у всех игроков не будет зависеть от выдачи самой блокировки.

 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту spoiler.

Большое спасибо, приду - попробуй.

0

Share this post


Link to post
Share on other sites
В 10.11.2018 в 03:17, odosenok сказал:

Пример более-менее адекватной реализации системы блокировки аккаунта. Данный пример может послужить в целом примером правильной работы со временем.

 

1. Для начала стоит понять (уяснить) для себя, какой именно вы хотите видеть данную систему. Мне, например, хотелось бы знать время, причину, дату бана, имя администратора, выдавшего бан аккаунта. На основе этих пожеланий создаем таблицу "players_bans" в базе данных:

  • "id" - идентификатор бана (уникальный ID, который присвоен данной блокировке).
  • "playerid" - идентификатор аккаунта игрока, который заблокирован. Обратите внимание: я собираюсь хранить именно идентификатор, а не nick-name, поскольку дублировать поля, содержащие имя игроков в нескольких таблицах (как минимум в нашей players_bans и таблице, где представлен список всех аккаунтов) не вижу смысла: это затратно в плане ресурсов, а также на поиск аккаунта методом сверки строк требуется больше времени. Вообще оперировать лучше всегда с идентификаторами, нежели со строками. Длина поля зависит от максимальной длины идентификатора аккаунта. Я поставил 5 (т.е. максимальный ID аккаунта - 99999).
  • "bandate" - дата блокировки аккаунта в формате

    Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту link.

    ('yyyy-mm-dd hh:mm:ss'). В значение "по умолчанию" установите CURRENT_TIMESTAMP (то есть поле bandate примет значение времени, в которое была создана запись о блокировке. Это облегчит работу в плане того, что нам не придется это время бана выставлять вручную. При необходимости его можно менять, нет никаких ограничений в этом плане.
  • "reason" - текстовое поле, хранящее в себе причину блокировки аккаунта. Длина - максимальная длина причины бана (я поставлю 64).
  • "adminid" - идентификатор аккаунта администратора, который выдал блокировку.
  • "unbandate" - дата окончания блокировки аккаунта в формате

    Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту link.

    ('yyyy-mm-dd hh:mm:ss'). В значение "по умолчанию" ничего не устанавливайте. Время окончания блокировки у всех игроков не будет зависеть от выдачи самой блокировки.

 

Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту spoiler.

Еще один маааленький вопрос. Как отнять в формате это самое NOW();
* Для SendClientMessage

 

* Просто поставить format(string,sizeof(string), "%s-NOW()",band);
не работает.

 

0

Share this post


Link to post
Share on other sites

@Новый, это стоит отнимать в самом запросе. Либо же использовать библиотеку mxdate (она стандартная, в папке include Вашего сервера должна быть).

 

0

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Holmo
      By Holmo
      Доброго дня. Взял аксессуары под названием " Шар " из мода << Arizona RP >>. Вроде как вписал везде, выдаю себе в игре - но он не отображается. Что делать?
       
    • Rich_Hen
      By Rich_Hen
      Вообщем, такое дело, пишу мод с нуля. Столкнулся с такой проблемой.
       
      Имеется команда (спойлер чек), в ней проверка на администратора:
      if(Player[playerid][pAdmin] < 1) return SendClientMessage(playerid,COLOR_WHITE,AdminCMDError); Но проблема в том, что она не осуществляется. Когда ввожу эту команду в игре, мне выводит "AdminCMDError".
      Скриншот из игры:
       
      Так же хочу сказать то, что в базе данных у меня есть права администратора, прикрепляю так же код pInfo и БД:
       
      Возможно я чего-то не скинул, если есть желающие помочь - напишите в личные сообщения форума, там докину остальное.
       
       
       
    • PhNst27
      By PhNst27
      Допустим у меня есть две таблицы accounts и cars.В таблице cars есть параметры: id, model, color1, color2 и т.д. в accounts есть параметр "CarId", который должен ссылаться на параметр "Id" в таблице cars, как мне все это реализовать в коде?
      в gamemod набросал вот это:
      Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.
      Пожалуйста только не бросайтесь, я начинающий, и просто решил обратится к более опытным скриптерам.