Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Движки сайтов (CMS) (https://forum.zone-game.info/forumdisplay.php?f=47)
-   -   Скрипт списка игроков онлайн (https://forum.zone-game.info/showthread.php?t=4136)

Voltage 19.07.2009 21:52

Ответ: Скрипт списка игроков онлайн
 
нагуглил, что 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 04.08.2009 09:32

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

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


Текущее время: 12:17. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Перевод: zCarot