PTS Online

valsha

Выдающийся
Участник
Сообщения
221
Розыгрыши
0
Репутация
31
Реакции
88
Баллы
1 320
Хроники
  1. Chaotic Throne: High Five
Исходники
Отсутствуют
Сборка
AdvExt
Возможно кто то в курсе, и увидит есть ли ошибка в отправке и чтении пакета для проверки онлайна на PTS

PHP:
<?php
    // Open socket.
    $socket = fsockopen("127.0.0.1", 7777) or die('Sock ERROR');
    // Pack bytes XX XX - lenght, XX XX XX XX - Opcode (-3).
    $package = pack("vCi",6,0,-3);
    // Write to socket.
    fwrite($socket,$package);
    // Read answer.
    $read = fread($socket,73);
    // Closing socket.
    fclose($socket);
    // Unpack recieved data by template.
    $array = unpack("vsize/Cid/iworld/imax/icurrent/iplaying/istore", $read);    
    // Show result.
echo "Information -> Total: (".$array['current']."), Online: ({$array['playing']}), WTS/WTB/Craft: ({$array['store']}), Maximal: ({$array['max']})\n";
    ?>

Ответ вот такой:

Information -> Total: (), Online: (), WTS/WTB/Craft: (), Maximal: ()

Само собой в PTS разрешено принимать Who пакет уделенно.
 
Возможно кто то в курсе, и увидит есть ли ошибка в отправке и чтении пакета для проверки онлайна на PTS

PHP:
<?php
    // Open socket.
    $socket = fsockopen("127.0.0.1", 7777) or die('Sock ERROR');
    // Pack bytes XX XX - lenght, XX XX XX XX - Opcode (-3).
    $package = pack("vCi",6,0,-3);
    // Write to socket.
    fwrite($socket,$package);
    // Read answer.
    $read = fread($socket,73);
    // Closing socket.
    fclose($socket);
    // Unpack recieved data by template.
    $array = unpack("vsize/Cid/iworld/imax/icurrent/iplaying/istore", $read);  
    // Show result.
echo "Information -> Total: (".$array['current']."), Online: ({$array['playing']}), WTS/WTB/Craft: ({$array['store']}), Maximal: ({$array['max']})\n";
    ?>

Ответ вот такой:



Само собой в PTS разрешено принимать Who пакет уделенно.
Попробуйте так, пишу с смарта.
Код взят с архива из облака.

Код:
function check_online()
{
    $fs=@fsockopen('127.0.0.1','7777',$ERROR_NO,$ERROR_STR,3);
    $pck=pack("vCi",6,0x0E,-3);
    fwrite($fs,$pck);
    $r=fread($fs,73);
    fclose($fs);
    $a=unpack("vsize/Cid/iworld/imax/icurrent/iplaying/istore",$r);

printf("ServerName: %s - Current: %d - Store: %d - Max %d\n", $name, $a['playing'], $a['store'], $a['max']);
}

Лучшим вариантом будет сделать процедуру в базе где записывать текущее кол-во игроков в отдельную ячейку.
 
Лучшим вариантом будет сделать процедуру в базе
Совершенно не лучшим. Если использовать статус где то на лендинге и не позволять всяким лендингам/воронкам и т.п лезть в ващу базу.

Нет, не работает скрипт, уже добавил все возможные варианты вывода ошибок и т.п
Макмимум что добился, это то что сервер ничего не возвращает


PHP:
<?php
    @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );   

    function server_online()
    {
        $fs = @fsockopen('127.0.0.1', '7777', $ERROR_NO, $ERROR_STR, 3);
        if (!$fs) {
            die("Socket error: $ERROR_STR ($ERROR_NO)");
        }

        $pck = pack("vCi", 6, 0x0E, -3);
        fwrite($fs, $pck);

        $r = fread($fs, 73);
        if ($r === false) {
            die("Error reading data from socket");
        }       

        echo "Server response: $r\n";       
        error_log("Server response: $r", 3, "response.log");
        fclose($fs);
        $a = unpack("vsize/Cid/iworld/imax/icurrent/iplaying/istore", $r);
        if (!$a) {
            return 'Invalid response from server';
        }

        echo "Current players online: {$a['current']}";
    }

    server_online();
?>
 
Назад
Сверху Снизу