нагуглил, что nconvert умеет работать с dds. имеются бинарники под винду и линух.
для формирования жпегов можно сделать cgi-скрипт, сравнивающий листинги директории /opt/lserver/gameserver/data/crests и /var/www/clancrests и формирующий недостающие jpg на лету.
покопаю по этому направлению, доложу что получится -)
Добавлено через 29 минут
итак: конвертирует все файлы логотипов в текущей папке в .png такого же размера.
осталось запускать его по крону и выкладывать лого на сайт
Добавлено через 56 минут
имя файла - Crest_<значение_поля_crest_id_из_таблицы_clan_data>.bmp
Добавлено через 1 час 26 минут
сделал. завтра с утра напишу реализацию.
Добавлено через 11 часов 24 минуты
итак, для отображения значков кланов в статистике делаем следующее (показываю на примере Arch Linux):
открывается редактор vi
нажимаем клавишу I и дописываем в конец файла следующее:
нажимаем esc, пишем :wq, нажимаем enter.
/opt/lserver/gameserver и /var/www - директории геймсервера и сайта.
теперь переходим к статистике кланов. добавляем в свой код нечто наподобие следующего:
для формирования жпегов можно сделать cgi-скрипт, сравнивающий листинги директории /opt/lserver/gameserver/data/crests и /var/www/clancrests и формирующий недостающие jpg на лету.
покопаю по этому направлению, доложу что получится -)
Добавлено через 29 минут
итак:
Код:
nconvert -out png -crop 0 4 16 16 *.bmp
осталось запускать его по крону и выкладывать лого на сайт
Добавлено через 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
нажимаем клавишу 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
/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 напишите список минут через запятую.
как это работает можно заценить здесь