Скрипт списка игроков онлайн - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Движки сайтов (CMS)

Движки сайтов (CMS)
Обсуждения, решения проблем веб обвязок для ява сервера.

Ответ
Опции темы
Непрочитано 19.07.2009, 21:52   #11
Аватар для Voltage
Пользователь

Автор темы (Топик Стартер) Ответ: Скрипт списка игроков онлайн

нагуглил, что nconvert умеет работать с dds. имеются бинарники под винду и линух.

для формирования жпегов можно сделать cgi-скрипт, сравнивающий листинги директории /opt/lserver/gameserver/data/crests и /var/www/clancrests и формирующий недостающие jpg на лету.

покопаю по этому направлению, доложу что получится -)

Добавлено через 29 минут
итак:
Код:
nconvert -out png -crop 0 4 16 16 *.bmp
конвертирует все файлы логотипов в текущей папке в .png такого же размера.

осталось запускать его по крону и выкладывать лого на сайт

Добавлено через 56 минут
имя файла - Crest_<значение_поля_crest_id_из_таблицы_clan_data>.bmp

Добавлено через 1 час 26 минут
сделал. завтра с утра напишу реализацию.

Добавлено через 11 часов 24 минуты
итак, для отображения значков кланов в статистике делаем следующее (показываю на примере Arch Linux):
Код:
[login@norris ~]$ mkdir ~/temp && cd ~/temp
[login@norris temp]$ wget http://download.xnview.com/NConvert-x86-unknown-linux2.x.tgz
[login@norris temp]$ tar -zxvf NConvert-x86-unknown-linux2.x.tgz
NConvert/
NConvert/Formats.txt
NConvert/license.txt
NConvert/Plugins.txt
NConvert/ReadMe.txt
NConvert/Usage.txt
NConvert/WhatsNew.txt
NConvert/nconvert
[login@norris temp]$ cd NConvert
[login@norris NConvert]$ sudo mv nconvert /usr/bin
[login@norris NConvert]$ cd ../.. && rm -rf temp
[login@norris ~]$ crontab -e
открывается редактор vi
нажимаем клавишу I и дописываем в конец файла следующее:
Код:
0,30 * * * * cd /opt/lserver/gameserver/data/crests && /usr/bin/nconvert -out pn
g -o /var/www/crests/% -crop 0 4 16 16 *.bmp
нажимаем esc, пишем :wq, нажимаем enter.
/opt/lserver/gameserver и /var/www - директории геймсервера и сайта.

теперь переходим к статистике кланов. добавляем в свой код нечто наподобие следующего:
PHP код:
<?php 
include "./credentials.php";
function 
Cmp($A$B)
{
    if(
$A == $B)
        return 
0;
    return(
$A>$B)?-1:1;
}
function 
StopScript($Msg

    echo 
$Msg
    @
mysql_close(); 
}
$SrvConn = @mysql_connect($dbhost$dbuser$dbpass);
if(!
$SrvConn)
    
StopScript("Нет соединения с БД");
$DBConn mysql_select_db($dbname);
if(!
$DBConn
    
StopScript("БД не существует"); 
$ClansResult mysql_query("SELECT * FROM `clan_data`"); 
if(!
$ClansResult
    
StopScript("<br><br>There are no clans on this server"); 
else
    
$ClansCount = @mysql_num_rows($ClansResult);
$castle = array('0' => "No Castle"' ' => "No Castle"'1' => "Gludio Castle"'2' => "Dion Castle"'3' => "Giran Castle"'4' => "Oren Castle"'5' => "Aden Castle"'6' => "Innadril Castle"'7' => "Goddard Castle");
$ClansArray = array();
$ClanCount 0;

while(
$ClanRow = @mysql_fetch_array($ClansResult))

    
$LeaderResult = @mysql_query("SELECT `char_name` FROM `characters` WHERE `obj_id`=" $ClanRow['leader_id']);
    
$MembersResult = @mysql_query("SELECT `char_name` FROM `characters` WHERE `clanid`=" $ClanRow['clan_id']);
    while(
$LeaderRow = @mysql_fetch_array($LeaderResult))
    {
        
$MembersCount = @mysql_num_rows($MembersResult);
        
$ClansArray[$ClanCount][0] = $MembersCount;
        
$ClansArray[$ClanCount][1] = $ClanRow['clan_name'];
        
$ClansArray[$ClanCount][2] = $LeaderRow['char_name'];
        
$ClansArray[$ClanCount][3] = $ClanRow['clan_id'];
        
$ClansArray[$ClanCount][4] = $ClanRow['hasCastle'];
        
$ClansArray[$ClanCount][5] = $ClanRow['clan_level'];
        
$ClansArray[$ClanCount][7] = $ClanRow['crest_id'];
    }

    
$ClanCount++;
}
usort($ClansArray"Cmp");
echo 
"<table border='0'><tr><th class='Stil5'><center>Лого</center></th><th class='Stil5'><center>#</center></th><th class='Stil5'><center>Клан</center></th><th class='Stil5'><center>Игроков</center></th><th class='Stil5'><center>Лидер</center></th><th class='Stil5'><center>Lv.</center></th><th class='Stil5'><center>Замок</center></th></tr>";
$Ranking 1;
foreach(
$ClansArray as $ClanArray)
{
    echo 
"<tr><td class='Stil5'><center><img src='./crests/Crest_" $ClanArray[7]. ".png' border=0></center></td><td class='Stil5'><center>" $Ranking "</center></td><td class='Stil5'><center>".$ClanArray[1]."</center></td><td class='Stil5'><center>" $ClanArray[0] . "</center></td><td class='Stil5'><center>" $ClanArray[2] . "</center></td><td class='Stil5'><center>".$ClanArray[5]."</center></td><td class='Stil5'><center>".$castle[$ClanArray[4]]."</center></td></tr>";
    
$Ranking++;

    if(
$Ranking >= 101)
        break;
}
echo 
"</table></center>";
mysql_close();
?>
готово.
значки обновляются раз в полчаса, если хотите чаще или реже - там где в crontab у меня прописывается 0,30 напишите список минут через запятую.

как это работает можно заценить здесь
__________________

Последний раз редактировалось Voltage; 20.07.2009 в 09:36. Причина: Добавлено сообщение
Voltage вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 04.08.2009, 09:32   #12
Аватар для Voltage
Пользователь

Автор темы (Топик Стартер) Ответ: Скрипт списка игроков онлайн

явно задавать access_level в БД - к примеру, 0-обычный игрок, 15-VIP, 75-GM, 100-админ, в скрипте запрашивать из БД значение этого поля и в цикле сделать ветвление, задающее цвет ника

но можно и по тупому - описать в скрипте всех вип-юзеров и в цикле проверять их имя и задавать цвет -))
__________________
Voltage вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2022 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 03:32. Часовой пояс GMT +3.

Вверх