UWAGA
W związku z upgrade'em Forum Wiaderko do vB 4.x ewentualne błędy i nieprawidłowości proszę zgłaszać w tym temacie

Wątek: Status serwera CS na stronie WWW

Pokaż wyniki od 1 do 2 z 2
  1. #1 Status serwera CS na stronie WWW 
    Lamka
    Dołączył
    Jul 2008
    Posty
    2
    Witam bardzo społeczność Wiaderko.com :)

    Zauważyłem u was na stronie pewną fajną rzecz którą juz od dawnych czasów próbuję sam zorbić. mianowicie jest to Server Status po prawej stronie na głównej stronie servisu. I z tym wiąże się moja prośba, czy moglibyści mi udostępnić ten kod? jeśli nie to chociaż wskazówki jak to wszycho zorbione jest, jakies nowe zmienne czy cuś? JA juz wymiękam...

    Z góry dziękuję

    loxian aka tRibA][_,
    Odpowiedz z cytatem  
     

  2. #2 Odp: Status serwera CS na stronie WWW 
    Adminus pospolitus Awatar mosh
    Dołączył
    Jan 2007
    Wiek
    29
    Posty
    1,322
    Status serwera CS 1.6 tylko i wyłącznie... z tego co pamiętam to przerobiłem to z jakiegoś kombajnu do statusów kilkudziesięciu różnych serwerów gier.

    w każdym razie, taki pliczek sobie inkludujesz czy jak CI tam wygodniej

    Kod:
    <?php
    function lgsl_query($ip, $port, $game, $request)
    {
    
      $lgsl_feed_url = "";
      $lgsl_feed_method = 0;
      $lgsl_protocol[$game] = '01'; // 01 - cs1.6     // 05 - css
      $qport = $port; // DEFAULT THE QUERY PORT TO THE CONNECTION PORT
    
      switch ($lgsl_protocol[$game])
      {
        case "01":
          $sts_data = lgsl_query_01($ip, $qport, $game, $request);
        break;
        case "05":
          $sts_data = lgsl_query_05($ip, $qport, $game, $request);
        break;
      }
    
    //---------------------------------------------------------+ INFO o serweie
      if ($request == "info") {
        if (!is_array($sts_data) || !trim($sts_data['hostname'])) {
          unset($sts_data);
          $sts_data['status']     = 0;
          $sts_data['players']    = 0;
          $sts_data['maxplayers'] = 0;
        }
        else {
          $sts_data['status']     = 1;
          $sts_data['gamemod']    = str_replace(" ", "", $sts_data['gamemod']); // REMOVE EXTRA SPACING FOR THE GAMEMOD
          $sts_data['gamemod']    = trim(strtolower($sts_data['gamemod']));     // LOWERCASE AND TRIM
          $sts_data['mapname']    = trim(strtolower($sts_data['mapname']));     // LOWERCASE AND TRIM
          $sts_data['players']    = intval($sts_data['players']);               // MAKE SURE PLAYER NUMBER IS NUMERIC
          $sts_data['maxplayers'] = intval($sts_data['maxplayers']);            // MAKE SURE PLAYER NUMBER IS NUMERIC
          if (!trim($sts_data['gamemod']))                  { $sts_data['gamemod']  = $game;    } // GAME IS THE MOD IF NOT SET
          if (!$sts_data['mapname'])                        { $sts_data['mapname']  = "no map"; } // SOMETIMES THE MAP IS NOT SET
          if (!trim($sts_data['password']))                 { $sts_data['password'] = 0;        } // CONVERT EMPTY PASSWORDS
          if (strtolower($sts_data['password']) == "false") { $sts_data['password'] = 0;        } // CONVERT TEXT FALSE
          if (strtolower($sts_data['password']) == "true")  { $sts_data['password'] = 1;        } // CONVERT TEXT TRUE
        }
    
        $sts_data['ip']       = $ip;
        $sts_data['port']     = $port;
        $sts_data['qport']    = $qport;
        $sts_data['cport']    = $port;
        $sts_data['gametype'] = $game;
      }
    return $sts_data; 
    }
    
    
    //------------------------------------------------------------------------------------------------------------+
    
    
    
    function lgsl_query_01($ip, $port, $game, $request)
    {
      $fp = @fsockopen("udp://$ip", $port, $errno, $errstr, 1);
    
      if (!$fp) { return FALSE; } // CONNECTION WAS REFUSED
        
      stream_set_timeout($fp, 1, 0); stream_set_blocking($fp, true);  // SET TIMEOUT FOR OFFLINE SERVERS
    
    
      if (($request == "settings" || $request == "players") && $game != "halflifeold") {
        $challenge_code = "\xFF\xFF\xFF\xFF\x57"; // CODE NEEDED FOR PLAYERS AND SETTINGS
        fwrite($fp, $challenge_code);
        $buffer = fread($fp, 4096);
        if (!trim($buffer)) { fclose($fp); return FALSE; }
        $challenge_code = substr($buffer, 5, 4);
      }
        
    
    
      if ($game == "halflifeold") {
        if ($request == "info")     { $challenge = "\xFF\xFF\xFF\xFFdetails\x00"; }
        if ($request == "players")  { $challenge = "\xFF\xFF\xFF\xFFplayers\x00"; }
        if ($request == "settings") { $challenge = "\xFF\xFF\xFF\xFFrules\x00";   }
      }
      else {
        if ($request == "info")     { $challenge = "\xFF\xFF\xFF\xFFTSource Engine Query\x00"; }
        if ($request == "players")  { $challenge = "\xFF\xFF\xFF\xFFU".$challenge_code;        }
        if ($request == "settings") { $challenge = "\xFF\xFF\xFF\xFFV".$challenge_code;        }
      }
    
      fwrite($fp, $challenge);
    
      $buffer = fread($fp, 4096);
        
      if (!$buffer) { fclose($fp); return FALSE; } // IF BUFFER EMPTY RETURN
        
      if ($request == "settings") {
        $second_packet = fread($fp, 4096);
        if (strlen($second_packet) > 0) {
          $reverse_check = dechex(ord($buffer[8]));      // WORKS BUT MUST BE A CLEANER METHOD
            
          if ($reverse_check[0] == "1") {
            $tmp           = $buffer;                    // SWAP THE PACKETS AROUND 
            $buffer        = $second_packet;
            $second_packet = $tmp;
          }                 
    
          $buffer        = substr($buffer, 13);          // REMOVE LONG PACKET HEADER
          $second_packet = substr($second_packet, 9);    // REMOVE SECOND PACKET HEADER
          $buffer        = trim($buffer.$second_packet); // JOIN PACKETS AND TRIM
        }
        else {
          $buffer = trim(substr($buffer, 4)); // REMOVE SINGLE PACKET HEADER AND TRIM
        }
      }
      else {
        $buffer = trim(substr($buffer, 4)); // REMOVE SINGLE PACKET HEADER AND TRIM
      }
      fclose($fp); // CLOSE CONNECTION;
    
      if (!trim($buffer)) { return FALSE; } // IF BUFFER EMPTY RETURN
    
      if ($request == "info") {
        $tmp = explode("\x00", $buffer);
        $place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
        $sts_data['gamemod']        = $tmp[3];
        $sts_data['hostname']       = $tmp[1];
        $sts_data['mapname']        = $tmp[2];
        $sts_data['players']        = ord($buffer[$place]);
        $sts_data['maxplayers']     = ord($buffer[$place + 1]);
        $sts_data['password']       = ord($buffer[$place + 5]);
        $sts_data['datatype']       = $buffer[0];               // m for steam info
        $sts_data['version']        = ord($buffer[$place + 2]); // Network Version
        $sts_data['description']    = $tmp[4];
        $sts_data['server_type']    = $buffer[$place + 3];      // D edicated or L isten
        $sts_data['server_os']      = $buffer[$place + 4];      // W indows or L inux
        $sts_data['server_secure']  = ord($tmp[14]);            // VAC
        $sts_data['server_bots']    = ord($tmp[15]);            // Number of Bots
    
        if ($sts_data['datatype'] != "m" && $game != "halflifeold") {
          return FALSE; // PREVENT USING HALFLIFE FOR HALFLIFE2 SERVERS
        }
        return $sts_data; 
      }
    
      if ($request == "players") {
        $player_number = 0;
        $position = 2;                                              // START POINT
        
        do { 
          $player_number++;                                         // INCREMENT PLAYER NUMBER
          $player[$player_number]['id'] = ord($buffer[$position]);
          $position ++;                                             // GET PLAYER GAME ID
          
          while($buffer[$position] != "\x00" && $position < 4000) {
            $plejer = htmlspecialchars($buffer[$position], ENT_QUOTES);
            $plejer = @mb_convert_encoding($plejer,"HTML-ENTITIES","auto");
            $player[$player_number]['name'] .= $plejer;  // COLLECT PLAYER NAME
            $position ++;
          }
    
          $player[$player_number]['score'] = (ord($buffer[$position + 1]))
            + (ord($buffer[$position + 2]) * 256)
            + (ord($buffer[$position + 3]) * 65536)
            + (ord($buffer[$position + 4]) * 16777216);
    
          if ($player[$player_number]['score'] > 2147483648) { $player[$player_number]['score'] -= 4294967296; }
    
          $time = substr($buffer, $position + 5, 4);                // PLAYER TIME IN BYTES
          if (strlen($time) < 4) { return FALSE; }                  // CHECK FOR MISSING BYTES
          list(,$time) = unpack("f", $time);                        // CONVERT BYTES TO DECIMAL
          $time = mktime(0, 0, $time);                              // CONVERT DECIMAL TO UNIX TIMESTAMP
          $player[$player_number]['time'] = date("H:i:s", $time);   // CONVERT TIMESTAMP TO HUMAN READABLE TIME
    
          $position += 9;
        }
        while ($position < strlen($buffer));                        // REPEAT UNTIL THE END OF THE BUFFER
        
        $k=1;
        $tab = $player;
        while ($player[$k]) {
          $player2[$k] = array ('score' => $tab[$k]['score'], 'name' => $tab[$k]['name']);
          $k++;
        }
        @array_multisort ($player2, SORT_DESC);
        unset($player);
        return $player2; 
      }
    }
    
    ?>
    Serwer odpytujesz w taki sposób
    Kod:
    $server['nazwa] = lgsl_query($ip, $port, $typ, "info");
    $server['nazwa]['gamemod'] = preg_replace("/[^A-Za-z0-9 \_\-]/", "_", strtolower($sts_data[$k]['gamemod']));  // AND FOLDER USAGE
    $server['nazwa]['mapname'] = preg_replace("/[^A-Za-z0-9 \_\-]/", "_", strtolower($sts_data[$k]['mapname']));
    $server['nazwa]['player_list'] = lgsl_query($ip, $port, $typ, "players");
    w ten sposób do tablicy $server['nazwa] zostają wrzucone infomracje o serwerze,
    opcjonalnie ostatnia linia dodaje do tablicy $server['nazwa]['player_list'] listę graczy z fragami uporządkowaną malejąco wg fragów
    jako $typ dajesz 'halflife' a jak nie działa to 'halflifeold' (ma to chyba jakiś związek z rodzajem serwera...)

    i to wszystko
    powered by Yerba Mate
    Odpowiedz z cytatem  
     

Podobne wątki

  1. Status Serwera Na WWW + Wszystkie dane + 47/48
    By peku33 in forum Poradniki do HLDS
    Odpowiedzi: 26
    Ostatni post / autor: 15-03-2012, 22:35
  2. Status serwera
    By kirek1979 in forum OffTopic - Counter Strike
    Odpowiedzi: 0
    Ostatni post / autor: 16-08-2010, 19:45
  3. Status Serwera CS
    By antek76 in forum OffTopic - Counter Strike
    Odpowiedzi: 3
    Ostatni post / autor: 13-04-2010, 16:37
  4. Obrazek na tytulowej stronie serwera
    By grzesiek_868 in forum Problemy i konfiguracja AMXX
    Odpowiedzi: 4
    Ostatni post / autor: 20-03-2010, 23:23
  5. Status serwera graficzny.
    By SSB in forum Tworzenie - projektowanie stron www
    Odpowiedzi: 0
    Ostatni post / autor: 04-02-2010, 21:45
  6. Status serwera na www - mapa
    By Olobmx in forum Konfiguracja serwera HLDS Counter Strike 1.6
    Odpowiedzi: 2
    Ostatni post / autor: 23-10-2009, 21:23
  7. [BANNER] Status serwera dla wiaderko.com
    By bakul. <3 in forum Prośby o wykonanie grafiki
    Odpowiedzi: 3
    Ostatni post / autor: 04-08-2009, 11:56
  8. Status serwera
    By Shadow in forum Tworzenie - projektowanie stron www
    Odpowiedzi: 0
    Ostatni post / autor: 14-04-2009, 17:19
  9. Status serwera
    By krzysiek92 in forum Konfiguracja serwera HLDS Counter Strike 1.6
    Odpowiedzi: 4
    Ostatni post / autor: 03-10-2008, 07:37
  10. Jaba TV - HLTV serwera na stronie
    By AbbiD in forum Amx Mod X
    Odpowiedzi: 1
    Ostatni post / autor: 18-07-2008, 04:36

Odwiedzający znaleźli tę stronę szukając:

status serwera cs

jak dodac serwer cs na strone

status serwera cs php

dóży baner serwera cs

cs na stronie

statystyki serwera csbanery na status serwera cscs statusjak dac serwer cs na strone internetowastatusy serwerów cs serwery counter strike na stroniejak dodac serwery do cs na stronewłasne statystyki serwera cscounter strike na stroniestatus serwerow cs na stroniestatus serwerow cs 1.6mapy serwera na stronie głownejgame status serwera csjak dodać na stronę serwer csserwer status cscs serwer statusserwer cs na stronie wwwstatus serwera phpco to jest baner serwera csstatus - cs
Uprawnienia umieszczania postów
  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •