Сообщений: 234
Тем: 22
Зарегистрирован: Dec 2010
Репутация:
236
Всех приветствую! Давно ушел из темы л2, по этому не следил не за чем, а сейчас появился интерес дальше поковырять л2. Увидел на некоторых серверах некую систему достижений для каждого персонажа. Стало интересно, как это все реализовано. Подскажите, где можно подсмотреть?
Хочу на эпилог это попробовать прикрутить ради интереса, но с 0 не смогу написать, я объективно оцениваю свои возможности) А вот посмотреть, как сделано - очень интересно! Или же это все только продается?
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
Продается, например, тут, если это то, что Вы имели ввиду. Правда там далеко не в КБ реализация.
Закручивать такую систему не долго, требуется лишь общая абстракция требований для ачивок, расставить где нужно слушатели, впилить какой-нибудь хмл с описанием ачивок и профит. Как выводить текст/картинку в КБ надеюсь все знают
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 234
Тем: 22
Зарегистрирован: Dec 2010
Репутация:
236
Спасибо, примерно это то.
А вообще я вот про это говорил(взято с одного сервера, вроде ХФ):
Я так понимаю, прогресс в достижениях же должен записываться в базу, а для этого нужно же отслеживать за игроком еще больше информации, собирать ее и записывать в бд ?
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
itcry Написал:Я так понимаю, прогресс в достижениях же должен записываться в базу, а для этого нужно же отслеживать за игроком еще больше информации, собирать ее и записывать в бд ?
Достаточно писать только сами полученные ачивки, а не записывать процесс их получения (ибо это уже процесс геймплея). Сами ачивки намекают на то что, они одноразовые. Например: забафать Баюма до смерти или убить игрока вилд валком. Вся эта логика и события происходят непосредственно в игре и сохранять сколько раз мы бафнули Баюма - нет смысла. Достаточно повесить событийные слушатели на те или иные вещи и по определенному событию/группе событий уже выдавать ачивку, которая же, в свою очередь, будет сейвится в базу. Just simple.
Очки и т.д. вещи уже можно вычислять в рантайме, без сейва, т.к. сами выполненные ачивки у нас есть соотв. дата сколько какая ачивка дает очков. Аналогично с максимальным/выполненным количеством и другой мишурой.
Дальше додумывайте сами.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 234
Тем: 22
Зарегистрирован: Dec 2010
Репутация:
236
А как быть, например, с ачивкой убить 10 раз баюма. Ведь нужно же запоминать, сколько раз его убил каждый персонаж. Ну в общем тут все более менее понятно. под каждую такую ачивку придется писать свой код с сохранением в бд... В общем все таки сложно это все для меня. Точно подсмотреть негде?))
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
Ну хотите делать так - делайте. Каждый крутит, как хочет.
P.S: для кратковременного сейва данных можно посмотреть в сторону записи прогресса квестов, либо serverdata.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
зачем?
просто в таблице у игрока где хранится инфа о ачивках завести еще одно поле для подобных ачивок, где и хранить в виде числа прогресс. ну и естественно ставить флаг того что ачивка получена тогда, когда прогресс достигнет желаемого значения.
т.е. структура записей в эту таблицу должна быть к примеру такой.
ид_игрока
ид_ачивки
статус (получена/не получена)
прогресс
время_получения
реализация самого механизма для работы с ачивками то по сути дело плевое. самый геморрой - это как раз придумывать, за что их давать, расставлять везде где надо вызовы этого всего и т.п.
Сообщений: 1,240
Тем: 29
Зарегистрирован: May 2013
Репутация:
2,505
Если и делать, то нормально отдельной подсистемой. Всё остальное это костыли костылей. Можно поставить слушатели повсюду, что позволит собирать полную статистику, которая даст возможность придумывать "на ходу" новые ачивки.
Родился, живу и когда-нибудь умру.
|