Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

История благодарностей участнику xlock ::: Спасибо сказали: 2
Дата поста: В теме: За сообщение: Спасибо сказали:
16.2.2012, 11:53 Server Stat System
Пришлось переделать статистику. Так , как она по умолчанию отображает первым в списке фрагеров.
А так же если в имени игрока встречаются " ' " ( кавычка одинарная) , тго Mysql Error


1. файл /web/inc/api.stat.php строка 107 ( у меня, у вас может быть другая, я код поправлял )
Код
$v['name'] = ($v['name']); // эта строка, изменить на  
$v['name'] = htmlspecialchars($v['name']);

2. Этот же файл
Код
строка 79
                                SELECT SQL_CACHE
                                p.`id`,
                                p.`name`,
                                p.`alltime`,
                                p.`numrounds`,
                                sum(w.`kills`) as kills,
                                sum(w.`deaths`) as deaths,
                                sum(w.`headshots`) as headshots,
                                sum(w.`teamkilling`) as teamkilling,
                                sum(w.`shots`) as shots,
                                sum(w.`hits`) as hits,
                                sum(w.`damage`) as damage

                                FROM `players` as p
                                LEFT JOIN `weapons` as w ON w.user_id=p.id
                                GROUP BY p.id
                                ORDER BY `kills` desc
                                LIMIT ".$start.", ".$perpg."
// эта строка, изменить на  
SELECT SQL_CACHE
p.`id`,
p.`name`,
p.`alltime`,
p.`numrounds`,
sum(w.`kills`) as kills,
sum(w.`deaths`) as deaths,
ROUND((CASE WHEN sum(w.`kills`)<50 THEN 0 ELSE sum(w.`kills`)+1 END)/(CASE WHEN sum(w.`deaths`)=0 THEN 1 ELSE sum(w.`deaths`)+1 END),2) as stat,
sum(w.`headshots`) as headshots,
sum(w.`teamkilling`) as teamkilling,
sum(w.`shots`) as shots,
sum(w.`hits`) as hits,
sum(w.`damage`) as damage
FROM `players` as p
LEFT JOIN `weapons` as w ON w.user_id=p.id
GROUP BY p.id
ORDER BY `stat` desc
                                LIMIT ".$start.", ".$perpg."

а так же заменить
Код
строка примерно 51
SELECT SQL_CACHE
                p.`id`,
                p.`name`,
                sum(w.`kills`) as `kills`,
                sum(w.`deaths`) as `deaths`
                FROM `players` as p
                LEFT JOIN `weapons` as w ON w.user_id=p.id
                GROUP BY w.user_id
                ORDER BY `kills` DESC
                LIMIT ".$num;

// заменить на
SELECT SQL_CACHE
                p.`id`,
                p.`name`,
                sum(w.`kills`) as `kills`,
                sum(w.`deaths`) as `deaths`,
                ROUND((CASE WHEN sum(w.`kills`)<50 THEN 0 ELSE sum(w.`kills`)+1 END)/(CASE WHEN sum(w.`deaths`)=0 THEN 1 ELSE sum(w.`deaths`)+1 END),2) as stat
                FROM `players` as p
                LEFT JOIN `weapons` as w ON w.user_id=p.id
                GROUP BY w.user_id
                ORDER BY `stat` DESC
                LIMIT ".$num;

Теперь нужно исправить Шаблон players.tbl
Строка 16 и 17
Код
<th class="top" scope="col" width="45">{"PG_PLAYERS_KILLS"|getLangVar}</th>
<th class="top" scope="col" width="45">{"PG_PLAYERS_DEATHS"|getLangVar}</th>
//заменить на
<th class="top" scope="col" width="45">Kоэфф.</th>
<th class="top" scope="col" width="45">{"PG_PLAYERS_KILLS"|getLangVar}<br>{"PG_PLAYERS_DEATHS"|getLangVar}</th>

Строка 28 и 29
Код
<td class="tbl_val">{$pla.kills}</td>
<td class="tbl_val">{$pla.deaths}</td>
//заменить на
<td class="tbl_val">{$pla.stat}</td>
<td class="tbl_val">{$pla.kills} | {$pla.deaths}</td>


итог можно посмотреть на http://games.xlock.ru/web
redow