|
---|
|
Регистрация | Правила | Альбомы | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Патчи Если кто-то хочет выложить не свой готовый патч - не забудьте указать автора и источник. Если кто-то хочет задать вопрос по патчу - лучше не на этом форуме вообще. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
05.01.2010, 20:58 | #1 |
Guest
Сообщений: n/a
|
[mod] История арены
Вообщем даж язык не поворачивается назвать это патчем, но тем неменее - игрокам приятно, админам полезно. Просто хотелось сделать так же как в Оруженой на Оф сервере.
Цель: в базу записывается каждая игра на арене, кто с кем, когда, на какой карте, кто победил, новый рейтинг. Т.к. в C++ ноль, и в коде мангоса пока мало разбираюсь, сделал по простому "чтоб работало". Если кто подскажет куда лучше запихнуть добавленный мной код (или может его как-то изменить) буду признателен. Патч: Код:
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index c909a6e..a0ef7bd 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -826,6 +826,9 @@ void BattleGround::EndBattleGround(uint32 winner) // this way all arena team members will get notified, not only the ones who participated in this match winner_arena_team->NotifyStatsChanged(); loser_arena_team->NotifyStatsChanged(); + CharacterDatabase.BeginTransaction(); + CharacterDatabase.PExecute("INSERT INTO arena_team_history (winner_team, winner_rating, loser_team, loser_rating, type, map) VALUES ('%u', '%u', '%u', '%u', '%u', '%u')", winner_arena_team->GetId(), winner_arena_team->GetRating(), loser_arena_team->GetId(), loser_arena_team->GetRating(), winner_arena_team->GetType(), GetMapId()); + CharacterDatabase.CommitTransaction(); } if (winmsg_id) Код:
DROP TABLE IF EXISTS `arena_team_history`; CREATE TABLE `arena_team_history` ( `id` int(11) NOT NULL auto_increment COMMENT 'Identifier', `winner_team` int(10) unsigned NOT NULL default '0', `winner_rating` int(10) unsigned NOT NULL default '0', `loser_team` int(10) unsigned NOT NULL default '0', `loser_rating` int(10) unsigned NOT NULL default '0', `type` int(2) unsigned NOT NULL default '0', `map` int(10) unsigned NOT NULL default '0', `play_time` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; winner_rating - новый рейтинг победившей команды loser_team - записывается ID проигравшей команды loser_rating - новый рейтинг проигравшей команды type - тип арены map - ID карты (572 - лордерон, 559 - награнд, 562 - острогорье) play_time - дата игры Этих данных вполне хватит для небольшой статистики. Для того чтобы можно было просматривать статистику самих матчей нужно будет сделать ещё одну таблицу, куда залить данные: 1. guid-ы игравших игроков 2. нанесённый ими урон\хил 3. количество смертельных ударов Но пока что-то не получается найти те переменные, которые хранят эти данные для записи их в БД. Если кто поможет буду оч рад) P.S. надеюсь из этой идеи получится хороший и полезный мод для серверов)) |
3 пользователя(ей) сказали cпасибо: | sven (07.01.2010) |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|