Гость
|
Гейм мастера онлайн
Код:
<html>
<body>
<table border = "1" align = "center">
<tr>
<td>Ник</td>
<td>Расса</td>
<td>Класс</td>
<td>Уровень доступа</td>
</tr>
<?php
/**
* @author [Desperado]
* @copyright 2010
*/
require_once ('includes/config.php'); //подключаем файл конфигурации
$Sql = mysql_connect("$host", "$db_user", "$db_user_passw") or die("Невозможно подключиться к базе данных : " . mysql_error()); //соединяемся с базой MySQl
mysql_query("SET character_set_database = '$charset'"); //устанавливаем кодировку
mysql_query("SET NAMES '$charset'"); //устанавливаем кодировку
$content = mysql_query ("select c.name, c.class, c.race, a.gmlevel from characters.characters c inner join realmd.account
a on a.id=c.account where a.gmlevel != 0 and c.online = 1"); //достаём нужные данные
$online = mysql_num_rows($content);
/**
* мутим обработку данных из массива
*/
$class = array(1=>"Воин",2=>"Паладин",3=>"Охотник",4=>"Разбойник",5=>"Жрец",
6=>"Рыцарь Смерти",7=>"Шаман",8=>"Маг",9=>"Чернокнижник",11=>"Друид");
$race = array(1=>"Человек",2=>"Орк",3=>"Дворф",4=>"Ночной Эльф",5=>"Нежить",6=>"Таурен",7=>"Гном",8=>"Тролль",
10=>"Эльф Крови",11=>"Дреней");
$gmlevel = array(1=>'Модератор',2=>'Хелпер',3=>'Гейм Мастер',4=>'Администратор');
/**
* если гм нет, выводим неприличное сообщение
*/
if($online < 1) {
echo "<tr><td colspan='4' align='center'>Нет гм, вошедших в игру</td></tr>";
}
/**
* если гм есть, выводим другое неприличное сообщение
*/
while ($row = mysql_fetch_array($content))
{
$name = $row['name'];
echo "<tr><td><b>{$name}</b></td>"; //выводим ник Гм
echo "<td><b>{$race[$row['race']]}</b></td>"; //Выводим рассу
echo "<td><b>{$class[$row['class']]}</b></td>"; //Выводим класс
echo "<td><b>{$gmlevel[$row['gmlevel']]}</b></td></tr>"; //Выводим уровень доступа
}
mysql_close($Sql);
?>
</table>
</body>
</html>
кол-во аккаунтов, максимальный аптайм, текущий онлайн, кол-во чаров за орду/альянс
Код:
require_once ('includes/config.php'); //подключаем файл конфигурации
$sMySql = mysql_connect('$host', ' $db_user', ' $db_user_passw') or die("Невозможно подключиться к базе : " . mysql_error());; //открываем mysql.
$aSql = mysql_num_rows(mysql_query("SELECT guildid FROM characters.guild", $sMySql));
$nTotalGuild = $aSql;
$aSql = mysql_num_rows(mysql_query("SELECT guid FROM characters.characters WHERE race IN ( 1, 4, 11, 3, 7 )", $sMySql));
$nTotalAlliance = $aSql;
$aSql = mysql_num_rows(mysql_query("SELECT guid FROM characters.characters WHERE race IN (6, 10, 5, 2, 8)", $sMySql));
$nTotalHorde = $aSql;
function conventNormTime($nSec) {
$d = floor( $nSec / (3600*24) );
$nSec = ($nSec - $d * 3600 * 24);
$h = floor( $nSec / 3600 );
$nSec = ($nSec - $h * 3600);
$m = floor( $nSec / 60 );
return "{$d} д. {$h} ч. {$m} м.";
}
$aSql = mysql_fetch_array(mysql_query("SELECT maxplayers FROM realmd.uptime ORDER by maxplayers DESC LIMIT 1", $sMySql));
$nMaxOnline = $aSql['maxplayers'];
$aSql = mysql_fetch_array(mysql_query("SELECT uptime FROM realmd.uptime ORDER by starttime DESC LIMIT 1", $sMySql));
$tUptime = conventNormTime($aSql['uptime']);
$aSql = mysql_query("SELECT uptime FROM realmd.uptime ORDER by uptime DESC LIMIT 1", $sMySql);
$aSql =mysql_fetch_array($aSql);
$aTotal = $aSql['uptime'];
$aTotal = conventNormTime($aSql['uptime']);
$aSql = mysql_num_rows(mysql_query("SELECT id FROM realmd.account", $sMySql));
$nTotalAccount = $aSql;
$aSql = mysql_num_rows(mysql_query("SELECT guid FROM characters.characters WHERE online IN ( 1 )", $sMySql));
$nCurrenOnline = $aSql;
$aOut = array(
'online' => $nCurrenOnline,
'max_online' => $nMaxOnline,
'uptime' => $tUptime,
'max_uptime' => $aTotal,
'reg_accounts' => $nTotalAccount,
'reg_horde' => $nTotalHorde,
'reg_alliance' => $nTotalAlliance,
);
echo '<tr><td>Онлайн:</td> <td><b>{$nCurrenOnline}</b></td></tr>';
echo '<tr><td>Макс. онлайн:</td> <td><b>{$nMaxOnline}</b></td></tr>';
echo '<tr><td>Макс. аптайм:</td> <td><b>{$aTotal}</b></td></tr>';
echo '<tr><td>Акаунтов:</td> <td><b>{$nTotalAccount}</b></td></tr>';
echo '<tr><td>Альянса:</td> <td><b>{$nTotalAlliance}</b></td> </tr>';
echo '<tr><td>Орды:</td> <td><b>{$nTotalHorde}</b></td></tr>';
mysql_close ($sMySql)
?>
Отображение открытых/закрытых инстов ВОТЛК.
если инст имеет уровень выше 71, но не выше 80 - открыт
если инст имеет уровень выше 80 - закрыт
Инфу записывает в текстовый файл. Кому надо, переделают за 10 секунд
Код:
<?php
require_once ('includes/config.php');
$sMySql = mysql_connect($host, $user, $passw) or die("Невозможно подключиться к базе : " . mysql_error());
mysql_select_db('mangos', $sMySql) or die("Невозможно подключиться к базе characters : " . mysql_error());
$content = mysql_query("SELECT `required_level` , `name` FROM areatrigger_teleport WHERE `required_level` >= '71' ORDER BY `areatrigger_teleport`.`required_level` DESC"); //выборка данных
//обработка в массиве
$name = array (
'Onyxia\'s Lair - Dustwallow Instance' => 'Логово Ониксии',
'Naxxramas (Inside)' => 'Наксрамас',
'Violet Hold (entrance)' => 'Аметистовая крепость',
'Oculus (exit)' => 'Нексус: Окулус',
'The Nexus (exit)' => 'Нексус: Нексус',
'Utgarde Pinnacle (exit)' => 'Крепость Утгард: Вершина Утгард',
'Utgarde Keep (entrance)' => 'Крепость Утгард: Крепость Утгард',
'Ulduar, Halls of Lightning (entrance)' => 'Ульдуар: Чертоги Молний',
'Ulduar, Halls of Stone (exit)' => 'Ульдуар: Чертоги Камня',
'Drak\'Tharon Keep (exit)' => 'Крепость Драк\'Тарон',
'Vault of Archavon (Exit)' => 'Склеп Аркавона',
'Azjol-Nerub (entrance)' => 'Азжол-Неруб: Азжол-Неруб',
'Ahn\'Kahet (entrance)' => 'Азжол-Неруб: Ан\'кахет: Старое Королевство',
'Chamber of Aspects, Obsidian Sanctum (entrance)' => 'Обсидиановое святилище',
'The Eye of Eternity' => 'Нексус: Око Вечности',
'Gundrak (exit south)' => 'Гундрак',
'Ulduar Raid entrance' => 'Ульдуар',
'Trial of the Crusader (exit)' => 'Испытание крестоносца',
'Trial of the Champion (entrance)' => 'Испытание чемпиона',
'Halls of Reflection (Entrance)' => 'Цитадель Ледяной Короны: Залы Отражений',
'Forge of Souls (Entrance)' => 'Цитадель Ледяной Короны: Кузня Душ',
'IceCrown Citadel (Entrance)' => 'Цитадель Ледяной Короны',
'Culling of Stratholme (entrance)' => 'Пещеры Времени: Очищение Стратхольма',
'Pit of Saron (Entrance)' => 'Цитадель Ледяной Короны: Яма Сарона');
// строим таблицу
$szTable = '<table border="1" align="center">';
$szTable .= '<tr> <td align="center"><b>Название</b></td><td><b>Статус</b></td></tr>';
while ($row = mysql_fetch_array($content))
{
if ( isset($name[$row['name']]) ) {
$required_level = $row['required_level'];
if ($required_level <= 80)
{
$szTable .= '<tr> <td align="left">'.$name[$row['name']].'</td> <td align="center"><font color="green">Открыт</font></td>';
} else
{
$szTable .= '<tr> <td align="left">'.$name[$row['name']].'</td> <td align="center"><font color="red">Закрыт</font></td>';
}
}
}
$szTable .= '</table>';
$szTable .= '<br>';
$szTable .= '<br>';
$handler = fopen("inst.txt", "w+");
fwrite($handler, $szTable);
fclose($handler);
mysql_close($sMySql);
?>
Отправка почты
Для работы необходим патч extern mail
Патч прилагается в атаче
Код:
CREATE TABLE IF NOT EXISTS `mail_external` (
`id` int(20) unsigned NOT NULL auto_increment,
`receiver` bigint(20) unsigned NOT NULL,
`subject` varchar(200) default 'Support Message',
`message` varchar(500) default 'Support Message',
`money` int(20) unsigned NOT NULL default '0',
`item` int(20) unsigned NOT NULL default '0',
`item_count` int(20) unsigned NOT NULL default '1',
PRIMARY KEY (`id`)
) ENGINE
Код:
<?php
/**
* @author Desperado
* @copyright 2010
* Скрипт рассылки вещей на почту игроков
* Для работы необходим патч extern mail
*/
require_once ('includes/config.php'); //подключаем конфиг
$sMySql = mysql_connect($host, $user, $passw)
or die("Невозможно подключиться к базе данных : " . mysql_error()); //соеденяемся с базой данных
mysql_select_db('characters', $sMySql)
or die("Невозможно выбрать базу"); //подключаем базу данных персонажей
/**
* временные данные
*/
$receiver = 18143; //Guid получателя
$subject = subject; //Заголовок сообщения
$message = message; //Тело сообщения
$money = 0; //Скок голда
$item = 2342; //ID вещи
$item_count = 1; //Количество вещей
/**
* Посылаем вещь
*/
$last_mail_id = mysql_fetch_array(mysql_query("SELECT id FROM `characters`.`mail_external` ORDER by id DESC LIMIT 1")); //выбираем последние айди
$last_mail = $last_mail_id['id'] +1;
$result = mysql_query("INSERT INTO `characters`.`mail_external` (
`id` ,
`receiver` ,
`subject` ,
`message` ,
`money` ,
`item` ,
`item_count`
)
VALUES ('$last_mail', '$receiver', '$subject', '$message', '$money', '$item','$item_count')");
mysql_close ($sMySql);
?>
Парсинг и вывод статистики MMOTOP
Добавляем в константу ссылку из лк ммотопа и радуемся.
Код:
<?php
define('HASH_URL', 'ссылка');
$aData = @file_get_contents(HASH_URL); // подгружаем в массив информацию
preg_match_all("|.*\t.*\t.*\t(.*)\t.*\n|isU",$aData,$aArgs); // мутим обработку на данные
$aArray = array();
for ($i = 0; $i < count($aArgs[1]); $i ++ ) {
if ( ! $aArray[$aArgs[1][$i]] )
$aArray[ $aArgs[1][$i] ] = 1;
else
$aArray[ $aArgs[1][$i] ] = $aArray[ $aArgs[1][$i] ] + 1;
}
arsort($aArray);
$szContent = '<center><table border="1" width="200">';
$szContent .= '<tr><td align="left"><b>Ник</b></td><td align="left"><b>Голоса</b></td></tr>'."\n";
foreach ($aArray as $var=>$val) {
$szContent .= '<tr><td><b>'.$var.'</b></td><td>'.$val.'</td></tr>'."\n";
}
$szContent .= '</table></center>';
$szContent = iconv('cp1251', 'utf-8', $szContent);
echo $szContent;
?>
Функция конверта времени из линукса
Код:
function conventNormTime($nSec) {
$d = floor( $nSec / (3600*24) );
$nSec = ($nSec - $d * 3600 * 24);
$h = floor( $nSec / 3600 );
$nSec = ($nSec - $h * 3600);
$m = floor( $nSec / 60 );
return "{$d} д. {$h} ч. {$m} м.";
}
Последний раз редактировалось Desperado; 09.03.2010 в 01:04.
|