Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Прогресс-бар

Статус пользователя panicaskill
сообщение 19.2.2015, 12:36
Сообщение #1
Стаж: 12 лет
Город: Каменск-Уральский


Сообщений: 270
Благодарностей: 256
Полезность: 976

Меценат Меценат

Всем привет. Имеется простой код php-мониторинга для вывода информации о сервере на сайт (Название, адрес, карта, игроков).
Подскажите пожалуйста, как сделать так, чтобы кол-во игроков показывало не в цифровом значении, а в прогресс-баре.
Сам код прогресс-бара имеется. А как сделать так, чтобы он считывал кол-во игроков на сервере, не знаю. Иными словами: как заставить его двигаться, опираясь на кол-во игроков на сервере.

Код мониторинга
<?php

$servers = array(
array(
'ip' => '127.0.0.1',
'port' => '27015'
),
);

function GetServerInfo($server,$port) {
$fp = @fsockopen("udp://".$server, $port);
if (!$fp) return false;

@fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
$start=time();
socket_set_timeout($fp,1);
$st=fread($fp,1);
$r=socket_get_status($fp);
$result['status'] = $r["timed_out"];
$r=$r["unread_bytes"];
if ($r == 0) { @fclose($fp); return false;}
$st.=fread($fp,$r);
@fclose($fp);

$st=substr($st,5);
$address=SubStr($st,0,StrPos($st,chr(0)));
$address=str_replace(chr(0),"|",$address);
$st=SubStr($st,StrPos($st,chr(0))+1);
$name=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$map=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$current=ord(SubStr($st,0,1));
$max=ord(SubStr($st,1,1));

if ($map == "") return false;
$result['map'] = $map;
$result['name']= $name;
$result['current'] = $current;
$result['max'] = $max;

return $result;
}
?>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td style="font-weight: bold; padding: 7px">Название</td>
<td style="font-weight: bold; padding: 7px">Адрес</td>
<td style="font-weight: bold; padding: 7px">Карта</td>
<td style="font-weight: bold; padding: 7px">Игроков</td>
</tr>
<?php
foreach($servers as $server):

$info = GetServerInfo($server['ip'], $server['port']);

if(!$info):?>
<tr>
<td colspan="4"><h1>Сервер недоступен</h1></td>
</tr>
<?php else:?>
<tr>
<td style="padding: 7px"><?php echo $info['name']?></td>
<td style="padding: 7px"><?php echo $server['ip'] . ':' . $server['port']?></td>
<td style="padding: 7px"><?php echo $info['map']?></td>
<td style="padding: 7px"><?php echo $info['current'] . '/' . $info['max']?></td>
</tr>
<?php endif;
endforeach;?>
</table>


Код прогресс-бара
<td class="stplrs" width="100px">
<div class="progress sm">
<div class="progress-bar progress-bar-yellow" style="width: 100%;-webkit-animation-duration: 0.1s;animation-duration: 0.1s;"></div>
</div>
</td>
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 19.2.2015, 12:42
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Если разбираешься в php, то как вариант я могу предложить залезть в lgsl и посмотреть там :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя panicaskill
сообщение 19.2.2015, 12:44
Сообщение #3
Стаж: 12 лет
Город: Каменск-Уральский


Сообщений: 270
Благодарностей: 256
Полезность: 976

Меценат Меценат

GOOD FELLOW, Сомневаюсь, что из этого выйдет что-то адекватное. В этом деле я не пришей к пи**е рукав pardon.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TheNega
сообщение 19.2.2015, 12:59
Сообщение #4


Стаж: 13 лет

Сообщений: 724
Благодарностей: 1396
Полезность: 1101

panicaskill, все просто , берем текущее кол-во игроков , делим на макс.кол-во слотов и умножаем на 100 , и получаем % заполнености.

К примеру так:
Код
<?php
$percent = $info['current'] / $info['max'] * 100;
?>
<td class="stplrs" width="100px">
<div class="progress sm">
<div class="progress-bar progress-bar-yellow" style="width: <?php echo $percent;?>%;-webkit-animation-duration: 0.1s;animation-duration: 0.1s;"></div>
</div>
</td>


Отредактировал: TheNega, - 19.2.2015, 13:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Vitalijkee
сообщение 19.2.2015, 13:11
Сообщение #5


Стаж: 11 лет

Сообщений: 92
Благодарностей: 17
Полезность: 143

стукани по контактам есть у меня простой мониторинг!
дизайн можно любой натянуть какой захочешь!серверов также неограниченое количество !
выглядит так:




Отредактировал: Vitalijkee, - 19.2.2015, 13:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 19.2.2015, 18:18
Сообщение #6
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

panicaskill,
С математикой туго?


Код
round((($info['current']*100)/$info['max']), 0);


где 0 - количество знаков, после запятой (в случае, дробного результата);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 19.2.2015, 18:59
Сообщение #7


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Цитата(Orty_Hart @ 19.2.2015, 19:18) *
panicaskill,
С математикой туго?


Код
round((($info['current']*100)/$info['max']), 0);


где 0 - количество знаков, после запятой (в случае, дробного результата);

А чем
$info['current']*100)/$info['max']
отличается от
$info['current'] / $info['max'] * 100
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 20.2.2015, 18:05
Сообщение #8
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

onotole,
Ничем, если вы учили математику в школе.
Я только добавил round(), т.к. в HTML нельзя использовать к примеру

Цитата
wight: 33.3333333333333333333333333333333(3)px;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя miRror
сообщение 20.2.2015, 18:59
Сообщение #9


Стаж: 15 лет

Сообщений: 1151
Благодарностей: 1002
Полезность: 967

Меценат Меценат

Мои фишки крадете и не краснеете)

Если поможет, вон она искомая JS функция:

Код
function servers()
{
    $.ajax({  
        type: "POST",  
        url: "?module=mainpage&method=aj_loadservers",
        data: ({csrf_token: $("meta[name='csrf_token']").attr("content")}),
        dataType: "json",
        success: function(data){
            if(data.status == 'success')
            {
                for( x in data.servers )
                {
                    $("#server" + data.servers[x].id + " .stsrv").html('<i class="fa fa-circle ' + (data.servers[x].status ? 'text-green' : 'text-red') + '"></i>')
                    $("#server" + data.servers[x].id + " .stplrs .progress-bar").css('width', data.servers[x].per + '%')

                    curost = $("#server" + data.servers[x].id + " .timeleft").text()
                    
                    if(data.servers[x].map != $("#server" + data.servers[x].id + " .srvmap").html() && curost == '00:00')    
                    {
                        $("#server" + data.servers[x].id + " .srvmap").html(data.servers[x].map).hide().fadeIn(800)
                    }
                    
                    if(data.servers[x].status == 1)
                    {
                        curtleft = curost
                        curtleft = curtleft.split(":")
                        curtleft = curtleft[0] * 60 + parseInt(curtleft[1])
                        
                        newtleft = data.servers[x].timeleft
                        newtleft = newtleft.split(":")
                        newtleft = newtleft[0] * 60 + parseInt(newtleft[1])
                        
                        if(Math.abs(curtleft-newtleft) > 130 && curost == '00:00')
                            $("#server" + data.servers[x].id + " .timeleft").text(data.servers[x].timeleft).hide().fadeIn(800)    
                    } else
                        $("#server" + data.servers[x].id + " .timeleft").text('00:00')
                }                        
            }
        }
    });  
    return false;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: