Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Скрипт списка игроков онлайн
#11
нагуглил, что 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 напишите список минут через запятую.

как это работает можно заценить здесь
[Изображение: archlinux.png]
Ответ
#12
явно задавать access_level в БД - к примеру, 0-обычный игрок, 15-VIP, 75-GM, 100-админ, в скрипте запрашивать из БД значение этого поля и в цикле сделать ветвление, задающее цвет ника

но можно и по тупому - описать в скрипте всех вип-юзеров и в цикле проверять их имя и задавать цвет -))
[Изображение: archlinux.png]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Скрипт автоматического приема платежей NotSpecified 5 6,245 03-11-2016, 09:42 PM
Последний пост: Aleksey
  Требуется скрипт на автовыдачу при покупке в Unitpay l2exe 0 1,922 06-30-2015, 04:35 PM
Последний пост: l2exe
  Скрипт на вывод эмблемы клана. MIF 12 7,461 01-26-2015, 05:26 PM
Последний пост: ntking
  Помогите поправить скрипт hoske 5 2,379 12-01-2014, 09:35 PM
Последний пост: SkAvenger
  L2top скрипт награды за голосование TosyBosy 0 1,763 08-14-2013, 04:44 PM
Последний пост: TosyBosy
  Скрипт Базы Знаний tpaktop23 0 1,556 03-21-2013, 02:24 AM
Последний пост: tpaktop23
  DLE (DLL скрипт) treamz 1 1,708 02-21-2013, 01:38 AM
Последний пост: NotSpecified
  скрипт Vasya 2 1,579 02-14-2013, 09:21 PM
Последний пост: Vasya
  Онлайн в данный момент/вчера Jason1992 19 4,329 06-25-2012, 07:43 AM
Последний пост: Shiler
  SW8+ скрипт, Дешифрование/Шифрование MrShyr 7 2,770 04-11-2012, 05:18 PM
Последний пост: MrShyr

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)