Недавно возникла необходимость получить готовый модуль сразу с доп табами и всеми правками. Оказалось такого нет. Пришлось собирать самому.
Изменения внесённые в модуль под спойлером и в текстовом файле в архиве.
В архиве всё что было изменено/добавлено мною в стандартный модуль. Просто распакуйте в папку с чистым модулем и настройте доступ к бд.
Ссылка на архив: https://www.dropbox.com/s/n84h0fvameppt . %D0%B0.rar
Краткий список изменений
Полный список изменений
Старожил прошу, если будет время и желание, проверить, вдруг чего накосячил, но у меня всё работает.
http://mccleod.vv.si/wnstat/main.php
Изменения внесённые в модуль под спойлером и в текстовом файле в архиве.
В архиве всё что было изменено/добавлено мною в стандартный модуль. Просто распакуйте в папку с чистым модулем и настройте доступ к бд.
Ссылка на архив: https://www.dropbox.com/s/n84h0fvameppt . %D0%B0.rar
Краткий список изменений
Читать дальше
Значёк клана, Отключение авторизации для хостингера, Заплатки для хостингера, Вкладка "Танковые показатели", Вкладка "Общая за период", Вкладка "приветственное", Увеличение времени отображения пришедших/ушедших, Вкладка "Динамика игрока", Рейтинг бронесайта, Рейтинг бронесайта во вкладку "Динамика игрока", Вкладка с статистикой отдельного игрока [1.3.2], Новый РЭ, Добавление англичан
Полный список изменений
Читать дальше
2.Значёк клана \views\body.php
на
3.Отключение авторизации cron.php
на
4.Заплатки для хостингера function\func_get.php
на
и
на
и
5.Вкладка "Танковые показатели" +ajax\tankstat.php
+tabs\ajaxstat.php
6.Вкладка "Общая за период" +ajax\general_activity.php
+tabs\ajax_general_activity.php
7.Вкладка "приветственное". +tabs\avt.php
+images\down.png
+images\up.png
вырежьте с 19 по 88 включительно строчки из roster.php
8.Увеличение времени отображения пришедших/ушедших
в main.php
на
в function\func_time.php полностью заменить функцию went_players на
и функцию new_players на
9.Вкладка "Динамика игрока" +images\down.png
+images\up.png
+tabs\ajax_player.php
+ajax\player_result.php
+translate\overall_ru.php
10.Рейтинг бронесайта В папке function открываем файл rating.php и ищем вот такую функцию:
В указанное выше место добавляем вот такой код:
В папке tabs открываем файл overall.php и находим вот такую строку:
После нее добавляем:
Если хотите русский заголовок, убедитесь что сохраняете файл в кодировке UTF-8 without BOM или просто UTF-8
Дальше, в том же файле, находим вот такой код:
Сразу после него добавляем:
11.Рейтинг бронесайта во вкладку "Динамика игрока"
меняем ajax\player_result.php
12.Вкладка с статистикой отдельного игрока [1.3.2]
+tabs\player.php
в views\body.php
на
и
на
в основе была строчка
<
на
+images\upgrade.png
13.Новый РЭ в function\rating.php
на
14.Добавление англичан в tabs\player.php
на
Код: Выделить всё
<div class="num" style="float:left;"><?php echo $lang['total_p']; ?>: <?php echo count($new['data']['request_data']['items']) ?></div>
<div style="float:left; margin-top: 7px;margin-left: 60px;">
на
Код: Выделить всё
[img]<?php if (is_valid_url($config['td'].'/dcont/clans/emblems/'.$config['clan'].'/emblem_64x64.png')) { ?>
<div style="float:left; height:45px; width: 45px; margin: 0px 60px;">
<img src="<?=$config['td']?>/dcont/clans/emblems/<?=$config['clan']?>/emblem_64x64.png" height="43" width="43" border="0";/>
</div>
<?php }; ?>
<div style="float:left;">[/img]
3.Отключение авторизации cron.php
Код: Выделить всё
define('STATE', '1');
на
Код: Выделить всё
define('STATE', '0');
4.Заплатки для хостингера function\func_get.php
Код: Выделить всё
$urlss = array_chunk($inurls,10,TRUE);
на
Код: Выделить всё
$urlss = array_chunk($inurls,5,TRUE);
и
Код: Выделить всё
$curl = new CURL();
на
Код: Выделить всё
$curl->retry = 2;
и
Код: Выделить всё
function multiget($inurls, &$result,$tcurl = 'curl')
{
global $db;
$current_time = now();
$urlss = array_chunk($inurls,5,TRUE);
$result = array();
foreach($urlss as $urls){
If ((now()-$current_time)>=5) {
$db->query("SELECT `value` FROM `config` LIMIT 0 , 1")->execute();
$current_time = now();
};
if($tcurl == 'curl'){
$curl = new CURL();
$opts = array( CURLOPT_RETURNTRANSFER => true );
foreach($urls as $key => $link){
$curl->addSession( $link, $key, $opts );
}
$res = $curl->exec();
$curl->clear();
$result = array_special_merge($result,$res);
} else{
$curl = new MCurl;
$curl->threads = 100;
$curl->timeout = 15;
$curl->sec_multiget($urls, $result);
}
}
}
5.Вкладка "Танковые показатели" +ajax\tankstat.php
+tabs\ajaxstat.php
6.Вкладка "Общая за период" +ajax\general_activity.php
+tabs\ajax_general_activity.php
7.Вкладка "приветственное". +tabs\avt.php
+images\down.png
+images\up.png
вырежьте с 19 по 88 включительно строчки из roster.php
Код: Выделить всё
<?php if($config['cron'] == 1 && $col_check > 2 && count($main_progress) > 0){ ?>
<table cellspacing="1" cellpadding="8" border="0">
<thead>
<tr>
<th align="center" style="font-size: 15px;font-weight: bold;"><?=$lang['loosed_today']?></th>
<th align="center" style="font-size: 15px;font-weight: bold;"><?=$lang['new_tanks']?></th>
<th align="center" style="font-size: 15px;font-weight: bold;"><?=$lang['new_players']?></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top">
<table cellspacing="2" cellpadding="0" border="0" width="100%">
<tbody>
<?php if (count($we_loosed) > 0){?>
<?php foreach($we_loosed as $val){ ?>
<tr>
<td width="34%" align="left"><a href="<?php echo $config['base'].$val['name'].'/'; ?>"
target="_blank"><?=$val['name'];?></a></td>
<td width="33%" align="center"><?=$val['role']?></td>
<td width="33%" align="center"><?php echo floor((time() - mktime(0, 0, 0, date("m", $val['member_since']), date("d", $val['member_since']), date("Y", $val['member_since'])))/(3600*24)); ?><?=$lang['days']?></td>
</tr>
<?php } ?>
<?php }else{ ?>
<tr>
<td align="center"><?=$lang['noone'];?></td>
</tr>
<?php } ?>
</tbody>
</table>
</td>
<td valign="top">
<table cellspacing="2" cellpadding="0" border="0" width="100%">
<tbody>
<?php foreach($new_tanks as $name => $val){ ?>
<?php if(isset($roster_id[$val]['name'])){ ?>
<tr>
<td width="30%" align="left"><a href="<?php echo $config['base'].$roster_id[$val]['name'].'/'; ?>"
target="_blank"><?=$roster_id[$val]['name'];?></a></td>
<td width="70%" align="right"><?=$name;?></td>
</tr>
<?php } ?>
<?php } ?>
</tbody>
</table>
</td>
<td valign="top">
<table cellspacing="2" cellpadding="0" border="0" width="100%">
<tbody>
<?php if (count($new_players) > 0){?>
<?php foreach($new_players as $name => $val){ ?>
<tr>
<td width="34%" align="left"><a href="<?php echo $config['base'].$val['name'].'/'; ?>"
target="_blank"><?=$val['name'];?></a></td>
<td width="33%" align="center"><?=$val['role']?></td>
<td width="33%" align="center"><?php echo floor((time() - mktime(0, 0, 0, date("m", $val['member_since']), date("d", $val['member_since']), date("Y", $val['member_since'])))/(3600*24)); ?><?=$lang['days']?></td>
</tr>
<?php } ?>
<?php }else{ ?>
<tr>
<td align="center"><?=$lang['noone'];?></td>
</tr>
<?php } ?>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<? } ?>
8.Увеличение времени отображения пришедших/ушедших
в main.php
Код: Выделить всё
$we_loosed = went_players($roster,(now() - 86400),now());
$new_players = new_players($roster,(now() - 86400),now());
на
Код: Выделить всё
$we_loosed = went_players($roster,(now() - 1246060),now());
$new_players = new_players($roster,(now() - 1246060),now());
в function\func_time.php полностью заменить функцию went_players на
Код: Выделить всё
function went_players($roster,$start = 0,$end = -1){
global $db;
$losed = array();
$losed_name = array();
if($end == -1){
$end = now();
}
$sql = "SELECT name,account_id,role,member_since,up FROM col_players WHERE up <= '".$end."' AND up >= '".$start."' ORDER BY up DESC;";
$q = $db->prepare($sql);
if ($q->execute() == TRUE) {
$result = $q->fetchAll();
} else {
die(show_message($q->errorInfo(),__line__,__file__,$sql));
}
foreach($result as $val){
if((!isset($roster[$val['name']])) && !in_array($val['name'],$losed_name)) {
$losed[] = $val;
$losed_name[] = $val['name'];
}
}
return $losed;
}
и функцию new_players на
Код: Выделить всё
function new_players($roster,$start = 0,$end = -1){
global $db;
$come = array();
if($end == -1){
$end = now();
}
$sql = "SELECT name,account_id,role,member_since FROM col_players WHERE member_since <= '".$end."' AND member_since >= '".$start."' ORDER BY member_since DESC;";
$q = $db->prepare($sql);
if ($q->execute() == TRUE) {
$result = $q->fetchAll();
} else {
die(show_message($q->errorInfo(),__line__,__file__,$sql));
}
foreach($result as $val){
$new_res[$val['name']] = $val;
}
if(isset($new_res)){
foreach($new_res as $name => $val){
if(isset($roster[$name])){
$come[] = $val;
}
}
}
return $come;
}
9.Вкладка "Динамика игрока" +images\down.png
+images\up.png
+tabs\ajax_player.php
+ajax\player_result.php
+translate\overall_ru.php
10.Рейтинг бронесайта В папке function открываем файл rating.php и ищем вот такую функцию:
Код: Выделить всё
function eff_rating($res,$lang)
{
foreach($res as $name => $per_stat){
if(isset($per_stat['overall'][$lang['games_p']])){
if($per_stat['overall'][$lang['games_p']] != 0){
$effect['des'] = ($per_stat['perform'][$lang['destroyed']]/$per_stat['overall'][$lang['games_p']]);
$effect['dem'] = ($per_stat['perform'][$lang['damage']]/$per_stat['overall'][$lang['games_p']]);
$effect['spo'] = ($per_stat['perform'][$lang['spotted']]/$per_stat['overall'][$lang['games_p']]);
$effect['def'] = ($per_stat['perform'][$lang['defend']]/$per_stat['overall'][$lang['games_p']]);
$effect['cap'] = ($per_stat['perform'][$lang['capture']]/$per_stat['overall'][$lang['games_p']]);
}else{
$effect['des'] = 0;
$effect['dem'] = 0;
$effect['spo'] = 0;
$effect['def'] = 0;
$effect['cap'] = 0;
}
$effect['lvl'] = 0;
if(isset($per_stat['tank'])){
$effect['lvl'] = middel_tank_lvl($per_stat['tank']);
}
if(count($effect) > 0){
$feff[$name] = 0;
if($effect['lvl'] != 0){
$feff[$name] = round($effect['dem']*(10/$effect['lvl'])*(0.15+2*$effect['lvl']/100) + $effect['des']*(0.35-2*$effect['lvl']/100)*1000 + $effect['spo']*0.2*1000 + $effect['cap']*0.15*1000 + $effect['def']*0.15*1000,2);
}
}
// <------ Вставляем код вот сюда
}else{
$feff[$name] = 0;
}
}
return $feff;
}
В указанное выше место добавляем вот такой код:
Код: Выделить всё
//Количество сыгранных боев
$effect['b'] = $per_stat['overall'][$lang['games_p']];
// средний опыт за один бой
$effect['Hp'] = $per_stat['exp'][$lang['total_exp']]/$per_stat['overall'][$lang['games_p']];
//Среднее число побед на один бой
$effect['P1'] = $per_stat['overall'][$lang['victories']]/$per_stat['overall'][$lang['games_p']];
$feff['brone'][$name] = round((log($effect['b'])/10)*(($effect['Hp']*1)+($effect['dem']*($effect['P1']*2+$effect['des']*0.9+$effect['spo']*0.5+$effect['def']*0.5+$effect['cap']*0.5))),0);
В папке tabs открываем файл overall.php и находим вот такую строку:
Код: Выделить всё
<th><?php echo $lang['eff_ret']; ?></th>
После нее добавляем:
Код: Выделить всё
<th>Bronesite</th>
Если хотите русский заголовок, убедитесь что сохраняете файл в кодировке UTF-8 without BOM или просто UTF-8
Дальше, в том же файле, находим вот такой код:
Код: Выделить всё
<td><?php if(is_numeric($eff_rating[$name])) { echo '<font color="'.$color.'">'.$eff_rating[$name].'</font>'; } else { echo '<font color="red">0</font>';} ?></td>
Сразу после него добавляем:
Код: Выделить всё
<td><?php if(is_numeric($eff_rating['brone'][$name])) { echo $eff_rating['brone'][$name]; } else { echo '<font color="red">0</font>';} ?></td>
11.Рейтинг бронесайта во вкладку "Динамика игрока"
меняем ajax\player_result.php
12.Вкладка с статистикой отдельного игрока [1.3.2]
+tabs\player.php
в views\body.php
Код: Выделить всё
<ul>
<?php foreach($tabs as $key => $val){
на
Код: Выделить всё
<ul>
<?php $nickname = 0; if (isset($_GET['nickname']) and in_array($_GET['nickname'],array_keys($res))){ $nickname = $_GET['nickname']; ?>
<li><a href="#tabs-player">Статистика: <?php echo $nickname; ?></a></li>
<?php } ?>
<?php foreach($tabs as $key => $val){
и
Код: Выделить всё
</ul>
<?php foreach($tabs as $key => $val){
на
Код: Выделить всё
</ul>
<?php if ($nickname){ ?>
<div id="tabs-player">
<?php include_once(ROOT_DIR.'/tabs/player.php'); ?>
</div>
<?php } ?>
<?php foreach($tabs as $key => $val){
в tabs/roster.php
<td><a href="<?php echo $config['base'].$val['name'].'/'; ?>"
target="_blank"><?php echo $val['name']; ?></a></td>
в основе была строчка
<
Код: Выделить всё
td class="<?=$color?>"><a href="<?php echo $config['base'].$val['name'].'/'; ?>"
target="_blank"><?php echo $val['name']; ?></a></td>
на
Код: Выделить всё
<td><a href="./main.php?nickname=<?php echo $val['name']; ?>" target="_self">(info)</a>
<a href="<?php echo $config['base'].$val['name'].'/'; ?>" target="_blank"><?php echo $val['name']; ?></a></td>
+images\upgrade.png
13.Новый РЭ в function\rating.php
Код: Выделить всё
$feff[$name] = round($effect['dem']*(10/$effect['lvl'])*(0.15+2*$effect['lvl']/100) + $effect['des']*(0.35-2*$effect['lvl']/100)*1000 + $effect['spo']*0.2*1000 + $effect['cap']*0.15*1000 + $effect['def']*0.15*1000,2);
на
Код: Выделить всё
$feff[$name] = number_format(($effect['dem']*(10/($effect['lvl'] + 2))*(0.23+2*$effect['lvl']/100) + $effect['des']*0.25*1000 + $effect['spo']*0.15*1000 + log($effect['cap']+1, 1.732)*0.15*1000 + $effect['def']*0.15*1000),2, '.', '');
14.Добавление англичан в tabs\player.php
Код: Выделить всё
$nation_order1 = Array("ussr" => "СССР", "germany" => "Германия", "usa" => "США", "france" => "Франция", "china" => "Китай");
на
Код: Выделить всё
$nation_order1 = Array("ussr" => "СССР", "germany" => "Германия", "usa" => "США", "france" => "Франция", "china" => "Китай", "uk" => "Англия");
Старожил прошу, если будет время и желание, проверить, вдруг чего накосячил, но у меня всё работает.
http://mccleod.vv.si/wnstat/main.php