Stránka 1 z 1

PHP-Fussion Minecraft status

Napsal: 07 zář 2017, 17:17
od TheLaoming
Zdravím, mám problém s minecraft statusem na webu. Jako jediný typ hry mi instantě vypadává je-li na serveru více jak 18 lidí. Prostě 2 minuty běží v pohodě a pak najednou na 5 minut 0/0 výpadek. Dělá to pouze při 18+ hráčích, při menším počtu to jede v pohodě.

Ta chyba vypadá nějak takto:
Spoiler: zobrazit
bug.png
bug.png (56.91 KiB) Zobrazeno 1436 x

bug2.png
bug2.png (7.92 KiB) Zobrazeno 1436 x


Navíc když otevřu detail serveru a zrovna to nevypadává, ukazuje to taky špatný počet hráčů (místo 30 například 18) a pokud tam je menší počet hráčů, ukazuje to vždy o 1 méně v detailu.

A vypadat to má takto:
ok.png
ok.png (9.44 KiB) Zobrazeno 1436 x


Tohle je tuším aktuální kod statusu:
Spoiler: zobrazit

Kód: Vybrat vše

function lgsl_query_MC(&$server, &$lgsl_need, &$lgsl_fp) {

    $Data = WriteData($lgsl_fp, "\x09" );

    if (!$Data) { return FALSE; }

    $Challenge = Pack( 'N', $Data );

    $status     = WriteData($lgsl_fp, "\x00", $Challenge . "\x01\x02\x03\x04" );

    $status        = SubStr( $status, 11 );

    $status        = Explode( "\x00\x00\x01player_\x00\x00", $status );

    $players     = SubStr( $status[ 1 ], 0, -2 );

    $players     = Explode( "\x00", $players );

    $status        = Explode( "\x00", $status[ 0 ] );

    $data         = array ("general" => $status, "plugins" => explode(",",$status[9]), "players" => $players);

    $server['b']['status']         = 1;

    $server['s']['map']         = $data['general'][11];   

    $server['s']['game']           = $data['general'][3];

    $server['s']['name']           = $data['general'][1];

    $server['s']['map']            = $data['general'][11];

    $server['s']['players']        = $data['general'][13];

    $server['s']['playersmax']     = $data['general'][15];

    $server['e']['version']     = $data['general'][7];

    $server['e']     = $data['plugins'];

    $players = array();

    for($i=1;$i<sizeof($data['players']);$i++) {

        $add = array("pid" => $i , "name" => $data['players'][$i]);

        array_push($players,$add);

    }

    $server['p']        = $players;

    return TRUE;

}


Pokud víte kde mám chybu, byl bych rád za radu. Nebo pokud víte někdo o nějakém kodu, který by fungoval lépe na PHP-Fussion ?