суббота, 22 октября 2011 г.

Система учета посещаемости гильдии (часть 1)

Одно время были попытки найти аддон, который бы позволял учитывать посещаемость рейдов, т.н. аттенденс. Но ни один не прижился: были либо версии с ошибками либо с не наглядным отображением информации. Было это еще весной и именно тогда я задался идеей создать такую систему самостоятельно.

Идея ручками переписывать информацию еп и гп от бросилась изначально. Вообще, была попытка сделать все с минимальным количеством операций по сохранению текущей информации, но т.к. информацию из офицерских заметок вне игры была не доступна, пришлось искать решение импорта данных игры.


Первое, что пришло в голову - попробовать написать аддон самостоятельно, опыт программирование небольшой есть, думал - справлюсь. Но при попытке найти информацию по структуре построения аддонов и намеке на апи - потерпел крах.

Осознав, что просто так я ничего не напишу, отправился рыскать на курс в поиске примеров. Почему я сразу не начал искать готовое решение? Не знаю. Но, через некоторое время, я нашел именно то, что мне было необходимо: аддон GuildRosterDump, который собирает всю информацию о персонажей и позволяет импортировать ее в Exсel  в csv.

Собственно с этого и началась писаться система:
  1. Часть данных в полуавтоматическом режиме собирается из армори (Имена персонажей, уровень, класс, ранк в гильдии) через простой парсер.
  2. Вторая половина добиралась из генерированного аддоном файлика .csv (последний заход в игру, обычные и офицерские заметки, собственно в офицерских заметках и хранятся данные ЕП и ГП), далее файл заливался на сайт и тоже парсился.
  3. Подсчет посещаемости осуществляется по принципу: если с прошлого раза значение ЕП(которое сохраняется в БД) увеличилось, значит персонаж в рейде был.
Изначально на каждого персонажа сохранялось только 2 значения: сколько рейдов прошло всего, в которых мог участвовать персонаж и в скольких из них он был. Аттенденс высчитывался от этих 2 цифр: АТТ=Был в рейдах/Всего рейдов.

Просто. примитивно, но для начало этого хватало... Пока не прошло пару месяцев. Собственно, после этого, значение аттенденса уже мало что говорило, т.к. считали в общем, за весь период. Не было возможности отследить как часто тот или иной персонаж пропускает рейды, случается ли это каждую среду или игрок просто неделю был в отпуске.

К сожалению скриншотов старой системы не сохранилось, т.к. вскоре она была модернизирована в более новую, об этом в части 2.

Комментариев нет:

Отправить комментарий