Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Генерация object_id
#1
Всем привет. Пишу, а вернее дописываю торговую площадку (аукцион), но не в игре, а на сайте, ибо ни явы не знаю, и исходников нет. И вот задумался насчёт генерации object_id вещи.
Смысл площадки в том, что пользователи на сайте могут выставить свою вещь на продажу с игры, ну и соответственно также купить.
Я так понял в ядро встроен какой-то механизм генерации этих самых object_id. Но что будет если, когда пользователь выставил вещь на продажу я возьму object_id этой вещи, а потом когда кто-то другой купит вещь или пользователь захочет снять лот с продажи я присвою тот же object_id этой вещи? Может ли так статься, что сервер присвоит уже не используемый у него object_id другой вещи? И на момент когда кто-то купит эту вещь object_id уже будет использоваться каким-то другим итемом?
Вот и хотелось бы узнать, может ли object_id сгенерирован повторно, если ранее он использовался, но на данный момент его в базе игры нигде нет? И как быть в этом случае? Можно конечно найти максимальный, плюсануть к нему какое-то рандомное число и записать итем в базу уже с новым object_id
Ответ
#2
ядро будет делать аля +1 после последнего. Старые обжИДы оно брать не будет уже

Чтобы самостоятельно добавлять вещь - делайте +1 к максимальному, либо через делайед таблицу, если такая присутствует (л2п ветка)
L2j Pane v1.7 - админка для вашего L2 сервера
Ответ
#3
Цитата:Чтобы самостоятельно добавлять вещь - делайте +1 к максимальному
И тем самым Вы наступите на старые-добрые грабли, которым уже лет 10 как минимум.
Инкрементировать objid напрямую в БД не следует. Это только приведёт к лишним неприятностям.

Назначать objid может и должен лишь только сервер. Поэтому, если сборка не имеет "специальной таблицы" - её придётся запилить самому, либо запилить какой-нибудь REST API для выдачи следующего objid из IdFactory.
Ответ
#4
SouthBridge Написал:И тем самым Вы наступите на старые-добрые грабли, которым уже лет 10 как минимум.
Инкрементировать objid напрямую в БД не следует. Это только приведёт к лишним неприятностям.

Назначать objid может и должен лишь только сервер. Поэтому, если сборка не имеет "специальной таблицы" - её придётся запилить самому, либо запилить какой-нибудь REST API для выдачи следующего objid из IdFactory.

Автор писал, что не полез в ядро, т.к. не знает языка. Думаю, подобный вариант не подойдет
L2j Pane v1.7 - админка для вашего L2 сервера
Ответ
#5
Aleksey Написал:Автор писал, что не полез в ядро, т.к. не знает языка. Думаю, подобный вариант не подойдет

Если автор сам пишет веб площадку то это как минимум php.. А насколько я помню от жабы он не сильно отличается.. Ну если не писать код то прочесть и понять уж точно можно.
:redlol:
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)