Пользователь
Регистрация: 27.03.2010
Сообщений: 80
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 13 сообщениях
|
5.5. Создаём модуль статистики на основе блока
PHP код:
<?php
/**
* @author Desperado
* @copyright 2010
* http://dev-masters.ru/
*/
if( ! defined( 'DATALIFEENGINE' ) ) die( "Hacking attempt!" );
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'WOW_DIR', ROOT_DIR . '/engine/modules/wow' ); // Задаём каталог папки с модулями
require_once ROOT_DIR . '/config/config.php'; // Подключаем файл конфигурации
require_once WOW_DIR . '/includes/functions/func.php'; // Подключаем файл функции
$sMySql = mysql_connect(DBHOST, DBUSER, DBPASS); // Соединяемся с базой
mysql_query("SET NAMES COLLATE"); // Устанавливаем кодировку соединения
// Гейм мастера
$aSql = mysql_query("select count(`guid`) from `characters`.`characters` c inner join `realmd`.`account` a on `a`.`id`=`c`.`account` where `a`.`gmlevel` != 0 and `c`.`online` = 1", $sMySql);
$gm = mysql_result($aSql, 0);
mysql_select_db(RDB, $sMySql);
// Подсчитывает кол-во акков
$aSql = mysql_query("SELECT count(`id`) FROM `account`", $sMySql);
$nTotalAccount = mysql_result($aSql, 0);
//Максимальный аптайм
$aSql = mysql_query("SELECT `uptime` FROM `realmd`.`uptime` ORDER by `uptime` DESC LIMIT 1");
$aSql = mysql_fetch_array($aSql);
$aTotal = $aSql***91;'uptime'***93;;
$max_uptime = conventNormTime($aSql***91;'uptime'***93;);
// Максимальный онлайн
$aSql = mysql_fetch_array(mysql_query("SELECT `maxplayers` FROM `uptime` ORDER by `maxplayers` DESC LIMIT 1", $sMySql));
$nMaxOnline = $aSql***91;'maxplayers'***93;;
mysql_select_db(CDB, $sMySql);
// Всего альянса
$aSql = mysql_query("SELECT count(`guid`) FROM `characters` WHERE `race` IN ( 1, 4, 11, 3, 7 )", $sMySql);
$nTotalAlliance = mysql_result($aSql, 0);
// Всего орды
$aSql = mysql_query("SELECT count(`guid`) FROM `characters` WHERE `race` IN (6, 10, 5, 2, 8)", $sMySql);
$nTotalHorde = mysql_result($aSql, 0);
// Подсчитываем онлайн и устанавливаем статус сервера, попутная исправляя огрехи мангоса
$fp = @fsockopen(SHOST, SPORT, $errno, $errstr, 5);
$status=($fp?"<font color='green'>работает</font>":"<font color='red'>отключен</font>");
// Время начислений и т.д.
$aSql = mysql_query("SELECT `NextArenaPointDistributionTime`, `NextDailyQuestResetTime`, `NextWeeklyQuestResetTime` FROM `saved_variables`", $sMySql);
$temp_row = mysql_fetch_array($aSql);
$ap_date = $temp_row***91;'NextArenaPointDistributionTime'***93;;
$ap_date = date("H:i:s d.m.Y", $ap_date);
$daily_quest_date = $temp_row***91;"NextDailyQuestResetTime"***93;;
$daily_quest_date = date("H:i:s d.m.Y", $daily_quest_date);
$weekly_quest_date = $temp_row***91;"NextWeeklyQuestResetTime"***93;;
$weekly_quest_date = date("H:i:s d.m.Y", $weekly_quest_date);
$aSql = mysql_query("SELECT `guid` FROM `characters` WHERE `online` IN ( 1 )", $sMySql);
$nCurrenOnline = mysql_result($aSql, 0);
$aSql = mysql_query("SELECT `guid` FROM `characters` WHERE `online` IN ( 1 ) and `race` IN (6, 10, 5, 2, 8)", $sMySql);
$OnlineHorde = mysql_result($aSql, 0);
$aSql = mysql_query("SELECT `guid` FROM `characters` WHERE `online` IN ( 1 ) and `race` IN ( 1, 4, 11, 3, 7 )", $sMySql);
$OnlineAlliance = mysql_result($aSql, 0);
mysql_select_db(RDB, $sMySql);
//Текущий аптайм
$aSql = mysql_fetch_array(mysql_query("SELECT `uptime` FROM `uptime` ORDER by `starttime` DESC LIMIT 1"));
$current_uptime = $aSql***91;'uptime'***93;;
/**
* Придаём красивые окончания
*/
$OnlineAlliance = $OnlineAlliance." ". number_ending($OnlineAlliance, "игроков", "игрок", "игрока");
$OnlineHorde = $OnlineHorde." ". number_ending($OnlineHorde, "игроков", "игрок", "игрока");
$nCurrenOnline = $nCurrenOnline." ". number_ending($nCurrenOnline, "игроков", "игрок", "игрока");
$nMaxOnline = $nMaxOnline." ". number_ending($nMaxOnline, "игроков", "игрок", "игрока");
$nTotalAccount = 'Зарегистрировано'." ".$nTotalAccount." ". number_ending($nTotalAccount, "учётных записей", "учётная запись", "учётных записей");
date_default_timezone_set('UTC');
$szStatus .= "
<table width='100%' border='0'>
<tr><td valign='top'>
<table width='100%' border='0'>
<tr><td width='50%'>Статус сервера:</td> <td width='70%'><b>".$status."</b></td> </tr>
<tr><td width='50%'>Сейчас в игре:</td> <td width='70%'><b>".$nCurrenOnline."</b></td> </tr>
<tr><td width='50%'>За Альянс играет:</td> <td width='70%'><b><font color='#4169E1'>".$OnlineAlliance."</font></b></td> </tr>
<tr><td width='50%'>За Орду играет:</td> <td width='70%'><b><font color='red'>".$OnlineHorde."</font></b></td> </tr>
<tr><td width='50%'>Game Master's:</td> <td width='70%'><b>".$gm."</b></td> </tr>
<tr><td width='50%'>Максимальный онлайн:</td> <td width='50%'><b>".$nMaxOnline."</b></td> </tr>
</table>
</td><td>
<table width='100%' border='0'>
<tr><td width='50%'>Текущий аптайм:</td> <td><b>".date("zд-Hч-sс", $current_uptime)."</b></td> </tr>
<tr><td width='50%'>Максимальный аптайм:</td> <td><b>".$max_uptime."</b></td> </tr>
<tr><td width='50%'>Дата начисления Arena Point's</td> <td width='50%'><b>".$ap_date."</b></td> </tr>
<tr><td width='50%'>Дата сброса Daily квестов</td> <td width='50%'><b>".$daily_quest_date."</b></td> </tr>
<tr><td width='50%'>Дата сброса Weekly квестов</td> <td width='50%'><b>".$weekly_quest_date."</b></td> </tr>
<tr><td width='50%'>$nTotalAccount</td></tr>
</table>
</td></tr>
</table>";
$tpl->result***91;'content'***93; = $szStatus;
?>
Сохраняем файл в папке /engine/modules/wow под именем short_stats.php
Далее нам необходимо открыть файл index.php
В нём найти
PHP код:
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );
И ниже добавить
PHP код:
require_once ENGINE_DIR' . '/modules/wow/short_stats.php;
Найти
PHP код:
$tpl->set ( '{headers}', $metatags."\n".build_js($js_array, $config) );
Ниже добавить
PHP код:
$tpl->set('{short_stats}', $szStatus);
Всё. Теперь наш модуль готов к эксплуатации. Достаточно открыть любой интересующий вас шаблон и вставить в него {short_stats}
Думаю, примеров довольно. Если что-то осталось непонятным, спрашиваем.
P.S. во избежание разного рода какашек в мой адрес: материал авторский (за исключением списка из первого поста (взят с оф. сайта DLE))
Последний раз редактировалось Праведник; 26.07.2010 в 05:03.
|