Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   WWW (http://mangos.ytdb.ru/forumdisplay.php?f=23)
-   -   Yii-framework WoW модуль (http://mangos.ytdb.ru/showthread.php?t=3978)

hyperion 25.03.2011 22:02

Yii-framework WoW модуль
 
На днях решил написать личный кабинет + админку для Mangos Zero. За основу взят yii-framework, и данный проект реализован как модуль к нему.
Что реализовано:
1) Простенький редактор таблицы characters, таких полей как name, account, level, money, class, gender, race, playerBytes, playerBytes2.
Поля gender, race, playerBytes, playerBytes2 напрямую редактировать нельзя, данные берутся путем копирования с существующих персонажей, поиск которых производится с помощью таблицы на странице. Нужна авторизация.
2) Статистика игроков онлайн. Вывод ника, уровня, класса и локации. Так же сортировка и фильтрация всего, кроме локации. Примененные фильтры сохраняются в сессии, нужно реализовать кнопку сброса сессии.
3) Статистика пвп. Для корректной работы нужно создать таблицу, вот скуль и серверная часть (думаю, сами догадаетесь куда присобачить эту функцию):
Код:

CREATE TABLE `character_honor_static` (
  `guid` int(10) unsigned NOT NULL,
  `hk` int(8) unsigned NOT NULL DEFAULT '0',
  `dk` int(8) unsigned NOT NULL DEFAULT '0',
  `today_hk` int(8) unsigned NOT NULL DEFAULT '0',
  `today_dk` int(8) unsigned NOT NULL DEFAULT '0',
  `yesterday_kills` int(8) unsigned NOT NULL DEFAULT '0',
  `yesterday_cp` int(8) unsigned NOT NULL DEFAULT '0',
  `thisWeek_kills` int(8) unsigned NOT NULL DEFAULT '0',
  `thisWeek_cp` int(8) unsigned NOT NULL DEFAULT '0',
  `lastWeek_kills` int(8) unsigned NOT NULL DEFAULT '0',
  `lastWeek_cp` int(8) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Код:

void Player::_SaveHonorStatic()
{
    CharacterDatabase.PExecute("DELETE FROM character_honor_static WHERE guid = '%u'", GetGUIDLow());
    std::ostringstream ss;
    ss << "INSERT INTO character_honor_static (guid, hk, dk, today_hk, today_dk, "
        "yesterday_kills, yesterday_cp, thisWeek_kills, thisWeek_cp, lastWeek_kills, lastWeek_cp) VALUES ("
        << GetGUIDLow() << ", "
        << GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS) << ", "
        << GetUInt32Value(PLAYER_FIELD_LIFETIME_DISHONORABLE_KILLS) << ", "
        << GetUInt16Value(PLAYER_FIELD_SESSION_KILLS, 0) << ", "
        << GetUInt16Value(PLAYER_FIELD_SESSION_KILLS, 1) << ", "
        << GetUInt32Value(PLAYER_FIELD_YESTERDAY_KILLS) << ", "
        << GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION) << ", "
        << GetUInt32Value(PLAYER_FIELD_THIS_WEEK_KILLS) << ", "
        << GetUInt32Value(PLAYER_FIELD_THIS_WEEK_CONTRIBUTION) << ", "
        << GetUInt32Value(PLAYER_FIELD_LAST_WEEK_KILLS) << ", "
        << GetUInt32Value(PLAYER_FIELD_LAST_WEEK_CONTRIBUTION) << ")";
    CharacterDatabase.Execute( ss.str().c_str() );
}

Репозиторий модуля, там же и описание как устанавливать:

https://bitbucket.org/hyperionzero/cms/src

С радостью отвечу на любые Ваши вопросы и выслушаю пожелания.

P.S. Буду очень благодарен за тестирование, так как у самого нет возможности все это протестировать.

hyperion 01.04.2011 23:17

Кто-то тестировал? Отпишитесь, очень интересно)

evilstar 02.04.2011 00:33

Протестить не могу, но задумка не плохая

hyperion 12.03.2012 23:28

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


Текущее время: 19:02. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS